uk.gov.nationalarchives.discovery.taxonomy.common.repository.lucene.tools.LuceneTaxonomyMapper.java Source code

Java tutorial

Introduction

Here is the source code for uk.gov.nationalarchives.discovery.taxonomy.common.repository.lucene.tools.LuceneTaxonomyMapper.java

Source

/** 
 * Copyright (c) 2015, The National Archives
 * http://www.nationalarchives.gov.uk 
 * 
 * This Source Code Form is subject to the terms of the Mozilla Public 
 * License, v. 2.0. If a copy of the MPL was not distributed with this 
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */
package uk.gov.nationalarchives.discovery.taxonomy.common.repository.lucene.tools;

import java.util.Arrays;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.IntField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.springframework.util.StringUtils;

import uk.gov.nationalarchives.discovery.taxonomy.common.domain.repository.TrainingDocument;
import uk.gov.nationalarchives.discovery.taxonomy.common.domain.repository.lucene.InformationAssetView;
import uk.gov.nationalarchives.discovery.taxonomy.common.domain.repository.lucene.InformationAssetViewFields;
import uk.gov.nationalarchives.discovery.taxonomy.common.domain.repository.mongo.TestDocument;

public class LuceneTaxonomyMapper {
    /**
     * Convert a lucene document from a search to InformationAssetView object
     * 
     * @param document
     * @return
     */
    public static InformationAssetView getIAViewFromLuceneDocument(Document document) {
        InformationAssetView assetView = new InformationAssetView();
        assetView.setDOCREFERENCE(document.get(InformationAssetViewFields.DOCREFERENCE.toString()));
        assetView.setTITLE(document.get(InformationAssetViewFields.TITLE.toString()));
        assetView.setDESCRIPTION(document.get(InformationAssetViewFields.DESCRIPTION.toString()));
        assetView.setCATDOCREF(document.get(InformationAssetViewFields.CATDOCREF.toString()));
        assetView.setCONTEXTDESCRIPTION(document.get(InformationAssetViewFields.CONTEXTDESCRIPTION.toString()));
        assetView.setCORPBODYS(document.getValues(InformationAssetViewFields.CORPBODYS.toString()));
        assetView.setCOVERINGDATES(document.get(InformationAssetViewFields.COVERINGDATES.toString()));
        assetView.setPERSON_FULLNAME(document.getValues(InformationAssetViewFields.PERSON_FULLNAME.toString()));
        assetView.setPLACE_NAME(document.getValues(InformationAssetViewFields.PLACE_NAME.toString()));
        assetView.setSUBJECTS(document.getValues(InformationAssetViewFields.SUBJECTS.toString()));
        assetView.setSERIES(document.get(InformationAssetViewFields.SERIES.toString()));
        assetView.setSOURCE(document.get(InformationAssetViewFields.SOURCE.toString()));
        return assetView;
    }

    /**
     * Retrieve the doc reference from a lucene document
     * 
     * @param document
     * @return
     */
    public static String getDocReferenceFromLuceneDocument(Document document) {
        return document.get(InformationAssetViewFields.DOCREFERENCE.toString());
    }

    public static TestDocument getTestDocumentFromLuceneDocument(Document document) {
        TestDocument testDocument = new TestDocument();
        testDocument.setDescription(document.get(InformationAssetViewFields.DESCRIPTION.toString()));
        testDocument.setContextDescription(document.get(InformationAssetViewFields.CONTEXTDESCRIPTION.toString()));
        testDocument.setTitle(document.get(InformationAssetViewFields.TITLE.toString()));
        testDocument.setDocReference(document.get(InformationAssetViewFields.DOCREFERENCE.toString()));
        testDocument.setCatDocRef(document.get(InformationAssetViewFields.CATDOCREF.toString()));
        testDocument.setCorpBodys(document.getValues(InformationAssetViewFields.CORPBODYS.toString()));
        testDocument.setPersonFullName(document.getValues(InformationAssetViewFields.PERSON_FULLNAME.toString()));
        testDocument.setPlaceName(document.getValues(InformationAssetViewFields.PLACE_NAME.toString()));
        testDocument.setSubjects(document.getValues(InformationAssetViewFields.SUBJECTS.toString()));
        return testDocument;
    }

