use of com.developmentontheedge.be5.metadata.model.base.BeModelElement in project be5 by DevelopmentOnTheEdge.
the class MassChange method apply.
public List<BeModelElement> apply(LoadContext loadContext, Project project) {
List<BeModelElement> elements = SelectorUtils.select(project, getRule());
List<BeModelElement> changedElements = new ArrayList<>();
for (BeModelElement element : elements) {
if (element instanceof Query) {
Query oldQuery = (Query) element;
Query newQuery = YamlDeserializer.readQuery(loadContext, oldQuery.getName(), data, oldQuery.getEntity());
DataElementUtils.saveQuiet(newQuery);
newQuery.merge(oldQuery, false, true);
newQuery.setOriginModuleName(oldQuery.getOriginModuleName());
} else if (element instanceof Operation) {
Operation oldOperation = (Operation) element;
Map<String, Object> realData = data;
// Set type, because it cannot be inherited yet
if (!data.containsKey("type") && !Operation.OPERATION_TYPE_JAVA.equals(oldOperation.getType())) {
realData = new HashMap<>(data);
realData.put("type", oldOperation.getType());
}
Operation newOperation = YamlDeserializer.readOperation(loadContext, oldOperation.getName(), realData, oldOperation.getEntity());
DataElementUtils.saveQuiet(newOperation);
newOperation.merge(oldOperation, false, true);
newOperation.setOriginModuleName(oldOperation.getOriginModuleName());
} else if (element instanceof Entity) {
Entity oldEntity = (Entity) element;
Map<String, Object> realData = data;
// Set type, because it cannot be inherited yet
if (!data.containsKey("type")) {
realData = new HashMap<>(data);
realData.put("type", oldEntity.getType().getSqlName());
}
Entity newEntity = YamlDeserializer.readEntity(loadContext, oldEntity.getName(), realData, oldEntity.getModule());
for (EntityItem q : newEntity.getQueries()) q.setOriginModuleName(oldEntity.getModule().getName());
for (EntityItem o : newEntity.getOperations()) o.setOriginModuleName(oldEntity.getModule().getName());
DataElementUtils.saveQuiet(newEntity);
newEntity.merge(oldEntity, false, true);
} else {
loadContext.addWarning(new ReadException(element, null, "Mass change is not supported for type " + element.getClass().getSimpleName()));
continue;
}
changedElements.add(element);
}
return changedElements;
}
use of com.developmentontheedge.be5.metadata.model.base.BeModelElement in project be5 by DevelopmentOnTheEdge.
the class DataElementUtils method moveToApplication.
/**
* Moves the model element to the application if the element is an entity item.
*
* @param modelElement
*/
public static void moveToApplication(final BeModelElement modelElement) {
if (modelElement instanceof BeElementWithOriginModule) {
BeElementWithOriginModule r = (BeElementWithOriginModule) modelElement;
r.setOriginModuleName(r.getProject().getProjectOrigin());
}
}
use of com.developmentontheedge.be5.metadata.model.base.BeModelElement in project be5 by DevelopmentOnTheEdge.
the class YamlDeserializer method reloadEntity.
public Entity reloadEntity(final Entity oldEntity) throws ReadException {
this.fileSystem = new ProjectFileSystem(oldEntity.getProject());
this.setProject(oldEntity.getProject());
final Entity entity = this.readEntity(oldEntity.getModule(), oldEntity.getName());
if (oldEntity.getPrototype() != null) {
@SuppressWarnings("unchecked") final BeModelCollection<BeModelElement> prototype = (BeModelCollection<BeModelElement>) oldEntity.getPrototype();
entity.merge(prototype, true, true);
}
EntitiesFactory.addToModule(entity, oldEntity.getModule());
return entity;
}
use of com.developmentontheedge.be5.metadata.model.base.BeModelElement in project be5 by DevelopmentOnTheEdge.
the class VariableSelector method getTags.
@Override
public String[] getTags() {
Project project = ((BeModelElement) getBean()).getProject();
Map<String, String> variableNames = project.getVariables();
String[] result = new String[variableNames.size() + 1];
result[0] = "(none)";
int i = 1;
for (Entry<String, String> entry : variableNames.entrySet()) {
result[i++] = entry.getKey() + " (" + entry.getValue() + ")";
}
return result;
}
use of com.developmentontheedge.be5.metadata.model.base.BeModelElement in project be5 by DevelopmentOnTheEdge.
the class MetaImpl method getColumns.
@Override
@SuppressWarnings(value = "unchecked")
public Map<String, ColumnDef> getColumns(Entity entity) {
BeModelElement scheme = entity.getAvailableElement("Scheme");
if (scheme == null)
return new HashMap<>();
BeCaseInsensitiveCollection<ColumnDef> columns = (BeCaseInsensitiveCollection<ColumnDef>) ((TableDef) scheme).get("Columns");
return StreamSupport.stream(columns.spliterator(), false).collect(Utils.toLinkedMap(ColumnDef::getName, Function.identity()));
}
Aggregations