Example usage for org.joda.time DateTime plusHours

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

Introduction

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

Prototype

public DateTime plusHours(int hours) 

Source Link

Document

Returns a copy of this datetime plus the specified number of hours.

Usage

From source file:org.epics.archiverappliance.common.TimeUtils.java

public static Timestamp plusHours(Timestamp ts, int hours) {
    DateTime dateTime = new DateTime(ts.getTime(), DateTimeZone.UTC);
    DateTime retval = dateTime.plusHours(hours);
    Timestamp retts = new Timestamp(retval.getMillis());
    retts.setNanos(ts.getNanos());/*from   w  ww .ja  v a  2  s. c  o m*/
    return retts;
}

From source file:org.epics.archiverappliance.common.TimeUtils.java

/**
 * Given an epoch seconds and a granularity, this method gives you the first second in the next partition as epoch seconds.
 * @param epochSeconds/*  ww w  .ja  v a 2 s  .com*/
 * @param granularity
 * @return
 */
public static long getNextPartitionFirstSecond(long epochSeconds, PartitionGranularity granularity) {
    DateTime dateTime = new DateTime(epochSeconds * 1000, DateTimeZone.UTC);
    DateTime nextPartitionFirstSecond = null;
    switch (granularity) {
    case PARTITION_YEAR:
        nextPartitionFirstSecond = dateTime.plusYears(1).withMonthOfYear(1).withDayOfMonth(1).withHourOfDay(0)
                .withMinuteOfHour(0).withSecondOfMinute(0);
        return nextPartitionFirstSecond.getMillis() / 1000;
    case PARTITION_MONTH:
        nextPartitionFirstSecond = dateTime.plusMonths(1).withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0)
                .withSecondOfMinute(0);
        return nextPartitionFirstSecond.getMillis() / 1000;
    case PARTITION_DAY:
        nextPartitionFirstSecond = dateTime.plusDays(1).withHourOfDay(0).withMinuteOfHour(0)
                .withSecondOfMinute(0);
        return nextPartitionFirstSecond.getMillis() / 1000;
    case PARTITION_HOUR:
        nextPartitionFirstSecond = dateTime.plusHours(1).withMinuteOfHour(0).withSecondOfMinute(0);
        return nextPartitionFirstSecond.getMillis() / 1000;
    case PARTITION_5MIN:
    case PARTITION_15MIN:
    case PARTITION_30MIN:
        int approxMinutesPerChunk = granularity.getApproxMinutesPerChunk();
        DateTime nextPartForMin = dateTime.plusMinutes(approxMinutesPerChunk);
        int startOfPartitionForMin = (nextPartForMin.getMinuteOfHour() / approxMinutesPerChunk)
                * approxMinutesPerChunk;
        nextPartitionFirstSecond = nextPartForMin.withMinuteOfHour(startOfPartitionForMin)
                .withSecondOfMinute(0);
        return nextPartitionFirstSecond.getMillis() / 1000;
    default:
        throw new UnsupportedOperationException("Invalid Partition type " + granularity);
    }
}

From source file:org.fenixedu.academic.domain.WrittenEvaluation.java

License:Open Source License

protected List<EvaluationEventBean> getAllEvents(String description, Registration registration) {
    List<EvaluationEventBean> result = new ArrayList<EvaluationEventBean>();
    String url = CoreConfiguration.getConfiguration().applicationUrl();

    Set<ExecutionCourse> executionCourses = new HashSet<ExecutionCourse>();
    executionCourses.addAll(this.getAttendingExecutionCoursesFor(registration));

    if (this.getEnrollmentBeginDayDateYearMonthDay() != null) {
        DateTime enrollmentBegin = convertTimes(this.getEnrollmentBeginDayDateYearMonthDay(),
                this.getEnrollmentBeginTimeDateHourMinuteSecond());
        DateTime enrollmentEnd = convertTimes(this.getEnrollmentEndDayDateYearMonthDay(),
                this.getEnrollmentEndTimeDateHourMinuteSecond());

        result.add(new EvaluationEventBean("Inicio das inscries para " + description, enrollmentBegin,
                enrollmentBegin.plusHours(1), false, null, url + "/login", null, executionCourses));

        result.add(//from   w  w w.  j a v  a2 s  . co  m
                new EvaluationEventBean("Fim das inscries para " + description, enrollmentEnd.minusHours(1),
                        enrollmentEnd, false, null, url + "/login", null, executionCourses));
    }

    Set<Space> rooms = new HashSet<>();

    if (registration.getRoomFor(this) != null) {
        rooms.add(registration.getRoomFor(this));
    } else {
        for (WrittenEvaluationSpaceOccupation weSpaceOcupation : this
                .getWrittenEvaluationSpaceOccupationsSet()) {
            rooms.add(weSpaceOcupation.getRoom());
        }
    }

    WrittenEvaluationEnrolment writtenEvaluationEnrolment = getWrittenEvaluationEnrolmentFor(registration);
    Space assignedRoom = null;

    if (writtenEvaluationEnrolment != null) {
        assignedRoom = writtenEvaluationEnrolment.getRoom();
    }

    result.add(new EvaluationEventBean(description, this.getBeginningDateTime(), this.getEndDateTime(), false,
            assignedRoom, rooms, executionCourses.iterator().next().getSiteUrl(), null, executionCourses));

    return result;
}

