Example usage for org.joda.time DateTime getYear

List of usage examples for org.joda.time DateTime getYear

Introduction

In this page you can find the example usage for org.joda.time DateTime getYear.

Prototype

public int getYear() 

Source Link

Document

Get the year field value.

Usage

From source file:org.ecocean.servlet.importer.ImportExcelMetadata.java

License:Open Source License

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    //set up for response
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    boolean locked = false;

    String context = "context0";
    context = ServletUtilities.getContext(request);
    Shepherd myShepherd = new Shepherd(context);
    myShepherd.beginDBTransaction();/*from  w w w  . j  a va2 s  .c om*/
    AssetStore assetStore = AssetStore.getDefault(myShepherd);
    myShepherd.commitDBTransaction();

    System.out.println("\n\nStarting ImportExcelMetadata servlet...");

    //setup data dir
    String rootWebappPath = getServletContext().getRealPath("/");
    File webappsDir = new File(rootWebappPath).getParentFile();
    File shepherdDataDir = new File(webappsDir, CommonConfiguration.getDataDirectoryName(context));
    if (!shepherdDataDir.exists()) {
        shepherdDataDir.mkdirs();
    }
    File tempSubdir = new File(webappsDir, "temp");
    if (!tempSubdir.exists()) {
        tempSubdir.mkdirs();
    }
    System.out.println("\n\n     Finished directory creation...");

    String fileName = "None";

    StringBuffer messages = new StringBuffer();

    boolean successfullyWroteFile = false;

    File finalFile = new File(tempSubdir, "temp.csv");

    try {
        MultipartParser mp = new MultipartParser(request,
                (CommonConfiguration.getMaxMediaSizeInMegabytes(context) * 1048576));
        Part part;
        while ((part = mp.readNextPart()) != null) {
            String name = part.getName();
            if (part.isParam()) {

                // it's a parameter part
                ParamPart paramPart = (ParamPart) part;
                String value = paramPart.getStringValue();

            }

            if (part.isFile()) {
                FilePart filePart = (FilePart) part;
                fileName = ServletUtilities.cleanFileName(filePart.getFileName());
                if (fileName != null) {
                    System.out.println("ImportExcelMetadata is trying to upload file " + fileName);
                    //File thisSharkDir = new File(encountersDir.getAbsolutePath() +"/"+ encounterNumber);
                    //if(!thisSharkDir.exists()){thisSharkDir.mkdirs();}
                    finalFile = new File(tempSubdir, fileName);
                    filePart.writeTo(finalFile);
                    successfullyWroteFile = true;
                    System.out.println("\n\nImportExcelMetadata successfully uploaded the file!");
                }
            }
        }

        try {
            if (successfullyWroteFile) {

                System.out.println("\n\n     Starting Excel Metadata content import");

                //OK, we have our CSV file
                //let's import
                CSVReader reader = new CSVReader(new FileReader(finalFile));
                List<String[]> allLines = reader.readAll();
                System.out.println("\n\n     Read in the file!");

                //let's detect the size of this array by reading the number of header columns in row 0
                String[] headerNames = allLines.get(0);
                int numColumns = headerNames.length;
                int numRows = allLines.size();

                //determine the Occurrence_ID column as it is at the end
                int occurrenceIDColumnNumber = -1;
                for (int g = 0; g < numColumns; g++) {
                    if (headerNames[g].equals("Occurrence_ID")) {
                        occurrenceIDColumnNumber = g;
                    }
                }

                for (int i = 1; i < numRows; i++) {

                    System.out.println("\n\n     Processing row " + i);
                    boolean newEncounter = true;
                    boolean newShark = true;
                    String[] line = allLines.get(i);

                    boolean ok2import = true;

                    Encounter enc = new Encounter();

                    myShepherd.beginDBTransaction();

                    //line[0] is the sample_ID
                    String encNumber = line[0].trim();
                    if ((encNumber != null) && (!encNumber.equals(""))) {
                        if (myShepherd.isEncounter(encNumber)) {
                            enc = myShepherd.getEncounter(encNumber);
                            newEncounter = false;
                        } else {
                            enc.setCatalogNumber(encNumber);
                            enc.setState("approved");
                        }
                    } else {
                        ok2import = false;
                        messages.append("<li>Row " + i
                                + ": could not find sample/encounter ID in the first column of row " + i
                                + ".</li>");
                        System.out.println(
                                "          Could not find sample/encounter ID in the first column of row " + i
                                        + ".");
                    }

                    //line[1] is the IndividualID
                    String individualID = line[1].trim();
                    if (individualID != null) {

                        enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                + (new java.util.Date()).toString() + "</em><br>"
                                + "Import SRGD process set marked individual to " + individualID + ".</p>");

                        //enc.setIndividualID(individualID);
                        System.out.println(
                                "          Setting Individual ID for row " + i + ". Value: " + individualID);

                    }

                    //line[2] is the latitude
                    String latitude = line[2].trim();
                    if ((latitude != null) && (!latitude.equals(""))) {
                        try {

                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set latitude to " + latitude + ".</p>");

                            Double lat = new Double(latitude);
                            enc.setDecimalLatitude(lat);
                            System.out.println(
                                    "          Setting latitude for row " + i + ". Value: " + latitude);

                        } catch (NumberFormatException nfe) {
                            messages.append("<li>Row " + i + " for sample ID " + enc.getCatalogNumber()
                                    + ": Latitude hit a NumberFormatException in row " + i
                                    + " and could not be imported. The listed value was: " + latitude
                                    + "</li>");
                        }
                    }

                    //line[3] is the latitude
                    String longitude = line[3].trim();
                    if ((longitude != null) && (!longitude.equals(""))) {
                        try {

                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set longitude to " + longitude + ".</p>");

                            Double longie = new Double(longitude);
                            enc.setDecimalLongitude(longie);
                            System.out.println(
                                    "          Setting longitude for row " + i + ". Value: " + longitude);

                        } catch (NumberFormatException nfe) {
                            nfe.printStackTrace();
                            messages.append("<li>Row " + i + " for sample ID " + enc.getCatalogNumber()
                                    + ": Longitude hit a NumberFormatException in row " + i
                                    + " and could not be imported. The listed value was: " + longitude
                                    + "</li>");
                        }
                    }

                    //line[4] is the date_time
                    String isoDate = line[4].trim();
                    if ((isoDate != null) && (!isoDate.equals(""))) {

                        StringTokenizer tks = new StringTokenizer(isoDate, "-");
                        int numTokens = tks.countTokens();
                        DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeParser();

                        enc.setMonth(-1);
                        enc.setDay(-1);
                        enc.setYear(-1);
                        enc.setHour(-1);
                        enc.setMinutes("00");

                        try {
                            DateTime time = parser2.parseDateTime(isoDate);
                            enc.setYear(time.getYear());

                            if (numTokens >= 2) {
                                enc.setMonth(time.getMonthOfYear());
                            }
                            if (numTokens >= 3) {
                                enc.setDay(time.getDayOfMonth());
                            }

                            if (isoDate.indexOf("T") != -1) {
                                int minutes = time.getMinuteOfHour();
                                String minutes2 = (new Integer(minutes)).toString();
                                if ((time.getHourOfDay() != 0) && (minutes != 0)) {
                                    enc.setHour(time.getHourOfDay());
                                    if (isoDate.indexOf(":") != -1) {
                                        enc.setMinutes(minutes2);
                                    }
                                }
                            }

                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set date to " + enc.getDate() + ".</p>");

                            System.out.println("          Set date for encounter: " + enc.getDate());

                        } catch (IllegalArgumentException iae) {
                            iae.printStackTrace();
                            messages.append("<li>Row " + i + ": could not import the date and time for row: "
                                    + i + ". Cancelling the import for this row.</li>");
                            ok2import = false;

                        }
                    }

                    //line[5] get locationID
                    String locationID = line[5].trim();
                    if (line.length >= 6) {
                        if ((locationID != null) && (!locationID.equals(""))) {
                            enc.setLocationID(locationID);
                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set location ID to " + locationID + ".</p>");

                            System.out.println(
                                    "          Setting location ID for row " + i + ". Value: " + locationID);
                        }
                    }

                    //line[6] get sex
                    String sex = line[6].trim();
                    if (line.length >= 7) {
                        if ((sex != null) && (!sex.equals(""))) {

                            if (sex.equals("M")) {
                                enc.setSex("male");
                            } else if (sex.equals("F")) {
                                enc.setSex("female");
                            } else {
                                enc.setSex("unknown");
                            }

                            System.out.println("          Setting sex for row " + i + ". Value: " + sex);
                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set sex to " + enc.getSex() + ".</p>");

                        }

                        //line[occurrenceIDColumnNumber] get Occurrence_ID
                        Occurrence occur = new Occurrence();
                        if (occurrenceIDColumnNumber != -1) {
                            String occurID = line[occurrenceIDColumnNumber];

                            if (myShepherd.isOccurrence(occurID)) {
                                occur = myShepherd.getOccurrence(occurID);
                                boolean isNew = occur.addEncounter(enc);
                                if (isNew) {
                                    occur.addComments("<p><em>" + request.getRemoteUser() + " on "
                                            + (new java.util.Date()).toString() + "</em><br>"
                                            + "Import SRGD process added encounter " + enc.getCatalogNumber()
                                            + ".</p>");
                                }

                            } else {
                                occur = new Occurrence(occurID, enc);
                                occur.addComments("<p><em>" + request.getRemoteUser() + " on "
                                        + (new java.util.Date()).toString() + "</em><br>"
                                        + "Import SRGD process added encounter " + enc.getCatalogNumber()
                                        + ".</p>");

                                myShepherd.getPM().makePersistent(occur);

                            }
                        }

                    }

                    if (ok2import) {

                        System.out.println("          ok2import");

                        myShepherd.commitDBTransaction();
                        if (newEncounter) {
                            myShepherd.storeNewEncounter(enc, enc.getCatalogNumber());
                        }

                        //before proceeding with haplotype and loci importing, we need to create the tissue sample
                        myShepherd.beginDBTransaction();
                        Encounter enc3 = myShepherd.getEncounter(encNumber);
                        TissueSample ts = new TissueSample(encNumber, ("sample_" + encNumber));

                        if (myShepherd.isTissueSample(("sample_" + encNumber), encNumber)) {
                            ts = myShepherd.getTissueSample(("sample_" + encNumber), encNumber);
                        } else {
                            myShepherd.getPM().makePersistent(ts);
                            enc3.addTissueSample(ts);
                        }
                        System.out.println("          Added TissueSample.");

                        //let's set genetic Sex
                        if ((sex != null) && (!sex.equals(""))) {
                            SexAnalysis sexDNA = new SexAnalysis(
                                    ("analysis_" + enc3.getCatalogNumber() + "_sex"), sex,
                                    enc3.getCatalogNumber(), ("sample_" + enc3.getCatalogNumber()));
                            if (myShepherd.isGeneticAnalysis(ts.getSampleID(), encNumber,
                                    ("analysis_" + enc3.getCatalogNumber() + "_sex"), "SexAnalysis")) {
                                sexDNA = myShepherd.getSexAnalysis(ts.getSampleID(), encNumber,
                                        ("analysis_" + enc3.getCatalogNumber() + "_sex"));
                                sexDNA.setSex(sex);
                            } else {
                                ts.addGeneticAnalysis(sexDNA);
                                myShepherd.getPM().makePersistent(sexDNA);
                            }
                            enc3.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br />"
                                    + "Import SRGD process added or updated genetic sex analysis "
                                    + sexDNA.getAnalysisID() + " for tissue sample " + ts.getSampleID()
                                    + ".<br />" + sexDNA.getHTMLString());
                        }
                        System.out.println("          Added genetic sex.");

                        //line[7] get haplotype
                        if (line.length >= 8) {
                            String haplo = line[7].trim();
                            if ((haplo != null) && (!haplo.equals(""))) {
                                //TBD check id this analysis already exists
                                System.out.println("          Starting haplotype.");

                                MitochondrialDNAAnalysis mtDNA = new MitochondrialDNAAnalysis(
                                        ("analysis_" + enc3.getCatalogNumber()), haplo, enc3.getCatalogNumber(),
                                        ("sample_" + enc3.getCatalogNumber()));
                                if (myShepherd.isGeneticAnalysis(ts.getSampleID(), encNumber,
                                        ("analysis_" + enc3.getCatalogNumber()), "MitochondrialDNA")) {
                                    mtDNA = myShepherd.getMitochondrialDNAAnalysis(ts.getSampleID(), encNumber,
                                            ("analysis_" + enc3.getCatalogNumber()));
                                    mtDNA.setHaplotype(haplo);
                                    System.out.println("                  Haplotype reset.");

                                } else {
                                    ts.addGeneticAnalysis(mtDNA);
                                    myShepherd.getPM().makePersistent(mtDNA);
                                    System.out.println("          Added new haplotype.");

                                }
                                enc3.addComments("<p><em>" + request.getRemoteUser() + " on "
                                        + (new java.util.Date()).toString() + "</em><br />"
                                        + "Import SRGD process added or updated mitochondrial DNA analysis (haplotype) "
                                        + mtDNA.getAnalysisID() + " for tissue sample " + ts.getSampleID()
                                        + ".<br />" + mtDNA.getHTMLString());
                                System.out.println("          Added haplotype.");
                            } else {
                                System.out.println("          Did NOT add haplotype.");
                            }
                        }

                        ArrayList<Locus> loci = new ArrayList<Locus>();

                        //loci value import
                        if (line.length >= 9) {

                            for (int f = 8; f < numColumns; f++) {
                                if (line.length > (f + 2)) {
                                    String l1 = line[f].trim();
                                    String l2 = line[f + 1].trim();
                                    String locusName = headerNames[f].replaceAll("L_", "");

                                    System.out.println("          Loaded loci name.");

                                    //verify that we're looking at the right loci and everything matches up nicely
                                    if ((l1 != null) && (l2 != null) && (!l1.equals("")) && (!l2.equals(""))
                                            && (!locusName.equals(""))
                                            && (headerNames[f].trim().toLowerCase().startsWith("l_"))
                                            && (headerNames[f + 1].trim().toLowerCase().startsWith("l_"))
                                            && (headerNames[f].trim().toLowerCase()
                                                    .equals(headerNames[f + 1].trim().toLowerCase()))) {

                                        //get allele values
                                        Integer intA = new Integer(l1);
                                        Integer intB = new Integer(l2);

                                        Locus myLocus = new Locus(locusName, intA, intB);
                                        loci.add(myLocus);

                                    }

                                    f++;
                                }
                            }
                        }

                        //TBD check if this analysis already exists
                        if (loci.size() > 0) {

                            System.out.println("          Found msMarkers!!!!!!!!!!!!1");

                            MicrosatelliteMarkersAnalysis microAnalysis = new MicrosatelliteMarkersAnalysis(
                                    (ts.getSampleID() + "_msMarkerAnalysis"), ts.getSampleID(),
                                    enc.getCatalogNumber(), loci);

                            if (myShepherd.isGeneticAnalysis(ts.getSampleID(), encNumber,
                                    (ts.getSampleID() + "_msMarkerAnalysis"), "MicrosatelliteMarkers")) {
                                microAnalysis = myShepherd.getMicrosatelliteMarkersAnalysis(ts.getSampleID(),
                                        encNumber, (ts.getSampleID() + "_msMarkerAnalysis"));
                                microAnalysis.setLoci(loci);
                            } else {
                                ts.addGeneticAnalysis(microAnalysis);
                                myShepherd.getPM().makePersistent(microAnalysis);
                            }
                            System.out.println("          Added ms markers.");

                            enc3.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br />"
                                    + "Import SRGD process added or updated microsatellite markers of analysis "
                                    + microAnalysis.getAnalysisID() + " for tissue sample " + ts.getSampleID()
                                    + ".<br />" + microAnalysis.getHTMLString());

                        }

                        myShepherd.commitDBTransaction();

                        if (!individualID.equals("")) {
                            MarkedIndividual indie = new MarkedIndividual();
                            myShepherd.beginDBTransaction();

                            Encounter enc2 = myShepherd.getEncounter(encNumber);

                            if (myShepherd.isMarkedIndividual(individualID)) {
                                indie = myShepherd.getMarkedIndividual(individualID);
                                newShark = false;
                            } else {
                                //indie.setIndividualID(individualID);  FIXME  !!!
                            }

                            //OK to generically add it as the addEncounter() method will ignore it if already added to marked individual
                            indie.addEncounter(enc2);

                            if ((indie.getSex() == null)
                                    || ((enc2.getSex() != null) && (indie.getSex() != enc2.getSex()))) {
                                indie.setSex(enc2.getSex());
                                indie.addComments("<p><em>" + request.getRemoteUser() + " on "
                                        + (new java.util.Date()).toString() + "</em><br>"
                                        + "Import SRGD process set sex to " + enc2.getSex() + ".</p>");

                            }

                            if ((indie.getHaplotype() == null) && (enc2.getHaplotype() != null)) {
                                indie.doNotSetLocalHaplotypeReflection(enc2.getHaplotype());
                            }

                            indie.refreshDependentProperties();
                            indie.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process added encounter " + enc2.getCatalogNumber()
                                    + ".</p>");

                            myShepherd.commitDBTransaction();
                            if (newShark) {
                                myShepherd.storeNewMarkedIndividual(indie);
                            }
                        }

                    } else {
                        myShepherd.rollbackDBTransaction();
                    }

                    //out.println("Imported row: "+line);

                }

            } else {
                locked = true;
                System.out.println("ImportSRGD: For some reason the import failed without exception.");
            }

        } catch (Exception le) {
            locked = true;
            myShepherd.rollbackDBTransaction();
            myShepherd.closeDBTransaction();
            le.printStackTrace();
        }

        if (!locked) {
            myShepherd.commitDBTransaction();
            myShepherd.closeDBTransaction();
            out.println(ServletUtilities.getHeader(request));
            out.println(
                    "<p><strong>Success!</strong> I have successfully uploaded and imported your SRGD CSV file.</p>");

            if (messages.toString().equals("")) {
                messages.append("None");
            }
            out.println("<p>The following error messages were reported during the import process:<br /><ul>"
                    + messages + "</ul></p>");

            out.println("<p><a href=\"appadmin/import.jsp\">Return to the import page</a></p>");

            out.println(ServletUtilities.getFooter(context));
        }

    } catch (IOException lEx) {
        lEx.printStackTrace();
        out.println(ServletUtilities.getHeader(request));
        out.println(
                "<strong>Error:</strong> I was unable to upload your SRGD CSV. Please contact the webmaster about this message.");
        out.println(ServletUtilities.getFooter(context));
    } catch (NullPointerException npe) {
        npe.printStackTrace();
        out.println(ServletUtilities.getHeader(request));
        out.println("<strong>Error:</strong> I was unable to import SRGD data as no file was specified.");
        out.println(ServletUtilities.getFooter(context));
    }
    out.close();
}

