use of eu.esdihumboldt.hale.common.align.model.condition.PropertyCondition in project hale by halestudio.
the class PropertyParameter method createConditions.
private static List<PropertyCondition> createConditions(IConfigurationElement conf) {
List<PropertyCondition> result = new ArrayList<PropertyCondition>();
IConfigurationElement[] children = conf.getChildren();
if (children != null) {
for (IConfigurationElement child : children) {
String name = child.getName();
if (name.equals("propertyCondition")) {
try {
PropertyCondition condition = (PropertyCondition) child.createExecutableExtension("class");
result.add(condition);
} catch (CoreException e) {
log.error("Error creating property condition from extension", e);
}
} else if (name.equals("bindingCondition")) {
BindingCondition bc = createBindingCondition(child);
if (bc != null) {
result.add(new PropertyTypeCondition(bc));
}
} else if (name.equals("geometryCondition")) {
GeometryCondition gc = createGeometryCondition(child);
if (gc != null) {
result.add(new PropertyTypeCondition(gc));
}
} else if (name.equals("geometryOrParentCondition")) {
GeometryCondition gc = createGeometryCondition(child);
if (gc != null) {
result.add(new PropertyOrChildrenTypeCondition(gc));
}
} else if (name.equals("valueCondition")) {
String attr = child.getAttribute("allowAugmented");
boolean allowAugmented;
if (attr == null || attr.isEmpty()) {
// default value
allowAugmented = true;
} else {
allowAugmented = Boolean.parseBoolean(attr);
}
if (allowAugmented) {
result.add(VALUE_CONDITION);
} else {
result.add(VALUE_CONDITION_STRICT);
}
} else {
// ignore
log.warn("Unrecognized property condition");
}
}
}
return result;
}
use of eu.esdihumboldt.hale.common.align.model.condition.PropertyCondition in project hale by halestudio.
the class GeoJSONConfigurationPage method createContent.
/**
* @see HaleWizardPage#createContent(Composite)
*/
@Override
protected void createContent(final Composite page) {
page.setLayout(new GridLayout(1, false));
Label explanation = new Label(page, SWT.NONE);
explanation.setText("If a geometry is set to \"none\", instances will still be included as GeoJSON features,\nbut without default geometries.");
final DynamicScrolledComposite sc = new DynamicScrolledComposite(page, SWT.V_SCROLL);
sc.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Composite parent = new Composite(sc, SWT.NONE);
sc.setExpandHorizontal(true);
GridLayoutFactory.swtDefaults().numColumns(2).equalWidth(false).spacing(6, 12).applyTo(parent);
InstanceService is = PlatformUI.getWorkbench().getService(InstanceService.class);
GeometrySchemaService gss = PlatformUI.getWorkbench().getService(GeometrySchemaService.class);
Set<TypeDefinition> types = is.getInstanceTypes(DataSet.TRANSFORMED);
for (final TypeDefinition type : types) {
Label label = new Label(parent, SWT.NONE);
label.setText(type.getDisplayName() + ":");
PropertyCondition condition = new PropertyOrChildrenTypeCondition(new GeometryCondition());
PropertyParameterDefinition param = new PropertyParameter("", 0, 1, "Geometry", null, Collections.singletonList(condition), false);
PropertyEntitySelector selector = new PropertyEntitySelector(SchemaSpaceID.TARGET, param, parent, new TypeEntityDefinition(type, SchemaSpaceID.TARGET, null));
selector.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
if (!event.getSelection().isEmpty() && event.getSelection() instanceof IStructuredSelection) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
PropertyEntityDefinition property = (PropertyEntityDefinition) selection.getFirstElement();
config.addDefaultGeometry(type, property);
} else {
config.addDefaultGeometry(type, null);
}
}
});
selector.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
// initial selection
List<QName> path = gss.getDefaultGeometry(type);
if (path != null) {
EntityDefinition entityDef = new TypeEntityDefinition(type, SchemaSpaceID.TARGET, null);
for (QName child : path) entityDef = AlignmentUtil.getChild(entityDef, child);
selector.setSelection(new StructuredSelection(entityDef));
}
}
sc.setContent(parent);
}
use of eu.esdihumboldt.hale.common.align.model.condition.PropertyCondition in project hale by halestudio.
the class PropertyEntitySelector method createFilters.
private static ViewerFilter[] createFilters(PropertyParameterDefinition field) {
// if no condition is present add a filter that allows all properties
ViewerFilter propertyFilter = new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
return element instanceof PropertyEntityDefinition;
}
};
if (field == null) {
return new ViewerFilter[] { propertyFilter };
}
List<PropertyCondition> conditions = field.getConditions();
if (conditions == null || conditions.isEmpty())
return new ViewerFilter[] { propertyFilter };
ViewerFilter[] filters = new ViewerFilter[conditions.size()];
int i = 0;
for (final PropertyCondition condition : conditions) {
filters[i] = new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof PropertyEntityDefinition) {
Property property = new DefaultProperty((PropertyEntityDefinition) element);
return condition.accept(property);
} else
return false;
}
};
}
return filters;
}
Aggregations