From source file:org.fenixedu.academic.service.services.administrativeOffice.enrolment.MultiSemesterEnrolmentReporter.java

License:Open Source License

public void report(final int year, final int month, final int day, final int hour) {
    final DateTime enrolmentStartTime = new DateTime(year, month, day, hour, 0, 0, 0);
    final ExecutionSemester semester = ExecutionSemester.readByDateTime(enrolmentStartTime);
    final DateTime endTimeToReport = enrolmentStartTime.plusHours(hoursToReport);

    if (semester.getSemester().intValue() == semesterToReport) {
        semester.getCurriculumLineLogsSet().stream()

                .filter(l -> l instanceof EnrolmentLog)

                .filter(l -> !l.getDateDateTime().isBefore(enrolmentStartTime)
                        && !l.getDateDateTime().isAfter(endTimeToReport))

                .sorted((l1, l2) -> l1.getDateDateTime().compareTo(l2.getDateDateTime()))

                .forEach(l -> process(semester, enrolmentStartTime, l));

        semester.getAssociatedExecutionCoursesSet().stream()

                .flatMap(ec -> ec.getCourseLoadsSet().stream())

                .flatMap(cl -> cl.getShiftsSet().stream())

                .flatMap(s -> s.getShiftEnrolmentsSet().stream())

                .map(se -> se.getCreatedOn())

                .filter(dt -> !dt.isBefore(enrolmentStartTime) && !dt.isAfter(endTimeToReport))

                .map(dt -> new Interval(enrolmentStartTime, dt).toDuration().getStandardSeconds())

                .forEach(seconds -> add(semester, seconds, new int[] { 0, 0, 1 }));
    }// w w  w.j  a v  a  2s .c o  m
}

From source file:org.fenixedu.learning.api.EventsResource.java

License:Open Source License

private static Collection<ScheduleEventBean> projectEvents(Project project, ExecutionCourse executionCourse,
        Interval interval) {//from   w w  w.ja  v  a  2  s .  c  o  m
    DateTime projectStart = project.getProjectBeginDateTime();
    DateTime projectEnd = project.getProjectEndDateTime();

    Set<ScheduleEventBean> events = new HashSet<>();

    if (interval.contains(projectStart)) {
        events.add(new ScheduleEventBean(executionCourse.getPrettyAcronym(),
                project.getEvaluationType().toString(), project.getPresentationName(), projectStart,
                projectStart.plusHours(1), null, executionCourse.getSiteUrl(),
                colorForType(project.getEvaluationType()), null, null));
    }
    if (interval.contains(projectEnd)) {
        events.add(new ScheduleEventBean(executionCourse.getPrettyAcronym(),
                project.getEvaluationType().toString(), project.getPresentationName(), projectEnd.minusHours(1),
                projectEnd, null, executionCourse.getSiteUrl(), colorForType(project.getEvaluationType()), null,
                null));
    }

    return events;
}

From source file:org.hbird.business.navigation.processors.TimeRangeCalulator.java

License:Apache License

@Handler
public PredictionRequest<?> calculate(PredictionRequest<?> request) {

    PredictionConfigurationBase config = request.getConfiguration();
    int period = config.getPredictionPeriod();

    long startTime = request.getStartTime();
    DateTime start = new DateTime(startTime, DateTimeZone.UTC).withMinuteOfHour(0).withSecondOfMinute(0)
            .withMillisOfSecond(0);/*  www .j  a  va  2 s . c  o m*/
    DateTime end = start.plusHours(period);
    LOG.info("Prediction period {}h; from {} to {}", new Object[] { period,
            start.toString(Dates.ISO_8601_DATE_FORMATTER), end.toString(Dates.ISO_8601_DATE_FORMATTER) });

    request.setStartTime(start.getMillis());
    request.setEndTime(end.getMillis());
    return request;
}

From source file:org.jasig.portal.events.aggr.PortalEventPurgerImpl.java

License:Apache License