From source file:org.ecocean.servlet.importer.ImportSRGD.java

License:Open Source License

public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String context = "context0";
    context = ServletUtilities.getContext(request);
    Shepherd myShepherd = new Shepherd(context);
    myShepherd.setAction("ImportSRGD");
    System.out.println("\n\nStarting ImportSRGD servlet...");

    //setup data dir
    String rootWebappPath = getServletContext().getRealPath("/");
    File webappsDir = new File(rootWebappPath).getParentFile();
    File shepherdDataDir = new File(webappsDir, CommonConfiguration.getDataDirectoryName(context));
    if (!shepherdDataDir.exists()) {
        shepherdDataDir.mkdirs();/*ww  w . ja va  2s. c o  m*/
    }
    File tempSubdir = new File(webappsDir, "temp");
    if (!tempSubdir.exists()) {
        tempSubdir.mkdirs();
    }
    System.out.println("\n\n     Finished directory creation...");

    //set up for response
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    boolean locked = false;

    String fileName = "None";

    StringBuffer messages = new StringBuffer();

    boolean successfullyWroteFile = false;

    File finalFile = new File(tempSubdir, "temp.csv");

    try {
        MultipartParser mp = new MultipartParser(request,
                (CommonConfiguration.getMaxMediaSizeInMegabytes(context) * 1048576));
        Part part;
        while ((part = mp.readNextPart()) != null) {
            String name = part.getName();
            if (part.isParam()) {

                // it's a parameter part
                ParamPart paramPart = (ParamPart) part;
                String value = paramPart.getStringValue();

            }

            if (part.isFile()) {
                FilePart filePart = (FilePart) part;
                fileName = ServletUtilities.cleanFileName(filePart.getFileName());
                if (fileName != null) {
                    System.out.println("     Trying to upload file: " + fileName);
                    //File thisSharkDir = new File(encountersDir.getAbsolutePath() +"/"+ encounterNumber);
                    //if(!thisSharkDir.exists()){thisSharkDir.mkdirs();}
                    finalFile = new File(tempSubdir, fileName);
                    filePart.writeTo(finalFile);
                    successfullyWroteFile = true;
                    System.out.println("\n\n     I successfully uploaded the file!");
                }
            }
        }

        try {
            if (successfullyWroteFile) {

                System.out.println("\n\n     Starting CSV content import...");

                //OK, we have our CSV file
                //let's import
                CSVReader reader = new CSVReader(new FileReader(finalFile));
                List<String[]> allLines = reader.readAll();
                System.out.println("\n\n     Read in the CSV file!");

                //let's detect the size of this array by reading the number of header columns in row 0
                String[] headerNames = allLines.get(0);
                int numColumns = headerNames.length;
                int numRows = allLines.size();

                //determine the Occurrence_ID column as it is at the end
                int occurrenceIDColumnNumber = -1;
                for (int g = 0; g < numColumns; g++) {
                    if (headerNames[g].equals("Occurrence_ID")) {
                        occurrenceIDColumnNumber = g;
                    }
                }

                for (int i = 1; i < numRows; i++) {

                    System.out.println("\n\n     Processing row " + i);
                    boolean newEncounter = true;
                    boolean newShark = true;
                    String[] line = allLines.get(i);

                    boolean ok2import = true;

                    Encounter enc = new Encounter();

                    myShepherd.beginDBTransaction();

                    //line[0] is the sample_ID
                    String encNumber = line[0].trim();
                    if ((encNumber != null) && (!encNumber.equals(""))) {
                        if (myShepherd.isEncounter(encNumber)) {
                            enc = myShepherd.getEncounter(encNumber);
                            newEncounter = false;
                        } else {
                            enc.setCatalogNumber(encNumber);
                            enc.setState("approved");
                        }
                    } else {
                        ok2import = false;
                        messages.append("<li>Row " + i
                                + ": could not find sample/encounter ID in the first column of row " + i
                                + ".</li>");
                        System.out.println(
                                "          Could not find sample/encounter ID in the first column of row " + i
                                        + ".");
                    }

                    //line[1] is the IndividualID
                    String individualID = line[1].trim();
                    if (individualID != null) {

                        enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                + (new java.util.Date()).toString() + "</em><br>"
                                + "Import SRGD process set marked individual to " + individualID + ".</p>");

                        //enc.setIndividualID(individualID);
                        System.out.println(
                                "          Setting Individual ID for row " + i + ". Value: " + individualID);

                    }

                    //line[2] is the latitude
                    String latitude = line[2].trim();
                    if ((latitude != null) && (!latitude.equals(""))) {
                        try {

                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set latitude to " + latitude + ".</p>");

                            Double lat = new Double(latitude);
                            enc.setDecimalLatitude(lat);
                            System.out.println(
                                    "          Setting latitude for row " + i + ". Value: " + latitude);

                        } catch (NumberFormatException nfe) {
                            messages.append("<li>Row " + i + " for sample ID " + enc.getCatalogNumber()
                                    + ": Latitude hit a NumberFormatException in row " + i
                                    + " and could not be imported. The listed value was: " + latitude
                                    + "</li>");
                        }
                    }

                    //line[3] is the latitude
                    String longitude = line[3].trim();
                    if ((longitude != null) && (!longitude.equals(""))) {
                        try {

                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set longitude to " + longitude + ".</p>");

                            Double longie = new Double(longitude);
                            enc.setDecimalLongitude(longie);
                            System.out.println(
                                    "          Setting longitude for row " + i + ". Value: " + longitude);

                        } catch (NumberFormatException nfe) {
                            nfe.printStackTrace();
                            messages.append("<li>Row " + i + " for sample ID " + enc.getCatalogNumber()
                                    + ": Longitude hit a NumberFormatException in row " + i
                                    + " and could not be imported. The listed value was: " + longitude
                                    + "</li>");
                        }
                    }

                    //line[4] is the date_time
                    String isoDate = line[4].trim();
                    if ((isoDate != null) && (!isoDate.equals(""))) {

                        StringTokenizer tks = new StringTokenizer(isoDate, "-");
                        int numTokens = tks.countTokens();
                        DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeParser();

                        enc.setMonth(-1);
                        enc.setDay(-1);
                        enc.setYear(-1);
                        enc.setHour(-1);
                        enc.setMinutes("00");

                        try {
                            DateTime time = parser2.parseDateTime(isoDate);
                            enc.setYear(time.getYear());

                            if (numTokens >= 2) {
                                enc.setMonth(time.getMonthOfYear());
                            }
                            if (numTokens >= 3) {
                                enc.setDay(time.getDayOfMonth());
                            }

                            if (isoDate.indexOf("T") != -1) {
                                int minutes = time.getMinuteOfHour();
                                String minutes2 = (new Integer(minutes)).toString();
                                if ((time.getHourOfDay() != 0) && (minutes != 0)) {
                                    enc.setHour(time.getHourOfDay());
                                    if (isoDate.indexOf(":") != -1) {
                                        enc.setMinutes(minutes2);
                                    }
                                }
                            }

                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set date to " + enc.getDate() + ".</p>");

                            System.out.println("          Set date for encounter: " + enc.getDate());

                        } catch (IllegalArgumentException iae) {
                            iae.printStackTrace();
                            messages.append("<li>Row " + i + ": could not import the date and time for row: "
                                    + i + ". Cancelling the import for this row.</li>");
                            ok2import = false;

                        }
                    }

                    //line[5] get locationID
                    String locationID = line[5].trim();
                    if (line.length >= 6) {
                        if ((locationID != null) && (!locationID.equals(""))) {
                            enc.setLocationID(locationID);
                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set location ID to " + locationID + ".</p>");

                            System.out.println(
                                    "          Setting location ID for row " + i + ". Value: " + locationID);
                        }
                    }

                    //line[6] get sex
                    String sex = line[6].trim();
                    if (line.length >= 7) {
                        if ((sex != null) && (!sex.equals(""))) {

                            if (sex.equals("M")) {
                                enc.setSex("male");
                            } else if (sex.equals("F")) {
                                enc.setSex("female");
                            } else {
                                enc.setSex("unknown");
                            }

                            System.out.println("          Setting sex for row " + i + ". Value: " + sex);
                            enc.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process set sex to " + enc.getSex() + ".</p>");

                        }

                        //line[occurrenceIDColumnNumber] get Occurrence_ID
                        Occurrence occur = new Occurrence();
                        if (occurrenceIDColumnNumber != -1) {
                            String occurID = line[occurrenceIDColumnNumber];

                            if (myShepherd.isOccurrence(occurID)) {
                                occur = myShepherd.getOccurrence(occurID);
                                boolean isNew = occur.addEncounter(enc);
                                if (isNew) {
                                    occur.addComments("<p><em>" + request.getRemoteUser() + " on "
                                            + (new java.util.Date()).toString() + "</em><br>"
                                            + "Import SRGD process added encounter " + enc.getCatalogNumber()
                                            + ".</p>");
                                }

                            } else {
                                occur = new Occurrence(occurID, enc);
                                occur.addComments("<p><em>" + request.getRemoteUser() + " on "
                                        + (new java.util.Date()).toString() + "</em><br>"
                                        + "Import SRGD process added encounter " + enc.getCatalogNumber()
                                        + ".</p>");

                                myShepherd.getPM().makePersistent(occur);

                            }
                        }

                    }

                    if (ok2import) {

                        System.out.println("          ok2import");

                        myShepherd.commitDBTransaction();
                        if (newEncounter) {
                            myShepherd.storeNewEncounter(enc, enc.getCatalogNumber());
                        }

                        //before proceeding with haplotype and loci importing, we need to create the tissue sample
                        myShepherd.beginDBTransaction();
                        Encounter enc3 = myShepherd.getEncounter(encNumber);
                        TissueSample ts = new TissueSample(encNumber, ("sample_" + encNumber));

                        if (myShepherd.isTissueSample(("sample_" + encNumber), encNumber)) {
                            ts = myShepherd.getTissueSample(("sample_" + encNumber), encNumber);
                        } else {
                            myShepherd.getPM().makePersistent(ts);
                            enc3.addTissueSample(ts);
                        }
                        System.out.println("          Added TissueSample.");

                        //let's set genetic Sex
                        if ((sex != null) && (!sex.equals(""))) {
                            SexAnalysis sexDNA = new SexAnalysis(
                                    ("analysis_" + enc3.getCatalogNumber() + "_sex"), sex,
                                    enc3.getCatalogNumber(), ("sample_" + enc3.getCatalogNumber()));
                            if (myShepherd.isGeneticAnalysis(ts.getSampleID(), encNumber,
                                    ("analysis_" + enc3.getCatalogNumber() + "_sex"), "SexAnalysis")) {
                                sexDNA = myShepherd.getSexAnalysis(ts.getSampleID(), encNumber,
                                        ("analysis_" + enc3.getCatalogNumber() + "_sex"));
                                sexDNA.setSex(sex);
                            } else {
                                ts.addGeneticAnalysis(sexDNA);
                                myShepherd.getPM().makePersistent(sexDNA);
                            }
                            enc3.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br />"
                                    + "Import SRGD process added or updated genetic sex analysis "
                                    + sexDNA.getAnalysisID() + " for tissue sample " + ts.getSampleID()
                                    + ".<br />" + sexDNA.getHTMLString());
                        }
                        System.out.println("          Added genetic sex.");

                        //line[7] get haplotype
                        if (line.length >= 8) {
                            String haplo = line[7].trim();
                            if ((haplo != null) && (!haplo.equals(""))) {
                                //TBD check id this analysis already exists
                                System.out.println("          Starting haplotype.");

                                MitochondrialDNAAnalysis mtDNA = new MitochondrialDNAAnalysis(
                                        ("analysis_" + enc3.getCatalogNumber()), haplo, enc3.getCatalogNumber(),
                                        ("sample_" + enc3.getCatalogNumber()));
                                if (myShepherd.isGeneticAnalysis(ts.getSampleID(), encNumber,
                                        ("analysis_" + enc3.getCatalogNumber()), "MitochondrialDNA")) {
                                    mtDNA = myShepherd.getMitochondrialDNAAnalysis(ts.getSampleID(), encNumber,
                                            ("analysis_" + enc3.getCatalogNumber()));
                                    mtDNA.setHaplotype(haplo);
                                    System.out.println("                  Haplotype reset.");

                                } else {
                                    ts.addGeneticAnalysis(mtDNA);
                                    myShepherd.getPM().makePersistent(mtDNA);
                                    System.out.println("          Added new haplotype.");

                                }
                                enc3.addComments("<p><em>" + request.getRemoteUser() + " on "
                                        + (new java.util.Date()).toString() + "</em><br />"
                                        + "Import SRGD process added or updated mitochondrial DNA analysis (haplotype) "
                                        + mtDNA.getAnalysisID() + " for tissue sample " + ts.getSampleID()
                                        + ".<br />" + mtDNA.getHTMLString());
                                System.out.println("          Added haplotype.");
                            } else {
                                System.out.println("          Did NOT add haplotype.");
                            }
                        }

                        ArrayList<Locus> loci = new ArrayList<Locus>();

                        //loci value import       
                        if (line.length >= 9) {

                            for (int f = 8; f < numColumns; f++) {
                                if (line.length > (f + 2)) {
                                    String l1 = line[f].trim();
                                    String l2 = line[f + 1].trim();
                                    String locusName = headerNames[f].replaceAll("L_", "");

                                    System.out.println("          Loaded loci name.");

                                    //verify that we're looking at the right loci and everything matches up nicely
                                    if ((l1 != null) && (l2 != null) && (!l1.equals("")) && (!l2.equals(""))
                                            && (!locusName.equals(""))
                                            && (headerNames[f].trim().toLowerCase().startsWith("l_"))
                                            && (headerNames[f + 1].trim().toLowerCase().startsWith("l_"))
                                            && (headerNames[f].trim().toLowerCase()
                                                    .equals(headerNames[f + 1].trim().toLowerCase()))) {

                                        //get allele values
                                        Integer intA = new Integer(l1);
                                        Integer intB = new Integer(l2);

                                        Locus myLocus = new Locus(locusName, intA, intB);
                                        loci.add(myLocus);

                                    }

                                    f++;
                                }
                            }
                        }

                        //TBD check if this analysis already exists
                        if (loci.size() > 0) {

                            System.out.println("          Found msMarkers!!!!!!!!!!!!1");

                            MicrosatelliteMarkersAnalysis microAnalysis = new MicrosatelliteMarkersAnalysis(
                                    (ts.getSampleID() + "_msMarkerAnalysis"), ts.getSampleID(),
                                    enc.getCatalogNumber(), loci);

                            if (myShepherd.isGeneticAnalysis(ts.getSampleID(), encNumber,
                                    (ts.getSampleID() + "_msMarkerAnalysis"), "MicrosatelliteMarkers")) {
                                microAnalysis = myShepherd.getMicrosatelliteMarkersAnalysis(ts.getSampleID(),
                                        encNumber, (ts.getSampleID() + "_msMarkerAnalysis"));
                                microAnalysis.setLoci(loci);
                            } else {
                                ts.addGeneticAnalysis(microAnalysis);
                                myShepherd.getPM().makePersistent(microAnalysis);
                            }
                            System.out.println("          Added ms markers.");

                            enc3.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br />"
                                    + "Import SRGD process added or updated microsatellite markers of analysis "
                                    + microAnalysis.getAnalysisID() + " for tissue sample " + ts.getSampleID()
                                    + ".<br />" + microAnalysis.getHTMLString());

                        }

                        myShepherd.commitDBTransaction();

                        if (!individualID.equals("")) {
                            MarkedIndividual indie = new MarkedIndividual();
                            myShepherd.beginDBTransaction();

                            Encounter enc2 = myShepherd.getEncounter(encNumber);

                            if (myShepherd.isMarkedIndividual(individualID)) {
                                indie = myShepherd.getMarkedIndividual(individualID);
                                newShark = false;
                            } else {
                                //indie.setIndividualID(individualID);
                            }

                            //OK to generically add it as the addEncounter() method will ignore it if already added to marked individual
                            indie.addEncounter(enc2);

                            if ((indie.getSex() == null)
                                    || ((enc2.getSex() != null) && (indie.getSex() != enc2.getSex()))) {
                                indie.setSex(enc2.getSex());
                                indie.addComments("<p><em>" + request.getRemoteUser() + " on "
                                        + (new java.util.Date()).toString() + "</em><br>"
                                        + "Import SRGD process set sex to " + enc2.getSex() + ".</p>");

                            }

                            if ((indie.getHaplotype() == null) && (enc2.getHaplotype() != null)) {
                                indie.doNotSetLocalHaplotypeReflection(enc2.getHaplotype());
                            }

                            indie.refreshDependentProperties();
                            indie.addComments("<p><em>" + request.getRemoteUser() + " on "
                                    + (new java.util.Date()).toString() + "</em><br>"
                                    + "Import SRGD process added encounter " + enc2.getCatalogNumber()
                                    + ".</p>");

                            myShepherd.commitDBTransaction();
                            if (newShark) {
                                myShepherd.storeNewMarkedIndividual(indie);
                            }
                        }

                    } else {
                        myShepherd.rollbackDBTransaction();
                    }

                    //out.println("Imported row: "+line);

                }

            } else {
                locked = true;
                System.out.println("ImportSRGD: For some reason the import failed without exception.");
            }

        } catch (Exception le) {
            locked = true;
            myShepherd.rollbackDBTransaction();
            myShepherd.closeDBTransaction();
            le.printStackTrace();
        }

        if (!locked) {
            myShepherd.commitDBTransaction();
            myShepherd.closeDBTransaction();
            out.println(ServletUtilities.getHeader(request));
            out.println(
                    "<p><strong>Success!</strong> I have successfully uploaded and imported your SRGD CSV file.</p>");

            if (messages.toString().equals("")) {
                messages.append("None");
            }
            out.println("<p>The following error messages were reported during the import process:<br /><ul>"
                    + messages + "</ul></p>");

            out.println("<p><a href=\"appadmin/import.jsp\">Return to the import page</a></p>");

            out.println(ServletUtilities.getFooter(context));
        }

    } catch (IOException lEx) {
        lEx.printStackTrace();
        out.println(ServletUtilities.getHeader(request));
        out.println(
                "<strong>Error:</strong> I was unable to upload your SRGD CSV. Please contact the webmaster about this message.");
        out.println(ServletUtilities.getFooter(context));
    } catch (NullPointerException npe) {
        npe.printStackTrace();
        out.println(ServletUtilities.getHeader(request));
        out.println("<strong>Error:</strong> I was unable to import SRGD data as no file was specified.");
        out.println(ServletUtilities.getFooter(context));
    }
    out.close();
}

