Example usage for org.joda.time LocalDateTime getDayOfMonth

List of usage examples for org.joda.time LocalDateTime getDayOfMonth

Introduction

In this page you can find the example usage for org.joda.time LocalDateTime getDayOfMonth.

Prototype

public int getDayOfMonth() 

Source Link

Document

Get the day of month field value.

Usage

From source file:org.assertj.jodatime.api.LocalDateTimeAssert.java

License:Apache License

/**
 * Returns true if both datetime are in the same year, month and day of month, false otherwise.
 * /* www .j av  a2  s .  com*/
 * @param actual the actual datetime. expected not be null
 * @param other the other datetime. expected not be null
 * @return true if both datetime are in the same year, month and day of month, false otherwise
 */
private static boolean haveSameYearMonthAndDayOfMonth(LocalDateTime actual, LocalDateTime other) {
    return haveSameYearAndMonth(actual, other) && actual.getDayOfMonth() == other.getDayOfMonth();
}

From source file:org.broadleafcommerce.core.offer.service.processor.AbstractBaseProcessor.java

License:Apache License

/**
 * Removes all out of date offers.  If an offer does not have a start date, or the start
 * date is a later date, that offer will be removed.  Offers without a start date should
 * not be processed.  If the offer has a end date that has already passed, that offer
 * will be removed.  Offers without a end date will be processed if the start date
 * is prior to the transaction date.//from   w w w. j a  v  a  2  s. c  o  m
 *
 * @param offers
 * @return List of Offers with valid dates
 */
protected List<Offer> removeOutOfDateOffers(List<Offer> offers) {
    List<Offer> offersToRemove = new ArrayList<Offer>();
    for (Offer offer : offers) {
        TimeZone timeZone = getOfferTimeZoneProcessor().getTimeZone(offer);

        Calendar current = timeZone == null ? SystemTime.asCalendar() : SystemTime.asCalendar(timeZone);
        Calendar start = null;
        if (offer.getStartDate() != null) {
            LocalDateTime startDate = new LocalDateTime(offer.getStartDate());
            start = timeZone == null ? new GregorianCalendar() : new GregorianCalendar(timeZone);
            start.set(Calendar.YEAR, startDate.getYear());
            start.set(Calendar.MONTH, startDate.getMonthOfYear() - 1);
            start.set(Calendar.DAY_OF_MONTH, startDate.getDayOfMonth());
            start.set(Calendar.HOUR_OF_DAY, startDate.getHourOfDay());
            start.set(Calendar.MINUTE, startDate.getMinuteOfHour());
            start.set(Calendar.SECOND, startDate.getSecondOfMinute());
            start.get(Calendar.HOUR_OF_DAY);//do not delete this line
            start.get(Calendar.MINUTE);
            if (LOG.isTraceEnabled()) {
                LOG.debug("Offer: " + offer.getName() + " timeZone:" + timeZone + " startTime:"
                        + start.getTime() + " currentTime:" + current.getTime());
            }
        }
        Calendar end = null;
        if (offer.getEndDate() != null) {
            LocalDateTime endDate = new LocalDateTime(offer.getEndDate());
            end = timeZone == null ? new GregorianCalendar() : new GregorianCalendar(timeZone);
            end.set(Calendar.YEAR, endDate.getYear());
            end.set(Calendar.MONTH, endDate.getMonthOfYear() - 1);
            end.set(Calendar.DAY_OF_MONTH, endDate.getDayOfMonth());
            end.set(Calendar.HOUR_OF_DAY, endDate.getHourOfDay());
            end.set(Calendar.MINUTE, endDate.getMinuteOfHour());
            end.set(Calendar.SECOND, endDate.getSecondOfMinute());
            end.get(Calendar.HOUR_OF_DAY);//do not delete this line
            end.get(Calendar.MINUTE);
            if (LOG.isTraceEnabled()) {
                LOG.debug("Offer: " + offer.getName() + " endTime:" + start.getTime());
            }
        }
        if ((offer.getStartDate() == null) || (start.after(current))) {
            offersToRemove.add(offer);
        } else if (offer.getEndDate() != null && end.before(current)) {
            offersToRemove.add(offer);
        }
    }
    // remove all offers in the offersToRemove list from original offers list
    for (Offer offer : offersToRemove) {
        offers.remove(offer);
    }
    return offers;

    // return offers;
}

From source file:org.devgateway.eudevfin.projects.module.components.util.RateUtil.java

public static LocalDateTime getStartOfMonth(LocalDateTime commitmentDate) {
    return commitmentDate.minusDays(commitmentDate.getDayOfMonth() - 1);
}

From source file:org.ecocean.servlet.EncounterForm.java

