lets anyone waiting for the file transfer to be complete know that the file transfer is complete . concode_field_sep Condition userHasntSelected concode_elem_sep Condition fileReceiverNotInitialized concode_elem_sep ClientView clientView concode_elem_sep Lock lock concode_elem_sep Condition fileTransferNotDone concode_elem_sep boolean waitingForFile concode_elem_sep boolean waitingForClient concode_elem_sep ClientModel clientModel concode_elem_sep boolean terminated concode_elem_sep boolean errorOccurred concode_field_sep void notifyFileReceiverTask concode_elem_sep void setErrorOccurred concode_elem_sep FileMapping getFileMapping concode_elem_sep void waitForUserInput concode_elem_sep void notifyUserInputed concode_elem_sep void main concode_elem_sep void reportError concode_elem_sep void updateOutputDirectory concode_elem_sep void updateInputDirectory concode_elem_sep boolean hasErrorOccurred concode_elem_sep void terminate concode_elem_sep void waitForCompleteFileTransfer
void function ( ) { lock . lock ( ) ; try { waitingForFile = false ; fileTransferNotDone . signalAll ( ) ; } finally { lock . unlock ( ) ; } }