From source file:org.ecocean.Shepherd.java

License:Open Source License

public int getFirstSubmissionYear() {
    //System.out.println("Starting getFirstSubmissionYear");
    try {// w  ww .  ja  v  a 2s. c o  m
        Query q = pm.newQuery("SELECT min(dwcDateAddedLong) FROM org.ecocean.Encounter");
        //System.out.println("     I have a query");
        long value = ((Long) q.execute()).longValue();
        //System.out.println("     I have a value of: "+value);
        q.closeAll();
        org.joda.time.DateTime lcd = new org.joda.time.DateTime(value);
        return lcd.getYear();
        //return value;
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Why can't I find a min dwcDateAddedLong?");
        return -1;
    }
}

From source file:org.efaps.admin.datamodel.attributetype.DateTimeType.java

License:Apache License

/**
 * {@inheritDoc}/*  ww w  .ja va 2s .com*/
 * @throws EFapsException
 */
@Override
public Object readValue(final Attribute _attribute, final List<Object> _objectList) throws EFapsException {
    // reads the Value from "Admin_Common_DataBaseTimeZone"
    final String timezoneID = EFapsSystemConfiguration.get().getAttributeValue(KernelSettings.DBTIMEZONE);
    final ISOChronology chron;
    if (timezoneID != null) {
        final DateTimeZone timezone = DateTimeZone.forID(timezoneID);
        chron = ISOChronology.getInstance(timezone);
    } else {
        chron = ISOChronology.getInstanceUTC();
    }

    final List<DateTime> ret = new ArrayList<DateTime>();
    for (final Object object : _objectList) {
        if (object instanceof Timestamp || object instanceof Date) {
            // to avoid the automatic "correction" of the timezone first a local date must be made
            // and than a new Date with the correct timezone must be created
            final DateTime dateTime = new DateTime(object);
            final DateTime unlocalized = new DateTime(dateTime.getYear(), dateTime.getMonthOfYear(),
                    dateTime.getDayOfMonth(), dateTime.getHourOfDay(), dateTime.getMinuteOfHour(),
                    dateTime.getSecondOfMinute(), dateTime.getMillisOfSecond(), chron);
            ret.add(unlocalized);
        } else if (object != null) {
            ret.add(new DateTime());
        } else {
            ret.add(null);
        }
    }
    return _objectList.size() > 0 ? ret.size() > 1 ? ret : ret.get(0) : null;
}

