/** Test for ordinates to point function in alignment5 */ @Test public void testOrdinatesToPoint1() { Collection<? extends Cell> cells = alignment5.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.geometric.ordinates_to_point")) { cell = temp; break; } } ListMultimap<String, ? extends Entity> src = cell.getSource(); // the parameters were moved to the source entities with the appropriate // names so get the source entities with name "X"/"Y" Entity srcX = src.get("X").get(0); Entity srcY = src.get("Y").get(0); // check if the source entity has the correct value assertEquals("HOCHWERT", srcX.getDefinition().getDefinition().getDisplayName()); assertEquals("RECHTSWERT", srcY.getDefinition().getDefinition().getDisplayName()); }
/** Test for formatted string function in alignment5 */ @Test public void testFormattedString3() { Collection<? extends Cell> cells = alignment5.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier().equals("eu.esdihumboldt.hale.align.formattedstring")) { cell = temp; break; } } assertNotNull(cell); ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("pattern"); assertEquals(1, values.size()); // size is 1 assertEquals("{Grundbuch}:{Nummer}:{Einlage}", values.get(0).getValue()); }
/** Test for date extraction function in alignment */ @Test public void testDateExtraction() { Collection<? extends Cell> cells = alignment.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.string.dateextraction")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("dateFormat"); assertEquals(1, values.size()); String date = values.get(0).as(String.class); assertEquals("yyyy-MM-dd HH:mm:ss", date); }
/** Test for network expansion function in alignment4 */ @Test public void testNetworkExpansion1() { Collection<? extends Cell> cells = alignment4.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.geometric.networkexpansion")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("bufferWidth"); assertEquals(1, values.size()); // size is always 1 String temp = values.get(0).as(String.class); assertEquals("0.005", temp); }
/** @see LabelProvider#getImage(Object) */ @Override public Image getImage(Object element) { if (element instanceof IStructuredSelection) { element = ((IStructuredSelection) element).getFirstElement(); } element = TransformationTreeUtil.extractObject(element); if (element instanceof Entity) { element = ((Entity) element).getDefinition(); } if (element instanceof EntityDefinition || element instanceof Definition<?>) { return definitionLabels.getImage(element); } if (element instanceof Cell) { Cell cell = (Cell) element; AbstractFunction<?> function = FunctionUtil.getFunction(cell.getTransformationIdentifier()); if (function != null) { element = function; } } if (element instanceof Function) { return functionLabels.getImage(element); } return super.getImage(element); }
@Override public Collection<? extends Cell> getActiveTypeCells() { List<Cell> result = new ArrayList<Cell>(); for (Cell cell : getTypeCells()) { if (cell.getTransformationMode() == TransformationMode.active) { result.add(cell); } } return result; }
/** * Add a cell to the various internal containers. * * @param cell the cell to add */ private void internalAdd(Cell cell) { cells.add(cell); idToCell.put(cell.getId(), cell); // check if cell is a type cell if (AlignmentUtil.isTypeCell(cell)) { typeCells.add(cell); } // add to maps internalAddToMaps(cell.getSource(), cell); internalAddToMaps(cell.getTarget(), cell); }
/** Test for assign function in alignment2 */ @Test @Ignore // because now NilReasonFunction also produces assign cells public void testAssign2() { Collection<? extends Cell> cells = alignment2.getCells(); Iterator<? extends Cell> it = cells.iterator(); List<Cell> assignCells = new ArrayList<Cell>(); while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier().equals("eu.esdihumboldt.hale.align.assign")) { assignCells.add(temp); } } // test all cells that have an assign function for (int i = 0; i < assignCells.size(); i++) { Cell cell = assignCells.get(i); ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("value"); assertEquals(1, values.size()); // size is always 1 String temp = values.get(0).as(String.class); // test cell #1 if (i == 0) { assertEquals("manMade", temp); } // test cell #2 if (i == 1) { assertEquals("false", temp); } // test cell #3 if (i == 2) { assertEquals("2009-12-23 12:13:14", temp); } // test cell #4 if (i == 3) { assertEquals("m", temp); } } // check if all cells with an assign function were tested assertEquals(4, assignCells.size()); }
/** @see MutableAlignment#removeCell(Cell) */ @Override public boolean removeCell(Cell cell) { boolean removed = cells.remove(cell); if (removed) { typeCells.remove(cell); idToCell.remove(cell.getId()); // remove from maps internalRemoveFromMaps(cell.getSource(), cell); internalRemoveFromMaps(cell.getTarget(), cell); } return removed; }
/** Test for mathematical expression in alignment */ @Test public void testMathematicalExpression() { Collection<? extends Cell> cells = alignment.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.numeric.mathexpression")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("expression"); // test the amount and the correctness of the parameter assertEquals(1, values.size()); String date = values.get(0).as(String.class); assertEquals("income * age/10", date); // test the amount and the correctness of source properties ListMultimap<String, ? extends Entity> src = cell.getSource(); // all source properties should be named "var" so we test if both lists // have the same size List<? extends Entity> srcCells = src.get("var"); assertEquals(2, src.size()); assertEquals(2, srcCells.size()); // since we have now the right amount of source properties we can now // test the correctness of their names Entity srcCell1 = srcCells.get(0); Entity srcCell2 = srcCells.get(1); String name1 = srcCell1.getDefinition().getDefinition().getDisplayName(); String name2 = srcCell2.getDefinition().getDefinition().getDisplayName(); assertEquals("age", name1); assertEquals("income", name2); }
/** test for the inspire identifier function in alignment5 */ @Test public void testIdentifier() { Collection<? extends Cell> cells = alignment5.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.inspire.identifier")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> country = params.get("countryName"); List<ParameterValue> provider = params.get("providerName"); List<ParameterValue> product = params.get("productName"); List<ParameterValue> version = params.get("version"); List<ParameterValue> versionNilReason = params.get("versionNilReason"); // check if all parameters were set once assertEquals(1, country.size()); assertEquals(1, provider.size()); assertEquals(1, product.size()); assertEquals(1, version.size()); assertEquals(1, versionNilReason.size()); // now test if they have correct values assertEquals("at", country.get(0).getValue()); assertEquals("BEV", provider.get(0).getValue()); assertEquals("humboldt-sample-transformed-data-CadastralParcels", product.get(0).getValue()); assertEquals("", version.get(0).getValue()); assertEquals("unknown", versionNilReason.get(0).getValue()); // check if all parameters were tested assertEquals(5, params.size()); }
/** @see Alignment#getTypeCells(Cell) */ @Override public Collection<? extends Cell> getTypeCells(Cell queryCell) { Set<TypeEntityDefinition> sources = new HashSet<TypeEntityDefinition>(); if (queryCell.getSource() != null) { Iterator<? extends Entity> it = queryCell.getSource().values().iterator(); while (it.hasNext()) sources.add(AlignmentUtil.getTypeEntity(it.next().getDefinition())); } Entity targetEntity = CellUtil.getFirstEntity(queryCell.getTarget()); TypeDefinition target = targetEntity == null ? null : targetEntity.getDefinition().getType(); if (sources.isEmpty() && target == null) return getTypeCells(); List<Cell> result = new ArrayList<Cell>(); for (Cell typeCell : typeCells) { TypeDefinition typeCellTarget = CellUtil.getFirstEntity(typeCell.getTarget()).getDefinition().getType(); if (target == null || DefinitionUtil.isSuperType(target, typeCellTarget)) { // target matches if (sources.isEmpty() || matchesSources(typeCell.getSource(), sources)) { // source matches, too result.add(typeCell); } } } return result; }
/** Test for centroid function in alignment3 */ @Test public void testCentroid1() { Collection<? extends Cell> cells = alignment5.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.geometric.centroid")) { cell = temp; break; } } // test if there is only one source and one target assertEquals(1, cell.getSource().size()); assertEquals(1, cell.getTarget().size()); List<? extends Entity> list = cell.getTarget().get(null); assertEquals(1, list.size()); Entity ent = list.get(0); String name = ent.getDefinition().getDefinition().getDisplayName(); assertEquals("referencePoint", name); }
/** Test for network expansion function in alignment5 */ @Test public void testNetworkExpansion2() { Collection<? extends Cell> cells = alignment5.getCells(); Iterator<? extends Cell> it = cells.iterator(); List<Cell> networkCells = new ArrayList<Cell>(); while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.geometric.networkexpansion")) { networkCells.add(temp); } } for (int i = 0; i < networkCells.size(); i++) { Cell cell = networkCells.get(i); ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("bufferWidth"); String temp = values.get(0).as(String.class); if (i == 0) { assertEquals("50", temp); } if (i == 1) { assertEquals("5", temp); } } // check if all cells were tested assertEquals(2, networkCells.size()); }
/** Test for formatted string translation in aligment */ @Test public void testFormattedString1() { Collection<? extends Cell> cells = alignment.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier().equals("eu.esdihumboldt.hale.align.formattedstring")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("pattern"); assertEquals(1, values.size()); // size is 1, so "get(0)" works fine assertEquals("{id}-xxx-{details.address.street}", values.get(0).getValue()); }
/** Test for classification mapping function in alignment2 */ @Test public void testClassificationMapping1() { Collection<? extends Cell> cells = alignment2.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier().equals("eu.esdihumboldt.hale.align.classification")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("classificationMapping"); for (int i = 0; i < values.size(); i++) { String temp = values.get(i).as(String.class); if (i == 0) { assertEquals("onGroundSurface 3", temp); } if (i == 1) { assertEquals("suspendedOrElevated 2", temp); } if (i == 2) { assertEquals("underground 1", temp); } } // check if all values were tested assertEquals(3, values.size()); }
/** @see Alignment#getPropertyCells(Cell, boolean, boolean) */ @Override public Collection<? extends Cell> getPropertyCells( Cell typeCell, boolean includeDisabled, boolean ignoreEmptySource) { if (CellUtil.getFirstEntity(typeCell.getTarget()) == null) { if (CellUtil.getFirstEntity(typeCell.getSource()) == null) return Collections.emptySet(); else if (!(typeCell.getSource().values().iterator().next() instanceof Type)) throw new IllegalArgumentException("Given cell is not a type cell."); // query with sources only Collection<TypeEntityDefinition> sourceTypes = new ArrayList<TypeEntityDefinition>(); Iterator<? extends Entity> it = typeCell.getSource().values().iterator(); while (it.hasNext()) sourceTypes.add((TypeEntityDefinition) it.next().getDefinition()); List<Cell> result = new ArrayList<Cell>(); for (Cell cell : cells) if (!AlignmentUtil.isTypeCell(cell) && matchesSources(cell.getSource(), sourceTypes)) result.add(cell); return result; } if (!AlignmentUtil.isTypeCell(typeCell)) throw new IllegalArgumentException("Given cell is not a type cell."); List<Cell> result = new ArrayList<Cell>(); TypeDefinition typeCellType = typeCell.getTarget().values().iterator().next().getDefinition().getType(); // collect source entity definitions Collection<TypeEntityDefinition> sourceTypes = new ArrayList<TypeEntityDefinition>(); // null check in case only target type is in question if (typeCell.getSource() != null) { Iterator<? extends Entity> it = typeCell.getSource().values().iterator(); while (it.hasNext()) sourceTypes.add((TypeEntityDefinition) it.next().getDefinition()); } while (typeCellType != null) { // select all cells of the target type for (Cell cell : cellsPerTargetType.get(typeCellType)) { // check all cells associated to the target type if (!AlignmentUtil.isTypeCell(cell) && (includeDisabled || !cell.getDisabledFor().contains(typeCell.getId()))) { // cell is a property cell that isn't disabled // the target type matches, too if (AlignmentUtil.isAugmentation(cell) || (ignoreEmptySource && sourceTypes.isEmpty()) || matchesSources(cell.getSource(), sourceTypes)) { // cell matches on the source side, too result.add(cell); } } } // continue with super type for inheritance typeCellType = typeCellType.getSuperType(); } return result; }
/** test for the inspire geographical name function in alignment6 */ @Test public void testGeographicalName1() { Collection<? extends Cell> cells = alignment6.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.inspire.geographicalname")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> gender = params.get("grammaticalGender"); List<ParameterValue> number = params.get("grammaticalNumber"); List<ParameterValue> lang = params.get("language"); List<ParameterValue> nameStatus = params.get("nameStatus"); List<ParameterValue> nativeness = params.get("nativeness"); List<ParameterValue> ipa = params.get("pronunciationIPA"); List<ParameterValue> sound = params.get("pronunciationSoundLink"); List<ParameterValue> source = params.get("sourceOfName"); List<ParameterValue> script = params.get("script"); List<ParameterValue> text = params.get("text"); List<ParameterValue> trans = params.get("transliterationScheme"); // test if all parameters were set only once assertEquals(1, gender.size()); assertEquals(1, number.size()); assertEquals(1, lang.size()); assertEquals(1, nameStatus.size()); assertEquals(1, nativeness.size()); assertEquals(1, ipa.size()); // sound shouldn't be available because in older version we couldn't // enter a value assertEquals(0, sound.size()); assertEquals(1, source.size()); assertEquals(1, script.size()); assertEquals(1, text.size()); assertEquals(1, trans.size()); // now test if they have the correct values assertEquals("common", gender.get(0).getValue()); assertEquals("dual", number.get(0).getValue()); assertEquals("deu", lang.get(0).getValue()); assertEquals("historical", nameStatus.get(0).getValue()); assertEquals("exonym", nativeness.get(0).getValue()); assertEquals("IDipa", ipa.get(0).getValue()); assertEquals("source", source.get(0).getValue()); assertEquals("IDscript", script.get(0).getValue()); assertEquals("identifier", text.get(0).getValue()); assertEquals("IDtrans", trans.get(0).getValue()); // check if all parameters were tested (size is 10 because "sound" is // not defined in params) assertEquals(10, params.size()); }
/** * Returns a function context for the function of the specified cell. Convenience method for * <code>getFunctionContext(cell.getTransformationIdentifier())</code>. * * <p>When invoking multiple operations on the context map, make sure to use synchronization if * appropriate. * * @param cell the cell for which to acquire a function context * @return the function context associated with the given cell */ public Map<Object, Object> getFunctionContext(Cell cell) { return getFunctionContext(cell.getTransformationIdentifier()); }
/** test for the inspire geographical name function in alignment7 */ @Test public void testGeographicalName2() { Collection<? extends Cell> cells = alignment7.getCells(); Iterator<? extends Cell> it = cells.iterator(); Cell cell = null; while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier() .equals("eu.esdihumboldt.cst.functions.inspire.geographicalname")) { cell = temp; break; } } ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> gender = params.get("grammaticalGender"); List<ParameterValue> number = params.get("grammaticalNumber"); List<ParameterValue> lang = params.get("language"); List<ParameterValue> nameStatus = params.get("nameStatus"); List<ParameterValue> nativeness = params.get("nativeness"); List<ParameterValue> ipa = params.get("pronunciationIPA"); List<ParameterValue> sound = params.get("pronunciationSoundLink"); List<ParameterValue> source = params.get("sourceOfName"); List<ParameterValue> script = params.get("script"); List<ParameterValue> text = params.get("text"); List<ParameterValue> trans = params.get("transliterationScheme"); // test if all parameters (except the parameters for the spellings) were // set only once assertEquals(1, gender.size()); assertEquals(1, number.size()); assertEquals(1, lang.size()); assertEquals(1, nameStatus.size()); assertEquals(1, nativeness.size()); assertEquals(1, ipa.size()); // sound shouldn't be available because in older version we couldn't // enter a value assertEquals(0, sound.size()); assertEquals(1, source.size()); // spelling parameters assertEquals(2, script.size()); assertEquals(2, text.size()); assertEquals(2, trans.size()); // now test if they have the correct values assertEquals("", gender.get(0).getValue()); assertEquals("", number.get(0).getValue()); assertEquals("esp", lang.get(0).getValue()); assertEquals("official", nameStatus.get(0).getValue()); assertEquals("endonym", nativeness.get(0).getValue()); assertEquals("", ipa.get(0).getValue()); assertEquals("unknown", source.get(0).getValue()); for (int i = 0; i < text.size(); i++) { String spellText = text.get(i).as(String.class); String spellScript = script.get(i).as(String.class); String spellTrans = trans.get(i).as(String.class); if (i == 0) { assertEquals("identifier", spellText); assertEquals("idScript", spellScript); // no value set, initial value is "null" assertEquals(null, spellTrans); } if (i == 1) { assertEquals("name", spellText); // initial value is "eng", that was removed so we expect an // empty string assertEquals("", spellScript); assertEquals("nameTrans", spellTrans); } } // check if all parameters were tested (size is 13 because "sound" is // not defined in params and there are 2 spellings this time and 1 // spelling has 3 parameters -> +3 parameters) assertEquals(13, params.size()); }
/** Test for classification mapping function in alignment4 */ @Test public void testClassificationMapping2() { Collection<? extends Cell> cells = alignment4.getCells(); Iterator<? extends Cell> it = cells.iterator(); List<Cell> classMapCells = new ArrayList<Cell>(); while (it.hasNext()) { Cell temp = it.next(); if (temp.getTransformationIdentifier().equals("eu.esdihumboldt.hale.align.classification")) { classMapCells.add(temp); } } // test all cells that have a classification mapping function for (int i = 0; i < classMapCells.size(); i++) { Cell cell = classMapCells.get(i); ListMultimap<String, ParameterValue> params = cell.getTransformationParameters(); List<ParameterValue> values = params.get("classificationMapping"); // each cell can have more than one value, so iterate through them // for each cell too for (int j = 0; j < values.size(); j++) { String temp = values.get(j).as(String.class); // "i" is the index for the cell number // "j" stands for the indices of the values per cell // test cell #1 if (i == 0 && j == 0) { assertEquals("underConstruction 5", temp); } // test cell #2 if (i == 1 && j == 0) { assertEquals("manMade 4", temp); } if (i == 1 && j == 1) { assertEquals("natural 5", temp); } // test cell #3 if (i == 2 && j == 0) { assertEquals("intermittent 6", temp); } if (i == 2 && j == 1) { assertEquals("perennial 8", temp); } // test cell #4 if (i == 3 && j == 0) { assertEquals("false 1", temp); } if (i == 3 && j == 1) { assertEquals("true 2", temp); } } } // check if all cells with a classification mapping function were tested assertEquals(4, classMapCells.size()); }