use of eu.esdihumboldt.hale.common.align.service.impl.AlignmentFunctionService in project hale by halestudio.
the class XslRetype method createPropertiesFragment.
/**
* Create a XSL fragment for populating the properties of a target instance.
*
* @param typeCell the associated type cell
* @return the XSL fragment
* @throws TransformationException if creating the fragment failed
*/
protected String createPropertiesFragment(final Cell typeCell) throws TransformationException {
final TransformationTree tree = new TransformationTreeImpl(context().getAlignment(), typeCell);
FunctionService functionService = new AlignmentFunctionService(context().getAlignment());
/*
* Create the transformation graph derived from the transformation tree
* and perform context matching.
*/
/*
* XXX proxying multi-result nodes omitted for now, see
* proxyMultiResultNodes imlementation
*/
// final TGraph graph = new TGraphImpl(tree).proxyMultiResultNodes().performContextMatching();
final TGraph graph = new TGraphImpl(tree, functionService).performContextMatching();
// TODO tree as GraphML as informative annotation into XSLT?
try {
StringWriter propsOut = new StringWriter();
try {
AbstractTransformationTraverser trav = new RetypeTraverser(context(), propsOut, typeCell);
trav.traverse(graph);
} finally {
propsOut.close();
}
return propsOut.toString();
} catch (Exception e) {
throw new TransformationException("Failed to create property transformations", e);
}
}
use of eu.esdihumboldt.hale.common.align.service.impl.AlignmentFunctionService in project hale by halestudio.
the class ReprojectGeometryTest method transformData.
@Override
protected List<Instance> transformData(TransformationExample example) throws Exception {
ConceptualSchemaTransformer transformer = new ConceptualSchemaTransformer();
DefaultInstanceSink sink = new DefaultInstanceSink();
final Map<Class<?>, Object> customServices = new HashMap<>();
customServices.put(FunctionService.class, new AlignmentFunctionService(example.getAlignment()));
customServices.put(TransformationFunctionService.class, new AlignmentTransformationFunctionService(example.getAlignment()));
final ServiceProvider serviceProvider = new ServiceProvider() {
private final ServiceProvider projectScope = new ServiceManager(ServiceManager.SCOPE_PROJECT);
@SuppressWarnings("unchecked")
@Override
public <T> T getService(Class<T> serviceInterface) {
if (customServices.containsKey(serviceInterface)) {
return (T) customServices.get(serviceInterface);
}
// FIXME global scope not supported yet
return projectScope.getService(serviceInterface);
}
};
transformer.transform(example.getAlignment(), example.getSourceInstances(), sink, serviceProvider, new NullProgressIndicator());
return sink.getInstances();
}
use of eu.esdihumboldt.hale.common.align.service.impl.AlignmentFunctionService in project hale by halestudio.
the class ConceptualSchemaTransformerTest method transformData.
@Override
protected List<Instance> transformData(TransformationExample example) throws Exception {
ConceptualSchemaTransformer transformer = new ConceptualSchemaTransformer();
ThreadSafeInstanceSink<DefaultInstanceSink> sink = new ThreadSafeInstanceSink<>(new DefaultInstanceSink());
final Map<Class<?>, Object> customServices = new HashMap<>();
customServices.put(FunctionService.class, new AlignmentFunctionService(example.getAlignment()));
customServices.put(TransformationFunctionService.class, new AlignmentTransformationFunctionService(example.getAlignment()));
InstanceIndexServiceImpl indexService = new InstanceIndexServiceImpl();
customServices.put(InstanceIndexService.class, indexService);
final ServiceProvider serviceProvider = new ServiceProvider() {
private final ServiceProvider projectScope = new ServiceManager(ServiceManager.SCOPE_PROJECT);
@SuppressWarnings("unchecked")
@Override
public <T> T getService(Class<T> serviceInterface) {
if (customServices.containsKey(serviceInterface)) {
return (T) customServices.get(serviceInterface);
}
// FIXME global scope not supported yet
return projectScope.getService(serviceInterface);
}
};
indexService.addPropertyMappings(example.getAlignment().getActiveTypeCells(), serviceProvider);
InstanceCollection source = example.getSourceInstances();
try (ResourceIterator<Instance> it = source.iterator()) {
while (it.hasNext()) {
indexService.add(it.next(), source);
}
}
transformer.transform(example.getAlignment(), source, sink, serviceProvider, new NullProgressIndicator());
return sink.getDecoratee().getInstances();
}
Aggregations