From source file:org.efaps.admin.datamodel.attributetype.DateTimeType.java

License:Apache License

/**
 * The value that can be set is a Date, a DateTime or a String
 * yyyy-MM-dd'T'HH:mm:ss.SSSZZ. It will be normalized to ISO Calender with
 * TimeZone from SystemAttribute Admin_Common_DataBaseTimeZone. In case that
 * the SystemAttribute is missing UTC will be used.
 *
 * @param _value value to evaluate/*from  ww w.jav a2  s . c  o  m*/
 * @return evaluated value
 * @throws EFapsException on error
 */
protected Timestamp eval(final Object[] _value) throws EFapsException {
    final Timestamp ret;
    if (_value == null || _value.length == 0 || _value[0] == null) {
        ret = null;
    } else {
        final DateTime dateTime = DateTimeUtil.translateFromUI(_value[0]);
        // until now we have a time that depends on the timezone of the application server
        // to convert it in a timestamp for the efaps database the timezone information (mainly the offset)
        // must be removed. This is done by creating a local date with the same, date and time.
        // this guarantees that the datetime inserted into the database depends on the setting
        // in the configuration and not on the timezone for the application server.
        final DateTime localized = new DateTime(dateTime.getYear(), dateTime.getMonthOfYear(),
                dateTime.getDayOfMonth(), dateTime.getHourOfDay(), dateTime.getMinuteOfHour(),
                dateTime.getSecondOfMinute(), dateTime.getMillisOfSecond());
        ret = localized != null ? new Timestamp(localized.getMillis()) : null;
    }
    return ret;
}

