static XDIXRef fromComponents(String string, String xs, XDIArc XDIarc, XDIAddress partialSubject, XDIAddress partialPredicate, String iri, String literal) { if (xs == null) throw new ParserException("Invalid cross-reference: " + string); if (XDIarc == null && partialSubject == null && partialPredicate == null && iri == null && literal == null) throw new ParserException("Invalid cross-reference: " + string); if (XDIarc != null && (partialSubject != null || partialPredicate != null || iri != null || literal != null)) throw new ParserException("Invalid cross-reference: " + string); if (partialSubject != null && (XDIarc != null || partialPredicate == null || iri != null || literal != null)) throw new ParserException("Invalid cross-reference: " + string); if (partialPredicate != null && (XDIarc != null || partialSubject == null || iri != null || literal != null)) throw new ParserException("Invalid cross-reference: " + string); if (iri != null && (XDIarc != null || partialSubject != null || partialPredicate != null || literal != null)) throw new ParserException("Invalid cross-reference: " + string); if (literal != null && (XDIarc != null || partialSubject != null || partialPredicate != null || iri != null)) throw new ParserException("Invalid cross-reference: " + string); if (string == null) { StringBuffer buffer = new StringBuffer(); buffer.append(xs.charAt(0)); if (XDIarc != null) buffer.append(XDIarc.toString()); if (partialSubject != null && partialPredicate != null) buffer.append(partialSubject.toString() + "/" + partialPredicate.toString()); if (iri != null) buffer.append(iri); if (literal != null) buffer.append(literal); buffer.append(xs.charAt(1)); string = buffer.toString(); } return new XDIXRef(string, xs, XDIarc, partialSubject, partialPredicate, iri, literal); }