public static boolean hasXLink(AggregationGroup group) { List<AggregationGroupItem> items = group.items; for(int i = 0; i < items.size(); i++) { if(items.get(i).fieldDef.isXLinkField()) return true; } return false; }
public static boolean hasXLink(AggregationGroup group) { List<AggregationGroupItem> items = group.items; for(int i = 0; i < items.size(); i++) { if(items.get(i).fieldDef.isXLinkField()) return true; } return false; }
/** * Indicate if this XLINK field is inverse, i.e. its inverse is a direct XLink * @return True if this is a inverse XLINK field with junction field equal to _ID * @see #isXLinkField() * @see #getXLinkJunction() */ public boolean isXLinkInverse() { return isXLinkField() && CommonDefs.ID_FIELD.equals(getXLinkJunction()); }
private void verify() { for (FieldDefinition fieldDef : m_fieldDefMap.values()) { if (fieldDef.isXLinkField()) { verifyJunctionField(fieldDef); } } }
/** * Indicate if this XLINK field is direct, i.e. goes with junction field * @return True if this is a direct XLINK field with junction field defined. * @see #isXLinkField() * @see #getXLinkJunction() */ public boolean isXLinkDirect() { return isXLinkField() && !CommonDefs.ID_FIELD.equals(getXLinkJunction()); }
private void verify() { for (FieldDefinition fieldDef : m_fieldDefMap.values()) { if (fieldDef.isXLinkField()) { verifyJunctionField(fieldDef); } } }
/** * Indicate if this XLINK field is inverse, i.e. its inverse is a direct XLink * @return True if this is a inverse XLINK field with junction field equal to _ID * @see #isXLinkField() * @see #getXLinkJunction() */ public boolean isXLinkInverse() { return isXLinkField() && CommonDefs.ID_FIELD.equals(getXLinkJunction()); }
/** * Indicate if this XLINK field is direct, i.e. goes with junction field * @return True if this is a direct XLINK field with junction field defined. * @see #isXLinkField() * @see #getXLinkJunction() */ public boolean isXLinkDirect() { return isXLinkField() && !CommonDefs.ID_FIELD.equals(getXLinkJunction()); }
public void setupXLinkMetric(AggregationMetric metric) { if(metric.filter != null) context.setupXLinkQuery(metric.tableDef, metric.filter); List<AggregationGroupItem> items = metric.items; TableDefinition tableDef = metric.tableDef; if(items == null) return; for(int i = items.size() - 1; i >= 0; i--) { AggregationGroupItem item = items.get(i); if(item.query != null) context.setupXLinkQuery(item.tableDef, item.query); if(!item.fieldDef.isXLinkField()) continue; metric.items = new ArrayList<AggregationGroupItem>(); for(int j = i + 1; j < items.size(); j++) { metric.items.add(items.get(j)); } metric.tableDef = item.tableDef; XMetrics xmetrics = setup(item.fieldDef, metric, item.query); //XMetrics xmetrics = new XMetrics(); //if(item.fieldDef.isXLinkDirect()) setupDirect(xmetrics, item.fieldDef, metric, item.query); //else setupInverse(xmetrics, item.fieldDef, metric, item.query); item.xlinkContext = xmetrics; // restore the group and table definition metric.items = items; metric.tableDef = tableDef; } }
public void setupXLinkMetric(AggregationMetric metric) { if(metric.filter != null) context.setupXLinkQuery(metric.tableDef, metric.filter); List<AggregationGroupItem> items = metric.items; TableDefinition tableDef = metric.tableDef; if(items == null) return; for(int i = items.size() - 1; i >= 0; i--) { AggregationGroupItem item = items.get(i); if(item.query != null) context.setupXLinkQuery(item.tableDef, item.query); if(!item.fieldDef.isXLinkField()) continue; metric.items = new ArrayList<AggregationGroupItem>(); for(int j = i + 1; j < items.size(); j++) { metric.items.add(items.get(j)); } metric.tableDef = item.tableDef; XMetrics xmetrics = setup(item.fieldDef, metric, item.query); //XMetrics xmetrics = new XMetrics(); //if(item.fieldDef.isXLinkDirect()) setupDirect(xmetrics, item.fieldDef, metric, item.query); //else setupInverse(xmetrics, item.fieldDef, metric, item.query); item.xlinkContext = xmetrics; // restore the group and table definition metric.items = items; metric.tableDef = tableDef; } }
protected static boolean IsLink(ArrayList<String> path, TableDefinition tableDefinition) { TableDefinition tableDef = tableDefinition; for (int i = 0; i < path.size(); i++) { if (tableDef == null) return false; FieldDefinition fd = tableDef.getFieldDef(path.get(i)); if (fd == null) return false; //TODO check nested GROUP fields if (fd.isGroupField()) { ArrayList<FieldDefinition> result = GetNestedFieldDefinitions(fd); if (result != null) fd = result.get(0); } if (fd.isLinkField() || fd.isXLinkField()) { tableDef = tableDef.getLinkExtentTableDef(fd); } else { return false; } } return tableDef != null; }
protected static boolean IsLink(ArrayList<String> path, TableDefinition tableDefinition) { TableDefinition tableDef = tableDefinition; for (int i = 0; i < path.size(); i++) { if (tableDef == null) return false; FieldDefinition fd = tableDef.getFieldDef(path.get(i)); if (fd == null) return false; //TODO check nested GROUP fields if (fd.isGroupField()) { ArrayList<FieldDefinition> result = GetNestedFieldDefinitions(fd); if (result != null) fd = result.get(0); } if (fd.isLinkField() || fd.isXLinkField()) { tableDef = tableDef.getLinkExtentTableDef(fd); } else { return false; } } return tableDef != null; }
private static QueryFieldType GetQueryFieldType(FieldDefinition fd) { if (fd == null) return QueryFieldType.Unknown; if (fd.isGroupField()) return QueryFieldType.Group; if (fd.isLinkField()) return QueryFieldType.Link; if (fd.isXLinkField()) return QueryFieldType.Link; if (fd.isCollection()) return QueryFieldType.MultiValueScalar; if (fd.isScalarField()) return QueryFieldType.Field; return QueryFieldType.Unknown; }
private static QueryFieldType GetQueryFieldType(FieldDefinition fd) { if (fd == null) return QueryFieldType.Unknown; if (fd.isGroupField()) return QueryFieldType.Group; if (fd.isLinkField()) return QueryFieldType.Link; if (fd.isXLinkField()) return QueryFieldType.Link; if (fd.isCollection()) return QueryFieldType.MultiValueScalar; if (fd.isScalarField()) return QueryFieldType.Field; return QueryFieldType.Unknown; }
private void mergeField(FieldDefinition fieldDef) { if(fieldDef.getType() == FieldType.TEXT || fieldDef.getType() == FieldType.BINARY) { mergeTextField(fieldDef); } else if(fieldDef.isLinkField()) { mergeLinkField(fieldDef); } else if(NumSearcherMV.isNumericType(fieldDef.getType())) { mergeNumField(fieldDef); } else if(fieldDef.isGroupField() || fieldDef.isXLinkField()) { // do nothing } else throw new RuntimeException("Unsupported field type: " + fieldDef.getType()); }
private void mergeField(FieldDefinition fieldDef) { if(fieldDef.getType() == FieldType.TEXT || fieldDef.getType() == FieldType.BINARY) { mergeTextField(fieldDef); } else if(fieldDef.isLinkField()) { mergeLinkField(fieldDef); } else if(NumSearcherMV.isNumericType(fieldDef.getType())) { mergeNumField(fieldDef); } else if(fieldDef.isGroupField() || fieldDef.isXLinkField()) { // do nothing } else throw new RuntimeException("Unsupported field type: " + fieldDef.getType()); }
private void validateField(FieldDefinition fieldDef) { Utils.require(!fieldDef.isXLinkField(), "Xlink fields are not allowed in Spider applications"); // Validate scalar field analyzer. if (fieldDef.isScalarField()) { String analyzerName = fieldDef.getAnalyzerName(); if (Utils.isEmpty(analyzerName)) { analyzerName = FieldType.getDefaultAnalyzer(fieldDef.getType()); fieldDef.setAnalyzer(analyzerName); } FieldAnalyzer.verifyAnalyzer(fieldDef); } } // validateField
private void validateField(FieldDefinition fieldDef) { if (fieldDef.isScalarField()) { Utils.require(Utils.isEmpty(fieldDef.getAnalyzerName()), "'analyzer' not allowed for OLAPMono application fields:" + fieldDef); } else if (fieldDef.isXLinkField()) { Utils.require(false, "XLinks are not allowed for OLAPMono applications: " + fieldDef); } else if (fieldDef.isLinkField()) { Utils.require(!fieldDef.isSharded(), "Link fields cannot be sharded: {}", fieldDef); } } // validateField
private void validateField(FieldDefinition fieldDef) { if (fieldDef.isScalarField()) { Utils.require(Utils.isEmpty(fieldDef.getAnalyzerName()), "'analyzer' not allowed for OLAPMono application fields:" + fieldDef); } else if (fieldDef.isXLinkField()) { Utils.require(false, "XLinks are not allowed for OLAPMono applications: " + fieldDef); } else if (fieldDef.isLinkField()) { Utils.require(!fieldDef.isSharded(), "Link fields cannot be sharded: {}", fieldDef); } } // validateField
private void validateField(FieldDefinition fieldDef) { Utils.require(!fieldDef.isXLinkField(), "Xlink fields are not allowed in Spider applications"); // Validate scalar field analyzer. if (fieldDef.isScalarField()) { String analyzerName = fieldDef.getAnalyzerName(); if (Utils.isEmpty(analyzerName)) { analyzerName = FieldType.getDefaultAnalyzer(fieldDef.getType()); fieldDef.setAnalyzer(analyzerName); } FieldAnalyzer.verifyAnalyzer(fieldDef); } } // validateField