private static void addTerm(String property, String[] appliesTo, CsdlSchema schema) { CsdlTerm term = schema.getTerm(property); if ( term == null) { term = new CsdlTerm(); term.setName(property); term.setType("Edm.String"); schema.getTerms().add(term); } if (term.getAppliesTo().isEmpty() || !term.getAppliesTo().contains(appliesTo)) { for (int i = 0; i < appliesTo.length; i++) { term.getAppliesTo().add(appliesTo[i]); } } }
@Override public String getDefaultValue() { return term.getDefaultValue(); } }
private CsdlTerm readTerm(XMLEventReader reader, StartElement element) throws XMLStreamException { CsdlTerm term = new CsdlTerm(); term.setName(attr(element, "Name")); term.setType(attr(element, "Type")); term.setBaseTerm(attr(element, "BaseTerm")); term.setDefaultValue(attr(element, "DefaultValue")); term.setAppliesTo(Arrays.asList(appliesTo)); term.setNullable(Boolean.parseBoolean(attr(element, "Nullable"))); String maxLength = attr(element, "MaxLength"); if (maxLength != null) { term.setMaxLength(Integer.parseInt(maxLength)); term.setPrecision(Integer.parseInt(precision)); term.setScale(Integer.parseInt(scale)); term.setSrid(SRID.valueOf(srid));
@Override public List<TargetType> getAppliesTo() { if (appliesTo == null) { ArrayList<TargetType> localAppliesTo = new ArrayList<TargetType>(); for (String apply : term.getAppliesTo()) { try { localAppliesTo.add(TargetType.valueOf(apply)); } catch (IllegalArgumentException e) { throw new EdmException("Invalid AppliesTo value: " + apply, e); } } appliesTo = Collections.unmodifiableList(localAppliesTo); } return appliesTo; }
@Override public EdmTerm getBaseTerm() { if (baseTerm == null && term.getBaseTerm() != null) { baseTerm = edm.getTerm(new FullQualifiedName(term.getBaseTerm())); } return baseTerm; }
@Override public Integer getPrecision() { return term.getPrecision(); }
@Override public Integer getMaxLength() { return term.getMaxLength(); }
private CsdlTerm readTerm(XMLEventReader reader, StartElement element) throws XMLStreamException { CsdlTerm term = new CsdlTerm(); term.setName(attr(element, "Name")); term.setType(attr(element, "Type")); term.setBaseTerm(attr(element, "BaseTerm")); term.setDefaultValue(attr(element, "DefaultValue")); term.setAppliesTo(Arrays.asList(appliesTo)); term.setNullable(Boolean.parseBoolean(attr(element, "Nullable"))); String maxLength = attr(element, "MaxLength"); if (maxLength != null) { term.setMaxLength(Integer.parseInt(maxLength)); term.setPrecision(Integer.parseInt(precision)); term.setScale(Integer.parseInt(scale)); term.setSrid(SRID.valueOf(srid));
@Override public List<TargetType> getAppliesTo() { if (appliesTo == null) { ArrayList<TargetType> localAppliesTo = new ArrayList<TargetType>(); for (String apply : term.getAppliesTo()) { try { localAppliesTo.add(TargetType.valueOf(apply)); } catch (IllegalArgumentException e) { throw new EdmException("Invalid AppliesTo value: " + apply, e); } } appliesTo = Collections.unmodifiableList(localAppliesTo); } return appliesTo; }
@Override public EdmTerm getBaseTerm() { if (baseTerm == null && term.getBaseTerm() != null) { baseTerm = edm.getTerm(new FullQualifiedName(term.getBaseTerm())); } return baseTerm; }
@Override public Integer getPrecision() { return term.getPrecision(); }
@Override public Integer getMaxLength() { return term.getMaxLength(); }
@Override public String getDefaultValue() { return term.getDefaultValue(); } }
private void extractTerms() { for (Entry<String, CsdlSchema> schema : schemas.entrySet()) { Map<String, CsdlTerm> schemaTerms = new HashMap<>(); for (CsdlTerm term : schema.getValue().getTerms()) { schemaTerms.put(term.getName(), term); } terms.put(schema.getKey(), schemaTerms); } }
private Map<String, Map<String, CsdlTerm>> convertEDMX(Edmx edmx) { if (edmx != null && edmx.getDataService() != null) { Schema[] schemas = edmx.getDataService().getSchemas(); Map<String, Map<String, CsdlTerm>> edmSchemas = new HashMap<String, Map<String, CsdlTerm>>(schemas.length); for (Schema schema : schemas) { String namespace = schema.getNamespace(); Map<String, CsdlTerm> terms = new HashMap<String, CsdlTerm>(); for (CsdlTerm t : schema.getTerms()) { terms.put(t.getName(), t); } edmSchemas.put(namespace, terms); } return edmSchemas; } return null; } }
protected List<EdmTerm> createTerms() { final List<EdmTerm> edmTerms = new ArrayList<EdmTerm>(); final List<CsdlTerm> providerTerms = schema.getTerms(); if (providerTerms != null) { for (CsdlTerm term : providerTerms) { FullQualifiedName termName = new FullQualifiedName(namespace, term.getName()); EdmTermImpl termImpl = new EdmTermImpl(edm, getNamespace(), term); edmTerms.add(termImpl); edm.cacheTerm(termName, termImpl); } } return edmTerms; }
protected List<EdmTerm> createTerms() { final List<EdmTerm> edmTerms = new ArrayList<EdmTerm>(); final List<CsdlTerm> providerTerms = schema.getTerms(); if (providerTerms != null) { for (CsdlTerm term : providerTerms) { FullQualifiedName termName = new FullQualifiedName(namespace, term.getName()); EdmTermImpl termImpl = new EdmTermImpl(edm, getNamespace(), term); edmTerms.add(termImpl); edm.cacheTerm(termName, termImpl); } } return edmTerms; }
@Override public CsdlTerm getTerm(FullQualifiedName fqn) throws ODataException { CsdlSchema schema = getSchema(fqn.getNamespace()); if (schema != null) { List<CsdlTerm> terms = schema.getTerms(); if (terms != null) { for (CsdlTerm term : terms) { if (term.getName().equals(fqn.getName())) { return term; } } } } return null; }