use of mom.trd.opentheso.skosapi.SKOSLabel in project opentheso by miledrousset.
the class WritePdf method writeTerm.
/**
* ajoute un paragraphe qui decri le term dans le document PDF
*
* @param concept
* @param paragraphs
*/
private void writeTerm(SKOSResource concept, ArrayList<Paragraph> paragraphs, String langue, String langue2) {
String id = getIdFromUri(concept.getUri());
int altLabelCount = 0;
ArrayList<Integer> tradList = idToIsTrad.get(id);
if (tradList != null) {
for (int lab : tradList) {
if (lab == SKOSProperty.altLabel) {
altLabelCount++;
}
}
}
int altLabelWrite = 0;
for (SKOSLabel label : concept.getLabelsList()) {
if (label.getLanguage().equals(langue) || label.getLanguage().equals(langue2)) {
String labelValue;
boolean prefIsTrad = false;
boolean altIsTrad = false;
if (label.getLanguage().equals(langue)) {
labelValue = label.getLabel();
} else {
if (tradList != null) {
if (tradList.contains(SKOSProperty.prefLabel) && label.getProperty() == SKOSProperty.prefLabel) {
prefIsTrad = true;
}
if (tradList.contains(SKOSProperty.altLabel) && label.getProperty() == SKOSProperty.altLabel) {
if (altLabelCount > altLabelWrite) {
altIsTrad = true;
}
altLabelWrite++;
}
}
labelValue = "-";
}
if (label.getProperty() == SKOSProperty.prefLabel && !prefIsTrad) {
Chunk chunk = new Chunk(labelValue, termFont);
chunk.setLocalDestination(id);
paragraphs.add(new Paragraph(chunk));
} else if (label.getProperty() == SKOSProperty.altLabel && !altIsTrad) {
paragraphs.add(new Paragraph(" USE: " + labelValue, textFont));
}
}
}
paragraphs.add(new Paragraph(" ID: " + id, textFont));
for (SKOSRelation relation : concept.getRelationsList()) {
int prop = relation.getProperty();
String codeRelation;
switch(prop) {
case SKOSProperty.broader:
codeRelation = "BT";
break;
case SKOSProperty.narrower:
codeRelation = "NT";
break;
case SKOSProperty.related:
codeRelation = "RT";
break;
case SKOSProperty.relatedHasPart:
codeRelation = "RHP";
break;
case SKOSProperty.relatedPartOf:
codeRelation = "RPO";
break;
case SKOSProperty.narrowerGeneric:
codeRelation = "NTG";
break;
case SKOSProperty.narrowerInstantial:
codeRelation = "NTI";
break;
case SKOSProperty.narrowerPartitive:
codeRelation = "NTP";
break;
case SKOSProperty.broaderGeneric:
codeRelation = "BTG";
break;
case SKOSProperty.broaderInstantial:
codeRelation = "BTI";
break;
case SKOSProperty.broaderPartitive:
codeRelation = "BTP";
break;
default:
continue;
}
String key = getIdFromUri(relation.getTargetUri());
String targetName = idToNameHashMap.get(key);
if (targetName == null) {
targetName = key;
}
Chunk chunk = new Chunk(" " + codeRelation + ": " + targetName, relationFont);
chunk.setLocalGoto(getIdFromUri(relation.getTargetUri()));
paragraphs.add(new Paragraph(chunk));
}
for (SKOSDocumentation doc : concept.getDocumentationsList()) {
if (!doc.getLanguage().equals(langue) && !doc.getLanguage().equals(langue2)) {
continue;
}
int docCount = 0;
if (tradList != null) {
for (int lab : tradList) {
if (lab == SKOSProperty.note) {
docCount++;
}
}
}
int docWrite = 0;
int prop = doc.getProperty();
String docTypeName;
switch(prop) {
case SKOSProperty.definition:
docTypeName = "definition";
break;
case SKOSProperty.scopeNote:
docTypeName = "scopeNote";
break;
case SKOSProperty.example:
docTypeName = "example";
break;
case SKOSProperty.historyNote:
docTypeName = "historyNote";
break;
case SKOSProperty.editorialNote:
docTypeName = "editorialNote";
break;
case SKOSProperty.changeNote:
docTypeName = "changeNote";
break;
case SKOSProperty.note:
docTypeName = "note";
break;
default:
docTypeName = "note";
break;
}
String docText = "";
boolean docIsTrad = false;
if (doc.getLanguage().equals(langue)) {
docText = doc.getText();
} else {
if (tradList != null && tradList.contains(SKOSProperty.note)) {
if (docCount > docWrite) {
docIsTrad = true;
}
docWrite++;
}
}
if (!docIsTrad) {
paragraphs.add(new Paragraph(" " + docTypeName + ": " + docText, textFont));
}
}
for (SKOSMatch match : concept.getMatchList()) {
int prop = match.getProperty();
String matchTypeName = null;
switch(prop) {
case SKOSProperty.exactMatch:
matchTypeName = "exactMatch";
break;
case SKOSProperty.closeMatch:
matchTypeName = "closeMatch";
break;
case SKOSProperty.broadMatch:
matchTypeName = "broadMatch";
break;
case SKOSProperty.relatedMatch:
matchTypeName = "relatedMatch";
break;
case SKOSProperty.narrowMatch:
matchTypeName = "narrowMatch";
break;
}
paragraphs.add(new Paragraph(" " + matchTypeName + ": " + match.getValue(), textFont));
}
SKOSGPSCoordinates gps = concept.getGPSCoordinates();
String lat = gps.getLat();
String lon = gps.getLon();
if (lat != null && lon != null) {
paragraphs.add(new Paragraph(" lat: " + lat, textFont));
paragraphs.add(new Paragraph(" lat: " + lon, textFont));
}
}
Aggregations