Skip to content
Snippets Groups Projects
Commit d174178c authored by ribeaudc's avatar ribeaudc
Browse files

change: - Move 'createStore' method to 'FileStoreFactory'.

minor: - TODOs added (to 'IFileStore' and 'FileStoreFactory').
- final keyword added when possible.

SVN: 6019
parent c16ff286
No related branches found
No related tags found
No related merge requests found
......@@ -29,7 +29,7 @@ import ch.systemsx.cisd.common.utilities.BuildAndEnvironmentInfo;
import ch.systemsx.cisd.common.utilities.ITerminable;
import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory;
import ch.systemsx.cisd.datamover.filesystem.FileSysOperationsFactory;
import ch.systemsx.cisd.datamover.filesystem.intf.FileStore;
import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore;
import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
import ch.systemsx.cisd.datamover.filesystem.intf.IPathCopier;
import ch.systemsx.cisd.datamover.utils.LocalBufferDirs;
......@@ -81,7 +81,7 @@ public class Main
{
operationLog.info("Datamover is starting up.");
}
for (String line : BuildAndEnvironmentInfo.INSTANCE.getEnvironmentInfo())
for (final String line : BuildAndEnvironmentInfo.INSTANCE.getEnvironmentInfo())
{
operationLog.info(line);
}
......@@ -97,36 +97,36 @@ public class Main
final String msgStart = "Datamover self test failed:";
try
{
ArrayList<FileStore> stores = new ArrayList<FileStore>();
FileSysOperationsFactory factory = new FileSysOperationsFactory(parameters);
final ArrayList<IFileStore> stores = new ArrayList<IFileStore>();
final FileSysOperationsFactory factory = new FileSysOperationsFactory(parameters);
stores.add(parameters.getIncomingStore(factory));
FileStore buferStore =
final IFileStore bufferStore =
FileStoreFactory.createLocal(parameters.getBufferDirectoryPath(),
Parameters.BUFFER_KIND_DESC, factory);
stores.add(buferStore);
stores.add(bufferStore);
stores.add(parameters.getOutgoingStore(factory));
if (parameters.tryGetManualInterventionDir() != null)
{
FileStore dummyStore =
final IFileStore dummyStore =
FileStoreFactory.createLocal(parameters.tryGetManualInterventionDir(),
"manual intervention", factory);
stores.add(dummyStore);
}
if (parameters.tryGetExtraCopyDir() != null)
{
FileStore dummyStore =
final IFileStore dummyStore =
FileStoreFactory.createLocal(parameters.tryGetExtraCopyDir(), "extra-copy",
factory);
stores.add(dummyStore);
}
IPathCopier copyProcess = factory.getCopier(false);
SelfTest.check(copyProcess, stores.toArray(new FileStore[] {}));
} catch (HighLevelException e)
final IPathCopier copyProcess = factory.getCopier(false);
SelfTest.check(copyProcess, stores.toArray(new IFileStore[] {}));
} catch (final HighLevelException e)
{
System.err.printf(msgStart + " [%s: %s]\n", e.getClass().getSimpleName(), e
.getMessage());
System.exit(1);
} catch (RuntimeException e)
} catch (final RuntimeException e)
{
System.err.println(msgStart);
e.printStackTrace();
......@@ -135,19 +135,19 @@ public class Main
}
/** exposed for testing purposes */
static ITerminable startupServer(Parameters parameters, LocalBufferDirs bufferDirs)
static ITerminable startupServer(final Parameters parameters, final LocalBufferDirs bufferDirs)
{
final IFileSysOperationsFactory factory = new FileSysOperationsFactory(parameters);
return DataMover.start(parameters, factory, bufferDirs);
}
private static void startupServer(Parameters parameters)
private static void startupServer(final Parameters parameters)
{
final IFileSysOperationsFactory factory = new FileSysOperationsFactory(parameters);
DataMover.start(parameters, factory);
}
public static void main(String[] args)
public static void main(final String[] args)
{
initLog();
final Parameters parameters = new Parameters(args);
......
......@@ -359,25 +359,6 @@ public class Parameters implements ITimingParameters, IFileSysParameters
}
}
private static FileStore createStore(File directory, String kind, String hostOrNull,
boolean isRemote, IFileSysOperationsFactory factory)
{
if (hostOrNull != null)
{
assert isRemote == true;
return FileStoreFactory.createRemoteHost(directory, hostOrNull, kind, factory);
} else
{
if (isRemote)
{
return FileStoreFactory.createRemoteShare(directory, kind, factory);
} else
{
return FileStoreFactory.createLocal(directory, kind, factory);
}
}
}
private void outputException(Exception ex)
{
if (ex instanceof HighLevelException || ex instanceof CmdLineException)
......@@ -595,7 +576,7 @@ public class Parameters implements ITimingParameters, IFileSysParameters
*/
public FileStore getIncomingStore(IFileSysOperationsFactory factory)
{
return createStore(incomingDirectory, INCOMING_KIND_DESC, incomingHost,
return FileStoreFactory.createStore(incomingDirectory, INCOMING_KIND_DESC, incomingHost,
treatIncomingAsRemote, factory);
}
......@@ -612,7 +593,7 @@ public class Parameters implements ITimingParameters, IFileSysParameters
*/
public FileStore getOutgoingStore(IFileSysOperationsFactory factory)
{
return createStore(outgoingDirectory, OUTGOING_KIND_DESC, outgoingHost, true, factory);
return FileStoreFactory.createStore(outgoingDirectory, OUTGOING_KIND_DESC, outgoingHost, true, factory);
}
/**
......
......@@ -44,14 +44,14 @@ public class SelfTest
LogInitializer.init();
}
private static void checkPathRecords(IFileStore[] pathRecords)
private static void checkPathRecords(final IFileStore[] pathRecords)
{
assert pathRecords != null;
checkPathRecordsContainEachOther(pathRecords);
for (IFileStore pathRecord : pathRecords)
for (final IFileStore pathRecord : pathRecords)
{
String errorMessage = pathRecord.tryCheckDirectoryFullyAccessible(TIMEOUT_MILLIS);
final String errorMessage = pathRecord.tryCheckDirectoryFullyAccessible(TIMEOUT_MILLIS);
if (errorMessage != null)
{
throw new ConfigurationFailureException(errorMessage);
......@@ -59,7 +59,7 @@ public class SelfTest
}
}
private static void checkPathRecordsContainEachOther(IFileStore[] store)
private static void checkPathRecordsContainEachOther(final IFileStore[] store)
throws ConfigurationFailureException
{
for (int i = 1; i < store.length; ++i)
......@@ -81,7 +81,7 @@ public class SelfTest
* what went wrong. This method performs failure logging of
* {@link ConfigurationFailureException}s and {@link EnvironmentFailureException}s.
*/
public static void check(IPathCopier copier, IFileStore... stores)
public static void check(final IPathCopier copier, final IFileStore... stores)
{
try
{
......@@ -92,12 +92,12 @@ public class SelfTest
{
operationLog.info("Self test successfully completed.");
}
} catch (HighLevelException e)
} catch (final HighLevelException e)
{
operationLog.error(String.format("Self test failed: [%s: %s]\n", e.getClass()
.getSimpleName(), e.getMessage()));
throw e;
} catch (RuntimeException e)
} catch (final RuntimeException e)
{
operationLog.error(String.format("Self test failed: [%s: %s]\n", e.getClass()
.getSimpleName(), e.getMessage()), e);
......
......@@ -25,20 +25,29 @@ import ch.systemsx.cisd.datamover.filesystem.store.FileStoreRemote;
import ch.systemsx.cisd.datamover.filesystem.store.FileStoreRemoteMounted;
/**
* A {@link FileStore} factory.
*
* @author Tomasz Pylak
*/
public class FileStoreFactory
// TODO 2008-05-13, Christian Ribeaud: this factory should return IFileStore and not the concrete
// class FileStore.
public final class FileStoreFactory
{
private FileStoreFactory()
{
// This class can not be instantiated.
}
/** use when file store is on a local host */
public static final FileStore createLocal(File path, String kind,
IFileSysOperationsFactory factory)
public static final FileStore createLocal(final File path, final String kind,
final IFileSysOperationsFactory factory)
{
return new FileStoreLocal(path, kind, factory);
}
/** use when file store is on a remote share mounted on local host */
public static final FileStore createRemoteShare(File path, String kind,
IFileSysOperationsFactory factory)
public static final FileStore createRemoteShare(final File path, final String kind,
final IFileSysOperationsFactory factory)
{
return new FileStoreRemoteMounted(path, kind, factory);
}
......@@ -48,9 +57,31 @@ public class FileStoreFactory
*
* @param factory
*/
public static final FileStore createRemoteHost(File path, String host, String kind,
IFileSysOperationsFactory factory)
public static final FileStore createRemoteHost(final File path, final String host,
final String kind, final IFileSysOperationsFactory factory)
{
return new FileStoreRemote(path, host, kind, factory);
}
/**
* Returns the most convenient <code>IFileStore</code> implementation with given <var>values</var>.
*/
public final static FileStore createStore(final File directory, final String kind,
final String hostOrNull, final boolean isRemote, final IFileSysOperationsFactory factory)
{
if (hostOrNull != null)
{
assert isRemote == true;
return createRemoteHost(directory, hostOrNull, kind, factory);
} else
{
if (isRemote)
{
return createRemoteShare(directory, kind, factory);
} else
{
return createLocal(directory, kind, factory);
}
}
}
}
......@@ -25,6 +25,8 @@ import ch.systemsx.cisd.common.utilities.StoreItem;
*
* @author Bernd Rinn
*/
// TODO 2008-05-13, Christian Ribeaud: concrete classes seem to be more widely used than this
// interface.
public interface IFileStore
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment