Package com.esri.gpt.catalog.discovery

Examples of com.esri.gpt.catalog.discovery.PropertyMeaning


          LOGGER.finest(parser.toString());
        }
      }
    }
   
    PropertyMeaning meaning = context.getPropertyMeanings().get(sTargetField);
    if (intervals != null) {
      context.addStoreableValue(meaning,intervals);
    } else {
      context.addStoreableValue(meaning,"invalid");
    }
View Full Code Here


    if (esriTags != null) {
      String sWebsiteUrl = Val.chkStr(this.getFirstStoreableString(Meaning.MEANINGTYPE_WEBSITE_URL));
      if ((sWebsiteUrl == null) || (sWebsiteUrl.length() == 0)) {
        sWebsiteUrl = esriTags.getPrimaryOnlink();
        if ((sWebsiteUrl != null) && (sWebsiteUrl.length() > 0)) {
          PropertyMeaning meaning = this.getPropertyMeanings().get(Meaning.MEANINGTYPE_WEBSITE_URL);
          IStoreable storeable = this.getStoreables().get(Meaning.MEANINGTYPE_WEBSITE_URL);
          if ((meaning != null) && (storeable != null)) {
            storeable.setValue(sWebsiteUrl);
          } else if (meaning != null) {
            this.addStoreableValue(meaning,sWebsiteUrl);
          }
        }
      }
    }
   
    // ESRI tags: resource URL
    if (esriTags != null) {
      String sResourceUrl = Val.chkStr(this.getFirstStoreableString(Meaning.MEANINGTYPE_RESOURCE_URL));
      if ((sResourceUrl == null) || (sResourceUrl.length() == 0)) {
        ResourceIdentifier ri = ensureResourceIdentifier();
        sResourceUrl = esriTags.makeResourceUrl(ri);
        if ((sResourceUrl != null) && (sResourceUrl.length() > 0)) {
          PropertyMeaning meaning = this.getPropertyMeanings().get(Meaning.MEANINGTYPE_RESOURCE_URL);
          IStoreable storeable = this.getStoreables().get(Meaning.MEANINGTYPE_RESOURCE_URL);
          if ((meaning != null) && (storeable != null)) {
            storeable.setValue(sResourceUrl);
          } else if (meaning != null) {
            this.addStoreableValue(meaning,sResourceUrl);
          }
        }
      }
    }
   
    // try to determine the resource url
    String sResourceUrl = Val.chkStr(this.getFirstStoreableString(Meaning.MEANINGTYPE_RESOURCE_URL));
    if ((sResourceUrl == null) || (sResourceUrl.length() == 0)) {
      IStoreable storeable = this.getStoreables().get("resource.check.urls");
      if (storeable != null) {
        Object[] values = storeable.getValues();
        if ((values != null) && (values.length > 0)) {
          boolean resourceUrlResolved = false;
          ResourceIdentifier ri = ensureResourceIdentifier();
          for (Object value: values) {
            if ((value != null) && (value instanceof String)) {
              String sValue = Val.chkStr((String)value);
              if (sValue.length() > 0) {
                sValue = Val.chkStr(this.resolveResourceUrl(schema,dom,esriTags,sValue));
              }
              if (sValue.length() > 0) {
                String aimsct = Val.chkStr(ri.guessArcIMSContentTypeFromUrl(sValue));
                if (aimsct.length() > 0) {
                  String sResUrl = sValue;
                  PropertyMeaning meaning2 = this.getPropertyMeanings().get(Meaning.MEANINGTYPE_RESOURCE_URL);
                  IStoreable storeable2 = this.getStoreables().get(Meaning.MEANINGTYPE_RESOURCE_URL);
                  if ((meaning2 != null) && (storeable2 != null)) {
                    storeable2.setValue(sResUrl);
                  } else if (meaning2 != null) {
                    this.addStoreableValue(meaning2,sResUrl);
                  }
                  resourceUrlResolved = true;
                  break;
                }
              }
            }
          }
          if (!resourceUrlResolved) {
            // if no resource.url has been resolved - take a first non empty
            String sResUrl = null;
            for (Object value: values) {
              if ((value != null) && (value instanceof String)) {
                String sValue = Val.chkStr((String)value);
                if (sValue.length() > 0) {
                  sResUrl = sValue;
                  PropertyMeaning meaning2 = this.getPropertyMeanings().get(Meaning.MEANINGTYPE_RESOURCE_URL);
                  IStoreable storeable2 = this.getStoreables().get(Meaning.MEANINGTYPE_RESOURCE_URL);
                  if ((meaning2 != null) && (storeable2 != null)) {
                    storeable2.setValue(sResUrl);
                  } else if (meaning2 != null) {
                    this.addStoreableValue(meaning2,sResUrl);
                  }
                  break;
                }
              }
            }
          }
        }
      }
    }
       
    // classify the ArcIMS content type from the resource URL
    String aimsContentType = Val.chkStr(this.getFirstStoreableValue(Meaning.MEANINGTYPE_CONTENTTYPE));
    if (aimsContentType.length() > 0) {
      ResourceIdentifier ri = ensureResourceIdentifier();
      aimsContentType = Val.chkStr(ri.guessArcIMSContentTypeFromResourceType(aimsContentType));
    }
    if (aimsContentType.length() == 0) {
      PropertyMeaning meaning = this.getPropertyMeanings().get(Meaning.MEANINGTYPE_CONTENTTYPE);
      IStoreable storeable = this.getStoreables().get(Meaning.MEANINGTYPE_RESOURCE_URL);
      if ((meaning != null) && (storeable != null)) {
        Object[] values = storeable.getValues();
        if (values != null) {
          for (Object value: values) {
View Full Code Here

    String xpExpr = Val.chkStr(this.getXPathExpression());
    String xpType = Val.chkStr(this.getXPathType());
    boolean hasChildren = (this.getChildren() != null) && (this.getChildren().size() > 0);
   
    // determine the meaning
    PropertyMeaning meaning = null;
    if (mName.length() > 0) {
      meaning = context.getPropertyMeanings().get(mName);
      if (meaning == null) {
        Discoverable discoverable = context.getPropertyMeanings().getAllAliased().get(mName);
        if (discoverable != null) {
View Full Code Here

    String mName = Val.chkStr(this.getMeaningName());
    boolean hasChildren = (this.getChildren() != null) && (this.getChildren().size() > 0);
    List<String> values = this.getEvaluatedValues();
   
    // determine the meaning
    PropertyMeaning meaning = null;
    if (mName.length() > 0) {
      meaning = context.getPropertyMeanings().get(mName);
      if (meaning == null) {
        Discoverable discoverable = context.getPropertyMeanings().getAllAliased().get(mName);
        if (discoverable != null) {
          meaning = discoverable.getMeaning();
        } else {
          // TODO warn if the meaning is null
        }
      }
    }
   
    // handle geometries
    if ((meaning != null) && (meaning.getValueType() != null)) {
      if (meaning.getValueType().equals(PropertyValueType.GEOMETRY)) {
        if (hasChildren) {
          hasChildren = false;
          Envelope envelope = new Envelope();
          for (IndexableProperty child: this.getChildren()) {
            String mn = Val.chkStr(child.getMeaningName());
            String ev = Val.chkStr(child.getEvaluatedValue());
            if (ev.length() > 0) {
              if (mn.equalsIgnoreCase("envelope.west")) {
                envelope.setMinX(ev);
              } else if (mn.equalsIgnoreCase("envelope.south")) {
                envelope.setMinY(ev);
              } else if (mn.equalsIgnoreCase("envelope.east")) {
                envelope.setMaxX(ev);
              } else if (mn.equalsIgnoreCase("envelope.north")) {
                envelope.setMaxY(ev);
              } else if (mn.equalsIgnoreCase("envelope.lowerCorner")) {
                String[] pt = ev.split(" ");
                if (pt.length == 2) {
                  envelope.setMinX(pt[0]);
                  envelope.setMinY(pt[1]);
                }
              } else if (mn.equalsIgnoreCase("envelope.upperCorner")) {
                String[] pt = ev.split(" ");
                if (pt.length == 2) {
                  envelope.setMaxX(pt[0]);
                  envelope.setMaxY(pt[1]);
                }
              }
            }
          }
          if (!envelope.isEmpty()) {
            context.addStoreableValue(meaning,envelope);
          }
        }
        return;
      }
    }
   
    // ArcIMS content type
    if ((meaning != null) && (values != null) && (values.size() > 0)) {
      if (Val.chkStr(meaning.getName()).equalsIgnoreCase("contentType")) {
        ArrayList<String> al = new ArrayList<String>();
        boolean changed = false;
        ResourceIdentifier ri = context.ensureResourceIdentifier();
        for (String value: values) {
          String s = Val.chkStr(ri.guessArcIMSContentTypeFromResourceType(value));
          if ((s != null) && (s.length() > 0)) {
            al.add(s);
            changed = true;
          } else {
            // TODO: allow non-enumerated values?
            al.add(value);
          }
        }
        if (changed) {
          this.setEvaluatedValues(al);
          values = this.getEvaluatedValues();
        }
      }
    }
   
    // data themes (ISO MD_TopicCategoryCode)
    if ((meaning != null) && (values != null) && (values.size() > 0)) {
      if (Val.chkStr(meaning.getName()).equalsIgnoreCase("dataTheme")) {
        ArrayList<String> al = new ArrayList<String>();
        boolean changed = false;
        for (String value: values) {
          String s = EsriTags.DATA_THEME_CODES.get(value);
          if ((s != null) && (s.length() > 0)) {
View Full Code Here

   * @return query or <code>null</code> if query for the particular field is unavailable
   * @throws ParseException if error creating query
   */
  protected Query getFieldQuery(String field, String queryText, int slop) throws ParseException {
    Query q = null;
    PropertyMeaning meaning = resolveMeaning(field);
    if (meaning != null) {
      PropertyComparisonType type = meaning.getComparisonType();

      if (type == PropertyComparisonType.KEYWORD) {
        q = new TermQuery(new Term(field, Val.chkStr(queryText).toLowerCase()));
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.STRING) {
        q = new TermQuery(new Term(field, queryText));
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.LONG) {
        try {
          LongField lgField = new LongField(field);
          queryText = lgField.makeValueToQuery(queryText, false, false);
          q = new TermQuery(new Term(field, queryText));
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.DOUBLE) {
        try {
          DoubleField lgField = new DoubleField(field, DoubleField.DEFAULT_PRECISION);
          queryText = lgField.makeValueToQuery(queryText, false, false);
          q = new TermQuery(new Term(field, queryText));
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
        q = new TermQuery(new Term(field, queryText));
      }
     
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.TIMESTAMP) {
        try {
          if (isFullDate(queryText)) { // check if is this a full index date format?
            TimestampField tsField = new TimestampField(field);
            queryText = tsField.makeValueToQuery(queryText,true,false);
            q = new TermQuery(new Term(field,queryText));
          } else {
            q = (new TimestampField(field)).makeRangeQuery(queryText,queryText,true,true);
          }
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
      }
     
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.GEOMETRY) {
        try {
          // create locator
          Locator locator = Locator.newInstance();
          // find best candidate
          Locator.Candidate bestCandidate = locator.findBestCandidate(locator.find(queryText));
View Full Code Here

   * @return query or <code>null</code> if query for the particular field is unavailable
   * @throws ParseException if error creating query
   */
  protected Query getPrefixQuery(String field, String termStr) throws ParseException {
    Query q = null;
    PropertyMeaning meaning = resolveMeaning(field);
    if (meaning != null) {
      PropertyComparisonType type = meaning.getComparisonType();
     
      if (type == PropertyComparisonType.KEYWORD) {
        q = newPrefixQuery(field, Val.chkStr(termStr).toLowerCase());
      } else if (type == PropertyComparisonType.TERMS) {
        q = newPrefixQuery(field, Val.chkStr(termStr).toLowerCase());
View Full Code Here

   * @return query or <code>null</code> if query for the particular field is unavailable
   * @throws ParseException if error creating query
   */
  protected Query getRangeQuery(String field, String part1, String part2, boolean inclusive) throws ParseException {
    Query q = null;
    PropertyMeaning meaning = resolveMeaning(field);
    if (meaning != null) {
      PropertyComparisonType type = meaning.getComparisonType();

      if (type == PropertyComparisonType.KEYWORD) {
        q = newRangeQuery(field, Val.chkStr(part1).toLowerCase(), Val.chkStr(part2).toLowerCase(), inclusive);
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.STRING) {
        q = newRangeQuery(field, part1, part2, inclusive);
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.GEOMETRY) {
        try {
          // create query
          BooleanQuery rootQuery = new BooleanQuery();
          // create spatial
          SpatialClause spatialClause = createSpatialClause(meaning, inclusive);
          // parse and set bounding box
          parseEnvelope(spatialClause.getBoundingEnvelope(), part1, part2);
          // combine all together using spatial clause adapter
          SpatialClauseAdapter spatialClauseAdapter = new SpatialClauseAdapter(getLuceneQueryAdapter());
          spatialClauseAdapter.adaptSpatialClause(rootQuery, new LogicalClause.LogicalAnd(), spatialClause);
          // assign output
          q = rootQuery;
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.TIMEPERIOD) {
        try {
          q = this.makeTimeperiodQuery(meaning,part1,part2,inclusive);
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.TIMESTAMP) {
        try {
          q = (new TimestampField(field)).makeRangeQuery(part1,part2,inclusive,inclusive);
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.LONG) {
        String sLower = part1;
        String sUpper = part2;
        if (Val.chkStr(sLower).equals("*")) sLower= "";
        if (Val.chkStr(sUpper).equals("*")) sUpper= "";
        try {
          q = (new LongField(field)).makeRangeQuery(sLower,sUpper,inclusive,inclusive);
        } catch (DiscoveryException ex) {
          throw new ParseException("Error parsing expression: " + ex.getMessage());
        }
      }
      if (type == PropertyComparisonType.VALUE && meaning.getValueType() == PropertyValueType.DOUBLE) {
        String sLower = part1;
        String sUpper = part2;
        if (Val.chkStr(sLower).equals("*")) sLower= "";
        if (Val.chkStr(sUpper).equals("*")) sUpper= "";
        try {
View Full Code Here

   * @return query or <code>null</code> if query for the particular field is unavailable
   * @throws ParseException if error creating query
   */
  protected Query getWildcardQuery(String field, String termStr) throws ParseException {
    Query q = null;
    PropertyMeaning meaning = resolveMeaning(field);
    if (meaning != null) {
      PropertyComparisonType type = meaning.getComparisonType();

      if (type == PropertyComparisonType.KEYWORD) {
        q = new WildcardQuery(new Term(field, Val.chkStr(termStr).toLowerCase()));
      }
      if (type == PropertyComparisonType.VALUE) {
View Full Code Here

   * @return query or <code>null</code> if query for the particular field is unavailable
   * @throws ParseException if error creating query
   */
  protected Query getFuzzyQuery(String field, String termStr, float minSimilarity) throws ParseException {
    Query q = null;
    PropertyMeaning meaning = resolveMeaning(field);
    if (meaning != null) {
      PropertyComparisonType type = meaning.getComparisonType();

      if (type == PropertyComparisonType.KEYWORD) {
        q = new FuzzyQuery(new Term(field, Val.chkStr(termStr).toLowerCase()));
      }
      if (type == PropertyComparisonType.VALUE) {
View Full Code Here

   * Resolves meaning.
   * @param fieldName field name
   * @return meaning proxy
   */
  private PropertyMeaning resolveMeaning(String fieldName) {
    PropertyMeaning meaning = getMeanings().get(fieldName);
    if (meaning == null) {
      Discoverable discoverable = getMeanings().getAllAliased().get(fieldName);
      if (discoverable != null) {
        meaning = discoverable.getMeaning();
      }
View Full Code Here

TOP

Related Classes of com.esri.gpt.catalog.discovery.PropertyMeaning

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.