public class TransferListener extends AbstractRmiListener implements RmiErrorListener, Refreshing, RmiExiting, RmiStatusProviding, Preserving, Initializable
| Modifier and Type | Class and Description |
|---|---|
static class |
TransferListener.Average
Packs all extensions into a single file, operates with a file filter on
the current directory.
|
static class |
TransferListener.DirCheck
Checks all .fitz files in this directory and move them to another
location, if the are erronously put here.
|
static class |
TransferListener.Inspect
We inspect a saved transfer serial file and print out some info.
|
private static class |
TransferListener.Keyaction |
static class |
TransferListener.Light |
static class |
TransferListener.Science |
private class |
TransferListener.SecureUniqueAlarm |
private static class |
TransferListener.SqlPair |
static class |
TransferListener.Squeeze |
private class |
TransferListener.TransferThread
This is the main transfer thread.
|
static class |
TransferListener.UpdateLight
We update the light-loss fields on all files since 20140507B-0045.
|
PropertyResources.Load, PropertyResources.URLResource| Modifier and Type | Field and Description |
|---|---|
static String |
AVBACK
Header cards on averaging.
|
static String |
AVBACKREM
Header cards on averaging.
|
static String |
AVFRAMES
Header cards on averaging.
|
static String |
AVFRAMESREM
Header cards on averaging.
|
static String |
AVRMS
Header cards on averaging.
|
static String |
AVRMSREM
Header cards on averaging.
|
private List<File> |
dbenter
The list of files that have been correctly entered into the db.
|
private List<String> |
dbheads
For convenience, we store the db-relevant heads.
|
private static double |
DEFAVHISIG |
private static double |
DEFAVLOSIG |
private static int |
DEFAVREJ |
private static double |
DEFBACKHISIG |
private static double |
DEFBACKLOSIG |
private static int |
DEFBACKREJ |
private static double |
DEFBIASHISIG |
private static double |
DEFBIASLOSIG |
private static int |
DEFBIASREJ |
private static long |
DEFCOMPRESSTIMEOUT
Various timeouts in ms.
|
private static long |
DEFCOPYDELAY
Various timeouts in ms.
|
private static boolean |
DEFDEBUG
Default is debug mode.
|
static String |
DEFER
Files starting with this are preprocessed.
|
private static boolean |
DEFERASE
Default do not erase secure transfer list on restore.
|
private static String |
DEFIMCOPY
Default path to imcopy.
|
private static String |
DEFIMCOPYFLAG
Default extension for compress.
|
private static String |
DEFIMMEDIATE
List of immediately to move to transferred file parts.
|
private static String |
DEFLOCALTMP
Directory where the compressed files are stored for transfer.
|
private static long |
DEFMKDIRTIMEOUT
Various timeouts in ms.
|
private static long |
DEFPOLLTIME
Various timeouts in ms.
|
private static String |
DEFPRIVILEGE
Default copy program.
|
private static double |
DEFRISESETWILIGHT
The default opening/closing solar height.
|
private static String |
DEFRSYNC
Default copy program.
|
private static String |
DEFRSYNCARGS
Default copy program.
|
private static boolean |
DEFSCIFAST |
private static double |
DEFSCIGAIN |
private static double |
DEFSCIHISIG |
private static double |
DEFSCILOSIG |
private static double |
DEFSCIREADNOISE |
private static int |
DEFSCIREJ |
private static String |
DEFTRANSFERDIR
Default transferred (sub)dir.
|
private static long |
DEFTRANSFERTIMEOUT
Various timeouts in ms.
|
private static long |
DEFWAKEUP
Default wake-up intervall.
|
static DateFormat |
DIRFORMAT
How we format a directory on the remote machine.
|
private List<String> |
dirlist
The list of all remotely created directories.
|
private boolean |
doexit
Gets true on exit.
|
private boolean |
firstcrash
Gets true on if we cannot read the local file system.
|
private List<File> |
ignore
All the files that are in scanned dir, but should be ignored.
|
private List<String> |
immediate
For convenience, we store the parts immediately removed.
|
static String |
KEY_AVHISIG
For average pixel loop, sigma multiplier for high level .
|
static String |
KEY_AVLOSIG
For average pixel loop, sigma multiplier for low level .
|
static String |
KEY_AVREJ
For average pixel, number of rejection loops.
|
static String |
KEY_BACKHISIG
For background rejection loop, sigma multiplier for high level .
|
static String |
KEY_BACKLOSIG
For background rejection loop, sigma multiplier for low level .
|
static String |
KEY_BACKREJ
For background estimation, number of rejection loops.
|
static String |
KEY_BIASHISIG
For background rejection loop, sigma multiplier for high level .
|
static String |
KEY_BIASLOSIG
For background rejection loop, sigma multiplier for low level .
|
static String |
KEY_BIASREJ
For background estimation, number of rejection loops.
|
static String |
KEY_BIND
If true we are available in the registry.
|
static String |
KEY_CASTERS
The list of error caster that notify me.
|
static String |
KEY_COMPRESSTIMEOUT
Various timeouts in ms.
|
static String |
KEY_COPYDELAY
The pure copy files have a delay built in.
|
static String |
KEY_COPYFILES
Files that should be copied only, ;-list of header,extension.
|
static String |
KEY_DATADIRS
The list of directories I scan for ongoing traffic.
|
static String |
KEY_DATEKEYS
If we have this, we scan non-regular date keys for the date-obs.
|
static String |
KEY_DEBUG
If this is, as in the default, true, no transfer is actually done.
|
static String |
KEY_ERASE
If this is true, the secure-to-copy list is erased on restart.
|
static String |
KEY_FITSDB
The sub-list of above that also need a db-entry.
|
static String |
KEY_FITSHEADS
The list of file-name headers that are treated as fits.
|
static String |
KEY_FITSMETHOD
Fits files that need separate treatment, header to method.
|
static String |
KEY_IMCOPY
The path to the imcopy external program.
|
static String |
KEY_IMCOPYFLAG
The thing to append to the target fits for imcopy.
|
static String |
KEY_IMMEDIATE
Files that have one of these before a requested extension are del.
|
static String |
KEY_LISTENHOST
If we signal to a host that a file has been transferred.
|
static String |
KEY_LISTENPORT
If we signal to a host that a file has been transferred.
|
static String |
KEY_LOCALTMP
Directory where the compressed files are stored for transfer.
|
static String |
KEY_MKDIRTIMEOUT
Various timeouts in ms.
|
static String |
KEY_MODELDRIFT
Properties of the pinhole modelling.
|
static String |
KEY_OBSERVEDB
The obs database I update.
|
static String |
KEY_POLLTIME
Various timeouts in ms.
|
static String |
KEY_PRESERVEFILE
Path to the file where the state is preserved in case of exits.
|
static String |
KEY_PRIVILEGE
The fits files that are tranfered first.
|
static String |
KEY_RISETWILIGHT
The rise twilight.
|
static String |
KEY_RSYNC
The path to the scp external program.
|
static String |
KEY_RSYNCARGS
The command line arguments to the scp program.
|
static String |
KEY_SCIFAST
For background rejection loop, sigma multiplier for high level .
|
static String |
KEY_SCIGAIN
Gain average of quadrants in science images if not found in header.
|
static String |
KEY_SCIHEADERAV
All header values are averaged to these keys.
|
static String |
KEY_SCIHEADERMAX
All header values are minimized to these keys.
|
static String |
KEY_SCIHEADERMIN
All header values are minimized to these keys.
|
static String |
KEY_SCIHEADERSQRT
All header values are averaged divided sqr(n) to these keys.
|
static String |
KEY_SCIHEADERSUM
All header values are summed to these keys.
|
static String |
KEY_SCIHISIG
For background rejection loop, sigma multiplier for high level .
|
static String |
KEY_SCILOSIG
For background rejection loop, sigma multiplier for low level .
|
static String |
KEY_SCIREADNOISE
Read noise average of quadrants in science if not found in header.
|
static String |
KEY_SCIREJ
For background estimation, number of rejection loops.
|
static String |
KEY_TARGETDIR
The target host top-level directory.
|
static String |
KEY_TARGETHOST
The target host.
|
static String |
KEY_TELESCOPE
The telescope name we work on.
|
static String |
KEY_TRANSFERDIR
The sub-dir in data dir(s) where transfered files are moved to.
|
static String |
KEY_TRANSFERTIMEOUT
Various timeouts in ms.
|
static String |
KEY_WAKEUP
The wake-up intervall.
|
private Map<String,String> |
letter
The mapping of telescope name to letter.
|
static String |
MAXBACK
Header cards on averaging.
|
static String |
MAXBACKREM
Header cards on averaging.
|
private Map<String,Method> |
methods
Header keys to methods to call for pre-transfer of fits.
|
static String |
MINBACK
Header cards on averaging.
|
static String |
MINBACKREM
Header cards on averaging.
|
private NightRemain |
nightremain
The remaining length of the night in ms.
|
private ObserveSql |
observesql
The obs-db reference.
|
static String |
PIXREJ
Header cards on averaging.
|
static String |
PIXREJREM
Header cards on averaging.
|
static String |
SATURATED
Header cards on science averaging.
|
static String |
SATURATEDREM
Header cards on science averaging.
|
private Map<String,TimerTask> |
secalarms
A mapping uniques waiting to get secure to their active alarms.
|
private List<String> |
secunique
All secure uniques, i.e.
|
private List<File> |
secure
This is the list of files that can be transferred for sure.
|
private boolean |
signalexit
Gets true on exit request.
|
private long |
tenter
Enter time of last refresh call.
|
private long |
texit
Exit time stamp of last refresh call.
|
private static TransferListener.TransferThread |
transfer
The thread that does the actual remote copy.
|
KEY_ALIVE, KEY_EXPORTPORT, KEY_INIT, KEY_LISTENERNAME, KEY_RETRY, KEY_RETRYSLEEP, KEY_SHUTDOWNDELAYKEY_NOINITONCREATE, POSTFIX_ALPHABET, POSTFIX_BYTES, POSTFIX_DIR, POSTFIX_EXT, POSTFIX_FILE, POSTFIX_LIST, POSTFIX_MODTIME, POSTFIX_URLKEY_LISTSEPARATOR, KEY_MAPKEYVALUECHAR, KEY_MAPSEPARATORKEY_URLRESOURCES, KEY_URLUSECONFIG, KEY_URLUSECURRENT, KEY_URLUSEHOMECONFIG, KEY_CLASS| Constructor and Description |
|---|
TransferListener(Map<String,String> prop)
Creates a new transfer listener.
|
| Modifier and Type | Method and Description |
|---|---|
private void |
addSecureUnique(String unique)
This method should be called from synchronized on secunique blocks.
|
private List<File> |
averageWithoutBackground(String head,
String uniq,
List<File> guide)
This method takes a list of fits files where on each it estimates the
background via sigma-clipping and final mode estimation using a
histogram.
|
private List<File> |
averageWithoutBackgroundInMemory(String head,
String uniq,
List<File> guide)
This method takes a list of fits files where on each it estimates the
background via sigma-clipping and final mode estimation using a
histogram.
|
private boolean |
checkLayout(ReadFits layout,
ReadFits r) |
protected boolean |
deregisterAtCaster(RmiCaster rmi,
Class service)
Deregisters at caster.
|
private int |
execute(String exe,
long timeout)
Uses the given executable command line string and executes that with a
specified timeout.
|
void |
exit()
Exits the receiver torso.
|
private double[] |
getAduMode(MFits fdu,
int loop,
double losig,
double hisig) |
private static NumberFormat[] |
getHeaderDateParsers() |
private MHeader |
getPrimaryHeader(MHeader p0,
Collection<ReadFits> all) |
long |
getRefreshInterval()
This is our wakup interval.
|
static Map<String,String> |
getSesDefaults() |
void |
init()
Initializes the transfer listener and binds it to the registry.
|
private void |
initObsSql() |
boolean |
isFixedRate()
We want fixed delay, thus return false.
|
private static TransferListener.SqlPair |
lightLoss(AbstractPinholeModel cog,
String uniq,
File median) |
private TransferListener.SqlPair |
lightLoss(String uniq,
File median)
This method takes a median-averaged guider file and does light-loss
analysis on the pinhole using fixed pinhole diameter, but letting the
pinhole position vary.
|
private boolean |
lightLossSql(String uniq,
File median)
This method takes a median-averaged guider file and does light-loss
analysis on the pinhole using fixed pinhole diameter, but letting the
pinhole position vary.
|
private void |
loadObs(String unique,
List<File> fits)
From a list of fits file, bundle to a single unique, we update the obs
table to reflect the fits headers.
|
static void |
main(String[] arg)
We start the transfer listener with its properties on the command line.
|
private List<File> |
median(String head,
String uniq,
List<File> guide)
This method takes a list of fits files and calculates the median of it.
|
private boolean |
mkdir(String subdir,
double jd)
Creates a directory on the remote machine using ssh.
|
private int |
postObserve(String unique,
List<File> fits)
This method is the master method for pre-processing completed
unique-sorted fits files.
|
boolean |
preserve()
Preserves the current state of this transfer listener by writing all
information to the
KEY_PRESERVEFILE property. |
private boolean |
preTransfer(String unique,
File f)
This method is called before a fits file is put into the
ready-to-transfer queue.
|
void |
refresh()
On refresh, we scan all directories.
|
private boolean |
register(List<String> casters,
Class casterclass)
Registers at a caster list.
|
protected boolean |
registerAtCaster(RmiCaster rmi,
Class service)
Registers at the specified caster if the caster is one of the four
possible caster instances this class listens to.
|
private void |
relayFitsFile(File writtn)
We receive a message that a fits file has been completely writtn.
|
boolean |
restore()
Restores the last state of this transfer listener by reading all
information from the
KEY_PRESERVEFILE property. |
void |
rmiErrorOccured(ErrorEvent ee)
We pass the error received to our listeners.
|
Object |
rmiProvideStatus()
We return a long string with a multi-line status message.
|
private void |
scanAll()
On timed wakeups, we scan all our directories and see if new files have
arrived.
|
private boolean |
scanDir(File dir,
List<String> heads,
String ext,
SortedMap<String,List<File>> treat)
We scan a local directory for all transfer-relevant files.
|
private static String |
scanKeys(MHeader header,
List<String> possible) |
private boolean |
signal(String filename)
Signals an external server that a file has been transferred.
|
long |
signalForExit()
Retunrs our shecduled time as the exit time.
|
(package private) List<File> |
spillover(String head,
String uniq,
List<File> guide)
This method takes a list of spilled-over guiding frames, calculates the
average and uses this fits to model the light losses.
|
(package private) List<File> |
spilloverAverage(String head,
String uniq,
List<File> guide)
This method takes a list of spilled-over guiding frames, calculates the
average and uses this fits to model the light losses.
|
(package private) List<File> |
stackScience(String h0,
String uq,
List<File> exp)
This method takes a list of exposures to stack in CCD-pixel space prior
to transfer.
|
private File |
transferred(File fres)
Transfers a file into the
KEY_TRANSFERDIR subfolder to the
current directory. |
private boolean |
updateObs(File fits,
String remotedir)
After the file has been successfully copied into the archive, we update
the transfered flag and the new path.
|
private void |
updatePrimary(MHeader p0,
List<String> keys,
TransferListener.Keyaction what,
Collection<MHeader> primi,
NumberFormat[] dates) |
private void |
updateUnique(Object uniq)
We receive a message that a target with this specified unique has been
completed, thus pre-processing of the guider files may commence.
|
private boolean |
waitForPost(String unique,
File f)
Return true, if this list of files should not be put into the
ready-to-transfer queue.
|
allBound, blockBinding, blockBinding, disconnect, getIP, getListenerName, isConnected, listenerName, releaseBinding, releaseBinding, rescanned, startBinding, startBindingcontainsRemoteProperty, getRemoteProperties, getRemoteProperty, setRemotePropertyclone, createFrom, createFrom, createFrom, createInstance, getApplet, getAsResources, getLocate, getPropertiesToKey, getPropertiesToKey, getResource, getResourceAsStream, getResourceFromKey, getResources, hasLocalURLs, initProperties, keyCreate, keyCreate, reload, setAppletaugment, augment, augment, augment, augment, defaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsEnums, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, isNew, parseObject, parseObject, reload, removeProperty, requires, setObject, setProperties, setProperty, stringProperties, toStringequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetListenerNamedisconnect, isConnecteddefaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, parseObject, removeProperty, setObject, setProperty, stringPropertiespublic static final DateFormat DIRFORMAT
public static final String SATURATED
public static final String SATURATEDREM
public static final String AVFRAMES
public static final String AVFRAMESREM
public static final String PIXREJ
public static final String PIXREJREM
public static final String AVRMS
public static final String AVRMSREM
public static final String AVBACK
public static final String AVBACKREM
public static final String MINBACK
public static final String MINBACKREM
public static final String MAXBACK
public static final String MAXBACKREM
public static final String DEFER
public static final String KEY_BIND
public static final String KEY_DEBUG
public static final String KEY_TELESCOPE
public static final String KEY_CASTERS
public static final String KEY_WAKEUP
public static final String KEY_DATADIRS
public static final String KEY_TRANSFERDIR
public static final String KEY_OBSERVEDB
public static final String KEY_TARGETHOST
public static final String KEY_TARGETDIR
public static final String KEY_IMCOPY
public static final String KEY_IMCOPYFLAG
public static final String KEY_RSYNC
public static final String KEY_RSYNCARGS
public static final String KEY_FITSHEADS
public static final String KEY_FITSDB
public static final String KEY_FITSMETHOD
public static final String KEY_COPYFILES
public static final String KEY_IMMEDIATE
public static final String KEY_LOCALTMP
public static final String KEY_PRESERVEFILE
public static final String KEY_COMPRESSTIMEOUT
public static final String KEY_TRANSFERTIMEOUT
public static final String KEY_MKDIRTIMEOUT
public static final String KEY_POLLTIME
public static final String KEY_DATEKEYS
public static final String KEY_LISTENHOST
public static final String KEY_LISTENPORT
public static final String KEY_MODELDRIFT
public static final String KEY_COPYDELAY
public static final String KEY_PRIVILEGE
public static final String KEY_ERASE
public static final String KEY_BIASREJ
public static final String KEY_BIASLOSIG
public static final String KEY_BIASHISIG
public static final String KEY_SCIREJ
public static final String KEY_SCILOSIG
public static final String KEY_SCIHISIG
public static final String KEY_SCIFAST
public static final String KEY_SCIGAIN
public static final String KEY_SCIHEADERSUM
public static final String KEY_SCIHEADERAV
public static final String KEY_SCIHEADERMIN
public static final String KEY_SCIHEADERMAX
public static final String KEY_SCIHEADERSQRT
public static final String KEY_SCIREADNOISE
public static final String KEY_BACKREJ
public static final String KEY_BACKLOSIG
public static final String KEY_BACKHISIG
public static final String KEY_AVREJ
public static final String KEY_AVLOSIG
public static final String KEY_AVHISIG
public static final String KEY_RISETWILIGHT
private static final boolean DEFDEBUG
private static final long DEFWAKEUP
private static final String DEFTRANSFERDIR
private static final String DEFIMCOPY
private static final String DEFIMCOPYFLAG
private static final String DEFRSYNC
private static final String DEFRSYNCARGS
private static final String DEFIMMEDIATE
private static final String DEFLOCALTMP
private static final long DEFCOMPRESSTIMEOUT
private static final long DEFTRANSFERTIMEOUT
private static final long DEFMKDIRTIMEOUT
private static final long DEFPOLLTIME
private static final long DEFCOPYDELAY
private static final String DEFPRIVILEGE
private static final boolean DEFERASE
private static final int DEFBIASREJ
private static final double DEFBIASLOSIG
private static final double DEFBIASHISIG
private static final double DEFSCIGAIN
private static final double DEFSCIREADNOISE
private static final int DEFSCIREJ
private static final double DEFSCILOSIG
private static final double DEFSCIHISIG
private static final boolean DEFSCIFAST
private static final int DEFBACKREJ
private static final double DEFBACKLOSIG
private static final double DEFBACKHISIG
private static final int DEFAVREJ
private static final double DEFAVLOSIG
private static final double DEFAVHISIG
private static final double DEFRISESETWILIGHT
private ObserveSql observesql
private List<String> secunique
private Map<String,TimerTask> secalarms
private static TransferListener.TransferThread transfer
private long tenter
private long texit
private boolean doexit
private boolean signalexit
private boolean firstcrash
private NightRemain nightremain
public TransferListener(Map<String,String> prop) throws RemoteException
RemoteExceptionpublic void init()
init in interface InitializableInitExceptionprivate void initObsSql()
public void exit()
exit in interface ExitCleaningexit in class AbstractRmiListenerpublic void rmiErrorOccured(ErrorEvent ee) throws RemoteException
rmiErrorOccured in interface RmiErrorListenerRemoteExceptionpublic long signalForExit()
throws RemoteException
signalForExit in interface RmiExitingRemoteExceptionpublic Object rmiProvideStatus() throws RemoteException
rmiProvideStatus in interface RmiStatusProvidingRemoteExceptionpublic void refresh()
refresh in interface Refreshingpublic boolean isFixedRate()
isFixedRate in interface Refreshingpublic long getRefreshInterval()
getRefreshInterval in interface Refreshingpublic boolean preserve()
KEY_PRESERVEFILE property.preserve in interface Preservingpublic boolean restore()
KEY_PRESERVEFILE property.restore in interface Preservingprotected boolean registerAtCaster(RmiCaster rmi, Class service)
registerAtCaster in class AbstractRmiListenerprotected boolean deregisterAtCaster(RmiCaster rmi, Class service)
deregisterAtCaster in class AbstractRmiListenerprivate boolean register(List<String> casters, Class casterclass)
private void relayFitsFile(File writtn)
private void updateUnique(Object uniq)
private void addSecureUnique(String unique)
unique - private boolean scanDir(File dir, List<String> heads, String ext, SortedMap<String,List<File>> treat) throws IOException
dir - heads - ext - treat - Links unique (Target-ID) to list of files found.IOExceptionprivate void scanAll()
throws IOException
IOException - If we cannot access to local file systemprivate boolean preTransfer(String unique, File f)
private boolean waitForPost(String unique, File f)
unique - fits - private int postObserve(String unique, List<File> fits)
KEY_FITSMETHOD. For each entry there, all fits files in this
unique are collected and processed via the appropriate method. The
collection is done by augmenting the header with the provided unique and
grabbing all files from the list, whose names start accordingly. Grabbing
is here a true transfer into the new list. The list returned by the
method called is in turn re-entered into the transfer list. This method
is also responsible for moving these collected fits file out of the way.medianfinal List<File> stackScience(String h0, String uq, List<File> exp)
h0 - uq - exp - private boolean checkLayout(ReadFits layout, ReadFits r) throws BasicFitsException
layout - r - f - BasicFitsExceptionprivate static final NumberFormat[] getHeaderDateParsers()
private MHeader getPrimaryHeader(MHeader p0, Collection<ReadFits> all) throws BasicFitsException
BasicFitsExceptionprivate void updatePrimary(MHeader p0, List<String> keys, TransferListener.Keyaction what, Collection<MHeader> primi, NumberFormat[] dates)
p0 - keys - primi - dates - private double[] getAduMode(MFits fdu, int loop, double losig, double hisig) throws HeaderParsingException, IOException, BasicFitsException
private final List<File> averageWithoutBackground(String head, String uniq, List<File> guide)
head - uniq - guide - private final List<File> averageWithoutBackgroundInMemory(String head, String uniq, List<File> guide)
head - uniq - guide - private final List<File> median(String head, String uniq, List<File> guide)
final List<File> spillover(String head, String uniq, List<File> guide)
final List<File> spilloverAverage(String head, String uniq, List<File> guide)
private boolean lightLossSql(String uniq, File median)
private TransferListener.SqlPair lightLoss(String uniq, File median) throws BasicFitsException, IOException, HeaderParsingException
FitsExceptionIOExceptionHeaderParsingExceptionBasicFitsExceptionprivate static TransferListener.SqlPair lightLoss(AbstractPinholeModel cog, String uniq, File median) throws BasicFitsException, IOException, HeaderParsingException
private void loadObs(String unique, List<File> fits)
private boolean updateObs(File fits, String remotedir)
private File transferred(File fres)
KEY_TRANSFERDIR subfolder to the
current directory. Returns true on success.private boolean signal(String filename)
private boolean mkdir(String subdir, double jd)
private int execute(String exe, long timeout)
public static void main(String[] arg) throws IOException
IOException