License:Open Source License

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");

    HashMap fv = new HashMap();

    //IMPORTANT - processingNotes can be used to add notes on data handling (e.g., poorly formatted dates) that can be reconciled later by the reviewer
    //Example usage: processingNotes.append("<p>Error encountered processing this date submitted by user: "+getVal(fv, "datepicker")+"</p>");
    StringBuffer processingNotes = new StringBuffer();

    HttpSession session = request.getSession(true);
    String context = "context0";
    context = ServletUtilities.getContext(request);
    Shepherd myShepherd = new Shepherd(context);
    myShepherd.setAction("EncounterForm.class");
    System.out.println("in context " + context);
    //request.getSession()getServlet().getServletContext().getRealPath("/"));
    String rootDir = getServletContext().getRealPath("/");
    System.out.println("rootDir=" + rootDir);

    /*/*from  www.  j  av a  2 s.  c om*/
        Vector<String> fbImages = new Vector<String>();
        int fbi = 0;
        while (request.getParameter("socialphoto_" + fbi) != null) {
            fbImages.add(request.getParameter("socialphoto_" + fbi));
            fbi++;
        }
    System.out.println(fbImages);
        if (fbImages.size() > 0) {
            FacebookClient fbclient = null;
            try {
    fbclient = SocialAuth.getFacebookClient(context);
            } catch (Exception ex) {
    System.out.println("SocialAuth.getFacebookClient threw exception " + ex.toString());
            }
    WebContext ctx = new J2EContext(request, response);
    //String callbackUrl = "http://localhost.wildme.org/a/SocialConnect?type=facebook";
    String callbackUrl = "http://" + CommonConfiguration.getURLLocation(request) + "/XXXSocialConnect?type=facebook";
    if (request.getParameter("disconnect") != null) callbackUrl += "&disconnect=1";
    fbclient.setCallbackUrl(callbackUrl);
    OAuthCredentials credentials = null;
    try {
        credentials = fbclient.getCredentials(ctx);
    } catch (Exception ex) {
        System.out.println("caught exception on facebook credentials: " + ex.toString());
    }
    if (credentials != null) {
        FacebookProfile facebookProfile = fbclient.getUserProfile(credentials, ctx);
        User fbuser = myShepherd.getUserBySocialId("facebook", facebookProfile.getId());
        System.out.println("getId() = " + facebookProfile.getId() + " -> user = " + fbuser);
    if (fbuser != null) System.out.println("user = " + user.getUsername() + "; fbuser = " + fbuser.getUsername());
        if ((fbuser != null) && (fbuser.getUsername().equals(user.getUsername())) && (request.getParameter("disconnect") != null)) {
            fbuser.unsetSocial("facebook");
            //myShepherd.getPM().makePersistent(user);
            session.setAttribute("message", "disconnected from facebook");
            response.sendRedirect("myAccount.jsp");
            return;
        } else if (fbuser != null) {
            session.setAttribute("error", "looks like this account is already connected to an account");
            response.sendRedirect("myAccount.jsp");
            return;
        } else {  //lets do this
            user.setSocial("facebook", facebookProfile.getId());
            //myShepherd.getPM().makePersistent(user);
            session.setAttribute("message", "connected to facebook");
            response.sendRedirect("myAccount.jsp");
            return;
        }
    } else {
    System.out.println("*** trying redirect?");
        try {
            fbclient.redirect(ctx, false, false);
        } catch (Exception ex) {
            System.out.println("caught exception on facebook processing: " + ex.toString());
        }
        return;
    }
        }
    */
    //private Map<String, Object> measurements = new HashMap<String, Object>();
    //Map<String, Object> metalTags = new HashMap<String, Object>();

    /*
          private String acousticTagSerial = "";
          private String acousticTagId = "";
          private String satelliteTagSerial = "";
          private String satelliteTagArgosPttNumber = "";
          private String satelliteTagName = "";
    */

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

    String fileName = "None";
    String username = "None";
    String fullPathFilename = "";

    boolean fileSuccess = false; //kinda pointless now as we just build sentFiles list now at this point (do file work at end)
    String doneMessage = "";
    List<String> filesOK = new ArrayList<String>();
    HashMap<String, String> filesBad = new HashMap<String, String>();

    List<FileItem> formFiles = new ArrayList<FileItem>();
    List<File> socialFiles = new ArrayList<File>();

    //Calendar date = Calendar.getInstance();

    long maxSizeMB = CommonConfiguration.getMaxMediaSizeInMegabytes(context);
    long maxSizeBytes = maxSizeMB * 1048576;

    if (ServletFileUpload.isMultipartContent(request)) {

        try {
            ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
            upload.setHeaderEncoding("UTF-8");
            List<FileItem> multiparts = upload.parseRequest(request);
            //List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);

            for (FileItem item : multiparts) {
                if (item.isFormField()) { //plain field
                    fv.put(item.getFieldName(),
                            ServletUtilities.preventCrossSiteScriptingAttacks(item.getString("UTF-8").trim())); //TODO do we want trim() here??? -jon
                    //System.out.println("got regular field (" + item.getFieldName() + ")=(" + item.getString("UTF-8") + ")");
                } else if (item.getName().startsWith("socialphoto_")) {
                    System.out.println(item.getName() + ": " + item.getString("UTF-8"));
                } else { //file
                    //System.out.println("content type???? " + item.getContentType());   TODO note, the helpers only check extension
                    if (item.getSize() > maxSizeBytes) {
                        filesBad.put(item.getName(), "file is larger than " + maxSizeMB + "MB");
                    } else if (myShepherd.isAcceptableImageFile(item.getName())
                            || myShepherd.isAcceptableVideoFile(item.getName())) {
                        formFiles.add(item);
                        filesOK.add(item.getName());
                    } else {
                        filesBad.put(item.getName(), "invalid type of file");
                    }
                }
            }

            doneMessage = "File Uploaded Successfully";
            fileSuccess = true;

        } catch (Exception ex) {
            doneMessage = "File Upload Failed due to " + ex;
        }

    } else {
        doneMessage = "Sorry this Servlet only handles file upload request";
        System.out.println("Not a multi-part form submission!");
    }

    if (fv.get("social_files_id") != null) {
        System.out.println("BBB: Social_files_id: " + fv.get("social_files_id"));

        //TODO better checking of files (size, type etc)
        File socDir = new File(
                ServletUtilities.dataDir(context, rootDir) + "/social_files/" + fv.get("social_files_id"));
        for (File sf : socDir.listFiles()) {
            socialFiles.add(sf);
            System.out.println("BBB: Adding social file : " + sf.getName());

            filesOK.add(sf.getName());
        }
        filesBad = new HashMap<String, String>();
        fileSuccess = true;
    }

    session.setAttribute("filesOKMessage", (filesOK.isEmpty() ? "none" : Arrays.toString(filesOK.toArray())));
    String badmsg = "";
    for (String key : filesBad.keySet()) {
        badmsg += key + " (" + getVal(filesBad, key) + ") ";
    }
    if (badmsg.equals("")) {
        badmsg = "none";
    }
    session.setAttribute("filesBadMessage", badmsg);

    if (fileSuccess) {

        //////////////////////////////////////////// START

        //{submitterID=tomcat, submitterProject=, photographerEmail=, metalTag(left)=, sex=unknown, measurement(weight)=34234, location=, acousticTagId=, behavior=yow behavior..., measurement(weightunits)=kilograms, acousticTagSerial=, photographerName=, lifeStage=sub-adult, submitterAddress=, satelliteTagSerial=, releaseDate=, photographerPhone=, measurement(lengthunits)=meters, measurement(weightsamplingProtocol)=samplingProtocol0, measurement(length)=, submitterOrganization=, photographerAddress=, longitude=, year=2014, lat=, measurement(lengthsamplingProtocol)=samplingProtocol0, submitterEmail=, minutes=00, elevation=, measurement(height)=, measurement(heightsamplingProtocol)=samplingProtocol0, scars=None, submitterPhone=, submitterName=tomcat, hour=-1, livingStatus=alive, depth=, country=, satelliteTagName=Wild Life Computers, metalTag(right)=, month=1, measurement(heightunits)=meters, Submit=Send encounter report, informothers=, day=0, satelliteTagArgosPttNumber=, comments=}

        //check for spamBots   TODO possibly move this to Util for general/global usage?
        boolean spamBot = false;
        String[] spamFieldsToCheck = new String[] { "submitterPhone", "submitterName", "photographerName",
                "photographerPhone", "location", "comments", "behavior" };
        StringBuffer spamFields = new StringBuffer();
        for (int i = 0; i < spamFieldsToCheck.length; i++) {
            spamFields.append(getVal(fv, spamFieldsToCheck[i]));
        }

        if (spamFields.toString().toLowerCase().indexOf("porn") != -1) {
            spamBot = true;
        }
        if (spamFields.toString().toLowerCase().indexOf("href") != -1) {
            spamBot = true;
        }

        System.out.println("spambot: " + spamBot);
        //else if(spamFields.toString().toLowerCase().indexOf("[url]")!=-1){spamBot=true;}
        //else if(spamFields.toString().toLowerCase().indexOf("url=")!=-1){spamBot=true;}
        //else if(spamFields.toString().toLowerCase().trim().equals("")){spamBot=true;}
        //else if((theForm.getSubmitterID()!=null)&&(theForm.getSubmitterID().equals("N%2FA"))) {spamBot=true;}

        String locCode = "";
        System.out.println(" **** here is what i think locationID is: " + fv.get("locationID"));
        if ((fv.get("locationID") != null) && !fv.get("locationID").toString().equals("")) {
            locCode = fv.get("locationID").toString();
        }
        //see if the location code can be determined and set based on the location String reported
        else if (fv.get("location") != null) {
            String locTemp = getVal(fv, "location").toLowerCase();
            Properties props = new Properties();

            try {
                props = ShepherdProperties.getProperties("submitActionClass.properties", "", context);

                Enumeration m_enum = props.propertyNames();
                while (m_enum.hasMoreElements()) {
                    String aLocationSnippet = ((String) m_enum.nextElement()).trim();
                    if (locTemp.indexOf(aLocationSnippet) != -1) {
                        locCode = props.getProperty(aLocationSnippet);
                    }
                }
            } catch (Exception props_e) {
                props_e.printStackTrace();
            }

        } //end else
          //end location code setter
        fv.put("locCode", locCode);

        //TODO this should live somewhere else as constant? (e.g. to build in form as well)
        String[] scarType = new String[] { "None", "Tail (caudal) fin", "1st dorsal fin", "2nd dorsal fin",
                "Left pectoral fin", "Right pectoral fin", "Head", "Body" };
        int scarNum = -1;
        try {
            scarNum = Integer.parseInt(getVal(fv, "scars"));
        } catch (NumberFormatException e) {
            scarNum = -1;
        }
        if ((scarNum < 0) || (scarNum > 7)) {
            scarNum = -1;
        }
        if (scarNum >= 0) {
            fv.put("scars", scarType[scarNum]);
        }

        //System.out.println("about to do int stuff");

        //need some ints for day/month/year/hour (other stuff seems to be strings)
        int day = 0, month = -1, year = 0, hour = 0;
        String minutes = "";
        //try { day = Integer.parseInt(getVal(fv, "day")); } catch (NumberFormatException e) { day = 0; }
        //try { month = Integer.parseInt(getVal(fv, "month")); } catch (NumberFormatException e) { month = 0; }
        //try { year = Integer.parseInt(getVal(fv, "year")); } catch (NumberFormatException e) { year = 0; }

        //switch to datepicker

        LocalDateTime dt = new LocalDateTime();

        if ((getVal(fv, "datepicker") != null) && (!getVal(fv, "datepicker").trim().equals(""))) {
            //System.out.println("Trying to read date: "+getVal(fv, "datepicker").replaceAll(" ", "T"));
            //boolean badDate=false;
            try {
                DateTimeFormatter parser1 = ISODateTimeFormat.dateOptionalTimeParser();

                LocalDateTime reportedDateTime = new LocalDateTime(
                        parser1.parseMillis(getVal(fv, "datepicker").replaceAll(" ", "T")));
                StringTokenizer str = new StringTokenizer(getVal(fv, "datepicker").replaceAll(" ", "T"), "-");

                int numTokens = str.countTokens();

                if (numTokens >= 1) {
                    //try {
                    year = reportedDateTime.getYear();
                    if (year > (dt.getYear() + 1)) {
                        //badDate=true;
                        year = 0;
                        throw new Exception(
                                "    An unknown exception occurred during date processing in EncounterForm. The user may have input an improper format: "
                                        + year + " > " + dt.getYear());
                    }

                    //} catch (Exception e) { year=-1;}
                }
                if (numTokens >= 2) {
                    try {
                        month = reportedDateTime.getMonthOfYear();
                    } catch (Exception e) {
                        month = -1;
                    }
                } else {
                    month = -1;
                }
                //see if we can get a day, because we do want to support only yyy-MM too
                if (str.countTokens() >= 3) {
                    try {
                        day = reportedDateTime.getDayOfMonth();
                    } catch (Exception e) {
                        day = 0;
                    }
                } else {
                    day = 0;
                }

                //see if we can get a time and hour, because we do want to support only yyy-MM too
                StringTokenizer strTime = new StringTokenizer(getVal(fv, "datepicker").replaceAll(" ", "T"),
                        "T");
                if (strTime.countTokens() > 1) {
                    try {
                        hour = reportedDateTime.getHourOfDay();
                    } catch (Exception e) {
                        hour = -1;
                    }
                    try {
                        minutes = (new Integer(reportedDateTime.getMinuteOfHour()).toString());
                    } catch (Exception e) {
                    }
                } else {
                    hour = -1;
                }

                //System.out.println("At the end of time processing I see: "+year+"-"+month+"-"+day+" "+hour+":"+minutes);

            } catch (Exception e) {
                System.out.println(
                        "    An unknown exception occurred during date processing in EncounterForm. The user may have input an improper format.");
                e.printStackTrace();
                processingNotes.append("<p>Error encountered processing this date submitted by user: "
                        + getVal(fv, "datepicker") + "</p>");

            }
        }

        String guess = "no estimate provided";
        if ((fv.get("guess") != null) && !fv.get("guess").toString().equals("")) {
            guess = fv.get("guess").toString();
        }

        //let's handle genus and species for taxonomy
        String genus = null;
        String specificEpithet = null;

        try {

            //now we have to break apart genus species
            if (fv.get("genusSpecies") != null) {
                StringTokenizer tokenizer = new StringTokenizer(fv.get("genusSpecies").toString(), " ");
                if (tokenizer.countTokens() >= 2) {

                    genus = tokenizer.nextToken();
                    //enc.setGenus(tokenizer.nextToken());
                    specificEpithet = tokenizer.nextToken().replaceAll(",", "").replaceAll("_", " ");
                    //enc.setSpecificEpithet(tokenizer.nextToken().replaceAll(",","").replaceAll("_"," "));

                }
                //handle malformed Genus Species formats
                else {
                    throw new Exception(
                            "The format of the submitted genusSpecies parameter did not have two tokens delimited by a space (e.g., \"Rhincodon typus\"). The submitted value was: "
                                    + fv.get("genusSpecies"));
                }
            }

        } catch (Exception le) {
            le.printStackTrace();
        }

        System.out.println("about to do enc()");

        Encounter enc = new Encounter(day, month, year, hour, minutes, guess, getVal(fv, "location"));
        boolean llSet = false;
        //Encounter enc = new Encounter();
        //System.out.println("Submission detected date: "+enc.getDate());

        String encID = enc.generateEncounterNumber();
        if ((fv.get("catalogNumber") != null) && (!fv.get("catalogNumber").toString().trim().equals(""))) {
            if ((!myShepherd.isEncounter(fv.get("catalogNumber").toString()))) {
                encID = fv.get("catalogNumber").toString().trim();
            }
        }
        enc.setEncounterNumber(encID);

        System.out.println("hey, i think i may have made an encounter, encID=" + encID);
        System.out.println("enc ?= " + enc.toString());

        AssetStore astore = AssetStore.getDefault(myShepherd);
        ArrayList<Annotation> newAnnotations = new ArrayList<Annotation>();

        //for directly uploaded files
        for (FileItem item : formFiles) {
            //convert each FileItem into a MediaAsset
            makeMediaAssetsFromJavaFileItemObject(item, encID, astore, enc, newAnnotations, genus,
                    specificEpithet);
        }

        ///////////////////TODO social files also!!!
        System.out.println("BBB: Checking if we have social files...");

        if (socialFiles.size() > 0) {
            int numSocialFiles = socialFiles.size();
            System.out.println("BBB: Trying to persist social files: " + numSocialFiles);

            DiskFileItemFactory factory = new DiskFileItemFactory();

            for (int q = 0; q < numSocialFiles; q++) {
                File item = socialFiles.get(q);
                makeMediaAssetsFromJavaFileObject(item, encID, astore, enc, newAnnotations, genus,
                        specificEpithet);

            }

        }

        if (fv.get("mediaAssetSetId") != null) {
            MediaAssetSet maSet = ((MediaAssetSet) (myShepherd.getPM().getObjectById(
                    myShepherd.getPM().newObjectIdInstance(MediaAssetSet.class, fv.get("mediaAssetSetId")),
                    true)));
            if ((maSet != null) && (maSet.getMediaAssets() != null) && (maSet.getMediaAssets().size() > 0)) {
                int num = maSet.getMediaAssets().size();
                for (MediaAsset ma : maSet.getMediaAssets()) {
                    newAnnotations.add(new Annotation(Util.taxonomyString(genus, specificEpithet), ma));
                }
                session.setAttribute("filesOKMessage", num + " " + ((num == 1) ? "file" : "files"));
            }
        }

        enc.setAnnotations(newAnnotations);

        enc.setGenus(genus);
        enc.setSpecificEpithet(specificEpithet);

        //User management
        String subN = getVal(fv, "submitterName");
        String subE = getVal(fv, "submitterEmail");
        String subO = getVal(fv, "submitterOrganization");
        if (Util.stringExists(subO))
            enc.setSubmitterOrganization(subO);
        String subP = getVal(fv, "submitterProject");
        if (Util.stringExists(subP))
            enc.setSubmitterOrganization(subP);
        //User user=null;
        List<User> submitters = new ArrayList<User>();
        if ((subE != null) && (!subE.trim().equals(""))) {

            StringTokenizer str = new StringTokenizer(subE, ",");
            int numTokens = str.countTokens();
            for (int y = 0; y < numTokens; y++) {
                String tok = str.nextToken().trim();
                String hashedTok = ServletUtilities.hashString(tok);
                if (myShepherd.getUserByHashedEmailAddress(hashedTok) != null) {
                    User user = myShepherd.getUserByHashedEmailAddress(hashedTok);
                    submitters.add(user);
                } else {
                    User user = new User(tok, Util.generateUUID());
                    user.setAffiliation(subO);
                    user.setUserProject(subP);
                    if ((numTokens == 1) && (subN != null)) {
                        user.setFullName(subN);
                    }
                    myShepherd.getPM().makePersistent(user);
                    myShepherd.commitDBTransaction();
                    myShepherd.beginDBTransaction();

                    submitters.add(user);
                }
            }
        }
        enc.setSubmitters(submitters);
        //end submitter-user processing

        //User management - photographer processing
        String photoN = getVal(fv, "photographerName");
        String photoE = getVal(fv, "photographerEmail");
        List<User> photographers = new ArrayList<User>();
        if ((photoE != null) && (!photoE.trim().equals(""))) {

            StringTokenizer str = new StringTokenizer(photoE, ",");
            int numTokens = str.countTokens();
            for (int y = 0; y < numTokens; y++) {
                String tok = str.nextToken().trim();
                if (myShepherd.getUserByEmailAddress(tok.trim()) != null) {
                    User user = myShepherd.getUserByEmailAddress(tok);
                    photographers.add(user);
                } else {
                    User user = new User(tok, Util.generateUUID());
                    myShepherd.getPM().makePersistent(user);
                    myShepherd.commitDBTransaction();
                    myShepherd.beginDBTransaction();
                    photographers.add(user);
                }
            }
        }
        enc.setPhotographers(photographers);
        //end photographer-user processing

        //User management - informOthers processing
        String othersString = getVal(fv, "informothers");
        List<User> informOthers = new ArrayList<User>();
        if ((othersString != null) && (!othersString.trim().equals(""))) {

            StringTokenizer str = new StringTokenizer(othersString, ",");
            int numTokens = str.countTokens();
            for (int y = 0; y < numTokens; y++) {
                String tok = str.nextToken().trim();
                if (myShepherd.getUserByEmailAddress(tok.trim()) != null) {
                    User user = myShepherd.getUserByEmailAddress(tok);
                    informOthers.add(user);
                } else {
                    User user = new User(tok, Util.generateUUID());
                    myShepherd.getPM().makePersistent(user);
                    myShepherd.commitDBTransaction();
                    myShepherd.beginDBTransaction();
                    informOthers.add(user);
                }
            }
        }
        enc.setInformOthers(informOthers);
        //end informOthers-user processing

        /*
                    String baseDir = ServletUtilities.dataDir(context, rootDir);
                    ArrayList<SinglePhotoVideo> images = new ArrayList<SinglePhotoVideo>();
                    for (FileItem item : formFiles) {
        // this will actually write file to filesystem (or [FUTURE] wherever)
        //  TODO: either (a) undo this if any failure of writing encounter; or (b) dont write til success of enc.
        try {
            //SinglePhotoVideo spv = new SinglePhotoVideo(encID, item, context, encDataDir);
            SinglePhotoVideo spv = new SinglePhotoVideo(enc, item, context, baseDir);
            //images.add(spv);
            enc.addSinglePhotoVideo(spv);
        } catch (Exception ex) {
            System.out.println("failed to save " + item.toString() + ": " + ex.toString());
        }
                    }
                    for (File sf : socialFiles) {
                File encDir = new File(enc.dir(baseDir));
                if (!encDir.exists()) encDir.mkdirs();
        File targetFile = new File(encDir, sf.getName());
        System.out.println("socialFile copy: " + sf.toString() + " ---> " + targetFile.toString());
        Files.copy(sf.toPath(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
        SinglePhotoVideo spv = new SinglePhotoVideo(encID, targetFile);
        enc.addSinglePhotoVideo(spv);
                    }
        */

        //now let's add our encounter to the database

        enc.setComments(getVal(fv, "comments").replaceAll("\n", "<br>"));
        if (fv.get("releaseDate") != null && fv.get("releaseDate").toString().length() > 0) {
            String dateFormatPattern = CommonConfiguration.getProperty("releaseDateFormat", context);
            try {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatPattern);
                enc.setReleaseDate(simpleDateFormat.parse(fv.get("releaseDate").toString()).getTime());
            } catch (Exception e) {
                enc.addComments("<p>Reported release date was problematic: " + fv.get("releaseDate") + "</p>");
            }
        }
        if (fv.get("behavior") != null && fv.get("behavior").toString().length() > 0) {
            enc.setBehavior(fv.get("behavior").toString());
        }
        if (fv.get("alternateID") != null && fv.get("alternateID").toString().length() > 0) {
            enc.setAlternateID(fv.get("alternateID").toString());
        }
        if (fv.get("lifeStage") != null && fv.get("lifeStage").toString().length() > 0) {
            enc.setLifeStage(fv.get("lifeStage").toString());
        }

        if (fv.get("flukeType") != null && fv.get("flukeType").toString().length() > 0) {
            System.out.println("        ENCOUNTERFORM:");
            System.out.println("        ENCOUNTERFORM:");
            System.out.println("        ENCOUNTERFORM:");
            String kwName = fv.get("flukeType").toString();
            Keyword kw = myShepherd.getOrCreateKeyword(kwName);
            for (Annotation ann : enc.getAnnotations()) {
                MediaAsset ma = ann.getMediaAsset();
                if (ma != null) {
                    ma.addKeyword(kw);

                    System.out.println("ENCOUNTERFORM: added flukeType keyword to encounter: " + kwName);
                }
            }
            System.out.println("        ENCOUNTERFORM:");
            System.out.println("        ENCOUNTERFORM:");

        }

        if (fv.get("manualID") != null && fv.get("manualID").toString().length() > 0) {
            String indID = fv.get("manualID").toString();
            MarkedIndividual ind = myShepherd.getMarkedIndividualQuiet(indID);
            if (ind == null) {
                ind = new MarkedIndividual(enc);
                ind.addName(request, indID); // we don't just create the individual using the encounter+indID bc this request might key the name off of the logged-in user
                myShepherd.storeNewMarkedIndividual(ind);
                ind.refreshNamesCache();
                System.out.println("        ENCOUNTERFORM: created new individual " + indID);
            } else {
                ind.addEncounter(enc);
                ind.addName(request, indID); // adds the just-entered name to the individual
                System.out.println("        ENCOUNTERFORM: added enc to individual " + indID);
            }
            if (ind != null)
                enc.setIndividual(ind);
            enc.setFieldID(indID);
        }

        if (fv.get("occurrenceID") != null && fv.get("occurrenceID").toString().length() > 0) {
            String occID = fv.get("occurrenceID").toString();
            enc.setOccurrenceID(occID);
            Occurrence occ = myShepherd.getOccurrence(occID);
            if (occ == null) {
                occ = new Occurrence(occID, enc);
                myShepherd.storeNewOccurrence(occ);
                System.out.println("        ENCOUNTERFORM: created new Occurrence " + occID);
            } else {
                occ.addEncounter(enc);
                System.out.println("        ENCOUNTERFORM: added enc to Occurrence " + occID);

            }
        }

        List<MetalTag> metalTags = getMetalTags(fv);
        for (MetalTag metalTag : metalTags) {
            enc.addMetalTag(metalTag);
        }

        List<Measurement> measurements = getMeasurements(fv, encID, context);
        for (Measurement measurement : measurements) {
            enc.setMeasurement(measurement, myShepherd);
        }

        enc.setAcousticTag(getAcousticTag(fv));
        enc.setSatelliteTag(getSatelliteTag(fv));
        enc.setSex(getVal(fv, "sex"));
        enc.setLivingStatus(getVal(fv, "livingStatus"));

        if (fv.get("scars") != null) {
            enc.setDistinguishingScar(fv.get("scars").toString());
        }

        int sizePeriod = 0;
        if ((fv.get("measureUnits") != null) && fv.get("measureUnits").toString().equals("Feet")) {

            if ((fv.get("depth") != null) && !fv.get("depth").toString().equals("")) {
                try {
                    double tempDouble = (new Double(fv.get("depth").toString())).doubleValue() / 3.3;
                    String truncDepth = (new Double(tempDouble)).toString();
                    sizePeriod = truncDepth.indexOf(".");
                    truncDepth = truncDepth.substring(0, sizePeriod + 2);
                    fv.put("depth", (new Double(truncDepth)).toString());
                } catch (java.lang.NumberFormatException nfe) {
                    enc.addComments(
                            "<p>Reported depth was problematic: " + fv.get("depth").toString() + "</p>");
                    fv.put("depth", "");
                } catch (NullPointerException npe) {
                    fv.put("depth", "");
                }
            }
            System.out.println("depth --> " + fv.get("depth").toString());

            if ((fv.get("elevation") != null) && !fv.get("elevation").toString().equals("")) {
                try {
                    double tempDouble = (new Double(fv.get("elevation").toString())).doubleValue() / 3.3;
                    String truncElev = (new Double(tempDouble)).toString();
                    //String truncElev = ((new Double(elevation)) / 3.3).toString();
                    sizePeriod = truncElev.indexOf(".");
                    truncElev = truncElev.substring(0, sizePeriod + 2);
                    fv.put("elevation", (new Double(truncElev)).toString());
                } catch (java.lang.NumberFormatException nfe) {
                    enc.addComments("<p>Reported elevation was problematic: " + fv.get("elevation").toString()
                            + "</p>");
                    fv.put("elevation", "");
                } catch (NullPointerException npe) {
                    fv.put("elevation", "");
                }
            }

            if ((fv.get("size") != null) && !fv.get("size").toString().equals("")) {

                try {
                    double tempDouble = (new Double(fv.get("size").toString())).doubleValue() / 3.3;
                    String truncSize = (new Double(tempDouble)).toString();
                    //String truncSize = ((new Double(size)) / 3.3).toString();
                    sizePeriod = truncSize.indexOf(".");
                    truncSize = truncSize.substring(0, sizePeriod + 2);
                    fv.put("size", (new Double(truncSize)).toString());
                } catch (java.lang.NumberFormatException nfe) {

                    enc.addComments("<p>Reported size was problematic: " + fv.get("size").toString() + "</p>");
                    fv.put("size", "");
                } catch (NullPointerException npe) {
                    fv.put("size", "");
                }
            }
        } //measureUnits

        if ((fv.get("size") != null) && !fv.get("size").toString().equals("")) {
            try {
                enc.setSize(new Double(fv.get("size").toString()));
            } catch (java.lang.NumberFormatException nfe) {
                enc.addComments("<p>Reported size was problematic: " + fv.get("size").toString() + "</p>");
                fv.put("size", "");
            } catch (NullPointerException npe) {
                fv.put("size", "");
            }
        }

        if ((fv.get("elevation") != null) && !fv.get("elevation").toString().equals("")) {
            try {
                enc.setMaximumElevationInMeters(new Double(fv.get("elevation").toString()));
            } catch (java.lang.NumberFormatException nfe) {
                enc.addComments(
                        "<p>Reported elevation was problematic: " + fv.get("elevation").toString() + "</p>");
                fv.put("elevatoin", "");
            } catch (NullPointerException npe) {
                fv.put("elevation", "");
            }
        }

        if ((fv.get("depth") != null) && !fv.get("depth").toString().equals("")) {
            try {
                enc.setDepth(new Double(fv.get("depth").toString()));
            } catch (java.lang.NumberFormatException nfe) {
                enc.addComments("<p>Reported depth was problematic: " + fv.get("depth").toString() + "</p>");
                fv.put("depth", "");
            } catch (NullPointerException npe) {
                fv.put("depth", "");
            }
        }

        //let's handle the GPS
        if ((fv.get("lat") != null) && (fv.get("longitude") != null) && !fv.get("lat").toString().equals("")
                && !fv.get("longitude").toString().equals("")) {
            //enc.setGPSLatitude(lat + "&deg; " + gpsLatitudeMinutes + "\' " + gpsLatitudeSeconds + "\" " + latDirection);

            try {
                double degrees = (new Double(fv.get("lat").toString())).doubleValue();
                double position = degrees;
                /*
                if (!gpsLatitudeMinutes.equals("")) {
                  double minutes2 = ((new Double(gpsLatitudeMinutes)).doubleValue()) / 60;
                  position += minutes2;
                }
                if (!gpsLatitudeSeconds.equals("")) {
                  double seconds2 = ((new Double(gpsLatitudeSeconds)).doubleValue()) / 3600;
                  position += seconds2;
                }
                if (latDirection.toLowerCase().equals("south")) {
                  position = position * -1;
                }*/
                enc.setDWCDecimalLatitude(position);

                double degrees2 = (new Double(fv.get("longitude").toString())).doubleValue();
                double position2 = degrees2;
                enc.setDWCDecimalLongitude(position2);
                llSet = true;

            } catch (Exception e) {
                System.out.println("EncounterSetGPS: problem!");
                e.printStackTrace();
            }

        }

        //enc.setMeasureUnits("Meters");
        // enc.setSubmitterPhone(getVal(fv, "submitterPhone"));
        //enc.setSubmitterAddress(getVal(fv, "submitterAddress"));

        // enc.setPhotographerPhone(getVal(fv, "photographerPhone"));
        // enc.setPhotographerAddress(getVal(fv, "photographerAddress"));
        // enc.setPhotographerName(getVal(fv, "photographerName"));
        // enc.setPhotographerEmail(getVal(fv, "photographerEmail"));
        enc.addComments("<p>Submitted on " + (new java.util.Date()).toString() + " from address: "
                + ServletUtilities.getRemoteHost(request) + "</p>");
        //enc.approved = false;

        enc.addComments(processingNotes.toString());

        if (CommonConfiguration.getProperty("encounterState0", context) != null) {
            enc.setState(CommonConfiguration.getProperty("encounterState0", context));
        }
        if (request.getRemoteUser() != null) {
            enc.setSubmitterID(request.getRemoteUser());
        } else {
            enc.setSubmitterID("N/A");
        }
        if (!getVal(fv, "locCode").equals("")) {
            enc.setLocationCode(locCode);
        }
        if (!getVal(fv, "country").equals("")) {
            enc.setCountry(getVal(fv, "country"));
        }

        // xxxxxxx
        //add research team for GAq
        if (!getVal(fv, "researchTeam").equals("")) {
            enc.setDynamicProperty("Research Team", (getVal(fv, "researchTeam")));
        }
        if (!getVal(fv, "vessel").equals("")) {
            enc.setDynamicProperty("Vessel", (getVal(fv, "vessel")));
        }
        if (!getVal(fv, "conditions").equals("")) {
            enc.setDynamicProperty("Conditions", (getVal(fv, "conditions")));
        }

        if (!getVal(fv, "camera").equals("")) {
            enc.setDynamicProperty("Camera", (getVal(fv, "camera")));
        }
        if (!getVal(fv, "lens").equals("")) {
            enc.setDynamicProperty("Lens", (getVal(fv, "lens")));
        }
        if (!getVal(fv, "card").equals("")) {
            enc.setDynamicProperty("Card", (getVal(fv, "card")));
        }
        if (!getVal(fv, "folder").equals("")) {
            enc.setDynamicProperty("Folder", (getVal(fv, "folder")));
        }

        if (!getVal(fv, "numberOfBoats").equals("")) {
            enc.setDynamicProperty("Number of boats", (getVal(fv, "numberOfBoats")));
        }

        if (!getVal(fv, "startTime").equals("")) {
            enc.setDynamicProperty("Start Time", (getVal(fv, "startTime")));
        }

        if (!getVal(fv, "endTime").equals("")) {
            enc.setDynamicProperty("End Time", (getVal(fv, "endTime")));
        }

        if (!getVal(fv, "endLongitude").equals("")) {
            enc.setDynamicProperty("End Longitude", (getVal(fv, "endLongitude")));
        }
        if (!getVal(fv, "endLatitude").equals("")) {
            enc.setDynamicProperty("End Latitude", (getVal(fv, "endLatitude")));
        }

        if (!getVal(fv, "startLongitude").equals("")) {
            enc.setDynamicProperty("Start Longitude", (getVal(fv, "startLongitude")));
        }
        if (!getVal(fv, "startLatitude").equals("")) {
            enc.setDynamicProperty("Start Latitude", (getVal(fv, "startLatitude")));
        }

        if (!getVal(fv, "beginWaypoint").equals("")) {
            enc.setDynamicProperty("Begin Waypoint", (getVal(fv, "beginWaypoint")));
        }
        if (!getVal(fv, "endWaypoint").equals("")) {
            enc.setDynamicProperty("End Waypoint", (getVal(fv, "endWaypoint")));
        }

        //xxxxxxxx

        String guid = CommonConfiguration.getGlobalUniqueIdentifierPrefix(context) + encID;

        //new additions for DarwinCore
        enc.setDWCGlobalUniqueIdentifier(guid);
        enc.setDWCImageURL((request.getScheme() + "://" + CommonConfiguration.getURLLocation(request)
                + "/encounters/encounter.jsp?number=" + encID));

        //populate DarwinCore dates

        DateTimeFormatter fmt = ISODateTimeFormat.date();
        String strOutputDateTime = fmt.print(dt);
        enc.setDWCDateAdded(strOutputDateTime);
        enc.setDWCDateAdded(new Long(dt.toDateTime().getMillis()));
        //System.out.println("I set the date as a LONG to: "+enc.getDWCDateAddedLong());
        enc.setDWCDateLastModified(strOutputDateTime);

        //this will try to set from MediaAssetMetadata -- ymmv
        if (!llSet)
            enc.setLatLonFromAssets();
        if (enc.getYear() < 1)
            enc.setDateFromAssets();

        String newnum = "";
        if (!spamBot) {
            newnum = myShepherd.storeNewEncounter(enc, encID);
            enc.refreshAssetFormats(myShepherd);

            //*after* persisting this madness, then lets kick MediaAssets to IA for whatever fate awaits them
            //  note: we dont send Annotations here, as they are always(forever?) trivial annotations, so pretty disposable

            // might want to set detection status here (on the main thread)

            for (MediaAsset ma : enc.getMedia()) {
                ma.setDetectionStatus(IBEISIA.STATUS_INITIATED);
            }

            Task parentTask = null; //this is *not* persisted, but only used so intakeMediaAssets will inherit its params
            if (locCode != null) {
                parentTask = new Task();
                JSONObject tp = new JSONObject();
                JSONObject mf = new JSONObject();
                mf.put("locationId", locCode);
                tp.put("matchingSetFilter", mf);
                parentTask.setParameters(tp);
            }
            Task task = org.ecocean.ia.IA.intakeMediaAssets(myShepherd, enc.getMedia(), parentTask); //TODO are they *really* persisted for another thread (queue)
            myShepherd.storeNewTask(task);
            Logger log = LoggerFactory.getLogger(EncounterForm.class);
            log.info("New encounter submission: <a href=\"" + request.getScheme() + "://"
                    + CommonConfiguration.getURLLocation(request) + "/encounters/encounter.jsp?number=" + encID
                    + "\">" + encID + "</a>");
            System.out.println("ENCOUNTER SAVED???? newnum=" + newnum + "; IA => " + task);
            org.ecocean.ShepherdPMF.getPMF(context).getDataStoreCache().evictAll();
        }

        if (newnum.equals("fail")) {
            request.setAttribute("number", "fail");
            return;
        }

        //return a forward to display.jsp
        System.out.println("Ending data submission.");
        if (!spamBot) {

            //send submitter on to confirmSubmit.jsp
            //response.sendRedirect(request.getScheme()+"://" + CommonConfiguration.getURLLocation(request) + "/confirmSubmit.jsp?number=" + encID);
            WebUtils.redirectToSavedRequest(request, response, ("/confirmSubmit.jsp?number=" + encID));

            //start email appropriate parties
            if (CommonConfiguration.sendEmailNotifications(context)) {
                myShepherd.beginDBTransaction();
                try {
                    // Retrieve background service for processing emails
                    ThreadPoolExecutor es = MailThreadExecutorService.getExecutorService();
                    Properties submitProps = ShepherdProperties.getProperties("submit.properties",
                            ServletUtilities.getLanguageCode(request), context);
                    // Email new submission address(es) defined in commonConfiguration.properties
                    Map<String, String> tagMap = NotificationMailer.createBasicTagMap(request, enc);
                    List<String> mailTo = NotificationMailer
                            .splitEmails(CommonConfiguration.getNewSubmissionEmail(context));
                    String mailSubj = submitProps.getProperty("newEncounter") + enc.getCatalogNumber();
                    for (String emailTo : mailTo) {
                        NotificationMailer mailer = new NotificationMailer(context,
                                ServletUtilities.getLanguageCode(request), emailTo, "newSubmission-summary",
                                tagMap);
                        mailer.setUrlScheme(request.getScheme());
                        es.execute(mailer);
                    }

                    // Email those assigned this location code
                    if (enc.getLocationID() != null) {
                        String informMe = null;
                        try {
                            informMe = myShepherd.getAllUserEmailAddressesForLocationID(enc.getLocationID(),
                                    context);
                        } catch (Exception ef) {
                            ef.printStackTrace();
                        }
                        if (informMe != null) {
                            List<String> cOther = NotificationMailer.splitEmails(informMe);
                            for (String emailTo : cOther) {
                                NotificationMailer mailer = new NotificationMailer(context, null, emailTo,
                                        "newSubmission-summary", tagMap);
                                mailer.setUrlScheme(request.getScheme());
                                es.execute(mailer);
                            }
                        }
                    }

                    // Add encounter dont-track tag for remaining notifications (still needs email-hash assigned).
                    tagMap.put(NotificationMailer.EMAIL_NOTRACK, "number=" + enc.getCatalogNumber());

                    // Email submitter and photographer
                    if ((enc.getPhotographerEmails() != null) && (enc.getPhotographerEmails().size() > 0)) {
                        List<String> cOther = enc.getPhotographerEmails();
                        for (String emailTo : cOther) {
                            String msg = CommonConfiguration.appendEmailRemoveHashString(request, "", emailTo,
                                    context);
                            tagMap.put(NotificationMailer.EMAIL_HASH_TAG,
                                    Encounter.getHashOfEmailString(emailTo));
                            NotificationMailer mailer = new NotificationMailer(context, null, emailTo,
                                    "newSubmission", tagMap);
                            mailer.setUrlScheme(request.getScheme());
                            es.execute(mailer);
                        }
                    }
                    if ((enc.getSubmitterEmails() != null) && (enc.getSubmitterEmails().size() > 0)) {
                        List<String> cOther = enc.getSubmitterEmails();
                        for (String emailTo : cOther) {

                            String msg = CommonConfiguration.appendEmailRemoveHashString(request, "", emailTo,
                                    context);
                            tagMap.put(NotificationMailer.EMAIL_HASH_TAG,
                                    Encounter.getHashOfEmailString(emailTo));
                            NotificationMailer mailer = new NotificationMailer(context, null, emailTo,
                                    "newSubmission", tagMap);
                            mailer.setUrlScheme(request.getScheme());
                            es.execute(mailer);
                        }
                    }

                    // Email interested others
                    if ((enc.getInformOthersEmails() != null) && (enc.getInformOthersEmails().size() > 0)) {
                        List<String> cOther = enc.getInformOthersEmails();
                        for (String emailTo : cOther) {

                            String msg = CommonConfiguration.appendEmailRemoveHashString(request, "", emailTo,
                                    context);
                            tagMap.put(NotificationMailer.EMAIL_HASH_TAG,
                                    Encounter.getHashOfEmailString(emailTo));
                            NotificationMailer mailer = new NotificationMailer(context, null, emailTo,
                                    "newSubmission", tagMap);
                            mailer.setUrlScheme(request.getScheme());
                            es.execute(mailer);
                        }
                    }
                    /*  
                    if ((enc.getInformOthers() != null) && (!enc.getInformOthers().trim().equals(""))) {
                      List<String> cOther = NotificationMailer.splitEmails(enc.getInformOthers());
                      for (String emailTo : cOther) {
                        String msg = CommonConfiguration.appendEmailRemoveHashString(request, "", emailTo, context);
                        tagMap.put(NotificationMailer.EMAIL_HASH_TAG, Encounter.getHashOfEmailString(emailTo));
                        NotificationMailer mailer=new NotificationMailer(context, null, emailTo, "newSubmission", tagMap);
                        mailer.setUrlScheme(request.getScheme());
                        es.execute(mailer);
                      }
                    }
                    */

                    es.shutdown();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    myShepherd.rollbackDBTransaction();

                }
            } //end email appropriate parties

        } else {
            response.sendRedirect(
                    request.getScheme() + "://" + CommonConfiguration.getURLLocation(request) + "/spambot.jsp");
        }

    } //end "if (fileSuccess)

    myShepherd.closeDBTransaction();
    //return null;
}

