use of de.tudarmstadt.ukp.clarin.webanno.export.model.ExportedAnnotationLayer in project webanno by webanno.
the class ImportUtil method exportLayerDetails.
@Deprecated
public static ExportedAnnotationLayer exportLayerDetails(Map<AnnotationLayer, ExportedAnnotationLayer> aLayerToExLayer, Map<AnnotationFeature, ExportedAnnotationFeature> aFeatureToExFeature, AnnotationLayer aLayer, AnnotationSchemaService aAnnotationService) {
ExportedAnnotationLayer exLayer = new ExportedAnnotationLayer();
exLayer.setAllowStacking(aLayer.isAllowStacking());
exLayer.setBuiltIn(aLayer.isBuiltIn());
exLayer.setReadonly(aLayer.isReadonly());
exLayer.setCrossSentence(aLayer.isCrossSentence());
exLayer.setDescription(aLayer.getDescription());
exLayer.setEnabled(aLayer.isEnabled());
exLayer.setLockToTokenOffset(AnchoringMode.SINGLE_TOKEN.equals(aLayer.getAnchoringMode()));
exLayer.setMultipleTokens(AnchoringMode.TOKENS.equals(aLayer.getAnchoringMode()));
exLayer.setOverlapMode(aLayer.getOverlapMode());
exLayer.setAnchoringMode(aLayer.getAnchoringMode());
exLayer.setValidationMode(aLayer.getValidationMode());
exLayer.setLinkedListBehavior(aLayer.isLinkedListBehavior());
exLayer.setName(aLayer.getName());
exLayer.setProjectName(aLayer.getProject().getName());
exLayer.setType(aLayer.getType());
exLayer.setUiName(aLayer.getUiName());
if (aLayerToExLayer != null) {
aLayerToExLayer.put(aLayer, exLayer);
}
List<ExportedAnnotationFeature> exFeatures = new ArrayList<>();
for (AnnotationFeature feature : aAnnotationService.listAnnotationFeature(aLayer)) {
ExportedAnnotationFeature exFeature = new ExportedAnnotationFeature();
exFeature.setDescription(feature.getDescription());
exFeature.setEnabled(feature.isEnabled());
exFeature.setRemember(feature.isRemember());
exFeature.setRequired(feature.isRequired());
exFeature.setHideUnconstraintFeature(feature.isHideUnconstraintFeature());
exFeature.setName(feature.getName());
exFeature.setProjectName(feature.getProject().getName());
exFeature.setType(feature.getType());
exFeature.setUiName(feature.getUiName());
exFeature.setVisible(feature.isVisible());
exFeature.setMultiValueMode(feature.getMultiValueMode());
exFeature.setLinkMode(feature.getLinkMode());
exFeature.setLinkTypeName(feature.getLinkTypeName());
exFeature.setLinkTypeRoleFeatureName(feature.getLinkTypeRoleFeatureName());
exFeature.setLinkTypeTargetFeatureName(feature.getLinkTypeTargetFeatureName());
exFeature.setTraits(feature.getTraits());
if (feature.getTagset() != null) {
TagSet tagSet = feature.getTagset();
ExportedTagSet exTagSet = new ExportedTagSet();
exTagSet.setDescription(tagSet.getDescription());
exTagSet.setLanguage(tagSet.getLanguage());
exTagSet.setName(tagSet.getName());
exTagSet.setCreateTag(tagSet.isCreateTag());
List<ExportedTag> exportedTags = new ArrayList<>();
for (Tag tag : aAnnotationService.listTags(tagSet)) {
ExportedTag exTag = new ExportedTag();
exTag.setDescription(tag.getDescription());
exTag.setName(tag.getName());
exportedTags.add(exTag);
}
exTagSet.setTags(exportedTags);
exFeature.setTagSet(exTagSet);
}
exFeatures.add(exFeature);
if (aFeatureToExFeature != null) {
aFeatureToExFeature.put(feature, exFeature);
}
}
exLayer.setFeatures(exFeatures);
return exLayer;
}
use of de.tudarmstadt.ukp.clarin.webanno.export.model.ExportedAnnotationLayer in project webanno by webanno.
the class LayerDetailForm method exportLayerJson.
private IResourceStream exportLayerJson() {
try {
AnnotationLayer layer = getModelObject();
List<ExportedAnnotationLayer> exLayers = new ArrayList<>();
ExportedAnnotationLayer exMainLayer = ImportUtil.exportLayerDetails(null, null, layer, annotationService);
exLayers.add(exMainLayer);
// that, otherwise we would be missing it during re-import.
if (layer.getAttachType() != null) {
AnnotationLayer attachLayer = layer.getAttachType();
ExportedAnnotationLayer exAttachLayer = ImportUtil.exportLayerDetails(null, null, attachLayer, annotationService);
exMainLayer.setAttachType(new ExportedAnnotationLayerReference(exAttachLayer.getName()));
exLayers.add(exAttachLayer);
}
return new InputStreamResourceStream(new ByteArrayInputStream(JSONUtil.toPrettyJsonString(exLayers).getBytes("UTF-8")));
} catch (Exception e) {
error("Unable to generate the JSON file: " + ExceptionUtils.getRootCauseMessage(e));
ProjectLayersPanel.LOG.error("Unable to generate the JSON file", e);
RequestCycle.get().find(IPartialPageRequestHandler.class).ifPresent(handler -> handler.addChildren(getPage(), IFeedback.class));
return null;
}
}
use of de.tudarmstadt.ukp.clarin.webanno.export.model.ExportedAnnotationLayer in project webanno by webanno.
the class LayerExporter method exportLayerDetails.
private ExportedAnnotationLayer exportLayerDetails(Map<AnnotationLayer, ExportedAnnotationLayer> aLayerToExLayer, Map<AnnotationFeature, ExportedAnnotationFeature> aFeatureToExFeature, AnnotationLayer aLayer) {
ExportedAnnotationLayer exLayer = new ExportedAnnotationLayer();
exLayer.setAllowStacking(aLayer.isAllowStacking());
exLayer.setBuiltIn(aLayer.isBuiltIn());
exLayer.setReadonly(aLayer.isReadonly());
exLayer.setCrossSentence(aLayer.isCrossSentence());
exLayer.setDescription(aLayer.getDescription());
exLayer.setEnabled(aLayer.isEnabled());
exLayer.setLockToTokenOffset(AnchoringMode.SINGLE_TOKEN.equals(aLayer.getAnchoringMode()));
exLayer.setMultipleTokens(AnchoringMode.TOKENS.equals(aLayer.getAnchoringMode()));
exLayer.setOverlapMode(aLayer.getOverlapMode());
exLayer.setAnchoringMode(aLayer.getAnchoringMode());
exLayer.setValidationMode(aLayer.getValidationMode());
exLayer.setLinkedListBehavior(aLayer.isLinkedListBehavior());
exLayer.setName(aLayer.getName());
exLayer.setProjectName(aLayer.getProject().getName());
exLayer.setType(aLayer.getType());
exLayer.setUiName(aLayer.getUiName());
exLayer.setTraits(aLayer.getTraits());
if (aLayerToExLayer != null) {
aLayerToExLayer.put(aLayer, exLayer);
}
// Export features
List<ExportedAnnotationFeature> exFeatures = new ArrayList<>();
for (AnnotationFeature feature : annotationService.listAnnotationFeature(aLayer)) {
ExportedAnnotationFeature exFeature = exportFeatureDetails(feature);
exFeatures.add(exFeature);
if (aFeatureToExFeature != null) {
aFeatureToExFeature.put(feature, exFeature);
}
}
exLayer.setFeatures(exFeatures);
return exLayer;
}
use of de.tudarmstadt.ukp.clarin.webanno.export.model.ExportedAnnotationLayer in project webanno by webanno.
the class LayerExporter method exportData.
@Override
public void exportData(ProjectExportRequest aRequest, ProjectExportTaskMonitor aMonitor, ExportedProject aExProject, File aStage) throws Exception {
List<ExportedAnnotationLayer> exLayers = new ArrayList<>();
// Store map of layer and its equivalent exLayer so that the attach type is attached later
Map<AnnotationLayer, ExportedAnnotationLayer> layerToExLayers = new HashMap<>();
// Store map of feature and its equivalent exFeature so that the attach feature is attached
// later
Map<AnnotationFeature, ExportedAnnotationFeature> featureToExFeatures = new HashMap<>();
for (AnnotationLayer layer : annotationService.listAnnotationLayer(aRequest.getProject())) {
exLayers.add(exportLayerDetails(layerToExLayers, featureToExFeatures, layer));
}
// add the attach-type and attach-feature to the exported layers and exported feature
for (AnnotationLayer layer : layerToExLayers.keySet()) {
if (layer.getAttachType() != null) {
layerToExLayers.get(layer).setAttachType(new ExportedAnnotationLayerReference(layer.getAttachType().getName()));
}
if (layer.getAttachFeature() != null) {
layerToExLayers.get(layer).setAttachFeature(new ExportedAnnotationFeatureReference(layer.getAttachFeature()));
}
}
aExProject.setLayers(exLayers);
LOG.info("Exported [{}] layers for project [{}]", exLayers.size(), aRequest.getProject().getName());
}
use of de.tudarmstadt.ukp.clarin.webanno.export.model.ExportedAnnotationLayer in project webanno by webanno.
the class LayerExporter method importLayers.
/**
* Create a {@link TagSet} for the imported project,
*
* @param aProject
* a project.
* @param aExProject
* the settings.
* @throws IOException
* if an I/O error occurs.
*/
private void importLayers(Project aProject, ExportedProject aExProject) throws IOException {
// Round 1: layers and features
for (ExportedAnnotationLayer exLayer : aExProject.getLayers()) {
if (annotationService.existsLayer(exLayer.getName(), exLayer.getType(), aProject)) {
AnnotationLayer layer = annotationService.findLayer(aProject, exLayer.getName());
importLayer(layer, exLayer, aProject);
for (ExportedAnnotationFeature exfeature : exLayer.getFeatures()) {
if (annotationService.existsFeature(exfeature.getName(), layer)) {
AnnotationFeature feature = annotationService.getFeature(exfeature.getName(), layer);
importFeature(feature, exfeature, aProject);
continue;
}
AnnotationFeature feature = new AnnotationFeature();
feature.setLayer(layer);
importFeature(feature, exfeature, aProject);
}
} else {
AnnotationLayer layer = new AnnotationLayer();
importLayer(layer, exLayer, aProject);
for (ExportedAnnotationFeature exfeature : exLayer.getFeatures()) {
AnnotationFeature feature = new AnnotationFeature();
feature.setLayer(layer);
importFeature(feature, exfeature, aProject);
}
}
}
// Round 2: attach-layers, attach-features
for (ExportedAnnotationLayer exLayer : aExProject.getLayers()) {
if (exLayer.getAttachType() != null) {
AnnotationLayer layer = annotationService.findLayer(aProject, exLayer.getName());
AnnotationLayer attachLayer = annotationService.findLayer(aProject, exLayer.getAttachType().getName());
layer.setAttachType(attachLayer);
if (exLayer.getAttachFeature() != null) {
AnnotationFeature attachFeature = annotationService.getFeature(exLayer.getAttachFeature().getName(), attachLayer);
layer.setAttachFeature(attachFeature);
}
annotationService.createOrUpdateLayer(layer);
}
}
}
Aggregations