From source file:org.efaps.admin.datamodel.attributetype.DateType.java

License:Apache License

/**
 * The value that can be set is a Date, a DateTime or a String
 * yyyy-MM-dd'T'HH:mm:ss.SSSZZ. It will be normalized to ISO Calender with
 * TimeZone from SystemAttribute Admin_Common_DataBaseTimeZone. In case that
 * the SystemAttribute is missing UTC will be used.
 * For storing the value in the database the time is set to 00:00;
 *
 * @param _value value to evaluate/*from  w w w .ja va2s  .c  o  m*/
 * @return evaluated value
 * @throws EFapsException on error
 */
@Override
protected Timestamp eval(final Object[] _value) throws EFapsException {
    final Timestamp ret;
    if (_value == null || _value.length == 0 || _value[0] == null) {
        ret = null;
    } else {
        DateTime dateTime = new DateTime();
        if (_value[0] instanceof Date) {
            dateTime = new DateTime(_value[0]);
        } else if (_value[0] instanceof DateTime) {
            dateTime = (DateTime) _value[0];
        } else if (_value[0] instanceof String) {
            dateTime = ISODateTimeFormat.dateTime().withOffsetParsed().parseDateTime((String) _value[0]);
        }
        // until now we have a time that depends on the timezone of the application server
        // to convert it in a timestamp for the efaps database the timezone information (mainly the offset)
        // must be removed. This is done by creating a local date with the same, date and time.
        // this guarantees that the datetime inserted into the database depends on the setting
        // in the configuration and not on the timezone for the application server.
        final DateTime localized = new DateTime(dateTime.getYear(), dateTime.getMonthOfYear(),
                dateTime.getDayOfMonth(), 0, 0, 0, 0);
        ret = localized != null ? new Timestamp(localized.getMillis()) : null;
    }
    return ret;
}

