Вот способ jQuery для переключения флажков без необходимости выбора флажка с html5 & amp; ярлыки:
$("input[name='VIEW']:checkbox").change(function() {
if($(this).is(':checked')) {
$("input[name='VIEW']:checkbox").prop("checked", false);
$("input[name='VIEW']:checkbox").parent('.normal').removeClass("checked");
$(this).prop("checked", true);
$(this).parent('.normal').addClass('checked');
}
else{
$("input[name='VIEW']").prop("checked", false);
$("input[name='VIEW']").parent('.normal').removeClass('checked');
}
});
Apache Commons VFS говорит об этой проблеме, хотя быстрая проверка не показала, будет ли он выполнять SCP или SMTP. Commons NET поддерживает SMTP, но я не знаю, можно ли получить общий интерфейс из коробки. Для SCP есть несколько возможностей.
Суть в том, чтобы проверить реализацию VFS и посмотреть, делает ли она что-нибудь для вас, возможно, вы сможете расширить ее для других протоколов. Если это не подходит для вашего интерфейса, вы, вероятно, захотите, чтобы все ссылки на удаленные файлы были строками, а не объектами File, и, в частности, строкой, представляющей URI, указывающим на удаленное местоположение и сообщающим вам, какой протокол использовать.
Я работаю над проблемой, очень похожей на вашу, я не смог найти никакого решения с открытым исходным кодом, поэтому я пытаюсь набросать решение самостоятельно. Это то, что я придумал.
Я думаю, вы должны представлять inputSources и outputSources как разные вещи, например,
public interface Input{
abstract InputStream getFileInputStream();
abstract String getStreamId();
}
//You can have differen implementation of this interface (1 for ftp, 1 for local files, 1 for Blob on db etc)
public interface Output{
abstract OutputStream getOutputStream();
abstract String getStreamId();
}
//You can have differen implementation of this interface (1 for ftp, 1 for local files, 1 for mailing the file etc)
Тогда у вас должно быть Движение, чтобы описать, какие входные данные должны переходить к каким выходным.
class Movement{
String inputId;
String outputId;
}
Класс для описания списка Движений, которые необходимо совершить.
class MovementDescriptor{
public addMovement(Movement a);
public Movement[] getAllMovements();
}
А затем класс для выполнения самой работы.
class FileMover{
HashMap<String,Input> inputRegistry;
HashMap<String,Output> outputRegistry;
addInputToRegistry(Input a ){
inputRegistry.put(a.getId(),a);
}
addOutputToRegistry(Output a){
outputRegistry.put(a.getId(),a);
}
transferFiles(MovementDescriptor movementDescriptor){
Movement[] movements =movementDescriptor.getAllMovements();
foreach (Movement movement: movements){
//get the input Id
//find it in the registry and retrieve the associated InputStream
//get the output Id
//find it in the registry and retrieve the associated OutputStream
//copy the stream from the input to the output (you may want to use a temporary file in between)
}
}
}
Код, который будет использовать это, будет работать следующим образом:
FileMover fm=new FileMover();
//Register your sources and your destinations
fm.addInputToRegistry(input);
fm.addOutputToRegistry(output)
// each time you have to make a movement create a MovementDescriptor and call
fm.transferFiles(movementDescriptor)
Если вы хотите обменяться по почте нашими взглядами на эту тему, просто отправьте мне электронное письмо в (мой ник) @gmail точка com.
ПРИМЕЧАНИЕ. Код представляет собой всего лишь набросок: -)
Я думаю JSch реализует SCP, так что это покрывает его.