protected boolean receiveFileDelivery(File file) {
        if (file == null) {
            return false;
        }

        // add the file into the storage
        file.setMasterCopy(false); // set file as a replica
        addFile(file);

        for (int i = 0; i < waitingDataGridlet_.size(); i++) {
            DataGridlet dg = (DataGridlet) waitingDataGridlet_.get(i);
            dg.deleteRequiredFile(file.getName());

            // if a job does not need any more files
            if (!dg.requiresFiles()) {
                dg.setResourceParameter(super.resourceID_, 0);
                policy_.gridletSubmit(dg, false); // execute this job
                waitingDataGridlet_.remove(dg); // remove from waiting list
            }
        }

        return true;
    }