@AggrEventsTransactional
public EventProcessingResult doPurgeRawEvents() {
    if (!this.clusterLockService.isLockOwner(PURGE_RAW_EVENTS_LOCK_NAME)) {
        throw new IllegalStateException("The cluster lock " + PURGE_RAW_EVENTS_LOCK_NAME
                + " must be owned by the current thread and server");
    }/*  w w  w  .  j  ava 2s  .  co m*/

    final IEventAggregatorStatus eventPurgerStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.PURGING, true);

    //Update status with current server name
    final String serverName = this.portalInfoProvider.getUniqueServerName();
    eventPurgerStatus.setServerName(serverName);
    eventPurgerStatus.setLastStart(new DateTime());

    //Determine date of most recently aggregated data
    final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao
            .getEventAggregatorStatus(ProcessingType.AGGREGATION, false);
    if (eventAggregatorStatus == null || eventAggregatorStatus.getLastEventDate() == null) {
        //Nothing has been aggregated, skip purging

        eventPurgerStatus.setLastEnd(new DateTime());
        eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

        return new EventProcessingResult(0, null, null, true);
    }
    boolean complete = true;

    //Calculate purge end date from most recent aggregation minus the purge delay
    final DateTime lastAggregated = eventAggregatorStatus.getLastEventDate();
    DateTime purgeEnd = lastAggregated.minus(this.purgeDelay);

    //Determine the DateTime of the oldest event
    DateTime oldestEventDate = eventPurgerStatus.getLastEventDate();
    if (oldestEventDate == null) {
        oldestEventDate = this.portalEventDao.getOldestPortalEventTimestamp();
    }

    //Make sure purgeEnd is no more than 1 hour after the oldest event date to limit delete scope
    final DateTime purgeEndLimit = oldestEventDate.plusHours(1);
    if (purgeEndLimit.isBefore(purgeEnd)) {
        purgeEnd = purgeEndLimit;
        complete = false;
    }

    final Thread currentThread = Thread.currentThread();
    final String currentName = currentThread.getName();
    final int events;
    try {
        currentThread.setName(currentName + "-" + purgeEnd);

        //Purge events
        logger.debug("Starting purge of events before {}", purgeEnd);
        events = portalEventDao.deletePortalEventsBefore(purgeEnd);
    } finally {
        currentThread.setName(currentName);
    }

    //Update the status object and store it
    purgeEnd = purgeEnd.minusMillis(100); //decrement by 100ms since deletePortalEventsBefore uses lessThan and not lessThanEqualTo
    eventPurgerStatus.setLastEventDate(purgeEnd);
    eventPurgerStatus.setLastEnd(new DateTime());
    eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus);

    return new EventProcessingResult(events, oldestEventDate, purgeEnd, complete);
}

From source file:org.jasig.portlet.blackboardvcportlet.service.SessionForm.java

License:Apache License

public SessionForm(ServerConfiguration serverConfiguration) {
    this.newSession = true;
    this.needToSendInitialEmail = true;

    final DateTime startTime = DateTime.now().plusHours(1).hourOfDay().roundFloorCopy();
    this.setStartTime(startTime);
    this.setEndTime(startTime.plusHours(1));

    this.boundaryTime = serverConfiguration.getBoundaryTime();
    this.maxCameras = serverConfiguration.getMaxAvailableCameras();
    this.maxTalkers = serverConfiguration.getMaxAvailableTalkers();
    this.raiseHandOnEnter = serverConfiguration.isRaiseHandOnEnter();
}

From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.SnowMelting.java

License:Open Source License