From source file:org.efaps.admin.index.Indexer.java

License:Apache License

/**
 * Index or reindex a given list of instances. The given instances m,ust be
 * all of the same type!/*  ww  w.  j a va2 s  . c  o m*/
 *
 * @param _context the _context
 * @param _instances the instances
 * @throws EFapsException the e faps exception
 */
public static void index(final IndexContext _context, final List<Instance> _instances) throws EFapsException {
    if (CollectionUtils.isNotEmpty(_instances)) {
        final Company currentCompany = Context.getThreadContext().getCompany();
        final String currentLanguage = Context.getThreadContext().getLanguage();

        Context.getThreadContext().setCompany(Company.get(_context.getCompanyId()));
        Context.getThreadContext().setLanguage(_context.getLanguage());
        final IndexWriterConfig config = new IndexWriterConfig(_context.getAnalyzer());
        try (IndexWriter writer = new IndexWriter(_context.getDirectory(), config);
                TaxonomyWriter taxonomyWriter = new DirectoryTaxonomyWriter(_context.getTaxonomyDirectory());) {

            final IndexDefinition def = IndexDefinition.get(_instances.get(0).getType().getUUID());
            final MultiPrintQuery multi = new MultiPrintQuery(_instances);
            for (final IndexField field : def.getFields()) {
                multi.addSelect(field.getSelect());
            }
            Attribute createdAttr = null;
            if (!_instances.get(0).getType().getAttributes(CreatedType.class).isEmpty()) {
                createdAttr = _instances.get(0).getType().getAttributes(CreatedType.class).iterator().next();
                multi.addAttribute(createdAttr);
            }
            multi.addMsgPhrase(def.getMsgPhrase());
            multi.executeWithoutAccessCheck();
            while (multi.next()) {
                final String oid = multi.getCurrentInstance().getOid();
                final String type = multi.getCurrentInstance().getType().getLabel();
                final DateTime created;
                if (createdAttr == null) {
                    created = new DateTime();
                } else {
                    created = multi.getAttribute(createdAttr);
                }

                final Document doc = new Document();
                doc.add(new FacetField(Dimension.DIMTYPE.name(), type));
                doc.add(new FacetField(Dimension.DIMCREATED.name(), String.valueOf(created.getYear()),
                        String.format("%02d", created.getMonthOfYear())));
                doc.add(new StringField(Key.OID.name(), oid, Store.YES));
                doc.add(new TextField(DBProperties.getProperty("index.Type"), type, Store.YES));
                doc.add(new NumericDocValuesField(Key.CREATED.name(), created.getMillis()));
                doc.add(new StringField(Key.CREATEDSTR.name(),
                        DateTools.dateToString(created.toDate(), DateTools.Resolution.DAY), Store.NO));

                final StringBuilder allBldr = new StringBuilder().append(type).append(" ");

                for (final IndexField field : def.getFields()) {
                    final String name = DBProperties.getProperty(field.getKey());
                    Object value = multi.getSelect(field.getSelect());
                    if (value != null) {
                        if (StringUtils.isNoneEmpty(field.getTransform())) {
                            final Class<?> clazz = Class.forName(field.getTransform(), false,
                                    EFapsClassLoader.getInstance());
                            final ITransformer transformer = (ITransformer) clazz.newInstance();
                            value = transformer.transform(value);
                        }
                        switch (field.getFieldType()) {
                        case LONG:
                            long val = 0;
                            if (value instanceof String) {
                                val = NumberUtils.toLong((String) value);
                            } else if (value instanceof Number) {
                                val = ((Number) value).longValue();
                            }
                            doc.add(new LongField(name, val, Store.YES));
                            allBldr.append(value).append(" ");
                            break;
                        case SEARCHLONG:
                            long val2 = 0;
                            if (value instanceof String) {
                                val2 = NumberUtils.toLong((String) value);
                            } else if (value instanceof Number) {
                                val2 = ((Number) value).longValue();
                            }
                            doc.add(new LongField(name, val2, Store.NO));
                            allBldr.append(value).append(" ");
                            break;
                        case STRING:
                            doc.add(new StringField(name, String.valueOf(value), Store.YES));
                            allBldr.append(value).append(" ");
                            break;
                        case SEARCHSTRING:
                            doc.add(new StringField(name, String.valueOf(value), Store.NO));
                            allBldr.append(value).append(" ");
                            break;
                        case TEXT:
                            doc.add(new TextField(name, String.valueOf(value), Store.YES));
                            allBldr.append(value).append(" ");
                            break;
                        case SEARCHTEXT:
                            doc.add(new TextField(name, String.valueOf(value), Store.NO));
                            allBldr.append(value).append(" ");
                            break;
                        case STORED:
                            doc.add(new StoredField(name, String.valueOf(value)));
                            allBldr.append(value).append(" ");
                            break;
                        default:
                            break;
                        }
                    }
                }
                doc.add(new StoredField(Key.MSGPHRASE.name(), multi.getMsgPhrase(def.getMsgPhrase())));
                doc.add(new TextField(Key.ALL.name(), allBldr.toString(), Store.NO));
                writer.updateDocument(new Term(Key.OID.name(), oid),
                        Index.getFacetsConfig().build(taxonomyWriter, doc));
                LOG.debug("Add Document: {}", doc);
            }
            writer.close();
            taxonomyWriter.close();
        } catch (final IOException | ClassNotFoundException | InstantiationException
                | IllegalAccessException e) {
            throw new EFapsException(Indexer.class, "IOException", e);
        } finally {
            Context.getThreadContext().setCompany(currentCompany);
            Context.getThreadContext().setLanguage(currentLanguage);
        }
    }
}

