I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
*smil* med at se det forkerte sted mener jeg at der jo er :
\"Constructor Summary\" og \"Constructor Detail\" det kunne jo være du havde overset det?! Folk kommer med nogle sjove spørgsmål, og det ser umiddelbart rigtigt ud det du laver.
// gennemløber arbejdsperioder (imellem aftaler) do { workCalRow = (WorkingCalendarRow)workingPeriods.get(periodNo++);
// start, slut på arbejdstidsperiode hStartString = (String)workCalRow.getAttribute(\"h_start\"); hEndString = (String)workCalRow.getAttribute(\"h_end\"); hStart = stringToCalendar(hStartString); hEnd = stringToCalendar(hEndString); if (appStart == null) appStart = stringToCalendar(hEndString); if (appEnd == null) appEnd = stringToCalendar(hEndString);
// gennemløber aftaler i enkelt arbejdstidsrum (fx 8.00 - 12.00) currentTime = hStart; // aftalestart skal være før eller lig med næste pause
while (currentTime.before(hEnd) && (appStart.before(hEnd) || appStart.equals(hEnd))) { // Er der en aftale (nuværende starttid før aftale start) if (currentTime.before(appStart)) { // Tidsrum imellem aftaler (eller pause-tider) freeTime = new TimeLength (currentTime, appStart); freeTimes.add(freeTime); } currentTime = appEnd;
if (appointmentNo < appointments.size()) { appElement = (Appointment)appointments.get(appointmentNo++);
// start, slut på aftale appStart = stringToCalendar((String)appElement.getAttribute(\"a_start\")); appEnd = stringToCalendar((String)appElement.getAttribute(\"a_end\")); } else appStart = appEnd = hEnd;
}// while ( }// do - while // flere arbejdsperioder while (periodNo < workingPeriods.size()); // System.out.println (\"workper size: \" + workingPeriods.size());
return freeTimes; }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- private List calculateFreeAppointments (int interval) throws java.rmi.RemoteException , java.sql.SQLException { PublicCalendar currentEndTime; // holder for sluttidspunkt TimeLength newTime; List freeAppointments = new LinkedList(); TimeLength currentTimeLength; PublicCalendar currentTime; if (freeTimes == null) freeTimes = calculateFreeTimes();
// gennemløber en periode boolean ok; do { currentEndTime = (PublicCalendar)currentTime.clone(); currentEndTime.add(Calendar.MINUTE, appointmentLength);
// starttidspunkt + aftalelængde skal være før periodeslutning ok = currentEndTime.beforeOrEqual(currentTimeLength.endTime()); if (ok) // fri aftaletid fundet { newTime = new TimeLength((PublicCalendar)currentTime.clone(), (PublicCalendar)currentEndTime.clone()); freeAppointments.add(newTime); } currentTime.add(Calendar.MINUTE, interval); } while (currentTime.before(currentTimeLength.endTime())); } // while(hasMore...
return freeAppointments; }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- // konverterer string af HHMM til PublicCalendar // tilpasset formatet for de tidsvariable i tabellerne private PublicCalendar stringToCalendar(String time) { int hour = Integer.parseInt(time.substring(0,2)); int minute = Integer.parseInt(time.substring(2,4)); PublicCalendar calTime = new PublicCalendar(hour, minute); calTime.set(PublicCalendar.SECOND, 0); calTime.setIsTime(true); calTime.setIsDate(false); return calTime; }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- /** næste ledige tid. fx 27112001 10.30 - 11.00 */ public TimeLength getNext() { return (TimeLength)freeAppointments.get(freeAppNo++); }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- /** næste frie arbejdsperiode dvs. tiden imellem 2 pauser. fx 8.00 - 12.00 */ public TimeLength getNextPeriod() { return (TimeLength)freeTimes.get(timeNumber++); }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- /** true hvis der findes flere ledige tider i denne collection */ public boolean hasMore() { return (freeAppointments.size() > freeAppNo); }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- /** true hvis der findes flere ledige arbejdsperioder i denne collection */ public boolean hasMorePeriods() { return (freeTimes.size() > timeNumber); }
//--------------------------------------------------------------------------- // //--------------------------------------------------------------------------- // test /* public static void main(String[] args) throws Exception { Condition c = new Condition(); c.setSubCondition(\"id = 1\"); Vector ressCol = Build01Driver.ressourceCollection ().getElement(c); Ressource ress = (Ressource)ressCol.get(0);
PublicCalendar dato = new PublicCalendar(); dato.set(2001, 11, 23); int aLength = 30;
long tid = System.currentTimeMillis(); FreeTimeCollection test = new FreeTimeCollection(ress, dato, aLength); // System.out.println (\"tid millis (450ms på 350Mhz win2k) \" + (System.currentTimeMillis() - tid));
Problemet viser sig kun når klasserne ligger i en package, hvorfor ved jeg ikke, slettes packages er der ingen problemer, ellers står der bare intet ved konstruktørene.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.