@Execute
public void process() throws Exception { // transform the

    if (init2) {/*from  www  .j av  a2s.  c om*/
        outMeasured = new double[pDimMeas];
        init2 = false;
        if (pDoReadMeas) {
            // outSimulated=new double[pDimMeas+1];
            // outMeasured = new double[pDimMeas];
            int dim = pDimMeas;
            double[] portate = new double[dim];
            int cont_portate = 0;
            // System.out.println("SONOENTRATO");
            // lettura portate//
            try {

                String str = new String();
                str = pPathtoMeas;

                FileInputStream fstream = new FileInputStream(str);
                DataInputStream in = new DataInputStream(fstream);
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String strLine;

                double aa = 0;
                while ((strLine = br.readLine()) != null) {
                    aa = Double.parseDouble(strLine);
                    portate[cont_portate] = aa;
                    // System.out.println(aa);
                    cont_portate += 1;

                }
                in.close();
            } catch (Exception e) {
                // System.err.println("Errore: " + e.getMessage());
            }

            outMeasured = portate;
            pDoReadMeas = false;

        }
    }

    /*
     * The models use only one value of the latitude. So I have decided to
     * set it to the center of the raster. Extract the CRS of the
     * GridCoverage and transform the value of a WGS84 latitude.
     */
    CoordinateReferenceSystem sourceCRS = inDem.getCoordinateReferenceSystem2D();

    int numPointToCompute = 0;

    GridGeometry2D inRainGridGeo = null;

    if (doRaster == false) {
        pointsToComputeId2Coordinates = getCoordinate(numPointToCompute, inStations, fStationsid);
        numPointToCompute = pointsToComputeId2Coordinates.size();

    } else if (doRaster == true) {
        if (inRainGrid != null) {
            inRainGridGeo = inRainGrid.getGridGeometry();
        }
        pointsToComputeId2Coordinates = getCoordinate(inRainGridGeo);
        numPointToCompute = pointsToComputeId2Coordinates.size();
    }
    Set<Integer> pointsToInterpolateIdSet = pointsToComputeId2Coordinates.keySet();
    Iterator<Integer> idIterator = pointsToInterpolateIdSet.iterator();
    int j = 0;
    xStation = new double[numPointToCompute];
    yStation = new double[numPointToCompute];
    idStation = new int[numPointToCompute];
    colnumvetVect = new int[numPointToCompute];
    rownumvetVect = new int[numPointToCompute];
    lambdaVect = new double[numPointToCompute];
    CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84;
    while (idIterator.hasNext()) {
        int id = idIterator.next();
        idStation[j] = id;
        Coordinate coordinate = (Coordinate) pointsToComputeId2Coordinates.get(id);
        xStation[j] = coordinate.x;
        yStation[j] = coordinate.y;

        double srcPts[] = new double[] { (xStation[j]), (yStation[j]) };
        Coordinate source = new Coordinate(srcPts[0], srcPts[1]);

        Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) };
        CrsUtilities.reproject(sourceCRS, targetCRS, so);
        // the latitude value
        lambdaVect[j] = Math.toRadians(so[0].getY());

        j += 1;

    }
    MathTransform transf = inDem.getGridGeometry().getCRSToGrid2D();
    for (int i = 0; i < xStation.length; i++) {

        DirectPosition point = new DirectPosition2D(sourceCRS, xStation[i], yStation[i]);
        DirectPosition gridPoint = transf.transform(point, null);

        colnumvetVect[i] = (int) gridPoint.getCoordinate()[0];
        rownumvetVect[i] = (int) gridPoint.getCoordinate()[1];
        // System.out.println(idStation[i] + " "
        // + gridPoint.getCoordinate()[0] + " "
        // + gridPoint.getCoordinate()[1]);
    }

    double minimofeb = 0;
    double minimomar = 0;
    double minimoapr = 0;
    double minimomagg = 0;
    double minimogiu = 0;
    double dx = 0;
    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").withZone(DateTimeZone.UTC);
    DateTime startcurrentDatetime = formatter.parseDateTime(tStartDate);

    DateTime endcurrentDatetime = formatter.parseDateTime(tEndDate);
    long diff = 0;
    if (doDaily == false) {
        diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60);
    }
    if (doDaily) {
        diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60 * 24);
    }
    DateTime array[] = new DateTime[(int) diff];
    if (doDaily == false) {
        for (int i = 0; i < array.length; i++) {
            array[i] = startcurrentDatetime.plusHours(i);
        }
    }
    if (doDaily) {
        for (int i = 0; i < array.length; i++) {
            array[i] = startcurrentDatetime.plusDays(i);
        }
    }
    if (doOneTime) {
        attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inSkyview);
        dx = attribute.get(CoverageUtilities.XRES);

        double srcPts[] = new double[] { attribute.get(CoverageUtilities.EAST),
                attribute.get(CoverageUtilities.SOUTH) };
        // CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84;
        Coordinate source = new Coordinate(srcPts[0], srcPts[1]);
        Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) };
        CrsUtilities.reproject(sourceCRS, targetCRS, so);
        // the latitude value
        lambda = Math.toRadians(so[0].getY());
        CoverageUtilities.getRegionParamsFromGridCoverage(inSkyview);

        if (pMode == 0) {

            RenderedImage insFebTmpRI = inInsFeb.getRenderedImage();
            width = insFebTmpRI.getWidth();
            height = insFebTmpRI.getHeight();
            insFebWR = CoverageUtilities.replaceNovalue(insFebTmpRI, -9999.0);

            RenderedImage insJanTmpRI = inInsJan.getRenderedImage();
            width = insJanTmpRI.getWidth();
            height = insJanTmpRI.getHeight();
            insJanWR = CoverageUtilities.replaceNovalue(insJanTmpRI, -9999.0);

            RenderedImage insMarTmpRI = inInsMar.getRenderedImage();
            insMarWR = CoverageUtilities.replaceNovalue(insMarTmpRI, -9999.0);
            insMarTmpRI = null;

            RenderedImage insAprTmpRI = inInsApr.getRenderedImage();
            insAprWR = CoverageUtilities.replaceNovalue(insAprTmpRI, -9999.0);
            insAprTmpRI = null;

            RenderedImage insMayTmpRI = inInsMay.getRenderedImage();
            insMayWR = CoverageUtilities.replaceNovalue(insMayTmpRI, -9999.0);
            insMayTmpRI = null;

            RenderedImage insJuneTmpRI = inInsJun.getRenderedImage();
            insJunWR = CoverageUtilities.replaceNovalue(insJuneTmpRI, -9999.0);
            insJuneTmpRI = null;
            minimofeb = findminumum(insFebWR, hoursToFeb);
            minimomar = findminumum(insMarWR, hoursToMar);
            minimoapr = findminumum(insAprWR, hoursToApr);
            minimomagg = findminumum(insMayWR, hoursToMay);
            minimogiu = findminumum(insJunWR, hoursToJune);

        }
        RenderedImage drmri = inDem.getRenderedImage();
        demwr = CoverageUtilities.replaceNovalue(drmri, -9999.0);
        drmri = null;
        RenderedImage SkyTmpRI = inSkyview.getRenderedImage();
        skyviewfactorWR = CoverageUtilities.renderedImage2WritableRaster(SkyTmpRI, true);

        inCondIniL = new HashMap<Integer, double[]>();
        inCondIniI = new HashMap<Integer, double[]>();
        outSWEData = new HashMap<Integer, double[]>();
        outFreezingData = new HashMap<Integer, double[]>();

        doOneTime = false;
    }
    folder = null;
    P_listOfFiles = null;
    T_listOfFiles = null;
    if (doRaster == true) {

        folder = new File(pathRainfMaps);
        P_listOfFiles = folder.listFiles();
        for (int i = 0; i < P_listOfFiles.length; i++) {
            System.out.println(P_listOfFiles[i]);
        }
        folder = new File(pathTempMaps);
        T_listOfFiles = folder.listFiles();
        for (int i = 0; i < T_listOfFiles.length; i++) {
            System.out.println(T_listOfFiles[i]);
        }

    }
    OmsTimeSeriesIteratorReader reader_temp = new OmsTimeSeriesIteratorReader();
    OmsTimeSeriesIteratorReader reader_solar = new OmsTimeSeriesIteratorReader();

    OmsTimeSeriesIteratorReader reader_rainf = new OmsTimeSeriesIteratorReader();
    OmsTimeSeriesIteratorWriter writer = new OmsTimeSeriesIteratorWriter();
    OmsTimeSeriesIteratorWriter writer2 = new OmsTimeSeriesIteratorWriter();
    OmsTimeSeriesIteratorWriter writer3 = new OmsTimeSeriesIteratorWriter();
    OmsTimeSeriesIteratorWriter writer4 = new OmsTimeSeriesIteratorWriter();
    OmsTimeSeriesIteratorWriter writer5 = new OmsTimeSeriesIteratorWriter();

    if (doRaster == false) {

        if (!((pathTemp == null))) {
            reader_temp.file = pathTemp;
            reader_temp.idfield = "ID";
            reader_temp.tStart = tStartDate;
            reader_temp.tEnd = tEndDate;
            reader_temp.fileNovalue = "-9999";
            reader_temp.tTimestep = inTimestep;
        }

        if (!((pathToSolarRad == null))) {
            reader_solar.file = pathToSolarRad;
            reader_solar.idfield = "ID";
            reader_solar.tStart = tStartDate;
            reader_solar.tEnd = tEndDate;
            reader_solar.fileNovalue = "-9999";
            reader_solar.tTimestep = inTimestep;
        }

        if (!(pathRainf == null)) {

            reader_rainf.file = pathRainf;
            reader_rainf.idfield = "ID";
            reader_rainf.tStart = tStartDate;
            reader_rainf.tEnd = tEndDate;
            reader_rainf.fileNovalue = "-9999";
            reader_rainf.tTimestep = inTimestep;

        }

        if (pathToMelting != null) {
            writer.file = pathToMelting;
            writer.tStart = tStartDate;
            writer.tTimestep = inTimestep;
        }
        if (pathToSwe != null) {
            writer2.file = pathToSwe;
            writer2.tStart = tStartDate;
            writer2.tTimestep = inTimestep;

        }
        if (pathToFreezing != null) {
            writer3.file = pathToFreezing;
            writer3.tStart = tStartDate;
            writer3.tTimestep = inTimestep;

        }
        if (pathToSolidWater != null) {
            writer4.file = pathToSolidWater;
            writer4.tStart = tStartDate;
            writer4.tTimestep = inTimestep;
        }
        if (pathToLiquidWater != null) {
            writer5.file = pathToLiquidWater;
            writer5.tStart = tStartDate;
            writer5.tTimestep = inTimestep;

        }

        if (numSitesWhereCalibrate != 1) {
            outSWEVECTOR = new double[array.length * numSitesWhereCalibrate];
            outMELTINGVECTOR = new double[array.length * numSitesWhereCalibrate];
        } else {
            outSWEVECTOR = new double[array.length];
            outMELTINGVECTOR = new double[array.length];

        }
        conta = 0;
    }

    outMELTINGVECTOR_forMaps = new double[numPointToCompute];
    outSWEVECTOR_forMaps = new double[numPointToCompute];

    for (int i = 0; i < array.length; i++) {
        outSWE = new HashMap<Integer, double[]>();
        outMeltingData = new HashMap<Integer, double[]>();
        // System.out.println(" data=" + array[i]);
        DateTime currentime = array[i];
        if (doRaster == false) {
            if (!(pathTemp == null)) {
                reader_temp.nextRecord();
                temp_values = reader_temp.outData;
            }

            if (!(pathRainf == null)) {
                reader_rainf.nextRecord();
                rain_values = reader_rainf.outData;
            }
            if (!(pathToSolarRad == null)) {
                reader_solar.nextRecord();
                solar_values = reader_solar.outData;
            }
        }
        int month = currentime.getMonthOfYear();
        switch (month) {

        case 1:
            calcMelting(insJanWR, demwr, dx, currentime, hoursToJan, minimofeb, i);
            break;
        case 10:
            calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i);
            break;
        case 11:
            calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i);
            break;
        case 12:
            calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i);
            break;
        case 2:
            calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i);
            break;
        case 3:
            calcMelting(insMarWR, demwr, dx, currentime, hoursToMar, minimomar, i);
            break;
        case 4:
            calcMelting(insAprWR, demwr, dx, currentime, hoursToApr, minimoapr, i);
            break;
        case 5:
            calcMelting(insMayWR, demwr, dx, currentime, hoursToMay, minimomagg, i);
            break;
        case 6:
            calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i);
            break;
        case 7:
            calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i);
            break;
        case 8:
            calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i);
            break;
        case 9:
            calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i);
            break;
        default:
            break;
        }

        //
        // calcInsolation(lambda, pitWR, gradientWR, insolationWR,
        // staoWR,
        // diffuseWR, dx, currentime);
        if (doRaster == false) {
            if (pathToMelting != null) {
                writer.inData = outMeltingData;

                writer.writeNextLine();
            }
            if (pathToSolidWater != null) {
                writer4.inData = inCondIniI;

                writer4.writeNextLine();
            }
            if (pathToLiquidWater != null) {
                writer5.inData = inCondIniL;

                writer5.writeNextLine();
            }
            if (pathToSwe != null) {
                writer2.inData = outSWEData;
                writer2.writeNextLine();
            }
            if (pathToFreezing != null) {
                writer3.inData = outFreezingData;
                writer3.writeNextLine();
            }
        } else if (doRaster) {

            storeResult(outSWEVECTOR_forMaps, outMELTINGVECTOR_forMaps, pointsToComputeId2Coordinates);
            // }

        }
        // pm.worked(i - startDay);
    }
    if (pathToMelting != null) {
        writer.close();
    }
    if (pathToSwe != null) {
        writer2.close();
    }
    if (pathToFreezing != null) {
        writer3.close();
    }
    if (pathToSolidWater != null) {
        writer4.close();
    }
    if (pathToLiquidWater != null) {
        writer5.close();
    }
    outSwevector = outSWEVECTOR;

}