From source file:org.ecocean.servlet.EncounterResetDate.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("EncounterResetDate.class");
    //set up for response
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    boolean locked = false;

    boolean isOwner = true;

    if ((request.getParameter("number") != null)) {
        myShepherd.beginDBTransaction();
        Encounter fixMe = myShepherd.getEncounter(request.getParameter("number"));
        setDateLastModified(fixMe);//from w ww  .j av a  2s. co  m
        String oldDate = "";
        String newDate = "";

        try {

            oldDate = fixMe.getDate();

            if ((request.getParameter("datepicker") == null)
                    || (request.getParameter("datepicker").trim().equals(""))) {
                fixMe.setYear(0);
                fixMe.setMonth(0);
                fixMe.setDay(0);
                fixMe.setHour(0);
                newDate = fixMe.getDate();
            } else {

                /**
                 * Old method of parsing
                fixMe.setDay(Integer.parseInt(request.getParameter("day")));
                fixMe.setMonth(Integer.parseInt(request.getParameter("month")));
                fixMe.setYear(Integer.parseInt(request.getParameter("year")));
                fixMe.setHour(Integer.parseInt(request.getParameter("hour")));
                fixMe.setMinutes(request.getParameter("minutes"));
                */

                //new method using a datepicker
                //switch to datepicker
                //if(getVal(fv, "datepicker")!=null){
                //System.out.println("Trying to read date: "+getVal(fv, "datepicker").replaceAll(" ", "T"));

                DateTimeFormatter parser1 = ISODateTimeFormat.dateOptionalTimeParser();
                //LocalDateTime reportedDateTime=parser1.parseLocalDateTime(request.getParameter("datepicker").replaceAll(" ", "T"));
                LocalDateTime reportedDateTime = new LocalDateTime(
                        parser1.parseMillis(request.getParameter("datepicker").replaceAll(" ", "T")));

                //System.out.println("Day of month is: "+reportedDateTime.getDayOfMonth()); 
                StringTokenizer str = new StringTokenizer(
                        request.getParameter("datepicker").replaceAll(" ", "T"), "-");

                int numTokens = str.countTokens();
                if (numTokens >= 1) {
                    try {
                        fixMe.setYear(new Integer(reportedDateTime.getYear()));
                    } catch (Exception e) {
                        fixMe.setYear(-1);
                    }
                }
                if (numTokens >= 2) {
                    try {
                        fixMe.setMonth(new Integer(reportedDateTime.getMonthOfYear()));
                    } catch (Exception e) {
                        fixMe.setMonth(-1);
                    }
                } else {
                    fixMe.setMonth(-1);
                }
                //see if we can get a day, because we do want to support only yyy-MM too
                if (str.countTokens() >= 3) {
                    try {
                        fixMe.setDay(new Integer(reportedDateTime.getDayOfMonth()));
                    } catch (Exception e) {
                        fixMe.setDay(0);
                    }
                } else {
                    fixMe.setDay(0);
                }

                //see if we can get a time and hour, because we do want to support only yyy-MM too
                StringTokenizer strTime = new StringTokenizer(
                        request.getParameter("datepicker").replaceAll(" ", "T"), "T");
                if (strTime.countTokens() > 1) {
                    try {
                        fixMe.setHour(new Integer(reportedDateTime.getHourOfDay()));
                    } catch (Exception e) {
                        fixMe.setHour(-1);
                    }
                    try {
                        fixMe.setMinutes(new Integer(reportedDateTime.getMinuteOfHour()).toString());
                    } catch (Exception e) {
                    }
                } else {
                    fixMe.setHour(-1);
                }
                //}

                newDate = fixMe.getDate();
                fixMe.addComments("<p><em>" + request.getRemoteUser() + " on "
                        + (new java.util.Date()).toString() + "</em><br>Changed encounter date from " + oldDate
                        + " to " + newDate + ".</p>");

                if (fixMe.getIndividualID() != null) {
                    String indieName = fixMe.getIndividualID();
                    if (myShepherd.isMarkedIndividual(indieName)) {
                        MarkedIndividual indie = myShepherd.getMarkedIndividual(indieName);
                        indie.refreshDependentProperties();
                    }
                }

            } //end else 
        } catch (Exception le) {
            locked = true;
            le.printStackTrace();
            myShepherd.rollbackDBTransaction();
        }

        //out.println(ServletUtilities.getHeader(request));
        if (!locked) {

            myShepherd.commitDBTransaction();
            out.println("<strong>Success:</strong> I have changed the encounter date from " + oldDate + " to "
                    + newDate + ".");
            //out.println("<p><a href=\"http://" + CommonConfiguration.getURLLocation(request) + "/encounters/encounter.jsp?number=" + request.getParameter("number") + "\">Return to encounter #" + request.getParameter("number") + "</a></p>\n");
            String message = "The date of encounter " + request.getParameter("number") + " was changed from "
                    + oldDate + " to " + newDate + ".";
            ServletUtilities.informInterestedParties(request, request.getParameter("number"), message, context);
            response.setStatus(HttpServletResponse.SC_OK);
        } else {

            out.println(
                    "<strong>Failure:</strong> I have NOT changed the encounter date because another user is currently modifying this encounter. Please try this operation again in a few seconds.");
            //out.println("<p><a href=\"http://" + CommonConfiguration.getURLLocation(request) + "/encounters/encounter.jsp?number=" + request.getParameter("number") + "\">Return to encounter " + request.getParameter("number") + "</a></p>\n");
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);

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

    } else {
        out.println(ServletUtilities.getHeader(request));
        out.println("<strong>Error:</strong> I don't have enough information to complete your request.");
        //out.println("<p><a href=\"http://" + CommonConfiguration.getURLLocation(request) + "/encounters/encounter.jsp?number=" + request.getParameter("number") + "\">Return to encounter " + request.getParameter("number") + "</a></p>\n");
        //out.println(ServletUtilities.getFooter(context));
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
    }

    out.close();
    myShepherd.closeDBTransaction();
}

