Package org.takadb.editor.database.entities

Examples of org.takadb.editor.database.entities.ElementEntity$Glyph$Strokes


      Statement statement = conn.createStatement();

      // elements
      ResultSet rs = statement.executeQuery ("SELECT * FROM elements");
      while (rs.next()) {
        ElementEntity element = new ElementEntity (
            rs.getInt ("element_id"),
            rs.getString ("pattern"),
            new int[] { rs.getInt ("p1_element_id"),
                        rs.getInt ("p2_element_id"),
                        rs.getInt ("p3_element_id"),
                        rs.getInt ("p4_element_id") }
        );
        allElements.put (new Integer (element.elementId), element);
      }

      // element_glyphs
      rs = statement.executeQuery ("SELECT * FROM element_glyphs");
     
      while (rs.next()) {

        Integer elementId = new Integer (rs.getInt ("element_id"));
        Integer glyphVariant = new Integer (rs.getInt ("glyph_variant"));

        String strokes = rs.getString ("strokes");
        // FIXME bodge - fix in database
        if ((strokes.length() > 0) && (strokes.charAt (strokes.length() - 1) != '\n'))
          strokes += "\n";
        Glyph glyph = new Glyph (
            rs.getInt ("width"),
            rs.getInt ("height"),
            new int[] { rs.getInt ("p1_glyph_variant"),
                        rs.getInt ("p2_glyph_variant"),
                        rs.getInt ("p3_glyph_variant"),
                        rs.getInt ("p4_glyph_variant") },
            new int[] { rs.getInt ("p1_x"),
                        rs.getInt ("p2_x"),
                        rs.getInt ("p3_x"),
                        rs.getInt ("p4_x") },
            new int[] { rs.getInt ("p1_y"),
                        rs.getInt ("p2_y"),
                        rs.getInt ("p3_y"),
                        rs.getInt ("p4_y") },
            new int[] { rs.getInt ("p1_width"),
                        rs.getInt ("p2_width"),
                        rs.getInt ("p3_width"),
                        rs.getInt ("p4_width") },
            new int[] { rs.getInt ("p1_height"),
                        rs.getInt ("p2_height"),
                        rs.getInt ("p3_height"),
                        rs.getInt ("p4_height") },
                        strokes,
                        rs.getInt ("centrepoint")
        );
        ElementEntity element = (ElementEntity)allElements.get (elementId);
        element.glyphs.set (glyphVariant, glyph);
      }
    } catch (SQLException s) {
      System.out.println (s);
      Runtime.getRuntime().halt(1);
View Full Code Here


    elementShallowXref.clear();

    // Create a shallow cross-reference of contained element => immediately containing elements
    Iterator iter = elements.values().iterator();
    while (iter.hasNext()) {
      ElementEntity iterElement = (ElementEntity)iter.next();

      for (int i = 0; i < 4; i++) {
        Integer containedId = new Integer (iterElement.pElementId[i]);
        if (iterElement.pElementId[i] != 0) {
          HashSet containsSet = (HashSet)elementShallowXref.get (containedId);
View Full Code Here

    HashMap intermediateMap = new HashMap();

    // Fill intermediate map and prime results map with stroke counts of stand-alone glyphs
    Iterator iter = elements.values().iterator();
    while (iter.hasNext()) {
      ElementEntity element = (ElementEntity)iter.next();
      for (int i = 1; i <= element.glyphs.size(); i++) {
        ElementEntity.Glyph glyph = element.glyphs.get (new Integer (i));
        existsSet.add ("" + element.elementId + "-" + i);
        if (glyph.standalone) {
          resultsMap.put ("" + element.elementId + "-" + i, new Integer (glyph.strokes.size()));
        } else {
          ArrayList containsList = new ArrayList();
          for (int j = 0; j < 4; j++) {
            if (element.pElementId[j] != 0) {
              containsList.add ("" + element.pElementId[j] + "-" + glyph.pGlyphVariant[j]);
            }
          }
          intermediateMap.put ("" + element.elementId + "-" + i, containsList);
        }
      }
    }

    // Iterate over intermediate map until all results known
    // In theory this is nasty, in practice it only needs about 3 iterations
    do {
      Iterator iter2 = ((HashMap)intermediateMap.clone()).keySet().iterator();

      while (iter2.hasNext()) {
        String elementGlyph = (String)iter2.next();
        ArrayList elementGlyphSubElements = (ArrayList)intermediateMap.get (elementGlyph);

        boolean complete = true;
        int count = 0;
        Iterator iter3 = elementGlyphSubElements.iterator();
        while (iter3.hasNext()) {
          String containedElementGlyph = (String)iter3.next();
          Integer containedCount = (Integer)resultsMap.get (containedElementGlyph);
          if (containedCount != null) {
            count += containedCount.intValue();
          } else {
            // Fallback in case of dangling references
            if (existsSet.contains (containedElementGlyph)) {
              complete = false;
            } else {
              System.err.println ("recalculateAllElementStrokeCounts(): Dangling reference to " + containedElementGlyph + " in " + elementGlyph);
            }
          }
        }
        if (complete) {
          resultsMap.put (elementGlyph, new Integer (count));
          intermediateMap.remove (elementGlyph);
        }
      }

    } while (intermediateMap.size() > 0);

    // Update all stroke counts
    Iterator iter4 = resultsMap.keySet().iterator();
    while (iter4.hasNext()) {
      String elementGlyph = (String)iter4.next();
      int strokeCount = ((Integer)resultsMap.get (elementGlyph)).intValue();
      String[] parts = elementGlyph.split ("-");
      Integer elementId = new Integer (parts[0]);
      Integer glyphVariant = new Integer (parts[1]);
      ElementEntity element = (ElementEntity)elements.get (elementId);
      ElementEntity.Glyph glyph = element.glyphs.get (glyphVariant);
      glyph.strokeCount = strokeCount;
      element.glyphs.set (glyphVariant, glyph);
    }
View Full Code Here

  /*
   * Retrieve a clone of a DBSQLElement from the local database
   */
  public ElementEntity getElement (ElementEntity.Identifier identifier) {

    ElementEntity element = (ElementEntity)elements.get (new Integer (identifier.elementId));

    if (element != null)
      return (ElementEntity)element.clone();
    return null;

  }
View Full Code Here

    ArrayList allElementsList = new ArrayList();
    iter = elements.keySet().iterator();
    while (iter.hasNext()) {
      Integer iterElementId = (Integer)iter.next();
      ElementEntity element = (ElementEntity)elements.get (iterElementId);
      allElementsList.add (element.clone());
    }

    return allElementsList;

  }
View Full Code Here

    Iterator iter;
   
    iter = allElementsList.iterator();
    while (iter.hasNext()) {
      ElementEntity element = (ElementEntity)iter.next();
      // Don't use setElement() for this or nasty slow things will happen with the element cross-reference
      elements.put (new Integer (element.elementId), element);
    }
    recalculateAllElementContains();
    recalculateAllElementStrokeCounts();
View Full Code Here

   */
  public int newElement() {
    // find the current biggest elementID
    int lMaxID = getMaxElementId();
    lMaxID++;
    ElementEntity lNewEmptyElement = new ElementEntity(lMaxID);
    elements.put(new Integer(lMaxID), lNewEmptyElement);
    return lMaxID;
  }
View Full Code Here

   * @param identifier
   * @return
   */
  public int cloneElement(DBIdentifier iId) {
    int lId = getMaxElementId()+1;
    ElementEntity lElementToClone = getElement((Identifier) iId);
    ElementEntity lNewElement = (ElementEntity) lElementToClone.clone();
    lNewElement.elementId =  lId;
    //don't use setElement as it makes a clone
    elements.put(new Integer(lId), lNewElement);
    return lId;
  }
View Full Code Here

        }
    );
    lElementsSorted.addAll(lElements);
    for (int lCurElemIdx = 0; lCurElemIdx < lNbElem; lCurElemIdx++)
    {
      ElementEntity lCurElem = (ElementEntity) lElements.get(lCurElemIdx);
      int lNbVariant = lCurElem.glyphs.size();
      for (int lCurVarIdx = 1; lCurVarIdx <= lNbVariant; lCurVarIdx++)
      {
       
       
View Full Code Here

    HashSet results = new HashSet();

    Iterator iter = dbcontroller.elements.values().iterator();
    while (iter.hasNext()) {
      ElementEntity searchElement = (ElementEntity)iter.next();
      if (searchElementsImpl (dbcontroller.elements, searchElement, node) == true) {
        results.add (new Integer (searchElement.elementId));
      }
    }
View Full Code Here

TOP

Related Classes of org.takadb.editor.database.entities.ElementEntity$Glyph$Strokes

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.