Java tutorial
/* * Copyright (c) 2013 The Finnish Board of Education - Opetushallitus * * This program is free software: Licensed under the EUPL, Version 1.1 or - as * soon as they will be approved by the European Commission - subsequent versions * of the EUPL (the "Licence"); * * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: http://www.osor.eu/eupl/ * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ package fi.vm.sade.organisaatio.service.util; import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import fi.vm.sade.organisaatio.model.Organisaatio; import fi.vm.sade.organisaatio.model.OrganisaatioNimi; import fi.vm.sade.organisaatio.service.search.SolrOrgFields; import java.util.Date; import java.util.List; import org.apache.commons.lang.time.DateUtils; import org.apache.solr.common.SolrInputDocument; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Add Organisaatio And Organisaatio Nimihistoria to SolrInputDocument so that it can be indexed. */ public abstract class OrganisaatioToSolrInputDocumentUtil extends SolrOrgFields { private static Logger LOG = LoggerFactory.getLogger("OrganisaatioToSolrInputDocumentUtil"); public static SolrInputDocument apply(Organisaatio org) { Preconditions.checkNotNull(org); SolrInputDocument doc = new SolrInputDocument(); add(doc, ALKUPVM, org.getAlkuPvm()); add(doc, LAKKAUTUSPVM, org.getLakkautusPvm()); add(doc, NIMIEN, org.getNimi().getString("en")); add(doc, NIMIFI, org.getNimi().getString("fi")); add(doc, NIMISV, org.getNimi().getString("sv")); // Listn organisaation nimihistoria hakuun addNimiHistoria(doc, NIMISEARCH, org.getNimet()); // Haku mahdollista mys y-tunnuksella if (org.getYtunnus() != null) { add(doc, NIMISEARCH, org.getYtunnus()); } // Haku mahdollista mys oppilaitoskoodilla if (org.getOppilaitosKoodi() != null) { add(doc, NIMISEARCH, org.getOppilaitosKoodi()); } add(doc, OID, org.getOid()); add(doc, OPPILAITOSKOODI, org.getOppilaitosKoodi()); add(doc, ALIORGANISAATIOIDEN_LKM, org.getChildCount(new Date())); for (String tyyppi : org.getTyypit()) { add(doc, ORGANISAATIOTYYPPI, tyyppi); } for (String kieli : org.getKielet()) { add(doc, KIELI, kieli); } add(doc, DOMAINNIMI, org.getDomainNimi()); add(doc, OPPILAITOSTYYPPI, org.getOppilaitosTyyppi()); final Organisaatio parent = org.getParent(); add(doc, PARENTOID, parent != null ? parent.getOid() : null); add(doc, YTUNNUS, org.getYtunnus()); add(doc, KUNTA, org.getKotipaikka()); do { add(doc, PATH, org.getOid()); org = org.getParent(); } while (org != null); return doc; } /** * Add field if value is not null */ private static void add(SolrInputDocument doc, String fieldName, Object value) { if (value != null) { doc.addField(fieldName, value); } } private static void addNimiHistoria(SolrInputDocument doc, String fieldName, List<OrganisaatioNimi> nimet) { if (nimet.isEmpty()) { LOG.warn("Nimihistoriassa ei nimi!"); } for (OrganisaatioNimi nimi : nimet) { LOG.debug( "Nimihistoria " + fieldName + ": " + Joiner.on(", ").join(nimi.getNimi().getValues().values())); // Listn nimi kaikilla kielill for (String nimiValue : nimi.getNimi().getValues().values()) { add(doc, fieldName, nimiValue); } } } }