From source file:org.jadira.usertype.dateandtime.joda.AbstractMultiColumnDateTime.java

License:Apache License

@Override
protected DateTime fromConvertedColumns(Object[] convertedColumns) {

    LocalDateTime datePart = (LocalDateTime) convertedColumns[0];
    DateTimeZone offset = (DateTimeZone) convertedColumns[1];

    final DateTime result;

    if (datePart == null) {
        result = null;//from  w  w w  .j  a v a  2 s .  c o m
    } else {
        result = new DateTime(datePart.getYear(), datePart.getMonthOfYear(), datePart.getDayOfMonth(),
                datePart.getHourOfDay(), datePart.getMinuteOfHour(), datePart.getSecondOfMinute(),
                datePart.getMillisOfSecond(), offset);
    }

    return result;
}

From source file:org.kuali.student.r2.common.dto.TimeOfDayInfo.java

License:Educational Community License

/**
 *
 * @param date a java.util.Date to which timeOfDay is added (the hours, minutes, seconds
 *             and milliseconds are ignored and treated as 0.  Only the month, day, year
 *             of date is relevant)/*from  w w w. java2 s .  c om*/
 * @param timeOfDay the TimeOfDay that is added to the date parameter
 * @return a java.util.Date that is the sum of date and timeOfDay
 */