From source file:org.egov.adtax.service.AdvertisementDemandService.java

License:Open Source License

private int noOfMonths(final Date startDate, final Date endDate) {
    DateTime sDate = new DateTime(startDate);
    DateTime eDate = new DateTime(endDate);
    final int yearDiff = eDate.getYear() - sDate.getYear();
    int noOfMonths = yearDiff * 12 + eDate.getMonthOfYear() - sDate.getMonthOfYear();
    return noOfMonths;

}

From source file:org.egov.ptis.client.bill.PTBillServiceImpl.java

License:Open Source License

/**
 * Setting the EgBillDetails to generate XML as a part of Erpcollection
 * Integration/*from w w  w .  ja  v  a2  s .c  o  m*/
 *
 * @see org.egov.demand.interfaces.BillServiceInterface
 */
@Override
public List<EgBillDetails> getBilldetails(final Billable billObj) {
    final List<EgBillDetails> billDetails = new ArrayList<>();
    LOGGER.debug("Entered method getBilldetails : " + billObj);
    EgBillDetails billdetail;
    final PropertyTaxBillable billable = (PropertyTaxBillable) billObj;

    if (billable.isMutationFeePayment()) {
        final Installment currInstallment = propertyTaxCommonUtils.getCurrentInstallment();
        billdetail = new EgBillDetails();
        billdetail.setOrderNo(1);
        billdetail.setCreateDate(new Date());
        billdetail.setModifiedDate(new Date());
        billdetail.setCrAmount(billable.getMutationFee());
        billdetail.setDrAmount(BigDecimal.ZERO);
        billdetail.setGlcode(GLCODE_FOR_MUTATION_FEE);
        billdetail.setDescription(MUTATION_FEE_STR);
        billdetail.setAdditionalFlag(Integer.valueOf(0));
        billdetail.setEgInstallmentMaster(currInstallment);
        billdetail.setAdditionalFlag(Integer.valueOf(1));
        billdetail.setPurpose(PURPOSE.OTHERS.toString());
        billdetail.setFunctionCode(financialUtil.getFunctionCode());
        billDetails.add(billdetail);
        return billDetails;
    }

    String key;
    BigDecimal balance;
    BigDecimal earlyPayRebate = BigDecimal.ZERO;
    DateTime installmentDate;
    BillDetailBean billDetailBean;
    EgDemandReason reason;
    Installment installment;
    String reasonMasterCode;
    final BasicProperty basicProperty = billable.getBasicProperty();
    final Property activeProperty = basicProperty.getProperty();
    TreeMap<Installment, PenaltyAndRebate> installmentPenaltyAndRebate = (TreeMap<Installment, PenaltyAndRebate>) billable
            .getCalculatedPenalty();
    Map<String, Installment> currInstallments = propertyTaxUtil.getInstallmentsForCurrYear(new Date());

    Date advanceStartDate = DateUtils.addYears(currInstallments.get(CURRENTYEAR_FIRST_HALF).getFromDate(), 1);
    List<Installment> advanceInstallments = propertyTaxCommonUtils.getAdvanceInstallmentsList(advanceStartDate);

    billable.setInstTaxBean(installmentPenaltyAndRebate);
    if (installmentPenaltyAndRebate.get(currInstallments.get(CURRENTYEAR_FIRST_HALF)) != null) {
        earlyPayRebate = installmentPenaltyAndRebate.get(currInstallments.get(CURRENTYEAR_FIRST_HALF))
                .getRebate();
    }
    final Ptdemand ptDemand = ptDemandDAO.getNonHistoryCurrDmdForProperty(activeProperty);
    final HashMap<String, Integer> orderMap = propertyTaxUtil
            .generateOrderForDemandDetails(ptDemand.getEgDemandDetails(), billable, advanceInstallments);

    for (final EgDemandDetails demandDetail : ptDemand.getEgDemandDetails()) {
        balance = demandDetail.getAmount().subtract(demandDetail.getAmtCollected());
        reason = demandDetail.getEgDemandReason();
        installment = reason.getEgInstallmentMaster();
        reasonMasterCode = reason.getEgDemandReasonMaster().getCode();
        if (balance.compareTo(BigDecimal.ZERO) == 1) {
            installmentDate = new DateTime(installment.getInstallmentYear().getTime());

            if (isNotPenalty(reasonMasterCode)) {
                key = installmentDate.getMonthOfYear() + "/" + installmentDate.getYear() + "-"
                        + reasonMasterCode;
                billDetailBean = new BillDetailBean(installment, orderMap.get(key), key,
                        demandDetail.getAmount().subtract(demandDetail.getAmtCollected()),
                        demandDetail.getEgDemandReason().getGlcodeId().getGlcode(),
                        reason.getEgDemandReasonMaster().getReasonMaster(), Integer.valueOf(1),
                        definePurpose(demandDetail));

                billDetails.add(createBillDet(billDetailBean));
            }
        }
    }
    addBillDetailsForRebate(billDetails, earlyPayRebate, currInstallments, orderMap);

    getPenaltyAndRebateDmd(billDetails, billable, installmentPenaltyAndRebate, ptDemand, orderMap);

    // Get the demand for current year second half and use it in advance
    // collection
    BigDecimal currentInstDemand = BigDecimal.ZERO;
    for (EgDemandDetails dmdDet : ptDemand.getEgDemandDetails()) {
        if (isDmdForCurrYrSecHalf(currInstallments, dmdDet)) {
            currentInstDemand = currentInstDemand.add(dmdDet.getAmount());
        }
    }
    // Advance Bill details only if current tax is greater than zero.
    if (isCurrTaxGrtZero(currentInstDemand)) {
        createAdvanceBillDetails(billDetails, currentInstDemand, orderMap, ptDemand, billable,
                advanceInstallments, currInstallments.get(CURRENTYEAR_SECOND_HALF));
    }

    LOGGER.debug("Exiting method getBilldetails : " + billDetails);
    return billDetails;
}

From source file:org.egov.ptis.client.bill.PTBillServiceImpl.java

License:Open Source License

private void addBillDetailsForRebate(final List<EgBillDetails> billDetails, BigDecimal earlyPayRebate,
        Map<String, Installment> currInstallments, final HashMap<String, Integer> orderMap) {
    String key;/* w w  w  .  j a  v  a 2s. c  o  m*/
    DateTime installmentDate;
    BillDetailBean billDetailBean;
    if (isCurrTaxGrtZero(earlyPayRebate)) {
        installmentDate = new DateTime(
                currInstallments.get(CURRENTYEAR_FIRST_HALF).getInstallmentYear().getTime());
        key = installmentDate.getMonthOfYear() + "/" + installmentDate.getYear() + "-" + DEMANDRSN_CODE_REBATE;
        billDetailBean = new BillDetailBean(currInstallments.get(CURRENTYEAR_FIRST_HALF), orderMap.get(key),
                key, earlyPayRebate, PropertyTaxConstants.GLCODE_FOR_TAXREBATE, DEMANDRSN_CODE_REBATE,
                Integer.valueOf(1), PURPOSE.REBATE.toString());
        billDetails.add(createBillDet(billDetailBean));
    }
}