    public static Document getLuceneDocumentFromTrainingDocument(TrainingDocument trainingDocument) {
        Document doc = new Document();

        doc.add(new StringField(InformationAssetViewFields.DOCREFERENCE.toString(),
                trainingDocument.getDocReference(), Field.Store.YES));

        doc.add(new TextField(InformationAssetViewFields.DESCRIPTION.toString(), trainingDocument.getDescription(),
                Field.Store.YES));

        doc.add(new StringField(InformationAssetViewFields.TAXONOMY.toString(), trainingDocument.getCategory(),
                Field.Store.YES));

        if (!StringUtils.isEmpty(trainingDocument.getCatDocRef())) {
            doc.add(new StringField(InformationAssetViewFields.CATDOCREF.toString(),
                    trainingDocument.getCatDocRef(), Field.Store.YES));
        }
        if (!StringUtils.isEmpty(trainingDocument.getTitle())) {
            doc.add(new TextField(InformationAssetViewFields.TITLE.toString(), trainingDocument.getTitle(),
                    Field.Store.YES));
        }
        if (!StringUtils.isEmpty(trainingDocument.getContextDescription())) {
            doc.add(new TextField(InformationAssetViewFields.CONTEXTDESCRIPTION.toString(),
                    trainingDocument.getContextDescription(), Field.Store.YES));
        }
        if (trainingDocument.getCorpBodys() != null) {
            doc.add(new TextField(InformationAssetViewFields.CORPBODYS.toString(),
                    Arrays.toString(trainingDocument.getCorpBodys()), Field.Store.YES));
        }
        if (trainingDocument.getPersonFullName() != null) {
            doc.add(new TextField(InformationAssetViewFields.PERSON_FULLNAME.toString(),
                    Arrays.toString(trainingDocument.getPersonFullName()), Field.Store.YES));
        }
        if (trainingDocument.getPlaceName() != null) {
            doc.add(new TextField(InformationAssetViewFields.PLACE_NAME.toString(),
                    Arrays.toString(trainingDocument.getPlaceName()), Field.Store.YES));
        }
        if (trainingDocument.getSubjects() != null) {
            doc.add(new TextField(InformationAssetViewFields.SUBJECTS.toString(),
                    Arrays.toString(trainingDocument.getSubjects()), Field.Store.YES));
        }
        return doc;
    }

    public static Document getLuceneDocumentFromIAView(InformationAssetView iaViewSample) {
        Document doc = new Document();
        doc.add(new StringField(InformationAssetViewFields.DOCREFERENCE.toString(), iaViewSample.getDOCREFERENCE(),
                Field.Store.YES));

        doc.add(new TextField(InformationAssetViewFields.DESCRIPTION.toString(), iaViewSample.getDESCRIPTION(),
                Field.Store.YES));

        if (!StringUtils.isEmpty(iaViewSample.getCATDOCREF())) {
            doc.add(new StringField(InformationAssetViewFields.CATDOCREF.toString(), iaViewSample.getCATDOCREF(),
                    Field.Store.YES));
        }
        if (!StringUtils.isEmpty(iaViewSample.getTITLE())) {
            doc.add(new TextField(InformationAssetViewFields.TITLE.toString(), iaViewSample.getTITLE(),
                    Field.Store.YES));
        }
        if (!StringUtils.isEmpty(iaViewSample.getCONTEXTDESCRIPTION())) {
            doc.add(new TextField(InformationAssetViewFields.CONTEXTDESCRIPTION.toString(),
                    iaViewSample.getCONTEXTDESCRIPTION(), Field.Store.YES));
        }
        if (iaViewSample.getCORPBODYS() != null) {
            doc.add(new TextField(InformationAssetViewFields.CORPBODYS.toString(),
                    Arrays.toString(iaViewSample.getCORPBODYS()), Field.Store.YES));
        }
        if (iaViewSample.getPERSON_FULLNAME() != null) {
            doc.add(new TextField(InformationAssetViewFields.PERSON_FULLNAME.toString(),
                    Arrays.toString(iaViewSample.getPERSON_FULLNAME()), Field.Store.YES));
        }
        if (iaViewSample.getPLACE_NAME() != null) {
            doc.add(new TextField(InformationAssetViewFields.PLACE_NAME.toString(),
                    Arrays.toString(iaViewSample.getPLACE_NAME()), Field.Store.YES));
        }
        if (iaViewSample.getSUBJECTS() != null) {
            doc.add(new TextField(InformationAssetViewFields.SUBJECTS.toString(),
                    Arrays.toString(iaViewSample.getSUBJECTS()), Field.Store.YES));
        }
        if (iaViewSample.getSOURCE() != null) {
            doc.add(new IntField(InformationAssetViewFields.SOURCE.toString(),
                    Integer.parseInt(iaViewSample.getSOURCE()), Field.Store.YES));
        }
        return doc;
    }

}