public static Date getDateWithTimeOfDay(Date date, TimeOfDay timeOfDay) {
    if (date == null || timeOfDay == null) {
        return null;
    }
    // This is JODA which is the preferred way to deal with time.
    // One issue: Java's Date class doesn't have a way to store the timezone associated with the date.
    // Instead, it saves millis since Jan 1, 1970 (GMT), and uses the local machine's timezone to
    // interpret it (although, it can also handle UTC as a timezone).  To store the timezone, you either
    // need Joda's LocalDateTime or use the Calendar class.  Thus, it is recommended that you either
    // pass in the date relative to the current timezone, or perhaps redo this class where you pass
    // a timezone in, and don't use a Date class, but use a Joda DateTime class. --cclin
    LocalDateTime time = new LocalDateTime(date);
    LocalDateTime result = new LocalDateTime(time.getYear(), time.getMonthOfYear(), time.getDayOfMonth(),
            timeOfDay.getHour() == null ? 0 : timeOfDay.getHour(),
            timeOfDay.getMinute() == null ? 0 : timeOfDay.getMinute(),
            timeOfDay.getSecond() == null ? 0 : timeOfDay.getSecond(), 0);
    return result.toDate();
}

From source file:org.kzac.common.dto.TimeOfDayInfo.java

License:Educational Community License