From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.lwrb.OmsLongwaveRadiationBalance.java

License:Open Source License

@Execute
public void process() throws Exception { // transform the

    if (init) {//from   w  ww. j  a va  2  s.c  o  m
        outSimulated = new double[pDimMeas];
        outMeasured = new double[pDimMeas];

        init = false;

    }
    if (init2) {
        init2 = false;
        if (pDoReadMeas) {
            // outSimulated=new double[pDimMeas+1];
            // outMeasured = new double[pDimMeas];
            int dim = pDimMeas;
            double[] portate = new double[dim];
            int cont_portate = 0;
            // System.out.println("SONOENTRATO");
            // lettura portate//
            try {

                String str = new String();
                str = pPathtoMeas;

                FileInputStream fstream = new FileInputStream(str);
                DataInputStream in = new DataInputStream(fstream);
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String strLine;

                double aa = 0;
                while ((strLine = br.readLine()) != null) {
                    aa = Double.parseDouble(strLine);
                    portate[cont_portate] = aa;
                    // System.out.println(aa);
                    cont_portate += 1;

                }
                in.close();
            } catch (Exception e) {
                // System.err.println("Errore: " + e.getMessage());
            }

            outMeasured = portate;
            pDoReadMeas = false;

        }
    }

    // extract some attributes of the map
    attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inElev);
    double dx = attribute.get(CoverageUtilities.XRES);

    /*
     * The models use only one value of the latitude. So I have decided to
     * set it to the center of the raster. Extract the CRS of the
     * GridCoverage and transform the value of a WGS84 latitude.
     */
    CoordinateReferenceSystem sourceCRS = inElev.getCoordinateReferenceSystem2D();
    CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84;

    DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").withZone(DateTimeZone.UTC);
    DateTime startcurrentDatetime = formatter.parseDateTime(tStartDate);

    DateTime endcurrentDatetime = formatter.parseDateTime(tEndDate);

    long diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60);
    DateTime array[] = new DateTime[(int) diff];
    if (doDaily == false) {
        for (int i = 0; i < array.length; i++) {
            array[i] = startcurrentDatetime.plusHours(i);
        }
    }
    if (doDaily == true) {
        for (int i = 0; i < array.length; i++) {
            array[i] = startcurrentDatetime.plusDays(i);
        }
    }
    if (workWithRaster == false) {
        List<Double> xStationList = new ArrayList<Double>();
        List<Double> yStationList = new ArrayList<Double>();
        List<Double> zStationList = new ArrayList<Double>();
        List<Double> iddList = new ArrayList<Double>();
        List<Double> albedoList = new ArrayList<Double>();

        /*
         * counter for the number of station with measured value !=0.
         */
        /*
         * Store the station coordinates and measured data in the array.
         */
        FeatureIterator<SimpleFeature> stationsIter = inStations.features();
        try {
            while (stationsIter.hasNext()) {
                SimpleFeature feature = stationsIter.next();
                double zzz = 0;
                int id = ((Number) feature.getAttribute(fStationsid)).intValue();
                if (fStationsAlb != null) {
                    double albedo = ((Number) feature.getAttribute(fStationsAlb)).doubleValue();
                    albedoList.add(albedo);
                }
                Coordinate coordinate = ((Geometry) feature.getDefaultGeometry()).getCentroid().getCoordinate();
                xStationList.add(coordinate.x);
                yStationList.add(coordinate.y);
                zStationList.add(zzz);

                iddList.add((double) id);

            }
        } finally {
            stationsIter.close();
        }

        int nStaz = xStationList.size();
        /*
         * The coordinates of the station points plus in last position a
         * place for the coordinate of the point to interpolate.
         */
        xStation = new double[nStaz];
        yStation = new double[nStaz];
        zStation = new double[nStaz];
        idStation = new int[nStaz];
        colnumvetVect = new int[nStaz];
        rownumvetVect = new int[nStaz];
        albedoStation = new double[nStaz];
        if (nStaz != 0) {
            for (int i = 0; i < nStaz; i++) {
                double xTmp = xStationList.get(i);
                double yTmp = yStationList.get(i);
                double zTmp = zStationList.get(i);
                int idTmp = iddList.get(i).intValue();
                xStation[i] = xTmp;
                yStation[i] = yTmp;
                zStation[i] = zTmp;
                idStation[i] = idTmp;
                if (albedoList.size() != 0l) {
                    albedoStation[i] = albedoList.get(i);
                } else {
                    if (!isNovalue(pAlphag)) {
                        albedoStation[i] = pAlphag;
                    } else {
                        albedoStation[i] = 0.5;
                    }
                }
            }
        }

        MathTransform transf = inElev.getGridGeometry().getCRSToGrid2D();
        for (int i = 0; i < xStation.length; i++) {

            DirectPosition point = new DirectPosition2D(sourceCRS, xStation[i], yStation[i]);
            DirectPosition gridPoint = transf.transform(point, null);

            colnumvetVect[i] = (int) gridPoint.getCoordinate()[0];
            rownumvetVect[i] = (int) gridPoint.getCoordinate()[1];
            System.out.println(
                    idStation[i] + "  " + gridPoint.getCoordinate()[0] + " " + gridPoint.getCoordinate()[1]);
        }
    }

    double srcPts[] = new double[] { attribute.get(CoverageUtilities.EAST),
            attribute.get(CoverageUtilities.SOUTH) };

    Coordinate source = new Coordinate(srcPts[0], srcPts[1]);
    Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) };
    CrsUtilities.reproject(sourceCRS, targetCRS, so);
    // the latitude value
    lambda = Math.toRadians(so[0].getY());
    CoverageUtilities.getRegionParamsFromGridCoverage(inElev);
    RenderedImage pitTmpRI = inElev.getRenderedImage();
    width = pitTmpRI.getWidth();
    height = pitTmpRI.getHeight();
    pitWR = CoverageUtilities.replaceNovalue(pitTmpRI, -9999.0);
    pitTmpRI = null;

    WritableRaster insolationWR = CoverageUtilities.createDoubleWritableRaster(width, height, null,
            pitWR.getSampleModel(), 0.0);

    WritableRaster staoWR = CoverageUtilities.createDoubleWritableRaster(width, height, null,
            pitWR.getSampleModel(), 0.0);

    WritableRaster diffuseWR = CoverageUtilities.createDoubleWritableRaster(width, height, null,
            pitWR.getSampleModel(), 0.0);
    WritableRaster gradientWR = normalVector(pitWR, dx);

    //
    vetgio = new double[array.length];

    if (workWithRaster) {
        resultstaoWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(),
                0.0);
        resultinsWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(),
                0.0);
        resultdiffWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(),
                0.0);

        for (int i = 0; i < array.length; i++) {
            DateTime currentime = array[i];
            calcInsolation(lambda, pitWR, gradientWR, insolationWR, staoWR, diffuseWR, dx, currentime);

            // pm.worked(i - startDay);
        }
    }
    if (workWithRaster == false) {

        OmsTimeSeriesIteratorReader reader_temp = new OmsTimeSeriesIteratorReader();
        if (!((inPathToTemp == null))) {
            reader_temp.file = inPathToTemp;
            reader_temp.idfield = "ID";
            reader_temp.tStart = tStartDate;
            reader_temp.tEnd = tEndDate;
            reader_temp.fileNovalue = "-9999";
            reader_temp.tTimestep = inTimestep;
        }

        OmsTimeSeriesIteratorReader reader_umi = new OmsTimeSeriesIteratorReader();

        if (!(inPathToHumidity == null)) {

            reader_umi.file = inPathToHumidity;
            reader_umi.idfield = "ID";
            reader_umi.tStart = tStartDate;
            reader_umi.tEnd = tEndDate;
            reader_umi.fileNovalue = "-9999";
            reader_umi.tTimestep = inTimestep;

        }

        OmsTimeSeriesIteratorReader reader_soiltemp = new OmsTimeSeriesIteratorReader();

        if (!(inPathToSoilTemp == null)) {

            reader_soiltemp.file = inPathToSoilTemp;
            reader_soiltemp.idfield = "ID";
            reader_soiltemp.tStart = tStartDate;
            reader_soiltemp.tEnd = tEndDate;
            reader_soiltemp.fileNovalue = "-9999";
            reader_soiltemp.tTimestep = inTimestep;

        }

        OmsTimeSeriesIteratorReader reader_clear = new OmsTimeSeriesIteratorReader();

        if (!(inPathToClearness == null)) {

            reader_clear.file = inPathToClearness;
            reader_clear.idfield = "ID";
            reader_clear.tStart = tStartDate;
            reader_clear.tEnd = tEndDate;
            reader_clear.fileNovalue = "-9999";
            reader_clear.tTimestep = inTimestep;

        }

        OmsTimeSeriesIteratorWriter writer4 = new OmsTimeSeriesIteratorWriter();
        OmsTimeSeriesIteratorWriter writer5 = new OmsTimeSeriesIteratorWriter();
        OmsTimeSeriesIteratorWriter writer6 = new OmsTimeSeriesIteratorWriter();

        writer4.file = pathToLongwaveDownwelling;
        writer5.file = pathToLongwaveUpwelling;
        writer6.file = pathToLongwave;

        writer4.tStart = tStartDate;
        writer5.tStart = tStartDate;
        writer6.tStart = tStartDate;

        writer4.tTimestep = inTimestep;
        writer5.tTimestep = inTimestep;
        writer6.tTimestep = inTimestep;

        for (int i = 0; i < array.length; i++) {
            outHMlongwaveDownwelling = new HashMap<Integer, double[]>();
            outHMlongwaveUpwelling = new HashMap<Integer, double[]>();
            outHMlongwave = new HashMap<Integer, double[]>();

            System.out.println(" data=" + array[i]);
            DateTime currentime = array[i];
            if (!(inPathToTemp == null)) {
                reader_temp.nextRecord();
                tempvalues = reader_temp.outData;
            }

            if (!(inPathToClearness == null)) {
                reader_clear.nextRecord();
                clearindexvalue = reader_clear.outData;
            }

            if (!(inPathToHumidity == null)) {
                reader_umi.nextRecord();
                umivalues = reader_umi.outData;
            }

            if (!(inPathToSoilTemp == null)) {
                reader_soiltemp.nextRecord();
                soiltempvalues = reader_soiltemp.outData;
            }

            calcInsolation(lambda, pitWR, gradientWR, insolationWR, staoWR, diffuseWR, dx, currentime);

            writer4.inData = outHMlongwaveDownwelling;
            writer4.writeNextLine();
            writer5.inData = outHMlongwaveUpwelling;
            writer5.writeNextLine();
            writer6.inData = outHMlongwave;
            writer6.writeNextLine();

            // pm.worked(i - startDay);
        }
        if (pathToLongwaveDownwelling != null) {
            writer4.close();
        }
        if (pathToLongwaveUpwelling != null) {
            writer5.close();
        }
        if (pathToLongwave != null) {
            writer6.close();
        }
    }

}