package foundation.icall;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.entity.Filter;
|
import foundation.data.entity.OrderBy;
|
import foundation.data.mapping.FieldMapping;
|
import foundation.data.mapping.Mappings;
|
import foundation.data.object.DataObject;
|
import foundation.icall.callout.HttpServerMeta;
|
import foundation.icall.callout.RemoteDBMeta;
|
import foundation.icall.callout.RemoteSourceBucket;
|
import foundation.io.template.ResponseTemplate;
|
import foundation.io.template.Template;
|
import foundation.server.Initializer;
|
|
|
public class ICallLoader extends Initializer {
|
|
@Override
|
public void startUp() throws Exception {
|
load();
|
}
|
|
@Override
|
public void shutDown() throws Exception {
|
|
}
|
|
public void load() throws Exception {
|
//1. sources
|
loadSources();
|
|
//2. ICalls
|
loadICalls();
|
|
//3. ICall Templates
|
loadICallTemplates();
|
}
|
|
private void loadSources() throws Exception {
|
RemoteSourceBucket sourceBucket = RemoteSourceBucket.getInstance();
|
|
loadRemoteDataBases(sourceBucket);
|
loadHttpServers(sourceBucket);
|
}
|
|
public static void loadRemoteDataBases(RemoteSourceBucket sourceBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("sys_interface_source");
|
EntitySet databaseList = dataObject.getTableEntitySet(new Filter("type", "database"));
|
|
for (Entity entity : databaseList) {
|
RemoteDBMeta meta = new RemoteDBMeta();
|
meta.loadHead(entity);
|
|
dataObject = DataObject.getInstance("sys_interface_source_detail");
|
EntitySet elementList = dataObject.getTableEntitySet(new Filter("parent_id", entity.getId()));
|
meta.loadDetail(elementList);
|
|
sourceBucket.loadOne(meta.getName(), meta);
|
}
|
}
|
|
public static void loadHttpServers(RemoteSourceBucket sourceBucket) throws Exception {
|
DataObject dataObject = DataObject.getInstance("sys_interface_source");
|
EntitySet databaseList = dataObject.getTableEntitySet(new Filter("type", "server"));
|
|
for (Entity entity : databaseList) {
|
HttpServerMeta meta = new HttpServerMeta();
|
meta.load(entity);
|
|
dataObject = DataObject.getInstance("sys_interface_source_detail");
|
EntitySet elementList = dataObject.getTableEntitySet(new Filter("parent_id", entity.getId()));
|
meta.loadItems(elementList);
|
|
sourceBucket.loadOne(meta.getName(), meta);
|
}
|
}
|
|
private void loadICalls() throws Exception {
|
DataObject dataObject = DataObject.getInstance("sys_interface");
|
EntitySet entitySet = dataObject.getBrowseEntitySet();
|
|
ICallBucket bucket = ICallBucket.getInstance();
|
|
for (Entity entity: entitySet) {
|
ICallMeta meta = new ICallMeta();
|
meta.load(entity);
|
bucket.loadOne(meta.getName(), meta);
|
}
|
|
bucket.activate();
|
}
|
|
private void loadICallTemplates() throws Exception {
|
DataObject dataObject = DataObject.getInstance("sys_interface_template");
|
EntitySet entitySet = dataObject.getBrowseEntitySet(new OrderBy("parent_id"));
|
|
ICallBucket bucket = ICallBucket.getInstance();
|
|
DataObject fieldMappingObject = DataObject.getInstance("sys_field_mapping");
|
for (Entity entity: entitySet) {
|
String parentId = entity.getParentId();
|
ICallMeta meta = bucket.getCachedOne(parentId);
|
|
String type = entity.getString("type");
|
|
if ("Response".equalsIgnoreCase(type)) {
|
ResponseTemplate template = new ResponseTemplate(entity);
|
EntitySet fieldSet = fieldMappingObject.getTableEntitySet(new Filter("parent_id",template.getCode()));
|
template.setFileField(fieldSet);
|
meta.setResponseTemplate(template);
|
}
|
else
|
{
|
Template template = new Template(entity);
|
meta.addOneRequestTemplate(template.getCode(), template);
|
}
|
}
|
|
bucket.activate();
|
}
|
|
public static Mappings loadOneMappings(String mappingId, Mappings mappings) throws Exception {
|
if (mappings == null) {
|
mappings = new Mappings(mappingId);
|
}
|
else {
|
mappings.clear();
|
}
|
|
DataObject dataObject = DataObject.getInstance("sys_interface_field");
|
Filter filter = new Filter("parent_id", mappingId);
|
EntitySet entitySet = dataObject.getTableEntitySet(filter, new OrderBy("index_no asc"));
|
|
for (Entity entity: entitySet) {
|
FieldMapping mapping = new FieldMapping();
|
mapping.load(entity);
|
|
mappings.loadOne(mapping);
|
}
|
|
return mappings;
|
}
|
|
}
|