/**
 * //from  w  ww .  j  av a 2 s .c o  m
 * @param date
 *            a java.util.Date to which timeOfDay is added (the hours,
 *            minutes, seconds and milliseconds are ignored and treated as
 *            0. Only the month, day, year of date is relevant)
 * @param timeOfDay
 *            the TimeOfDay that is added to the date parameter
 * @return a java.util.Date that is the sum of date and timeOfDay
 */
public static Date getDateWithTimeOfDay(Date date, TimeOfDay timeOfDay) {
    if (date == null || timeOfDay == null) {
        return null;
    }
    // This is JODA which is the preferred way to deal with time.
    // One issue: Java's Date class doesn't have a way to store the timezone
    // associated with the date.
    // Instead, it saves millis since Jan 1, 1970 (GMT), and uses the local
    // machine's timezone to
    // interpret it (although, it can also handle UTC as a timezone). To
    // store the timezone, you either
    // need Joda's LocalDateTime or use the Calendar class. Thus, it is
    // recommended that you either
    // pass in the date relative to the current timezone, or perhaps redo
    // this class where you pass
    // a timezone in, and don't use a Date class, but use a Joda DateTime
    // class. --cclin
    LocalDateTime time = new LocalDateTime(date);
    LocalDateTime result = new LocalDateTime(time.getYear(), time.getMonthOfYear(), time.getDayOfMonth(),
            timeOfDay.getHour() == null ? 0 : timeOfDay.getHour(),
            timeOfDay.getMinute() == null ? 0 : timeOfDay.getMinute(),
            timeOfDay.getSecond() == null ? 0 : timeOfDay.getSecond(), 0);
    return result.toDateTime().toDate();
}

