예제 #1
0
  /** 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());
  }
예제 #2
0
  /** 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());
  }
예제 #3
0
  /** 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);
  }
예제 #4
0
  /** 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);
  }
예제 #5
0
  /** @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);
  }
예제 #6
0
 @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;
 }
예제 #7
0
  /**
   * 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);
  }
예제 #8
0
  /** 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());
  }
예제 #9
0
  /** @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;
  }
예제 #10
0
  /** 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);
  }
예제 #11
0
  /** 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());
  }
예제 #12
0
  /** @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;
  }
예제 #13
0
  /** 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);
  }
예제 #14
0
  /** 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());
  }
예제 #15
0
  /** 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());
  }
예제 #16
0
  /** 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());
  }
예제 #17
0
  /** @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;
  }
예제 #18
0
  /** 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());
  }
예제 #19
0
 /**
  * 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());
 }
예제 #20
0
  /** 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());
  }
예제 #21
0
  /** 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());
  }