Имеется возможность применить свою реализацию для формирования каких-либо выгружаемых файлов. При старте выгрузки будет сформировано синхронное событие ru.bitel.bgbilling.modules.sorm.server.event.SormUploadEvent.
В динамическом коде можно заменить один или несколько файлов, можно добавить один или несколько файлов к выгрузке.
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.modules.sorm.common.bean.SormProject;
import ru.bitel.bgbilling.modules.sorm.server.event.SormUploadEvent;
import ru.bitel.bgbilling.modules.sorm.server.upload.Upload;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.model.Pair;
import ru.bitel.common.sql.ConnectionSet;
import java.nio.file.Path;
import java.util.Collections;
import java.util.List;
public class CustomUpload
extends EventScriptBase<SormUploadEvent>
{
@Override
public void onEvent( SormUploadEvent event, Setup setup, ConnectionSet set )
throws Exception
{
SormProject sormProject = event.getSormProject();
CustomUploadSorm customCustomUploadSorm = new CustomUploadSorm( sormProject, true );
event.setUploadVersion( customCustomUploadSorm );
}
/**
* Класс-реализация пользовательской выгрузки СОРМ.
*/
static class CustomUploadSorm
extends Upload
{
SormProject sormProject;
public CustomUploadSorm( SormProject sormProject )
{
//true - если нужна полная выгрузка, false - если выгрузка будет инкрементальной. Т.е. будут выгружены только новые и изменённые с последней выгрузки договоры, и данные к ним.
super( sormProject, true );
this.sormProject = sormProject;
}
@Override
public Path abonents()
{
return null;
}
@Override
public Path abonentsAddresses()
{
return null;
}
@Override
public Path abonentLogins()
{
return null;
}
@Override
public Path services()
{
return null;
}
@Override
public Path abonentServices()
{
return null;
}
@Override
public Path ipNumbering()
{
return null;
}
@Override
public Path abonentsIpNumbering()
{
return null;
}
@Override
public Path switches()
{
return null;
}
@Override
public Path gateways()
{
return null;
}
@Override
public Path bunches()
{
return null;
}
@Override
public Path phoneNumbering()
{
return null;
}
@Override
public Path phoneNumberingAbonents()
{
return null;
}
@Override
public Path documentTypes()
{
return null;
}
@Override
public Path paymentTypes()
{
return null;
}
@Override
public Path abonentsPayments()
{
return null;
}
@Override
public Path operatorInfo()
{
return null;
}
/**
* Возвращает остальные файлы, которые должны будут быть выгружены, если такие есть
* Список пар, где:
* key - путь на фтп, куда нужно положить файл
* value - файл
* В качестве ключа можно положить null,
* в таком случае файл будет выгружен по стандартному пути или в корень, если получить путь не удалось
* @return
*/
@Override
public List<Pair<String, Path>> getOtherFiles()
{
return Collections.emptyList();
}
}
Метод getOtherFiles() может быть использован для формирования и выгрузки любых файлов, которые должны быть отправлены на фтп при процессе выгрузки.