From source file:org.netxilia.api.utils.DateUtils.java

License:Open Source License

public static LocalDateTime toLocalDateTime(ReadablePartial partial, LocalDateTime fullDateTime) {
    if (partial instanceof LocalDateTime) {
        return (LocalDateTime) partial;
    }/*from  w  ww  .  jav a  2 s.c o m*/
    if (partial instanceof LocalDate) {
        LocalDate d = (LocalDate) partial;
        return new LocalDateTime(d.getYear(), d.getMonthOfYear(), d.getDayOfMonth(),
                fullDateTime.getHourOfDay(), fullDateTime.getMinuteOfHour(), fullDateTime.getSecondOfMinute(),
                fullDateTime.getMillisOfSecond());
    }

    if (partial instanceof LocalTime) {
        LocalTime t = (LocalTime) partial;
        return new LocalDateTime(fullDateTime.getYear(), fullDateTime.getMonthOfYear(),
                fullDateTime.getDayOfMonth(), t.getHourOfDay(), t.getMinuteOfHour(), t.getSecondOfMinute(),
                t.getMillisOfSecond());
    }

    throw new IllegalArgumentException("The partial parameter has an unsupported class:" + partial.getClass());
}

From source file:org.odk.collect.android.fragments.dialogs.BikramSambatDatePickerDialog.java

License:Apache License

private void setUpDatePicker() {
    LocalDateTime localDateTime = getDate();
    try {/*from w  w w.  j ava2s  . c  o  m*/
        BikramSambatDate bikramSambatDate = BsCalendar.getInstance().toBik(localDateTime.getYear(),
                localDateTime.getMonthOfYear(), localDateTime.getDayOfMonth());
        setUpDayPicker(bikramSambatDate.day,
                BsCalendar.getInstance().daysInMonth(bikramSambatDate.year, bikramSambatDate.month));
        setUpMonthPicker(bikramSambatDate.month, monthsArray);
        setUpYearPicker(bikramSambatDate.year, MIN_SUPPORTED_YEAR, MAX_SUPPORTED_YEAR);
    } catch (BsException e) {
        Timber.e(e);
    }
}