From 493f99784c1ea11e63bd3d63cc3ecbcc60c601b7 Mon Sep 17 00:00:00 2001 From: Tiffany Hoang Date: Wed, 28 Nov 2012 17:40:52 -0500 Subject: [PATCH] base holidays off of conflicts instead of appointments --- .classpath | 24 + .project | 17 + .settings/org.eclipse.jdt.core.prefs | 12 + INSTALL.txt | 70 + README-Build.txt | 50 + README-Server.txt | 109 + Trunk.iml | 27 + bin/ant | 302 ++ bin/ant.bat | 106 + bin/ant.cmd | 92 + bin/antRun | 26 + bin/antRun.bat | 45 + bin/antenv.cmd | 99 + bin/envset.cmd | 130 + bin/lcp.bat | 30 + bin/runrc.cmd | 59 + build.bat | 19 + build.properties | 14 + build.properties.template | 14 + build.sh | 11 + build.xml | 820 ++++ buildcalendar.xml | 217 + doc.properties | 8 + doc/ReleaseNotes0.10.0beta.txt | 40 + doc/ReleaseNotes0.11.3.txt | 14 + doc/ReleaseNotes0.11beta1.txt | 36 + doc/ReleaseNotes0.11beta2.txt | 62 + doc/ReleaseNotes0.12.1.txt | 26 + doc/ReleaseNotes0.12.2.txt | 35 + doc/ReleaseNotes0.12.3.txt | 32 + doc/ReleaseNotes0.12.4.txt | 52 + doc/ReleaseNotes0.12.beta1.txt | 19 + doc/ReleaseNotes0.12.beta2.txt | 23 + doc/ReleaseNotes0_6.txt | 41 + doc/ReleaseNotes0_61.txt | 30 + doc/ReleaseNotes0_7.txt | 29 + doc/ReleaseNotes0_71.txt | 19 + doc/ReleaseNotes0_72.txt | 13 + doc/ReleaseNotes0_8.txt | 13 + doc/ReleaseNotes0_81.txt | 22 + doc/ReleaseNotes0_9.txt | 31 + doc/ReleaseNotes1.0.txt | 86 + doc/ReleaseNotes1.0RC1.txt | 65 + doc/ReleaseNotes1.0alpha1.txt | 5 + doc/ReleaseNotes1.1.txt | 23 + doc/ReleaseNotes1.2.1.txt | 66 + doc/ReleaseNotes1.2.txt | 60 + doc/ReleaseNotes1.2beta1.txt | 27 + doc/ReleaseNotes1.2beta2.txt | 47 + doc/ReleaseNotes1.3.1.txt | 37 + doc/ReleaseNotes1.3.2.txt | 48 + doc/ReleaseNotes1.3.txt | 30 + doc/ReleaseNotes1.4.0.txt | 18 + doc/ReleaseNotes1.4.trunk.txt | 25 + doc/drafts-gereon-2002.zip | Bin 0 -> 13727 bytes doc/history.txt | 149 + doc/kurzanleitung-informatik.txt | 51 + doc/todo | 115 + eclipse-build/META-INF/rapla-plugin.list | 16 + .../org/rapla/AppointmentFormaterImpl.class | Bin 0 -> 9047 bytes eclipse-build/org/rapla/COPYING | 280 ++ .../org/rapla/CommunicatorTest.class | Bin 0 -> 6614 bytes .../org/rapla/HugeDataFileTest.class | Bin 0 -> 3096 bytes eclipse-build/org/rapla/Main$1.class | Bin 0 -> 1234 bytes eclipse-build/org/rapla/Main.class | Bin 0 -> 6647 bytes eclipse-build/org/rapla/MainApplet$1.class | Bin 0 -> 676 bytes eclipse-build/org/rapla/MainApplet$2.class | Bin 0 -> 710 bytes eclipse-build/org/rapla/MainApplet$3.class | Bin 0 -> 1716 bytes eclipse-build/org/rapla/MainApplet.class | Bin 0 -> 2810 bytes eclipse-build/org/rapla/MainServlet$1$1.class | Bin 0 -> 1095 bytes eclipse-build/org/rapla/MainServlet$1.class | Bin 0 -> 1051 bytes eclipse-build/org/rapla/MainServlet.class | Bin 0 -> 11299 bytes eclipse-build/org/rapla/MockMailer.class | Bin 0 -> 1229 bytes eclipse-build/org/rapla/MyResources.class | Bin 0 -> 898 bytes eclipse-build/org/rapla/MyResources.xml | 8 + eclipse-build/org/rapla/PermissionTest.class | Bin 0 -> 7991 bytes eclipse-build/org/rapla/RaplaDemoTest.class | Bin 0 -> 958 bytes eclipse-build/org/rapla/RaplaLocaleImpl.class | Bin 0 -> 7082 bytes eclipse-build/org/rapla/RaplaLocaleTest.class | Bin 0 -> 2669 bytes .../org/rapla/RaplaLogKitAdapater.class | Bin 0 -> 2553 bytes .../org/rapla/RaplaMainContainer.class | Bin 0 -> 9085 bytes .../org/rapla/RaplaMetaConfigInfo.class | Bin 0 -> 2258 bytes eclipse-build/org/rapla/RaplaResources.class | Bin 0 -> 31394 bytes eclipse-build/org/rapla/RaplaResources.xml | 3846 +++++++++++++++++ .../org/rapla/RaplaResources_cs.class | Bin 0 -> 24001 bytes .../org/rapla/RaplaResources_de.class | Bin 0 -> 26670 bytes .../org/rapla/RaplaResources_es.class | Bin 0 -> 26424 bytes .../org/rapla/RaplaResources_fr.class | Bin 0 -> 26886 bytes .../org/rapla/RaplaResources_nl.class | Bin 0 -> 24668 bytes .../org/rapla/RaplaResources_pl.class | Bin 0 -> 23903 bytes .../org/rapla/RaplaStartupEnvironment.class | Bin 0 -> 3343 bytes eclipse-build/org/rapla/RaplaTestCase.class | Bin 0 -> 4355 bytes eclipse-build/org/rapla/ServerTest.class | Bin 0 -> 19434 bytes eclipse-build/org/rapla/ServletTestBase.class | Bin 0 -> 3779 bytes eclipse-build/org/rapla/SunBugsTest.class | Bin 0 -> 981 bytes eclipse-build/org/rapla/ToolsTest.class | Bin 0 -> 932 bytes .../org/rapla/bootstrap/RaplaLoader.class | Bin 0 -> 4440 bytes .../RaplaServerAsServiceLoader.class | Bin 0 -> 1011 bytes .../rapla/bootstrap/RaplaServerLoader.class | Bin 0 -> 972 bytes .../bootstrap/RaplaStandaloneLoader.class | Bin 0 -> 746 bytes .../org/rapla/client/ClientService.class | Bin 0 -> 814 bytes .../rapla/client/RaplaClientListener.class | Bin 0 -> 220 bytes .../client/RaplaClientListenerAdapter.class | Bin 0 -> 630 bytes .../client/internal/LanguageChooser$1.class | Bin 0 -> 2106 bytes .../client/internal/LanguageChooser.class | Bin 0 -> 2885 bytes .../client/internal/LoadingProgress$1.class | Bin 0 -> 971 bytes .../client/internal/LoadingProgress$2.class | Bin 0 -> 979 bytes .../client/internal/LoadingProgress$3.class | Bin 0 -> 991 bytes .../client/internal/LoadingProgress.class | Bin 0 -> 3697 bytes .../rapla/client/internal/LoginDialog$1.class | Bin 0 -> 976 bytes .../rapla/client/internal/LoginDialog$2.class | Bin 0 -> 988 bytes .../internal/LoginDialog$Listener.class | Bin 0 -> 1350 bytes .../rapla/client/internal/LoginDialog.class | Bin 0 -> 8079 bytes .../internal/RaplaClientServiceImpl$1.class | Bin 0 -> 1321 bytes .../internal/RaplaClientServiceImpl$2.class | Bin 0 -> 718 bytes .../internal/RaplaClientServiceImpl$3.class | Bin 0 -> 2372 bytes .../internal/RaplaClientServiceImpl$4.class | Bin 0 -> 2347 bytes .../internal/RaplaClientServiceImpl$5.class | Bin 0 -> 1293 bytes ...ntServiceImpl$DefaultMenuInsertPoint.class | Bin 0 -> 1313 bytes .../internal/RaplaClientServiceImpl.class | Bin 0 -> 19146 bytes eclipse-build/org/rapla/client/package.html | 10 + .../AbstractBlockField$DateDocument.class | Bin 0 -> 2176 bytes .../AbstractBlockField$Listener.class | Bin 0 -> 3810 bytes .../calendar/AbstractBlockField.class | Bin 0 -> 6741 bytes .../components/calendar/ArrowPolygon.class | Bin 0 -> 1295 bytes .../components/calendar/CalendarMenu$1.class | Bin 0 -> 1091 bytes .../calendar/CalendarMenu$Listener.class | Bin 0 -> 3631 bytes .../components/calendar/CalendarMenu.class | Bin 0 -> 10027 bytes .../rapla/components/calendar/DEPENDENCIES | 7 + .../components/calendar/DateChangeEvent.class | Bin 0 -> 666 bytes .../calendar/DateChangeListener.class | Bin 0 -> 253 bytes .../rapla/components/calendar/DateField.class | Bin 0 -> 9758 bytes .../rapla/components/calendar/DateModel.class | Bin 0 -> 5685 bytes .../components/calendar/DateRenderer.class | Bin 0 -> 241 bytes .../calendar/DateRendererAdapter.class | Bin 0 -> 2171 bytes .../components/calendar/DaySelection.class | Bin 0 -> 11249 bytes .../NavButton$ButtonStateChecker.class | Bin 0 -> 1687 bytes .../rapla/components/calendar/NavButton.class | Bin 0 -> 4003 bytes .../components/calendar/NumberField.class | Bin 0 -> 5255 bytes .../calendar/PaintEnvironment.class | Bin 0 -> 623 bytes .../calendar/RaplaArrowButton$1.class | Bin 0 -> 1289 bytes .../RaplaArrowButton$ButtonStateChecker.class | Bin 0 -> 1739 bytes .../calendar/RaplaArrowButton.class | Bin 0 -> 3232 bytes .../calendar/RaplaCalendar$Listener.class | Bin 0 -> 1779 bytes .../components/calendar/RaplaCalendar.class | Bin 0 -> 6977 bytes .../calendar/RaplaCalendarExample$1.class | Bin 0 -> 1184 bytes .../calendar/RaplaCalendarExample$2.class | Bin 0 -> 2927 bytes .../calendar/RaplaCalendarExample$3.class | Bin 0 -> 1195 bytes .../calendar/RaplaCalendarExample$4.class | Bin 0 -> 1185 bytes .../calendar/RaplaCalendarExample.class | Bin 0 -> 6976 bytes .../components/calendar/RaplaComboBox$1.class | Bin 0 -> 1591 bytes .../calendar/RaplaComboBox$Listener$1.class | Bin 0 -> 1174 bytes .../calendar/RaplaComboBox$Listener.class | Bin 0 -> 3323 bytes .../calendar/RaplaComboBox$MyPopup.class | Bin 0 -> 787 bytes .../components/calendar/RaplaComboBox.class | Bin 0 -> 5533 bytes .../calendar/RaplaNumber$Listener$1.class | Bin 0 -> 1169 bytes .../calendar/RaplaNumber$Listener.class | Bin 0 -> 2255 bytes .../components/calendar/RaplaNumber.class | Bin 0 -> 4322 bytes .../calendar/RaplaTime$Listener.class | Bin 0 -> 2065 bytes .../rapla/components/calendar/RaplaTime.class | Bin 0 -> 9004 bytes .../rapla/components/calendar/TimeField.class | Bin 0 -> 8074 bytes .../calendar/TimeFieldChinaExample$1.class | Bin 0 -> 1190 bytes .../calendar/TimeFieldChinaExample.class | Bin 0 -> 2174 bytes .../components/calendar/TimeList$1.class | Bin 0 -> 1379 bytes .../components/calendar/TimeList$2.class | Bin 0 -> 1378 bytes .../components/calendar/TimeList$3.class | Bin 0 -> 1546 bytes .../rapla/components/calendar/TimeList.class | Bin 0 -> 8864 bytes .../rapla/components/calendar/TimeModel.class | Bin 0 -> 3176 bytes .../components/calendar/TimeRenderer.class | Bin 0 -> 237 bytes .../calendar/WeekendHighlightRenderer.class | Bin 0 -> 1351 bytes .../org/rapla/components/calendar/clock.png | Bin 0 -> 764 bytes .../jdk14adapter/AWTAdapterFactory.class | Bin 0 -> 1918 bytes .../jdk14adapter/AWTAdapterFactoryImpl.class | Bin 0 -> 1016 bytes .../calendar/jdk14adapter/FocusAdapter.class | Bin 0 -> 451 bytes .../calendar/jdk14adapter/FocusTester.class | Bin 0 -> 189 bytes .../jdk14adapter/MyFocusAdapter.class | Bin 0 -> 1682 bytes .../jdk14adapter/MyFocusTraversalPolicy.class | Bin 0 -> 903 bytes .../jdk14adapter/MyWheelListener.class | Bin 0 -> 965 bytes .../calendar/jdk14adapter/package.html | 7 + .../rapla/components/calendar/package.html | 7 + .../AbstractGroupStrategy$1.class | Bin 0 -> 1203 bytes .../AbstractGroupStrategy$2.class | Bin 0 -> 1366 bytes .../calendarview/AbstractGroupStrategy.class | Bin 0 -> 6202 bytes .../calendarview/BestFitStrategy.class | Bin 0 -> 720 bytes .../rapla/components/calendarview/Block.class | Bin 0 -> 182 bytes .../calendarview/BlockComparator.class | Bin 0 -> 814 bytes .../calendarview/BuildStrategy.class | Bin 0 -> 227 bytes .../components/calendarview/Builder.class | Bin 0 -> 354 bytes .../calendarview/CalendarView.class | Bin 0 -> 431 bytes .../components/calendarview/DEPENDENCIES | 4 + .../components/calendarview/MonthMapper.class | Bin 0 -> 1385 bytes .../RaplaCalendarViewExample$1.class | Bin 0 -> 1228 bytes .../RaplaCalendarViewExample$2.class | Bin 0 -> 1111 bytes .../RaplaCalendarViewExample$3.class | Bin 0 -> 1110 bytes .../RaplaCalendarViewExample$4.class | Bin 0 -> 1115 bytes ...plaCalendarViewExample$MyAppointment.class | Bin 0 -> 1595 bytes .../RaplaCalendarViewExample$MyBlock.class | Bin 0 -> 2373 bytes .../RaplaCalendarViewExample$MyBuilder.class | Bin 0 -> 2672 bytes ...lendarViewExample$MyCalendarListener.class | Bin 0 -> 3112 bytes ...rViewExample$MyMonthCalendarListener.class | Bin 0 -> 2288 bytes .../RaplaCalendarViewExample.class | Bin 0 -> 6096 bytes .../calendarview/WeekdayMapper.class | Bin 0 -> 1810 bytes .../calendarview/WeekdayMapperTest.class | Bin 0 -> 1277 bytes .../AbstractHTMLView$HTMLSmallDaySlot.class | Bin 0 -> 2321 bytes .../calendarview/html/AbstractHTMLView.class | Bin 0 -> 3862 bytes .../calendarview/html/HTMLBlock.class | Bin 0 -> 256 bytes .../html/HTMLCompactWeekView.class | Bin 0 -> 6548 bytes .../calendarview/html/HTMLMonthView.class | Bin 0 -> 6039 bytes .../calendarview/html/HTMLPeriodView.class | Bin 0 -> 9184 bytes .../html/HTMLWeekView$HTMLDaySlot.class | Bin 0 -> 1738 bytes .../calendarview/html/HTMLWeekView$Slot.class | Bin 0 -> 2053 bytes .../calendarview/html/HTMLWeekView.class | Bin 0 -> 9398 bytes .../components/calendarview/package.html | 7 + .../swing/AbstractDaySlot$BlockListener.class | Bin 0 -> 4202 bytes .../calendarview/swing/AbstractDaySlot.class | Bin 0 -> 4171 bytes .../swing/AbstractSwingCalendar.class | Bin 0 -> 12733 bytes .../calendarview/swing/DaySlot.class | Bin 0 -> 451 bytes .../calendarview/swing/DraggingHandler.class | Bin 0 -> 7430 bytes .../swing/LargeDaySlot$Slot.class | Bin 0 -> 2959 bytes .../calendarview/swing/LargeDaySlot.class | Bin 0 -> 9644 bytes .../swing/PeriodDaySlot$Slot.class | Bin 0 -> 4003 bytes .../calendarview/swing/PeriodDaySlot.class | Bin 0 -> 9234 bytes .../calendarview/swing/SelectionHandler.class | Bin 0 -> 5880 bytes .../calendarview/swing/SmallDaySlot.class | Bin 0 -> 6570 bytes .../calendarview/swing/SwingBlock.class | Bin 0 -> 360 bytes .../swing/SwingCompactWeekView.class | Bin 0 -> 10951 bytes .../calendarview/swing/SwingMonthView.class | Bin 0 -> 10486 bytes .../calendarview/swing/SwingPeriodView.class | Bin 0 -> 11556 bytes .../calendarview/swing/SwingWeekView.class | Bin 0 -> 13982 bytes .../calendarview/swing/TimeScale.class | Bin 0 -> 5741 bytes .../calendarview/swing/ViewListener.class | Bin 0 -> 622 bytes .../swing/scaling/IRowScale.class | Bin 0 -> 517 bytes .../swing/scaling/IRowScaleSmall.class | Bin 0 -> 282 bytes .../swing/scaling/LinearRowScale.class | Bin 0 -> 3854 bytes .../swing/scaling/OneRowScale.class | Bin 0 -> 995 bytes .../scaling/VariableRowScale$PeriodRow.class | Bin 0 -> 956 bytes .../swing/scaling/VariableRowScale.class | Bin 0 -> 4204 bytes .../components/iolayer/ComponentPrinter.class | Bin 0 -> 2125 bytes .../org/rapla/components/iolayer/DEPENDECIES | 5 + .../components/iolayer/DefaultIO$1.class | Bin 0 -> 1366 bytes .../iolayer/DefaultIO$PSFileFilter.class | Bin 0 -> 1185 bytes .../rapla/components/iolayer/DefaultIO.class | Bin 0 -> 10863 bytes .../components/iolayer/FileContent.class | Bin 0 -> 846 bytes .../components/iolayer/IOInterface.class | Bin 0 -> 1610 bytes .../components/iolayer/PrintExport.class | Bin 0 -> 4122 bytes .../rapla/components/iolayer/WebstartIO.class | Bin 0 -> 8556 bytes .../org/rapla/components/iolayer/package.html | 7 + .../org/rapla/components/layout/DEPENDENCIES | 3 + .../components/layout/TableLayout$Entry.class | Bin 0 -> 1355 bytes .../rapla/components/layout/TableLayout.class | Bin 0 -> 19632 bytes .../layout/TableLayoutConstants.class | Bin 0 -> 495 bytes .../layout/TableLayoutConstraints.class | Bin 0 -> 2688 bytes .../org/rapla/components/layout/package.html | 6 + .../org/rapla/components/mail/Convert.class | Bin 0 -> 1313 bytes .../rapla/components/mail/MailException.class | Bin 0 -> 687 bytes .../rapla/components/mail/MailInterface.class | Bin 0 -> 530 bytes .../org/rapla/components/mail/MailTest.class | Bin 0 -> 1527 bytes .../rapla/components/mail/MailToFile.class | Bin 0 -> 3149 bytes .../rapla/components/mail/MailapiClient.class | Bin 0 -> 5160 bytes .../components/mail/MockMailServer$1.class | Bin 0 -> 2691 bytes .../components/mail/MockMailServer.class | Bin 0 -> 1314 bytes .../org/rapla/components/mail/Pop3.class | Bin 0 -> 11260 bytes .../org/rapla/components/mail/PopStatus.class | Bin 0 -> 747 bytes .../rapla/components/mail/SmtpClient.class | Bin 0 -> 7318 bytes .../org/rapla/components/mail/package.html | 7 + .../org/rapla/components/package.html | 8 + .../tablesorter/TableSorter$1.class | Bin 0 -> 711 bytes .../tablesorter/TableSorter$2.class | Bin 0 -> 752 bytes .../tablesorter/TableSorter$Arrow.class | Bin 0 -> 1807 bytes .../tablesorter/TableSorter$Directive.class | Bin 0 -> 734 bytes .../TableSorter$MouseHandler.class | Bin 0 -> 1911 bytes .../tablesorter/TableSorter$Row.class | Bin 0 -> 2184 bytes .../TableSorter$SortableHeaderRenderer.class | Bin 0 -> 1879 bytes .../TableSorter$TableModelHandler.class | Bin 0 -> 1732 bytes .../components/tablesorter/TableSorter.class | Bin 0 -> 9357 bytes .../treetable/AbstractTreeTableModel.class | Bin 0 -> 3874 bytes .../rapla/components/treetable/DEPENDENCIES | 4 + ...reeTable$DelegationgTreeCellEditor$1.class | Bin 0 -> 1444 bytes ...JTreeTable$DelegationgTreeCellEditor.class | Bin 0 -> 5597 bytes ...able$ListToTreeSelectionModelWrapper.class | Bin 0 -> 2638 bytes .../treetable/JTreeTable$RendererTree.class | Bin 0 -> 5083 bytes .../treetable/JTreeTable$TreeBorder.class | Bin 0 -> 1841 bytes .../JTreeTable$TreeTableModelAdapter$1.class | Bin 0 -> 915 bytes ...TreeTableModelAdapter$UpdateRunnable.class | Bin 0 -> 1012 bytes .../JTreeTable$TreeTableModelAdapter.class | Bin 0 -> 4791 bytes .../components/treetable/JTreeTable.class | Bin 0 -> 10776 bytes .../treetable/TableToolTipRenderer.class | Bin 0 -> 222 bytes .../treetable/TreeTableEditor.class | Bin 0 -> 331 bytes .../components/treetable/TreeTableModel.class | Bin 0 -> 478 bytes .../rapla/components/treetable/package.html | 6 + .../org/rapla/components/util/Assert.class | Bin 0 -> 2274 bytes .../components/util/AssertionError.class | Bin 0 -> 672 bytes .../org/rapla/components/util/Command.class | Bin 0 -> 193 bytes .../util/CommandQueue$MyEventThread.class | Bin 0 -> 1112 bytes .../rapla/components/util/CommandQueue.class | Bin 0 -> 1557 bytes .../org/rapla/components/util/DEPENDENCIES | 7 + .../org/rapla/components/util/DateTools.class | Bin 0 -> 3263 bytes .../util/FilterIteratorTest$1.class | Bin 0 -> 951 bytes .../components/util/FilterIteratorTest.class | Bin 0 -> 1315 bytes .../org/rapla/components/util/IOUtil.class | Bin 0 -> 8350 bytes .../components/util/InverseComparator.class | Bin 0 -> 648 bytes .../org/rapla/components/util/JNLPUtil.class | Bin 0 -> 1539 bytes .../org/rapla/components/util/Mutex.class | Bin 0 -> 2060 bytes .../rapla/components/util/MutexTest$1.class | Bin 0 -> 895 bytes .../rapla/components/util/MutexTest$2.class | Bin 0 -> 871 bytes .../org/rapla/components/util/MutexTest.class | Bin 0 -> 2075 bytes .../rapla/components/util/OrderedMap.class | Bin 0 -> 1727 bytes .../util/SerializableDateTimeFormat.class | Bin 0 -> 3894 bytes .../rapla/components/util/SmallIntMap.class | Bin 0 -> 3465 bytes .../components/util/SmallIntMapTest.class | Bin 0 -> 2678 bytes .../org/rapla/components/util/Tools$1.class | Bin 0 -> 1169 bytes .../org/rapla/components/util/Tools$2.class | Bin 0 -> 933 bytes .../org/rapla/components/util/Tools.class | Bin 0 -> 4953 bytes .../org/rapla/components/util/ToolsTest.class | Bin 0 -> 1012 bytes .../util/iterator/ArrayIterator.class | Bin 0 -> 912 bytes .../util/iterator/FilterIterator.class | Bin 0 -> 1186 bytes .../util/iterator/IntIterator.class | Bin 0 -> 1559 bytes .../util/iterator/IteratorChain.class | Bin 0 -> 1068 bytes .../util/iterator/NestedIterator.class | Bin 0 -> 1335 bytes .../components/util/iterator/package.html | 4 + .../org/rapla/components/util/package.html | 4 + .../util/xml/XMLReaderAdapter.class | Bin 0 -> 2155 bytes .../util/xml/XMLTransformerAdapter.class | Bin 0 -> 2829 bytes .../rapla/components/util/xml/XMLWriter.class | Bin 0 -> 4512 bytes .../components/xmlbundle/CompoundI18n.class | Bin 0 -> 2322 bytes .../rapla/components/xmlbundle/DEPENDENCIES | 7 + .../components/xmlbundle/I18nBundle.class | Bin 0 -> 951 bytes .../xmlbundle/LocaleChangeEvent.class | Bin 0 -> 675 bytes .../xmlbundle/LocaleChangeListener.class | Bin 0 -> 263 bytes .../components/xmlbundle/LocaleSelector.class | Bin 0 -> 678 bytes .../xmlbundle/impl/DictionaryEntry.class | Bin 0 -> 1987 bytes .../xmlbundle/impl/I18nBundleImpl.class | Bin 0 -> 14085 bytes .../xmlbundle/impl/LocaleSelectorImpl.class | Bin 0 -> 2864 bytes .../xmlbundle/impl/RaplaDictionary.class | Bin 0 -> 2493 bytes .../impl/ResourceFileGenerator.class | Bin 0 -> 5928 bytes .../xmlbundle/impl/TranslationParser$1.class | Bin 0 -> 5544 bytes .../xmlbundle/impl/TranslationParser.class | Bin 0 -> 8898 bytes .../xmlbundle/impl/UniqueKeyException.class | Bin 0 -> 479 bytes .../rapla/components/xmlbundle/package.html | 10 + .../rapla/components/xmlbundle/resources.dtd | 28 + .../xmlbundle/tests/AbstractI18nTest.class | Bin 0 -> 2451 bytes .../xmlbundle/tests/I18nBundleImplTest.class | Bin 0 -> 4088 bytes .../org/rapla/entities/Annotatable.class | Bin 0 -> 446 bytes .../org/rapla/entities/Category.class | Bin 0 -> 1272 bytes .../rapla/entities/CategoryAnnotations.class | Bin 0 -> 219 bytes .../rapla/entities/DependencyException.class | Bin 0 -> 925 bytes eclipse-build/org/rapla/entities/Entity.class | Bin 0 -> 419 bytes .../entities/EntityNotFoundException.class | Bin 0 -> 475 bytes .../entities/IllegalAnnotationException.class | Bin 0 -> 700 bytes .../rapla/entities/MultiLanguageName.class | Bin 0 -> 2867 bytes .../rapla/entities/MultiLanguageNamed.class | Bin 0 -> 229 bytes eclipse-build/org/rapla/entities/Named.class | Bin 0 -> 169 bytes .../org/rapla/entities/NamedComparator.class | Bin 0 -> 1280 bytes .../org/rapla/entities/Ownable.class | Bin 0 -> 213 bytes .../org/rapla/entities/RaplaObject.class | Bin 0 -> 180 bytes .../org/rapla/entities/RaplaType.class | Bin 0 -> 2918 bytes .../rapla/entities/ReadOnlyException.class | Bin 0 -> 780 bytes .../org/rapla/entities/Timestamp.class | Bin 0 -> 248 bytes .../rapla/entities/UniqueKeyException.class | Bin 0 -> 460 bytes eclipse-build/org/rapla/entities/User.class | Bin 0 -> 1102 bytes .../org/rapla/entities/UserComparator.class | Bin 0 -> 1163 bytes .../CalendarModelConfiguration.class | Bin 0 -> 1042 bytes .../entities/configuration/Preferences.class | Bin 0 -> 1134 bytes .../configuration/RaplaConfiguration.class | Bin 0 -> 4557 bytes .../entities/configuration/RaplaMap.class | Bin 0 -> 478 bytes .../AbstractClassifiableFilter$1.class | Bin 0 -> 1115 bytes .../internal/AbstractClassifiableFilter.class | Bin 0 -> 4083 bytes .../CalendarModelConfigurationImpl.class | Bin 0 -> 4533 bytes .../internal/PreferencesImpl$1.class | Bin 0 -> 1003 bytes .../internal/PreferencesImpl$2.class | Bin 0 -> 1030 bytes .../internal/PreferencesImpl.class | Bin 0 -> 6602 bytes .../internal/RaplaMapImpl$1.class | Bin 0 -> 1012 bytes .../internal/RaplaMapImpl$2.class | Bin 0 -> 985 bytes .../configuration/internal/RaplaMapImpl.class | Bin 0 -> 7029 bytes .../rapla/entities/domain/Allocatable.class | Bin 0 -> 1306 bytes .../rapla/entities/domain/Appointment.class | Bin 0 -> 1869 bytes .../entities/domain/AppointmentBlock.class | Bin 0 -> 1517 bytes .../entities/domain/AppointmentFormater.class | Bin 0 -> 698 bytes .../domain/AppointmentStartComparator.class | Bin 0 -> 1349 bytes .../org/rapla/entities/domain/Period.class | Bin 0 -> 1046 bytes .../rapla/entities/domain/Permission.class | Bin 0 -> 1972 bytes .../org/rapla/entities/domain/Repeating.class | Bin 0 -> 1183 bytes .../entities/domain/RepeatingEnding.class | Bin 0 -> 1801 bytes .../rapla/entities/domain/RepeatingType.class | Bin 0 -> 1806 bytes .../rapla/entities/domain/Reservation.class | Bin 0 -> 1955 bytes .../entities/domain/ReservationHelper.class | Bin 0 -> 3101 bytes .../domain/ReservationStartComparator.class | Bin 0 -> 2077 bytes .../domain/internal/AllocatableImpl$1.class | Bin 0 -> 999 bytes .../domain/internal/AllocatableImpl.class | Bin 0 -> 8840 bytes .../domain/internal/AppointmentImpl.class | Bin 0 -> 17786 bytes .../entities/domain/internal/PeriodImpl.class | Bin 0 -> 4316 bytes .../domain/internal/PermissionImpl.class | Bin 0 -> 6053 bytes .../domain/internal/RepeatingImpl.class | Bin 0 -> 8455 bytes .../domain/internal/ReservationImpl.class | Bin 0 -> 12795 bytes .../entities/dynamictype/Attribute.class | Bin 0 -> 1465 bytes .../dynamictype/AttributeAnnotations.class | Bin 0 -> 507 bytes .../entities/dynamictype/AttributeType.class | Bin 0 -> 1858 bytes .../entities/dynamictype/Classifiable.class | Bin 0 -> 506 bytes .../entities/dynamictype/Classification.class | Bin 0 -> 902 bytes .../dynamictype/ClassificationFilter.class | Bin 0 -> 1072 bytes .../ClassificationFilterRule.class | Bin 0 -> 321 bytes .../entities/dynamictype/ConstraintIds.class | Bin 0 -> 230 bytes .../entities/dynamictype/DynamicType.class | Bin 0 -> 1534 bytes .../dynamictype/DynamicTypeAnnotations.class | Bin 0 -> 565 bytes .../internal/AttributeImpl$IntStrategy.class | Bin 0 -> 1466 bytes .../dynamictype/internal/AttributeImpl.class | Bin 0 -> 11102 bytes .../internal/ClassificationFilterImpl$1.class | Bin 0 -> 1097 bytes .../internal/ClassificationFilterImpl.class | Bin 0 -> 11291 bytes .../ClassificationFilterRuleImpl.class | Bin 0 -> 4357 bytes .../internal/ClassificationImpl.class | Bin 0 -> 10163 bytes .../internal/DynamicTypeImpl.class | Bin 0 -> 11854 bytes .../internal/ParsedAnnotation.class | Bin 0 -> 4124 bytes .../entities/internal/CategoryImpl.class | Bin 0 -> 9696 bytes .../internal/ModifiableTimestamp.class | Bin 0 -> 288 bytes .../rapla/entities/internal/UserImpl.class | Bin 0 -> 6792 bytes .../org/rapla/entities/internal/package.html | 5 + eclipse-build/org/rapla/entities/package.html | 6 + .../CannotExistWithoutTypeException.class | Bin 0 -> 561 bytes .../storage/DynamicTypeDependant.class | Bin 0 -> 403 bytes .../entities/storage/EntityReferencer.class | Bin 0 -> 400 bytes .../entities/storage/EntityResolver.class | Bin 0 -> 286 bytes .../rapla/entities/storage/Mementable.class | Bin 0 -> 378 bytes .../rapla/entities/storage/RefEntity.class | Bin 0 -> 940 bytes .../ReferenceHandler$ReferenceEntry.class | Bin 0 -> 1041 bytes .../storage/internal/ReferenceHandler.class | Bin 0 -> 6433 bytes .../storage/internal/SimpleEntity.class | Bin 0 -> 8349 bytes .../storage/internal/SimpleIdentifier.class | Bin 0 -> 1997 bytes .../entities/tests/AppointmentTest.class | Bin 0 -> 11303 bytes .../rapla/entities/tests/AttributeTest.class | Bin 0 -> 2712 bytes .../rapla/entities/tests/CategoryTest.class | Bin 0 -> 5177 bytes .../entities/tests/ClassificationTest.class | Bin 0 -> 4065 bytes .../org/rapla/entities/tests/Day.class | Bin 0 -> 2442 bytes .../entities/tests/PreferencesTest.class | Bin 0 -> 2370 bytes .../tests/ReservationFilterTest.class | Bin 0 -> 4387 bytes .../entities/tests/ReservationTest.class | Bin 0 -> 4585 bytes .../org/rapla/entities/tests/Time.class | Bin 0 -> 3273 bytes .../org/rapla/entities/tests/TimeTest.class | Bin 0 -> 1238 bytes .../org/rapla/entities/tests/UserTest.class | Bin 0 -> 3028 bytes .../rapla/examples/RaplaConnectorTest.class | Bin 0 -> 2302 bytes .../org/rapla/examples/RaplaImportUsers.class | Bin 0 -> 4744 bytes .../SimpleConnectorStartupEnvironment.class | Bin 0 -> 3092 bytes .../facade/AllocationChangeEvent$Type.class | Bin 0 -> 747 bytes .../rapla/facade/AllocationChangeEvent.class | Bin 0 -> 2805 bytes .../facade/AllocationChangeListener.class | Bin 0 -> 252 bytes .../org/rapla/facade/ClientFacade.class | Bin 0 -> 567 bytes eclipse-build/org/rapla/facade/Conflict.class | Bin 0 -> 865 bytes .../org/rapla/facade/ModificationEvent.class | Bin 0 -> 331 bytes .../rapla/facade/ModificationListener.class | Bin 0 -> 337 bytes .../org/rapla/facade/ModificationModule.class | Bin 0 -> 2089 bytes .../org/rapla/facade/PeriodModel.class | Bin 0 -> 536 bytes .../org/rapla/facade/QueryModule.class | Bin 0 -> 2289 bytes .../RaplaComponent$ClientServiceManager.class | Bin 0 -> 1256 bytes .../org/rapla/facade/RaplaComponent.class | Bin 0 -> 12635 bytes .../rapla/facade/UpdateErrorListener.class | Bin 0 -> 229 bytes .../org/rapla/facade/UpdateModule.class | Bin 0 -> 767 bytes .../org/rapla/facade/UserModule.class | Bin 0 -> 518 bytes .../internal/AllocationChangeFinder.class | Bin 0 -> 7887 bytes ...nder$AppointmentBlockStartComparator.class | Bin 0 -> 1583 bytes .../facade/internal/ConflictFinder.class | Bin 0 -> 9891 bytes .../rapla/facade/internal/ConflictImpl.class | Bin 0 -> 3131 bytes .../rapla/facade/internal/FacadeImpl$1.class | Bin 0 -> 1383 bytes .../internal/FacadeImpl$UpdateCommand.class | Bin 0 -> 4642 bytes .../FacadeImpl$UserCheckCommand.class | Bin 0 -> 2281 bytes .../rapla/facade/internal/FacadeImpl.class | Bin 0 -> 38809 bytes .../internal/ModificationEventImpl.class | Bin 0 -> 4409 bytes .../facade/internal/PeriodModelImpl$1.class | Bin 0 -> 978 bytes .../facade/internal/PeriodModelImpl.class | Bin 0 -> 5350 bytes eclipse-build/org/rapla/facade/package.html | 6 + .../rapla/facade/tests/ClientFacadeTest.class | Bin 0 -> 13488 bytes .../org/rapla/framework/Container.class | Bin 0 -> 994 bytes .../org/rapla/framework/DEPENDENCIES | 4 + .../rapla/framework/PluginDescriptor.class | Bin 0 -> 407 bytes .../org/rapla/framework/RaplaContext.class | Bin 0 -> 291 bytes .../framework/RaplaContextException.class | Bin 0 -> 1040 bytes .../rapla/framework/RaplaDefaultContext.class | Bin 0 -> 1933 bytes .../org/rapla/framework/RaplaException.class | Bin 0 -> 823 bytes .../org/rapla/framework/RaplaLocale.class | Bin 0 -> 1035 bytes .../rapla/framework/ServiceListCreator.class | Bin 0 -> 3148 bytes .../rapla/framework/StartupEnvironment.class | Bin 0 -> 976 bytes .../framework/internal/ComponentInfo.class | Bin 0 -> 1003 bytes .../framework/internal/ConfigTools.class | Bin 0 -> 6646 bytes .../framework/internal/ContainerImpl$1.class | Bin 0 -> 1204 bytes .../framework/internal/ContainerImpl$2.class | Bin 0 -> 1987 bytes .../ContainerImpl$ComponentHandler.class | Bin 0 -> 2280 bytes .../internal/ContainerImpl$RoleEntry.class | Bin 0 -> 1699 bytes .../framework/internal/ContainerImpl.class | Bin 0 -> 13199 bytes .../internal/LogManagerAdapter.class | Bin 0 -> 316 bytes .../org/rapla/framework/package.html | 14 + .../org/rapla/gui/CalendarModel.class | Bin 0 -> 1254 bytes .../org/rapla/gui/CalendarOptions.class | Bin 0 -> 883 bytes .../org/rapla/gui/CalendarOptionsImpl.class | Bin 0 -> 5695 bytes .../org/rapla/gui/DefaultPluginOption.class | Bin 0 -> 4270 bytes .../org/rapla/gui/EditComponent.class | Bin 0 -> 350 bytes .../org/rapla/gui/EditController.class | Bin 0 -> 670 bytes eclipse-build/org/rapla/gui/InfoFactory.class | Bin 0 -> 873 bytes eclipse-build/org/rapla/gui/MenuContext.class | Bin 0 -> 2033 bytes .../org/rapla/gui/MenuExtensionPoint.class | Bin 0 -> 215 bytes eclipse-build/org/rapla/gui/MenuFactory.class | Bin 0 -> 602 bytes .../org/rapla/gui/ObjectMenuFactory.class | Bin 0 -> 248 bytes eclipse-build/org/rapla/gui/OptionPanel.class | Bin 0 -> 378 bytes eclipse-build/org/rapla/gui/RaplaAction.class | Bin 0 -> 2882 bytes .../org/rapla/gui/RaplaGUIComponent$1.class | Bin 0 -> 1116 bytes .../org/rapla/gui/RaplaGUIComponent$2.class | Bin 0 -> 968 bytes .../org/rapla/gui/RaplaGUIComponent$3.class | Bin 0 -> 1005 bytes .../org/rapla/gui/RaplaGUIComponent$4.class | Bin 0 -> 1365 bytes .../org/rapla/gui/RaplaGUIComponent.class | Bin 0 -> 9676 bytes .../org/rapla/gui/ReservationController.class | Bin 0 -> 1645 bytes .../org/rapla/gui/ReservationEdit.class | Bin 0 -> 462 bytes .../org/rapla/gui/ReservationWizard.class | Bin 0 -> 349 bytes .../org/rapla/gui/SwingCalendarView.class | Bin 0 -> 336 bytes eclipse-build/org/rapla/gui/TreeFactory.class | Bin 0 -> 949 bytes eclipse-build/org/rapla/gui/ViewFactory.class | Bin 0 -> 678 bytes .../test/ReservationControllerTest.class | Bin 0 -> 3596 bytes .../gui/edit/test/AttributeEditTest.class | Bin 0 -> 2636 bytes .../gui/edit/test/CategoryEditTest.class | Bin 0 -> 1961 bytes .../gui/edit/test/PermissionEditTest.class | Bin 0 -> 2689 bytes .../org/rapla/gui/images/Images.class | Bin 0 -> 1228 bytes eclipse-build/org/rapla/gui/images/admin.png | Bin 0 -> 1052 bytes .../org/rapla/gui/images/calendar.png | Bin 0 -> 2451 bytes .../org/rapla/gui/images/calendar_small.png | Bin 0 -> 854 bytes .../org/rapla/gui/images/categories.png | Bin 0 -> 356 bytes .../org/rapla/gui/images/choice_no.png | Bin 0 -> 230 bytes .../org/rapla/gui/images/choice_yes.png | Bin 0 -> 247 bytes .../org/rapla/gui/images/conflicts_small.png | Bin 0 -> 617 bytes .../gui/images/eclipse-icons/addtsk_tsk.gif | Bin 0 -> 590 bytes .../gui/images/eclipse-icons/arrow_left.gif | Bin 0 -> 327 bytes .../gui/images/eclipse-icons/arrow_right.gif | Bin 0 -> 216 bytes .../gui/images/eclipse-icons/big_folder.gif | Bin 0 -> 1304 bytes .../eclipse-icons/big_folder_categories.gif | Bin 0 -> 1313 bytes .../eclipse-icons/big_folder_conflicts.gif | Bin 0 -> 1349 bytes .../eclipse-icons/big_folder_events.gif | Bin 0 -> 1325 bytes .../big_folder_events_filtered.gif | Bin 0 -> 1387 bytes .../eclipse-icons/big_folder_filtered.gif | Bin 0 -> 1334 bytes .../images/eclipse-icons/big_folder_orig.gif | Bin 0 -> 2864 bytes .../eclipse-icons/big_folder_periods.gif | Bin 0 -> 1353 bytes .../eclipse-icons/big_folder_resources.gif | Bin 0 -> 1332 bytes .../big_folder_resources_filtered.gif | Bin 0 -> 1347 bytes .../images/eclipse-icons/big_folder_users.gif | Bin 0 -> 1334 bytes .../rapla/gui/images/eclipse-icons/blank.gif | Bin 0 -> 80 bytes .../gui/images/eclipse-icons/checked.gif | Bin 0 -> 343 bytes .../rapla/gui/images/eclipse-icons/clock.gif | Bin 0 -> 643 bytes .../gui/images/eclipse-icons/conflict.gif | Bin 0 -> 103 bytes .../rapla/gui/images/eclipse-icons/copy.gif | Bin 0 -> 594 bytes .../rapla/gui/images/eclipse-icons/cross.gif | Bin 0 -> 376 bytes .../rapla/gui/images/eclipse-icons/cut.gif | Bin 0 -> 212 bytes .../rapla/gui/images/eclipse-icons/edit.gif | Bin 0 -> 577 bytes .../rapla/gui/images/eclipse-icons/export.gif | Bin 0 -> 329 bytes .../rapla/gui/images/eclipse-icons/filter.gif | Bin 0 -> 224 bytes .../gui/images/eclipse-icons/filter_small.gif | Bin 0 -> 135 bytes .../gui/images/eclipse-icons/folder_open.gif | Bin 0 -> 216 bytes .../rapla/gui/images/eclipse-icons/gray.gif | Bin 0 -> 193 bytes .../rapla/gui/images/eclipse-icons/green.gif | Bin 0 -> 193 bytes .../rapla/gui/images/eclipse-icons/help.gif | Bin 0 -> 259 bytes .../rapla/gui/images/eclipse-icons/import.gif | Bin 0 -> 327 bytes .../rapla/gui/images/eclipse-icons/info.gif | Bin 0 -> 146 bytes .../rapla/gui/images/eclipse-icons/minus.gif | Bin 0 -> 185 bytes .../rapla/gui/images/eclipse-icons/new.gif | Bin 0 -> 335 bytes .../gui/images/eclipse-icons/no_perm.gif | Bin 0 -> 333 bytes .../rapla/gui/images/eclipse-icons/paste.gif | Bin 0 -> 605 bytes .../gui/images/eclipse-icons/permissions.gif | Bin 0 -> 255 bytes .../rapla/gui/images/eclipse-icons/plus.gif | Bin 0 -> 318 bytes .../rapla/gui/images/eclipse-icons/print.gif | Bin 0 -> 612 bytes .../rapla/gui/images/eclipse-icons/radio.gif | Bin 0 -> 187 bytes .../gui/images/eclipse-icons/refresh.gif | Bin 0 -> 217 bytes .../gui/images/eclipse-icons/reservations.gif | Bin 0 -> 359 bytes .../rapla/gui/images/eclipse-icons/save.gif | Bin 0 -> 639 bytes .../rapla/gui/images/eclipse-icons/trash.gif | Bin 0 -> 615 bytes .../gui/images/eclipse-icons/tree_minus.gif | Bin 0 -> 89 bytes .../gui/images/eclipse-icons/tree_plus.gif | Bin 0 -> 92 bytes .../gui/images/eclipse-icons/unchecked.gif | Bin 0 -> 148 bytes .../rapla/gui/images/eclipse-icons/update.gif | Bin 0 -> 336 bytes .../gui/images/eclipse-icons/warning.gif | Bin 0 -> 324 bytes .../rapla/gui/images/eclipse-icons/yellow.gif | Bin 0 -> 181 bytes .../rapla/gui/images/edit_window_small.png | Bin 0 -> 543 bytes eclipse-build/org/rapla/gui/images/empty.png | Bin 0 -> 174 bytes eclipse-build/org/rapla/gui/images/error.png | Bin 0 -> 1030 bytes .../org/rapla/gui/images/exception.png | Bin 0 -> 155 bytes eclipse-build/org/rapla/gui/images/filter.png | Bin 0 -> 450 bytes eclipse-build/org/rapla/gui/images/green.png | Bin 0 -> 433 bytes eclipse-build/org/rapla/gui/images/info.png | Bin 0 -> 3436 bytes .../org/rapla/gui/images/info_small.png | Bin 0 -> 355 bytes eclipse-build/org/rapla/gui/images/list.png | Bin 0 -> 428 bytes eclipse-build/org/rapla/gui/images/mail.png | Bin 0 -> 573 bytes .../org/rapla/gui/images/new_repeating.gif | Bin 0 -> 570 bytes .../org/rapla/gui/images/no_perm.png | Bin 0 -> 280 bytes .../org/rapla/gui/images/option_small.png | Bin 0 -> 374 bytes .../org/rapla/gui/images/paste_new.gif | Bin 0 -> 625 bytes eclipse-build/org/rapla/gui/images/period.png | Bin 0 -> 743 bytes .../org/rapla/gui/images/persons.png | Bin 0 -> 416 bytes .../org/rapla/gui/images/persons_yellow.png | Bin 0 -> 414 bytes .../org/rapla/gui/images/rapla_128x128.ico | Bin 0 -> 67646 bytes .../org/rapla/gui/images/rapla_16x16.ico | Bin 0 -> 1150 bytes .../org/rapla/gui/images/rapla_32x32.ico | Bin 0 -> 4286 bytes .../org/rapla/gui/images/rapla_small.png | Bin 0 -> 5303 bytes .../org/rapla/gui/images/refresh.png | Bin 0 -> 561 bytes .../org/rapla/gui/images/repeating.png | Bin 0 -> 460 bytes .../org/rapla/gui/images/resources.png | Bin 0 -> 1397 bytes eclipse-build/org/rapla/gui/images/single.png | Bin 0 -> 374 bytes eclipse-build/org/rapla/gui/images/tafel.png | Bin 0 -> 39528 bytes .../org/rapla/gui/images/tafel_old.png | Bin 0 -> 5701 bytes .../org/rapla/gui/images/tafel_tocompare.png | Bin 0 -> 39932 bytes eclipse-build/org/rapla/gui/images/taken.png | Bin 0 -> 194 bytes eclipse-build/org/rapla/gui/images/tree.png | Bin 0 -> 388 bytes .../org/rapla/gui/images/un_flag.png | Bin 0 -> 365 bytes eclipse-build/org/rapla/gui/images/users.png | Bin 0 -> 1231 bytes eclipse-build/org/rapla/gui/images/yellow.png | Bin 0 -> 434 bytes .../rapla/gui/internal/CalendarEditor$1.class | Bin 0 -> 870 bytes .../rapla/gui/internal/CalendarEditor$2.class | Bin 0 -> 1299 bytes .../CalendarEditor$TreeListener.class | Bin 0 -> 776 bytes .../rapla/gui/internal/CalendarEditor.class | Bin 0 -> 5217 bytes .../rapla/gui/internal/CalendarOption$1.class | Bin 0 -> 1121 bytes .../CalendarOption$ListRenderer.class | Bin 0 -> 1320 bytes .../rapla/gui/internal/CalendarOption.class | Bin 0 -> 10727 bytes .../rapla/gui/internal/ConnectionOption.class | Bin 0 -> 3377 bytes .../org/rapla/gui/internal/LocaleOption.class | Bin 0 -> 2797 bytes .../gui/internal/MainFrame$Listener.class | Bin 0 -> 969 bytes .../gui/internal/MainFrame$StatusFader.class | Bin 0 -> 3465 bytes .../org/rapla/gui/internal/MainFrame.class | Bin 0 -> 7211 bytes .../rapla/gui/internal/MenuFactoryImpl.class | Bin 0 -> 15566 bytes .../rapla/gui/internal/PublishDialog$1.class | Bin 0 -> 1742 bytes .../rapla/gui/internal/PublishDialog$2.class | Bin 0 -> 3001 bytes .../rapla/gui/internal/PublishDialog$3.class | Bin 0 -> 937 bytes .../rapla/gui/internal/PublishDialog$4.class | Bin 0 -> 1136 bytes .../rapla/gui/internal/PublishDialog.class | Bin 0 -> 9153 bytes .../gui/internal/RaplaDateRenderer.class | Bin 0 -> 2430 bytes .../rapla/gui/internal/RaplaMenuBar$1.class | Bin 0 -> 1041 bytes .../rapla/gui/internal/RaplaMenuBar$2.class | Bin 0 -> 1615 bytes .../rapla/gui/internal/RaplaMenuBar$3.class | Bin 0 -> 3141 bytes .../rapla/gui/internal/RaplaMenuBar$4.class | Bin 0 -> 2477 bytes .../org/rapla/gui/internal/RaplaMenuBar.class | Bin 0 -> 9270 bytes .../RaplaSelectionPane$Listener.class | Bin 0 -> 3059 bytes .../gui/internal/RaplaSelectionPane.class | Bin 0 -> 9688 bytes .../rapla/gui/internal/RaplaStartOption.class | Bin 0 -> 2637 bytes .../gui/internal/SavedCalendarView$1.class | Bin 0 -> 1348 bytes .../gui/internal/SavedCalendarView$2.class | Bin 0 -> 2499 bytes .../gui/internal/SavedCalendarView$3.class | Bin 0 -> 3315 bytes .../SavedCalendarView$DeleteAction.class | Bin 0 -> 2216 bytes .../SavedCalendarView$PublishAction.class | Bin 0 -> 2365 bytes .../SavedCalendarView$SaveAction.class | Bin 0 -> 1348 bytes .../gui/internal/SavedCalendarView.class | Bin 0 -> 12842 bytes .../org/rapla/gui/internal/UserOption.class | Bin 0 -> 2406 bytes .../internal/action/AppointmentAction.class | Bin 0 -> 11886 bytes .../gui/internal/action/CategoryAction.class | Bin 0 -> 1894 bytes .../internal/action/DynamicTypeAction.class | Bin 0 -> 1657 bytes .../gui/internal/action/HolidayAction.class | Bin 0 -> 1846 bytes .../gui/internal/action/OnlyMyAction.class | Bin 0 -> 1859 bytes .../internal/action/RaplaObjectAction.class | Bin 0 -> 9346 bytes .../internal/action/ReservationAction.class | Bin 0 -> 3713 bytes .../internal/action/RestartRaplaAction.class | Bin 0 -> 1129 bytes .../action/RestartServerAction$1.class | Bin 0 -> 1427 bytes .../internal/action/RestartServerAction.class | Bin 0 -> 1651 bytes .../internal/action/ShowConflictsAction.class | Bin 0 -> 2376 bytes .../internal/action/ShowHolidaysAction.class | Bin 0 -> 2371 bytes .../gui/internal/action/ToolTipAction.class | Bin 0 -> 2355 bytes .../rapla/gui/internal/action/package.html | 6 + ...rdChangeAction$PasswordChangeActionA.class | Bin 0 -> 3631 bytes .../action/user/PasswordChangeAction.class | Bin 0 -> 3214 bytes .../action/user/PasswordChangeUI.class | Bin 0 -> 2685 bytes .../gui/internal/action/user/UserAction.class | Bin 0 -> 4081 bytes .../gui/internal/common/CalendarAction.class | Bin 0 -> 3912 bytes .../internal/common/CalendarModelImpl.class | Bin 0 -> 23377 bytes .../common/CalendarSelectionModel.class | Bin 0 -> 1434 bytes .../internal/common/ClassifiableFilter.class | Bin 0 -> 410 bytes .../gui/internal/common/InternMenus.class | Bin 0 -> 796 bytes .../internal/common/MultiCalendarView$1.class | Bin 0 -> 1171 bytes .../internal/common/MultiCalendarView$2.class | Bin 0 -> 1547 bytes .../internal/common/MultiCalendarView$3.class | Bin 0 -> 1540 bytes .../internal/common/MultiCalendarView$4.class | Bin 0 -> 1661 bytes .../internal/common/MultiCalendarView$5.class | Bin 0 -> 1069 bytes .../MultiCalendarView$FilterEdit$1.class | Bin 0 -> 1947 bytes .../MultiCalendarView$FilterEdit$2.class | Bin 0 -> 3465 bytes .../common/MultiCalendarView$FilterEdit.class | Bin 0 -> 2600 bytes .../internal/common/MultiCalendarView.class | Bin 0 -> 9698 bytes .../common/NamedListCellRenderer.class | Bin 0 -> 1419 bytes ...PeriodChooser$PeriodListCellRenderer.class | Bin 0 -> 1415 bytes .../gui/internal/common/PeriodChooser.class | Bin 0 -> 6179 bytes .../gui/internal/common/RaplaClipboard.class | Bin 0 -> 2232 bytes .../gui/internal/edit/AbstractEditField.class | Bin 0 -> 5018 bytes .../gui/internal/edit/AbstractEditUI.class | Bin 0 -> 3639 bytes .../gui/internal/edit/AllocatableEditUI.class | Bin 0 -> 1451 bytes .../gui/internal/edit/AttributeEdit$1.class | Bin 0 -> 1870 bytes .../edit/AttributeEdit$Listener.class | Bin 0 -> 2485 bytes .../gui/internal/edit/AttributeEdit.class | Bin 0 -> 7171 bytes .../gui/internal/edit/BooleanField.class | Bin 0 -> 3749 bytes .../gui/internal/edit/CategoryDetail$1.class | Bin 0 -> 1610 bytes .../gui/internal/edit/CategoryDetail.class | Bin 0 -> 4912 bytes .../gui/internal/edit/CategoryEditUI$1.class | Bin 0 -> 1960 bytes .../edit/CategoryEditUI$CategoryNode.class | Bin 0 -> 1545 bytes .../edit/CategoryEditUI$Listener.class | Bin 0 -> 2686 bytes .../gui/internal/edit/CategoryEditUI.class | Bin 0 -> 13289 bytes .../gui/internal/edit/CategoryListField.class | Bin 0 -> 1294 bytes .../internal/edit/CategorySelectField$1.class | Bin 0 -> 1120 bytes .../internal/edit/CategorySelectField$2.class | Bin 0 -> 1054 bytes .../internal/edit/CategorySelectField$3.class | Bin 0 -> 1690 bytes .../CategorySelectField$SelectionAction.class | Bin 0 -> 1253 bytes .../internal/edit/CategorySelectField.class | Bin 0 -> 7688 bytes .../edit/ClassifiableFilterEdit$1.class | Bin 0 -> 1290 bytes .../edit/ClassifiableFilterEdit$2.class | Bin 0 -> 920 bytes .../edit/ClassifiableFilterEdit.class | Bin 0 -> 10423 bytes .../internal/edit/ClassificationEdit$1.class | Bin 0 -> 1353 bytes .../internal/edit/ClassificationEdit$2.class | Bin 0 -> 875 bytes ...ificationEdit$RuleComponent$Listener.class | Bin 0 -> 1645 bytes .../ClassificationEdit$RuleComponent.class | Bin 0 -> 6397 bytes .../edit/ClassificationEdit$RuleRow$1.class | Bin 0 -> 1213 bytes .../edit/ClassificationEdit$RuleRow$2.class | Bin 0 -> 1205 bytes ...cationEdit$RuleRow$MyMappingDelegate.class | Bin 0 -> 1631 bytes .../edit/ClassificationEdit$RuleRow.class | Bin 0 -> 6722 bytes .../internal/edit/ClassificationEdit.class | Bin 0 -> 9052 bytes ...assificationEditUI$MyMappingDelegate.class | Bin 0 -> 1726 bytes .../internal/edit/ClassificationEditUI.class | Bin 0 -> 5900 bytes .../internal/edit/ClassificationField.class | Bin 0 -> 5631 bytes .../rapla/gui/internal/edit/DateField.class | Bin 0 -> 2950 bytes .../internal/edit/DefaultConstraints$1.class | Bin 0 -> 1520 bytes .../internal/edit/DefaultConstraints$2.class | Bin 0 -> 951 bytes .../internal/edit/DefaultConstraints.class | Bin 0 -> 11191 bytes .../internal/edit/DynamicTypeEditUI$1.class | Bin 0 -> 859 bytes .../gui/internal/edit/DynamicTypeEditUI.class | Bin 0 -> 7462 bytes .../internal/edit/EditControllerImpl.class | Bin 0 -> 4647 bytes .../edit/EditDialog$AbortAction.class | Bin 0 -> 1107 bytes .../internal/edit/EditDialog$SaveAction.class | Bin 0 -> 1795 bytes .../rapla/gui/internal/edit/EditDialog.class | Bin 0 -> 6248 bytes .../rapla/gui/internal/edit/EditField.class | Bin 0 -> 489 bytes .../rapla/gui/internal/edit/ListField.class | Bin 0 -> 3879 bytes .../rapla/gui/internal/edit/LongField.class | Bin 0 -> 3281 bytes .../gui/internal/edit/MappingDelegate.class | Bin 0 -> 311 bytes ...guageField$MultiLanguageEditorDialog.class | Bin 0 -> 4630 bytes ...iLanguageField$TranslationTableModel.class | Bin 0 -> 1767 bytes .../internal/edit/MultiLanguageField.class | Bin 0 -> 4830 bytes .../gui/internal/edit/PeriodEditUI$1.class | Bin 0 -> 1420 bytes .../gui/internal/edit/PeriodEditUI$2.class | Bin 0 -> 1538 bytes .../gui/internal/edit/PeriodEditUI.class | Bin 0 -> 4087 bytes .../gui/internal/edit/PermissionField$1.class | Bin 0 -> 1858 bytes .../edit/PermissionField$UserListField.class | Bin 0 -> 1468 bytes .../gui/internal/edit/PermissionField.class | Bin 0 -> 9716 bytes .../internal/edit/PermissionListField$1.class | Bin 0 -> 2311 bytes .../edit/PermissionListField$Listener.class | Bin 0 -> 2337 bytes .../internal/edit/PermissionListField.class | Bin 0 -> 5192 bytes .../internal/edit/PreferencesEditUI$1.class | Bin 0 -> 1555 bytes .../internal/edit/PreferencesEditUI$2.class | Bin 0 -> 1354 bytes .../gui/internal/edit/PreferencesEditUI.class | Bin 0 -> 9563 bytes .../edit/RaplaFilterBox$TestComponent.class | Bin 0 -> 448 bytes .../gui/internal/edit/RaplaFilterBox.class | Bin 0 -> 1529 bytes .../gui/internal/edit/RaplaListEdit$1.class | Bin 0 -> 2203 bytes .../gui/internal/edit/RaplaListEdit$2$1.class | Bin 0 -> 1232 bytes .../gui/internal/edit/RaplaListEdit$2.class | Bin 0 -> 1180 bytes .../edit/RaplaListEdit$Listener.class | Bin 0 -> 2857 bytes .../gui/internal/edit/RaplaListEdit.class | Bin 0 -> 8184 bytes .../gui/internal/edit/RaplaTreeEdit$1.class | Bin 0 -> 2365 bytes .../gui/internal/edit/RaplaTreeEdit$2$1.class | Bin 0 -> 1336 bytes .../gui/internal/edit/RaplaTreeEdit$2.class | Bin 0 -> 1197 bytes .../edit/RaplaTreeEdit$Listener.class | Bin 0 -> 1533 bytes .../gui/internal/edit/RaplaTreeEdit.class | Bin 0 -> 5507 bytes .../rapla/gui/internal/edit/TextField.class | Bin 0 -> 3648 bytes .../edit/UserEditUI$GroupListField$1.class | Bin 0 -> 1723 bytes .../edit/UserEditUI$GroupListField.class | Bin 0 -> 6282 bytes .../edit/UserEditUI$PersonSelectField$1.class | Bin 0 -> 1913 bytes .../edit/UserEditUI$PersonSelectField.class | Bin 0 -> 9080 bytes .../rapla/gui/internal/edit/UserEditUI.class | Bin 0 -> 1680 bytes .../org/rapla/gui/internal/edit/package.html | 6 + .../AbstractAppointmentEditor.class | Bin 0 -> 2188 bytes .../reservation/AllocatableSelection$1.class | Bin 0 -> 1504 bytes ...locatableSelection$AllocatableAction.class | Bin 0 -> 3330 bytes ...locatableSelection$AllocatablesModel.class | Bin 0 -> 5499 bytes ...ableSelection$AllocationCellRenderer.class | Bin 0 -> 1441 bytes ...Selection$AllocationTreeCellRenderer.class | Bin 0 -> 4940 bytes ...tableSelection$AppointmentCellEditor.class | Bin 0 -> 10977 bytes .../AllocatableSelection$CompleteModel.class | Bin 0 -> 1844 bytes .../AllocatableSelection$FilterEdit$1.class | Bin 0 -> 2581 bytes .../AllocatableSelection$FilterEdit$2.class | Bin 0 -> 3241 bytes .../AllocatableSelection$FilterEdit.class | Bin 0 -> 2546 bytes .../AllocatableSelection$Listener.class | Bin 0 -> 2605 bytes ...atableSelection$RaplaToolTipRenderer.class | Bin 0 -> 1297 bytes ...bleSelection$RestrictionCellRenderer.class | Bin 0 -> 1907 bytes ...atableSelection$RestrictionTextField.class | Bin 0 -> 1393 bytes .../AllocatableSelection$SelectedModel.class | Bin 0 -> 3070 bytes ...Selection$StayOpenCheckBoxMenuItemUI.class | Bin 0 -> 1003 bytes .../reservation/AllocatableSelection.class | Bin 0 -> 26092 bytes .../reservation/AppointmentController$1.class | Bin 0 -> 1592 bytes .../reservation/AppointmentController$2.class | Bin 0 -> 939 bytes ...ointmentController$ExceptionEditor$1.class | Bin 0 -> 1731 bytes ...ointmentController$ExceptionEditor$2.class | Bin 0 -> 1154 bytes ...ppointmentController$ExceptionEditor.class | Bin 0 -> 6461 bytes .../AppointmentController$ListRenderer.class | Bin 0 -> 1495 bytes ...ppointmentController$RepeatingEditor.class | Bin 0 -> 19668 bytes ...AppointmentController$SingleEditor$1.class | Bin 0 -> 1610 bytes .../AppointmentController$SingleEditor.class | Bin 0 -> 7198 bytes .../reservation/AppointmentController.class | Bin 0 -> 10349 bytes .../reservation/AppointmentIdentifier.class | Bin 0 -> 2082 bytes ...mentListEdit$AppointmentCellRenderer.class | Bin 0 -> 2262 bytes .../AppointmentListEdit$AppointmentRow.class | Bin 0 -> 3896 bytes .../AppointmentListEdit$Listener.class | Bin 0 -> 2549 bytes .../reservation/AppointmentListEdit.class | Bin 0 -> 9570 bytes .../reservation/AppointmentListener.class | Bin 0 -> 320 bytes .../edit/reservation/ConflictTableModel.class | Bin 0 -> 3523 bytes .../internal/edit/reservation/NoWizard.class | Bin 0 -> 3247 bytes ...eservationControllerImpl$SaveCommand.class | Bin 0 -> 1361 bytes .../ReservationControllerImpl.class | Bin 0 -> 19207 bytes .../ReservationEditImpl$Listener.class | Bin 0 -> 4353 bytes .../ReservationEditImpl$SaveCommand.class | Bin 0 -> 2002 bytes .../reservation/ReservationEditImpl.class | Bin 0 -> 13269 bytes .../ReservationInfoEdit$DetailListener.class | Bin 0 -> 317 bytes ...ationInfoEdit$MyClassificationEditUI.class | Bin 0 -> 4163 bytes .../reservation/ReservationInfoEdit.class | Bin 0 -> 9484 bytes .../edit/reservation/SortedListModel$1.class | Bin 0 -> 1416 bytes .../SortedListModel$SortOrder.class | Bin 0 -> 1410 bytes .../SortedListModel$SortedListEntry.class | Bin 0 -> 2220 bytes .../edit/reservation/SortedListModel.class | Bin 0 -> 7374 bytes .../print/CalendarPrintDialog$1.class | Bin 0 -> 1711 bytes .../print/CalendarPrintDialog$Listener.class | Bin 0 -> 4016 bytes .../internal/print/CalendarPrintDialog.class | Bin 0 -> 10914 bytes .../gui/internal/print/ExportService.class | Bin 0 -> 312 bytes .../internal/print/ExportServiceList.class | Bin 0 -> 5543 bytes .../gui/internal/print/PSExportService.class | Bin 0 -> 2430 bytes .../gui/internal/print/PrintAction$1.class | Bin 0 -> 1207 bytes .../gui/internal/print/PrintAction.class | Bin 0 -> 3112 bytes .../splitpanes/HolidaySelectionPane$1.class | Bin 0 -> 1519 bytes .../splitpanes/HolidaySelectionPane.class | Bin 0 -> 5434 bytes .../RaplaConflictSelectionPane.class | Bin 0 -> 3011 bytes ...aFiltrableSelectionPane$FilterEdit$1.class | Bin 0 -> 2181 bytes ...aFiltrableSelectionPane$FilterEdit$2.class | Bin 0 -> 3258 bytes ...plaFiltrableSelectionPane$FilterEdit.class | Bin 0 -> 2565 bytes .../RaplaFiltrableSelectionPane.class | Bin 0 -> 2604 bytes .../RaplaResourceSelectionPane$1.class | Bin 0 -> 1555 bytes .../RaplaResourceSelectionPane.class | Bin 0 -> 5232 bytes .../gui/internal/view/AllocatableInfoUI.class | Bin 0 -> 5532 bytes .../gui/internal/view/AppointmentInfoUI.class | Bin 0 -> 2166 bytes .../gui/internal/view/CategoryInfoUI.class | Bin 0 -> 1102 bytes .../internal/view/ClassificationInfoUI.class | Bin 0 -> 5715 bytes .../internal/view/ConflictInfoOldUI$1.class | Bin 0 -> 1161 bytes .../gui/internal/view/ConflictInfoOldUI.class | Bin 0 -> 1782 bytes .../gui/internal/view/ConflictInfoUI.class | Bin 0 -> 2391 bytes .../gui/internal/view/DeleteInfoUI.class | Bin 0 -> 1944 bytes .../gui/internal/view/DependencyInfoUI.class | Bin 0 -> 2394 bytes .../gui/internal/view/DynamicTypeInfoUI.class | Bin 0 -> 3142 bytes .../gui/internal/view/HTMLInfo$Row.class | Bin 0 -> 827 bytes .../rapla/gui/internal/view/HTMLInfo.class | Bin 0 -> 4206 bytes .../gui/internal/view/InfoFactoryImpl$1.class | Bin 0 -> 2334 bytes .../gui/internal/view/InfoFactoryImpl$2.class | Bin 0 -> 2048 bytes .../gui/internal/view/InfoFactoryImpl.class | Bin 0 -> 6842 bytes .../gui/internal/view/LicenseInfoUI.class | Bin 0 -> 4063 bytes .../rapla/gui/internal/view/LicenseUI.class | Bin 0 -> 3124 bytes .../gui/internal/view/LinkController.class | Bin 0 -> 291 bytes .../gui/internal/view/PeriodInfoUI.class | Bin 0 -> 2480 bytes .../gui/internal/view/ReservationInfoUI.class | Bin 0 -> 8179 bytes .../view/TreeFactoryImpl$CategoryNode.class | Bin 0 -> 2247 bytes ...eFactoryImpl$ComplexTreeCellRenderer.class | Bin 0 -> 5404 bytes .../view/TreeFactoryImpl$NamedNode.class | Bin 0 -> 1288 bytes ...FactoryImpl$RaplaTreeToolTipRenderer.class | Bin 0 -> 1438 bytes .../view/TreeFactoryImpl$TypeNode.class | Bin 0 -> 1703 bytes .../gui/internal/view/TreeFactoryImpl.class | Bin 0 -> 14671 bytes .../rapla/gui/internal/view/UserInfoUI.class | Bin 0 -> 3387 bytes .../rapla/gui/internal/view/ViewTable$1.class | Bin 0 -> 1065 bytes .../rapla/gui/internal/view/ViewTable.class | Bin 0 -> 5777 bytes eclipse-build/org/rapla/gui/package.html | 9 + .../rapla/gui/tests/CalendarEditorTest.class | Bin 0 -> 1999 bytes .../rapla/gui/tests/DataUpdateTest$1.class | Bin 0 -> 901 bytes .../org/rapla/gui/tests/DataUpdateTest.class | Bin 0 -> 2353 bytes ...UITestCase$MyFrameControllerListener.class | Bin 0 -> 1084 bytes .../org/rapla/gui/tests/GUITestCase.class | Bin 0 -> 3174 bytes .../org/rapla/gui/tests/RapaBuilderTest.class | Bin 0 -> 3151 bytes .../rapla/gui/toolkit/DateCellRenderer.class | Bin 0 -> 1606 bytes .../org/rapla/gui/toolkit/DialogUI$1.class | Bin 0 -> 760 bytes .../org/rapla/gui/toolkit/DialogUI$2.class | Bin 0 -> 837 bytes .../gui/toolkit/DialogUI$ButtonListener.class | Bin 0 -> 1303 bytes .../org/rapla/gui/toolkit/DialogUI.class | Bin 0 -> 12574 bytes .../org/rapla/gui/toolkit/DisposingTool.class | Bin 0 -> 683 bytes .../rapla/gui/toolkit/EmptyLineBorder.class | Bin 0 -> 1199 bytes .../org/rapla/gui/toolkit/ErrorDialog$1.class | Bin 0 -> 1483 bytes .../org/rapla/gui/toolkit/ErrorDialog.class | Bin 0 -> 7102 bytes .../gui/toolkit/ErrorDialogException.class | Bin 0 -> 743 bytes .../rapla/gui/toolkit/FrameController.class | Bin 0 -> 155 bytes .../gui/toolkit/FrameControllerList.class | Bin 0 -> 6654 bytes .../gui/toolkit/FrameControllerListener.class | Bin 0 -> 242 bytes .../org/rapla/gui/toolkit/HTMLView.class | Bin 0 -> 3317 bytes .../gui/toolkit/IdentifiableMenuEntry.class | Bin 0 -> 184 bytes .../gui/toolkit/JEditorPaneWorkaround.class | Bin 0 -> 1382 bytes .../org/rapla/gui/toolkit/MenuInterface.class | Bin 0 -> 499 bytes .../org/rapla/gui/toolkit/MonthChooser.class | Bin 0 -> 1361 bytes .../org/rapla/gui/toolkit/PopupEvent.class | Bin 0 -> 829 bytes .../org/rapla/gui/toolkit/PopupListener.class | Bin 0 -> 189 bytes .../org/rapla/gui/toolkit/RaplaButton.class | Bin 0 -> 1534 bytes .../rapla/gui/toolkit/RaplaColorList.class | Bin 0 -> 4801 bytes .../org/rapla/gui/toolkit/RaplaFrame.class | Bin 0 -> 3178 bytes .../org/rapla/gui/toolkit/RaplaMenu.class | Bin 0 -> 2257 bytes .../org/rapla/gui/toolkit/RaplaMenuItem.class | Bin 0 -> 753 bytes .../org/rapla/gui/toolkit/RaplaMenubar.class | Bin 0 -> 2049 bytes .../rapla/gui/toolkit/RaplaPopupMenu.class | Bin 0 -> 2081 bytes .../rapla/gui/toolkit/RaplaSeparator.class | Bin 0 -> 615 bytes .../org/rapla/gui/toolkit/RaplaTree$1.class | Bin 0 -> 1364 bytes .../gui/toolkit/RaplaTree$Listener.class | Bin 0 -> 2165 bytes .../gui/toolkit/RaplaTree$TreeIterator.class | Bin 0 -> 1388 bytes .../org/rapla/gui/toolkit/RaplaTree.class | Bin 0 -> 12119 bytes .../org/rapla/gui/toolkit/RaplaWidget.class | Bin 0 -> 177 bytes .../rapla/gui/toolkit/RecursiveNode$1.class | Bin 0 -> 978 bytes .../org/rapla/gui/toolkit/RecursiveNode.class | Bin 0 -> 4659 bytes .../gui/toolkit/TreeToolTipRenderer.class | Bin 0 -> 209 bytes .../rapla/gui/toolkit/WeekdayChooser.class | Bin 0 -> 1446 bytes .../org/rapla/gui/toolkit/WizardDialog.class | Bin 0 -> 5029 bytes .../org/rapla/gui/toolkit/WizardPanel.class | Bin 0 -> 460 bytes .../gui/toolkit/tests/ErrorDialogTest.class | Bin 0 -> 1315 bytes eclipse-build/org/rapla/overview.html | 11 + eclipse-build/org/rapla/package.html | 8 + .../rapla/plugin/RaplaExtensionPoints.class | Bin 0 -> 1386 bytes .../rapla/plugin/RaplaPluginMetaInfo.class | Bin 0 -> 273 bytes .../AbstractHTMLCalendarPage.class | Bin 0 -> 10307 bytes .../abstractcalendar/AbstractRaplaBlock.class | Bin 0 -> 4984 bytes .../AbstractRaplaSwingCalendar.class | Bin 0 -> 7700 bytes .../DateChooserPanel$Listener.class | Bin 0 -> 3227 bytes .../abstractcalendar/DateChooserPanel.class | Bin 0 -> 6655 bytes .../GroupAllocatablesStrategy.class | Bin 0 -> 2792 bytes .../abstractcalendar/HTMLDateComponents.class | Bin 0 -> 3086 bytes .../abstractcalendar/HTMLRaplaBlock.class | Bin 0 -> 5489 bytes .../abstractcalendar/HTMLRaplaBuilder.class | Bin 0 -> 2390 bytes .../IntervallChooserPanel$Listener.class | Bin 0 -> 2971 bytes .../IntervallChooserPanel.class | Bin 0 -> 6161 bytes .../abstractcalendar/RaplaBuilder$1.class | Bin 0 -> 891 bytes .../RaplaBuilder$BuildContext.class | Bin 0 -> 4356 bytes .../RaplaBuilder$RaplaBlockContext.class | Bin 0 -> 4338 bytes .../abstractcalendar/RaplaBuilder.class | Bin 0 -> 18338 bytes .../RaplaCalendarViewListener.class | Bin 0 -> 12254 bytes .../SwingRaplaBlock$RaplaBlockView.class | Bin 0 -> 11865 bytes .../abstractcalendar/SwingRaplaBlock.class | Bin 0 -> 4885 bytes .../abstractcalendar/SwingRaplaBuilder.class | Bin 0 -> 1359 bytes .../plugin/abstractcalendar/package.html | 8 + .../appointmentmarker/AppointmentMarker.class | Bin 0 -> 5788 bytes .../AppointmentMarkerMenuFactory$1.class | Bin 0 -> 2406 bytes .../AppointmentMarkerMenuFactory$2.class | Bin 0 -> 3652 bytes .../AppointmentMarkerMenuFactory.class | Bin 0 -> 6329 bytes .../AppointmentMarkerOption.class | Bin 0 -> 3420 bytes .../AppointmentMarkerPlugin.class | Bin 0 -> 1921 bytes .../plugin/archiver/ArchiverOption$1.class | Bin 0 -> 1071 bytes .../plugin/archiver/ArchiverOption.class | Bin 0 -> 3855 bytes .../plugin/archiver/ArchiverPlugin.class | Bin 0 -> 1642 bytes .../archiver/ArchiverService$RemoveTask.class | Bin 0 -> 3197 bytes .../plugin/archiver/ArchiverService.class | Bin 0 -> 3194 bytes .../plugin/autoexport/AutoExportPlugin.class | Bin 0 -> 5106 bytes .../autoexport/AutoExportPluginOption.class | Bin 0 -> 2672 bytes .../autoexport/AutoExportResources.class | Bin 0 -> 1240 bytes .../plugin/autoexport/AutoExportResources.xml | 55 + .../autoexport/AutoExportResources_de.class | Bin 0 -> 1261 bytes .../autoexport/AutoExportResources_es.class | Bin 0 -> 1267 bytes .../autoexport/AutoExportResources_fr.class | Bin 0 -> 1261 bytes .../autoexport/AutoExportResources_nl.class | Bin 0 -> 1053 bytes ...darListPageGenerator$TitleComparator.class | Bin 0 -> 1793 bytes .../CalendarListPageGenerator.class | Bin 0 -> 7393 bytes .../autoexport/CalendarPageGenerator.class | Bin 0 -> 4126 bytes .../org/rapla/plugin/autoexport/calendar.css | 273 ++ .../CompactWeekViewFactory.class | Bin 0 -> 2100 bytes .../CompactWeekViewPlugin.class | Bin 0 -> 1839 bytes .../HTMLCompactWeekViewPage$1.class | Bin 0 -> 1139 bytes .../HTMLCompactWeekViewPage.class | Bin 0 -> 3371 bytes .../SwingCompactWeekCalendar$1.class | Bin 0 -> 2660 bytes .../SwingCompactWeekCalendar$2.class | Bin 0 -> 4013 bytes .../SwingCompactWeekCalendar.class | Bin 0 -> 6015 bytes .../compactweekview/images/week_compact.png | Bin 0 -> 884 bytes .../export2ical/AvailableTimeZones.properties | 508 +++ .../export2ical/Export2iCalAdminOption.class | Bin 0 -> 9201 bytes .../Export2iCalChangeWatcher.class | Bin 0 -> 6466 bytes .../export2ical/Export2iCalConverter.class | Bin 0 -> 22856 bytes .../Export2iCalDialogInitializer$1.class | Bin 0 -> 3809 bytes .../Export2iCalDialogInitializer.class | Bin 0 -> 4039 bytes .../export2ical/Export2iCalPlugin.class | Bin 0 -> 4779 bytes .../export2ical/Export2iCalResources.class | Bin 0 -> 2063 bytes .../export2ical/Export2iCalResources.xml | 90 + .../export2ical/Export2iCalResources_de.class | Bin 0 -> 2202 bytes .../export2ical/Export2iCalResources_es.class | Bin 0 -> 901 bytes .../export2ical/Export2iCalResources_fr.class | Bin 0 -> 2199 bytes .../export2ical/Export2iCalServlet.class | Bin 0 -> 9142 bytes .../export2ical/Export2iCalUserOption.class | Bin 0 -> 6819 bytes .../ICalExportRemoteServiceFactory.class | Bin 0 -> 1725 bytes .../plugin/export2ical/RaplaICalExport.class | Bin 0 -> 5144 bytes .../importusers/ImportUsersPlugin.class | Bin 0 -> 2442 bytes .../ImportUsersPluginInitializer$1.class | Bin 0 -> 2523 bytes .../ImportUsersPluginInitializer.class | Bin 0 -> 6145 bytes .../importusers/ImportUsersResources.class | Bin 0 -> 889 bytes .../importusers/ImportUsersResources.xml | 12 + .../importusers/ImportUsersResources_cs.class | Bin 0 -> 903 bytes .../importusers/ImportUsersResources_de.class | Bin 0 -> 906 bytes .../importusers/ImportUsersResources_es.class | Bin 0 -> 915 bytes .../importusers/ImportUsersResources_fr.class | Bin 0 -> 913 bytes .../importusers/ImportUsersResources_nl.class | Bin 0 -> 903 bytes .../JNDIAuthenticationStore$JNDIUser.class | Bin 0 -> 841 bytes .../plugin/jndi/JNDIAuthenticationStore.class | Bin 0 -> 17611 bytes .../org/rapla/plugin/jndi/JNDIPlugin.class | Bin 0 -> 2819 bytes .../rapla/plugin/jndi/internal/JNDIConf.class | Bin 0 -> 642 bytes .../plugin/jndi/internal/JNDIOption$1.class | Bin 0 -> 3624 bytes .../plugin/jndi/internal/JNDIOption.class | Bin 0 -> 5955 bytes .../rapla/plugin/jndi/internal/JNDITest.class | Bin 0 -> 754 bytes .../jndi/internal/PasswordEnterUI.class | Bin 0 -> 2190 bytes .../internal/RaplaJNDITestOnLocalhost.class | Bin 0 -> 3482 bytes .../jndi/internal/RaplaJNDITestOnServer.class | Bin 0 -> 1438 bytes .../RaplaJNDITestRemoteServiceFactory.class | Bin 0 -> 1224 bytes .../org/rapla/plugin/mail/MailPlugin.class | Bin 0 -> 3187 bytes .../plugin/mail/MailToUserInterface.class | Bin 0 -> 777 bytes .../plugin/mail/internal/MailOption.class | Bin 0 -> 4727 bytes .../MailToUserRemoteServiceFactory.class | Bin 0 -> 1219 bytes .../internal/RaplaMailToUserOnLocalhost.class | Bin 0 -> 3826 bytes .../internal/RaplaMailToUserOnServer.class | Bin 0 -> 1453 bytes .../plugin/monthview/HTMLMonthViewPage.class | Bin 0 -> 2412 bytes .../plugin/monthview/MonthViewFactory.class | Bin 0 -> 2018 bytes .../plugin/monthview/MonthViewPlugin.class | Bin 0 -> 1688 bytes .../monthview/SwingMonthCalendar$1.class | Bin 0 -> 2083 bytes .../monthview/SwingMonthCalendar$2.class | Bin 0 -> 1645 bytes .../plugin/monthview/SwingMonthCalendar.class | Bin 0 -> 4648 bytes .../rapla/plugin/monthview/images/month.png | Bin 0 -> 966 bytes ...otificationOption$NotificationAction.class | Bin 0 -> 4838 bytes .../notification/NotificationOption.class | Bin 0 -> 8621 bytes .../notification/NotificationPlugin.class | Bin 0 -> 2383 bytes .../notification/NotificationResources.class | Bin 0 -> 1698 bytes .../notification/NotificationResources.xml | 80 + .../NotificationResources_de.class | Bin 0 -> 1756 bytes .../NotificationResources_es.class | Bin 0 -> 1659 bytes .../NotificationResources_fr.class | Bin 0 -> 1812 bytes .../NotificationService$AllocationMail.class | Bin 0 -> 1054 bytes .../NotificationService$MailCommand.class | Bin 0 -> 2528 bytes .../notification/NotificationService.class | Bin 0 -> 12822 bytes .../occupationview/AllocationCell.class | Bin 0 -> 473 bytes .../plugin/occupationview/ColumnGroup$1.class | Bin 0 -> 1981 bytes .../plugin/occupationview/ColumnGroup.class | Bin 0 -> 3251 bytes .../occupationview/EndOfLifeArchiver.class | Bin 0 -> 1544 bytes .../GroupableTableColumnModel.class | Bin 0 -> 1880 bytes .../occupationview/GroupableTableHeader.class | Bin 0 -> 1605 bytes .../GroupableTableHeaderUI.class | Bin 0 -> 5844 bytes .../occupationview/OccupationCell.class | Bin 0 -> 949 bytes .../occupationview/OccupationFactory.class | Bin 0 -> 2140 bytes .../OccupationOption$ListRenderer.class | Bin 0 -> 1178 bytes .../occupationview/OccupationOption.class | Bin 0 -> 4211 bytes .../occupationview/OccupationPlugin.class | Bin 0 -> 2560 bytes .../occupationview/OccupationResources.class | Bin 0 -> 2438 bytes .../occupationview/OccupationResources.xml | 222 + .../OccupationResources_cs.class | Bin 0 -> 1873 bytes .../OccupationResources_de.class | Bin 0 -> 1953 bytes .../OccupationResources_es.class | Bin 0 -> 1920 bytes .../OccupationResources_fr.class | Bin 0 -> 2041 bytes .../OccupationResources_nl.class | Bin 0 -> 2061 bytes .../occupationview/OccupationTableModel.class | Bin 0 -> 5126 bytes .../occupationview/SwingOccupation$1.class | Bin 0 -> 3590 bytes .../occupationview/SwingOccupation$2.class | Bin 0 -> 1229 bytes .../occupationview/SwingOccupation$3.class | Bin 0 -> 1544 bytes .../occupationview/SwingOccupation$4.class | Bin 0 -> 1030 bytes .../occupationview/SwingOccupation$5.class | Bin 0 -> 1030 bytes ...ngOccupation$AllocatableCellRenderer.class | Bin 0 -> 2154 bytes .../SwingOccupation$AllocatableColors$1.class | Bin 0 -> 1773 bytes .../SwingOccupation$AllocatableColors.class | Bin 0 -> 5470 bytes ...wingOccupation$AllocatableSortByName.class | Bin 0 -> 1332 bytes ...ngOccupation$DayOfWeekHeaderRenderer.class | Bin 0 -> 2124 bytes ...ccupation$GroupableTableCellRenderer.class | Bin 0 -> 2029 bytes .../SwingOccupation$LinesBorder.class | Bin 0 -> 4172 bytes ...cupation$OccupationTableCellRenderer.class | Bin 0 -> 6106 bytes .../SwingOccupation$PopupTableHandler.class | Bin 0 -> 10174 bytes .../SwingOccupation$RowHeaderRenderer.class | Bin 0 -> 2056 bytes .../SwingOccupation$countRenderer.class | Bin 0 -> 1845 bytes .../SwingOccupation$newAdapter.class | Bin 0 -> 4107 bytes .../occupationview/SwingOccupation.class | Bin 0 -> 27231 bytes .../occupationview/TimeShiftPanel$1.class | Bin 0 -> 1345 bytes .../occupationview/TimeShiftPanel$2.class | Bin 0 -> 1344 bytes .../TimeShiftPanel$Listener.class | Bin 0 -> 3802 bytes .../occupationview/TimeShiftPanel.class | Bin 0 -> 10556 bytes .../plugin/occupationview/images/archive.gif | Bin 0 -> 216 bytes .../images/eclipse-icons/edit.gif | Bin 0 -> 577 bytes .../images/eclipse-icons/help.gif | Bin 0 -> 259 bytes .../images/eclipse-icons/inout.gif | Bin 0 -> 308 bytes .../images/eclipse-icons/new.gif | Bin 0 -> 335 bytes .../images/eclipse-icons/trash.gif | Bin 0 -> 615 bytes .../plugin/occupationview/images/error.png | Bin 0 -> 1030 bytes .../plugin/occupationview/images/table.png | Bin 0 -> 997 bytes .../officeprinting/OfficePrintingDialog.class | Bin 0 -> 3016 bytes .../OfficePrintingMenuFactory$1.class | Bin 0 -> 3972 bytes .../OfficePrintingMenuFactory.class | Bin 0 -> 9596 bytes .../officeprinting/OfficePrintingOption.class | Bin 0 -> 4849 bytes .../officeprinting/OfficePrintingPlugin.class | Bin 0 -> 2360 bytes .../OfficePrintingResources.xml | 9 + .../plugin/officeprinting/UnoContact.class | Bin 0 -> 9198 bytes eclipse-build/org/rapla/plugin/package.html | 9 + .../rapla/plugin/periodcopy/CopyDialog.class | Bin 0 -> 3184 bytes .../periodcopy/CopyPluginInit$1$1.class | Bin 0 -> 2629 bytes .../plugin/periodcopy/CopyPluginInit$1.class | Bin 0 -> 4673 bytes .../plugin/periodcopy/CopyPluginInit.class | Bin 0 -> 6493 bytes .../plugin/periodcopy/PeriodCopy.properties | 2 + .../plugin/periodcopy/PeriodCopyPlugin.class | Bin 0 -> 2193 bytes .../periodcopy/PeriodCopy_de.properties | 2 + .../periodview/HTMLPeriodViewPage$1.class | Bin 0 -> 1701 bytes .../periodview/HTMLPeriodViewPage.class | Bin 0 -> 3904 bytes .../plugin/periodview/PeriodViewFactory.class | Bin 0 -> 2036 bytes .../plugin/periodview/PeriodViewPlugin.class | Bin 0 -> 1792 bytes .../periodview/SwingPeriodCalendar$1.class | Bin 0 -> 3032 bytes .../periodview/SwingPeriodCalendar.class | Bin 0 -> 4865 bytes .../plugin/periodview/images/period_view.png | Bin 0 -> 932 bytes ...ppointmentSelection$AppointmentPanel.class | Bin 0 -> 10115 bytes .../periodwizard/AppointmentSelection.class | Bin 0 -> 4616 bytes .../PeriodReservationWizard.class | Bin 0 -> 1488 bytes .../periodwizard/PeriodWizardPlugin.class | Bin 0 -> 2298 bytes .../plugin/periodwizard/WizardResources.class | Bin 0 -> 3197 bytes .../plugin/periodwizard/WizardResources.xml | 267 ++ .../periodwizard/WizardResources_de.class | Bin 0 -> 3488 bytes .../periodwizard/WizardResources_es.class | Bin 0 -> 3363 bytes .../periodwizard/WizardResources_fr.class | Bin 0 -> 3528 bytes .../periodwizard/WizardSequence$Handler.class | Bin 0 -> 3979 bytes ...WizardSequence$ReservationAllocation.class | Bin 0 -> 3997 bytes .../WizardSequence$ReservationInfo.class | Bin 0 -> 5641 bytes .../WizardSequence$ReservationWeekview.class | Bin 0 -> 7280 bytes .../plugin/periodwizard/WizardSequence.class | Bin 0 -> 5946 bytes .../tableview/ReservationTableModel.class | Bin 0 -> 2910 bytes .../plugin/tableview/SwingTableView$1.class | Bin 0 -> 1771 bytes .../plugin/tableview/SwingTableView$2.class | Bin 0 -> 1198 bytes .../SwingTableView$PopupTableHandler.class | Bin 0 -> 4574 bytes .../plugin/tableview/SwingTableView.class | Bin 0 -> 7758 bytes .../plugin/tableview/TableViewFactory.class | Bin 0 -> 2010 bytes .../TableViewPage$ReservationRow.class | Bin 0 -> 2332 bytes .../plugin/tableview/TableViewPage.class | Bin 0 -> 5550 bytes .../plugin/tableview/TableViewPlugin.class | Bin 0 -> 1783 bytes .../rapla/plugin/tableview/images/table.png | Bin 0 -> 997 bytes .../org/rapla/plugin/tableview/report.css | 59 + .../plugin/tests/CopyPeriodPluginTest.class | Bin 0 -> 4489 bytes .../rapla/plugin/tests/MailPluginTest.class | Bin 0 -> 2438 bytes .../plugin/tests/NotificationPluginTest.class | Bin 0 -> 6044 bytes .../plugin/weekview/DayViewFactory.class | Bin 0 -> 1997 bytes .../plugin/weekview/HTMLDayViewPage.class | Bin 0 -> 2149 bytes .../plugin/weekview/HTMLWeekViewPage$1.class | Bin 0 -> 1259 bytes .../plugin/weekview/HTMLWeekViewPage.class | Bin 0 -> 2774 bytes .../plugin/weekview/SwingDayCalendar.class | Bin 0 -> 2087 bytes .../plugin/weekview/SwingWeekCalendar$1.class | Bin 0 -> 2679 bytes .../plugin/weekview/SwingWeekCalendar.class | Bin 0 -> 5542 bytes .../plugin/weekview/WeekViewFactory.class | Bin 0 -> 2005 bytes .../plugin/weekview/WeekViewPlugin.class | Bin 0 -> 1869 bytes .../org/rapla/plugin/weekview/images/day.png | Bin 0 -> 704 bytes .../org/rapla/plugin/weekview/images/week.png | Bin 0 -> 706 bytes .../server/RaplaRemoteServiceFactory.class | Bin 0 -> 542 bytes .../org/rapla/server/RemoteMethod.class | Bin 0 -> 1604 bytes .../org/rapla/server/RemoteService.class | Bin 0 -> 334 bytes .../rapla/server/RemoteServiceCaller.class | Bin 0 -> 537 bytes .../org/rapla/server/RemoteSession.class | Bin 0 -> 404 bytes .../org/rapla/server/RemoteStorage.class | Bin 0 -> 2223 bytes .../rapla/server/RemoteStorageCallback.class | Bin 0 -> 426 bytes .../org/rapla/server/RestartServer.class | Bin 0 -> 443 bytes .../rapla/server/SecurityManagerTest.class | Bin 0 -> 5408 bytes .../org/rapla/server/ServerService.class | Bin 0 -> 503 bytes .../org/rapla/server/ShutdownListener.class | Bin 0 -> 198 bytes .../org/rapla/server/ShutdownService.class | Bin 0 -> 813 bytes .../server/internal/RemoteSessionImpl.class | Bin 0 -> 3400 bytes .../server/internal/RemoteStorageImpl.class | Bin 0 -> 16702 bytes .../server/internal/SecurityManager.class | Bin 0 -> 11176 bytes .../server/internal/ServerServiceImpl$1.class | Bin 0 -> 1155 bytes .../server/internal/ServerServiceImpl$2.class | Bin 0 -> 697 bytes .../server/internal/ServerServiceImpl.class | Bin 0 -> 17395 bytes .../internal/SessionExpiredException.class | Bin 0 -> 489 bytes .../ShutdownRemoteServiceFactory$1.class | Bin 0 -> 1770 bytes .../ShutdownRemoteServiceFactory.class | Bin 0 -> 1275 bytes .../server/internal/ShutdownServiceImpl.class | Bin 0 -> 3644 bytes eclipse-build/org/rapla/server/package.html | 15 + .../servletpages/DefaultHTMLMenuEntry.class | Bin 0 -> 1460 bytes .../DefaultHTMLMenuExtensionPoint.class | Bin 0 -> 1963 bytes .../servletpages/HTMLMenuExtensionPoint.class | Bin 0 -> 214 bytes .../RaplaAppletPageGenerator.class | Bin 0 -> 3231 bytes .../RaplaIndexPageGenerator.class | Bin 0 -> 2932 bytes .../servletpages/RaplaJNLPPageGenerator.class | Bin 0 -> 5907 bytes .../servletpages/RaplaPageGenerator.class | Bin 0 -> 364 bytes .../RaplaResourcePageGenerator$Resource.class | Bin 0 -> 712 bytes .../RaplaResourcePageGenerator.class | Bin 0 -> 2611 bytes .../RaplaStatusPageGenerator.class | Bin 0 -> 2390 bytes .../org/rapla/servletpages/package.html | 5 + .../rapla/storage/AuthenticationStore.class | Bin 0 -> 620 bytes .../storage/CachableStorageOperator.class | Bin 0 -> 1030 bytes .../org/rapla/storage/IOContext.class | Bin 0 -> 4995 bytes eclipse-build/org/rapla/storage/IdTable.class | Bin 0 -> 2403 bytes .../rapla/storage/ImportExportManager.class | Bin 0 -> 480 bytes .../org/rapla/storage/LocalCache$1.class | Bin 0 -> 1353 bytes .../org/rapla/storage/LocalCache$2.class | Bin 0 -> 1041 bytes .../storage/LocalCache$IdComparator.class | Bin 0 -> 1051 bytes .../org/rapla/storage/LocalCache.class | Bin 0 -> 12834 bytes .../storage/RaplaSecurityException.class | Bin 0 -> 766 bytes .../storage/ReferenceNotFoundException.class | Bin 0 -> 778 bytes .../org/rapla/storage/StorageOperator.class | Bin 0 -> 2297 bytes .../rapla/storage/StorageUpdateListener.class | Bin 0 -> 304 bytes .../org/rapla/storage/UpdateEvent.class | Bin 0 -> 3080 bytes .../org/rapla/storage/UpdateOperation.class | Bin 0 -> 170 bytes .../org/rapla/storage/UpdateResult$Add.class | Bin 0 -> 749 bytes .../rapla/storage/UpdateResult$Change.class | Bin 0 -> 892 bytes .../rapla/storage/UpdateResult$Remove.class | Bin 0 -> 624 bytes .../org/rapla/storage/UpdateResult.class | Bin 0 -> 2421 bytes .../rapla/storage/dbfile/FileOperator.class | Bin 0 -> 9991 bytes .../org/rapla/storage/dbfile/package.html | 5 + .../dbfile/tests/FileOperatorDiffTest.class | Bin 0 -> 3285 bytes .../dbfile/tests/FileOperatorRemoteTest.class | Bin 0 -> 600 bytes .../dbfile/tests/FileOperatorTest.class | Bin 0 -> 781 bytes .../org/rapla/storage/dbrm/Connector.class | Bin 0 -> 399 bytes .../rapla/storage/dbrm/HTTPConnector.class | Bin 0 -> 6777 bytes .../rapla/storage/dbrm/RaplaStorePage.class | Bin 0 -> 1554 bytes .../rapla/storage/dbrm/RemoteOperator$1.class | Bin 0 -> 657 bytes .../dbrm/RemoteOperator$ServerStub.class | Bin 0 -> 10384 bytes .../dbrm/RemoteOperator$UpdateCommand.class | Bin 0 -> 1317 bytes .../rapla/storage/dbrm/RemoteOperator.class | Bin 0 -> 15902 bytes .../storage/dbsql/AllocatableStorage.class | Bin 0 -> 7454 bytes .../storage/dbsql/AllocationStorage.class | Bin 0 -> 4616 bytes .../dbsql/AppointmentExceptionStorage.class | Bin 0 -> 3660 bytes .../storage/dbsql/AppointmentStorage.class | Bin 0 -> 5937 bytes .../storage/dbsql/AttributeValueStorage.class | Bin 0 -> 5204 bytes .../storage/dbsql/CategoryStorage$1.class | Bin 0 -> 1307 bytes .../rapla/storage/dbsql/CategoryStorage.class | Bin 0 -> 6456 bytes .../org/rapla/storage/dbsql/DBOperator.class | Bin 0 -> 16147 bytes .../storage/dbsql/DynamicTypeStorage.class | Bin 0 -> 1933 bytes .../rapla/storage/dbsql/EntityStorage.class | Bin 0 -> 11736 bytes .../rapla/storage/dbsql/PeriodStorage.class | Bin 0 -> 3342 bytes .../storage/dbsql/PermissionStorage.class | Bin 0 -> 5667 bytes .../storage/dbsql/PreferenceStorage.class | Bin 0 -> 5041 bytes .../storage/dbsql/RaplaDBException.class | Bin 0 -> 760 bytes .../org/rapla/storage/dbsql/RaplaSQL.class | Bin 0 -> 4558 bytes .../storage/dbsql/RaplaTypeStorage.class | Bin 0 -> 3558 bytes .../storage/dbsql/ReservationStorage.class | Bin 0 -> 6177 bytes .../org/rapla/storage/dbsql/Storage.class | Bin 0 -> 474 bytes .../storage/dbsql/UserGroupStorage.class | Bin 0 -> 2961 bytes .../org/rapla/storage/dbsql/UserStorage.class | Bin 0 -> 3758 bytes .../org/rapla/storage/dbsql/package.html | 4 + .../dbsql/tests/SQLOperatorRemoteTest.class | Bin 0 -> 8034 bytes .../storage/dbsql/tests/SQLOperatorTest.class | Bin 0 -> 7612 bytes .../impl/AbstractCachableOperator$1.class | Bin 0 -> 703 bytes .../impl/AbstractCachableOperator.class | Bin 0 -> 29096 bytes .../org/rapla/storage/impl/EntityStore.class | Bin 0 -> 5355 bytes .../impl/ImportExportManagerImpl.class | Bin 0 -> 3240 bytes eclipse-build/org/rapla/storage/package.html | 5 + .../storage/tests/AbstractOperatorTest.class | Bin 0 -> 8427 bytes .../rapla/storage/tests/LocalCacheTest.class | Bin 0 -> 5922 bytes .../rapla/storage/xml/AllocatableReader.class | Bin 0 -> 7468 bytes .../rapla/storage/xml/AllocatableWriter.class | Bin 0 -> 4836 bytes .../rapla/storage/xml/CategoryReader.class | Bin 0 -> 6005 bytes .../rapla/storage/xml/CategoryWriter.class | Bin 0 -> 2673 bytes .../storage/xml/ClassifiableWriter.class | Bin 0 -> 2573 bytes .../xml/ClassificationFilterReader.class | Bin 0 -> 4949 bytes .../xml/ClassificationFilterWriter.class | Bin 0 -> 2943 bytes .../rapla/storage/xml/DelegationHandler.class | Bin 0 -> 6850 bytes .../org/rapla/storage/xml/DynAttReader.class | Bin 0 -> 3142 bytes .../rapla/storage/xml/DynamicTypeReader.class | Bin 0 -> 9014 bytes .../rapla/storage/xml/DynamicTypeWriter.class | Bin 0 -> 5729 bytes .../org/rapla/storage/xml/Namespaces.class | Bin 0 -> 806 bytes .../org/rapla/storage/xml/PeriodReader.class | Bin 0 -> 3375 bytes .../org/rapla/storage/xml/PeriodWriter.class | Bin 0 -> 2249 bytes .../rapla/storage/xml/PreferenceReader.class | Bin 0 -> 5626 bytes .../rapla/storage/xml/PreferenceWriter.class | Bin 0 -> 3049 bytes .../xml/RaplaCalendarSettingsReader.class | Bin 0 -> 5325 bytes .../xml/RaplaCalendarSettingsWriter.class | Bin 0 -> 4038 bytes .../xml/RaplaConfigurationReader$1.class | Bin 0 -> 1201 bytes .../xml/RaplaConfigurationReader.class | Bin 0 -> 3952 bytes .../xml/RaplaConfigurationWriter.class | Bin 0 -> 4316 bytes .../storage/xml/RaplaEntityComparator.class | Bin 0 -> 2002 bytes .../rapla/storage/xml/RaplaErrorHandler.class | Bin 0 -> 1541 bytes .../org/rapla/storage/xml/RaplaInput.class | Bin 0 -> 9580 bytes .../rapla/storage/xml/RaplaMainReader.class | Bin 0 -> 6005 bytes .../rapla/storage/xml/RaplaMainWriter.class | Bin 0 -> 6562 bytes .../rapla/storage/xml/RaplaMapReader.class | Bin 0 -> 5145 bytes .../rapla/storage/xml/RaplaMapWriter.class | Bin 0 -> 3042 bytes .../rapla/storage/xml/RaplaSAXPipeline.class | Bin 0 -> 4553 bytes .../rapla/storage/xml/RaplaXMLReader.class | Bin 0 -> 11759 bytes .../rapla/storage/xml/RaplaXMLWriter.class | Bin 0 -> 9955 bytes .../org/rapla/storage/xml/RemoveReader.class | Bin 0 -> 2550 bytes .../rapla/storage/xml/ReservationReader.class | Bin 0 -> 8869 bytes .../rapla/storage/xml/ReservationWriter.class | Bin 0 -> 5404 bytes .../org/rapla/storage/xml/TestWriter.class | Bin 0 -> 265 bytes .../rapla/storage/xml/TransformerFilter.class | Bin 0 -> 2003 bytes .../org/rapla/storage/xml/UserReader.class | Bin 0 -> 4734 bytes .../org/rapla/storage/xml/UserWriter.class | Bin 0 -> 3990 bytes .../storage/xml/WrongVersionException.class | Bin 0 -> 754 bytes .../org/rapla/storage/xml/convert0_4to0_5.xsl | 232 + .../org/rapla/storage/xml/convert0_5to0_6.xsl | 39 + .../org/rapla/storage/xml/convert0_6to0_7.xsl | 81 + .../org/rapla/storage/xml/convert0_7to0_8.xsl | 76 + .../org/rapla/storage/xml/convert0_8to0_9.xsl | 175 + .../org/rapla/storage/xml/convert0_9to1_0.xsl | 43 + eclipse-build/org/rapla/storage/xml/rapla.rng | 418 ++ eclipse-build/org/rapla/storage/xml/relax.rng | 328 ++ .../storage/xml/tests/ConverterTest.class | Bin 0 -> 874 bytes .../rapla/storage/xml/tests/version-0.5.xml | 348 ++ eclipse-build/test.xconf | 109 + eclipse-build/test.xlog | 74 + eclipse-build/testdefault.xml | 256 ++ generated-src/META-INF/rapla-plugin.list | 16 + generated-src/org/rapla/MyResources.java | 17 + generated-src/org/rapla/RaplaResources.java | 501 +++ .../org/rapla/RaplaResources_cs.java | 370 ++ .../org/rapla/RaplaResources_de.java | 435 ++ .../org/rapla/RaplaResources_es.java | 421 ++ .../org/rapla/RaplaResources_fr.java | 424 ++ .../org/rapla/RaplaResources_nl.java | 403 ++ .../org/rapla/RaplaResources_pl.java | 383 ++ .../autoexport/AutoExportResources.java | 21 + .../autoexport/AutoExportResources_de.java | 21 + .../autoexport/AutoExportResources_es.java | 21 + .../autoexport/AutoExportResources_fr.java | 21 + .../autoexport/AutoExportResources_nl.java | 19 + .../export2ical/Export2iCalResources.java | 32 + .../export2ical/Export2iCalResources_de.java | 32 + .../export2ical/Export2iCalResources_es.java | 16 + .../export2ical/Export2iCalResources_fr.java | 32 + .../importusers/ImportUsersResources.java | 16 + .../importusers/ImportUsersResources_cs.java | 16 + .../importusers/ImportUsersResources_de.java | 16 + .../importusers/ImportUsersResources_es.java | 16 + .../importusers/ImportUsersResources_fr.java | 16 + .../importusers/ImportUsersResources_nl.java | 16 + .../notification/NotificationResources.java | 26 + .../NotificationResources_de.java | 26 + .../NotificationResources_es.java | 25 + .../NotificationResources_fr.java | 26 + .../occupationview/OccupationResources.java | 43 + .../OccupationResources_cs.java | 36 + .../OccupationResources_de.java | 37 + .../OccupationResources_es.java | 37 + .../OccupationResources_fr.java | 37 + .../OccupationResources_nl.java | 37 + .../plugin/periodwizard/WizardResources.java | 65 + .../periodwizard/WizardResources_de.java | 64 + .../periodwizard/WizardResources_es.java | 63 + .../periodwizard/WizardResources_fr.java | 64 + jetty/jetty.xml | 104 + jetty/webdefault.xml | 203 + legal/COPYING | 340 ++ legal/LIBRARIES-FAQ | 21 + legal/LICENCE.iCal4j | 33 + legal/LICENSE.apache | 48 + legal/LICENSE.eclipse-icons | 213 + legal/LICENSE.jetty | 133 + lib/ant-junit.jar | Bin 0 -> 73665 bytes lib/ant-launcher.jar | Bin 0 -> 8673 bytes lib/ant.jar | Bin 0 -> 999966 bytes lib/client/.cvsignore | 0 lib/client/CLIENT-LIBRARIES.txt | 1 + lib/common/.cvsignore | 0 lib/common/COMMON-LIBRARIES.txt | 1 + lib/common/avalon-framework-4.2.0.jar | Bin 0 -> 74586 bytes lib/common/avalon-logging.jar | Bin 0 -> 169549 bytes lib/common/picollo.jar | Bin 0 -> 148185 bytes lib/jetty-6.1.11.jar | Bin 0 -> 500194 bytes lib/jetty-util-6.1.11.jar | Bin 0 -> 160510 bytes lib/junit-3.8.jar | Bin 0 -> 121070 bytes lib/server/.cvsignore | 0 lib/server/SERVER-LIBRARIES.txt | 1 + lib/server/avalon-logging.jar | Bin 0 -> 169549 bytes lib/server/backport-util-concurrent-3.1.jar | Bin 0 -> 331716 bytes lib/server/commons-codec-1.5.jar | Bin 0 -> 73098 bytes lib/server/commons-lang-2.6.jar | Bin 0 -> 284220 bytes lib/server/commons-logging-1.1.1.jar | Bin 0 -> 60686 bytes lib/server/ical4j-1.0.1.jar | Bin 0 -> 972282 bytes lib/servlet-api-2.5-6.1.11.jar | Bin 0 -> 132417 bytes lib/test-only/hsqldb.jar | Bin 0 -> 643806 bytes .../mysql-connector-java-3.1.6-bin.jar | Bin 0 -> 391434 bytes lib/test-only/postgresjdbc.jar | Bin 0 -> 336933 bytes lib/unused/.cvsignore | 0 maintainj/META-INF/aop.xml | 13 + service/bin/InstallRaplaWrapper-NT.bat | 103 + service/bin/PauseRaplaWrapper-NT.bat | 91 + service/bin/QueryRaplaWrapper-NT.bat | 91 + service/bin/RaplaWrapperCommand.bat | 179 + service/bin/RestartRaplaWrapper-NT.bat | 6 + service/bin/ResumeRaplaWrapper-NT.bat | 91 + service/bin/StartRaplaWrapper-NT.bat | 91 + service/bin/StopRaplaWrapper-NT.bat | 91 + service/bin/UninstallRaplaWrapper-NT.bat | 91 + service/bin/wrapper.exe | Bin 0 -> 332288 bytes service/conf/wrapper.conf | 208 + service/doc/index.html | 12 + service/doc/readme.txt | 7 + service/doc/revisions.txt | 2511 +++++++++++ service/doc/wrapper-community-license-1.1.txt | 396 ++ service/lib/wrapper.dll | Bin 0 -> 235520 bytes service/lib/wrapper.jar | Bin 0 -> 114841 bytes src/org/rapla/AppointmentFormaterImpl.java | 359 ++ src/org/rapla/COPYING | 280 ++ src/org/rapla/Main.java | 229 + src/org/rapla/MainApplet.java | 135 + src/org/rapla/MainServlet.java | 358 ++ src/org/rapla/MyResources.xml | 8 + src/org/rapla/RaplaLocaleImpl.java | 250 ++ src/org/rapla/RaplaLogKitAdapater.java | 55 + src/org/rapla/RaplaMainContainer.java | 219 + src/org/rapla/RaplaMetaConfigInfo.java | 61 + src/org/rapla/RaplaResources.xml | 3846 +++++++++++++++++ src/org/rapla/RaplaStartupEnvironment.java | 159 + src/org/rapla/bootstrap/RaplaLoader.java | 124 + .../bootstrap/RaplaServerAsServiceLoader.java | 15 + .../rapla/bootstrap/RaplaServerLoader.java | 15 + .../bootstrap/RaplaStandaloneLoader.java | 13 + src/org/rapla/client/ClientService.java | 36 + src/org/rapla/client/RaplaClientListener.java | 20 + .../client/RaplaClientListenerAdapter.java | 25 + .../client/internal/LanguageChooser.java | 106 + .../client/internal/LoadingProgress.java | 149 + .../rapla/client/internal/LoginDialog.java | 293 ++ .../internal/RaplaClientServiceImpl.java | 599 +++ src/org/rapla/client/package.html | 10 + .../calendar/AbstractBlockField.java | 398 ++ .../components/calendar/ArrowPolygon.java | 78 + .../components/calendar/CalendarMenu.java | 385 ++ .../rapla/components/calendar/DEPENDENCIES | 7 + .../components/calendar/DateChangeEvent.java | 28 + .../calendar/DateChangeListener.java | 20 + .../rapla/components/calendar/DateField.java | 356 ++ .../rapla/components/calendar/DateModel.java | 205 + .../components/calendar/DateRenderer.java | 29 + .../calendar/DateRendererAdapter.java | 94 + .../components/calendar/DaySelection.java | 454 ++ .../rapla/components/calendar/NavButton.java | 180 + .../components/calendar/NumberField.java | 215 + .../components/calendar/RaplaArrowButton.java | 151 + .../components/calendar/RaplaCalendar.java | 280 ++ .../components/calendar/RaplaComboBox.java | 273 ++ .../components/calendar/RaplaNumber.java | 169 + .../rapla/components/calendar/RaplaTime.java | 555 +++ .../rapla/components/calendar/TimeField.java | 302 ++ .../rapla/components/calendar/TimeModel.java | 101 + .../components/calendar/TimeRenderer.java | 28 + .../calendar/WeekendHighlightRenderer.java | 62 + src/org/rapla/components/calendar/clock.png | Bin 0 -> 764 bytes .../jdk14adapter/AWTAdapterFactory.java | 59 + .../jdk14adapter/AWTAdapterFactoryImpl.java | 90 + .../calendar/jdk14adapter/FocusAdapter.java | 24 + .../calendar/jdk14adapter/FocusTester.java | 19 + .../calendar/jdk14adapter/package.html | 7 + .../rapla/components/calendar/package.html | 7 + .../calendarview/AbstractGroupStrategy.java | 256 ++ .../calendarview/BestFitStrategy.java | 28 + .../rapla/components/calendarview/Block.java | 34 + .../calendarview/BlockComparator.java | 29 + .../calendarview/BuildStrategy.java | 22 + .../components/calendarview/Builder.java | 45 + .../components/calendarview/CalendarView.java | 45 + .../components/calendarview/DEPENDENCIES | 4 + .../components/calendarview/MonthMapper.java | 64 + .../calendarview/WeekdayMapper.java | 77 + .../calendarview/html/AbstractHTMLView.java | 145 + .../calendarview/html/HTMLBlock.java | 8 + .../html/HTMLCompactWeekView.java | 189 + .../calendarview/html/HTMLMonthView.java | 162 + .../calendarview/html/HTMLPeriodView.java | 319 ++ .../calendarview/html/HTMLWeekView.java | 375 ++ .../components/calendarview/package.html | 7 + .../calendarview/swing/AbstractDaySlot.java | 227 + .../swing/AbstractSwingCalendar.java | 367 ++ .../calendarview/swing/DaySlot.java | 28 + .../calendarview/swing/DraggingHandler.java | 245 ++ .../calendarview/swing/LargeDaySlot.java | 374 ++ .../calendarview/swing/PeriodDaySlot.java | 401 ++ .../calendarview/swing/SelectionHandler.java | 248 ++ .../calendarview/swing/SmallDaySlot.java | 198 + .../calendarview/swing/SwingBlock.java | 26 + .../swing/SwingCompactWeekView.java | 328 ++ .../calendarview/swing/SwingMonthView.java | 295 ++ .../calendarview/swing/SwingPeriodView.java | 355 ++ .../calendarview/swing/SwingWeekView.java | 423 ++ .../calendarview/swing/TimeScale.java | 190 + .../calendarview/swing/ViewListener.java | 46 + .../calendarview/swing/scaling/IRowScale.java | 20 + .../swing/scaling/IRowScaleSmall.java | 11 + .../swing/scaling/LinearRowScale.java | 161 + .../swing/scaling/OneRowScale.java | 38 + .../swing/scaling/VariableRowScale.java | 197 + .../components/iolayer/ComponentPrinter.java | 67 + src/org/rapla/components/iolayer/DEPENDECIES | 5 + .../rapla/components/iolayer/DefaultIO.java | 329 ++ .../rapla/components/iolayer/FileContent.java | 23 + .../rapla/components/iolayer/IOInterface.java | 72 + .../rapla/components/iolayer/PrintExport.java | 102 + .../rapla/components/iolayer/WebstartIO.java | 246 ++ src/org/rapla/components/iolayer/package.html | 7 + src/org/rapla/components/layout/DEPENDENCIES | 3 + .../rapla/components/layout/TableLayout.java | 2133 +++++++++ .../layout/TableLayoutConstants.java | 55 + .../layout/TableLayoutConstraints.java | 206 + src/org/rapla/components/layout/package.html | 6 + src/org/rapla/components/mail/Convert.java | 96 + .../rapla/components/mail/MailException.java | 35 + .../rapla/components/mail/MailInterface.java | 18 + src/org/rapla/components/mail/MailToFile.java | 82 + .../rapla/components/mail/MailapiClient.java | 145 + .../rapla/components/mail/MockMailServer.java | 104 + src/org/rapla/components/mail/Pop3.java | 812 ++++ src/org/rapla/components/mail/PopStatus.java | 77 + src/org/rapla/components/mail/SmtpClient.java | 234 + src/org/rapla/components/mail/package.html | 7 + src/org/rapla/components/package.html | 8 + .../components/tablesorter/TableSorter.java | 545 +++ .../treetable/AbstractTreeTableModel.java | 210 + .../rapla/components/treetable/DEPENDENCIES | 4 + .../components/treetable/JTreeTable.java | 910 ++++ .../treetable/TableToolTipRenderer.java | 17 + .../components/treetable/TreeTableEditor.java | 23 + .../components/treetable/TreeTableModel.java | 73 + .../rapla/components/treetable/package.html | 6 + src/org/rapla/components/util/Assert.java | 76 + .../rapla/components/util/AssertionError.java | 33 + src/org/rapla/components/util/Command.java | 20 + .../rapla/components/util/CommandQueue.java | 83 + src/org/rapla/components/util/DEPENDENCIES | 7 + src/org/rapla/components/util/DateTools.java | 158 + src/org/rapla/components/util/IOUtil.java | 277 ++ .../components/util/InverseComparator.java | 36 + src/org/rapla/components/util/JNLPUtil.java | 35 + src/org/rapla/components/util/Mutex.java | 90 + src/org/rapla/components/util/OrderedMap.java | 74 + .../util/SerializableDateTimeFormat.java | 147 + .../rapla/components/util/SmallIntMap.java | 147 + src/org/rapla/components/util/Tools.java | 214 + .../util/iterator/ArrayIterator.java | 41 + .../util/iterator/FilterIterator.java | 58 + .../components/util/iterator/IntIterator.java | 100 + .../util/iterator/IteratorChain.java | 49 + .../util/iterator/NestedIterator.java | 73 + .../components/util/iterator/package.html | 4 + src/org/rapla/components/util/package.html | 4 + .../components/util/xml/XMLReaderAdapter.java | 60 + .../util/xml/XMLTransformerAdapter.java | 66 + .../rapla/components/util/xml/XMLWriter.java | 191 + .../components/xmlbundle/CompoundI18n.java | 84 + .../rapla/components/xmlbundle/DEPENDENCIES | 7 + .../components/xmlbundle/I18nBundle.java | 67 + .../xmlbundle/LocaleChangeEvent.java | 27 + .../xmlbundle/LocaleChangeListener.java | 17 + .../components/xmlbundle/LocaleSelector.java | 40 + .../xmlbundle/impl/DictionaryEntry.java | 61 + .../xmlbundle/impl/I18nBundleImpl.java | 566 +++ .../xmlbundle/impl/LocaleSelectorImpl.java | 86 + .../xmlbundle/impl/RaplaDictionary.java | 69 + .../xmlbundle/impl/ResourceFileGenerator.java | 161 + .../xmlbundle/impl/TranslationParser.java | 398 ++ .../xmlbundle/impl/UniqueKeyException.java | 24 + .../rapla/components/xmlbundle/package.html | 10 + .../rapla/components/xmlbundle/resources.dtd | 28 + src/org/rapla/entities/Annotatable.java | 26 + src/org/rapla/entities/Category.java | 61 + .../rapla/entities/CategoryAnnotations.java | 29 + .../rapla/entities/DependencyException.java | 37 + src/org/rapla/entities/Entity.java | 38 + .../entities/EntityNotFoundException.java | 29 + .../entities/IllegalAnnotationException.java | 34 + src/org/rapla/entities/MultiLanguageName.java | 106 + .../rapla/entities/MultiLanguageNamed.java | 25 + src/org/rapla/entities/Named.java | 22 + src/org/rapla/entities/NamedComparator.java | 42 + src/org/rapla/entities/Ownable.java | 29 + src/org/rapla/entities/RaplaObject.java | 30 + src/org/rapla/entities/RaplaType.java | 101 + src/org/rapla/entities/ReadOnlyException.java | 25 + src/org/rapla/entities/Timestamp.java | 23 + .../rapla/entities/UniqueKeyException.java | 32 + src/org/rapla/entities/User.java | 55 + src/org/rapla/entities/UserComparator.java | 42 + .../CalendarModelConfiguration.java | 45 + .../entities/configuration/Preferences.java | 54 + .../configuration/RaplaConfiguration.java | 163 + .../entities/configuration/RaplaMap.java | 27 + .../internal/AbstractClassifiableFilter.java | 119 + .../CalendarModelConfigurationImpl.java | 167 + .../internal/PreferencesImpl.java | 238 + .../configuration/internal/RaplaMapImpl.java | 275 ++ .../rapla/entities/domain/Allocatable.java | 68 + .../rapla/entities/domain/Appointment.java | 126 + .../entities/domain/AppointmentBlock.java | 98 + .../entities/domain/AppointmentFormater.java | 28 + .../domain/AppointmentStartComparator.java | 55 + src/org/rapla/entities/domain/Period.java | 73 + src/org/rapla/entities/domain/Permission.java | 98 + src/org/rapla/entities/domain/Repeating.java | 86 + .../entities/domain/RepeatingEnding.java | 71 + .../rapla/entities/domain/RepeatingType.java | 72 + .../rapla/entities/domain/Reservation.java | 100 + .../entities/domain/ReservationHelper.java | 62 + .../domain/ReservationStartComparator.java | 77 + .../domain/internal/AllocatableImpl.java | 299 ++ .../domain/internal/AppointmentImpl.java | 714 +++ .../entities/domain/internal/PeriodImpl.java | 165 + .../domain/internal/PermissionImpl.java | 238 + .../domain/internal/RepeatingImpl.java | 403 ++ .../domain/internal/ReservationImpl.java | 434 ++ .../rapla/entities/dynamictype/Attribute.java | 83 + .../dynamictype/AttributeAnnotations.java | 38 + .../entities/dynamictype/AttributeType.java | 76 + .../entities/dynamictype/Classifiable.java | 32 + .../entities/dynamictype/Classification.java | 40 + .../dynamictype/ClassificationFilter.java | 113 + .../dynamictype/ClassificationFilterRule.java | 22 + .../entities/dynamictype/ConstraintIds.java | 29 + .../entities/dynamictype/DynamicType.java | 58 + .../dynamictype/DynamicTypeAnnotations.java | 38 + .../dynamictype/internal/AttributeImpl.java | 415 ++ .../internal/ClassificationFilterImpl.java | 386 ++ .../ClassificationFilterRuleImpl.java | 137 + .../internal/ClassificationImpl.java | 334 ++ .../dynamictype/internal/DynamicTypeImpl.java | 350 ++ .../internal/ParsedAnnotation.java | 99 + .../rapla/entities/internal/CategoryImpl.java | 303 ++ .../internal/ModifiableTimestamp.java | 24 + src/org/rapla/entities/internal/UserImpl.java | 239 + src/org/rapla/entities/internal/package.html | 5 + src/org/rapla/entities/package.html | 6 + .../CannotExistWithoutTypeException.java | 16 + .../storage/DynamicTypeDependant.java | 37 + .../entities/storage/EntityReferencer.java | 37 + .../entities/storage/EntityResolver.java | 29 + .../rapla/entities/storage/Mementable.java | 48 + src/org/rapla/entities/storage/RefEntity.java | 61 + .../storage/internal/ReferenceHandler.java | 302 ++ .../storage/internal/SimpleEntity.java | 282 ++ .../storage/internal/SimpleIdentifier.java | 99 + .../rapla/examples/RaplaConnectorTest.java | 47 + src/org/rapla/examples/RaplaImportUsers.java | 107 + .../SimpleConnectorStartupEnvironment.java | 94 + .../rapla/facade/AllocationChangeEvent.java | 108 + .../facade/AllocationChangeListener.java | 38 + src/org/rapla/facade/ClientFacade.java | 34 + src/org/rapla/facade/Conflict.java | 62 + src/org/rapla/facade/ModificationEvent.java | 41 + .../rapla/facade/ModificationListener.java | 47 + src/org/rapla/facade/ModificationModule.java | 98 + src/org/rapla/facade/PeriodModel.java | 38 + src/org/rapla/facade/QueryModule.java | 128 + src/org/rapla/facade/RaplaComponent.java | 428 ++ src/org/rapla/facade/UpdateErrorListener.java | 37 + src/org/rapla/facade/UpdateModule.java | 75 + src/org/rapla/facade/UserModule.java | 51 + .../internal/AllocationChangeFinder.java | 219 + .../rapla/facade/internal/ConflictFinder.java | 383 ++ .../rapla/facade/internal/ConflictImpl.java | 134 + src/org/rapla/facade/internal/FacadeImpl.java | 1236 ++++++ .../internal/ModificationEventImpl.java | 184 + .../facade/internal/PeriodModelImpl.java | 207 + src/org/rapla/facade/package.html | 6 + src/org/rapla/framework/Container.java | 33 + src/org/rapla/framework/DEPENDENCIES | 4 + src/org/rapla/framework/PluginDescriptor.java | 23 + src/org/rapla/framework/RaplaContext.java | 14 + .../framework/RaplaContextException.java | 20 + .../rapla/framework/RaplaDefaultContext.java | 72 + src/org/rapla/framework/RaplaException.java | 40 + src/org/rapla/framework/RaplaLocale.java | 84 + .../rapla/framework/ServiceListCreator.java | 78 + .../rapla/framework/StartupEnvironment.java | 30 + .../framework/internal/ComponentInfo.java | 36 + .../rapla/framework/internal/ConfigTools.java | 262 ++ .../framework/internal/ContainerImpl.java | 457 ++ .../framework/internal/LogManagerAdapter.java | 26 + src/org/rapla/framework/package.html | 14 + src/org/rapla/gui/CalendarModel.java | 52 + src/org/rapla/gui/CalendarOptions.java | 51 + src/org/rapla/gui/CalendarOptionsImpl.java | 177 + src/org/rapla/gui/DefaultPluginOption.java | 121 + src/org/rapla/gui/EditComponent.java | 24 + src/org/rapla/gui/EditController.java | 18 + src/org/rapla/gui/InfoFactory.java | 29 + src/org/rapla/gui/MenuContext.java | 72 + src/org/rapla/gui/MenuExtensionPoint.java | 10 + src/org/rapla/gui/MenuFactory.java | 33 + src/org/rapla/gui/ObjectMenuFactory.java | 9 + src/org/rapla/gui/OptionPanel.java | 31 + src/org/rapla/gui/RaplaAction.java | 81 + src/org/rapla/gui/RaplaGUIComponent.java | 283 ++ src/org/rapla/gui/ReservationController.java | 52 + src/org/rapla/gui/ReservationEdit.java | 16 + src/org/rapla/gui/ReservationWizard.java | 31 + src/org/rapla/gui/SwingCalendarView.java | 32 + src/org/rapla/gui/TreeFactory.java | 29 + src/org/rapla/gui/ViewFactory.java | 33 + src/org/rapla/gui/images/Images.java | 51 + src/org/rapla/gui/images/admin.png | Bin 0 -> 1052 bytes src/org/rapla/gui/images/calendar.png | Bin 0 -> 2451 bytes src/org/rapla/gui/images/calendar_small.png | Bin 0 -> 854 bytes src/org/rapla/gui/images/categories.png | Bin 0 -> 356 bytes src/org/rapla/gui/images/choice_no.png | Bin 0 -> 230 bytes src/org/rapla/gui/images/choice_yes.png | Bin 0 -> 247 bytes src/org/rapla/gui/images/conflicts_small.png | Bin 0 -> 617 bytes .../gui/images/eclipse-icons/addtsk_tsk.gif | Bin 0 -> 590 bytes .../gui/images/eclipse-icons/arrow_left.gif | Bin 0 -> 327 bytes .../gui/images/eclipse-icons/arrow_right.gif | Bin 0 -> 216 bytes .../gui/images/eclipse-icons/big_folder.gif | Bin 0 -> 1304 bytes .../eclipse-icons/big_folder_categories.gif | Bin 0 -> 1313 bytes .../eclipse-icons/big_folder_conflicts.gif | Bin 0 -> 1349 bytes .../eclipse-icons/big_folder_events.gif | Bin 0 -> 1325 bytes .../big_folder_events_filtered.gif | Bin 0 -> 1387 bytes .../eclipse-icons/big_folder_filtered.gif | Bin 0 -> 1334 bytes .../images/eclipse-icons/big_folder_orig.gif | Bin 0 -> 2864 bytes .../eclipse-icons/big_folder_periods.gif | Bin 0 -> 1353 bytes .../eclipse-icons/big_folder_resources.gif | Bin 0 -> 1332 bytes .../big_folder_resources_filtered.gif | Bin 0 -> 1347 bytes .../images/eclipse-icons/big_folder_users.gif | Bin 0 -> 1334 bytes .../rapla/gui/images/eclipse-icons/blank.gif | Bin 0 -> 80 bytes .../gui/images/eclipse-icons/checked.gif | Bin 0 -> 343 bytes .../rapla/gui/images/eclipse-icons/clock.gif | Bin 0 -> 643 bytes .../gui/images/eclipse-icons/conflict.gif | Bin 0 -> 103 bytes .../rapla/gui/images/eclipse-icons/copy.gif | Bin 0 -> 594 bytes .../rapla/gui/images/eclipse-icons/cross.gif | Bin 0 -> 376 bytes .../rapla/gui/images/eclipse-icons/cut.gif | Bin 0 -> 212 bytes .../rapla/gui/images/eclipse-icons/edit.gif | Bin 0 -> 577 bytes .../rapla/gui/images/eclipse-icons/export.gif | Bin 0 -> 329 bytes .../rapla/gui/images/eclipse-icons/filter.gif | Bin 0 -> 224 bytes .../gui/images/eclipse-icons/filter_small.gif | Bin 0 -> 135 bytes .../gui/images/eclipse-icons/folder_open.gif | Bin 0 -> 216 bytes .../rapla/gui/images/eclipse-icons/gray.gif | Bin 0 -> 193 bytes .../rapla/gui/images/eclipse-icons/green.gif | Bin 0 -> 193 bytes .../rapla/gui/images/eclipse-icons/help.gif | Bin 0 -> 259 bytes .../rapla/gui/images/eclipse-icons/import.gif | Bin 0 -> 327 bytes .../rapla/gui/images/eclipse-icons/info.gif | Bin 0 -> 146 bytes .../rapla/gui/images/eclipse-icons/minus.gif | Bin 0 -> 185 bytes .../rapla/gui/images/eclipse-icons/new.gif | Bin 0 -> 335 bytes .../gui/images/eclipse-icons/no_perm.gif | Bin 0 -> 333 bytes .../rapla/gui/images/eclipse-icons/paste.gif | Bin 0 -> 605 bytes .../gui/images/eclipse-icons/permissions.gif | Bin 0 -> 255 bytes .../rapla/gui/images/eclipse-icons/plus.gif | Bin 0 -> 318 bytes .../rapla/gui/images/eclipse-icons/print.gif | Bin 0 -> 612 bytes .../rapla/gui/images/eclipse-icons/radio.gif | Bin 0 -> 187 bytes .../gui/images/eclipse-icons/refresh.gif | Bin 0 -> 217 bytes .../gui/images/eclipse-icons/reservations.gif | Bin 0 -> 359 bytes .../rapla/gui/images/eclipse-icons/save.gif | Bin 0 -> 639 bytes .../rapla/gui/images/eclipse-icons/trash.gif | Bin 0 -> 615 bytes .../gui/images/eclipse-icons/tree_minus.gif | Bin 0 -> 89 bytes .../gui/images/eclipse-icons/tree_plus.gif | Bin 0 -> 92 bytes .../gui/images/eclipse-icons/unchecked.gif | Bin 0 -> 148 bytes .../rapla/gui/images/eclipse-icons/update.gif | Bin 0 -> 336 bytes .../gui/images/eclipse-icons/warning.gif | Bin 0 -> 324 bytes .../rapla/gui/images/eclipse-icons/yellow.gif | Bin 0 -> 181 bytes .../rapla/gui/images/edit_window_small.png | Bin 0 -> 543 bytes src/org/rapla/gui/images/empty.png | Bin 0 -> 174 bytes src/org/rapla/gui/images/error.png | Bin 0 -> 1030 bytes src/org/rapla/gui/images/exception.png | Bin 0 -> 155 bytes src/org/rapla/gui/images/filter.png | Bin 0 -> 450 bytes src/org/rapla/gui/images/green.png | Bin 0 -> 433 bytes src/org/rapla/gui/images/info.png | Bin 0 -> 3436 bytes src/org/rapla/gui/images/info_small.png | Bin 0 -> 355 bytes src/org/rapla/gui/images/list.png | Bin 0 -> 428 bytes src/org/rapla/gui/images/mail.png | Bin 0 -> 573 bytes src/org/rapla/gui/images/new_repeating.gif | Bin 0 -> 570 bytes src/org/rapla/gui/images/no_perm.png | Bin 0 -> 280 bytes src/org/rapla/gui/images/option_small.png | Bin 0 -> 374 bytes src/org/rapla/gui/images/paste_new.gif | Bin 0 -> 625 bytes src/org/rapla/gui/images/period.png | Bin 0 -> 743 bytes src/org/rapla/gui/images/persons.png | Bin 0 -> 416 bytes src/org/rapla/gui/images/persons_yellow.png | Bin 0 -> 414 bytes src/org/rapla/gui/images/rapla_128x128.ico | Bin 0 -> 67646 bytes src/org/rapla/gui/images/rapla_16x16.ico | Bin 0 -> 1150 bytes src/org/rapla/gui/images/rapla_32x32.ico | Bin 0 -> 4286 bytes src/org/rapla/gui/images/rapla_small.png | Bin 0 -> 5303 bytes src/org/rapla/gui/images/refresh.png | Bin 0 -> 561 bytes src/org/rapla/gui/images/repeating.png | Bin 0 -> 460 bytes src/org/rapla/gui/images/resources.png | Bin 0 -> 1397 bytes src/org/rapla/gui/images/single.png | Bin 0 -> 374 bytes src/org/rapla/gui/images/tafel.png | Bin 0 -> 39528 bytes src/org/rapla/gui/images/tafel_old.png | Bin 0 -> 5701 bytes src/org/rapla/gui/images/tafel_tocompare.png | Bin 0 -> 39932 bytes src/org/rapla/gui/images/taken.png | Bin 0 -> 194 bytes src/org/rapla/gui/images/tree.png | Bin 0 -> 388 bytes src/org/rapla/gui/images/un_flag.png | Bin 0 -> 365 bytes src/org/rapla/gui/images/users.png | Bin 0 -> 1231 bytes src/org/rapla/gui/images/yellow.png | Bin 0 -> 434 bytes .../rapla/gui/internal/CalendarEditor.java | 198 + .../rapla/gui/internal/CalendarOption.java | 333 ++ .../rapla/gui/internal/ConnectionOption.java | 72 + src/org/rapla/gui/internal/LocaleOption.java | 72 + src/org/rapla/gui/internal/MainFrame.java | 257 ++ .../rapla/gui/internal/MenuFactoryImpl.java | 441 ++ src/org/rapla/gui/internal/PublishDialog.java | 253 ++ .../rapla/gui/internal/RaplaDateRenderer.java | 52 + src/org/rapla/gui/internal/RaplaMenuBar.java | 345 ++ .../gui/internal/RaplaSelectionPane.java | 314 ++ .../rapla/gui/internal/RaplaStartOption.java | 81 + .../rapla/gui/internal/SavedCalendarView.java | 432 ++ src/org/rapla/gui/internal/UserOption.java | 81 + .../internal/action/AppointmentAction.java | 285 ++ .../gui/internal/action/CategoryAction.java | 42 + .../internal/action/DynamicTypeAction.java | 41 + .../gui/internal/action/HolidayAction.java | 56 + .../gui/internal/action/OnlyMyAction.java | 56 + .../internal/action/RaplaObjectAction.java | 276 ++ .../internal/action/ReservationAction.java | 92 + .../internal/action/RestartRaplaAction.java | 34 + .../internal/action/RestartServerAction.java | 48 + .../internal/action/ShowConflictsAction.java | 59 + .../internal/action/ShowHolidaysAction.java | 59 + .../gui/internal/action/ToolTipAction.java | 59 + .../rapla/gui/internal/action/package.html | 6 + .../action/user/PasswordChangeAction.java | 107 + .../action/user/PasswordChangeUI.java | 93 + .../gui/internal/action/user/UserAction.java | 111 + .../gui/internal/common/CalendarAction.java | 83 + .../internal/common/CalendarModelImpl.java | 841 ++++ .../common/CalendarSelectionModel.java | 44 + .../internal/common/ClassifiableFilter.java | 26 + .../gui/internal/common/InternMenus.java | 18 + .../internal/common/MultiCalendarView.java | 399 ++ .../common/NamedListCellRenderer.java | 51 + .../gui/internal/common/PeriodChooser.java | 241 ++ .../gui/internal/common/RaplaClipboard.java | 105 + .../gui/internal/edit/AbstractEditField.java | 149 + .../gui/internal/edit/AbstractEditUI.java | 125 + .../gui/internal/edit/AllocatableEditUI.java | 40 + .../gui/internal/edit/AttributeEdit.java | 538 +++ .../rapla/gui/internal/edit/BooleanField.java | 96 + .../gui/internal/edit/CategoryEditUI.java | 562 +++ .../gui/internal/edit/CategoryListField.java | 36 + .../internal/edit/CategorySelectField.java | 238 + .../internal/edit/ClassifiableFilterEdit.java | 792 ++++ .../internal/edit/ClassificationEditUI.java | 115 + .../internal/edit/ClassificationField.java | 149 + .../rapla/gui/internal/edit/DateField.java | 80 + .../gui/internal/edit/DynamicTypeEditUI.java | 204 + .../gui/internal/edit/EditControllerImpl.java | 131 + .../rapla/gui/internal/edit/EditDialog.java | 153 + .../rapla/gui/internal/edit/EditField.java | 43 + .../rapla/gui/internal/edit/ListField.java | 104 + .../rapla/gui/internal/edit/LongField.java | 81 + .../gui/internal/edit/MappingDelegate.java | 24 + .../gui/internal/edit/MultiLanguageField.java | 202 + .../rapla/gui/internal/edit/PeriodEditUI.java | 115 + .../gui/internal/edit/PermissionField.java | 313 ++ .../internal/edit/PermissionListField.java | 159 + .../gui/internal/edit/PreferencesEditUI.java | 263 ++ .../gui/internal/edit/RaplaFilterBox.java | 36 + .../gui/internal/edit/RaplaListEdit.java | 315 ++ .../gui/internal/edit/RaplaTreeEdit.java | 206 + .../rapla/gui/internal/edit/TextField.java | 108 + .../rapla/gui/internal/edit/UserEditUI.java | 389 ++ src/org/rapla/gui/internal/edit/package.html | 6 + .../AbstractAppointmentEditor.java | 61 + .../reservation/AllocatableSelection.java | 1608 +++++++ .../reservation/AppointmentController.java | 1167 +++++ .../reservation/AppointmentIdentifier.java | 58 + .../edit/reservation/AppointmentListEdit.java | 313 ++ .../edit/reservation/AppointmentListener.java | 26 + .../edit/reservation/ConflictTableModel.java | 104 + .../internal/edit/reservation/NoWizard.java | 70 + .../ReservationControllerImpl.java | 541 +++ .../edit/reservation/ReservationEditImpl.java | 475 ++ .../edit/reservation/ReservationInfoEdit.java | 341 ++ .../edit/reservation/SortedListModel.java | 377 ++ .../internal/print/CalendarPrintDialog.java | 336 ++ .../gui/internal/print/ExportService.java | 23 + .../gui/internal/print/ExportServiceList.java | 107 + .../gui/internal/print/PSExportService.java | 56 + .../rapla/gui/internal/print/PrintAction.java | 79 + .../splitpanes/HolidaySelectionPane.java | 155 + .../RaplaConflictSelectionPane.java | 69 + .../RaplaFiltrableSelectionPane.java | 128 + .../RaplaResourceSelectionPane.java | 147 + .../gui/internal/view/AllocatableInfoUI.java | 141 + .../gui/internal/view/AppointmentInfoUI.java | 45 + .../gui/internal/view/CategoryInfoUI.java | 29 + .../internal/view/ClassificationInfoUI.java | 130 + .../gui/internal/view/ConflictInfoOldUI.java | 66 + .../gui/internal/view/ConflictInfoUI.java | 52 + .../rapla/gui/internal/view/DeleteInfoUI.java | 57 + .../gui/internal/view/DependencyInfoUI.java | 65 + .../gui/internal/view/DynamicTypeInfoUI.java | 61 + src/org/rapla/gui/internal/view/HTMLInfo.java | 155 + .../gui/internal/view/InfoFactoryImpl.java | 206 + .../gui/internal/view/LicenseInfoUI.java | 107 + .../rapla/gui/internal/view/LicenseUI.java | 93 + .../gui/internal/view/LinkController.java | 20 + .../rapla/gui/internal/view/PeriodInfoUI.java | 56 + .../gui/internal/view/ReservationInfoUI.java | 174 + .../gui/internal/view/TreeFactoryImpl.java | 638 +++ .../rapla/gui/internal/view/UserInfoUI.java | 69 + .../rapla/gui/internal/view/ViewTable.java | 148 + src/org/rapla/gui/package.html | 9 + .../rapla/gui/toolkit/DateCellRenderer.java | 38 + src/org/rapla/gui/toolkit/DialogUI.java | 409 ++ src/org/rapla/gui/toolkit/DisposingTool.java | 17 + .../rapla/gui/toolkit/EmptyLineBorder.java | 32 + src/org/rapla/gui/toolkit/ErrorDialog.java | 224 + .../gui/toolkit/ErrorDialogException.java | 47 + .../rapla/gui/toolkit/FrameController.java | 26 + .../gui/toolkit/FrameControllerList.java | 230 + .../gui/toolkit/FrameControllerListener.java | 32 + src/org/rapla/gui/toolkit/HTMLView.java | 98 + .../gui/toolkit/IdentifiableMenuEntry.java | 7 + .../gui/toolkit/JEditorPaneWorkaround.java | 57 + src/org/rapla/gui/toolkit/MenuInterface.java | 21 + src/org/rapla/gui/toolkit/MonthChooser.java | 65 + src/org/rapla/gui/toolkit/PopupEvent.java | 36 + src/org/rapla/gui/toolkit/PopupListener.java | 17 + src/org/rapla/gui/toolkit/RaplaButton.java | 59 + src/org/rapla/gui/toolkit/RaplaColorList.java | 188 + src/org/rapla/gui/toolkit/RaplaFrame.java | 124 + src/org/rapla/gui/toolkit/RaplaMenu.java | 84 + src/org/rapla/gui/toolkit/RaplaMenuItem.java | 35 + src/org/rapla/gui/toolkit/RaplaMenubar.java | 83 + src/org/rapla/gui/toolkit/RaplaPopupMenu.java | 79 + src/org/rapla/gui/toolkit/RaplaSeparator.java | 33 + src/org/rapla/gui/toolkit/RaplaTree.java | 459 ++ src/org/rapla/gui/toolkit/RaplaWidget.java | 19 + src/org/rapla/gui/toolkit/RecursiveNode.java | 205 + .../gui/toolkit/TreeToolTipRenderer.java | 17 + src/org/rapla/gui/toolkit/WeekdayChooser.java | 59 + src/org/rapla/gui/toolkit/WizardDialog.java | 140 + src/org/rapla/gui/toolkit/WizardPanel.java | 27 + src/org/rapla/overview.html | 11 + src/org/rapla/package.html | 8 + .../rapla/plugin/RaplaExtensionPoints.java | 72 + src/org/rapla/plugin/RaplaPluginMetaInfo.java | 13 + .../AbstractHTMLCalendarPage.java | 302 ++ .../abstractcalendar/AbstractRaplaBlock.java | 149 + .../AbstractRaplaSwingCalendar.java | 194 + .../abstractcalendar/DateChooserPanel.java | 250 ++ .../GroupAllocatablesStrategy.java | 79 + .../abstractcalendar/HTMLDateComponents.java | 99 + .../abstractcalendar/HTMLRaplaBlock.java | 143 + .../abstractcalendar/HTMLRaplaBuilder.java | 70 + .../IntervallChooserPanel.java | 223 + .../plugin/abstractcalendar/RaplaBuilder.java | 673 +++ .../RaplaCalendarViewListener.java | 239 + .../abstractcalendar/SwingRaplaBlock.java | 476 ++ .../abstractcalendar/SwingRaplaBuilder.java | 40 + .../plugin/abstractcalendar/package.html | 8 + .../appointmentmarker/AppointmentMarker.java | 126 + .../AppointmentMarkerMenuFactory.java | 178 + .../AppointmentMarkerOption.java | 89 + .../AppointmentMarkerPlugin.java | 43 + .../rapla/plugin/archiver/ArchiverOption.java | 112 + .../rapla/plugin/archiver/ArchiverPlugin.java | 42 + .../plugin/archiver/ArchiverService.java | 107 + .../plugin/autoexport/AutoExportPlugin.java | 89 + .../autoexport/AutoExportPluginOption.java | 58 + .../plugin/autoexport/AutoExportResources.xml | 55 + .../autoexport/CalendarListPageGenerator.java | 172 + .../autoexport/CalendarPageGenerator.java | 119 + src/org/rapla/plugin/autoexport/calendar.css | 273 ++ .../CompactWeekViewFactory.java | 70 + .../CompactWeekViewPlugin.java | 52 + .../HTMLCompactWeekViewPage.java | 89 + .../SwingCompactWeekCalendar.java | 192 + .../compactweekview/images/week_compact.png | Bin 0 -> 884 bytes .../export2ical/AvailableTimeZones.properties | 508 +++ .../export2ical/Export2iCalAdminOption.java | 225 + .../export2ical/Export2iCalChangeWatcher.java | 145 + .../export2ical/Export2iCalConverter.java | 658 +++ .../Export2iCalDialogInitializer.java | 139 + .../plugin/export2ical/Export2iCalPlugin.java | 87 + .../export2ical/Export2iCalResources.xml | 90 + .../export2ical/Export2iCalServlet.java | 199 + .../export2ical/Export2iCalUserOption.java | 194 + .../ICalExportRemoteServiceFactory.java | 46 + .../plugin/export2ical/RaplaICalExport.java | 103 + .../plugin/importusers/ImportUsersPlugin.java | 54 + .../ImportUsersPluginInitializer.java | 142 + .../importusers/ImportUsersResources.xml | 12 + .../plugin/jndi/JNDIAuthenticationStore.java | 1059 +++++ src/org/rapla/plugin/jndi/JNDIPlugin.java | 68 + .../rapla/plugin/jndi/internal/JNDIConf.java | 15 + .../plugin/jndi/internal/JNDIOption.java | 219 + .../rapla/plugin/jndi/internal/JNDITest.java | 11 + .../plugin/jndi/internal/PasswordEnterUI.java | 80 + .../internal/RaplaJNDITestOnLocalhost.java | 84 + .../jndi/internal/RaplaJNDITestOnServer.java | 36 + .../RaplaJNDITestRemoteServiceFactory.java | 41 + src/org/rapla/plugin/mail/MailPlugin.java | 94 + .../plugin/mail/MailToUserInterface.java | 13 + .../plugin/mail/internal/MailOption.java | 108 + .../MailToUserRemoteServiceFactory.java | 41 + .../internal/RaplaMailToUserOnLocalhost.java | 84 + .../internal/RaplaMailToUserOnServer.java | 37 + .../plugin/monthview/HTMLMonthViewPage.java | 60 + .../plugin/monthview/MonthViewFactory.java | 70 + .../plugin/monthview/MonthViewPlugin.java | 49 + .../plugin/monthview/SwingMonthCalendar.java | 132 + .../rapla/plugin/monthview/images/month.png | Bin 0 -> 966 bytes .../notification/NotificationOption.java | 255 ++ .../notification/NotificationPlugin.java | 49 + .../notification/NotificationResources.xml | 80 + .../notification/NotificationService.java | 349 ++ .../plugin/occupationview/AllocationCell.java | 25 + .../plugin/occupationview/ColumnGroup.java | 178 + .../occupationview/EndOfLifeArchiver.java | 24 + .../GroupableTableColumnModel.java | 78 + .../occupationview/GroupableTableHeader.java | 42 + .../GroupableTableHeaderUI.java | 174 + .../plugin/occupationview/OccupationCell.java | 45 + .../occupationview/OccupationFactory.java | 72 + .../occupationview/OccupationOption.java | 123 + .../occupationview/OccupationPlugin.java | 53 + .../occupationview/OccupationResources.xml | 222 + .../occupationview/OccupationTableModel.java | 252 ++ .../occupationview/SwingOccupation.java | 1532 +++++++ .../plugin/occupationview/TimeShiftPanel.java | 402 ++ .../plugin/occupationview/images/archive.gif | Bin 0 -> 216 bytes .../images/eclipse-icons/edit.gif | Bin 0 -> 577 bytes .../images/eclipse-icons/help.gif | Bin 0 -> 259 bytes .../images/eclipse-icons/inout.gif | Bin 0 -> 308 bytes .../images/eclipse-icons/new.gif | Bin 0 -> 335 bytes .../images/eclipse-icons/trash.gif | Bin 0 -> 615 bytes .../plugin/occupationview/images/error.png | Bin 0 -> 1030 bytes .../plugin/occupationview/images/table.png | Bin 0 -> 997 bytes .../officeprinting/OfficePrintingDialog.java | 65 + .../OfficePrintingMenuFactory.java | 215 + .../officeprinting/OfficePrintingOption.java | 157 + .../officeprinting/OfficePrintingPlugin.java | 58 + .../OfficePrintingResources.xml | 9 + .../plugin/officeprinting/UnoContact.java | 215 + src/org/rapla/plugin/package.html | 9 + .../rapla/plugin/periodcopy/CopyDialog.java | 83 + .../plugin/periodcopy/CopyPluginInit.java | 170 + .../plugin/periodcopy/PeriodCopy.properties | 2 + .../plugin/periodcopy/PeriodCopyPlugin.java | 44 + .../periodcopy/PeriodCopy_de.properties | 2 + .../plugin/periodview/HTMLPeriodViewPage.java | 112 + .../plugin/periodview/PeriodViewFactory.java | 69 + .../plugin/periodview/PeriodViewPlugin.java | 53 + .../periodview/SwingPeriodCalendar.java | 144 + .../plugin/periodview/images/period_view.png | Bin 0 -> 932 bytes .../periodwizard/AppointmentSelection.java | 349 ++ .../periodwizard/PeriodReservationWizard.java | 45 + .../periodwizard/PeriodWizardPlugin.java | 47 + .../plugin/periodwizard/WizardResources.xml | 267 ++ .../plugin/periodwizard/WizardSequence.java | 445 ++ .../tableview/ReservationTableModel.java | 84 + .../plugin/tableview/SwingTableView.java | 246 ++ .../plugin/tableview/TableViewFactory.java | 69 + .../rapla/plugin/tableview/TableViewPage.java | 166 + .../plugin/tableview/TableViewPlugin.java | 54 + .../rapla/plugin/tableview/images/table.png | Bin 0 -> 997 bytes src/org/rapla/plugin/tableview/report.css | 59 + .../rapla/plugin/weekview/DayViewFactory.java | 70 + .../plugin/weekview/HTMLDayViewPage.java | 62 + .../plugin/weekview/HTMLWeekViewPage.java | 68 + .../plugin/weekview/SwingDayCalendar.java | 56 + .../plugin/weekview/SwingWeekCalendar.java | 161 + .../plugin/weekview/WeekViewFactory.java | 69 + .../rapla/plugin/weekview/WeekViewPlugin.java | 60 + src/org/rapla/plugin/weekview/images/day.png | Bin 0 -> 704 bytes src/org/rapla/plugin/weekview/images/week.png | Bin 0 -> 706 bytes .../server/RaplaRemoteServiceFactory.java | 23 + src/org/rapla/server/RemoteMethod.java | 70 + src/org/rapla/server/RemoteService.java | 17 + src/org/rapla/server/RemoteServiceCaller.java | 26 + src/org/rapla/server/RemoteSession.java | 28 + src/org/rapla/server/RemoteStorage.java | 53 + .../rapla/server/RemoteStorageCallback.java | 24 + src/org/rapla/server/RestartServer.java | 22 + src/org/rapla/server/ServerService.java | 34 + src/org/rapla/server/ShutdownListener.java | 20 + src/org/rapla/server/ShutdownService.java | 33 + .../server/internal/RemoteSessionImpl.java | 91 + .../server/internal/RemoteStorageImpl.java | 447 ++ .../server/internal/SecurityManager.java | 308 ++ .../server/internal/ServerServiceImpl.java | 543 +++ .../internal/SessionExpiredException.java | 15 + .../ShutdownRemoteServiceFactory.java | 36 + .../server/internal/ShutdownServiceImpl.java | 120 + src/org/rapla/server/package.html | 15 + .../servletpages/DefaultHTMLMenuEntry.java | 30 + .../DefaultHTMLMenuExtensionPoint.java | 44 + .../servletpages/HTMLMenuExtensionPoint.java | 6 + .../RaplaAppletPageGenerator.java | 55 + .../servletpages/RaplaIndexPageGenerator.java | 62 + .../servletpages/RaplaJNLPPageGenerator.java | 120 + .../servletpages/RaplaPageGenerator.java | 29 + .../RaplaResourcePageGenerator.java | 55 + .../RaplaStatusPageGenerator.java | 39 + src/org/rapla/servletpages/package.html | 5 + .../rapla/storage/AuthenticationStore.java | 32 + .../storage/CachableStorageOperator.java | 45 + src/org/rapla/storage/IOContext.java | 123 + src/org/rapla/storage/IdTable.java | 59 + .../rapla/storage/ImportExportManager.java | 22 + src/org/rapla/storage/LocalCache.java | 424 ++ .../rapla/storage/RaplaSecurityException.java | 43 + .../storage/ReferenceNotFoundException.java | 41 + src/org/rapla/storage/StorageOperator.java | 97 + .../rapla/storage/StorageUpdateListener.java | 22 + src/org/rapla/storage/UpdateEvent.java | 104 + src/org/rapla/storage/UpdateResult.java | 131 + .../rapla/storage/dbfile/FileOperator.java | 309 ++ src/org/rapla/storage/dbfile/package.html | 5 + src/org/rapla/storage/dbrm/Connector.java | 20 + src/org/rapla/storage/dbrm/HTTPConnector.java | 210 + .../rapla/storage/dbrm/RaplaStorePage.java | 29 + .../rapla/storage/dbrm/RemoteOperator.java | 653 +++ src/org/rapla/storage/dbsql/DBOperator.java | 504 +++ .../rapla/storage/dbsql/EntityStorage.java | 366 ++ .../rapla/storage/dbsql/RaplaDBException.java | 36 + src/org/rapla/storage/dbsql/RaplaSQL.java | 1212 ++++++ src/org/rapla/storage/dbsql/Storage.java | 36 + src/org/rapla/storage/dbsql/package.html | 4 + .../impl/AbstractCachableOperator.java | 991 +++++ src/org/rapla/storage/impl/EntityStore.java | 167 + .../storage/impl/ImportExportManagerImpl.java | 87 + src/org/rapla/storage/package.html | 5 + .../rapla/storage/xml/AllocatableReader.java | 177 + .../rapla/storage/xml/AllocatableWriter.java | 122 + src/org/rapla/storage/xml/CategoryReader.java | 184 + src/org/rapla/storage/xml/CategoryWriter.java | 78 + .../rapla/storage/xml/ClassifiableWriter.java | 74 + .../xml/ClassificationFilterReader.java | 144 + .../xml/ClassificationFilterWriter.java | 71 + .../rapla/storage/xml/DelegationHandler.java | 299 ++ src/org/rapla/storage/xml/DynAttReader.java | 86 + .../rapla/storage/xml/DynamicTypeReader.java | 272 ++ .../rapla/storage/xml/DynamicTypeWriter.java | 184 + src/org/rapla/storage/xml/Namespaces.java | 28 + src/org/rapla/storage/xml/PeriodReader.java | 45 + src/org/rapla/storage/xml/PeriodWriter.java | 59 + .../rapla/storage/xml/PreferenceReader.java | 115 + .../rapla/storage/xml/PreferenceWriter.java | 81 + .../xml/RaplaCalendarSettingsReader.java | 132 + .../xml/RaplaCalendarSettingsWriter.java | 95 + .../storage/xml/RaplaConfigurationReader.java | 107 + .../storage/xml/RaplaConfigurationWriter.java | 148 + .../storage/xml/RaplaEntityComparator.java | 75 + src/org/rapla/storage/xml/RaplaInput.java | 262 ++ .../rapla/storage/xml/RaplaMainReader.java | 154 + .../rapla/storage/xml/RaplaMainWriter.java | 191 + src/org/rapla/storage/xml/RaplaMapReader.java | 105 + src/org/rapla/storage/xml/RaplaMapWriter.java | 77 + .../rapla/storage/xml/RaplaSAXPipeline.java | 265 ++ src/org/rapla/storage/xml/RaplaXMLReader.java | 329 ++ src/org/rapla/storage/xml/RaplaXMLWriter.java | 258 ++ src/org/rapla/storage/xml/RemoveReader.java | 24 + .../rapla/storage/xml/ReservationReader.java | 228 + .../rapla/storage/xml/ReservationWriter.java | 152 + src/org/rapla/storage/xml/TestWriter.java | 27 + src/org/rapla/storage/xml/UserReader.java | 105 + src/org/rapla/storage/xml/UserWriter.java | 104 + .../storage/xml/WrongVersionException.java | 28 + src/org/rapla/storage/xml/convert0_4to0_5.xsl | 232 + src/org/rapla/storage/xml/convert0_5to0_6.xsl | 39 + src/org/rapla/storage/xml/convert0_6to0_7.xsl | 81 + src/org/rapla/storage/xml/convert0_7to0_8.xsl | 76 + src/org/rapla/storage/xml/convert0_8to0_9.xsl | 175 + src/org/rapla/storage/xml/convert0_9to1_0.xsl | 43 + src/org/rapla/storage/xml/rapla.rng | 418 ++ src/org/rapla/storage/xml/relax.rng | 328 ++ templates/javadoc.css | 23 + templates/rapla.exe | Bin 0 -> 74752 bytes templates/scripts/rapla_bat | 20 + templates/scripts/rapla_sh | 47 + templates/scripts/raplaclient_bat | 3 + templates/scripts/raplaexport_bat | 5 + templates/scripts/raplaimport_bat | 5 + templates/scripts/raplaserver_bat | 33 + templates/scripts/raplaserver_sh | 156 + test-src/org/rapla/CommunicatorTest.java | 128 + test-src/org/rapla/HugeDataFileTest.java | 61 + test-src/org/rapla/MockMailer.java | 48 + test-src/org/rapla/PermissionTest.java | 221 + test-src/org/rapla/RaplaDemoTest.java | 39 + test-src/org/rapla/RaplaLocaleTest.java | 78 + test-src/org/rapla/RaplaTestCase.java | 106 + test-src/org/rapla/ServerTest.java | 486 +++ test-src/org/rapla/ServletTestBase.java | 87 + test-src/org/rapla/SunBugsTest.java | 55 + test-src/org/rapla/ToolsTest.java | 36 + .../calendar/RaplaCalendarExample.java | 292 ++ .../calendar/TimeFieldChinaExample.java | 69 + .../RaplaCalendarViewExample.java | 422 ++ .../calendarview/WeekdayMapperTest.java | 51 + .../org/rapla/components/mail/MailTest.java | 29 + .../components/util/FilterIteratorTest.java | 50 + .../org/rapla/components/util/MutexTest.java | 90 + .../components/util/SmallIntMapTest.java | 91 + .../org/rapla/components/util/ToolsTest.java | 22 + .../xmlbundle/tests/AbstractI18nTest.java | 74 + .../xmlbundle/tests/I18nBundleImplTest.java | 122 + .../rapla/entities/tests/AppointmentTest.java | 468 ++ .../rapla/entities/tests/AttributeTest.java | 73 + .../rapla/entities/tests/CategoryTest.java | 154 + .../entities/tests/ClassificationTest.java | 106 + test-src/org/rapla/entities/tests/Day.java | 108 + .../rapla/entities/tests/PreferencesTest.java | 72 + .../entities/tests/ReservationFilterTest.java | 97 + .../rapla/entities/tests/ReservationTest.java | 145 + test-src/org/rapla/entities/tests/Time.java | 129 + .../org/rapla/entities/tests/TimeTest.java | 47 + .../org/rapla/entities/tests/UserTest.java | 88 + .../rapla/facade/tests/ClientFacadeTest.java | 313 ++ .../test/ReservationControllerTest.java | 74 + .../gui/edit/test/AttributeEditTest.java | 61 + .../rapla/gui/edit/test/CategoryEditTest.java | 46 + .../gui/edit/test/PermissionEditTest.java | 59 + .../rapla/gui/tests/CalendarEditorTest.java | 76 + .../org/rapla/gui/tests/DataUpdateTest.java | 75 + test-src/org/rapla/gui/tests/GUITestCase.java | 103 + .../org/rapla/gui/tests/RapaBuilderTest.java | 96 + .../gui/toolkit/tests/ErrorDialogTest.java | 52 + .../plugin/tests/CopyPeriodPluginTest.java | 83 + .../rapla/plugin/tests/MailPluginTest.java | 71 + .../plugin/tests/NotificationPluginTest.java | 161 + .../org/rapla/server/SecurityManagerTest.java | 144 + .../dbfile/tests/FileOperatorDiffTest.java | 88 + .../dbfile/tests/FileOperatorRemoteTest.java | 35 + .../dbfile/tests/FileOperatorTest.java | 44 + .../dbsql/tests/SQLOperatorRemoteTest.java | 213 + .../storage/dbsql/tests/SQLOperatorTest.java | 175 + .../storage/tests/AbstractOperatorTest.java | 189 + .../rapla/storage/tests/LocalCacheTest.java | 127 + .../storage/xml/tests/ConverterTest.java | 37 + .../rapla/storage/xml/tests/version-0.5.xml | 348 ++ test-src/test.xconf | 109 + test-src/test.xlog | 74 + test-src/testdefault.xml | 256 ++ updatejavadocs.sh | 7 + webapp/WEB-INF/.cvsignore | 1 + webapp/WEB-INF/User.csv | 1 + webapp/WEB-INF/data.xml | 158 + webapp/WEB-INF/data.xml.bak | 158 + webapp/WEB-INF/logs/rapla-client.log.000001 | 720 +++ webapp/WEB-INF/rapla-access.sql | 16 + webapp/WEB-INF/rapla-hsqldb.properties | 14 + webapp/WEB-INF/rapla-hsqldb.script | 17 + webapp/WEB-INF/rapla-mysql.sql | 214 + webapp/WEB-INF/rapla-oracle.sql | 222 + webapp/WEB-INF/rapla-postgres.sql | 15 + webapp/WEB-INF/rapla.xconf | 74 + webapp/WEB-INF/raplaclient.xlog | 39 + webapp/WEB-INF/raplaserver.xconf | 78 + webapp/WEB-INF/raplaserver.xlog | 74 + webapp/WEB-INF/simpsons-data.xml | 630 +++ webapp/WEB-INF/web.xml | 80 + webapp/default.css | 58 + webapp/images/button.gif | Bin 0 -> 2485 bytes webapp/images/favicon.ico | Bin 0 -> 4286 bytes webapp/redirect.html | 9 + webapp/webclient/logo.gif | Bin 0 -> 793 bytes webapp/webclient/raplaclient.xconf | 35 + webapp/webclient/raplaclient.xlog | 39 + 2217 files changed, 129851 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 INSTALL.txt create mode 100644 README-Build.txt create mode 100644 README-Server.txt create mode 100644 Trunk.iml create mode 100644 bin/ant create mode 100644 bin/ant.bat create mode 100644 bin/ant.cmd create mode 100644 bin/antRun create mode 100644 bin/antRun.bat create mode 100644 bin/antenv.cmd create mode 100644 bin/envset.cmd create mode 100644 bin/lcp.bat create mode 100644 bin/runrc.cmd create mode 100644 build.bat create mode 100644 build.properties create mode 100644 build.properties.template create mode 100644 build.sh create mode 100644 build.xml create mode 100644 buildcalendar.xml create mode 100644 doc.properties create mode 100644 doc/ReleaseNotes0.10.0beta.txt create mode 100644 doc/ReleaseNotes0.11.3.txt create mode 100644 doc/ReleaseNotes0.11beta1.txt create mode 100644 doc/ReleaseNotes0.11beta2.txt create mode 100644 doc/ReleaseNotes0.12.1.txt create mode 100644 doc/ReleaseNotes0.12.2.txt create mode 100644 doc/ReleaseNotes0.12.3.txt create mode 100644 doc/ReleaseNotes0.12.4.txt create mode 100644 doc/ReleaseNotes0.12.beta1.txt create mode 100644 doc/ReleaseNotes0.12.beta2.txt create mode 100644 doc/ReleaseNotes0_6.txt create mode 100644 doc/ReleaseNotes0_61.txt create mode 100644 doc/ReleaseNotes0_7.txt create mode 100644 doc/ReleaseNotes0_71.txt create mode 100644 doc/ReleaseNotes0_72.txt create mode 100644 doc/ReleaseNotes0_8.txt create mode 100644 doc/ReleaseNotes0_81.txt create mode 100644 doc/ReleaseNotes0_9.txt create mode 100644 doc/ReleaseNotes1.0.txt create mode 100644 doc/ReleaseNotes1.0RC1.txt create mode 100644 doc/ReleaseNotes1.0alpha1.txt create mode 100644 doc/ReleaseNotes1.1.txt create mode 100644 doc/ReleaseNotes1.2.1.txt create mode 100644 doc/ReleaseNotes1.2.txt create mode 100644 doc/ReleaseNotes1.2beta1.txt create mode 100644 doc/ReleaseNotes1.2beta2.txt create mode 100644 doc/ReleaseNotes1.3.1.txt create mode 100644 doc/ReleaseNotes1.3.2.txt create mode 100644 doc/ReleaseNotes1.3.txt create mode 100644 doc/ReleaseNotes1.4.0.txt create mode 100644 doc/ReleaseNotes1.4.trunk.txt create mode 100644 doc/drafts-gereon-2002.zip create mode 100644 doc/history.txt create mode 100644 doc/kurzanleitung-informatik.txt create mode 100644 doc/todo create mode 100644 eclipse-build/META-INF/rapla-plugin.list create mode 100644 eclipse-build/org/rapla/AppointmentFormaterImpl.class create mode 100644 eclipse-build/org/rapla/COPYING create mode 100644 eclipse-build/org/rapla/CommunicatorTest.class create mode 100644 eclipse-build/org/rapla/HugeDataFileTest.class create mode 100644 eclipse-build/org/rapla/Main$1.class create mode 100644 eclipse-build/org/rapla/Main.class create mode 100644 eclipse-build/org/rapla/MainApplet$1.class create mode 100644 eclipse-build/org/rapla/MainApplet$2.class create mode 100644 eclipse-build/org/rapla/MainApplet$3.class create mode 100644 eclipse-build/org/rapla/MainApplet.class create mode 100644 eclipse-build/org/rapla/MainServlet$1$1.class create mode 100644 eclipse-build/org/rapla/MainServlet$1.class create mode 100644 eclipse-build/org/rapla/MainServlet.class create mode 100644 eclipse-build/org/rapla/MockMailer.class create mode 100644 eclipse-build/org/rapla/MyResources.class create mode 100644 eclipse-build/org/rapla/MyResources.xml create mode 100644 eclipse-build/org/rapla/PermissionTest.class create mode 100644 eclipse-build/org/rapla/RaplaDemoTest.class create mode 100644 eclipse-build/org/rapla/RaplaLocaleImpl.class create mode 100644 eclipse-build/org/rapla/RaplaLocaleTest.class create mode 100644 eclipse-build/org/rapla/RaplaLogKitAdapater.class create mode 100644 eclipse-build/org/rapla/RaplaMainContainer.class create mode 100644 eclipse-build/org/rapla/RaplaMetaConfigInfo.class create mode 100644 eclipse-build/org/rapla/RaplaResources.class create mode 100644 eclipse-build/org/rapla/RaplaResources.xml create mode 100644 eclipse-build/org/rapla/RaplaResources_cs.class create mode 100644 eclipse-build/org/rapla/RaplaResources_de.class create mode 100644 eclipse-build/org/rapla/RaplaResources_es.class create mode 100644 eclipse-build/org/rapla/RaplaResources_fr.class create mode 100644 eclipse-build/org/rapla/RaplaResources_nl.class create mode 100644 eclipse-build/org/rapla/RaplaResources_pl.class create mode 100644 eclipse-build/org/rapla/RaplaStartupEnvironment.class create mode 100644 eclipse-build/org/rapla/RaplaTestCase.class create mode 100644 eclipse-build/org/rapla/ServerTest.class create mode 100644 eclipse-build/org/rapla/ServletTestBase.class create mode 100644 eclipse-build/org/rapla/SunBugsTest.class create mode 100644 eclipse-build/org/rapla/ToolsTest.class create mode 100644 eclipse-build/org/rapla/bootstrap/RaplaLoader.class create mode 100644 eclipse-build/org/rapla/bootstrap/RaplaServerAsServiceLoader.class create mode 100644 eclipse-build/org/rapla/bootstrap/RaplaServerLoader.class create mode 100644 eclipse-build/org/rapla/bootstrap/RaplaStandaloneLoader.class create mode 100644 eclipse-build/org/rapla/client/ClientService.class create mode 100644 eclipse-build/org/rapla/client/RaplaClientListener.class create mode 100644 eclipse-build/org/rapla/client/RaplaClientListenerAdapter.class create mode 100644 eclipse-build/org/rapla/client/internal/LanguageChooser$1.class create mode 100644 eclipse-build/org/rapla/client/internal/LanguageChooser.class create mode 100644 eclipse-build/org/rapla/client/internal/LoadingProgress$1.class create mode 100644 eclipse-build/org/rapla/client/internal/LoadingProgress$2.class create mode 100644 eclipse-build/org/rapla/client/internal/LoadingProgress$3.class create mode 100644 eclipse-build/org/rapla/client/internal/LoadingProgress.class create mode 100644 eclipse-build/org/rapla/client/internal/LoginDialog$1.class create mode 100644 eclipse-build/org/rapla/client/internal/LoginDialog$2.class create mode 100644 eclipse-build/org/rapla/client/internal/LoginDialog$Listener.class create mode 100644 eclipse-build/org/rapla/client/internal/LoginDialog.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$1.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$2.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$3.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$4.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$5.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$DefaultMenuInsertPoint.class create mode 100644 eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl.class create mode 100644 eclipse-build/org/rapla/client/package.html create mode 100644 eclipse-build/org/rapla/components/calendar/AbstractBlockField$DateDocument.class create mode 100644 eclipse-build/org/rapla/components/calendar/AbstractBlockField$Listener.class create mode 100644 eclipse-build/org/rapla/components/calendar/AbstractBlockField.class create mode 100644 eclipse-build/org/rapla/components/calendar/ArrowPolygon.class create mode 100644 eclipse-build/org/rapla/components/calendar/CalendarMenu$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/CalendarMenu$Listener.class create mode 100644 eclipse-build/org/rapla/components/calendar/CalendarMenu.class create mode 100644 eclipse-build/org/rapla/components/calendar/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/components/calendar/DateChangeEvent.class create mode 100644 eclipse-build/org/rapla/components/calendar/DateChangeListener.class create mode 100644 eclipse-build/org/rapla/components/calendar/DateField.class create mode 100644 eclipse-build/org/rapla/components/calendar/DateModel.class create mode 100644 eclipse-build/org/rapla/components/calendar/DateRenderer.class create mode 100644 eclipse-build/org/rapla/components/calendar/DateRendererAdapter.class create mode 100644 eclipse-build/org/rapla/components/calendar/DaySelection.class create mode 100644 eclipse-build/org/rapla/components/calendar/NavButton$ButtonStateChecker.class create mode 100644 eclipse-build/org/rapla/components/calendar/NavButton.class create mode 100644 eclipse-build/org/rapla/components/calendar/NumberField.class create mode 100644 eclipse-build/org/rapla/components/calendar/PaintEnvironment.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaArrowButton$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaArrowButton$ButtonStateChecker.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaArrowButton.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendar$Listener.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendar.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$2.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$3.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$4.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaCalendarExample.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaComboBox$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaComboBox$Listener$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaComboBox$Listener.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaComboBox$MyPopup.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaComboBox.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaNumber$Listener$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaNumber$Listener.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaNumber.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaTime$Listener.class create mode 100644 eclipse-build/org/rapla/components/calendar/RaplaTime.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeField.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeFieldChinaExample$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeFieldChinaExample.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeList$1.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeList$2.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeList$3.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeList.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeModel.class create mode 100644 eclipse-build/org/rapla/components/calendar/TimeRenderer.class create mode 100644 eclipse-build/org/rapla/components/calendar/WeekendHighlightRenderer.class create mode 100644 eclipse-build/org/rapla/components/calendar/clock.png create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/AWTAdapterFactory.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/AWTAdapterFactoryImpl.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/FocusAdapter.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/FocusTester.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/MyFocusAdapter.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/MyFocusTraversalPolicy.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/MyWheelListener.class create mode 100644 eclipse-build/org/rapla/components/calendar/jdk14adapter/package.html create mode 100644 eclipse-build/org/rapla/components/calendar/package.html create mode 100644 eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy$1.class create mode 100644 eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy$2.class create mode 100644 eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy.class create mode 100644 eclipse-build/org/rapla/components/calendarview/BestFitStrategy.class create mode 100644 eclipse-build/org/rapla/components/calendarview/Block.class create mode 100644 eclipse-build/org/rapla/components/calendarview/BlockComparator.class create mode 100644 eclipse-build/org/rapla/components/calendarview/BuildStrategy.class create mode 100644 eclipse-build/org/rapla/components/calendarview/Builder.class create mode 100644 eclipse-build/org/rapla/components/calendarview/CalendarView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/components/calendarview/MonthMapper.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$1.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$2.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$3.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$4.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyAppointment.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyBlock.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyBuilder.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyCalendarListener.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyMonthCalendarListener.class create mode 100644 eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample.class create mode 100644 eclipse-build/org/rapla/components/calendarview/WeekdayMapper.class create mode 100644 eclipse-build/org/rapla/components/calendarview/WeekdayMapperTest.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/AbstractHTMLView$HTMLSmallDaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/AbstractHTMLView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLBlock.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLCompactWeekView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLMonthView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLPeriodView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView$HTMLDaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView$Slot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/package.html create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/AbstractDaySlot$BlockListener.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/AbstractDaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/AbstractSwingCalendar.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/DaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/DraggingHandler.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/LargeDaySlot$Slot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/LargeDaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/PeriodDaySlot$Slot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/PeriodDaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SelectionHandler.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SmallDaySlot.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SwingBlock.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SwingCompactWeekView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SwingMonthView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SwingPeriodView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/SwingWeekView.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/TimeScale.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/ViewListener.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/scaling/IRowScale.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/scaling/IRowScaleSmall.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/scaling/LinearRowScale.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/scaling/OneRowScale.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/scaling/VariableRowScale$PeriodRow.class create mode 100644 eclipse-build/org/rapla/components/calendarview/swing/scaling/VariableRowScale.class create mode 100644 eclipse-build/org/rapla/components/iolayer/ComponentPrinter.class create mode 100644 eclipse-build/org/rapla/components/iolayer/DEPENDECIES create mode 100644 eclipse-build/org/rapla/components/iolayer/DefaultIO$1.class create mode 100644 eclipse-build/org/rapla/components/iolayer/DefaultIO$PSFileFilter.class create mode 100644 eclipse-build/org/rapla/components/iolayer/DefaultIO.class create mode 100644 eclipse-build/org/rapla/components/iolayer/FileContent.class create mode 100644 eclipse-build/org/rapla/components/iolayer/IOInterface.class create mode 100644 eclipse-build/org/rapla/components/iolayer/PrintExport.class create mode 100644 eclipse-build/org/rapla/components/iolayer/WebstartIO.class create mode 100644 eclipse-build/org/rapla/components/iolayer/package.html create mode 100644 eclipse-build/org/rapla/components/layout/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/components/layout/TableLayout$Entry.class create mode 100644 eclipse-build/org/rapla/components/layout/TableLayout.class create mode 100644 eclipse-build/org/rapla/components/layout/TableLayoutConstants.class create mode 100644 eclipse-build/org/rapla/components/layout/TableLayoutConstraints.class create mode 100644 eclipse-build/org/rapla/components/layout/package.html create mode 100644 eclipse-build/org/rapla/components/mail/Convert.class create mode 100644 eclipse-build/org/rapla/components/mail/MailException.class create mode 100644 eclipse-build/org/rapla/components/mail/MailInterface.class create mode 100644 eclipse-build/org/rapla/components/mail/MailTest.class create mode 100644 eclipse-build/org/rapla/components/mail/MailToFile.class create mode 100644 eclipse-build/org/rapla/components/mail/MailapiClient.class create mode 100644 eclipse-build/org/rapla/components/mail/MockMailServer$1.class create mode 100644 eclipse-build/org/rapla/components/mail/MockMailServer.class create mode 100644 eclipse-build/org/rapla/components/mail/Pop3.class create mode 100644 eclipse-build/org/rapla/components/mail/PopStatus.class create mode 100644 eclipse-build/org/rapla/components/mail/SmtpClient.class create mode 100644 eclipse-build/org/rapla/components/mail/package.html create mode 100644 eclipse-build/org/rapla/components/package.html create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$1.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$2.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$Arrow.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$Directive.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$MouseHandler.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$Row.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$SortableHeaderRenderer.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter$TableModelHandler.class create mode 100644 eclipse-build/org/rapla/components/tablesorter/TableSorter.class create mode 100644 eclipse-build/org/rapla/components/treetable/AbstractTreeTableModel.class create mode 100644 eclipse-build/org/rapla/components/treetable/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$DelegationgTreeCellEditor$1.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$DelegationgTreeCellEditor.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$ListToTreeSelectionModelWrapper.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$RendererTree.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$TreeBorder.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$TreeTableModelAdapter$1.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$TreeTableModelAdapter$UpdateRunnable.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable$TreeTableModelAdapter.class create mode 100644 eclipse-build/org/rapla/components/treetable/JTreeTable.class create mode 100644 eclipse-build/org/rapla/components/treetable/TableToolTipRenderer.class create mode 100644 eclipse-build/org/rapla/components/treetable/TreeTableEditor.class create mode 100644 eclipse-build/org/rapla/components/treetable/TreeTableModel.class create mode 100644 eclipse-build/org/rapla/components/treetable/package.html create mode 100644 eclipse-build/org/rapla/components/util/Assert.class create mode 100644 eclipse-build/org/rapla/components/util/AssertionError.class create mode 100644 eclipse-build/org/rapla/components/util/Command.class create mode 100644 eclipse-build/org/rapla/components/util/CommandQueue$MyEventThread.class create mode 100644 eclipse-build/org/rapla/components/util/CommandQueue.class create mode 100644 eclipse-build/org/rapla/components/util/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/components/util/DateTools.class create mode 100644 eclipse-build/org/rapla/components/util/FilterIteratorTest$1.class create mode 100644 eclipse-build/org/rapla/components/util/FilterIteratorTest.class create mode 100644 eclipse-build/org/rapla/components/util/IOUtil.class create mode 100644 eclipse-build/org/rapla/components/util/InverseComparator.class create mode 100644 eclipse-build/org/rapla/components/util/JNLPUtil.class create mode 100644 eclipse-build/org/rapla/components/util/Mutex.class create mode 100644 eclipse-build/org/rapla/components/util/MutexTest$1.class create mode 100644 eclipse-build/org/rapla/components/util/MutexTest$2.class create mode 100644 eclipse-build/org/rapla/components/util/MutexTest.class create mode 100644 eclipse-build/org/rapla/components/util/OrderedMap.class create mode 100644 eclipse-build/org/rapla/components/util/SerializableDateTimeFormat.class create mode 100644 eclipse-build/org/rapla/components/util/SmallIntMap.class create mode 100644 eclipse-build/org/rapla/components/util/SmallIntMapTest.class create mode 100644 eclipse-build/org/rapla/components/util/Tools$1.class create mode 100644 eclipse-build/org/rapla/components/util/Tools$2.class create mode 100644 eclipse-build/org/rapla/components/util/Tools.class create mode 100644 eclipse-build/org/rapla/components/util/ToolsTest.class create mode 100644 eclipse-build/org/rapla/components/util/iterator/ArrayIterator.class create mode 100644 eclipse-build/org/rapla/components/util/iterator/FilterIterator.class create mode 100644 eclipse-build/org/rapla/components/util/iterator/IntIterator.class create mode 100644 eclipse-build/org/rapla/components/util/iterator/IteratorChain.class create mode 100644 eclipse-build/org/rapla/components/util/iterator/NestedIterator.class create mode 100644 eclipse-build/org/rapla/components/util/iterator/package.html create mode 100644 eclipse-build/org/rapla/components/util/package.html create mode 100644 eclipse-build/org/rapla/components/util/xml/XMLReaderAdapter.class create mode 100644 eclipse-build/org/rapla/components/util/xml/XMLTransformerAdapter.class create mode 100644 eclipse-build/org/rapla/components/util/xml/XMLWriter.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/CompoundI18n.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/components/xmlbundle/I18nBundle.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/LocaleChangeEvent.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/LocaleChangeListener.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/LocaleSelector.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/DictionaryEntry.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/I18nBundleImpl.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/RaplaDictionary.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/ResourceFileGenerator.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/TranslationParser$1.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/TranslationParser.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/impl/UniqueKeyException.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/package.html create mode 100644 eclipse-build/org/rapla/components/xmlbundle/resources.dtd create mode 100644 eclipse-build/org/rapla/components/xmlbundle/tests/AbstractI18nTest.class create mode 100644 eclipse-build/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.class create mode 100644 eclipse-build/org/rapla/entities/Annotatable.class create mode 100644 eclipse-build/org/rapla/entities/Category.class create mode 100644 eclipse-build/org/rapla/entities/CategoryAnnotations.class create mode 100644 eclipse-build/org/rapla/entities/DependencyException.class create mode 100644 eclipse-build/org/rapla/entities/Entity.class create mode 100644 eclipse-build/org/rapla/entities/EntityNotFoundException.class create mode 100644 eclipse-build/org/rapla/entities/IllegalAnnotationException.class create mode 100644 eclipse-build/org/rapla/entities/MultiLanguageName.class create mode 100644 eclipse-build/org/rapla/entities/MultiLanguageNamed.class create mode 100644 eclipse-build/org/rapla/entities/Named.class create mode 100644 eclipse-build/org/rapla/entities/NamedComparator.class create mode 100644 eclipse-build/org/rapla/entities/Ownable.class create mode 100644 eclipse-build/org/rapla/entities/RaplaObject.class create mode 100644 eclipse-build/org/rapla/entities/RaplaType.class create mode 100644 eclipse-build/org/rapla/entities/ReadOnlyException.class create mode 100644 eclipse-build/org/rapla/entities/Timestamp.class create mode 100644 eclipse-build/org/rapla/entities/UniqueKeyException.class create mode 100644 eclipse-build/org/rapla/entities/User.class create mode 100644 eclipse-build/org/rapla/entities/UserComparator.class create mode 100644 eclipse-build/org/rapla/entities/configuration/CalendarModelConfiguration.class create mode 100644 eclipse-build/org/rapla/entities/configuration/Preferences.class create mode 100644 eclipse-build/org/rapla/entities/configuration/RaplaConfiguration.class create mode 100644 eclipse-build/org/rapla/entities/configuration/RaplaMap.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/AbstractClassifiableFilter$1.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/AbstractClassifiableFilter.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl$1.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl$2.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl$1.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl$2.class create mode 100644 eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl.class create mode 100644 eclipse-build/org/rapla/entities/domain/Allocatable.class create mode 100644 eclipse-build/org/rapla/entities/domain/Appointment.class create mode 100644 eclipse-build/org/rapla/entities/domain/AppointmentBlock.class create mode 100644 eclipse-build/org/rapla/entities/domain/AppointmentFormater.class create mode 100644 eclipse-build/org/rapla/entities/domain/AppointmentStartComparator.class create mode 100644 eclipse-build/org/rapla/entities/domain/Period.class create mode 100644 eclipse-build/org/rapla/entities/domain/Permission.class create mode 100644 eclipse-build/org/rapla/entities/domain/Repeating.class create mode 100644 eclipse-build/org/rapla/entities/domain/RepeatingEnding.class create mode 100644 eclipse-build/org/rapla/entities/domain/RepeatingType.class create mode 100644 eclipse-build/org/rapla/entities/domain/Reservation.class create mode 100644 eclipse-build/org/rapla/entities/domain/ReservationHelper.class create mode 100644 eclipse-build/org/rapla/entities/domain/ReservationStartComparator.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/AllocatableImpl$1.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/AllocatableImpl.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/AppointmentImpl.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/PeriodImpl.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/PermissionImpl.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/RepeatingImpl.class create mode 100644 eclipse-build/org/rapla/entities/domain/internal/ReservationImpl.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/Attribute.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/AttributeAnnotations.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/AttributeType.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/Classifiable.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/Classification.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/ClassificationFilter.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/ClassificationFilterRule.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/ConstraintIds.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/DynamicType.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/DynamicTypeAnnotations.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/AttributeImpl$IntStrategy.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/AttributeImpl.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl$1.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationFilterRuleImpl.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationImpl.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.class create mode 100644 eclipse-build/org/rapla/entities/dynamictype/internal/ParsedAnnotation.class create mode 100644 eclipse-build/org/rapla/entities/internal/CategoryImpl.class create mode 100644 eclipse-build/org/rapla/entities/internal/ModifiableTimestamp.class create mode 100644 eclipse-build/org/rapla/entities/internal/UserImpl.class create mode 100644 eclipse-build/org/rapla/entities/internal/package.html create mode 100644 eclipse-build/org/rapla/entities/package.html create mode 100644 eclipse-build/org/rapla/entities/storage/CannotExistWithoutTypeException.class create mode 100644 eclipse-build/org/rapla/entities/storage/DynamicTypeDependant.class create mode 100644 eclipse-build/org/rapla/entities/storage/EntityReferencer.class create mode 100644 eclipse-build/org/rapla/entities/storage/EntityResolver.class create mode 100644 eclipse-build/org/rapla/entities/storage/Mementable.class create mode 100644 eclipse-build/org/rapla/entities/storage/RefEntity.class create mode 100644 eclipse-build/org/rapla/entities/storage/internal/ReferenceHandler$ReferenceEntry.class create mode 100644 eclipse-build/org/rapla/entities/storage/internal/ReferenceHandler.class create mode 100644 eclipse-build/org/rapla/entities/storage/internal/SimpleEntity.class create mode 100644 eclipse-build/org/rapla/entities/storage/internal/SimpleIdentifier.class create mode 100644 eclipse-build/org/rapla/entities/tests/AppointmentTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/AttributeTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/CategoryTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/ClassificationTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/Day.class create mode 100644 eclipse-build/org/rapla/entities/tests/PreferencesTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/ReservationFilterTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/ReservationTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/Time.class create mode 100644 eclipse-build/org/rapla/entities/tests/TimeTest.class create mode 100644 eclipse-build/org/rapla/entities/tests/UserTest.class create mode 100644 eclipse-build/org/rapla/examples/RaplaConnectorTest.class create mode 100644 eclipse-build/org/rapla/examples/RaplaImportUsers.class create mode 100644 eclipse-build/org/rapla/examples/SimpleConnectorStartupEnvironment.class create mode 100644 eclipse-build/org/rapla/facade/AllocationChangeEvent$Type.class create mode 100644 eclipse-build/org/rapla/facade/AllocationChangeEvent.class create mode 100644 eclipse-build/org/rapla/facade/AllocationChangeListener.class create mode 100644 eclipse-build/org/rapla/facade/ClientFacade.class create mode 100644 eclipse-build/org/rapla/facade/Conflict.class create mode 100644 eclipse-build/org/rapla/facade/ModificationEvent.class create mode 100644 eclipse-build/org/rapla/facade/ModificationListener.class create mode 100644 eclipse-build/org/rapla/facade/ModificationModule.class create mode 100644 eclipse-build/org/rapla/facade/PeriodModel.class create mode 100644 eclipse-build/org/rapla/facade/QueryModule.class create mode 100644 eclipse-build/org/rapla/facade/RaplaComponent$ClientServiceManager.class create mode 100644 eclipse-build/org/rapla/facade/RaplaComponent.class create mode 100644 eclipse-build/org/rapla/facade/UpdateErrorListener.class create mode 100644 eclipse-build/org/rapla/facade/UpdateModule.class create mode 100644 eclipse-build/org/rapla/facade/UserModule.class create mode 100644 eclipse-build/org/rapla/facade/internal/AllocationChangeFinder.class create mode 100644 eclipse-build/org/rapla/facade/internal/ConflictFinder$AppointmentBlockStartComparator.class create mode 100644 eclipse-build/org/rapla/facade/internal/ConflictFinder.class create mode 100644 eclipse-build/org/rapla/facade/internal/ConflictImpl.class create mode 100644 eclipse-build/org/rapla/facade/internal/FacadeImpl$1.class create mode 100644 eclipse-build/org/rapla/facade/internal/FacadeImpl$UpdateCommand.class create mode 100644 eclipse-build/org/rapla/facade/internal/FacadeImpl$UserCheckCommand.class create mode 100644 eclipse-build/org/rapla/facade/internal/FacadeImpl.class create mode 100644 eclipse-build/org/rapla/facade/internal/ModificationEventImpl.class create mode 100644 eclipse-build/org/rapla/facade/internal/PeriodModelImpl$1.class create mode 100644 eclipse-build/org/rapla/facade/internal/PeriodModelImpl.class create mode 100644 eclipse-build/org/rapla/facade/package.html create mode 100644 eclipse-build/org/rapla/facade/tests/ClientFacadeTest.class create mode 100644 eclipse-build/org/rapla/framework/Container.class create mode 100644 eclipse-build/org/rapla/framework/DEPENDENCIES create mode 100644 eclipse-build/org/rapla/framework/PluginDescriptor.class create mode 100644 eclipse-build/org/rapla/framework/RaplaContext.class create mode 100644 eclipse-build/org/rapla/framework/RaplaContextException.class create mode 100644 eclipse-build/org/rapla/framework/RaplaDefaultContext.class create mode 100644 eclipse-build/org/rapla/framework/RaplaException.class create mode 100644 eclipse-build/org/rapla/framework/RaplaLocale.class create mode 100644 eclipse-build/org/rapla/framework/ServiceListCreator.class create mode 100644 eclipse-build/org/rapla/framework/StartupEnvironment.class create mode 100644 eclipse-build/org/rapla/framework/internal/ComponentInfo.class create mode 100644 eclipse-build/org/rapla/framework/internal/ConfigTools.class create mode 100644 eclipse-build/org/rapla/framework/internal/ContainerImpl$1.class create mode 100644 eclipse-build/org/rapla/framework/internal/ContainerImpl$2.class create mode 100644 eclipse-build/org/rapla/framework/internal/ContainerImpl$ComponentHandler.class create mode 100644 eclipse-build/org/rapla/framework/internal/ContainerImpl$RoleEntry.class create mode 100644 eclipse-build/org/rapla/framework/internal/ContainerImpl.class create mode 100644 eclipse-build/org/rapla/framework/internal/LogManagerAdapter.class create mode 100644 eclipse-build/org/rapla/framework/package.html create mode 100644 eclipse-build/org/rapla/gui/CalendarModel.class create mode 100644 eclipse-build/org/rapla/gui/CalendarOptions.class create mode 100644 eclipse-build/org/rapla/gui/CalendarOptionsImpl.class create mode 100644 eclipse-build/org/rapla/gui/DefaultPluginOption.class create mode 100644 eclipse-build/org/rapla/gui/EditComponent.class create mode 100644 eclipse-build/org/rapla/gui/EditController.class create mode 100644 eclipse-build/org/rapla/gui/InfoFactory.class create mode 100644 eclipse-build/org/rapla/gui/MenuContext.class create mode 100644 eclipse-build/org/rapla/gui/MenuExtensionPoint.class create mode 100644 eclipse-build/org/rapla/gui/MenuFactory.class create mode 100644 eclipse-build/org/rapla/gui/ObjectMenuFactory.class create mode 100644 eclipse-build/org/rapla/gui/OptionPanel.class create mode 100644 eclipse-build/org/rapla/gui/RaplaAction.class create mode 100644 eclipse-build/org/rapla/gui/RaplaGUIComponent$1.class create mode 100644 eclipse-build/org/rapla/gui/RaplaGUIComponent$2.class create mode 100644 eclipse-build/org/rapla/gui/RaplaGUIComponent$3.class create mode 100644 eclipse-build/org/rapla/gui/RaplaGUIComponent$4.class create mode 100644 eclipse-build/org/rapla/gui/RaplaGUIComponent.class create mode 100644 eclipse-build/org/rapla/gui/ReservationController.class create mode 100644 eclipse-build/org/rapla/gui/ReservationEdit.class create mode 100644 eclipse-build/org/rapla/gui/ReservationWizard.class create mode 100644 eclipse-build/org/rapla/gui/SwingCalendarView.class create mode 100644 eclipse-build/org/rapla/gui/TreeFactory.class create mode 100644 eclipse-build/org/rapla/gui/ViewFactory.class create mode 100644 eclipse-build/org/rapla/gui/edit/reservation/test/ReservationControllerTest.class create mode 100644 eclipse-build/org/rapla/gui/edit/test/AttributeEditTest.class create mode 100644 eclipse-build/org/rapla/gui/edit/test/CategoryEditTest.class create mode 100644 eclipse-build/org/rapla/gui/edit/test/PermissionEditTest.class create mode 100644 eclipse-build/org/rapla/gui/images/Images.class create mode 100644 eclipse-build/org/rapla/gui/images/admin.png create mode 100644 eclipse-build/org/rapla/gui/images/calendar.png create mode 100644 eclipse-build/org/rapla/gui/images/calendar_small.png create mode 100644 eclipse-build/org/rapla/gui/images/categories.png create mode 100644 eclipse-build/org/rapla/gui/images/choice_no.png create mode 100644 eclipse-build/org/rapla/gui/images/choice_yes.png create mode 100644 eclipse-build/org/rapla/gui/images/conflicts_small.png create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/addtsk_tsk.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/arrow_left.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/arrow_right.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_categories.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_conflicts.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_events.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_events_filtered.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_filtered.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_orig.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_periods.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_resources.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_resources_filtered.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_users.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/blank.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/checked.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/clock.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/conflict.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/copy.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/cross.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/cut.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/edit.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/export.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/filter.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/filter_small.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/folder_open.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/gray.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/green.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/help.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/import.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/info.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/minus.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/new.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/no_perm.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/paste.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/permissions.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/plus.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/print.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/radio.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/refresh.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/reservations.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/save.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/trash.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/tree_minus.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/tree_plus.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/unchecked.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/update.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/warning.gif create mode 100644 eclipse-build/org/rapla/gui/images/eclipse-icons/yellow.gif create mode 100644 eclipse-build/org/rapla/gui/images/edit_window_small.png create mode 100644 eclipse-build/org/rapla/gui/images/empty.png create mode 100644 eclipse-build/org/rapla/gui/images/error.png create mode 100644 eclipse-build/org/rapla/gui/images/exception.png create mode 100644 eclipse-build/org/rapla/gui/images/filter.png create mode 100644 eclipse-build/org/rapla/gui/images/green.png create mode 100644 eclipse-build/org/rapla/gui/images/info.png create mode 100644 eclipse-build/org/rapla/gui/images/info_small.png create mode 100644 eclipse-build/org/rapla/gui/images/list.png create mode 100644 eclipse-build/org/rapla/gui/images/mail.png create mode 100644 eclipse-build/org/rapla/gui/images/new_repeating.gif create mode 100644 eclipse-build/org/rapla/gui/images/no_perm.png create mode 100644 eclipse-build/org/rapla/gui/images/option_small.png create mode 100644 eclipse-build/org/rapla/gui/images/paste_new.gif create mode 100644 eclipse-build/org/rapla/gui/images/period.png create mode 100644 eclipse-build/org/rapla/gui/images/persons.png create mode 100644 eclipse-build/org/rapla/gui/images/persons_yellow.png create mode 100644 eclipse-build/org/rapla/gui/images/rapla_128x128.ico create mode 100644 eclipse-build/org/rapla/gui/images/rapla_16x16.ico create mode 100644 eclipse-build/org/rapla/gui/images/rapla_32x32.ico create mode 100644 eclipse-build/org/rapla/gui/images/rapla_small.png create mode 100644 eclipse-build/org/rapla/gui/images/refresh.png create mode 100644 eclipse-build/org/rapla/gui/images/repeating.png create mode 100644 eclipse-build/org/rapla/gui/images/resources.png create mode 100644 eclipse-build/org/rapla/gui/images/single.png create mode 100644 eclipse-build/org/rapla/gui/images/tafel.png create mode 100644 eclipse-build/org/rapla/gui/images/tafel_old.png create mode 100644 eclipse-build/org/rapla/gui/images/tafel_tocompare.png create mode 100644 eclipse-build/org/rapla/gui/images/taken.png create mode 100644 eclipse-build/org/rapla/gui/images/tree.png create mode 100644 eclipse-build/org/rapla/gui/images/un_flag.png create mode 100644 eclipse-build/org/rapla/gui/images/users.png create mode 100644 eclipse-build/org/rapla/gui/images/yellow.png create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarEditor$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarEditor$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarEditor$TreeListener.class create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarEditor.class create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarOption$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarOption$ListRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/CalendarOption.class create mode 100644 eclipse-build/org/rapla/gui/internal/ConnectionOption.class create mode 100644 eclipse-build/org/rapla/gui/internal/LocaleOption.class create mode 100644 eclipse-build/org/rapla/gui/internal/MainFrame$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/MainFrame$StatusFader.class create mode 100644 eclipse-build/org/rapla/gui/internal/MainFrame.class create mode 100644 eclipse-build/org/rapla/gui/internal/MenuFactoryImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/PublishDialog$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/PublishDialog$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/PublishDialog$3.class create mode 100644 eclipse-build/org/rapla/gui/internal/PublishDialog$4.class create mode 100644 eclipse-build/org/rapla/gui/internal/PublishDialog.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaDateRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaMenuBar$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaMenuBar$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaMenuBar$3.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaMenuBar$4.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaMenuBar.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaSelectionPane$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaSelectionPane.class create mode 100644 eclipse-build/org/rapla/gui/internal/RaplaStartOption.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView$3.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView$DeleteAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView$PublishAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView$SaveAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/SavedCalendarView.class create mode 100644 eclipse-build/org/rapla/gui/internal/UserOption.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/AppointmentAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/CategoryAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/DynamicTypeAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/HolidayAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/OnlyMyAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/RaplaObjectAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/ReservationAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/RestartRaplaAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/RestartServerAction$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/RestartServerAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/ShowConflictsAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/ShowHolidaysAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/ToolTipAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/package.html create mode 100644 eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeAction$PasswordChangeActionA.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/action/user/UserAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/CalendarAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/CalendarModelImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/CalendarSelectionModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/ClassifiableFilter.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/InternMenus.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$3.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$4.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$5.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$FilterEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$FilterEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$FilterEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/MultiCalendarView.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/NamedListCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/PeriodChooser$PeriodListCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/PeriodChooser.class create mode 100644 eclipse-build/org/rapla/gui/internal/common/RaplaClipboard.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/AbstractEditField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/AbstractEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/AllocatableEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/AttributeEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/AttributeEdit$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/AttributeEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/BooleanField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryDetail$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryDetail.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI$CategoryNode.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategoryListField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$3.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$SelectionAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/CategorySelectField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassifiableFilterEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassifiableFilterEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassifiableFilterEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleComponent$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleComponent.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$MyMappingDelegate.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEditUI$MyMappingDelegate.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ClassificationField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/DateField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/DynamicTypeEditUI$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/DynamicTypeEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/EditControllerImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/EditDialog$AbortAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/EditDialog$SaveAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/EditDialog.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/EditField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/ListField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/LongField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/MappingDelegate.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/MultiLanguageField$MultiLanguageEditorDialog.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/MultiLanguageField$TranslationTableModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/MultiLanguageField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PermissionField$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PermissionField$UserListField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PermissionField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PermissionListField$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PermissionListField$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PermissionListField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PreferencesEditUI$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PreferencesEditUI$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/PreferencesEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaFilterBox$TestComponent.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaFilterBox.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaListEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaListEdit$2$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaListEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaListEdit$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaListEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$2$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/TextField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/UserEditUI$GroupListField$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/UserEditUI$GroupListField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/UserEditUI$PersonSelectField$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/UserEditUI$PersonSelectField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/UserEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/package.html create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AllocatableAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AllocatablesModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AllocationCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AllocationTreeCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AppointmentCellEditor.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$CompleteModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RaplaToolTipRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RestrictionCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RestrictionTextField.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$SelectedModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$StayOpenCheckBoxMenuItemUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$ExceptionEditor$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$ExceptionEditor$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$ExceptionEditor.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$ListRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$RepeatingEditor.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$SingleEditor$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$SingleEditor.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentIdentifier.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$AppointmentCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$AppointmentRow.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ConflictTableModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/NoWizard.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl$SaveCommand.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl$SaveCommand.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit$DetailListener.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit$MyClassificationEditUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel$SortOrder.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel$SortedListEntry.class create mode 100644 eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog$Listener.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/ExportService.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/ExportServiceList.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/PSExportService.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/PrintAction$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/print/PrintAction.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/HolidaySelectionPane$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/HolidaySelectionPane.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaConflictSelectionPane.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane$FilterEdit$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane$FilterEdit$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane$FilterEdit.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/AllocatableInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/AppointmentInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/CategoryInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ClassificationInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ConflictInfoOldUI$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ConflictInfoOldUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ConflictInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/DeleteInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/DependencyInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/DynamicTypeInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/HTMLInfo$Row.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/HTMLInfo.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl$2.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/LicenseInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/LicenseUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/LinkController.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/PeriodInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ReservationInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$CategoryNode.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$ComplexTreeCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$NamedNode.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$RaplaTreeToolTipRenderer.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$TypeNode.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/UserInfoUI.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ViewTable$1.class create mode 100644 eclipse-build/org/rapla/gui/internal/view/ViewTable.class create mode 100644 eclipse-build/org/rapla/gui/package.html create mode 100644 eclipse-build/org/rapla/gui/tests/CalendarEditorTest.class create mode 100644 eclipse-build/org/rapla/gui/tests/DataUpdateTest$1.class create mode 100644 eclipse-build/org/rapla/gui/tests/DataUpdateTest.class create mode 100644 eclipse-build/org/rapla/gui/tests/GUITestCase$MyFrameControllerListener.class create mode 100644 eclipse-build/org/rapla/gui/tests/GUITestCase.class create mode 100644 eclipse-build/org/rapla/gui/tests/RapaBuilderTest.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/DateCellRenderer.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/DialogUI$1.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/DialogUI$2.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/DialogUI$ButtonListener.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/DialogUI.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/DisposingTool.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/EmptyLineBorder.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/ErrorDialog$1.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/ErrorDialog.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/ErrorDialogException.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/FrameController.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/FrameControllerList.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/FrameControllerListener.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/HTMLView.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/IdentifiableMenuEntry.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/JEditorPaneWorkaround.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/MenuInterface.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/MonthChooser.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/PopupEvent.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/PopupListener.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaButton.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaColorList.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaFrame.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaMenu.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaMenuItem.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaMenubar.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaPopupMenu.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaSeparator.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaTree$1.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaTree$Listener.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaTree$TreeIterator.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaTree.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RaplaWidget.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RecursiveNode$1.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/RecursiveNode.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/TreeToolTipRenderer.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/WeekdayChooser.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/WizardDialog.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/WizardPanel.class create mode 100644 eclipse-build/org/rapla/gui/toolkit/tests/ErrorDialogTest.class create mode 100644 eclipse-build/org/rapla/overview.html create mode 100644 eclipse-build/org/rapla/package.html create mode 100644 eclipse-build/org/rapla/plugin/RaplaExtensionPoints.class create mode 100644 eclipse-build/org/rapla/plugin/RaplaPluginMetaInfo.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/AbstractRaplaBlock.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/AbstractRaplaSwingCalendar.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/DateChooserPanel$Listener.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/DateChooserPanel.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/GroupAllocatablesStrategy.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/HTMLDateComponents.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/IntervallChooserPanel$Listener.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/IntervallChooserPanel.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/RaplaBuilder$1.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/RaplaBuilder$BuildContext.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/RaplaBuilder$RaplaBlockContext.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/RaplaBuilder.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/RaplaCalendarViewListener.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBlock$RaplaBlockView.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBlock.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.class create mode 100644 eclipse-build/org/rapla/plugin/abstractcalendar/package.html create mode 100644 eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarker.class create mode 100644 eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory$1.class create mode 100644 eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory$2.class create mode 100644 eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory.class create mode 100644 eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.class create mode 100644 eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/archiver/ArchiverOption$1.class create mode 100644 eclipse-build/org/rapla/plugin/archiver/ArchiverOption.class create mode 100644 eclipse-build/org/rapla/plugin/archiver/ArchiverPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/archiver/ArchiverService$RemoveTask.class create mode 100644 eclipse-build/org/rapla/plugin/archiver/ArchiverService.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportPluginOption.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportResources.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportResources.xml create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_de.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_es.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_fr.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_nl.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/CalendarListPageGenerator$TitleComparator.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/CalendarListPageGenerator.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/CalendarPageGenerator.class create mode 100644 eclipse-build/org/rapla/plugin/autoexport/calendar.css create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/CompactWeekViewFactory.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage$1.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar$1.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar$2.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar.class create mode 100644 eclipse-build/org/rapla/plugin/compactweekview/images/week_compact.png create mode 100644 eclipse-build/org/rapla/plugin/export2ical/AvailableTimeZones.properties create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalAdminOption.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalChangeWatcher.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalConverter.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalDialogInitializer$1.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalDialogInitializer.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources.xml create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_de.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_es.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_fr.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalServlet.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/Export2iCalUserOption.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/ICalExportRemoteServiceFactory.class create mode 100644 eclipse-build/org/rapla/plugin/export2ical/RaplaICalExport.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersPluginInitializer$1.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersPluginInitializer.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.xml create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_cs.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_de.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_es.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_fr.class create mode 100644 eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_nl.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/JNDIAuthenticationStore$JNDIUser.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/JNDIAuthenticationStore.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/JNDIPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/JNDIConf.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/JNDIOption$1.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/JNDIOption.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/JNDITest.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/PasswordEnterUI.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestOnLocalhost.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestOnServer.class create mode 100644 eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestRemoteServiceFactory.class create mode 100644 eclipse-build/org/rapla/plugin/mail/MailPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/mail/MailToUserInterface.class create mode 100644 eclipse-build/org/rapla/plugin/mail/internal/MailOption.class create mode 100644 eclipse-build/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.class create mode 100644 eclipse-build/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.class create mode 100644 eclipse-build/org/rapla/plugin/mail/internal/RaplaMailToUserOnServer.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/HTMLMonthViewPage.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/MonthViewFactory.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/MonthViewPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/SwingMonthCalendar$1.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/SwingMonthCalendar$2.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/SwingMonthCalendar.class create mode 100644 eclipse-build/org/rapla/plugin/monthview/images/month.png create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationOption$NotificationAction.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationOption.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationResources.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationResources.xml create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationResources_de.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationResources_es.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationResources_fr.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationService$AllocationMail.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationService$MailCommand.class create mode 100644 eclipse-build/org/rapla/plugin/notification/NotificationService.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/AllocationCell.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/ColumnGroup$1.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/ColumnGroup.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/EndOfLifeArchiver.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/GroupableTableColumnModel.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/GroupableTableHeader.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/GroupableTableHeaderUI.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationCell.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationFactory.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationOption$ListRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationOption.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources.xml create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources_cs.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources_de.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources_es.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources_fr.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationResources_nl.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/OccupationTableModel.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$1.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$2.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$3.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$4.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$5.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableCellRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableColors$1.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableColors.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableSortByName.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$DayOfWeekHeaderRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$GroupableTableCellRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$LinesBorder.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$OccupationTableCellRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$PopupTableHandler.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$RowHeaderRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$countRenderer.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$newAdapter.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/SwingOccupation.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$1.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$2.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$Listener.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel.class create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/archive.gif create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/edit.gif create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/help.gif create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/inout.gif create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/new.gif create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/trash.gif create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/error.png create mode 100644 eclipse-build/org/rapla/plugin/occupationview/images/table.png create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingDialog.class create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory$1.class create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory.class create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingOption.class create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingResources.xml create mode 100644 eclipse-build/org/rapla/plugin/officeprinting/UnoContact.class create mode 100644 eclipse-build/org/rapla/plugin/package.html create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/CopyDialog.class create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit$1$1.class create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit$1.class create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit.class create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy.properties create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/PeriodCopyPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy_de.properties create mode 100644 eclipse-build/org/rapla/plugin/periodview/HTMLPeriodViewPage$1.class create mode 100644 eclipse-build/org/rapla/plugin/periodview/HTMLPeriodViewPage.class create mode 100644 eclipse-build/org/rapla/plugin/periodview/PeriodViewFactory.class create mode 100644 eclipse-build/org/rapla/plugin/periodview/PeriodViewPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/periodview/SwingPeriodCalendar$1.class create mode 100644 eclipse-build/org/rapla/plugin/periodview/SwingPeriodCalendar.class create mode 100644 eclipse-build/org/rapla/plugin/periodview/images/period_view.png create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/AppointmentSelection$AppointmentPanel.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/AppointmentSelection.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/PeriodReservationWizard.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/PeriodWizardPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardResources.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardResources.xml create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardResources_de.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardResources_es.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardResources_fr.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$Handler.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationAllocation.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationInfo.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationWeekview.class create mode 100644 eclipse-build/org/rapla/plugin/periodwizard/WizardSequence.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/ReservationTableModel.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/SwingTableView$1.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/SwingTableView$2.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/SwingTableView$PopupTableHandler.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/SwingTableView.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/TableViewFactory.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/TableViewPage$ReservationRow.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/TableViewPage.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/TableViewPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/tableview/images/table.png create mode 100644 eclipse-build/org/rapla/plugin/tableview/report.css create mode 100644 eclipse-build/org/rapla/plugin/tests/CopyPeriodPluginTest.class create mode 100644 eclipse-build/org/rapla/plugin/tests/MailPluginTest.class create mode 100644 eclipse-build/org/rapla/plugin/tests/NotificationPluginTest.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/DayViewFactory.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/HTMLDayViewPage.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/HTMLWeekViewPage$1.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/HTMLWeekViewPage.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/SwingDayCalendar.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/SwingWeekCalendar$1.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/SwingWeekCalendar.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/WeekViewFactory.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/WeekViewPlugin.class create mode 100644 eclipse-build/org/rapla/plugin/weekview/images/day.png create mode 100644 eclipse-build/org/rapla/plugin/weekview/images/week.png create mode 100644 eclipse-build/org/rapla/server/RaplaRemoteServiceFactory.class create mode 100644 eclipse-build/org/rapla/server/RemoteMethod.class create mode 100644 eclipse-build/org/rapla/server/RemoteService.class create mode 100644 eclipse-build/org/rapla/server/RemoteServiceCaller.class create mode 100644 eclipse-build/org/rapla/server/RemoteSession.class create mode 100644 eclipse-build/org/rapla/server/RemoteStorage.class create mode 100644 eclipse-build/org/rapla/server/RemoteStorageCallback.class create mode 100644 eclipse-build/org/rapla/server/RestartServer.class create mode 100644 eclipse-build/org/rapla/server/SecurityManagerTest.class create mode 100644 eclipse-build/org/rapla/server/ServerService.class create mode 100644 eclipse-build/org/rapla/server/ShutdownListener.class create mode 100644 eclipse-build/org/rapla/server/ShutdownService.class create mode 100644 eclipse-build/org/rapla/server/internal/RemoteSessionImpl.class create mode 100644 eclipse-build/org/rapla/server/internal/RemoteStorageImpl.class create mode 100644 eclipse-build/org/rapla/server/internal/SecurityManager.class create mode 100644 eclipse-build/org/rapla/server/internal/ServerServiceImpl$1.class create mode 100644 eclipse-build/org/rapla/server/internal/ServerServiceImpl$2.class create mode 100644 eclipse-build/org/rapla/server/internal/ServerServiceImpl.class create mode 100644 eclipse-build/org/rapla/server/internal/SessionExpiredException.class create mode 100644 eclipse-build/org/rapla/server/internal/ShutdownRemoteServiceFactory$1.class create mode 100644 eclipse-build/org/rapla/server/internal/ShutdownRemoteServiceFactory.class create mode 100644 eclipse-build/org/rapla/server/internal/ShutdownServiceImpl.class create mode 100644 eclipse-build/org/rapla/server/package.html create mode 100644 eclipse-build/org/rapla/servletpages/DefaultHTMLMenuEntry.class create mode 100644 eclipse-build/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.class create mode 100644 eclipse-build/org/rapla/servletpages/HTMLMenuExtensionPoint.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaAppletPageGenerator.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaIndexPageGenerator.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaJNLPPageGenerator.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaPageGenerator.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaResourcePageGenerator$Resource.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaResourcePageGenerator.class create mode 100644 eclipse-build/org/rapla/servletpages/RaplaStatusPageGenerator.class create mode 100644 eclipse-build/org/rapla/servletpages/package.html create mode 100644 eclipse-build/org/rapla/storage/AuthenticationStore.class create mode 100644 eclipse-build/org/rapla/storage/CachableStorageOperator.class create mode 100644 eclipse-build/org/rapla/storage/IOContext.class create mode 100644 eclipse-build/org/rapla/storage/IdTable.class create mode 100644 eclipse-build/org/rapla/storage/ImportExportManager.class create mode 100644 eclipse-build/org/rapla/storage/LocalCache$1.class create mode 100644 eclipse-build/org/rapla/storage/LocalCache$2.class create mode 100644 eclipse-build/org/rapla/storage/LocalCache$IdComparator.class create mode 100644 eclipse-build/org/rapla/storage/LocalCache.class create mode 100644 eclipse-build/org/rapla/storage/RaplaSecurityException.class create mode 100644 eclipse-build/org/rapla/storage/ReferenceNotFoundException.class create mode 100644 eclipse-build/org/rapla/storage/StorageOperator.class create mode 100644 eclipse-build/org/rapla/storage/StorageUpdateListener.class create mode 100644 eclipse-build/org/rapla/storage/UpdateEvent.class create mode 100644 eclipse-build/org/rapla/storage/UpdateOperation.class create mode 100644 eclipse-build/org/rapla/storage/UpdateResult$Add.class create mode 100644 eclipse-build/org/rapla/storage/UpdateResult$Change.class create mode 100644 eclipse-build/org/rapla/storage/UpdateResult$Remove.class create mode 100644 eclipse-build/org/rapla/storage/UpdateResult.class create mode 100644 eclipse-build/org/rapla/storage/dbfile/FileOperator.class create mode 100644 eclipse-build/org/rapla/storage/dbfile/package.html create mode 100644 eclipse-build/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.class create mode 100644 eclipse-build/org/rapla/storage/dbfile/tests/FileOperatorRemoteTest.class create mode 100644 eclipse-build/org/rapla/storage/dbfile/tests/FileOperatorTest.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/Connector.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/HTTPConnector.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/RaplaStorePage.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/RemoteOperator$1.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/RemoteOperator$ServerStub.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/RemoteOperator$UpdateCommand.class create mode 100644 eclipse-build/org/rapla/storage/dbrm/RemoteOperator.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/AllocatableStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/AllocationStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/AppointmentExceptionStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/AppointmentStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/AttributeValueStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/CategoryStorage$1.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/CategoryStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/DBOperator.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/DynamicTypeStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/EntityStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/PeriodStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/PermissionStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/PreferenceStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/RaplaDBException.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/RaplaSQL.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/RaplaTypeStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/ReservationStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/Storage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/UserGroupStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/UserStorage.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/package.html create mode 100644 eclipse-build/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.class create mode 100644 eclipse-build/org/rapla/storage/dbsql/tests/SQLOperatorTest.class create mode 100644 eclipse-build/org/rapla/storage/impl/AbstractCachableOperator$1.class create mode 100644 eclipse-build/org/rapla/storage/impl/AbstractCachableOperator.class create mode 100644 eclipse-build/org/rapla/storage/impl/EntityStore.class create mode 100644 eclipse-build/org/rapla/storage/impl/ImportExportManagerImpl.class create mode 100644 eclipse-build/org/rapla/storage/package.html create mode 100644 eclipse-build/org/rapla/storage/tests/AbstractOperatorTest.class create mode 100644 eclipse-build/org/rapla/storage/tests/LocalCacheTest.class create mode 100644 eclipse-build/org/rapla/storage/xml/AllocatableReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/AllocatableWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/CategoryReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/CategoryWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/ClassifiableWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/ClassificationFilterReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/ClassificationFilterWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/DelegationHandler.class create mode 100644 eclipse-build/org/rapla/storage/xml/DynAttReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/DynamicTypeReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/DynamicTypeWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/Namespaces.class create mode 100644 eclipse-build/org/rapla/storage/xml/PeriodReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/PeriodWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/PreferenceReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/PreferenceWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaCalendarSettingsReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaCalendarSettingsWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaConfigurationReader$1.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaConfigurationReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaConfigurationWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaEntityComparator.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaErrorHandler.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaInput.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaMainReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaMainWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaMapReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaMapWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaSAXPipeline.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaXMLReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/RaplaXMLWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/RemoveReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/ReservationReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/ReservationWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/TestWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/TransformerFilter.class create mode 100644 eclipse-build/org/rapla/storage/xml/UserReader.class create mode 100644 eclipse-build/org/rapla/storage/xml/UserWriter.class create mode 100644 eclipse-build/org/rapla/storage/xml/WrongVersionException.class create mode 100644 eclipse-build/org/rapla/storage/xml/convert0_4to0_5.xsl create mode 100644 eclipse-build/org/rapla/storage/xml/convert0_5to0_6.xsl create mode 100644 eclipse-build/org/rapla/storage/xml/convert0_6to0_7.xsl create mode 100644 eclipse-build/org/rapla/storage/xml/convert0_7to0_8.xsl create mode 100644 eclipse-build/org/rapla/storage/xml/convert0_8to0_9.xsl create mode 100644 eclipse-build/org/rapla/storage/xml/convert0_9to1_0.xsl create mode 100644 eclipse-build/org/rapla/storage/xml/rapla.rng create mode 100644 eclipse-build/org/rapla/storage/xml/relax.rng create mode 100644 eclipse-build/org/rapla/storage/xml/tests/ConverterTest.class create mode 100644 eclipse-build/org/rapla/storage/xml/tests/version-0.5.xml create mode 100644 eclipse-build/test.xconf create mode 100644 eclipse-build/test.xlog create mode 100644 eclipse-build/testdefault.xml create mode 100644 generated-src/META-INF/rapla-plugin.list create mode 100644 generated-src/org/rapla/MyResources.java create mode 100644 generated-src/org/rapla/RaplaResources.java create mode 100644 generated-src/org/rapla/RaplaResources_cs.java create mode 100644 generated-src/org/rapla/RaplaResources_de.java create mode 100644 generated-src/org/rapla/RaplaResources_es.java create mode 100644 generated-src/org/rapla/RaplaResources_fr.java create mode 100644 generated-src/org/rapla/RaplaResources_nl.java create mode 100644 generated-src/org/rapla/RaplaResources_pl.java create mode 100644 generated-src/org/rapla/plugin/autoexport/AutoExportResources.java create mode 100644 generated-src/org/rapla/plugin/autoexport/AutoExportResources_de.java create mode 100644 generated-src/org/rapla/plugin/autoexport/AutoExportResources_es.java create mode 100644 generated-src/org/rapla/plugin/autoexport/AutoExportResources_fr.java create mode 100644 generated-src/org/rapla/plugin/autoexport/AutoExportResources_nl.java create mode 100644 generated-src/org/rapla/plugin/export2ical/Export2iCalResources.java create mode 100644 generated-src/org/rapla/plugin/export2ical/Export2iCalResources_de.java create mode 100644 generated-src/org/rapla/plugin/export2ical/Export2iCalResources_es.java create mode 100644 generated-src/org/rapla/plugin/export2ical/Export2iCalResources_fr.java create mode 100644 generated-src/org/rapla/plugin/importusers/ImportUsersResources.java create mode 100644 generated-src/org/rapla/plugin/importusers/ImportUsersResources_cs.java create mode 100644 generated-src/org/rapla/plugin/importusers/ImportUsersResources_de.java create mode 100644 generated-src/org/rapla/plugin/importusers/ImportUsersResources_es.java create mode 100644 generated-src/org/rapla/plugin/importusers/ImportUsersResources_fr.java create mode 100644 generated-src/org/rapla/plugin/importusers/ImportUsersResources_nl.java create mode 100644 generated-src/org/rapla/plugin/notification/NotificationResources.java create mode 100644 generated-src/org/rapla/plugin/notification/NotificationResources_de.java create mode 100644 generated-src/org/rapla/plugin/notification/NotificationResources_es.java create mode 100644 generated-src/org/rapla/plugin/notification/NotificationResources_fr.java create mode 100644 generated-src/org/rapla/plugin/occupationview/OccupationResources.java create mode 100644 generated-src/org/rapla/plugin/occupationview/OccupationResources_cs.java create mode 100644 generated-src/org/rapla/plugin/occupationview/OccupationResources_de.java create mode 100644 generated-src/org/rapla/plugin/occupationview/OccupationResources_es.java create mode 100644 generated-src/org/rapla/plugin/occupationview/OccupationResources_fr.java create mode 100644 generated-src/org/rapla/plugin/occupationview/OccupationResources_nl.java create mode 100644 generated-src/org/rapla/plugin/periodwizard/WizardResources.java create mode 100644 generated-src/org/rapla/plugin/periodwizard/WizardResources_de.java create mode 100644 generated-src/org/rapla/plugin/periodwizard/WizardResources_es.java create mode 100644 generated-src/org/rapla/plugin/periodwizard/WizardResources_fr.java create mode 100644 jetty/jetty.xml create mode 100644 jetty/webdefault.xml create mode 100644 legal/COPYING create mode 100644 legal/LIBRARIES-FAQ create mode 100644 legal/LICENCE.iCal4j create mode 100644 legal/LICENSE.apache create mode 100644 legal/LICENSE.eclipse-icons create mode 100644 legal/LICENSE.jetty create mode 100644 lib/ant-junit.jar create mode 100644 lib/ant-launcher.jar create mode 100644 lib/ant.jar create mode 100644 lib/client/.cvsignore create mode 100644 lib/client/CLIENT-LIBRARIES.txt create mode 100644 lib/common/.cvsignore create mode 100644 lib/common/COMMON-LIBRARIES.txt create mode 100644 lib/common/avalon-framework-4.2.0.jar create mode 100644 lib/common/avalon-logging.jar create mode 100644 lib/common/picollo.jar create mode 100644 lib/jetty-6.1.11.jar create mode 100644 lib/jetty-util-6.1.11.jar create mode 100644 lib/junit-3.8.jar create mode 100644 lib/server/.cvsignore create mode 100644 lib/server/SERVER-LIBRARIES.txt create mode 100644 lib/server/avalon-logging.jar create mode 100644 lib/server/backport-util-concurrent-3.1.jar create mode 100644 lib/server/commons-codec-1.5.jar create mode 100644 lib/server/commons-lang-2.6.jar create mode 100644 lib/server/commons-logging-1.1.1.jar create mode 100644 lib/server/ical4j-1.0.1.jar create mode 100644 lib/servlet-api-2.5-6.1.11.jar create mode 100644 lib/test-only/hsqldb.jar create mode 100644 lib/test-only/mysql-connector-java-3.1.6-bin.jar create mode 100644 lib/test-only/postgresjdbc.jar create mode 100644 lib/unused/.cvsignore create mode 100644 maintainj/META-INF/aop.xml create mode 100644 service/bin/InstallRaplaWrapper-NT.bat create mode 100644 service/bin/PauseRaplaWrapper-NT.bat create mode 100644 service/bin/QueryRaplaWrapper-NT.bat create mode 100644 service/bin/RaplaWrapperCommand.bat create mode 100644 service/bin/RestartRaplaWrapper-NT.bat create mode 100644 service/bin/ResumeRaplaWrapper-NT.bat create mode 100644 service/bin/StartRaplaWrapper-NT.bat create mode 100644 service/bin/StopRaplaWrapper-NT.bat create mode 100644 service/bin/UninstallRaplaWrapper-NT.bat create mode 100644 service/bin/wrapper.exe create mode 100644 service/conf/wrapper.conf create mode 100644 service/doc/index.html create mode 100644 service/doc/readme.txt create mode 100644 service/doc/revisions.txt create mode 100644 service/doc/wrapper-community-license-1.1.txt create mode 100644 service/lib/wrapper.dll create mode 100644 service/lib/wrapper.jar create mode 100644 src/org/rapla/AppointmentFormaterImpl.java create mode 100644 src/org/rapla/COPYING create mode 100644 src/org/rapla/Main.java create mode 100644 src/org/rapla/MainApplet.java create mode 100644 src/org/rapla/MainServlet.java create mode 100644 src/org/rapla/MyResources.xml create mode 100644 src/org/rapla/RaplaLocaleImpl.java create mode 100644 src/org/rapla/RaplaLogKitAdapater.java create mode 100644 src/org/rapla/RaplaMainContainer.java create mode 100644 src/org/rapla/RaplaMetaConfigInfo.java create mode 100644 src/org/rapla/RaplaResources.xml create mode 100644 src/org/rapla/RaplaStartupEnvironment.java create mode 100644 src/org/rapla/bootstrap/RaplaLoader.java create mode 100644 src/org/rapla/bootstrap/RaplaServerAsServiceLoader.java create mode 100644 src/org/rapla/bootstrap/RaplaServerLoader.java create mode 100644 src/org/rapla/bootstrap/RaplaStandaloneLoader.java create mode 100644 src/org/rapla/client/ClientService.java create mode 100644 src/org/rapla/client/RaplaClientListener.java create mode 100644 src/org/rapla/client/RaplaClientListenerAdapter.java create mode 100644 src/org/rapla/client/internal/LanguageChooser.java create mode 100644 src/org/rapla/client/internal/LoadingProgress.java create mode 100644 src/org/rapla/client/internal/LoginDialog.java create mode 100644 src/org/rapla/client/internal/RaplaClientServiceImpl.java create mode 100644 src/org/rapla/client/package.html create mode 100644 src/org/rapla/components/calendar/AbstractBlockField.java create mode 100644 src/org/rapla/components/calendar/ArrowPolygon.java create mode 100644 src/org/rapla/components/calendar/CalendarMenu.java create mode 100644 src/org/rapla/components/calendar/DEPENDENCIES create mode 100644 src/org/rapla/components/calendar/DateChangeEvent.java create mode 100644 src/org/rapla/components/calendar/DateChangeListener.java create mode 100644 src/org/rapla/components/calendar/DateField.java create mode 100644 src/org/rapla/components/calendar/DateModel.java create mode 100644 src/org/rapla/components/calendar/DateRenderer.java create mode 100644 src/org/rapla/components/calendar/DateRendererAdapter.java create mode 100644 src/org/rapla/components/calendar/DaySelection.java create mode 100644 src/org/rapla/components/calendar/NavButton.java create mode 100644 src/org/rapla/components/calendar/NumberField.java create mode 100644 src/org/rapla/components/calendar/RaplaArrowButton.java create mode 100644 src/org/rapla/components/calendar/RaplaCalendar.java create mode 100644 src/org/rapla/components/calendar/RaplaComboBox.java create mode 100644 src/org/rapla/components/calendar/RaplaNumber.java create mode 100644 src/org/rapla/components/calendar/RaplaTime.java create mode 100644 src/org/rapla/components/calendar/TimeField.java create mode 100644 src/org/rapla/components/calendar/TimeModel.java create mode 100644 src/org/rapla/components/calendar/TimeRenderer.java create mode 100644 src/org/rapla/components/calendar/WeekendHighlightRenderer.java create mode 100644 src/org/rapla/components/calendar/clock.png create mode 100644 src/org/rapla/components/calendar/jdk14adapter/AWTAdapterFactory.java create mode 100644 src/org/rapla/components/calendar/jdk14adapter/AWTAdapterFactoryImpl.java create mode 100644 src/org/rapla/components/calendar/jdk14adapter/FocusAdapter.java create mode 100644 src/org/rapla/components/calendar/jdk14adapter/FocusTester.java create mode 100644 src/org/rapla/components/calendar/jdk14adapter/package.html create mode 100644 src/org/rapla/components/calendar/package.html create mode 100644 src/org/rapla/components/calendarview/AbstractGroupStrategy.java create mode 100644 src/org/rapla/components/calendarview/BestFitStrategy.java create mode 100644 src/org/rapla/components/calendarview/Block.java create mode 100644 src/org/rapla/components/calendarview/BlockComparator.java create mode 100644 src/org/rapla/components/calendarview/BuildStrategy.java create mode 100644 src/org/rapla/components/calendarview/Builder.java create mode 100644 src/org/rapla/components/calendarview/CalendarView.java create mode 100644 src/org/rapla/components/calendarview/DEPENDENCIES create mode 100644 src/org/rapla/components/calendarview/MonthMapper.java create mode 100644 src/org/rapla/components/calendarview/WeekdayMapper.java create mode 100644 src/org/rapla/components/calendarview/html/AbstractHTMLView.java create mode 100644 src/org/rapla/components/calendarview/html/HTMLBlock.java create mode 100644 src/org/rapla/components/calendarview/html/HTMLCompactWeekView.java create mode 100644 src/org/rapla/components/calendarview/html/HTMLMonthView.java create mode 100644 src/org/rapla/components/calendarview/html/HTMLPeriodView.java create mode 100644 src/org/rapla/components/calendarview/html/HTMLWeekView.java create mode 100644 src/org/rapla/components/calendarview/package.html create mode 100644 src/org/rapla/components/calendarview/swing/AbstractDaySlot.java create mode 100644 src/org/rapla/components/calendarview/swing/AbstractSwingCalendar.java create mode 100644 src/org/rapla/components/calendarview/swing/DaySlot.java create mode 100644 src/org/rapla/components/calendarview/swing/DraggingHandler.java create mode 100644 src/org/rapla/components/calendarview/swing/LargeDaySlot.java create mode 100644 src/org/rapla/components/calendarview/swing/PeriodDaySlot.java create mode 100644 src/org/rapla/components/calendarview/swing/SelectionHandler.java create mode 100644 src/org/rapla/components/calendarview/swing/SmallDaySlot.java create mode 100644 src/org/rapla/components/calendarview/swing/SwingBlock.java create mode 100644 src/org/rapla/components/calendarview/swing/SwingCompactWeekView.java create mode 100644 src/org/rapla/components/calendarview/swing/SwingMonthView.java create mode 100644 src/org/rapla/components/calendarview/swing/SwingPeriodView.java create mode 100644 src/org/rapla/components/calendarview/swing/SwingWeekView.java create mode 100644 src/org/rapla/components/calendarview/swing/TimeScale.java create mode 100644 src/org/rapla/components/calendarview/swing/ViewListener.java create mode 100644 src/org/rapla/components/calendarview/swing/scaling/IRowScale.java create mode 100644 src/org/rapla/components/calendarview/swing/scaling/IRowScaleSmall.java create mode 100644 src/org/rapla/components/calendarview/swing/scaling/LinearRowScale.java create mode 100644 src/org/rapla/components/calendarview/swing/scaling/OneRowScale.java create mode 100644 src/org/rapla/components/calendarview/swing/scaling/VariableRowScale.java create mode 100644 src/org/rapla/components/iolayer/ComponentPrinter.java create mode 100644 src/org/rapla/components/iolayer/DEPENDECIES create mode 100644 src/org/rapla/components/iolayer/DefaultIO.java create mode 100644 src/org/rapla/components/iolayer/FileContent.java create mode 100644 src/org/rapla/components/iolayer/IOInterface.java create mode 100644 src/org/rapla/components/iolayer/PrintExport.java create mode 100644 src/org/rapla/components/iolayer/WebstartIO.java create mode 100644 src/org/rapla/components/iolayer/package.html create mode 100644 src/org/rapla/components/layout/DEPENDENCIES create mode 100644 src/org/rapla/components/layout/TableLayout.java create mode 100644 src/org/rapla/components/layout/TableLayoutConstants.java create mode 100644 src/org/rapla/components/layout/TableLayoutConstraints.java create mode 100644 src/org/rapla/components/layout/package.html create mode 100644 src/org/rapla/components/mail/Convert.java create mode 100644 src/org/rapla/components/mail/MailException.java create mode 100644 src/org/rapla/components/mail/MailInterface.java create mode 100644 src/org/rapla/components/mail/MailToFile.java create mode 100644 src/org/rapla/components/mail/MailapiClient.java create mode 100644 src/org/rapla/components/mail/MockMailServer.java create mode 100644 src/org/rapla/components/mail/Pop3.java create mode 100644 src/org/rapla/components/mail/PopStatus.java create mode 100644 src/org/rapla/components/mail/SmtpClient.java create mode 100644 src/org/rapla/components/mail/package.html create mode 100644 src/org/rapla/components/package.html create mode 100644 src/org/rapla/components/tablesorter/TableSorter.java create mode 100644 src/org/rapla/components/treetable/AbstractTreeTableModel.java create mode 100644 src/org/rapla/components/treetable/DEPENDENCIES create mode 100644 src/org/rapla/components/treetable/JTreeTable.java create mode 100644 src/org/rapla/components/treetable/TableToolTipRenderer.java create mode 100644 src/org/rapla/components/treetable/TreeTableEditor.java create mode 100644 src/org/rapla/components/treetable/TreeTableModel.java create mode 100644 src/org/rapla/components/treetable/package.html create mode 100644 src/org/rapla/components/util/Assert.java create mode 100644 src/org/rapla/components/util/AssertionError.java create mode 100644 src/org/rapla/components/util/Command.java create mode 100644 src/org/rapla/components/util/CommandQueue.java create mode 100644 src/org/rapla/components/util/DEPENDENCIES create mode 100644 src/org/rapla/components/util/DateTools.java create mode 100644 src/org/rapla/components/util/IOUtil.java create mode 100644 src/org/rapla/components/util/InverseComparator.java create mode 100644 src/org/rapla/components/util/JNLPUtil.java create mode 100644 src/org/rapla/components/util/Mutex.java create mode 100644 src/org/rapla/components/util/OrderedMap.java create mode 100644 src/org/rapla/components/util/SerializableDateTimeFormat.java create mode 100644 src/org/rapla/components/util/SmallIntMap.java create mode 100644 src/org/rapla/components/util/Tools.java create mode 100644 src/org/rapla/components/util/iterator/ArrayIterator.java create mode 100644 src/org/rapla/components/util/iterator/FilterIterator.java create mode 100644 src/org/rapla/components/util/iterator/IntIterator.java create mode 100644 src/org/rapla/components/util/iterator/IteratorChain.java create mode 100644 src/org/rapla/components/util/iterator/NestedIterator.java create mode 100644 src/org/rapla/components/util/iterator/package.html create mode 100644 src/org/rapla/components/util/package.html create mode 100644 src/org/rapla/components/util/xml/XMLReaderAdapter.java create mode 100644 src/org/rapla/components/util/xml/XMLTransformerAdapter.java create mode 100644 src/org/rapla/components/util/xml/XMLWriter.java create mode 100644 src/org/rapla/components/xmlbundle/CompoundI18n.java create mode 100644 src/org/rapla/components/xmlbundle/DEPENDENCIES create mode 100644 src/org/rapla/components/xmlbundle/I18nBundle.java create mode 100644 src/org/rapla/components/xmlbundle/LocaleChangeEvent.java create mode 100644 src/org/rapla/components/xmlbundle/LocaleChangeListener.java create mode 100644 src/org/rapla/components/xmlbundle/LocaleSelector.java create mode 100644 src/org/rapla/components/xmlbundle/impl/DictionaryEntry.java create mode 100644 src/org/rapla/components/xmlbundle/impl/I18nBundleImpl.java create mode 100644 src/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.java create mode 100644 src/org/rapla/components/xmlbundle/impl/RaplaDictionary.java create mode 100644 src/org/rapla/components/xmlbundle/impl/ResourceFileGenerator.java create mode 100644 src/org/rapla/components/xmlbundle/impl/TranslationParser.java create mode 100644 src/org/rapla/components/xmlbundle/impl/UniqueKeyException.java create mode 100644 src/org/rapla/components/xmlbundle/package.html create mode 100644 src/org/rapla/components/xmlbundle/resources.dtd create mode 100644 src/org/rapla/entities/Annotatable.java create mode 100644 src/org/rapla/entities/Category.java create mode 100644 src/org/rapla/entities/CategoryAnnotations.java create mode 100644 src/org/rapla/entities/DependencyException.java create mode 100644 src/org/rapla/entities/Entity.java create mode 100644 src/org/rapla/entities/EntityNotFoundException.java create mode 100644 src/org/rapla/entities/IllegalAnnotationException.java create mode 100644 src/org/rapla/entities/MultiLanguageName.java create mode 100644 src/org/rapla/entities/MultiLanguageNamed.java create mode 100644 src/org/rapla/entities/Named.java create mode 100644 src/org/rapla/entities/NamedComparator.java create mode 100644 src/org/rapla/entities/Ownable.java create mode 100644 src/org/rapla/entities/RaplaObject.java create mode 100644 src/org/rapla/entities/RaplaType.java create mode 100644 src/org/rapla/entities/ReadOnlyException.java create mode 100644 src/org/rapla/entities/Timestamp.java create mode 100644 src/org/rapla/entities/UniqueKeyException.java create mode 100644 src/org/rapla/entities/User.java create mode 100644 src/org/rapla/entities/UserComparator.java create mode 100644 src/org/rapla/entities/configuration/CalendarModelConfiguration.java create mode 100644 src/org/rapla/entities/configuration/Preferences.java create mode 100644 src/org/rapla/entities/configuration/RaplaConfiguration.java create mode 100644 src/org/rapla/entities/configuration/RaplaMap.java create mode 100644 src/org/rapla/entities/configuration/internal/AbstractClassifiableFilter.java create mode 100644 src/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.java create mode 100644 src/org/rapla/entities/configuration/internal/PreferencesImpl.java create mode 100644 src/org/rapla/entities/configuration/internal/RaplaMapImpl.java create mode 100644 src/org/rapla/entities/domain/Allocatable.java create mode 100644 src/org/rapla/entities/domain/Appointment.java create mode 100644 src/org/rapla/entities/domain/AppointmentBlock.java create mode 100644 src/org/rapla/entities/domain/AppointmentFormater.java create mode 100644 src/org/rapla/entities/domain/AppointmentStartComparator.java create mode 100644 src/org/rapla/entities/domain/Period.java create mode 100644 src/org/rapla/entities/domain/Permission.java create mode 100644 src/org/rapla/entities/domain/Repeating.java create mode 100644 src/org/rapla/entities/domain/RepeatingEnding.java create mode 100644 src/org/rapla/entities/domain/RepeatingType.java create mode 100644 src/org/rapla/entities/domain/Reservation.java create mode 100644 src/org/rapla/entities/domain/ReservationHelper.java create mode 100644 src/org/rapla/entities/domain/ReservationStartComparator.java create mode 100644 src/org/rapla/entities/domain/internal/AllocatableImpl.java create mode 100644 src/org/rapla/entities/domain/internal/AppointmentImpl.java create mode 100644 src/org/rapla/entities/domain/internal/PeriodImpl.java create mode 100644 src/org/rapla/entities/domain/internal/PermissionImpl.java create mode 100644 src/org/rapla/entities/domain/internal/RepeatingImpl.java create mode 100644 src/org/rapla/entities/domain/internal/ReservationImpl.java create mode 100644 src/org/rapla/entities/dynamictype/Attribute.java create mode 100644 src/org/rapla/entities/dynamictype/AttributeAnnotations.java create mode 100644 src/org/rapla/entities/dynamictype/AttributeType.java create mode 100644 src/org/rapla/entities/dynamictype/Classifiable.java create mode 100644 src/org/rapla/entities/dynamictype/Classification.java create mode 100644 src/org/rapla/entities/dynamictype/ClassificationFilter.java create mode 100644 src/org/rapla/entities/dynamictype/ClassificationFilterRule.java create mode 100644 src/org/rapla/entities/dynamictype/ConstraintIds.java create mode 100644 src/org/rapla/entities/dynamictype/DynamicType.java create mode 100644 src/org/rapla/entities/dynamictype/DynamicTypeAnnotations.java create mode 100644 src/org/rapla/entities/dynamictype/internal/AttributeImpl.java create mode 100644 src/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl.java create mode 100644 src/org/rapla/entities/dynamictype/internal/ClassificationFilterRuleImpl.java create mode 100644 src/org/rapla/entities/dynamictype/internal/ClassificationImpl.java create mode 100644 src/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.java create mode 100644 src/org/rapla/entities/dynamictype/internal/ParsedAnnotation.java create mode 100644 src/org/rapla/entities/internal/CategoryImpl.java create mode 100644 src/org/rapla/entities/internal/ModifiableTimestamp.java create mode 100644 src/org/rapla/entities/internal/UserImpl.java create mode 100644 src/org/rapla/entities/internal/package.html create mode 100644 src/org/rapla/entities/package.html create mode 100644 src/org/rapla/entities/storage/CannotExistWithoutTypeException.java create mode 100644 src/org/rapla/entities/storage/DynamicTypeDependant.java create mode 100644 src/org/rapla/entities/storage/EntityReferencer.java create mode 100644 src/org/rapla/entities/storage/EntityResolver.java create mode 100644 src/org/rapla/entities/storage/Mementable.java create mode 100644 src/org/rapla/entities/storage/RefEntity.java create mode 100644 src/org/rapla/entities/storage/internal/ReferenceHandler.java create mode 100644 src/org/rapla/entities/storage/internal/SimpleEntity.java create mode 100644 src/org/rapla/entities/storage/internal/SimpleIdentifier.java create mode 100644 src/org/rapla/examples/RaplaConnectorTest.java create mode 100644 src/org/rapla/examples/RaplaImportUsers.java create mode 100644 src/org/rapla/examples/SimpleConnectorStartupEnvironment.java create mode 100644 src/org/rapla/facade/AllocationChangeEvent.java create mode 100644 src/org/rapla/facade/AllocationChangeListener.java create mode 100644 src/org/rapla/facade/ClientFacade.java create mode 100644 src/org/rapla/facade/Conflict.java create mode 100644 src/org/rapla/facade/ModificationEvent.java create mode 100644 src/org/rapla/facade/ModificationListener.java create mode 100644 src/org/rapla/facade/ModificationModule.java create mode 100644 src/org/rapla/facade/PeriodModel.java create mode 100644 src/org/rapla/facade/QueryModule.java create mode 100644 src/org/rapla/facade/RaplaComponent.java create mode 100644 src/org/rapla/facade/UpdateErrorListener.java create mode 100644 src/org/rapla/facade/UpdateModule.java create mode 100644 src/org/rapla/facade/UserModule.java create mode 100644 src/org/rapla/facade/internal/AllocationChangeFinder.java create mode 100644 src/org/rapla/facade/internal/ConflictFinder.java create mode 100644 src/org/rapla/facade/internal/ConflictImpl.java create mode 100644 src/org/rapla/facade/internal/FacadeImpl.java create mode 100644 src/org/rapla/facade/internal/ModificationEventImpl.java create mode 100644 src/org/rapla/facade/internal/PeriodModelImpl.java create mode 100644 src/org/rapla/facade/package.html create mode 100644 src/org/rapla/framework/Container.java create mode 100644 src/org/rapla/framework/DEPENDENCIES create mode 100644 src/org/rapla/framework/PluginDescriptor.java create mode 100644 src/org/rapla/framework/RaplaContext.java create mode 100644 src/org/rapla/framework/RaplaContextException.java create mode 100644 src/org/rapla/framework/RaplaDefaultContext.java create mode 100644 src/org/rapla/framework/RaplaException.java create mode 100644 src/org/rapla/framework/RaplaLocale.java create mode 100644 src/org/rapla/framework/ServiceListCreator.java create mode 100644 src/org/rapla/framework/StartupEnvironment.java create mode 100644 src/org/rapla/framework/internal/ComponentInfo.java create mode 100644 src/org/rapla/framework/internal/ConfigTools.java create mode 100644 src/org/rapla/framework/internal/ContainerImpl.java create mode 100644 src/org/rapla/framework/internal/LogManagerAdapter.java create mode 100644 src/org/rapla/framework/package.html create mode 100644 src/org/rapla/gui/CalendarModel.java create mode 100644 src/org/rapla/gui/CalendarOptions.java create mode 100644 src/org/rapla/gui/CalendarOptionsImpl.java create mode 100644 src/org/rapla/gui/DefaultPluginOption.java create mode 100644 src/org/rapla/gui/EditComponent.java create mode 100644 src/org/rapla/gui/EditController.java create mode 100644 src/org/rapla/gui/InfoFactory.java create mode 100644 src/org/rapla/gui/MenuContext.java create mode 100644 src/org/rapla/gui/MenuExtensionPoint.java create mode 100644 src/org/rapla/gui/MenuFactory.java create mode 100644 src/org/rapla/gui/ObjectMenuFactory.java create mode 100644 src/org/rapla/gui/OptionPanel.java create mode 100644 src/org/rapla/gui/RaplaAction.java create mode 100644 src/org/rapla/gui/RaplaGUIComponent.java create mode 100644 src/org/rapla/gui/ReservationController.java create mode 100644 src/org/rapla/gui/ReservationEdit.java create mode 100644 src/org/rapla/gui/ReservationWizard.java create mode 100644 src/org/rapla/gui/SwingCalendarView.java create mode 100644 src/org/rapla/gui/TreeFactory.java create mode 100644 src/org/rapla/gui/ViewFactory.java create mode 100644 src/org/rapla/gui/images/Images.java create mode 100644 src/org/rapla/gui/images/admin.png create mode 100644 src/org/rapla/gui/images/calendar.png create mode 100644 src/org/rapla/gui/images/calendar_small.png create mode 100644 src/org/rapla/gui/images/categories.png create mode 100644 src/org/rapla/gui/images/choice_no.png create mode 100644 src/org/rapla/gui/images/choice_yes.png create mode 100644 src/org/rapla/gui/images/conflicts_small.png create mode 100644 src/org/rapla/gui/images/eclipse-icons/addtsk_tsk.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/arrow_left.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/arrow_right.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_categories.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_conflicts.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_events.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_events_filtered.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_filtered.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_orig.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_periods.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_resources.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_resources_filtered.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/big_folder_users.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/blank.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/checked.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/clock.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/conflict.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/copy.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/cross.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/cut.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/edit.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/export.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/filter.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/filter_small.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/folder_open.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/gray.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/green.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/help.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/import.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/info.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/minus.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/new.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/no_perm.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/paste.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/permissions.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/plus.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/print.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/radio.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/refresh.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/reservations.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/save.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/trash.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/tree_minus.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/tree_plus.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/unchecked.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/update.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/warning.gif create mode 100644 src/org/rapla/gui/images/eclipse-icons/yellow.gif create mode 100644 src/org/rapla/gui/images/edit_window_small.png create mode 100644 src/org/rapla/gui/images/empty.png create mode 100644 src/org/rapla/gui/images/error.png create mode 100644 src/org/rapla/gui/images/exception.png create mode 100644 src/org/rapla/gui/images/filter.png create mode 100644 src/org/rapla/gui/images/green.png create mode 100644 src/org/rapla/gui/images/info.png create mode 100644 src/org/rapla/gui/images/info_small.png create mode 100644 src/org/rapla/gui/images/list.png create mode 100644 src/org/rapla/gui/images/mail.png create mode 100644 src/org/rapla/gui/images/new_repeating.gif create mode 100644 src/org/rapla/gui/images/no_perm.png create mode 100644 src/org/rapla/gui/images/option_small.png create mode 100644 src/org/rapla/gui/images/paste_new.gif create mode 100644 src/org/rapla/gui/images/period.png create mode 100644 src/org/rapla/gui/images/persons.png create mode 100644 src/org/rapla/gui/images/persons_yellow.png create mode 100644 src/org/rapla/gui/images/rapla_128x128.ico create mode 100644 src/org/rapla/gui/images/rapla_16x16.ico create mode 100644 src/org/rapla/gui/images/rapla_32x32.ico create mode 100644 src/org/rapla/gui/images/rapla_small.png create mode 100644 src/org/rapla/gui/images/refresh.png create mode 100644 src/org/rapla/gui/images/repeating.png create mode 100644 src/org/rapla/gui/images/resources.png create mode 100644 src/org/rapla/gui/images/single.png create mode 100644 src/org/rapla/gui/images/tafel.png create mode 100644 src/org/rapla/gui/images/tafel_old.png create mode 100644 src/org/rapla/gui/images/tafel_tocompare.png create mode 100644 src/org/rapla/gui/images/taken.png create mode 100644 src/org/rapla/gui/images/tree.png create mode 100644 src/org/rapla/gui/images/un_flag.png create mode 100644 src/org/rapla/gui/images/users.png create mode 100644 src/org/rapla/gui/images/yellow.png create mode 100644 src/org/rapla/gui/internal/CalendarEditor.java create mode 100644 src/org/rapla/gui/internal/CalendarOption.java create mode 100644 src/org/rapla/gui/internal/ConnectionOption.java create mode 100644 src/org/rapla/gui/internal/LocaleOption.java create mode 100644 src/org/rapla/gui/internal/MainFrame.java create mode 100644 src/org/rapla/gui/internal/MenuFactoryImpl.java create mode 100644 src/org/rapla/gui/internal/PublishDialog.java create mode 100644 src/org/rapla/gui/internal/RaplaDateRenderer.java create mode 100644 src/org/rapla/gui/internal/RaplaMenuBar.java create mode 100644 src/org/rapla/gui/internal/RaplaSelectionPane.java create mode 100644 src/org/rapla/gui/internal/RaplaStartOption.java create mode 100644 src/org/rapla/gui/internal/SavedCalendarView.java create mode 100644 src/org/rapla/gui/internal/UserOption.java create mode 100644 src/org/rapla/gui/internal/action/AppointmentAction.java create mode 100644 src/org/rapla/gui/internal/action/CategoryAction.java create mode 100644 src/org/rapla/gui/internal/action/DynamicTypeAction.java create mode 100644 src/org/rapla/gui/internal/action/HolidayAction.java create mode 100644 src/org/rapla/gui/internal/action/OnlyMyAction.java create mode 100644 src/org/rapla/gui/internal/action/RaplaObjectAction.java create mode 100644 src/org/rapla/gui/internal/action/ReservationAction.java create mode 100644 src/org/rapla/gui/internal/action/RestartRaplaAction.java create mode 100644 src/org/rapla/gui/internal/action/RestartServerAction.java create mode 100644 src/org/rapla/gui/internal/action/ShowConflictsAction.java create mode 100644 src/org/rapla/gui/internal/action/ShowHolidaysAction.java create mode 100644 src/org/rapla/gui/internal/action/ToolTipAction.java create mode 100644 src/org/rapla/gui/internal/action/package.html create mode 100644 src/org/rapla/gui/internal/action/user/PasswordChangeAction.java create mode 100644 src/org/rapla/gui/internal/action/user/PasswordChangeUI.java create mode 100644 src/org/rapla/gui/internal/action/user/UserAction.java create mode 100644 src/org/rapla/gui/internal/common/CalendarAction.java create mode 100644 src/org/rapla/gui/internal/common/CalendarModelImpl.java create mode 100644 src/org/rapla/gui/internal/common/CalendarSelectionModel.java create mode 100644 src/org/rapla/gui/internal/common/ClassifiableFilter.java create mode 100644 src/org/rapla/gui/internal/common/InternMenus.java create mode 100644 src/org/rapla/gui/internal/common/MultiCalendarView.java create mode 100644 src/org/rapla/gui/internal/common/NamedListCellRenderer.java create mode 100644 src/org/rapla/gui/internal/common/PeriodChooser.java create mode 100644 src/org/rapla/gui/internal/common/RaplaClipboard.java create mode 100644 src/org/rapla/gui/internal/edit/AbstractEditField.java create mode 100644 src/org/rapla/gui/internal/edit/AbstractEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/AllocatableEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/AttributeEdit.java create mode 100644 src/org/rapla/gui/internal/edit/BooleanField.java create mode 100644 src/org/rapla/gui/internal/edit/CategoryEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/CategoryListField.java create mode 100644 src/org/rapla/gui/internal/edit/CategorySelectField.java create mode 100644 src/org/rapla/gui/internal/edit/ClassifiableFilterEdit.java create mode 100644 src/org/rapla/gui/internal/edit/ClassificationEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/ClassificationField.java create mode 100644 src/org/rapla/gui/internal/edit/DateField.java create mode 100644 src/org/rapla/gui/internal/edit/DynamicTypeEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/EditControllerImpl.java create mode 100644 src/org/rapla/gui/internal/edit/EditDialog.java create mode 100644 src/org/rapla/gui/internal/edit/EditField.java create mode 100644 src/org/rapla/gui/internal/edit/ListField.java create mode 100644 src/org/rapla/gui/internal/edit/LongField.java create mode 100644 src/org/rapla/gui/internal/edit/MappingDelegate.java create mode 100644 src/org/rapla/gui/internal/edit/MultiLanguageField.java create mode 100644 src/org/rapla/gui/internal/edit/PeriodEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/PermissionField.java create mode 100644 src/org/rapla/gui/internal/edit/PermissionListField.java create mode 100644 src/org/rapla/gui/internal/edit/PreferencesEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/RaplaFilterBox.java create mode 100644 src/org/rapla/gui/internal/edit/RaplaListEdit.java create mode 100644 src/org/rapla/gui/internal/edit/RaplaTreeEdit.java create mode 100644 src/org/rapla/gui/internal/edit/TextField.java create mode 100644 src/org/rapla/gui/internal/edit/UserEditUI.java create mode 100644 src/org/rapla/gui/internal/edit/package.html create mode 100644 src/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/AllocatableSelection.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/AppointmentController.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/AppointmentIdentifier.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/AppointmentListener.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/ConflictTableModel.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/NoWizard.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.java create mode 100644 src/org/rapla/gui/internal/edit/reservation/SortedListModel.java create mode 100644 src/org/rapla/gui/internal/print/CalendarPrintDialog.java create mode 100644 src/org/rapla/gui/internal/print/ExportService.java create mode 100644 src/org/rapla/gui/internal/print/ExportServiceList.java create mode 100644 src/org/rapla/gui/internal/print/PSExportService.java create mode 100644 src/org/rapla/gui/internal/print/PrintAction.java create mode 100644 src/org/rapla/gui/internal/splitpanes/HolidaySelectionPane.java create mode 100644 src/org/rapla/gui/internal/splitpanes/RaplaConflictSelectionPane.java create mode 100644 src/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.java create mode 100644 src/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane.java create mode 100644 src/org/rapla/gui/internal/view/AllocatableInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/AppointmentInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/CategoryInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/ClassificationInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/ConflictInfoOldUI.java create mode 100644 src/org/rapla/gui/internal/view/ConflictInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/DeleteInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/DependencyInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/DynamicTypeInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/HTMLInfo.java create mode 100644 src/org/rapla/gui/internal/view/InfoFactoryImpl.java create mode 100644 src/org/rapla/gui/internal/view/LicenseInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/LicenseUI.java create mode 100644 src/org/rapla/gui/internal/view/LinkController.java create mode 100644 src/org/rapla/gui/internal/view/PeriodInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/ReservationInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/TreeFactoryImpl.java create mode 100644 src/org/rapla/gui/internal/view/UserInfoUI.java create mode 100644 src/org/rapla/gui/internal/view/ViewTable.java create mode 100644 src/org/rapla/gui/package.html create mode 100644 src/org/rapla/gui/toolkit/DateCellRenderer.java create mode 100644 src/org/rapla/gui/toolkit/DialogUI.java create mode 100644 src/org/rapla/gui/toolkit/DisposingTool.java create mode 100644 src/org/rapla/gui/toolkit/EmptyLineBorder.java create mode 100644 src/org/rapla/gui/toolkit/ErrorDialog.java create mode 100644 src/org/rapla/gui/toolkit/ErrorDialogException.java create mode 100644 src/org/rapla/gui/toolkit/FrameController.java create mode 100644 src/org/rapla/gui/toolkit/FrameControllerList.java create mode 100644 src/org/rapla/gui/toolkit/FrameControllerListener.java create mode 100644 src/org/rapla/gui/toolkit/HTMLView.java create mode 100644 src/org/rapla/gui/toolkit/IdentifiableMenuEntry.java create mode 100644 src/org/rapla/gui/toolkit/JEditorPaneWorkaround.java create mode 100644 src/org/rapla/gui/toolkit/MenuInterface.java create mode 100644 src/org/rapla/gui/toolkit/MonthChooser.java create mode 100644 src/org/rapla/gui/toolkit/PopupEvent.java create mode 100644 src/org/rapla/gui/toolkit/PopupListener.java create mode 100644 src/org/rapla/gui/toolkit/RaplaButton.java create mode 100644 src/org/rapla/gui/toolkit/RaplaColorList.java create mode 100644 src/org/rapla/gui/toolkit/RaplaFrame.java create mode 100644 src/org/rapla/gui/toolkit/RaplaMenu.java create mode 100644 src/org/rapla/gui/toolkit/RaplaMenuItem.java create mode 100644 src/org/rapla/gui/toolkit/RaplaMenubar.java create mode 100644 src/org/rapla/gui/toolkit/RaplaPopupMenu.java create mode 100644 src/org/rapla/gui/toolkit/RaplaSeparator.java create mode 100644 src/org/rapla/gui/toolkit/RaplaTree.java create mode 100644 src/org/rapla/gui/toolkit/RaplaWidget.java create mode 100644 src/org/rapla/gui/toolkit/RecursiveNode.java create mode 100644 src/org/rapla/gui/toolkit/TreeToolTipRenderer.java create mode 100644 src/org/rapla/gui/toolkit/WeekdayChooser.java create mode 100644 src/org/rapla/gui/toolkit/WizardDialog.java create mode 100644 src/org/rapla/gui/toolkit/WizardPanel.java create mode 100644 src/org/rapla/overview.html create mode 100644 src/org/rapla/package.html create mode 100644 src/org/rapla/plugin/RaplaExtensionPoints.java create mode 100644 src/org/rapla/plugin/RaplaPluginMetaInfo.java create mode 100644 src/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.java create mode 100644 src/org/rapla/plugin/abstractcalendar/AbstractRaplaBlock.java create mode 100644 src/org/rapla/plugin/abstractcalendar/AbstractRaplaSwingCalendar.java create mode 100644 src/org/rapla/plugin/abstractcalendar/DateChooserPanel.java create mode 100644 src/org/rapla/plugin/abstractcalendar/GroupAllocatablesStrategy.java create mode 100644 src/org/rapla/plugin/abstractcalendar/HTMLDateComponents.java create mode 100644 src/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.java create mode 100644 src/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.java create mode 100644 src/org/rapla/plugin/abstractcalendar/IntervallChooserPanel.java create mode 100644 src/org/rapla/plugin/abstractcalendar/RaplaBuilder.java create mode 100644 src/org/rapla/plugin/abstractcalendar/RaplaCalendarViewListener.java create mode 100644 src/org/rapla/plugin/abstractcalendar/SwingRaplaBlock.java create mode 100644 src/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.java create mode 100644 src/org/rapla/plugin/abstractcalendar/package.html create mode 100644 src/org/rapla/plugin/appointmentmarker/AppointmentMarker.java create mode 100644 src/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory.java create mode 100644 src/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.java create mode 100644 src/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.java create mode 100644 src/org/rapla/plugin/archiver/ArchiverOption.java create mode 100644 src/org/rapla/plugin/archiver/ArchiverPlugin.java create mode 100644 src/org/rapla/plugin/archiver/ArchiverService.java create mode 100644 src/org/rapla/plugin/autoexport/AutoExportPlugin.java create mode 100644 src/org/rapla/plugin/autoexport/AutoExportPluginOption.java create mode 100644 src/org/rapla/plugin/autoexport/AutoExportResources.xml create mode 100644 src/org/rapla/plugin/autoexport/CalendarListPageGenerator.java create mode 100644 src/org/rapla/plugin/autoexport/CalendarPageGenerator.java create mode 100644 src/org/rapla/plugin/autoexport/calendar.css create mode 100644 src/org/rapla/plugin/compactweekview/CompactWeekViewFactory.java create mode 100644 src/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.java create mode 100644 src/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage.java create mode 100644 src/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar.java create mode 100644 src/org/rapla/plugin/compactweekview/images/week_compact.png create mode 100644 src/org/rapla/plugin/export2ical/AvailableTimeZones.properties create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalAdminOption.java create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalChangeWatcher.java create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalConverter.java create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalDialogInitializer.java create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalPlugin.java create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalResources.xml create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalServlet.java create mode 100644 src/org/rapla/plugin/export2ical/Export2iCalUserOption.java create mode 100644 src/org/rapla/plugin/export2ical/ICalExportRemoteServiceFactory.java create mode 100644 src/org/rapla/plugin/export2ical/RaplaICalExport.java create mode 100644 src/org/rapla/plugin/importusers/ImportUsersPlugin.java create mode 100644 src/org/rapla/plugin/importusers/ImportUsersPluginInitializer.java create mode 100644 src/org/rapla/plugin/importusers/ImportUsersResources.xml create mode 100644 src/org/rapla/plugin/jndi/JNDIAuthenticationStore.java create mode 100644 src/org/rapla/plugin/jndi/JNDIPlugin.java create mode 100644 src/org/rapla/plugin/jndi/internal/JNDIConf.java create mode 100644 src/org/rapla/plugin/jndi/internal/JNDIOption.java create mode 100644 src/org/rapla/plugin/jndi/internal/JNDITest.java create mode 100644 src/org/rapla/plugin/jndi/internal/PasswordEnterUI.java create mode 100644 src/org/rapla/plugin/jndi/internal/RaplaJNDITestOnLocalhost.java create mode 100644 src/org/rapla/plugin/jndi/internal/RaplaJNDITestOnServer.java create mode 100644 src/org/rapla/plugin/jndi/internal/RaplaJNDITestRemoteServiceFactory.java create mode 100644 src/org/rapla/plugin/mail/MailPlugin.java create mode 100644 src/org/rapla/plugin/mail/MailToUserInterface.java create mode 100644 src/org/rapla/plugin/mail/internal/MailOption.java create mode 100644 src/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.java create mode 100644 src/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.java create mode 100644 src/org/rapla/plugin/mail/internal/RaplaMailToUserOnServer.java create mode 100644 src/org/rapla/plugin/monthview/HTMLMonthViewPage.java create mode 100644 src/org/rapla/plugin/monthview/MonthViewFactory.java create mode 100644 src/org/rapla/plugin/monthview/MonthViewPlugin.java create mode 100644 src/org/rapla/plugin/monthview/SwingMonthCalendar.java create mode 100644 src/org/rapla/plugin/monthview/images/month.png create mode 100644 src/org/rapla/plugin/notification/NotificationOption.java create mode 100644 src/org/rapla/plugin/notification/NotificationPlugin.java create mode 100644 src/org/rapla/plugin/notification/NotificationResources.xml create mode 100644 src/org/rapla/plugin/notification/NotificationService.java create mode 100644 src/org/rapla/plugin/occupationview/AllocationCell.java create mode 100644 src/org/rapla/plugin/occupationview/ColumnGroup.java create mode 100644 src/org/rapla/plugin/occupationview/EndOfLifeArchiver.java create mode 100644 src/org/rapla/plugin/occupationview/GroupableTableColumnModel.java create mode 100644 src/org/rapla/plugin/occupationview/GroupableTableHeader.java create mode 100644 src/org/rapla/plugin/occupationview/GroupableTableHeaderUI.java create mode 100644 src/org/rapla/plugin/occupationview/OccupationCell.java create mode 100644 src/org/rapla/plugin/occupationview/OccupationFactory.java create mode 100644 src/org/rapla/plugin/occupationview/OccupationOption.java create mode 100644 src/org/rapla/plugin/occupationview/OccupationPlugin.java create mode 100644 src/org/rapla/plugin/occupationview/OccupationResources.xml create mode 100644 src/org/rapla/plugin/occupationview/OccupationTableModel.java create mode 100644 src/org/rapla/plugin/occupationview/SwingOccupation.java create mode 100644 src/org/rapla/plugin/occupationview/TimeShiftPanel.java create mode 100644 src/org/rapla/plugin/occupationview/images/archive.gif create mode 100644 src/org/rapla/plugin/occupationview/images/eclipse-icons/edit.gif create mode 100644 src/org/rapla/plugin/occupationview/images/eclipse-icons/help.gif create mode 100644 src/org/rapla/plugin/occupationview/images/eclipse-icons/inout.gif create mode 100644 src/org/rapla/plugin/occupationview/images/eclipse-icons/new.gif create mode 100644 src/org/rapla/plugin/occupationview/images/eclipse-icons/trash.gif create mode 100644 src/org/rapla/plugin/occupationview/images/error.png create mode 100644 src/org/rapla/plugin/occupationview/images/table.png create mode 100644 src/org/rapla/plugin/officeprinting/OfficePrintingDialog.java create mode 100644 src/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory.java create mode 100644 src/org/rapla/plugin/officeprinting/OfficePrintingOption.java create mode 100644 src/org/rapla/plugin/officeprinting/OfficePrintingPlugin.java create mode 100644 src/org/rapla/plugin/officeprinting/OfficePrintingResources.xml create mode 100644 src/org/rapla/plugin/officeprinting/UnoContact.java create mode 100644 src/org/rapla/plugin/package.html create mode 100644 src/org/rapla/plugin/periodcopy/CopyDialog.java create mode 100644 src/org/rapla/plugin/periodcopy/CopyPluginInit.java create mode 100644 src/org/rapla/plugin/periodcopy/PeriodCopy.properties create mode 100644 src/org/rapla/plugin/periodcopy/PeriodCopyPlugin.java create mode 100644 src/org/rapla/plugin/periodcopy/PeriodCopy_de.properties create mode 100644 src/org/rapla/plugin/periodview/HTMLPeriodViewPage.java create mode 100644 src/org/rapla/plugin/periodview/PeriodViewFactory.java create mode 100644 src/org/rapla/plugin/periodview/PeriodViewPlugin.java create mode 100644 src/org/rapla/plugin/periodview/SwingPeriodCalendar.java create mode 100644 src/org/rapla/plugin/periodview/images/period_view.png create mode 100644 src/org/rapla/plugin/periodwizard/AppointmentSelection.java create mode 100644 src/org/rapla/plugin/periodwizard/PeriodReservationWizard.java create mode 100644 src/org/rapla/plugin/periodwizard/PeriodWizardPlugin.java create mode 100644 src/org/rapla/plugin/periodwizard/WizardResources.xml create mode 100644 src/org/rapla/plugin/periodwizard/WizardSequence.java create mode 100644 src/org/rapla/plugin/tableview/ReservationTableModel.java create mode 100644 src/org/rapla/plugin/tableview/SwingTableView.java create mode 100644 src/org/rapla/plugin/tableview/TableViewFactory.java create mode 100644 src/org/rapla/plugin/tableview/TableViewPage.java create mode 100644 src/org/rapla/plugin/tableview/TableViewPlugin.java create mode 100644 src/org/rapla/plugin/tableview/images/table.png create mode 100644 src/org/rapla/plugin/tableview/report.css create mode 100644 src/org/rapla/plugin/weekview/DayViewFactory.java create mode 100644 src/org/rapla/plugin/weekview/HTMLDayViewPage.java create mode 100644 src/org/rapla/plugin/weekview/HTMLWeekViewPage.java create mode 100644 src/org/rapla/plugin/weekview/SwingDayCalendar.java create mode 100644 src/org/rapla/plugin/weekview/SwingWeekCalendar.java create mode 100644 src/org/rapla/plugin/weekview/WeekViewFactory.java create mode 100644 src/org/rapla/plugin/weekview/WeekViewPlugin.java create mode 100644 src/org/rapla/plugin/weekview/images/day.png create mode 100644 src/org/rapla/plugin/weekview/images/week.png create mode 100644 src/org/rapla/server/RaplaRemoteServiceFactory.java create mode 100644 src/org/rapla/server/RemoteMethod.java create mode 100644 src/org/rapla/server/RemoteService.java create mode 100644 src/org/rapla/server/RemoteServiceCaller.java create mode 100644 src/org/rapla/server/RemoteSession.java create mode 100644 src/org/rapla/server/RemoteStorage.java create mode 100644 src/org/rapla/server/RemoteStorageCallback.java create mode 100644 src/org/rapla/server/RestartServer.java create mode 100644 src/org/rapla/server/ServerService.java create mode 100644 src/org/rapla/server/ShutdownListener.java create mode 100644 src/org/rapla/server/ShutdownService.java create mode 100644 src/org/rapla/server/internal/RemoteSessionImpl.java create mode 100644 src/org/rapla/server/internal/RemoteStorageImpl.java create mode 100644 src/org/rapla/server/internal/SecurityManager.java create mode 100644 src/org/rapla/server/internal/ServerServiceImpl.java create mode 100644 src/org/rapla/server/internal/SessionExpiredException.java create mode 100644 src/org/rapla/server/internal/ShutdownRemoteServiceFactory.java create mode 100644 src/org/rapla/server/internal/ShutdownServiceImpl.java create mode 100644 src/org/rapla/server/package.html create mode 100644 src/org/rapla/servletpages/DefaultHTMLMenuEntry.java create mode 100644 src/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.java create mode 100644 src/org/rapla/servletpages/HTMLMenuExtensionPoint.java create mode 100644 src/org/rapla/servletpages/RaplaAppletPageGenerator.java create mode 100644 src/org/rapla/servletpages/RaplaIndexPageGenerator.java create mode 100644 src/org/rapla/servletpages/RaplaJNLPPageGenerator.java create mode 100644 src/org/rapla/servletpages/RaplaPageGenerator.java create mode 100644 src/org/rapla/servletpages/RaplaResourcePageGenerator.java create mode 100644 src/org/rapla/servletpages/RaplaStatusPageGenerator.java create mode 100644 src/org/rapla/servletpages/package.html create mode 100644 src/org/rapla/storage/AuthenticationStore.java create mode 100644 src/org/rapla/storage/CachableStorageOperator.java create mode 100644 src/org/rapla/storage/IOContext.java create mode 100644 src/org/rapla/storage/IdTable.java create mode 100644 src/org/rapla/storage/ImportExportManager.java create mode 100644 src/org/rapla/storage/LocalCache.java create mode 100644 src/org/rapla/storage/RaplaSecurityException.java create mode 100644 src/org/rapla/storage/ReferenceNotFoundException.java create mode 100644 src/org/rapla/storage/StorageOperator.java create mode 100644 src/org/rapla/storage/StorageUpdateListener.java create mode 100644 src/org/rapla/storage/UpdateEvent.java create mode 100644 src/org/rapla/storage/UpdateResult.java create mode 100644 src/org/rapla/storage/dbfile/FileOperator.java create mode 100644 src/org/rapla/storage/dbfile/package.html create mode 100644 src/org/rapla/storage/dbrm/Connector.java create mode 100644 src/org/rapla/storage/dbrm/HTTPConnector.java create mode 100644 src/org/rapla/storage/dbrm/RaplaStorePage.java create mode 100644 src/org/rapla/storage/dbrm/RemoteOperator.java create mode 100644 src/org/rapla/storage/dbsql/DBOperator.java create mode 100644 src/org/rapla/storage/dbsql/EntityStorage.java create mode 100644 src/org/rapla/storage/dbsql/RaplaDBException.java create mode 100644 src/org/rapla/storage/dbsql/RaplaSQL.java create mode 100644 src/org/rapla/storage/dbsql/Storage.java create mode 100644 src/org/rapla/storage/dbsql/package.html create mode 100644 src/org/rapla/storage/impl/AbstractCachableOperator.java create mode 100644 src/org/rapla/storage/impl/EntityStore.java create mode 100644 src/org/rapla/storage/impl/ImportExportManagerImpl.java create mode 100644 src/org/rapla/storage/package.html create mode 100644 src/org/rapla/storage/xml/AllocatableReader.java create mode 100644 src/org/rapla/storage/xml/AllocatableWriter.java create mode 100644 src/org/rapla/storage/xml/CategoryReader.java create mode 100644 src/org/rapla/storage/xml/CategoryWriter.java create mode 100644 src/org/rapla/storage/xml/ClassifiableWriter.java create mode 100644 src/org/rapla/storage/xml/ClassificationFilterReader.java create mode 100644 src/org/rapla/storage/xml/ClassificationFilterWriter.java create mode 100644 src/org/rapla/storage/xml/DelegationHandler.java create mode 100644 src/org/rapla/storage/xml/DynAttReader.java create mode 100644 src/org/rapla/storage/xml/DynamicTypeReader.java create mode 100644 src/org/rapla/storage/xml/DynamicTypeWriter.java create mode 100644 src/org/rapla/storage/xml/Namespaces.java create mode 100644 src/org/rapla/storage/xml/PeriodReader.java create mode 100644 src/org/rapla/storage/xml/PeriodWriter.java create mode 100644 src/org/rapla/storage/xml/PreferenceReader.java create mode 100644 src/org/rapla/storage/xml/PreferenceWriter.java create mode 100644 src/org/rapla/storage/xml/RaplaCalendarSettingsReader.java create mode 100644 src/org/rapla/storage/xml/RaplaCalendarSettingsWriter.java create mode 100644 src/org/rapla/storage/xml/RaplaConfigurationReader.java create mode 100644 src/org/rapla/storage/xml/RaplaConfigurationWriter.java create mode 100644 src/org/rapla/storage/xml/RaplaEntityComparator.java create mode 100644 src/org/rapla/storage/xml/RaplaInput.java create mode 100644 src/org/rapla/storage/xml/RaplaMainReader.java create mode 100644 src/org/rapla/storage/xml/RaplaMainWriter.java create mode 100644 src/org/rapla/storage/xml/RaplaMapReader.java create mode 100644 src/org/rapla/storage/xml/RaplaMapWriter.java create mode 100644 src/org/rapla/storage/xml/RaplaSAXPipeline.java create mode 100644 src/org/rapla/storage/xml/RaplaXMLReader.java create mode 100644 src/org/rapla/storage/xml/RaplaXMLWriter.java create mode 100644 src/org/rapla/storage/xml/RemoveReader.java create mode 100644 src/org/rapla/storage/xml/ReservationReader.java create mode 100644 src/org/rapla/storage/xml/ReservationWriter.java create mode 100644 src/org/rapla/storage/xml/TestWriter.java create mode 100644 src/org/rapla/storage/xml/UserReader.java create mode 100644 src/org/rapla/storage/xml/UserWriter.java create mode 100644 src/org/rapla/storage/xml/WrongVersionException.java create mode 100644 src/org/rapla/storage/xml/convert0_4to0_5.xsl create mode 100644 src/org/rapla/storage/xml/convert0_5to0_6.xsl create mode 100644 src/org/rapla/storage/xml/convert0_6to0_7.xsl create mode 100644 src/org/rapla/storage/xml/convert0_7to0_8.xsl create mode 100644 src/org/rapla/storage/xml/convert0_8to0_9.xsl create mode 100644 src/org/rapla/storage/xml/convert0_9to1_0.xsl create mode 100644 src/org/rapla/storage/xml/rapla.rng create mode 100644 src/org/rapla/storage/xml/relax.rng create mode 100644 templates/javadoc.css create mode 100644 templates/rapla.exe create mode 100644 templates/scripts/rapla_bat create mode 100644 templates/scripts/rapla_sh create mode 100644 templates/scripts/raplaclient_bat create mode 100644 templates/scripts/raplaexport_bat create mode 100644 templates/scripts/raplaimport_bat create mode 100644 templates/scripts/raplaserver_bat create mode 100644 templates/scripts/raplaserver_sh create mode 100644 test-src/org/rapla/CommunicatorTest.java create mode 100644 test-src/org/rapla/HugeDataFileTest.java create mode 100644 test-src/org/rapla/MockMailer.java create mode 100644 test-src/org/rapla/PermissionTest.java create mode 100644 test-src/org/rapla/RaplaDemoTest.java create mode 100644 test-src/org/rapla/RaplaLocaleTest.java create mode 100644 test-src/org/rapla/RaplaTestCase.java create mode 100644 test-src/org/rapla/ServerTest.java create mode 100644 test-src/org/rapla/ServletTestBase.java create mode 100644 test-src/org/rapla/SunBugsTest.java create mode 100644 test-src/org/rapla/ToolsTest.java create mode 100644 test-src/org/rapla/components/calendar/RaplaCalendarExample.java create mode 100644 test-src/org/rapla/components/calendar/TimeFieldChinaExample.java create mode 100644 test-src/org/rapla/components/calendarview/RaplaCalendarViewExample.java create mode 100644 test-src/org/rapla/components/calendarview/WeekdayMapperTest.java create mode 100644 test-src/org/rapla/components/mail/MailTest.java create mode 100644 test-src/org/rapla/components/util/FilterIteratorTest.java create mode 100644 test-src/org/rapla/components/util/MutexTest.java create mode 100644 test-src/org/rapla/components/util/SmallIntMapTest.java create mode 100644 test-src/org/rapla/components/util/ToolsTest.java create mode 100644 test-src/org/rapla/components/xmlbundle/tests/AbstractI18nTest.java create mode 100644 test-src/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.java create mode 100644 test-src/org/rapla/entities/tests/AppointmentTest.java create mode 100644 test-src/org/rapla/entities/tests/AttributeTest.java create mode 100644 test-src/org/rapla/entities/tests/CategoryTest.java create mode 100644 test-src/org/rapla/entities/tests/ClassificationTest.java create mode 100644 test-src/org/rapla/entities/tests/Day.java create mode 100644 test-src/org/rapla/entities/tests/PreferencesTest.java create mode 100644 test-src/org/rapla/entities/tests/ReservationFilterTest.java create mode 100644 test-src/org/rapla/entities/tests/ReservationTest.java create mode 100644 test-src/org/rapla/entities/tests/Time.java create mode 100644 test-src/org/rapla/entities/tests/TimeTest.java create mode 100644 test-src/org/rapla/entities/tests/UserTest.java create mode 100644 test-src/org/rapla/facade/tests/ClientFacadeTest.java create mode 100644 test-src/org/rapla/gui/edit/reservation/test/ReservationControllerTest.java create mode 100644 test-src/org/rapla/gui/edit/test/AttributeEditTest.java create mode 100644 test-src/org/rapla/gui/edit/test/CategoryEditTest.java create mode 100644 test-src/org/rapla/gui/edit/test/PermissionEditTest.java create mode 100644 test-src/org/rapla/gui/tests/CalendarEditorTest.java create mode 100644 test-src/org/rapla/gui/tests/DataUpdateTest.java create mode 100644 test-src/org/rapla/gui/tests/GUITestCase.java create mode 100644 test-src/org/rapla/gui/tests/RapaBuilderTest.java create mode 100644 test-src/org/rapla/gui/toolkit/tests/ErrorDialogTest.java create mode 100644 test-src/org/rapla/plugin/tests/CopyPeriodPluginTest.java create mode 100644 test-src/org/rapla/plugin/tests/MailPluginTest.java create mode 100644 test-src/org/rapla/plugin/tests/NotificationPluginTest.java create mode 100644 test-src/org/rapla/server/SecurityManagerTest.java create mode 100644 test-src/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.java create mode 100644 test-src/org/rapla/storage/dbfile/tests/FileOperatorRemoteTest.java create mode 100644 test-src/org/rapla/storage/dbfile/tests/FileOperatorTest.java create mode 100644 test-src/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.java create mode 100644 test-src/org/rapla/storage/dbsql/tests/SQLOperatorTest.java create mode 100644 test-src/org/rapla/storage/tests/AbstractOperatorTest.java create mode 100644 test-src/org/rapla/storage/tests/LocalCacheTest.java create mode 100644 test-src/org/rapla/storage/xml/tests/ConverterTest.java create mode 100644 test-src/org/rapla/storage/xml/tests/version-0.5.xml create mode 100644 test-src/test.xconf create mode 100644 test-src/test.xlog create mode 100644 test-src/testdefault.xml create mode 100644 updatejavadocs.sh create mode 100644 webapp/WEB-INF/.cvsignore create mode 100644 webapp/WEB-INF/User.csv create mode 100644 webapp/WEB-INF/data.xml create mode 100644 webapp/WEB-INF/data.xml.bak create mode 100644 webapp/WEB-INF/logs/rapla-client.log.000001 create mode 100644 webapp/WEB-INF/rapla-access.sql create mode 100644 webapp/WEB-INF/rapla-hsqldb.properties create mode 100644 webapp/WEB-INF/rapla-hsqldb.script create mode 100644 webapp/WEB-INF/rapla-mysql.sql create mode 100644 webapp/WEB-INF/rapla-oracle.sql create mode 100644 webapp/WEB-INF/rapla-postgres.sql create mode 100644 webapp/WEB-INF/rapla.xconf create mode 100644 webapp/WEB-INF/raplaclient.xlog create mode 100644 webapp/WEB-INF/raplaserver.xconf create mode 100644 webapp/WEB-INF/raplaserver.xlog create mode 100644 webapp/WEB-INF/simpsons-data.xml create mode 100644 webapp/WEB-INF/web.xml create mode 100644 webapp/default.css create mode 100644 webapp/images/button.gif create mode 100644 webapp/images/favicon.ico create mode 100644 webapp/redirect.html create mode 100644 webapp/webclient/logo.gif create mode 100644 webapp/webclient/raplaclient.xconf create mode 100644 webapp/webclient/raplaclient.xlog diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..7cdf867 --- /dev/null +++ b/.classpath @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..c946886 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Rapla + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2eee500 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Wed Nov 28 15:06:21 EST 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/INSTALL.txt b/INSTALL.txt new file mode 100644 index 0000000..aa94893 --- /dev/null +++ b/INSTALL.txt @@ -0,0 +1,70 @@ +This is the INSTALLING-GUIDE for the Rapla-BINARY-DISTRIBUTION, + +You will find more information on our documentation pages on +http://rapla.sourceforge.net/documentation.html + +if you have downloaded the SOURCE-DISTRIBUTION you have to +!!! BUILD A BINARY-DISTRIBUTION first !!! +For more information read README-BUILD.txt. + +Requirements: + +You need JAVA: JRE 1.5 at least (1.6 recommended). +You can download it from java.sun.com + +* The SDK works for the binary and source distribution but is very + large (>20 MB) + +* The JRE will only work for the binary distribution (Compiler + missing) but is much smaller (12MB) + + +STARTING RAPLA: + +Start rapla.exe (rapla.sh under Unix). + +To start Rapla from the command-line, you have to set the java command +in your PATH-Variable (if its not already there), + +Example: +setenv PATH $PATH:/usr/local/java/bin (Unix) +set PATH=%PATH%:c:\Programme\Java\jre\bin (Windows) + +Then type: + +rapla.sh (Unix) +rapla.bat (win95/98). +call rapla.bat (win NT/2000) + + +If you want to try out the simpsons-sample change the +following configuration entry in webapp/WEB-INF/rapla.xconf + + + simpsons-data.xml + no + + +or overwrite your existing data.xml file. + +If you want to test multiuser functionality comment out the default login-entry in the facade-entry: + + +You can than use the following logins: + +isa lisa +admin donut +homer duffs (Admin) +skinner edna +monty money (Admin) +abe matlock + +For more information visit the documentation pages on http://rapla.sourceforge.net/ + +Rapla includes free software developed by other projects. +For a complete list of all external libraraies, take a look at legal/LIBRARIES-FAQ + + diff --git a/README-Build.txt b/README-Build.txt new file mode 100644 index 0000000..fe37975 --- /dev/null +++ b/README-Build.txt @@ -0,0 +1,50 @@ +This README is for building rapla from source. You will find more information on our +documentation pages on + +http://rapla.sourceforge.net/documentation.html + +1. Get the source: + +To get the Source-Distribution download it from +rapla.sourceforge.net/download + +If you want to checkout the latest developmant version read the +faq-entry on rapla.sourceforge.net. + + +2. Build Rapla: + +We use the ant tool for our build process. Ant is the java-equivalent to make +Look at jakarta.apache.org/ant for more information. If you don't want +to use Ant read the FAQS on rapla.sourceforge.net for alternative building. + + +Use the following batch files to start the ant.jar included with +the rapla source distribution. + +build.sh (Linux/Unix) +build.bat (Win) +call build (win NT/2000) + + +Calling build with no arguments will create a Binary-Distribution +in the sub-folder dist. There you will find the scripts to start rapla. (SEE INSTALL.txt) + + +You can call build with different arguments, e.g.: + + choose-target Executes the target specified in build.properties. + (default) Default target is dist-bin. + + dist-bin Creates a new Binary-Distribution in the folder dist. + build Builds a new rapla.jar in the build sub-folder + run Creates a new Binary-Distribution and runs it. + clean Deletes the build sub-folder + clean-dist Deletes the dist sub-folder + javadocs create the Javadoc in the build sub-folder + webapp Build a special distribution for Applet or Webstart deployment (see 3) + +Pass the target as a parameter to ant +e.g. build.sh dist-bin + +For a complete list of all targets use the -projecthelp option diff --git a/README-Server.txt b/README-Server.txt new file mode 100644 index 0000000..214bdad --- /dev/null +++ b/README-Server.txt @@ -0,0 +1,109 @@ +This README is for running rapla as server. You will find more information on our +documentation pages on + +http://rapla.sourceforge.net/documentation.html + + +The rapla server: +--------------------------- + +Since version 0.10.2 rapla server installation is very easy: +Download the binary-distribution or build one with "build dist-bin" + +You can start it with: + +raplaserver.bat (Windows) +call raplaserver.bat (NT) +raplaserver.sh run (Unix) + +If you want to install Rapla-Server as a SERVICE on Win NT/2000/XP/Vista/7 +use the scripts in the service folder to test/install/uninstall rapla as a service. + + +With a running server point your browser to +http://localhost:8051 + +You should see the rapla welcome screen. Click on start with webstart +and the webstart client should launch. If not launched automatically, +you should choose the webstart program from your +java installation (e.g. C:\Programme\Java\jre1.5.0_06\bin\webstart.exe under Windows). + +You can login with username "admin" and empty password + +Thats it. + +Installing into another servlet container +----------------------------------------- + +If you want to use another servlet container (e.g. tomcat) you can +copy the webapp (without s) folder to the webapps (with s) folder of +your servlet container and rename webapp (without s) to rapla. +See the documentation of your servelt-container for more details + +Installing in Apache or IIS +---------------------------- + +You can install Jetty with apache or IIS by uncommenting +the AJP13 listener in jetty/conf/main.xml. + +See http://jetty.mortbay.org/ for more information + +Troubleshooting: +---------------- +1. The most commen error will be long stacktrace with + "Caused by: java.net.BindException: Could not bind to port 8051" + somewhere hidden between the lines. This means that either another + rapla server is running (so stop or kill this process) or that this + port is blocked by another application. You need to configure + another the port in jetty/conf/main.xml + + + + + + +2. look in the troubleshooting faq under http://rapla.sourceforge.net/documentation.html + +3. Post a question to rapla-developers@lists.sourceforge.net + + +Running Multiple Rapla servers: +------------------------------- + +There is no Problem running multiple rapla servers on one computer. You just need to copy the webapp folder and rename it e.g. webapp2 +and add a new webapplication to jetty/jetty.xml + + + + /webapp2 + /rapla2 + /jetty/webdefault.xml + /webapp2 + + + Of course you need to change the context of the first webapp from / to /rapla + + + + /webapp + /rapla + /jetty/webdefault.xml + /webapp + + + + + +Now you should have two applications running +http://localhost:8051/rapla/ +http://localhost:8051/rapla2/ + + +Acknowlegdement +----------------- + +Rapla includes free software developed by the Apache Software Foundation +(http://www.apache.org/) and other organizations +For more Information see legal/LIBRARIES-FAQ + + diff --git a/Trunk.iml b/Trunk.iml new file mode 100644 index 0000000..b68ad17 --- /dev/null +++ b/Trunk.iml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/ant b/bin/ant new file mode 100644 index 0000000..14fc591 --- /dev/null +++ b/bin/ant @@ -0,0 +1,302 @@ +#! /bin/sh + +# Copyright 2001-2004 The Apache Software Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Extract launch and ant arguments, (see details below). +ant_exec_args= +no_config=false +use_jikes_default=false +ant_exec_debug=false +show_help=false +for arg in "$@" ; do + if [ "$arg" = "--noconfig" ] ; then + no_config=true + elif [ "$arg" = "--usejikes" ] ; then + use_jikes_default=true + elif [ "$arg" = "--execdebug" ] ; then + ant_exec_debug=true + elif [ my"$arg" = my"--h" -o my"$arg" = my"--help" ] ; then + show_help=true + ant_exec_args="$ant_exec_args -h" + else + if [ my"$arg" = my"-h" -o my"$arg" = my"-help" ] ; then + show_help=true + fi + ant_exec_args="$ant_exec_args \"$arg\"" + fi +done + +# Source/default ant configuration +if $no_config ; then + rpm_mode=false + usejikes=$use_jikes_default +else + # load system-wide ant configuration + if [ -f "/etc/ant.conf" ] ; then + . /etc/ant.conf + fi + + # load user ant configuration + if [ -f "$HOME/.ant/ant.conf" ] ; then + . $HOME/.ant/ant.conf + fi + if [ -f "$HOME/.antrc" ] ; then + . "$HOME/.antrc" + fi + + # provide default configuration values + if [ -z "$rpm_mode" ] ; then + rpm_mode=false + fi + if [ -z "$usejikes" ] ; then + usejikes=$use_jikes_default + fi +fi + +# Setup Java environment in rpm mode +if $rpm_mode ; then + if [ -f /usr/share/java-utils/java-functions ] ; then + . /usr/share/java-utils/java-functions + set_jvm + set_javacmd + fi +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +case "`uname`" in + CYGWIN*) cygwin=true ;; + Darwin*) darwin=true + if [ -z "$JAVA_HOME" ] ; then + JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home + fi + ;; +esac + +if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then + # try to find ANT + if [ -d /opt/ant ] ; then + ANT_HOME=/opt/ant + fi + + if [ -d "${HOME}/opt/ant" ] ; then + ANT_HOME="${HOME}/opt/ant" + fi + + ## resolve links - $0 may be a link to ant's home + PRG="$0" + progname=`basename "$0"` + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi + done + + ANT_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + ANT_HOME=`cd "$ANT_HOME" && pwd` +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$ANT_HOME" ] && + ANT_HOME=`cygpath --unix "$ANT_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# set ANT_LIB location +ANT_LIB="${ANT_HOME}/lib" + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD=`which java 2> /dev/null ` + if [ -z "$JAVACMD" ] ; then + JAVACMD=java + fi + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." + echo " We cannot execute $JAVACMD" + exit 1 +fi + +# Build local classpath using just the launcher in non-rpm mode or +# use the Jpackage helper in rpm mode with basic and default jars +# specified in the ant.conf configuration. Because the launcher is +# used, libraries linked in ANT_HOME will also be include, but this +# is discouraged as it is not java-version safe. A user should +# request optional jars and their dependencies via the OPT_JAR_LIST +# variable +if $rpm_mode && [ -f /usr/bin/build-classpath ] ; then + LOCALCLASSPATH="$(/usr/bin/build-classpath ant ant-launcher jaxp_parser_impl xml-commons-apis)" + # If the user requested to try to add some other jars to the classpath + if [ -n "$OPT_JAR_LIST" ] ; then + _OPTCLASSPATH="$(/usr/bin/build-classpath $OPT_JAR_LIST 2> /dev/null)" + if [ -n "$_OPTCLASSPATH" ] ; then + LOCALCLASSPATH="$LOCALCLASSPATH:$_OPTCLASSPATH" + fi + fi + + # Explicitly add javac path to classpath, assume JAVA_HOME set + # properly in rpm mode + if [ -f "$JAVA_HOME/lib/tools.jar" ] ; then + LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/tools.jar" + fi + if [ -f "$JAVA_HOME/lib/classes.zip" ] ; then + LOCALCLASSPATH="$LOCALCLASSPATH:$JAVA_HOME/lib/classes.zip" + fi + + # if CLASSPATH_OVERRIDE env var is set, LOCALCLASSPATH will be + # user CLASSPATH first and ant-found jars after. + # In that case, the user CLASSPATH will override ant-found jars + # + # if CLASSPATH_OVERRIDE is not set, we'll have the normal behaviour + # with ant-found jars first and user CLASSPATH after + if [ -n "$CLASSPATH" ] ; then + # merge local and specified classpath + if [ -z "$LOCALCLASSPATH" ] ; then + LOCALCLASSPATH="$CLASSPATH" + elif [ -n "$CLASSPATH_OVERRIDE" ] ; then + LOCALCLASSPATH="$CLASSPATH:$LOCALCLASSPATH" + else + LOCALCLASSPATH="$LOCALCLASSPATH:$CLASSPATH" + fi + + # remove class path from launcher -lib option + CLASSPATH="" + fi +else + # not using rpm_mode; use launcher to determine classpaths + if [ -z "$LOCALCLASSPATH" ] ; then + LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar + else + LOCALCLASSPATH=$ANT_LIB/ant-launcher.jar:$LOCALCLASSPATH + fi +fi + +if [ -n "$JAVA_HOME" ] ; then + # OSX hack to make Ant work with jikes + if $darwin ; then + OSXHACK="${JAVA_HOME}/../Classes" + if [ -d "${OSXHACK}" ] ; then + for i in "${OSXHACK}"/*.jar + do + JIKESPATH="$JIKESPATH:$i" + done + fi + fi +fi + +# Allow Jikes support (off by default) +if $usejikes; then + ANT_OPTS="$ANT_OPTS -Dbuild.compiler=jikes" +fi + +# For Cygwin, switch paths to appropriate format before running java +if $cygwin; then + if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then + format=mixed + else + format=windows + fi + ANT_HOME=`cygpath --$format "$ANT_HOME"` + ANT_LIB=`cygpath --$format "$ANT_LIB"` + JAVA_HOME=`cygpath --$format "$JAVA_HOME"` + LOCALCLASSPATH=`cygpath --path --$format "$LOCALCLASSPATH"` + if [ -n "$CLASSPATH" ] ; then + CLASSPATH=`cygpath --path --$format "$CLASSPATH"` + fi + CYGHOME=`cygpath --$format "$HOME"` +fi + +# Show script help if requested +if $show_help ; then + echo $0 '[script options] [options] [target [target2 [target3] ..]]' + echo 'Script Options:' + echo ' --help, --h print this message and ant help' + echo ' --noconfig suppress sourcing of /etc/ant.conf,' + echo ' $HOME/.ant/ant.conf, and $HOME/.antrc' + echo ' configuration files' + echo ' --usejikes enable use of jikes by default, unless' + echo ' set explicitly in configuration files' + echo ' --execdebug print ant exec line generated by this' + echo ' launch script' + echo ' ' +fi +# add a second backslash to variables terminated by a backslash under cygwin +if $cygwin; then + case "$ANT_HOME" in + *\\ ) + ANT_HOME="$ANT_HOME\\" + ;; + esac + case "$CYGHOME" in + *\\ ) + CYGHOME="$CYGHOME\\" + ;; + esac + case "$JIKESPATH" in + *\\ ) + JIKESPATH="$JIKESPATH\\" + ;; + esac + case "$LOCALCLASSPATH" in + *\\ ) + LOCALCLASSPATH="$LOCALCLASSPATH\\" + ;; + esac + case "$CLASSPATH" in + *\\ ) + CLASSPATH="$CLASSPATH\\" + ;; + esac +fi +# Execute ant using eval/exec to preserve spaces in paths, +# java options, and ant args +ant_sys_opts= +if [ -n "$CYGHOME" ]; then + if [ -n "$JIKESPATH" ]; then + ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\" -Dcygwin.user.home=\"$CYGHOME\"" + else + ant_sys_opts="-Dcygwin.user.home=\"$CYGHOME\"" + fi +else + if [ -n "$JIKESPATH" ]; then + ant_sys_opts="-Djikes.class.path=\"$JIKESPATH\"" + fi +fi +ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS -classpath \"$LOCALCLASSPATH\" -Dant.home=\"$ANT_HOME\" -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts org.apache.tools.ant.launch.Launcher $ANT_ARGS -lib \"$CLASSPATH\" $ant_exec_args" +if $ant_exec_debug ; then + echo $ant_exec_command +fi +eval $ant_exec_command diff --git a/bin/ant.bat b/bin/ant.bat new file mode 100644 index 0000000..57a958e --- /dev/null +++ b/bin/ant.bat @@ -0,0 +1,106 @@ +@echo off + +REM Copyright 2001,2004 The Apache Software Foundation +REM +REM Licensed under the Apache License, Version 2.0 (the "License"); +REM you may not use this file except in compliance with the License. +REM You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, software +REM distributed under the License is distributed on an "AS IS" BASIS, +REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +REM See the License for the specific language governing permissions and +REM limitations under the License. + +if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat" + +if "%OS%"=="Windows_NT" @setlocal + +rem %~dp0 is expanded pathname of the current script under NT +set DEFAULT_ANT_HOME=%~dp0.. + +if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME% +set DEFAULT_ANT_HOME= + +rem Slurp the command line arguments. This loop allows for an unlimited number +rem of arguments (up to the command line limit, anyway). +set ANT_CMD_LINE_ARGS=%1 +if ""%1""=="""" goto doneStart +shift +:setupArgs +if ""%1""=="""" goto doneStart +set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1 +shift +goto setupArgs +rem This label provides a place for the argument list loop to break out +rem and for NT handling to skip to. + +:doneStart +rem find ANT_HOME if it does not exist due to either an invalid value passed +rem by the user or the %0 problem on Windows 9x +if exist "%ANT_HOME%\lib\ant.jar" goto checkJava + +rem check for ant in Program Files +if not exist "%ProgramFiles%\ant" goto checkSystemDrive +set ANT_HOME=%ProgramFiles%\ant +goto checkJava + +:checkSystemDrive +rem check for ant in root directory of system drive +if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive +set ANT_HOME=%SystemDrive%\ant +goto checkJava + +:checkCDrive +rem check for ant in C:\ant for Win9X users +if not exist C:\ant\lib\ant.jar goto noAntHome +set ANT_HOME=C:\ant +goto checkJava + +:noAntHome +echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME. +goto end + +:checkJava +set _JAVACMD=%JAVACMD% + +if "%JAVA_HOME%" == "" goto noJavaHome +if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome +if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe +goto checkJikes + +:noJavaHome +if "%_JAVACMD%" == "" set _JAVACMD=java.exe + +:checkJikes +if not "%JIKESPATH%"=="" goto runAntWithJikes + +:runAnt +if not "%CLASSPATH%"=="" goto runAntWithClasspath +"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% +goto end + +:runAntWithClasspath +"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS% +goto end + +:runAntWithJikes +if not "%CLASSPATH%"=="" goto runAntWithJikesAndClasspath +"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS% +goto end + +:runAntWithJikesAndClasspath +"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -lib "%CLASSPATH%" %ANT_CMD_LINE_ARGS% +goto end + +:end +set _JAVACMD= +set ANT_CMD_LINE_ARGS= + +if "%OS%"=="Windows_NT" @endlocal + +:mainEnd +if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat" + diff --git a/bin/ant.cmd b/bin/ant.cmd new file mode 100644 index 0000000..4bb903f --- /dev/null +++ b/bin/ant.cmd @@ -0,0 +1,92 @@ +/* + Copyright 2003-2004 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Run ant +*/ + +'@echo off' +parse arg mode envarg '::' antarg + +if mode\='.' & mode\='..' & mode\='/' then do + envarg = mode envarg + mode = '' +end + +if antarg = '' then do + antarg = envarg + envarg = '' +end + +x = setlocal() + +env="OS2ENVIRONMENT" +antenv = _getenv_('antenv') +if _testenv_() = 0 then interpret 'call "' || antenv || '"' '"' || envarg || '"' + +if mode = '' then mode = _getenv_('ANT_MODE' '..') +if mode \= '/' then do + runrc = _getenv_('runrc') + antrc = _getenv_('antrc' 'antrc.cmd') + if mode = '..' then mode = '-r' + else mode = '' + interpret 'call "' || runrc || '"' antrc '"' || mode || '"' +end + +if _testenv_() = 0 then do + say 'Ant environment is not set properly' + x = endlocal() + exit 16 +end + +settings = '-Dant.home=' || ANT_HOME '-Djava.home=' || JAVA_HOME + +java = _getenv_('javacmd' 'java') +opts = value('ANT_OPTS',,env) +args = value('ANT_ARGS',,env) +lcp = value('LOCALCLASSPATH',,env) +cp = value('CLASSPATH',,env) +if value('ANT_USE_CP',,env) \= '' then do + if lcp \= '' & right(lcp, 1) \= ';' then lcp = lcp || ';' + lcp = lcp || cp + 'SET CLASSPATH=' +end +if lcp\='' then lcp = '-classpath' lcp + +cmd = java opts lcp '-jar' ANT_HOME ||'\lib\ant-launcher.jar' settings args antarg +launcher = stream(ANT_HOME ||'\lib\ant-launcher.jar', 'C', 'query exists') +if launcher = '' then entry = 'org.apache.tools.ant.Main' +else entry = 'org.apache.tools.ant.launch.Launcher' +java opts lcp entry settings args antarg + +x = endlocal() + +return rc + +_testenv_: procedure expose env ANT_HOME JAVA_HOME +ANT_HOME = value('ANT_HOME',,env) +if ANT_HOME = '' then return 0 +JAVA_HOME = value('JAVA_HOME',,env) +if JAVA_HOME = '' then return 0 +cp = translate(value('CLASSPATH',,env)) +if pos(translate(ANT_HOME), cp) = 0 then return 0 +if pos(translate(JAVA_HOME), cp) = 0 then return 0 +return 1 + +_getenv_: procedure expose env +parse arg envar default +if default = '' then default = envar +var = value(translate(envar),,env) +if var = '' then var = default +return var diff --git a/bin/antRun b/bin/antRun new file mode 100644 index 0000000..baddd71 --- /dev/null +++ b/bin/antRun @@ -0,0 +1,26 @@ +#!/bin/sh + +# +# Copyright 2001-2002,2004 The Apache Software Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +# Args: DIR command +cd "$1" +CMD="$2" +shift +shift + +exec "$CMD" "$@" diff --git a/bin/antRun.bat b/bin/antRun.bat new file mode 100644 index 0000000..cff480c --- /dev/null +++ b/bin/antRun.bat @@ -0,0 +1,45 @@ +@echo off + +REM +REM Copyright 2001-2002,2004 The Apache Software Foundation +REM +REM Licensed under the Apache License, Version 2.0 (the "License"); +REM you may not use this file except in compliance with the License. +REM You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, software +REM distributed under the License is distributed on an "AS IS" BASIS, +REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +REM See the License for the specific language governing permissions and +REM limitations under the License. +REM +REM + +if "%OS%"=="Windows_NT" @setlocal + +if ""%1""=="""" goto runCommand + +rem Change drive and directory to %1 +if "%OS%"=="Windows_NT" cd /d ""%1"" +if not "%OS%"=="Windows_NT" cd ""%1"" +shift + +rem Slurp the command line arguments. This loop allows for an unlimited number +rem of agruments (up to the command line limit, anyway). +set ANT_RUN_CMD=%1 +if ""%1""=="""" goto runCommand +shift +:loop +if ""%1""=="""" goto runCommand +set ANT_RUN_CMD=%ANT_RUN_CMD% %1 +shift +goto loop + +:runCommand +rem echo %ANT_RUN_CMD% +%ANT_RUN_CMD% + +if "%OS%"=="Windows_NT" @endlocal + diff --git a/bin/antenv.cmd b/bin/antenv.cmd new file mode 100644 index 0000000..b9b0db4 --- /dev/null +++ b/bin/antenv.cmd @@ -0,0 +1,99 @@ +/* + Copyright 2003-2004 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Ant environment +*/ + +'@echo off' +call RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs" +call SysLoadFuncs + +/* Prepare the parameters for later use */ +parse arg argv +mode = '' +args = '' +opts = '' +cp = '' +lcp = '' + +do i = 1 to words(argv) + param = word(argv, i) + select + when param='-lcp' then mode = 'l' + when param='-cp' | param='-classpath' then mode = 'c' + when abbrev('-opts', param, 4) then mode = 'o' + when abbrev('-args', param, 4) then mode = 'a' + otherwise + select + when mode = 'a' then args = space(args param, 1) + when mode = 'c' then cp = space(cp param, 1) + when mode = 'l' then lcp = space(lcp param, 1) + when mode = 'o' then opts = space(opts param, 1) + otherwise + say 'Option' param 'ignored' + end + end +end + +env="OS2ENVIRONMENT" +antconf = _getenv_('antconf' 'antconf.cmd') +runrc = _getenv_('runrc') +interpret 'call "' || runrc || '"' '"' || antconf || '"' 'ETC' +ANT_HOME = value('ANT_HOME',,env) +JAVA_HOME = value('JAVA_HOME',,env) +classpath = value('CLASSPATH',,env) +classes = stream(JAVA_HOME || "\lib\classes.zip", "C", "QUERY EXISTS") +if classes \= '' then classpath = prepend(classpath classes) +classes = stream(JAVA_HOME || "\lib\tools.jar", "C", "QUERY EXISTS") +if classes \= '' then classpath = prepend(classpath classes) + +classpath = prepend(classpath ANT_HOME || '\lib\ant-launcher.jar') +'SET CLASSPATH=' || classpath + +/* Setting classpathes, options and arguments */ +envset = _getenv_('envset') +if cp\='' then interpret 'call "' || envset || '"' '"; CLASSPATH"' '"' || cp || '"' +if lcp\='' then interpret 'call "' || envset || '"' '"; LOCALCLASSPATH"' '"' || lcp || '"' +if opts\='' then interpret 'call "' || envset || '"' '"-D ANT_OPTS"' '"' || opts || '"' +if args\='' then interpret 'call "' || envset || '"' '"ANT_ARGS"' '"' || args || '"' + +exit 0 + +addpath: procedure +parse arg path elem +if elem = '' then do + if path\='' & right(path, 1)\=';' then path = path || ';' + return path +end +if substr(path, length(path)) = ';' then glue = '' +else glue = ';' +if pos(translate(elem), translate(path)) = 0 then path = path || glue || elem || ';' +return path + +prepend: procedure +parse arg path elem +if elem = '' then do + if path\='' & right(path, 1)\=';' then path = path || ';' + return path +end +if pos(translate(elem), translate(path)) = 0 then path = elem || ';' || path +return path + +_getenv_: procedure expose env +parse arg envar default +if default = '' then default = envar +var = value(translate(envar),,env) +if var = '' then var = default +return var diff --git a/bin/envset.cmd b/bin/envset.cmd new file mode 100644 index 0000000..cb91d87 --- /dev/null +++ b/bin/envset.cmd @@ -0,0 +1,130 @@ +/* + + Copyright 2003-2004 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +SET environment variables +First optional parameter: + ; parameters are considered parts of a path variable, semicolons are + appended to each element if not already present + -D parameters are properties for Java or Makefile etc., -D will be + prepended and the parameters will be separated by a space + =D the same as above but equal sign is not required + , parameters should be comma separated in the environment variable + - parameters should be separated by the next parameter + Other values mean that the first parameter is missing and the environment + variable will be set to the space separated parameters + +Second parameter: name of the environment variable + +Next parameters: values +; implies that the equal sign is considered a part of the parameter and is +not interpreted + +-D requires parameters in the form name=value. If the equal sign is not found, +the parameters are changed to name=expanded_name + +Other options have optional equal sign. If it is found, only the part after +the equal sign will be oprionally expanded. + +If the parameter is the minus sign, the next parameter will not be expanded. +If the parameter is a single dot, it will be replaced with the value of the +environment variable as it existed before envset was invoked. + +For other parameters the batch looks for the environment variable with the +same name (in uppercase). If it is found, it forms the expanded_name. If +the environment variable with such a name does not exist, the expanded_name +will hold the parameter name without case conversion. +*/ + +parse arg mode envar args + +equal = 0 +sep = ' ' + +/* Parse command line parameters */ +select + when mode='-' then do + sep = envar + parse var args envar args + end + when mode=';' then do + sep = '' + equal = -1 + end + when mode='-D' then equal = 1 + when mode='=D' then mode = '-D' + when mode=',' then sep = ',' +otherwise + args = envar args + envar = mode + mode = '' +end + +env = 'OS2ENVIRONMENT' +envar = translate(envar) +orig = value(envar,,env) +newval = '' +expand = 1 + +/* for each parameter... */ +do i = 1 to words(args) + if expand > 0 & word(args, i) = '-' then expand = 0 + else call addval word(args, i) +end + +/* Optionally enclose path variable by quotes */ +if mode = ';' & pos(' ', newval) > 0 then newval = '"' || newval || '"' + +/* Set the new value, 'SET' cannot be used since it does not allow '=' */ +x = value(envar, newval, env) +exit 0 + +addval: procedure expose sep equal orig expand newval mode env +parse arg var + +if var = '.' then expvar = orig +else do + if equal >= 0 then do + parse var var name '=' val + if val = '' then var = name + else var = val + end + if expand = 0 then expvar = var + else expvar = value(translate(var),,env) + if expvar = '' then expvar = var + if equal >= 0 then do + if val = '' then do + parse var expvar key '=' val + if val <> '' then name = key + else do + if equal > 0 then val = key + else name = key + end + end + else val = expvar + if pos(' ', val) > 0 | pos('=', val) > 0 then val = '"' || val || '"' + if val = '' then expvar = name + else expvar = name || '=' || val + end + if mode = '-D' then expvar = '-D' || expvar + if mode = ';' then do + if right(expvar, 1) <> ';' then expvar = expvar || ';' + end +end + +if newval = '' then newval = expvar +else newval = newval || sep || expvar +expand = 1 +return diff --git a/bin/lcp.bat b/bin/lcp.bat new file mode 100644 index 0000000..eed6a82 --- /dev/null +++ b/bin/lcp.bat @@ -0,0 +1,30 @@ +REM +REM Copyright 2001-2004 The Apache Software Foundation +REM +REM Licensed under the Apache License, Version 2.0 (the "License"); +REM you may not use this file except in compliance with the License. +REM You may obtain a copy of the License at +REM +REM http://www.apache.org/licenses/LICENSE-2.0 +REM +REM Unless required by applicable law or agreed to in writing, software +REM distributed under the License is distributed on an "AS IS" BASIS, +REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +REM See the License for the specific language governing permissions and +REM limitations under the License. +REM +REM + +set _CLASSPATHCOMPONENT=%1 +if ""%1""=="""" goto gotAllArgs +shift + +:argCheck +if ""%1""=="""" goto gotAllArgs +set _CLASSPATHCOMPONENT=%_CLASSPATHCOMPONENT% %1 +shift +goto argCheck + +:gotAllArgs +set LOCALCLASSPATH=%_CLASSPATHCOMPONENT%;%LOCALCLASSPATH% + diff --git a/bin/runrc.cmd b/bin/runrc.cmd new file mode 100644 index 0000000..0337a80 --- /dev/null +++ b/bin/runrc.cmd @@ -0,0 +1,59 @@ +/* + Copyright 2003-2004 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Run RC file, name is in the first arg, second arg is either PATH + ENV or -r or nothing +*/ + +parse arg name path rest + +if name = '' then do + say 'RC file name is missing' + exit 1 +end + +if rest \= '' then do + say 'Too many parameters' + exit 1 +end + +call runit name path +exit 0 + +runit: procedure +parse arg name path dir + +if path \= '' & path \= '-r' then do + dir = value(translate(path),,'OS2ENVIRONMENT') + if dir = '' then return + dir = translate(dir, '\', '/') /* change UNIX-like path to OS/2 */ +end + +if dir = '' then dir = directory() + +if path = '-r' then do /* recursive call */ + subdir = filespec('path', dir) + if subdir \= '\' then do + subdir = left(subdir, length(subdir)-1) + call runit name path filespec('drive', dir) || subdir + end +end + +/* Look for the file and run it */ +if right(dir, 1) \= '\' then dir = dir || '\' +rcfile = stream(dir || name, 'c', 'query exists') +if rcfile \= '' then interpret 'call "' || rcfile || '"' + +return diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..05451e1 --- /dev/null +++ b/build.bat @@ -0,0 +1,19 @@ +@echo off +:: ------------------------------------------------------------------------- +:: build.bat Skript for Rapla +:: +:: +:: Usage: +:: for a list of all available build-targets type +:: .\build.bat -projecthelp + +if not "%ANT_HOME%" =="" goto gotAntHome + +set ANT_HOME=. +:gotAntHome +call %ANT_HOME%\bin\ant.bat %1 %2 %3 %4 %5 %6 + + + + + diff --git a/build.properties b/build.properties new file mode 100644 index 0000000..3914b05 --- /dev/null +++ b/build.properties @@ -0,0 +1,14 @@ +# You can modify this settings to configure the build + +#Set the target that will be run by default +target=dist-bin + +#Class for starting rapla when using the "start" target +#start.class=org.rapla.Main + +#Class for testing rapla when using the "test" target +#test.class=org.rapla.entities.PreferencesTest + +#Path and password to the keystore used for signing +#keystore.file=testkeystore +#keystore.password=secret diff --git a/build.properties.template b/build.properties.template new file mode 100644 index 0000000..3914b05 --- /dev/null +++ b/build.properties.template @@ -0,0 +1,14 @@ +# You can modify this settings to configure the build + +#Set the target that will be run by default +target=dist-bin + +#Class for starting rapla when using the "start" target +#start.class=org.rapla.Main + +#Class for testing rapla when using the "test" target +#test.class=org.rapla.entities.PreferencesTest + +#Path and password to the keystore used for signing +#keystore.file=testkeystore +#keystore.password=secret diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..3f9a49f --- /dev/null +++ b/build.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# +# Usage: +# +# for a list of all available build-targets type +# ./build.sh -projecthelp +# +chmod u+x ./bin/antRun +chmod u+x ./bin/ant +export ANT_HOME=. +$PWD/bin/ant -logger org.apache.tools.ant.NoBannerLogger -emacs $@ diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..1f76e65 --- /dev/null +++ b/build.xml @@ -0,0 +1,820 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + + + + + + + +
+ + +
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/buildcalendar.xml b/buildcalendar.xml new file mode 100644 index 0000000..67d2419 --- /dev/null +++ b/buildcalendar.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc.properties b/doc.properties new file mode 100644 index 0000000..a17fdd4 --- /dev/null +++ b/doc.properties @@ -0,0 +1,8 @@ +doc.name=rapla +doc.version=1.4.3-beta +doc.date=${TODAY} +doc.year=2000-2011 +doc.copyright=Rapla Team +doc.developer-list-link=http://lists.sourceforge.net/lists/listinfo/rapla-developers +doc.developer-list=rapla-developers@lists.sourceforge.net +doc.homepage=http://rapla.org diff --git a/doc/ReleaseNotes0.10.0beta.txt b/doc/ReleaseNotes0.10.0beta.txt new file mode 100644 index 0000000..2c9bda2 --- /dev/null +++ b/doc/ReleaseNotes0.10.0beta.txt @@ -0,0 +1,40 @@ +Changes: + +- DynamicTypes are now mandatory for reservations, persons and resources. + +- Refresh button moved to options. Disabled when used with remote-operator. + + +New: + +- Integration of org.rapla.calendarview in the main panel. + +- Resource and reservation selection panel in the org.rapla.calendarview. + +- Show periods in org.rapla.calendarview and in the date chooser. + +- Names don't need to be strings. You can combine names freely out of + the dynamic-type attributes (even categories). + +- Filters can be stored. + +- Selecting over multiple columns is possible in the org.rapla.calendarview. + +- Tooltips and Contextmenus on menu components (especially the trees) + +- Date possible as attribute + +- Export plugin for storing the print-views for later update. + +- Experimantal Support for storing in a database. More information + will be soon available on the wiki. + +- Admins can switch to any user + +- Java version will be displayed in Info-dialog ;) + +... and many many more + +Bugfixes: + +Too many to list here. \ No newline at end of file diff --git a/doc/ReleaseNotes0.11.3.txt b/doc/ReleaseNotes0.11.3.txt new file mode 100644 index 0000000..9e2afe0 --- /dev/null +++ b/doc/ReleaseNotes0.11.3.txt @@ -0,0 +1,14 @@ +Changes since 0.11.2: +*Events won't show for users if the users can't see the allocatables +*Allocatables won't show in weekview if the user can't see them +*Now works and compiles with new JDK 1.5.0beta + +Bugfixes since 0.11.2: +* 890095 NO MORE CLIENT DISCONNECT ON UPDATE +* Delete selection will show the proper names of the objects to remove. +* You can't resize blocks that span more than one day in the weekview. +* 890418 Appointments with 0 duration are forbidden +* Client and Server-Versions are compared before each login, +to avoid the Serialization-Error +* Fixed Calendar-Bug with new JDK 1.5.0beta +* Can now edit category after an unsuccessful delete (caused by an existing dependency) diff --git a/doc/ReleaseNotes0.11beta1.txt b/doc/ReleaseNotes0.11beta1.txt new file mode 100644 index 0000000..790c82c --- /dev/null +++ b/doc/ReleaseNotes0.11beta1.txt @@ -0,0 +1,36 @@ +New Features since 0.10.2: + +- You can assign groups to users: Create a new main-category with key "user-groups". +- You can set access-permissions to resources and persons by user/group. +- You can specify absolute and relative booking-timeframes for each resource +per user/group. By setting the relative start-time to 0 you can prevent modifing appointments in the past. +- create- and last-changed- times are available for reservations. Right-click and choose + "view" +- You can disable conflict-creation on a per user/group basis for each resource. +- Easy hsqldb Database available (see wiki) +- LDAP Authentication. See wiki. +- Old reservations will only be transfered to the client if needed . + + +Changes: + +- raplaclient.jsp mapped to raplaclient.jnlp to avoid problems with Internet Explorer. + +Bugfixes: + +- saxon-aelfred parser is used per default to overcome xml-parser shortcuts in suns jdk +- ClassCastException during calendar export +- appointment-ids are assigned correctly when storing into the sql-database. No more +mysterious appointment doubles. +- NullPointerException in Email-Notification fixed +- Redraw Problem of weekview +- Problem when assigning 2 appointments to 2 different resoures. Sometimes + the second assignment was silently dropped. +- Broken HTML-Weekview, when appointments span 2 or more days. +- Bug in the weekview that displayed appointments, starting on 0:00 of the first day of week, also in the previous week. +- Error storing filters with no selected category +- Webstart Error with java 1.4.1_05 (see http://sourceforge.net/tracker/index.php?func=detail&aid=844423&group_id=7274&atid=107274) +- Email notification: Two different appointments with a dedicated resource + for each lists 4 instead of the correct 2 allocations. +- Many others + diff --git a/doc/ReleaseNotes0.11beta2.txt b/doc/ReleaseNotes0.11beta2.txt new file mode 100644 index 0000000..053d14d --- /dev/null +++ b/doc/ReleaseNotes0.11beta2.txt @@ -0,0 +1,62 @@ +New Features since 0.11beta1: +- Month and Day views available +- Different access-levels for resources and persons: + denied: User can't read allocation of the resource + read: User can only read allocation of the resource + allocate: User can allocate the resource + allocate with conflicts: User can create conflicts + admin: User can modify resource, set permissions, and manipulate + all reservations-entries that allocate the resource. +- non-admin users can be allowed to create resources and person. When + such a user creates a resource it automatically adds a permission with + admin-access for the user. +- More reservation-information available in tooltip +- Users can be autocreated with LDAPAuthentication + +New Features since 0.10.2: + +- You can assign groups to users: Create a new main-category with key "user-groups". +- You can set access-permissions to resources and persons by user/group. +- You can specify absolute and relative booking-timeframes for each resource +per user/group. By setting the relative start-time to 0 you can prevent modifing appointments in the past. +- create- and last-changed- times are available for reservations. Right-click and choose + "view" +- You can disable conflict-creation on a per user/group basis for each resource. +- Easy hsqldb Database available (see wiki) +- LDAP Authentication. See wiki. +- Old reservations will only be transfered to the client if needed . + +Changes since 0.10.2: + +- raplaclient.jsp mapped to raplaclient.jnlp to avoid problems with Internet Explorer. + +Changes since 0.11beta1: + +- new format of data.xml of allocation assignment and create-conflict permisson. + New Version is 0.6 +- New LDAP-Configuration (see wiki) +- If you edit (right-click) one Appointment in the weekview, that appointment will be selected in the event-edit window. + +Bugfixes: + +- saxon-aelfred parser is used per default to overcome xml-parser shortcuts in suns jdk +- ClassCastException during org.rapla.calendarview export +- appointment-ids are assigned correctly when storing into the sql-database. No more +mysterious appointment doubles. +- NullPointerException in Email-Notification fixed +- Redraw Problem of weekview +- Problem when assigning 2 appointments to 2 different resoures. Sometimes + the second assignment was silently dropped. +- Broken HTML-Weekview, when appointments span 2 or more days. +- Bug in the weekview that displayed appointments, starting on 0:00 of the first day of week, also in the previous week. +- Error storing filters with no selected category +- Webstart Error with java 1.4.1_05 (see http://sourceforge.net/tracker/index.php?func=detail&aid=844423&group_id=7274&atid=107274) +- Email notification: Two different appointments with a dedicated resource + for each lists 4 instead of the correct 2 allocations. +- Many others + +Bugfixes since 0.11beta1: + +- Deadlock in client/server AFAIK appeared only in TestCase. +- Converting from old version fails with aelfred parser +- Failed to change ReservationFilter or ResourceFilter after a save. \ No newline at end of file diff --git a/doc/ReleaseNotes0.12.1.txt b/doc/ReleaseNotes0.12.1.txt new file mode 100644 index 0000000..22b3c09 --- /dev/null +++ b/doc/ReleaseNotes0.12.1.txt @@ -0,0 +1,26 @@ +Bugfixes since 0.12.1beta2: +* AM-PM Time is correct in Weekview. +* Bug when removing user. +* Period-Chooser now visible if you switch back from repeat-forever. +* Conversion from Data stored in relation-db works. +* Update from user and periods are displayed in the left view + +New Features since 0.11.3: +* The new org.rapla.calendarview-view "week compact" groups many resources on a smaller space for + a better overview. +* You can now specify the size of the text-fields with string attributes +* Attributes (especialy the long description fields) can be moved to a second input-screen. They won't show up in tooltips. +* Print the detail-view for an appointment or a resource (right click and view). +* The Starttime shows in the tooltip. + +Changes since 0.11.3: +* You can't click on "create appointment" when you have only read access to the resource + +Bugfixes since 0.11.3: +* !!!You can now store the user preferences and create html-exports!!! +* You aren't allowed to create conflicts in the past ( if conflict-creation is disabled) +* The categroy user-groups is created on import, when not already present. +* The header shows the right date in HTML-View. +* HTML-Report only shows the blocks visible in the Calendarview +* many more... + diff --git a/doc/ReleaseNotes0.12.2.txt b/doc/ReleaseNotes0.12.2.txt new file mode 100644 index 0000000..3529062 --- /dev/null +++ b/doc/ReleaseNotes0.12.2.txt @@ -0,0 +1,35 @@ +New Features since 0.12.1: + +* The Exception-Dates are shown in the detail view of a reservation +* To add a new appointment to an existing event in the calendar, first +open the event in the event-edit window, then switch back to the main +calendar-window and select the proper slot and finaly right click in +the selection to add the new appointment to the open event. +* The total number of occurrances of an event is calculated and displayed + in the reservation-edit window. +* A button to copy the info text into the system-clipboard + +Bugfixes since 0.12.1: +* calendar.css now looks the same under IE and Netscape +* Fixed the empty page printing problem. +* The resource-names are now printed correctly + +New Features since 0.11.3: +* The new calendar-view "week compact" groups many resources on a smaller space for + a better overview. +* You can now specify the size of the text-fields with string attributes +* Attributes (especialy the long description fields) can be moved to a second input-screen. They won't show up in tooltips. +* Print the detail-view for an appointment or a resource (right click and view). +* The Starttime shows in the tooltip. + +Changes since 0.11.3: +* You can't click on "create appointment" when you have only read access to the resource + +Bugfixes since 0.11.3: +* !!!You can now store the user preferences and create html-exports!!! +* You aren't allowed to create conflicts in the past ( if conflict-creation is disabled) +* The categroy user-groups is created on import, when not already present. +* The header shows the right date in HTML-View. +* HTML-Report only shows the blocks visible in the Calendarview +* many more... + diff --git a/doc/ReleaseNotes0.12.3.txt b/doc/ReleaseNotes0.12.3.txt new file mode 100644 index 0000000..8221980 --- /dev/null +++ b/doc/ReleaseNotes0.12.3.txt @@ -0,0 +1,32 @@ +New Features since 0.12.2: + +* French translation +* You can directly create a weekly event from the weekview +* API new method getReservations() for resource array + +Bugfixes since 0.12.2: + +* ssl support now works +* You can't remove the user-groups category +* The update bug when entering new Period is no more +* In the event-edit window: If you only change to the detail view the save button state won't change. +* Cateroy attributes are now safly converted and removed, when changing or +removing an attribute + +New Features since 0.12.1: + +* The Exception-Dates are shown in the detail view of a reservation +* To add a new appointment to an existing event in the calendar, first +open the event in the event-edit window, then switch back to the main +calendar-window and select the proper slot and finaly right click in +the selection to add the new appointment to the open event. +* The total number of occurrances of an event is calculated and displayed + in the reservation-edit window. +* A button to copy the info text into the system-clipboard + +Bugfixes since 0.12.1: +* calendar.css now looks the same under IE and Netscape +* Fixed the empty page printing problem. +* The resource-names are now printed correctly + + diff --git a/doc/ReleaseNotes0.12.4.txt b/doc/ReleaseNotes0.12.4.txt new file mode 100644 index 0000000..d21b522 --- /dev/null +++ b/doc/ReleaseNotes0.12.4.txt @@ -0,0 +1,52 @@ +Version 0.12.4 Released on 11/20/2004 + +New Features since 0.12.3: +* You can configure the timescale (rows-per-hour) in the rapla*.xconf locale section +* Attributes can be made invisible, so you can only edit but not view them (usefull for attributes like color, see next feature) +* you can assign colors for the resources. To do this add a new attribute with + the KEY "color" (use Advanced settings) and enter the RGB Hex value + for each resource ( i.e. #A2A3FE) + +Changes since 0.12.3: +* In the week-compact view: An event with two resources now appears in both resource-rows. +* The HTML-Calendar now uses 100% width of the page + +Bugfixes since 0.12.3: +* Fixed Nullpointer Exception with java 1.5 when showing the reservation info dialog +* Fixed Unreadable Timescale with java 1.5 +* [Bug 1006389] is fixed, and you can now create daily repeatings +* [data.xml] repeating end dates on the end of month are correctly + stored as 31.1.2004 instead of 0.2.2004 +---------------------------------------- +New Features since 0.12.2: + +* French translation +* You can directly create a weekly event from the weekview +* API new method getReservations() for resource array + +Bugfixes since 0.12.2: + +* ssl support now works +* You can't remove the user-groups category +* The update bug when entering new Period is no more +* In the event-edit window: If you only change to the detail view the save button state won't change. +* Cateroy attributes are now safly converted and removed, when changing or +removing an attribute +---------------------------------------- +New Features since 0.12.1: + +* The Exception-Dates are shown in the detail view of a reservation +* To add a new appointment to an existing event in the org.rapla.calendarview, first +open the event in the event-edit window, then switch back to the main +org.rapla.calendarview-window and select the proper slot and finaly right click in +the selection to add the new appointment to the open event. +* The total number of occurrances of an event is calculated and displayed + in the reservation-edit window. +* A button to copy the info text into the system-clipboard + +Bugfixes since 0.12.1: +* org.rapla.calendarview.css now looks the same under IE and Netscape +* Fixed the empty page printing problem. +* The resource-names are now printed correctly + + diff --git a/doc/ReleaseNotes0.12.beta1.txt b/doc/ReleaseNotes0.12.beta1.txt new file mode 100644 index 0000000..423ce3e --- /dev/null +++ b/doc/ReleaseNotes0.12.beta1.txt @@ -0,0 +1,19 @@ +New Features since 0.11.3: +* The new org.rapla.calendarview-view "week compact" groups many resources on a smaller space for + a better overview. +* You can now specify the size of the text-fields with string attributes +* Attributes (especialy the long description fields) can be moved to a second input-screen. They won't show up in tooltips. +* Print the detail-view for an appointment or a resource (right click and view). +* The Starttime shows in the tooltip. + +Changes since 0.11.3: +* You can't click on "create appointment" when you have only read access to the resource + +Bugfixes since 0.11.3: +* !!!You can now store the user preferences and create html-exports!!! +* You aren't allowed to create conflicts in the past ( if conflict-creation is disabled) +* The categroy user-groups is created on import, when not already present. +* The header shows the right date in HTML-View. +* HTML-Report only shows the blocks visible in the Calendarview +* many more... + diff --git a/doc/ReleaseNotes0.12.beta2.txt b/doc/ReleaseNotes0.12.beta2.txt new file mode 100644 index 0000000..331bf45 --- /dev/null +++ b/doc/ReleaseNotes0.12.beta2.txt @@ -0,0 +1,23 @@ +Bugfixes since 0.12.1beta1: +* Conversion from Data stored in relation-db works. +* Update from user and periods are displayed in the left view + +New Features since 0.11.3: +* The new calendar-view "week compact" groups many resources on a smaller space for + a better overview. +* You can now specify the size of the text-fields with string attributes +* Attributes (especialy the long description fields) can be moved to a second input-screen. They won't show up in tooltips. +* Print the detail-view for an appointment or a resource (right click and view). +* The Starttime shows in the tooltip. + +Changes since 0.11.3: +* You can't click on "create appointment" when you have only read access to the resource + +Bugfixes since 0.11.3: +* !!!You can now store the user preferences and create html-exports!!! +* You aren't allowed to create conflicts in the past ( if conflict-creation is disabled) +* The categroy user-groups is created on import, when not already present. +* The header shows the right date in HTML-View. +* HTML-Report only shows the blocks visible in the Calendarview +* many more... + diff --git a/doc/ReleaseNotes0_6.txt b/doc/ReleaseNotes0_6.txt new file mode 100644 index 0000000..c12f67d --- /dev/null +++ b/doc/ReleaseNotes0_6.txt @@ -0,0 +1,41 @@ +Rapla Version 0.6 released on 26.8.2001 + + +Changes and new Features + +- Changing the name of a reservation is possible. +- Reservation names are now unique according to their semester. +- It is now possible to select start- and end-time in a ComboBox. +- A warning-dialog appears if you want to close the edit-window and there are non-saved changes. +- Printing is now supported (only tested under Windows). The class org.rapla.PrintTools can be used to + print any AWT or Swing component. The component will be printed in + high-resolution. +- On saving of the XML-file there should be a backup of the + old data in data.xml.old +- Added some JUnit-tests. The test-cases are located in the test-src directory. + To run all test cases (expect the DB-Ones) type + build test-all (Windows) + build.sh test-all (Unix) + A test-build can be run before every commit to make the cvs version + more stable. +- For convinience the ok-button is allways left and the abort-button allways right. + + +enhanced i18n support: + +- The timezone of Rapla is set to GMT+00:00, by default. In future versions different + timezones will be supported, but for that we have to deal with some SQL-time-conversion problems. +- The data.xml file is now in english with language-sensitive resource-metadata. +- localization of times in the weekview ( 9 pm instead of 21:00) + + +Bugfixes (only some of them are listed here) + +- 9:00 - 10:00 and 10:00 - 11:00 never create a conflict +- There is always a default-semester +- Title of warnings are localized +- language-change is possible before second login. +- refresh is possible after first logout. +- 5-10 typos corrected (thanks to Magnus) + + diff --git a/doc/ReleaseNotes0_61.txt b/doc/ReleaseNotes0_61.txt new file mode 100644 index 0000000..d01681e --- /dev/null +++ b/doc/ReleaseNotes0_61.txt @@ -0,0 +1,30 @@ +Rapla Version 0.61 released on 9.9.2001 + +Changes and new Features + +- printing-preview with editable title. +- the selected semester will be remembered during the session. +- info dialog. +- Some new tests. + Example: There is an target test-cvs to test the current-version, + in cvs after a commit. +- Allocations with no resources are shown in the reservation-overview, + but not in the resource-overview. +- Ant version changed to 1.4 +- New version of crimson: jaxp.jar and xml-apis.jar are obsolete +- Some smaller changes in the gui. (other gifs, text changes) +- data.xml: xml-header and encoding added (0.6 versions are still supported) +- convertXML2SQL.sh removed: + conversion from xmlFile to db and the other way round is now possible with + start.sh xml2sql + start.sh sql2xml + +Bugfixes: + +- bug in XML-Date-Time-Parsing fixed +- there is no exception on an invalid login +- language-change-error with JDK 1.2.2 +- build possible with JDK 1.2.2 + + + diff --git a/doc/ReleaseNotes0_7.txt b/doc/ReleaseNotes0_7.txt new file mode 100644 index 0000000..13461c5 --- /dev/null +++ b/doc/ReleaseNotes0_7.txt @@ -0,0 +1,29 @@ +Rapla Version 0.7 released on 9.9.2001 + +Changes and new Features + +- ADMIN-Functionality +- PostgreSQL Support +- new language-resource system. It's very easy to add a new or modify + an existing language-resource. Take a look at + src/org/rapla/languages/resources.xml + +- Modified db-schema and xml-file. Nevertheless Version 0.7 can still + read and write the schema from 0.61. + +- Associated persons will be displayed in weekview. +- Weekview Configuration in rapla.propeterties +- Disable-Color-Button in print-preview-dialog + + +Bugfixes: + +- Slightly better line-breaks in weekview. +- Color-chosing-bug. The weekview is not dazzling anymore. +- <, & will be encoded in XML. +- The weekview-popup now works under linux. +- Calendar Component. When changing from december to january the + year will increase. +- Many many more. + + diff --git a/doc/ReleaseNotes0_71.txt b/doc/ReleaseNotes0_71.txt new file mode 100644 index 0000000..f415487 --- /dev/null +++ b/doc/ReleaseNotes0_71.txt @@ -0,0 +1,19 @@ +Rapla Version 0.71 has been released on 10.12.2001 + +Changes and new Features +- You can create, move, copy or paste the allocations directly in the weekview. +- block-width is configurable in print-preview +- worktime is configurable in weekview +- Better webstart-support +- Users can change their email and their name +- If no reservation ( or resource) is selected, the weekview will + display all reservations ( or resources). + +Bugfixes: +- Resource-Details will be show in the weekview. +- The semester-editing-org.rapla.calendarview displays the correct weekdays. +- The sorting-order of resourcetypes will change on language-change. +- allocationDeleted throws no more ConcurrentModificationException +- Many many more. + + diff --git a/doc/ReleaseNotes0_72.txt b/doc/ReleaseNotes0_72.txt new file mode 100644 index 0000000..48c32c6 --- /dev/null +++ b/doc/ReleaseNotes0_72.txt @@ -0,0 +1,13 @@ +Rapla Version 0.72 has been released on 22.04.2002 + +Changes: +- New Postgres JDBC driver + +Bugfixes: +- !!If you use DBOperator and delete a reservation, you will not delete + the link for other reservations!! (This was a serious bug in 0.71) +- DB import and export now work from the start script. +- Dragging-Bug while creating a new appointment in the weekview. +- Now works with older mysql versions. +- You can use the '&' character for resource and reservation names with the XMLOperator. +- Copy and Paste works as expected. \ No newline at end of file diff --git a/doc/ReleaseNotes0_8.txt b/doc/ReleaseNotes0_8.txt new file mode 100644 index 0000000..8527299 --- /dev/null +++ b/doc/ReleaseNotes0_8.txt @@ -0,0 +1,13 @@ +Rapla Version 0.8 has been released on 29.08.2002 + +Changes: + +Bugfixes: + +- !!If you use DBOperator and delete a reservation, you will not delete + the link for other reservations!! (This was a serious bug in 0.71) +- DB import and export now work from the start script. +- Dragging-Bug while creating a new appointment in the weekview. +- Now works with older mysql versions. +- You can use the '&' character for resource and reservation names with the XMLOperator. +- Copy and Paste works as expected. \ No newline at end of file diff --git a/doc/ReleaseNotes0_81.txt b/doc/ReleaseNotes0_81.txt new file mode 100644 index 0000000..980a241 --- /dev/null +++ b/doc/ReleaseNotes0_81.txt @@ -0,0 +1,22 @@ +Rapla Version 0.81 has been released on 4.9.2002 + +Changes: +- Date will show next to day-of-week in weekview +- Blocks that allocate the same resources or persons are grouped in one column. +- SansSerif font in wizard-help and Reservation/Resource/Person -info for better + readability. +- Text HTMLViews selectable +- Adding a new resource will now update an open reservation-edit-window. + +Bugfixes: +- Period-edit org.rapla.calendarview-drop-down under windows. +- The selected objects are selected in the filter-dialog. +- Repeating-end is not decreased by one after editing. +- No org.rapla.calendarview popup on doubleclicking a type-node in the resource-tree +- HTMLViews have correct sizes +- The add and remove Buttons are enabled if the selected resource is in the first row +- Restrictions (a resource or person is restricted if its connected to + one or more appointments instead the whole reservation) are correctly + displayed in weekview and in the reservation-html-view. + + diff --git a/doc/ReleaseNotes0_9.txt b/doc/ReleaseNotes0_9.txt new file mode 100644 index 0000000..d900e0e --- /dev/null +++ b/doc/ReleaseNotes0_9.txt @@ -0,0 +1,31 @@ +Rapla Version 0.9 has been released on 22.11.2002 + +Changes: +- Filtering of resources, persons and reservations is possible in all + lists and in the weekview. +- Appointment editing has been rebuild. (Usability increased) +- PeriodWizard is now non modal. +- DropDown Symbols are visible on period-button and in allocation-table. + +Option-Usecase splitted: +- Period-list and reservationtype edit moved to reservation usecase. +- person and reservationtype edit moved to resource/person usecase. +- category-list has moved to a new usecase +- user-list has moved to a new usecase +- person and resource lists have been merged. + +Bugfixes: + +- Appointments which overlap midnight are correctly displayed in weekview +- Correct Redraw of weekview when saturday and sunday are displayed. +- NullPointerException in NumberField fixed +- DynamicTypes will be converted correctly +- "raplaserver.sh stop" works with secure-sockets +- User without admin priviliges can change their password +- PeriodPlugin works after restarting the applet +- No ArrayIndexOutOfBoundException when new period was created +- Workaround for problem with secure-connections in applet or webstart-mode under jdk 1.4.0 +- ... + +Internal: +new saxon.jar and fortress.jar diff --git a/doc/ReleaseNotes1.0.txt b/doc/ReleaseNotes1.0.txt new file mode 100644 index 0000000..c8e546b --- /dev/null +++ b/doc/ReleaseNotes1.0.txt @@ -0,0 +1,86 @@ +Big Changes since 0.12.4 + + +The calendar stays on top +-------------------------- + +The left bar is no more. It is replaced by a context-sensitive Menubar. +Every click in the left tree affects the displayed events in the right pane + +A click on the users shows reservations of the user +A click on the resource shows all reservations of the resource +A click on an event-type shows all reservations of an event-type + +You can combine them. Clicking on a user, an event-type and a resource to show only +the reservations of the selected event-type, that are reserved by the selected user and allocate +the selected resource. + +Sytem and User Configuration with menu +-------------------------------------- + +Configuration is possible through the menu. You can configure the +plugins and most of the Rapla System through the following menus: +option or admin/option. + +NEW Plugin API! +---------------- + +New powerfull plugin API. See the plugins in the source-distribution +and MyRapla module in CVS. Find an overview of all currently allowed extension points of the Rapla API at + +http://rapla.sourceforge.net/doc/javadocs/org/rapla/plugin/RaplaExtensionPoints.html + +A plugin HOWTO will soon be available in the wiki + +New Views +------------ +- new period-view (Swing and HTML) +- new table-view (replaces event view) + +SQL Mapping +----------- + +A real SQL mapping of the Rapla data + +Other new features +------------------ +- You can now store your view settings (view/save) +- French translation of the plugins (even the period wizard) +- Custom Event and Resource coloring +- New plugin "Copy Periods" to copy the allocations from one period to another +- Reservations from other users will be hidden (if the user is not in the group "can see reservations from others" +- read-only account (If the user can't allocate anything) + +Other Changes +---------------- + +- The HTML report is removed. It will soon be replaced by a new view. +- Stable API +- Jetty Upgrade +- Changed from JSP to Servlets, that better fits in the plugin concept of Rapla +- Edit allocation menu is obsolete. Resource admins can now use edit, but aren't allowed to change the appointments + +And lots of bugfixing + + +Changes since 1.0RC1 +-------------------- + +- New Icons from the eclipse project were introduced +- You can now change the order of the categories. +- Most fonts changed form bold to plain +- The Text "not visible" is displayed on events that are not visible. + Events are not visible, because they are filtered out, not selected or the user + can't see events from others. There is a tooltip help for this event blocks. + +Autoexport: +- When you export, you will see a list of all previous exports. +- The URL of the HTML export is displayed (works only in webstart mode). +- You can replace an existing export. + +Bugfixing of +1356132 Order of resources in left part of Weekcompact is wrong. +1237332 (De)Allocation of unauthorized resource +1356501 a new period only affects gui on restart +1357693 Switching between daily and weekly appointments +- some bugs regarding the period chooser and the period view \ No newline at end of file diff --git a/doc/ReleaseNotes1.0RC1.txt b/doc/ReleaseNotes1.0RC1.txt new file mode 100644 index 0000000..316d75f --- /dev/null +++ b/doc/ReleaseNotes1.0RC1.txt @@ -0,0 +1,65 @@ +Big Changes since 0.12.4 + + +The calendar stays on top +-------------------------- + +The left bar is no more. It is replaced by a context-sensitive Menubar. +Every click in the left tree affects the displayed events in the right pane + +A click on the users shows reservations of the user +A click on the resource shows all reservations of the resource +A click on an event-type shows all reservations of an event-type + +You can combine them. Clicking on a user, an event-type and a resource to show only +the reservations of the selected event-type, that are reserved by the selected user and allocate +the selected resource. + +Sytem and User Configuration with menu +-------------------------------------- + +Configuration is possible through the menu. You can configure the +plugins and most of the Rapla System through the following menus: +option or admin/option. + +NEW Plugin API! +---------------- + +New powerfull plugin API. See the plugins in the source-distribution +and MyRapla module in CVS. Find an overview of all currently allowed extension points of the Rapla API at + +http://rapla.sourceforge.net/doc/javadocs/org/rapla/plugin/RaplaExtensionPoints.html + +A plugin HOWTO will soon be available in the wiki + +New Views +------------ +- new period-view (Swing and HTML) +- new table-view (replaces event view) + +SQL Mapping +----------- + +A real SQL mapping of the Rapla data + +Other new features +------------------ +- You can now store your view settings (view/save) +- French translation of the plugins (even the period wizard) +- Custom Event and Resource coloring +- New plugin "Copy Periods" to copy the allocations from one period to another +- Reservations from other users will be hidden (if the user is not in the group "can see reservations from others" +- read-only account (If the user can't allocate anything) + +Other Changes +---------------- + +- The HTML report is removed. It will soon be replaced by a new view. +- Stable API +- Jetty Upgrade +- Changed from JSP to Servlets, that better fits in the plugin concept of Rapla +- Edit allocation menu is obsolete. Resource admins can now use edit, but aren't allowed to change the appointments + +And lots of bugfixing + + diff --git a/doc/ReleaseNotes1.0alpha1.txt b/doc/ReleaseNotes1.0alpha1.txt new file mode 100644 index 0000000..be6cef8 --- /dev/null +++ b/doc/ReleaseNotes1.0alpha1.txt @@ -0,0 +1,5 @@ +Bugfixes since 0.12.4: +* NullPointerException when trying to remove a resource that has reservations, that were not transfered to the client before the remove command. + + + diff --git a/doc/ReleaseNotes1.1.txt b/doc/ReleaseNotes1.1.txt new file mode 100644 index 0000000..37276a9 --- /dev/null +++ b/doc/ReleaseNotes1.1.txt @@ -0,0 +1,23 @@ +New features in Release 1.1 + +* New Icons +* Attribute fields in reservation-edit-window align +* An active filter is now indicated with an icon left to the tree folder +* Edit Dialogs are not modal any more. So you can have multiple edit dialogs +* You can copy from the edit dialogs to the clipboard even in webstart mode +* You can copy the url from the autoexport +* Print preview now shows the page borders, and how the page will be look when printed (will save a lot of paper) +* Better print support for TableView +* [ 1348082 ] Feedback which events belong together on cursor move +* Events that are filtered out are displayed transparently with their text if they reserve a selected resource +* It is now possible to select the resources root (Same as if all resources were selected) + +Changes + +org.rapla.components.print package renamed to org.rapla.components.iolayer +Save and load file is possible through the iolayer + +Bugfix + +[ 1410063 ] PB with rollover in html view with Mozilla browsers +[ 1392039 ] rapla1.0 webapp problem w/MYSQL \ No newline at end of file diff --git a/doc/ReleaseNotes1.2.1.txt b/doc/ReleaseNotes1.2.1.txt new file mode 100644 index 0000000..297ae49 --- /dev/null +++ b/doc/ReleaseNotes1.2.1.txt @@ -0,0 +1,66 @@ +New features in Release 1.2 +* Added new Mail Client that uses java mail api for sending +to install just copy the javamail libs to lib/server in the Source or WEB-INF/lib in the Binary Version +* Dutch Version (not complete yet) + +New features in Release 1.2beta2 + +* Czech version +* Performance improvements when dealing with many events +* resource sql table renamed to rapla_resource to remove conflicts with oracle (old name still works) +* You can now change the language in the options menu. Language change will be saved. +* Server starts with 512 mb max memory instead of 64 mb. +* Rapla starts with 128 mb max memory instead of 64 mb. +* Visual today indicator in calendar (today is highlighted) +* Added monthly repeatings +* Added yearly repeatings + +New features in Release 1.2beta1 + +* Spanish version +* Rapla runs completely over http. So you don't need to configure any port other than the servlet containers. +* You now can run multiple Rapla installations on one server by just creating more webapp-folders +* You can configure the column size of a text field +* GUI Pollishing. Replaced some icons. +* There is a new plugin called archive. But at the moment you can only autodelete old events +* The reservation-attribute panel in the event edit window resizes with the number of fields displayed + +Changes + +* Custom communication layer was replaced with http protocol and xml communication. + It is more robust and will causes less overhead on the server side. +* You can set a refresh interval for receiving the changes from other clients (Use a higher value if you have many concurrent access). +* Now we use piccolo as xml parser. Its a lot faster than aelfred +* Upgraded to new jetty version 5.11 +* There is no more webapp version. The webapp is now part of the binary distribution +* You need a new version of nt-service for this version + +Bugfix in 1.2.1 + +* Rapla 1.2 could not start when using the super-category as the reference category for an attribute-type +* [ 1556346 ] 100% system-usage on changing dates... (when using monthly events without ending) +* Under some circumstances Notifications were not triggered if you just move the appointment. + +Bugfix in 1.2 + +* Mozilla Weekview now shows the lines all time +* Fix for bug [ 1552105 ]. URL is not part of copy string in autoexport view. +* MailPlugin now works again +* Resizing of Attribute Panel now works for lager Textfields with more rows. +* You can now right click in the table view to create new reservations even when there is no event in the table + +Bugfix in 1.2beta2 + +* Ordering now works for categories when using database storage +* raplaserver import and raplaserver export now work again +* Fix for bug 1543370 +* Fix for NullPointerException in RaplaSQL + +Bugfix in 1.2beta1 + +Some bugs regarding the change of dynamic types +DB should be more fault tolerant +[ 1421294 ] Searching free appointments in "Weekly period wizard" +[ 1423818 ] repeating events not properly handeled with MySQL backend +[ 1423814 ] Problem with table view date selection +[ 1471848 ] LDAP plugin settings not saving/sticking diff --git a/doc/ReleaseNotes1.2.txt b/doc/ReleaseNotes1.2.txt new file mode 100644 index 0000000..6f98491 --- /dev/null +++ b/doc/ReleaseNotes1.2.txt @@ -0,0 +1,60 @@ +New features in Release 1.2 +* Added new Mail Client that uses java mail api for sending +to install just copy the javamail libs to lib/server in the Source or WEB-INF/lib in the Binary Version +* Dutch Version (not complete yet) + +New features in Release 1.2beta2 + +* Czech version +* Performance improvements when dealing with many events +* resource sql table renamed to rapla_resource to remove conflicts with oracle (old name still works) +* You can now change the language in the options menu. Language change will be saved. +* Server starts with 512 mb max memory instead of 64 mb. +* Rapla starts with 128 mb max memory instead of 64 mb. +* Visual today indicator in calendar (today is highlighted) +* Added monthly repeatings +* Added yearly repeatings + +New features in Release 1.2beta1 + +* Spanish version +* Rapla runs completely over http. So you don't need to configure any port other than the servlet containers. +* You now can run multiple Rapla installations on one server by just creating more webapp-folders +* You can configure the column size of a text field +* GUI Pollishing. Replaced some icons. +* There is a new plugin called archive. But at the moment you can only autodelete old events +* The reservation-attribute panel in the event edit window resizes with the number of fields displayed + +Changes + +* Custom communication layer was replaced with http protocol and xml communication. + It is more robust and will causes less overhead on the server side. +* You can set a refresh interval for receiving the changes from other clients (Use a higher value if you have many concurrent access). +* Now we use piccolo as xml parser. Its a lot faster than aelfred +* Upgraded to new jetty version 5.11 +* There is no more webapp version. The webapp is now part of the binary distribution +* You need a new version of nt-service for this version + +Bugfix in 1.2 + +* Mozilla Weekview now shows the lines all time +* Fix for bug [ 1552105 ]. URL is not part of copy string in autoexport view. +* MailPlugin now works again +* Resizing of Attribute Panel now works for lager Textfields with more rows. +* You can now right click in the table view to create new reservations even when there is no event in the table + +Bugfix in 1.2beta2 + +* Ordering now works for categories when using database storage +* raplaserver import and raplaserver export now work again +* Fix for bug 1543370 +* Fix for NullPointerException in RaplaSQL + +Bugfix in 1.2beta1 + +Some bugs regarding the change of dynamic types +DB should be more fault tolerant +[ 1421294 ] Searching free appointments in "Weekly period wizard" +[ 1423818 ] repeating events not properly handeled with MySQL backend +[ 1423814 ] Problem with table view date selection +[ 1471848 ] LDAP plugin settings not saving/sticking diff --git a/doc/ReleaseNotes1.2beta1.txt b/doc/ReleaseNotes1.2beta1.txt new file mode 100644 index 0000000..92f7c91 --- /dev/null +++ b/doc/ReleaseNotes1.2beta1.txt @@ -0,0 +1,27 @@ +New features in Release 1.2beta1 + +* Rapla runs completely over http. So you don't need to configure any port other than the servlet containers. +* You now can run multiple Rapla installations on one server by just creating more webapp-folders +* You can configure the column size of a text field +* GUI Pollishing. Replaced some icons. +* There is a new plugin called archive. But at the moment you can only autodelete old events +* The reservation-attribute panel in the event edit window resizes with the number of fields displayed + +Changes + +* Custom Communication layer was replaced with http protocol and xml communication. + It is more robust and will causes less overhead on the server side. +* You can set a refresh interval for receiving the changes from other clients (Use a higher value if you have many concurrent access). +* Now we use piccolo as xml parser. Its a lot faster than aelfred +* Upgraded to new jetty version 5.11 +* There is no more webapp version. The webapp is now part of the binary distribution +* You need a new version of nt-service for this version + +Bugfix + +Some bugs regarding the change of dynamic types +DB should be more fault tolerant +[ 1421294 ] Searching free appointments in "Weekly period wizard" +[ 1423818 ] repeating events not properly handeled with MySQL backend +[ 1423814 ] Problem with table view date selection +[ 1471848 ] LDAP plugin settings not saving/sticking diff --git a/doc/ReleaseNotes1.2beta2.txt b/doc/ReleaseNotes1.2beta2.txt new file mode 100644 index 0000000..572d568 --- /dev/null +++ b/doc/ReleaseNotes1.2beta2.txt @@ -0,0 +1,47 @@ +New features in Release 1.2beta2 + +* Czech version +* Performance improvements when dealing with many events +* resource sql table renamed to rapla_resource to remove conflicts with oracle (old name still works) +* You can now change the language in the options menu. Language change will be saved. +* Server starts with 512 mb max memory instead of 64 mb. +* Rapla starts with 128 mb max memory instead of 64 mb. +* Visual today indicator in calendar (today is highlighted) +* Added monthly repeatings +* Added yearly repeatings + +New features in Release 1.2beta1 + +* Spanish version +* Rapla runs completely over http. So you don't need to configure any port other than the servlet containers. +* You now can run multiple Rapla installations on one server by just creating more webapp-folders +* You can configure the column size of a text field +* GUI Pollishing. Replaced some icons. +* There is a new plugin called archive. But at the moment you can only autodelete old events +* The reservation-attribute panel in the event edit window resizes with the number of fields displayed + +Changes + +* Custom communication layer was replaced with http protocol and xml communication. + It is more robust and will causes less overhead on the server side. +* You can set a refresh interval for receiving the changes from other clients (Use a higher value if you have many concurrent access). +* Now we use piccolo as xml parser. Its a lot faster than aelfred +* Upgraded to new jetty version 5.11 +* There is no more webapp version. The webapp is now part of the binary distribution +* You need a new version of nt-service for this version + +Bugfix since 1.2beta1 + +* Ordering now works for categories when using database storage +* raplaserver import and raplaserver export now work again +* Fix for bug 1543370 +* Fix for NullPointerException in RaplaSQL + +Bugfix + +Some bugs regarding the change of dynamic types +DB should be more fault tolerant +[ 1421294 ] Searching free appointments in "Weekly period wizard" +[ 1423818 ] repeating events not properly handeled with MySQL backend +[ 1423814 ] Problem with table view date selection +[ 1471848 ] LDAP plugin settings not saving/sticking diff --git a/doc/ReleaseNotes1.3.1.txt b/doc/ReleaseNotes1.3.1.txt new file mode 100644 index 0000000..6773c0d --- /dev/null +++ b/doc/ReleaseNotes1.3.1.txt @@ -0,0 +1,37 @@ +New features in Release 1.2.2 + +* Added paste as functionality +* Added Data Source (use datasource tag instead of driver, username and password to enable datasource) +* New plugable Main menu when you go on the first site of the web version +* You can now enable a list of all exported calendars in the main menu of the web version +* Show Navigation bar is now a parameter when exporting calendars to html +* You can now start rapla under windows with rapla.exe +* New service wrapper for starting rapla as a server under unix, osx and windows (load rapla_as_service.zip) +* There is a raplabootstrap.jar for starting rapla with a double click on most systems + +Changes + +* New icon for "new weekly event" +* In source version data.xml and config files are moved to webapp folder +* New jetty is used +* If jndi doesnt work. Authe + +Bugfixes + +* You can now export filename with characters that need to be url encoded +* Fixed Bug with special characters during load under tomcat or jetty +* It is now possible to have working times with a higher start hour than end hour e.g. 20:00 - 04:00 +* [ 1593336 ] even though restricted, user can create conflict by dragging +* Workaround for bug in 1.6 that doesnt render the print dialog correctly when displayed for the first time +* [ 1571870 ] Display Japanese Characters +* [ 1555022 ] TimeField can't instantiate for "CH" locale +* Notification mail handles removes correctly +* You can use Japanese Characters in html +* If an authentication store (e.g. jndi) doesnt work Rapla will still remain usable with the original logins. But not for the jndi users + +Bugfixes since 1.3 + +* java.util.ConcurrentModificationException no longer comes up after one hour of usage +* You can now use https with jetty and the configuration file reads +* Fixed Bug with utf-8 characters when refreshing in multiple clients +* SQL: Old resource table will not be used if new resource table exists. \ No newline at end of file diff --git a/doc/ReleaseNotes1.3.2.txt b/doc/ReleaseNotes1.3.2.txt new file mode 100644 index 0000000..ffc00f6 --- /dev/null +++ b/doc/ReleaseNotes1.3.2.txt @@ -0,0 +1,48 @@ +Changes in 1.3 + +* Added paste as functionality +* Added Data Source (use datasource tag instead of driver, username and password to enable datasource) +* New plugable Main menu when you go on the first site of the web version +* You can now enable a list of all exported calendars in the main menu of the web version +* Show Navigation bar is now a parameter when exporting calendars to html +* You can now start rapla under windows with rapla.exe +* New service wrapper for starting rapla as a server under unix, osx and windows (load rapla_as_service.zip) +* There is a raplabootstrap.jar for starting rapla with a double click on most systems + +Bugfixes in 1.3 + +* You can now export filename with characters that need to be url encoded +* Fixed Bug with special characters during load under tomcat or jetty +* It is now possible to have working times with a higher start hour than end hour e.g. 20:00 - 04:00 +* [ 1593336 ] even though restricted, user can create conflict by dragging +* Workaround for bug in 1.6 that doesnt render the print dialog correctly when displayed for the first time +* [ 1571870 ] Display Japanese Characters +* [ 1555022 ] TimeField can't instantiate for "CH" locale +* Notification mail handles removes correctly +* You can use Japanese Characters in html +* If an authentication store (e.g. jndi) doesnt work Rapla will still remain usable with the original logins. But not for the jndi users + +Changes and new Features in 1.3.2 +#52 Updated Jetty to 6.1.1 +#17 Make the new x (reservation, resource, person, user, period, ...) entries in the popup menu context sensitive +#55 Scrollable Calendar in table view popup +#57 Create a test functionality for LDAP Plugin (You can now test if ldap authentification works without enabling it and restarting rapla) + +Bugfixes in 1.3.2 + +#51 exception day change after restart server +#3 Active Directory (LDAP) authentication [SF Bug 1677143] +#5 suppression of category does not update resources using it [ 1731273 ] +#6 Initial date in reservation Exception days calendar [SF1701420] +#7 Resources cannot be assigned to discrete appointments [1690844] +#18 java.util.ConcurrentModificationException comes up after one hour of usage +#19 Problem reading configuration file with jetty in https mode +#20 Special utf-8 characters are not displayed correctly when refreshing in multiple clients +#21 If you are using a SQL with old and new resource table name schema, the old one is still used +#53 Period View is not possible when start date is after end date of selected period kohlhaas +#56 Users can't see reservations made by other, although they are in the group "can see events from others" + + +For a detailed Explanation of the fixed Bugs see + +http://www.rapla.org/query?milestone=1.3.2 diff --git a/doc/ReleaseNotes1.3.txt b/doc/ReleaseNotes1.3.txt new file mode 100644 index 0000000..a143505 --- /dev/null +++ b/doc/ReleaseNotes1.3.txt @@ -0,0 +1,30 @@ +New features in Release 1.2.2 + +* Added paste as functionality +* Added Data Source (use datasource tag instead of driver, username and password to enable datasource) +* New plugable Main menu when you go on the first site of the web version +* You can now enable a list of all exported calendars in the main menu of the web version +* Show Navigation bar is now a parameter when exporting calendars to html +* You can now start rapla under windows with rapla.exe +* New service wrapper for starting rapla as a server under unix, osx and windows (load rapla_as_service.zip) +* There is a raplabootstrap.jar for starting rapla with a double click on most systems + +Changes + +* New icon for "new weekly event" +* In source version data.xml and config files are moved to webapp folder +* New jetty is used +* If jndi doesnt work. Authe + +Bugfixes + +* You can now export filename with characters that need to be url encoded +* Fixed Bug with special characters during load under tomcat or jetty +* It is now possible to have working times with a higher start hour than end hour e.g. 20:00 - 04:00 +* [ 1593336 ] even though restricted, user can create conflict by dragging +* Workaround for bug in 1.6 that doesnt render the print dialog correctly when displayed for the first time +* [ 1571870 ] Display Japanese Characters +* [ 1555022 ] TimeField can't instantiate for "CH" locale +* Notification mail handles removes correctly +* You can use Japanese Characters in html +* If an authentication store (e.g. jndi) doesnt work Rapla will still remain usable with the original logins. But not for the jndi users diff --git a/doc/ReleaseNotes1.4.0.txt b/doc/ReleaseNotes1.4.0.txt new file mode 100644 index 0000000..8fe6673 --- /dev/null +++ b/doc/ReleaseNotes1.4.0.txt @@ -0,0 +1,18 @@ +Changes in 1.4.0 + +- ICal Export Plugin integrated +- New occupation Plugin for planning dayly occupation (e.g. beds) +- Permission can be given to edit reservations to other users (add an category/boolean attribute with the key permission to the event type) +- Flag for whole-day-events +- Default attribute values can be set. +- You can store/and load many calendar-settings. Fast access via a drop down menu. +- Performance improvements with many reservations +- Tooltips and Conflicts can be hidden +- Split repeating into single events button +- Updated the README-Server and INSTALL.txt +GUI changes: +- New Icons and colors and an improved Webcalendar +- New Screen Layout. Splitted the big Tree into Resources, Admin and Conflict sections. +- The Filter-Dialog is replaced with a drop-down popup and allows an instant search feedback (You can use that for finding events by name) +- Replaced the old html/ical export with a new fast ical/html publishing, directly linked to the recallable calendar list + \ No newline at end of file diff --git a/doc/ReleaseNotes1.4.trunk.txt b/doc/ReleaseNotes1.4.trunk.txt new file mode 100644 index 0000000..ef85dc5 --- /dev/null +++ b/doc/ReleaseNotes1.4.trunk.txt @@ -0,0 +1,25 @@ +Changes in 1.4.Trunk + +- User Import Plugin integrated +- A Login window close problem has been resolved. +- Rapla SQL database support incorrectly loaded the repeating.ntimes instead of repeating.until. + +GUI changes: +- Phonenumber added to User profile. ( LDAP plugin to modify) + Migration: + How to add the phonenumber to the Rapla SQL database? + Use MySql Workbench 5.2 or + MySql Command mode: + mysql -hlocalhost -uroot -p + Enter password: + use rapla_db; + mysql> ALTER TABLE `rapla_db`.`rapla_user` ADD COLUMN `PHONE` VARCHAR(30) NULL AFTER `EMAIL` ; + quit + For other SQL database the same process should be executed with their repective database management tools. + +- Reset to null button added to Category selection panel to Null for Dynamic types ( Resource Type) or resource instances. +- Admin tab is the default tab for administrators +- None Visible fields in a large scrollable resource edit panel will become visible when tab to the next field +- After a password failure the password will be reset to null for security reasons +- The Client OS userid will be set as default set for Rapla single user mode i.e. for rapala.exe or Rapla.bat + diff --git a/doc/drafts-gereon-2002.zip b/doc/drafts-gereon-2002.zip new file mode 100644 index 0000000000000000000000000000000000000000..5e1136ed82a6b21752e86d2bd73d2d82220b5d92 GIT binary patch literal 13727 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" Schaltern +knnen Sie eine Woche vor und zurck blttern. Zwischen den +Bltter-Knpfen wird das ausgewhlte Datum, das Semester und die +Semesterwoche angezeit. Hier knnen Sie auch direkt zur ersten Woche +des Semesters springen, in welchem Sie einen Raum belegen mchten. + +Nachdem Sie das richtige Semester, die richtige Woche ausgewhlt +haben, markieren Sie in der Kalendaransicht einen freien Termin, indem +Sie mit Maus die entsprechenden freien Spalten selektieren. Ein +Rechtsklick in den markierten Bereich ffnet ein Kontextmen aus dem +Sie den Menpunkt "neue Versanstaltung" auswhlen knnen. + +Es ffnet sich ein neues Fenster "Neue Veranstaltung". Hier werden die +Informationen zu der Veranstaltung eintragen. Whlen Sie als erstes +die Veranstaltungsart z.B. "Lehrveranstaltung Informatik", danach die +Veranstaltungskategorie, z.B. "Vorlesung Grundstudium", den Titel der +Veranstaltung und den Studiengang/Institut, z.B. "Informatik III" aus. + +Wenn der Termin wchentlich whrend des ganzen Semster stattfinden +soll, klicken Sie in der Terminansicht auf wchentlich, die Start und +Endzeiten werden automatisch auf das jeweilige Semester angepasst. +Wenn die Veranstaltung an mehrere Tagen stattfinden soll z.B. montags +und dienstags, dann klicken Sie links auf den Schalter "Neuer Termin", +um den letzten Termin zu kopieren. Nun knnen Sie im rechten +Terminbereich den Wochentag des 2. Termins von Montag auf Dienstag +verschieben. + +Wenn Sie alle Termine eingetragen haben, drcken Sie "Speichern" und +danach "Besttigen" um diesen Termin in das System einzutragen. Fertig. diff --git a/doc/todo b/doc/todo new file mode 100644 index 0000000..d9c1317 --- /dev/null +++ b/doc/todo @@ -0,0 +1,115 @@ +Doku: +- Indexseite fr alle exportierten Seiten. +- Rapla Plugin Development +- SSL HOWTO +- Anleitung zum BugReporting mit StackTrace +25% Doku der Funktionen +- Eine Note schreiben, dass man die default.css jetzt anpassen kann + +Ideen: +- Reservierungs-Filter soll dieselbe mglichkeit wie Permissionfilter haben. +- Zusaetzliche Moeglichkeit bei String-Filter: Enthaelt nicht +- Moeglichkeit eines Requests. Zuordung ist solange request, bis sie + von einem Admin abgehakt wurden. + Bei einer Veraenderung der Reservierung muessen die Zuordnungen erneut abgehakt werden. +- Zustzlich auch exclusions zu restrictions fr einen einfacheren Austausch von einer Person oder Ressource an einem Tag. +- Ressource-Admin darf Reservierungen bearbeiten, wenn er Admin fuer + alle Personen und Ressourcen ist. +- Persnliche Mitteilung in Konfliktanzeige, als Extension-Point von ReservationController +- Kommentare zu Ausnahmen +- Category auch Classifiable machen (Vermengung von Schema und Daten) +- Admin Flag bei Attributen, dass diese nur vom Admin bearbeitbar sind, damit kann man +zusammen mit dem event-coloring temptative bookings moeglich machen. Allerdings muss +mann dann die events dann read-only machen. Eigentlich brauch man noch ein Plugin dafuer. + +Todo: +- Sichtbarkeiten klaeren +- BlockRendererInterface +- Schriftgroessen austauschbar machen +- SwingTable nach HTML +- Fragen: Knnen user mit admin-access fr eine Ressource, diese Ressource beliebigen Veranstaltungen zuordnen? Ja. +- FAQ-Entry. Was ist wenn der Server nicht funktioniert (in die Logs Dateien schauen) +- Icon im Weekview fr Einzeltermine die Teil eines greren Termins sind +- Label.for benutzen +- Toolkit.copy() paste() und cut() berschreiben, damit Webstart funktioniert. +- Wenn man eine Ressource hinzufgt, erst einmal nur die freien Termine belegen (Nachfrage). +- Vor dem Speichern noch mal ueberpruefen, da ja ein falscher Client das Zeichen uebermittelt haben kann. +- MultiLanguageName auch als Attribut und fuer Reservierungsnamen +- Reihenfolge von DynamicType veraenderbar +- WeeklyWizard muss in der Kalendaransicht auch Navigationsknpfe fr nchste Woche und + vorherige Woche im Zeitraum haben. So kann auch in Zeitrumen die nicht Montags beginnen + korrekt geplant werden. Gut wre, wenn Veranstaltungen die erst in der 2. Woche (oder spter) + beginnen schon in der ersten Woche in einer anderen Farbe angezeigt sind (allerdings nur wenn + an diesem Termin nicht schon eine andere Veranstaltung stattfindet). +- Feiertage (oder Dies-Academicus) im RaplaCalendar anzeigen +50% Ausnahmen und Ferien beruecksichtigen +50% evtl. Dialoge auch mit Tastatur bedienbar machen. (Focus Traversal Policy) + +(Nicht) Trigger auch als Vorbedingungen mglich +(Nicht) StorageOperator,QueryModule, ... als zustzliche services in service.list eintragen. +(Nicht) Classification soll bei Attribut-Aenderung benachrichtigt werden. + +(Nicht) Entsprechende Warnungen bei Benutzung der Admin- Funktionalitaet im + Mulit-User Mode. +(Nicht) Seiteneffektfreiheit des Temp-Verzeichnises. Target site behlt noch das temp Verzeichnis + Site wird in Zukunft nicht mehr im Hauptrepsitory sein, sondern ein extra Projekt. +(Nicht) Seite braucht zuviel Platz in der Print-Ausgabe. Man kann die Seitenrnder + beim Postscript export nicht verndern +(Nicht) Kommandozeilenstart mit resourcename und anzuzeigendem Datum. + Es wird sowieso der Kalender mit den voreingestellten Ressourcen gestartet +(Nicht) Hierachien bei der Planung vorsehen. Profs zuerst dann die + Vorlesungen und dann erst die Uebrigen. + Kann ueber Rechte geregelt werden. +(Nicht) TimeZone Informationen bercksichtigen +(Nicht) Nur ein rapla.properties file, client soll sich die properties von Server holen. +(Nicht) Auswahl verschiedener Wochenansichten: + Alle Belegungen der Reservierung anzeigen. + Nur Ressourcen. + Nur Personen. + Nur ausgewaehlte Objekte. + Nur Titel. +(Nicht) Freie Termine fr ausgewhlte Ressourcen/Personen in der Bearbeitungsansicht suchen +(Nicht, zu spt) Hinweis, dass alle User Admin-Status erhalten, wenn von 0.5 oder 0.6 aufgeruestet wird. +(Nicht, zu spt) Hinweis, dass beim Import von alten Daten die Eigenschaft aus default.language bercksichtigt wird. +(Nicht) Option: Fuer jede Ressource eine Spalte. Frage: Was passiert, wenn mehrere + Ressourcen an einem Termin belegt wurden. +(Nicht) Datum in der Print-Ausgabe anzeigen. + +O.K. Einfuegen als neue Reservierung. +O.K. FAQ entry. Server als Dienst unter windows starten und herunterfahren. +O.K. HTTPS auch mit Webstart ? +O.K. Farben fr Resourcen einstellbar +O.K. Serialisierung-IDS in entities speichern. +O.K. PeriodChooser im Tableview soll nicht immer einen Zeitraum anzeigen +O.K. Serialisierung von einzelnen Entities als XML einfach nur bertragung + der XML Schnippsel +O.K. Rapla als Menapplikation +O.K. Typen/Kategorien/Benutzer/Semester unter Admin-Tasks zusammenfassen. +O.K. Gute Print ansicht fuer die Tabellenansicht +O.K. LoginDialog: "zuletzt ausgewaehlte Sprache" zur Sprachauswahl hinzufuegen und als standard-auswahl + setzen. +O.K. Zeitrahmenstrategie umsetzen + Nur PeriodChooser, die beiden dateChooser in der TableView und eine Period auswahl im Baum aendern den Zeitrahmen. + Alle anderen erweitern immer nur Zeitrahmen ( wenn er nicht auf die Ansicht passt), z.B. dateChooser und conflict select +O.K. Was passiert mit der Versionsnummer wenn der cache neu geladen wird? + Clients muessen neu starten +O.K. Versionsberprfung bei jeder client Server Verbindung +O.K. Entities readonly flag +O.K. Reservierungen werden nur bei Bedarf gelesen +O.K. Bearbeitungsansicht fr Permsission, Kategorien und Dynamische Typen + vereinheitlicht. +O.K. Passwrter verschlsseln +O.K. Der Reservation-Report kann als eine andere Wochenansicht gefasst werden. +O.K. Context Menue plugable machen + +O.K. Verschiedene User fuer verschiedene Export-Ansichten. In den Reservierungen + werden nur die fuer den User sichtbaren Ressourcen und Personen angezeigt. + Eine Reservierung wird nicht angezeigt, wenn sie keine sichtbaren Ressourcen + enthaelt. Wenn eine Export-Ansicht zu viele Informationen enthaelt, dann + sollte sie von einem User mit weniger Lese-Rechten angelegt werden (z.B. keine Laptops). + +Bugfix: + +- Webstart Printing Problem +(Nicht) Applikation beendet nicht unter Linux wenn PrinterJob.pageDialog oder PringerJob.print Dialog aufgerufen wird (Problem tritt nur im build-script auf) + diff --git a/eclipse-build/META-INF/rapla-plugin.list b/eclipse-build/META-INF/rapla-plugin.list new file mode 100644 index 0000000..0250fb2 --- /dev/null +++ b/eclipse-build/META-INF/rapla-plugin.list @@ -0,0 +1,16 @@ +org.rapla.plugin.weekview.WeekViewPlugin +org.rapla.plugin.tableview.TableViewPlugin +org.rapla.plugin.periodwizard.PeriodWizardPlugin +org.rapla.plugin.periodview.PeriodViewPlugin +org.rapla.plugin.periodcopy.PeriodCopyPlugin +org.rapla.plugin.occupationview.OccupationPlugin +org.rapla.plugin.notification.NotificationPlugin +org.rapla.plugin.monthview.MonthViewPlugin +org.rapla.plugin.mail.MailPlugin +org.rapla.plugin.jndi.JNDIPlugin +org.rapla.plugin.importusers.ImportUsersPlugin +org.rapla.plugin.export2ical.Export2iCalPlugin +org.rapla.plugin.compactweekview.CompactWeekViewPlugin +org.rapla.plugin.autoexport.AutoExportPlugin +org.rapla.plugin.archiver.ArchiverPlugin +org.rapla.plugin.appointmentmarker.AppointmentMarkerPlugin diff --git a/eclipse-build/org/rapla/AppointmentFormaterImpl.class b/eclipse-build/org/rapla/AppointmentFormaterImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6ca794fb63cd191443c7b54c2dbd05191b2c3c7f GIT binary patch literal 9047 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

CQ$w!iaEs%diqUIyvD>u^e6K zrk@5}fGDowl-FV^cJs+Yd(#nPf;@=R{|pqIqC2kwp`c7btAcfu9u(3di9I@f1-(oj zlP((0Bz;C;&tUp44y4MCAw4Rk)gptw0%UNl%=rG6n!t^Lw`K5lri(BzUDXr!$l#p< zb?%`1!~;;=N8olH!|m1Xr_j3H6?D65TLqom=|-I==*jI8^tfv4ywyQ(*8AOcN_9|i zyk_uz+VoW)$NdER!R)UL9&(|sFz5>wW^lLwL0<+RmJkO%VnfUZ`pe*Bj9a$J_~q|U z7T^db)%nSw$9OyHf7*F?lqp^#7K_D0l;|N1fCU7=Vjeco+eWbj zE#e|<5-a$7HHjvxs8fT#jaJ$4=@(ggMd`9d_{)ui-v) z;4qOnUtR ze^^I=B7!FZswS4ZPZq*Mjb#rysAomU@q1^>Mtky*lVVDhlkxIzaXdPfe+pIebhM zN+F*jCR4>rz5SwOikRwXdB2!;z$;3sE2QRa1Hk22JFL4e7Y6aGEw_T^6PWb ze{VMZ9$u)Fv%CKbo%nhvBhaWW}XMNv^f zabI!A4HY-g(^@%t{OlLM=qLYx{szwhpF0Un+NPYIPVRm0eV=!^&->o{`?a5c1+WQM z6nF%dSav*QYsrKb+Lw;&do)MeYb5kuJ>@9y2`tX7cgtOJA)=*pf#RKpX*jzCs_NU1 zYNJ{xp_%bek7FBVJRIy3@I|bc9)K4mDvD4nP}XjkdS`lMP`7)v!2~fX+O4RT=+kUN z&a*Iiu2r7MBf6Hz_s7?zn*uux!S4tmHY z&T-2=7INd8+NfZWKxGbmY9RoDTU1nIi9ktQclK&gEk;W#>VtV654qA%Bw^@gc1zfg zWdcRR)`)KVv7EzLdT1yWKpj>pSRt?=XDyRP6|1mXpwzJ{4+D z?i45|B_atel`@8msGBi?jdP@Bj2t$i&R9|>QSwztmH7%HJg}LR*qt^KG0C4+@f3^|3N#B7mKyCUI?ySr#>&u6U?ClzX_?vD zk8TC`3N#mD%ACQd=s_>xQ@YcqCDJUFbp>dcXRmAUs2+9LLrTzx`xG3UUK(R5M;}qq zk3%ePD@{gJWt0sow4dF_VHCPH!W z4JxBD|6M}@Yx7UwM!xfoAlt_M7-jPa4e>^hOgSOB#TL|@ubtgGn=m&xR*FY(Qo*AF zb-4%%N2}s7JkG==EbCZ0Im68YhO(Y3c!K>m2Yw?xGtyFuQ+P_nX_WIIVn!-znI?%Q z#m}gC7H62DtZdF!$;+g?yS1mayRW6Ut*i4$r0YN@$t~LGwJs}>G zxg33_;&Zvi`&_g4SjWu(s_=!1FQu@|ty0&)UR#T@MtzzcXZkA(c*aHfCSbz3FWWBM z_sZ0@&Kv0xY0+b)?WiuFK-@R;*|A>6gcbD6%O@20rQay#SK(|IJp2QS8yY9zzs!*b z0e%Cnbb-9rP|EqD%r2;y#~JryKFWx}F2@}nRJbw^Dj6(s#gEjK`2RMHV{ygOikflM zPGXH02g@tZ>|FW_8auqZF5-k-o#Y|j2nVyhQBiso74ocOui!w%z&P%g=uMLt z^gv36GLm7be+7x3@DMR7(&ISpf;{ZOZ#dQ2Jc%dSQKsU0+6$RFuba9~CIL)CIg?g} z#aO~;S1p#J0m~3U4Gv>DbV^J%xpO?2SGazjkERP)gG*S4ANc(Fi@X2k1^o}2-1K+D zFO!)~e--}3Sv<$&FTo#po+ut-pTrB4d8rx4i+Bk>TI?`Rsw z#mm%~#~_w5+)N6VyJx?F(#=f67RtABbsK}<&VYBiA=PEj@fCxXj#S}me)%?}bLY&j-#>l=xPvDeVhm|dHcZJ|4mT^@cC!l_ z5)9LwtmW9k4a}FSr4+_x+Yf{*PyBN&Ftp2eLim$q6*$%LX1 z*3QWx3PxK($?<$qrz3M)`DzLy7}GGyFmRT#fpJ`>Y&epV=LRH0X`Jk0|3UIyvG2(p z^R%I;;|i{6xXQ4o0C|gBO=0qn-0@tqv%&g{*xC9jupI-F$S`Pi+iwv|hT&X!n>L#c zcN^x5+P1KQV!o;q>nQ^_)Od71;4%oWMWt^VxP{vcsfGy3UZbHn&*t(W>wl4P!alRz zUQ8m-FuEqCCo@un=(gL)w1?M+Y0PSvVaWea-Wfy#b1)ftgo0!!bW2(fB!L&ZL~b;t zx36wA(z#%eN0SUmZdt-7dug~!F6vBW?Z6VP!1i34Tf~=vZ85~e0S&MV`m~eG(7zsV zYp23nk#YLl`c`Y643sHIRmA!x= z`jTo~icmfis={5K_=JVRG4x{$pI|~oUvd2q*-AUi4&`RPqY#H$o?!lvj%-IqgfxI* zjA4R_?UN%`!~yqkpU}q1eh)%@ON5g` zVpGH7NUWDi%LLe#uNsx8U_mr@Rs{qS6(JKzl zQELxvYqg$LZ0m`VL)6x4y|vm_TdTFT)wcGsm$mh3fA7s~b`uspZN7Z_X5RbX_nW6a zy8j^nhl({CJObrbsy~=Al5r#0VZ;&|iUp>gY-}}xaU;pi)<_zW&1R4)#;ruKFJ%mv+pN@9H4L<1Fe^4>avZLok_MO zw#HIcVt_Idwp;;Faho=jtmfsRiNCk0Me+1edi+j)|2os~|TgGR?xlnP7(14@M}0sV1BNU>?KcpSb}PawOmI9 zrcp*2Zw&XmT#+@1$>DcpOPF?W!}@RwwG!~P4MxnQ3T6!}Sd((aXY54sSgB)`G)8&a zwB2m&U~0*u)jHbHE}-*>M(m6AlRB%%1a`GOK8ks?ju4I!m_*BEjn-IG`w2`WS%!6V zppz<*Aj(ORlNr6Ht>jm=wuLUG9Wm)<(4F0M!%_A=)Y}%an42RAqyX9?W!1 z61J=@Mk3m7nsE)s2~DZVaL%OsfS*T9}KH^;y!Nx@dtKf2fv zVi8lvW|@!0>(_?c%5XBM`4)jd4yiB$9Ro7abvCR%jAUfny&Lzrq**z~VXEt>ii8Mnb*5|`^Tp^wF1%Vm)6kRWeSb-$Wmvnp? zS5o9Cv9_9y2!2*wCknFEX{QVD6&+v2*Vx{Z8OpgVpQj4o1_t1IBO0^D;oU^HwQe>eTUJ?v6A->B2RHY~rE#m8 zzUhFFih__n~I!Cbs^mI%fM7!K*6$tX&u&Bhqv(m|W3 zn+9TuOuDIG+WdChso@TR*#&V!iiD24aJS=d$&6E6z9GjYVKy2Sq6B7m?PTRu5=X3f z+@L6~$oB~x^07ru#vO^h7?K8v*>N+v%1SW?lwFEf1^^iyqcS?~m+2j9pBNFG_}r0- z88LHj`9LUH|D3p*G9jqw5B9UjmJTE7juXY^pzQMB$DY-FlYqS}Yw;`bVUCs30UK39)944bKh5tpvvP||H#@wAS&@CTY8X{6HT zI)nEV2F}8QJRG(edXty9B-`RM_>+!5<1ciLC5z8=2O?$#*YTFdsVHR{11wU1#osmj zEjvn$Ki2UNIqqsni4kX(zr#l1Tqer!F8-t8-wa4qRI{9QyodM6lf`*Lv&_a(o`Kvg zFFuqFNa^jxe+5cZ%l8VwF|9YlfweImNyU;3^GZ>qi(*kic=MEu5vM&02J7*(w$OCp z6})>+aY(mw{O`8Zw70lG0m+jq>o{jCJ6$ngMVXE!94?*&Hvui(woyUpxX0qhm~ zv6Au4ZJbIC=h?ZDN~tPzF-=NUk;Te7oRWFP{*0wIW^|dDDJnHFOQ3dN868(wRrkiK zi`mj$ocsGMFHZA{xorOAVkDEneF)_h0h%+Wu3A#F1v-90&G4FhIZ($BrJB_O(^{=e zJesJs14`L|8akw$wYsPi^>mw=N?E-5*6rK6-J4U^HhK5qh{E_2jk;)($yn0I8oRlK zUncmcJ?|5Tip82(G_INu*EFKKSRxK1LOO1moU@8+j;Za@#IkGou>qjwv599Ar5tt-64c#v`8K@ ztsg?GTHjBvgGydj+5 z(eOAbc4PZS|7Ar}^%G_Yuxo4?s~nu-srA3yX!6P zy2Jmi5q!s?agYDrvFBY4MgHL-jK~wIYmthjc77`W64cc~8Isf>g?YU197vrSsnrr{ zbOd#3!x?ncnY74RI0Wn`QPA+*N(fd{v0^s_%hDU+x)Ho7 z6J_#F{Bb814B_p28vOqp#lK|8RCYG_Kgd2e7dJkRQvXMtjTM5I0ngRgzkXJ+-#a2o zi-&}-en{v$@D>lt)!_^tR*0!1!e26W`gEiJBXzi7A|?yinhG&}RLt#8l>$6K zQJIs+V?5-kgq)WXraT8Ye+N$F;Q<8?7w*7{F@<+vQFDny_MllMqoSq=^^d_<@1zI8 zhD5_O5gZYR>_AC#X|YNY4_ZW-C>KjbkWG1+kj+GPjpyh%;0_ktJK3D>V&31)52*LB z@ZO7R+=s4{~5f(^))<;H!0QIOt5$HJpRq~ zeY_w%yndA9MKKjGiMhO4EMR!n;$;!Ut6~{m6U}&C9Emqn_#G)LwOAoq#NpJfP<^;+<_kki~&v=AJqC+;i{zdw%*0U{J3JaS&vJLOHdoJd&=wN{`ThyY5FK`J}5k)e~ zM?vgv={-$?`zyIlBYCWBC;sbSY+5Ib9O)=dGNlJ6(p)BN()*!#-rZPanar@tlPdH6 z0IJvR!1#|#ylZe7o#fj$jxFMLHtykd9`Nxt=S*8Hf3ewnnBmyt9E*O!ET4qWXpB|% z`Lrt4&KcB5Kt8floqM2`p~Ct;#KR)tRs63{Vk-n zNIdWX{V2pt5-AAT(rR|j&YV4SytjXT{RYs%3l}wk`7A$+ay3X*w5JmDelSS2ZFXGL z1%eCpO+~3PXVI75h3;DyQv%@xJt&P)y;KWK+4H1mz9PPE72!5jyh%)A-wG_Xs!KMH z1?oFltUU2?F(T;U8Gkt#nEkc!_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/MainApplet$3.class b/eclipse-build/org/rapla/MainApplet$3.class new file mode 100644 index 0000000000000000000000000000000000000000..9e5b2a0fa925530a3640d6583f43116f7a8a1c5a GIT binary patch literal 1716 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 U_?6E(dezCNysm~1_O81A2cFWR0RR91 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/MainServlet$1$1.class b/eclipse-build/org/rapla/MainServlet$1$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0f9d06c666335e77092c44a496c3351be1e10d01 GIT binary patch literal 1095 zcmaJ>TW=CU6#fRVOX<>56l$+xMdeZp)LRwp3&F$$e2}IOzD<`2tZsM6>{5I&(Rhjf z!bhK*C^kO$1N>3OGn5Js;BIzj<~z6VoH;YU|NQ&~UB4lmTX?KXru zc7&fUrAr1v46&E|m=_%GwhH@gC3urz#&6qRxmD5nwa*V7!4R)Wi#rEg*?K($Lz)!B>a<|# z5|Ik3t{XuDO9qk*OHdFdj<&VO>49Izb5DiyEc%TC93Td9<;t56ZF z&O5{XjWlFeS>g#%qq>fD>b7=GZBlhDM|zZLUHEO; zG_i{Zr0KQ0epB|`iahF2Uz2et^FsHP`P6lVsyN*9ghyFX)#+5QSWLGe%>wip2opX_ zvt3$iB$CU2r{52lCj*@YjSVD>?A{N98^q(kxC`f=2!5Zn1PBE!`>prr*Ppl`;&Pva?hNup+#Ybxl6LG&NJ0!-t4kRzBDCShG7gEC#RD;-4*cL82jD66>fPp^+Ap5P-5dnhtwd=Wh6V(L0F_Lc@i zYESwB_W}mh6Y+^1Q;%XR0+5|p3^4MM%v?X<=F1+R#hpoW(-eL>%J5oW{VsmBd7_>u&?oY?&zAt=~Y3>TGB$%$t z@zcdk(8?f7-b-}4k2QLMY_0wUTJ0+?ee~NQX#uL_AU~ bJENcx{=16<+7oEfw?!*Y@iJXLrD*#NU{%~w literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/MainServlet.class b/eclipse-build/org/rapla/MainServlet.class new file mode 100644 index 0000000000000000000000000000000000000000..3e5d9fd72b5d56a56fc359e69e9045cfd1bbc2fa GIT binary patch literal 11299 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 TdM0=`6I>kyH!{JEMBLsV1pv`? literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/MyResources.class b/eclipse-build/org/rapla/MyResources.class new file mode 100644 index 0000000000000000000000000000000000000000..dd5c6756be53f162f83bbe881fde47c10e0f954e GIT binary patch literal 898 zcmZ`%?{Csj6g>}0Tc8YN8{piOIaFYVs$Vo?@qTLxG`m{Tv-d2I#oKP>_9gK6BUhPq>a{hP7ARb^ZF; zqw|M#?oIqzeMSmG?!MpDu}bpJ8qVWq-bnU*bZQ0EaN}G@m7zw;JMoDJLjPP}m<7X4 z0~x3c#h&BwH`9|558hcLA-ml3ZOa{4fg`??q`E70=8(p11MAR9YxKb(YpT7429rDa zF^~4HEUYwJi%raiJbEkpX4q)PHp`jJ`;F((Z4E^A`v$hqU{GVJWYGT^47t7>_e)0z zEB!P7j+g>A$%r)F74k~BK|6&8q0!5brLT{)7f)BcL~fYQT*4Tp%S-*CLV;qED2YUw z5}72iA`+E;|2t}5iJrn5#R`=G3aDZUO%(Bz_B+VomPCjq$kwE=Nh@6nWZDW8tH7*}>^RisbRj# + + + + + Hello {0}, enjoy yourself! + + diff --git a/eclipse-build/org/rapla/PermissionTest.class b/eclipse-build/org/rapla/PermissionTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5e2d1657fd027d6459f55cd368170e39e772e2f6 GIT binary patch literal 7991 zcmb_h3w&Hvng4$?lev@0p)He^GJVmONAns&gFs23v`tG}NK;7D);2=Dow-SdPG*Lg zJ827u)n!q^7Xpfkx?;7m6{QGmho_>fYtcn190BkAmwX3|V?`dOX{ zgHBs}cP4FRZFd02M{TZE9Uji)l4geUVm&vQqh@=_PG{PCoHh;(UzX0M?d5`5O>TF_ z%nr40vJ2_#P*?L7L8v>IvZ4rLhJwOrg6Tc!tkqi@*=ZH}&7H1bEp3ZgNbC1XW5^y( z7X@=X%8qvv7Y}94k(y%Ol?8Q0%if$91e>%L(KUOLR^FzEiw5Qj8XZ%d8Dl+K$@vPi zab^_slEOkP;>;n-?#^XxYmY5Br>WVa&tQSe@6Hu=wfE^TRz`IhI9o8gwt(x5Ri$($ zWfkgiE|wTLPq1L>uqia*44T-tv1d&bEod{)Dwr`*tU?0k3ye`SQ?fP=3eNM!VdKsl ztfbx5JUKK`EXIromI_X5FWR|+Ibqu$K2`}*QM2cn?e)~dgbdCcHr$yQ9^k$DPnCQSIQT= zP1_pE6{zA_<4{c^NZVLK1{R$V#QT>ar$J9*oUcqo?jA+-m-v*k^zk zo$J$IT}>}GtdQ0UH)O5d)%FN>Rfs7ur1furg%O3Urj#&q{c3BkZptg%2(lt6FIAmN zaQUiR?I%y^Rc(b5Mm2LVA4n?;d?!_Hbf)Z4*o&K(epFO@mZtgpQg?Pma0?x%xwQee zVxNI`5(Pf4(1R7;r7dgFEXG$&bb8XCDBPyai_knLj9T&A72bpQ60^x+lCO1*SuB#3 z7%YFY9bE>xi8aTDI~4B3nNDI2AHsl<3+se6YV=^K{sWEqQ;wABM&P zCaBkLbUZ+pmMEDe({GAntRP_RA^tu5GsgNXBax(;?QxS*m|mxCvd!eK4Q9Sli5m4% zeU_Q3)t{nv`vHY7;z1XseO577DkN!Ivp)b*xe+s+ZC{zu)zsE?j%jre4;lE9;9MUN zOrD_dWqd_&x-Li=dNVzkrYM#)!P1i~x|g^~C+)p?izVJWg;<;w!6OW+HZEb-)M~(^ zIBeiCvc8{ICzYsh1V`yh0(Oh8MS>+hLH0zTTAK*MgLquw2|P&%(>RZt9d{1+#kJy| z+E~Y(Pb)lwuhA+^-lJBnR||S`Vw$&WeV$eL2EIuwFtNQ-noi9m97FJkR}yUq~jdt?*rkA{dDZMI6Hm3g5%`>0dUkOeU>j zvBw&2m{v1~$v#^Hz9Ps25LR%(j}?BRHI2KP`izR; zrz{Y3U6vf)jek}6H~hN`+tqGr^fTE6E8c97Q=WwKNMOu=f&Vn{AA%OYnETIC_$7Wt z6Lr}fm+n`lGq$G4OHKk`k2t@HWQ$*uL;IFC;5GcWf!75WoF$({qDMBM`&5b29 zQ|v2cEbYeMD*P}0kEG8;A(Qgl;_zDW%3Q${a={myrs4w6&@Pu}oGsC6X5OTCe>tae zL$m)hHvv70^9b<&Q?j~eYy*ztcM2zj_&eRDEsr4#|5Uu?8R=|dj!QsEP>Y&ICwqD$ zQpfFpb4=M}B})Zv)5a>`LTgW+rvxjth&dpJl8D}Uga*xYCL&R4HL*l=FlM5ZoaStO z7&BdDNm4Rh$qYH2*wl@J%#zuL@VMhS-}Da`SaX$}DRI3g z%UBjS{h_9-nztCj6I@dbfR*!$dkULm9yb*{*f{XN$d@Ee6?L8=tx@iIr(z~gK*=%6 ztku&Fo_Oh^erFHiZW6Tn&Q@}coa^>^;>4X#3l9vwdb%+44Av!2mMCeGX8N3q^g74k z>cPl+An-YQ@yH^rO4=kr4_Qt=PB_I^D>U~+L0UwgzgfkIz%+l?8`7>Z^%ftsElXXjG-AQvNd zI_K9Kt7s`#E9sF9tYVZ>i4FO`=j6DbDCAV{&2+z*hVW!LZT$LC*(iNVHc7u5{{FPS z4dI2yRc>aDybL|$t-N@VxZ8B`FZa0*`=8&Zjl5pT4tYBzvt)QMe5!4%XDC5<91m$( zNhK+v0$SF}d_I@X+9Rx!g7uYRSaaM&n|=2`)g5q6lwM1QlniThISg0pI~7ybMv^Hb z!oy^skGUBx+GfG#HOP#KIuSp-{9unegk$wPzXAm|226fT#Rwh`kP!j}J<;qiWcQSX z!83~+oK4P|g2kI&ZLIBLG?$#Op@2nX`XCuJ#9!WUXfoAz6wWt~WzIJ*0r(x^NM673 za~j{4Bf$SaxTW<7rXS){0H^aa>a?CmSxXS(`x)*iG-4*-I3BauMo;KlGWNyU7UKIH zEj3WbdDKJ}w;aK|mX^a<@B|ibdj#hkMe`A~$1XUGj>EXPjLrbQhI1do3eTWbl|gI9 z4eEXjYg-=0+SvNo)rYa6jBA6~+Hw?|AH#rd*S}?4Cn&?zLaiRRWk|50Ep|g0nE+bb z%E$$vJ6g*qx=&>=5WR`m&1JkJfCPuU+wDk<4M_x_tm97^e;UF8G*%?Pk3c(u_qRUd zqx**@>V6j&y(@Ne?Cz@Wm&NX#dlVl#M4t`fMZ84M1s%_iVm^J@LjSeViwT^~?`E{K zwGzd8nagXeMY!6D@^XzFSzL+oExcsM>kHyj|;Psod!mEd`(VS>zRJsArG3i+q7Z%#i;%$@}5hp)$T2L@VFR zOqz}|o(f zimgnIZM?zV&d?2D1>Q#YUq_>^$7Y6c2TTm}J}rZkW10>-m9Cf;WzRq2Wt!X0VEz+B z7@&lN6N(^Pe>B1yaf)~H^>}ApypBP5!||@uUP(|kIwKD12s#mSW1$UX zi#w_k1Rsea<0Ljp=%|Dbpsq7K=Aq7TJX`@sqtv_TaN*FVbu3E*X+@?H1%~5{c$h3v zfq|asRUux-mXoe&%#_$snR$qR_E9ol7RnsiCwIv`QqBGc2o(?#QQmvTv5RjR27iQM z&k{H}0w+)4+(_UQIck)>dwCgn6W)iLnS;0B5xfJBv*kJL!w-0K_zK?5^W$xJ9q(br zzgHCQklDCX7UKQP^AAe`cgb>mMAqPL>F3?u0Pd9}Z|}1BnC!-VvX3`*cjA+B5AK(b z;?r_Jb6(ejbN6s{r*@IZNird_wyHR_z6H7V5Zeo;titzS&P{ zS0HqPuVDjX;GltH1}p=w8Qf5aK_8u<#m3}Lj&=L#PHrnFG0nYf(M7StjpAaGK=ASd zSkO98w+xi!yZ~Z{4ol0&VX*Dt+X6DL_36)^_^~|9SuP#Vaf<2Z7?AxWyw8)4zrd2X zpJe=?cHOH?$p7(F(FOFBE0NsZX~d1Pm`*VuN3j^_u0%XkmYqR#M&d?1QkFsP zY7Dx&${)=AYNCr4QXj9c2x$}+i;5IC|FxKCygnXv#ngMmkY6aKMnesH3-GEY$T1Sw zNvDCgsC6vj)5)lfOzHW&7F~iTS?Hg_dOXc~@(k(V>rDM;aR;v`@547)jGrSazs0zH zo4v<)(f2%S#&>u#^Vm3 ikH874(NN9jTMgM*`@wNTMw$5htmL-H9?lBL-robF_fbXw literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaDemoTest.class b/eclipse-build/org/rapla/RaplaDemoTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c109822cec67f2042fd112be1efc56709e2ada90 GIT binary patch literal 958 zcma)5%Wl&^6g`u;F>%utl0MP`eeiS=s1e(siYm~RVL_rwh1E2fhG`u;vK`=S*s_HU z7fRLrDxvz82xikLuwMBAS~5`rg$Fv+>6XBP>mSNj(hFqR_u6T!!+x{2D`2&vo^p^!v4klU1m=7ls;8sD zzKT0?KOjcgkGeA0m9aMdIB2CWbt16r|AkkR(4ib;?dJvyOeG_oGFf$N{^5uey@Qz5 zucP?LGwho-Dn$QNs%<(Ql(AqKFAB_0N^1o&Nits$puN7z&j!T-;*uZrg*VzBh!V+%a zCKpZc?I7T8Q?pl+th==r6EldcQ>_xO7Y(Eiy@}$cVR^d*7d5J)Vil*Icto0(``jok z#wv+MF~tkG{|hQG(@tgg=!qO=w``+9^mc}`qqC>*+uPeT>!WC{moF8xyjT=yZF*bC z@dFC=#xX8@;3)@(*2$uatX#r0{l(KNlrTe&^_ayRF^af|OJl71c!Kj4<-M{v#{7F$ zp5mE#z)FT?=J9txmAPe}EqW^%n;uUlTdjY@mCslg@Ea#@VO#HD39X{pEC2ui literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaLocaleImpl.class b/eclipse-build/org/rapla/RaplaLocaleImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..0be49b40082590356884c472c0333eb1b56ef4ac GIT binary patch literal 7082 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 QA4{hny+SO3T|eU9KdxxkIRF3v literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaMainContainer.class b/eclipse-build/org/rapla/RaplaMainContainer.class new file mode 100644 index 0000000000000000000000000000000000000000..f53ecaa08cbe92ab68eff54c79e3a9712683e071 GIT binary patch literal 9085 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaMetaConfigInfo.class b/eclipse-build/org/rapla/RaplaMetaConfigInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..3169518c52fe0fd5f0a4c7beb329e31f40116b29 GIT binary patch literal 2258 zcma)8+jbLG82~^?2GEKeDuOgA>9n$y&BdOXZ@&M0nEdt6n?C?7pkrW&aLMzVmM=Pvu(s8? zAwyB{+=ksOx((032w`GZybxA5v>oe#2wEGWLpT#i-xf|q`ho4akBh4WdPq3MqCqI! zup*qU9A!J|M}!miY}XDyAq-DvD}<4PSC=UaV?2!%#!Q?cq_r3Mnqx~hG>{?WV&59R zXv>$L|J<_OQ2MTLtb*6>crJ4zN6!)FVt%A0ChOP=T6J0aFYKBuwmVJ=Z(-8F+l13P zMn||!tKf(rNaGz`AQ(*D6bH1Ob_Z9 zM6#6>2=AqF74LJxI^B@4l$6}6?#f!YoRI7xNf&#NiR&DlF9WaZ*JQrhb?c5aaD%Xr z@OwX%f%U5GL>$ZJ1X;!TC3i*3sC*g760*n0#UdtVxbh8A6LmJ3CtQm~BQ!41x@JX2 ztiHDFF{7kLG!ygOFAdv~`5^Rs(PZ@>60XPUd$3inDweg*$5u!Bg4qUcasM8!rGbw) z=YtB$k^WftPG1K0?G!|i+Zm`;|k*Fet_HS9sziV2>RabLE*FcIHp z{}G?xwzf5O-$fHEgjBs6r-p~~>R@E`YVf0Dt**p!>x41J_61Em;4E_+cz!5fsnY<@ z`0Svns8uv^O%peS%SG{{a+Z$toZqp=KDvobwOLx-uzlkvnZa)6 z-BYq%x!G-3rT<7xh@yEl{&Wcbfbeq<90^-?K)6zhEg$hcTIS9!>rJL6nlO0;XI70i zrg()8t8Wi3U=%0#YVgw#Oul0!7~?a|uYbi!z5_kY?cr1|bNV+->}1Zq#`(;Ph4#E2uea?={ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaResources.class b/eclipse-build/org/rapla/RaplaResources.class new file mode 100644 index 0000000000000000000000000000000000000000..b21296a804db46504272a5f0c79b27ad23bf4839 GIT binary patch literal 31394 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 cbKB + + + + + + @doc.version@ + + + + @doc.buildtime@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Apply + Übernehmen + Valider + Aplicar + Použít + OK + Zastosuj + + + Go back + Zurück + Retour + Volver + Zpět + Sluit + Wstecz + + + Cancel + Abbrechen + Annuler + Cancelar + Zrušit + Annuleren + Anuluj + + + Continue + Weiter + Suivant + Continuar + Pokračovat + Verder + Kontynuuj + + + Error + Fehler + Erreur + Error + Chyba + Fout + Błąd + + + Exception + Ausnahme-Fehler + Exception + Excepción + Vyjímka + Uitzondering + Wyjątek + + + OK + OK + OK + OK + Budiž + OK + OK + + + Warning + Warnung + Attention + Atención + Varování! + Waarschuwing + Uwaga + + + + Abort + Abbrechen + Annuler + Anular + Ukončit + Annuleren + Anuluj + + + Add + Hinzufügen + Insérer + Añadir + Přidat + Toevoegen + Dodaj + + + Change + Ändern + Modifier + Modificar + Změnit + Wijzig + Zmień + + + Confirm + Bestätigen + Confirmer + Confirmar + Potvrdit + Bevestig + Akceptuj + + + Color + Farbe + Couleur + Color + Barva + Kleur + Kolor + + + Copy + Kopieren + Copier + Copiar + Kopie + Kopieer + Kopiuj + + + Copy to Clipboard + In die Zwischenablage + Copier vers le presse papier + Copiar al portapapeles + Kopírovat do schránky + Kopieër naar plakbord + Kopiuj do schowka + + + Close + Schließen + Fermer + Cerrar + Zavřít + Sluit + Zamknij + + + Create + Erstellen + Fermer + Crear + Vytvořit + Aanmaken + Utwórz + + + Delete + Löschen + Effacer + Borrar + Smazat + Verwijderen + Usuń + + + Delete Selection + Auswahl löschen + Effacer la sélection + Borrar la selección + Smazat výběr + Verwijder selectie + Usuń + + + Edit + Bearbeiten + Modifier + Editar + Upravit + Bewerk + Edytuj + + + Exit + Beenden + Quitter + Salir + Odejít + Sluiten + Wyjście + + + Publish + Veröffentlichen + Publier + Publicar + Publikuj + publikovat + Publiceer + + + Export + Export + Export + Exportar + Export + Publiceer + Eksportuj + + + Insert + Einfügen + Insérer + Insertar + Vložit + Toevoegen + Wstaw + + + Import + Import + Import + Importar + Import + Importeer + + + Keep + Beibehalten + Conserver + Conservar + Podržet + Bewaar + Zachowaj + + + Load + Laden + Charger + Cargar + Nahrát + Laad + Wczytaj + + + Login + Login + Login + Acceso + Login + Aanmelden + Logowanie + + + Logout + Logout + Quitter + Salir + Odhlásit + Afmelden + Wyloguj + + + Move + Verschieben + Déplacer + Mover + Přesunout + Verplaats + Przenieś + + + New + Neu + Nouveau + Nuevo + Nový + Nieuw + Nowy + + + Paste + Einfügen + Coller + Pegar + Vložit + Plakken + Wklej + + + Paste As + Einfügen als + Coller + Pegar como + Vložit vše + Plakken als + Wklej jako + + + Print + Drucken + Imprimer + Imprimir + Tisknout + Afdrukken + Drukuj + + + Print + Drucke + Imprimer + Imprimir + Tisknout + Afdrukken + Drukuj + + + Print to File + In Datei drucken + Imprimer en Fichier + Imprimir en Fichero + Tisk do souboru + Afdrukken naar Bestand + Drukuj do pliku + + + Refresh + Aktualisieren + Actualiser + Actualizar + Obnovit + Actualiseren + Odśwież + + + Remove + Entfernen + Effacer + Eliminar + Odstranit + Verwijderen + Usuń + + + Root + Wurzel + Racine + Raíz + root + Oorsprong + + + Save + Speichern + Sauvegarder + Guardar + Uložit + Opslaan + Zapisz + + + Show As + Anzeigen als + Afficher + Mostrar como + Ukaž vše + Type + Wyświetlaj jako + + + View + Anzeige + Affichage + Ver + Pohled + Overzicht + Widok + + + View Holidays + View Holidays + View Holidays + View Holidays + View Holidays + View Holidays + View Holidays + + + + All users + alle Benutzer + Tous les utilisateurs + Todos los usuarios + Všichni uživatelé + Alle gebruikers + Wszyscy + + + Alteration + Änderung + Modification + Modificación + Změna + Wijziging + Zmiana + + + and + und + et + y + a + en + i + + + Attribute + Attribut + Attribut + Atributo + Vlastnost + Kenmerk + Atrybut + + + Attributes + Attribute + Attributs + Atributos + Potvrdit + Kenmerken + Atrybuty + + + Available + vorhanden + Disponible + Disponible + Dostupný + Beschikbaar + Dostępne + + + Calendar + Kalender + Calendrier + Calendario + Kalendář + Kalender + Kalendarz + + + Categories + Kategorien + Catégories + Categorías + Seznam kategorií + Klassement + Kategorie + + + Category + Kategorie + Catégorie + Categoría + Kategorie + Klassement + Kategoria + + + Changes + Änderungen + Modifications + Modificaciones + Změny + Wijzigingen + Zmiany + + + Class + Klasse + Classe + Clase + Třída + Klasse + Klasa + + + Classification + Klassifizierung + Classification + Clasificación + Hodnocení + Klassificatie + Klasyfikacja + + + Connection with server + Verbindung mit dem Server + connexion au serveur + conexión a servidor + Verbinding met de Server + Połączenie z serwerem + + + Constraints + Einschränkungen + Contraintes + Restricciones + Omezení + Beperkingen + Ograniczenia + + + Created at + erstellt am + Créé le + Creado el + Vytvořeno + Aangemaakt op + Stworzono + + + Customized + benutzerdefiniert + Spécifique + Específico + Přizpůsobený + Aangepast door Gebruiker + Dostosowany + + + Date + Datum + Date + Fecha + Datum + Datum + Data + + + Default + Standard + Standard + Estándar + Výchozí + Standaard + Domyślne + + + Destination + Ziel + destination + Destino + Cíl + Naar + Miejsce docelowe + + + Show advanced settings + zeige Profi-Einstellungen + Affiche paramétrage pour utilisateurs expérimentés + Mostrar parámetros para usuarios experimentados + Zobraz pokročilé nastavení + Toon speciale instellingen + Pokaż zaawansowane ustawienia + + + Element key + Elementschlüssel + Clé d'élément + Clave de elemento + Klíč elementu + Elementsleutel + Klucz + + + Email + Email + Email + Email + e-mail + Email + E-mail + + + End time + Endzeit + Heure de fin + Hora final + Čas ukončení + tot + Czas zakończenia + + + End date + Ende + Fin + Fin + Konec + Stop datum + Data zakończenia + + + Filter + Filter + Filtre + Filtro + Filter + Filtr + + + Fixed Date + festes Datum + Date fixe + Fecha fija + Pevný datum + Vaste datum + Ustalona data + + + for + für + pour + para + Pro + voor + dla / na + + + Go to Date + Datum anzeigen + Atteindre la date + Ir a la fecha + Jít na datum + Ga naar datum + Idź do daty + + + Group + Gruppe + Groupe + Grupo + Skupina + Groep + Grupa + + + Groups + Gruppen + Groupes + Grupos + Skupiny + Groepen + Grupy + + + Help + Hilfe + Aide + Ayuda + Pomoc + Help + Pomoc + + + Hierarchy + Hierarchie + Hiérarchie + Jerarquía + Hierarchie + Hierarchie + Hierarchia + + + About Rapla... + Info + Information + Info + Informace + Informatie + O Rapla + + + Not visible + nicht sichtbar + non visible + no visible + neviditeně + onzichtbaar + Ukryty + + + Not visible.
Access to the reservation info is restricted.
+ Nicht sichtbar.
Der Zugriff auf die Reservierungsinformation ist eingeschränkt.
+ Non visible.
L'accès aux détails de la réservation est restreint.
+ No visible.
El acceso a la información de la reserva está restringido.
+ Skrytá položka.
Přístup k rezervačním informacím je zakázán.
+ Gewijgerd.
Toegang tot de boekings informatie is beperkt.
+ Ukryty.
Dostęp do informacji o rezerwacji jest zastrzeżony.
+
+ + Not currently selected.
Unselect "Only Own Reservations" or change your filter settings.
+ Nicht ausgewählt.
Schalten Sie "nur eigene Reservierungen" aus oder ändern Sie die Filtereinstellungen.
+ Actuellement non sélectionné.
Dé-sélectionnez "Seulement mes réservations" ou changez vos réglages du filtre.
+ Actualmente no seleccionado.
Desmarca "Sólo mis reservas" o cambia las configuraciones de los filtros.
+ Položka není v této chvíli vybrána.
Odstraňte volbu "Moje rezervace", nebo změňte nastavení vašeho filtru.
+ ""Enkel eigen reservaties" afvinken" of wijzig de filter instellingen.". + Nie wybrano.
Odznacz opcję "Pokaż tylko moje rezerwacje" lub zmień ustawienia filtru.
+
+ + Key + Schlüssel + Clé + Clave + Klíč + Sleutel + Klucz + + + Language + Sprache + Langue + Idioma + Jazyk + Taal + Język + + + Last changed + zuletzt geändert am + Dernière modification le + Última modificación el + Naposledy změněno + Gewijzigd op + Ostatnia zmiana + + + Last changed by + zuletzt geändert von + Dernière modification + Última modificación + Naposledy změnil uživatel: + Laatst gewijzigd door + Zmienione przez + + + Legend + Legende + Légende + Leyenda + Legenda + Legende + Legenda + + + Level + Level + Niveau + Nivel + Úroveň + Niveau + Poziom + + + Nothing selected + Nichts ausgewählt + Rien de sélectionné + Nada seleccionado + Není vybrána žádná položka + Geen selectie + Nic nie wybrano + + + Name + Name + Nom + Nombre + Jméno + Naam + Nazwa + + + Never + nie + Jamais + Nunca + Nikdy + nooit + Nigdy + + + Every time + immer + Toujours + Siempre + pokaždé + onbeperkt + Zawsze + + + No + Nein + Non + No + Ne + Nee + Nie + + + No classification + keine Klassifizierung + Pas de classification + Sin clasificación + Neklasifikováno + Geen Classificatie + Brak klasyfikacji + + + Options + Einstellungen + Options + Opciones + Volby + Opties + Opcje + + + or + oder + ou + o + nebo + of + lub + + + Open + offen + Ouvrir + Abrir + Otevřít + Onbepaald + Otwórz + + + Permissions + Zugriffsrechte + Permissions + Permisos + Přístupová práva + Toegang + Uprawnienia + + + Preferences + Einstellungen + préférence + Preferencias + Předvolby + Voorkeur + Preferencje + + + Question + Frage + Question + Pregunta + Otázka + Vraag + Pytanie + + + Report + Report + Rapport + Informe + Report + Rapport + Raport + + + Calendar settings + Kalendareinstellungen + L'Affichage + la configuración del calendario + nastavení pohledu + Overzicht opslaan + ustawienia Kalendarz + + + Search + Suche + Rechercher + Buscar + Hledat + Opzoeken + Szukaj + + + Select + auswählen + Sélectionner + Seleccionar + Vybrat + Selecteer + Zaznacz + + + Selected + ausgewählt + Sélectionné + Seleccionado + Vybráno + Actief + Wybrane + + + Selection + Auswahl + Sélection + Selección + Výběr + Selecteer voorkeur + Zaznaczenie + + + Source + Quelle + source + Fuente + Zdroj + Van + Źródło + + + Start time + Startzeit + Heure de début + Hora de inicio + Počáteční čas + van + Czas rozpoczęcia + + + Start + Beginn + Début + Inicio + Počáteční datum + Start datum + Data rozpoczęcia + + + Table + Tabelle + Table + Tabla + tabule + Tabel + Tabela + + + Today + Heute + Aujourd'hui + Hoy + Dnes + Vandaag + Dziś + + + + at + um + à + a las + v + van + o + + + until + bis + jusqu'à + hasta + do + tot + do + + + Total occurances + Gesamtanzahl Termine + Nombre d'occurrences + Número de apariciones + celkem záznamů + Totaal aantal + Suma wystąpień + + + Translation + Übersetzung + Traduction + Traducción + překlad + Vertaling + Tłumaczenie + + + Width + Breite + Largeur + Ancho + šířka + Breedte + Szerokość + + + Yes + Ja + Oui + + ano + Ja + Tak + + + x Days in advance + x Tage im Voraus + x jours en avance + x días de antelación + x dní předem + x dagen op voorhand + x dni wcześniej + + + Server + Server + Serveur + Servidor + Server + Server + Serwer + + + File + Datei + Fichier + Fichero + Soubor + Bestand + Plik + + + with + mit + avec + con + s + met + z + + + + + WARNING: Conflicts found! + WARNUNG: Konflikte gefunden! + ATTENTION : Conflits trouvés ! + ¡ATENCIÓN : Se han encontrado conflictos! + POZOR: Nalezen konflikt ! + WAARSCHUWING: Conflict gevonden! + UWAGA: Wykryto konflikt! + + + WARNING: The same appointment exists multiple times [{0}]! + WARNUNG: Den gleichen Termin gibt es mehrmals [{0}]! + ATTENTION : La même réservation existe plusieurs fois [{0}]! + ¡ATENCIÓN : La misma reserva existe en múltiples ocasiones [{0}]! + POZOR: Stejné ujednání existuje ve více časech [{0}]! + WAARSCHUWING: Dezelfde afspraak bestaat meerdere keren: [{0}]! + UWAGA: Ten sam termin występuje kilkakrotnie [{0}]! + + + These settings should only be changed by experienced users! + Diese Einstellungen sollten nur von erfahrenen Benutzern verändert werden! + Ce paramétrage est réservé aux utilisateurs expérimentés ! + ¡Estos parámetros están reservados sólo para usuarios experimentados! + Tato nastavení by měla být měněna zkušenými uživateli! + Deze instelling kan enkel gewijzigd worden door een super gebruiker! + Nie kombinuj, chyba, że wiesz, co robisz ;) + + + You have no permissions to reserve/change [{0}] an appointment [{1}]! + Sie haben keine Zugriffsrechte um [{0}] an dem Termin [{1}] zu reservieren/ändern! + Vous ne disposez pas des droits suffisants pour effectuer/modifier [{0}] la réservation [{1}] + ¡No tiene permisos suficientes para efectuar/modificar [{0}] la reserva [{1}]! + Nemáte pověření rezervovat/měnit [{0}] v ujednání vaci [{1}]! + Plannen of wijzigen van [{0}] in reservatie [{1}] is niet toegestaan! + Nie masz uprawnień do zmiany/ustalenia [{0}] terminu [{1}]! + + + You have no permissions to create conflicts for [{0}]! + Sie haben keine Zugriffsrechte um Konflikte für [{0}] zu erzeugen! + Vous ne disposez pas des droits suffisants pour créer des conflits pour [{0}] ! + ¡No tiene permisos suficientes para crear conflictos para [{0}]! + Nemáte pověření vytvořit konflikt pro [{0}] ! + Aanmaken van conflicten voor [{0}], is niet toegestaan! + Nie masz uprawnień do tworzenia konfliktów w [{0}]! + + + + Period is shorter than 1 week! + Der Zeitraum is kürzer als eine Woche! + La période est inférieure à une semaine ! + ¡El periodo es inferior a una semana! + Nemáte pověření rezervovat/měnit [{0}] v ujednání vaci [{1}]! + Periode minder dan 1 week! + Okres krótszy niż tydzień. + + + + Data is only modified in memory. Changes will be lost for future sessions. + Ihre Änderungen wurden nicht gesichert und gehen beim Beenden der Sitzung verloren! + Modifié uniquement en mémoire. La modification sera perdue pour les sessions suivantes ! + ¡Los datos se han modificado sólo en memoria. Las modificaciones se perderán para las sesiones siguientes! + Data jsou změněny pouze v paměti. Změny budou ztraceny pro další použití. + Wijzigingen enkel in het geheugen. Gegevens worden niet opgeslagen. + Dane zmienione tylko w pamięci. Zmiany zostaną utracone. + + + + The event you are editing has been changed. + The data displayed in this window will be refreshed. + Die Veranstaltung, die gerade bearbeitet + wird, wurde geändert. Das Bearbeitungsfenster wird aktualisiert. + L'évènement que vous éditez a été modifié. + Les informations affichées dans la fenêtre vont être rafraichies. + El evento que está editando ha sido modificado. + La información que aparece en esta ventana será actualizada. + Editovaná položka bude změněna. Zobrazené informace budou obnoveny. + Het evenement dat je wil wijzigen is gewijzigd. + De gegevens worden terug opgehaald. + Edytowane wydarzenie zostało zmienione. + Dane w tym oknie zostaną zaktualizowane. + + + + The event you are editing has been deleted. + Die Veranstaltung die gerade bearbeitet + wird, wurde gelöscht. + L'évènement que vous éditez vient d'être effacé + El evento que está editando ha sido eliminado + Editovaná položka bude smazána. + Het evenement dat je bewerkt, werd verwijderd. + Edytowane wydarzenie zostało usunięte. + + + + You have not selected any resources/persons! + Sie haben keine Ressourcen/Personen ausgewählt! + Vous n'avez pas sélectionné de ressource/personne ! + ¡No ha seleccionado ningún(a) recurso/persona + Nejsou označeny žádné prostředky/osoby! + Evenement zonder Personen & Materialen! + Nie wybrano żadnych zasobów/osób! + + + + The object "{0}" you are editing has been changed outside the window. + The current editing will be aborted. + Das Objekt "{0}", das gerade bearbeitet + wird, wurde geändert. Der aktuelle Editiervorgang wird abgebrochen. + + L''objet "{0}" que vous éditez a été modifié hors de la fenêtre. + Cette édition va être interrompue. + El objeto "{0}" que está editando ha sido modificado fuera de la ventana + La edición actual va a ser interrumpida. + Objekt "{0}" který je editován bude změněn mimo okno. Současná editace bude přerušena. + Het object "{0}" dat je bewerkt, werd gewijzigd. Bewerken wordt onderbroken. + + + + + Login failed! + Fehlerhafter Login! + Erreur dans le Login ! + ¡Error al acceder al sistema! + Špatný login! + Aanmelding geweigerd! + Błąd logowania + + + Connection to [{0}] failed! Maybe the host is down and you could try later! + Verbindung mit [{0}] fehlgeschlagen! Vielleicht ist der Rechner nicht erreichbar. Versuchen Sie es zu einen späteren Zeitpunkt erneut! + La connexion vers [{0}] a échoué ! Le serveur n''est peut être pas disponible. Essayez plus tard. + ¡La conexión a [{0}] ha fallado! El servidor puede no estar disponible. Inténtelo más tarde. + Připojení k [{0}] je špatné! Možná je vypnutý server. Zkuste to později. + Verbinding met [{0}] is verbroken, de server is niet beschikbaar, contacteer de Rapla beheerder of probeer later! + Nie udało się połączyć z {0}! Być może host jest wyłączony. Spróbuj ponownie później. + + + No or closed connection to [{0}]. Please restart Rapla. + Keine oder unterbrochene Verbindung zu [{0}]. Bitte starten Sie Rapla erneut. + Pas ou plus de connexion vers [{0}]. Redémarrer Rapla. + Sin conexión a [{0}]. Por favor, reinicie Rapla. + Neexistuje nebo nefunguje spojení [{0}]. Prosím restartujte rezervační systém + Geen of een gesloten connectie naar [{0}]. Rapla herstarten a.u.b. + Brak lub utracone połączenie z {0}. Uruchom ponownie Rapla. + + + + At least one type is requiered. + Es muss mindestens ein Typ vorhanden sein! + Au moins un type doit être disponible ! + ¡Al menos un tipo debe estar disponible! + Je požadován alespoň jeden typ. + Minimaal 1 soort is nodig. + Przynajmniej jeden typ jest wymagany. + + + + You have to enter a title for your event! + Sie müssen einen Titel für Ihre Veranstaltung angeben! + Vous devez donner un titre à cet évènement ! + ¡Debe introducir un título para su evento! + Vložit nadpis události! + Een titel opgeven! + Podaj nazwę dla wydarzenia! + + + + You need to provide a name! + Sie müssen einen Namen angeben! + Vous devez donner un nom ! + ¡Debe dar un nombre! + Nutné poskytnout jméno + Je moet een naam opgeven! + Musisz wpisać nazwę! + + + You need to provide an entry for: {0} + Sie müssen einen Namen angeben für: {0} + Vous devez donner un nom pour : {0} + Debe dar un nombre para : {0} + Nutné poskytnout přístup pro: + Je moet de gegevens opgeven voor: {0} + Musisz coś wpisać w: {0} + + + + You need to provide a key: {0} + Sie müssen einen Schlüssel angeben: {0} + Vous devez donner une clé pour : {0} + Debe dar una clave para : {0} + Nutné poskytnout klíč: + Een sleutel is verplicht: {0} + Musisz podać klucz: {0} + + + "{0}" is not a valid key! + Note: You can only use a combination of max. 50 letters, digits or one of the + following characters {1}. The key must start with {2} or a letter! Example: room_size + + "{0}" ist kein gültiger Schlüssel! + Note: Sie können nur eine Kombination von max. 50 Buchstaben, Ziffern oder einer der + Folgende Zeichen {1}. Der Schlüssel muss mit {2} oder einem Buchstaben beginnen! Beispiel: Anzahl_Plätze + + "{0}" n''est pas une clé valide! + Note: Vous ne pouvez utiliser une combinaison de max. 50 lettres, chiffres ou l'une des + caractères suivants {1}. La clé doit commencer par {2} ou une lettre! Exemple: Nombre_de_places + + ¡"{0}" no es una clave válida! + Nota : Sólo se puede utilizar una combinación de max. 50 letras, dígitos o uno de los + siguientes caracteres {1}. La clave debe comenzar con {2} o una carta! Ejemplo: Número_de_plazas + + "{0}" je neplatný klíč!
+ Note: Můžete použít pouze v kombinaci s Max. 50 písmen, číslice nebo jeden z + tyto znaky {1}. Klíč musí začínat {2} nebo dopis! Např.: mistnost_velikost +
+ "{0}" is een ongeldige sleutel! + Nota: Maximaal 50 letters, cijfers of {1} beginnend met {2} of een letter! + + "{0}" jest nieprawidłowym kluczem! + Możesz użyć tylko liter, cyfr oraz jednego z tych znaków {0}. Klucz musi zaczynać się od litery. + +
+ + An event has to consist of at least one appointment! + Eine Veranstaltung muss aus mindestens einem Termin bestehen! + Un évènement est constitué d'au moins une réservation ! + ¡Un evento ha de tener al menos una cita! + Evenement zonder reservaties! + Wydarzenie musi mieć choć jeden termin. + + + Dependencies exist for these objects + Für folgende Objekte bestehen noch Abhängigkeiten + Des dépendences existent pour ces objets + Existen dependencias para estos objetos + Závislosti existují pro jiný objekt + Afhankelijk van + Istnieją zależności dla tego obiektu + + + The name "{0}" is already + taken. Please choose a different name! + Der Name "{0}" ist schon + vergeben. Bitte wählen Sie einen Anderen! + Le nom "{0}" est déjà existant. Choisissez en un autre ! + ¡El nombre "{0}" ya está en uso. Por favor, escoja un nombre diferente! + Jméno "{0}" je využíváno. Vyber jiné! + De naam "{0}" is reeds in gebruik. Kies een andere naam! + Nazwa "{0}" jest już zajęta. Wybierz inną. + + + The object {0} couldn''t be modified. It was recently modified by someone else. + There was a newer version in the storage. + Das Objekt {0} konnte nicht verändert werden. Es wurde kürzlich verändert, denn + es gibt schon eine neuere Version. + L''objet {0} n''a pu être modifié. Il était en cours de modification par quelqu''un d''autre. + Une autre version existe. + El objeto {0} no ha podido ser modificado. Ha sido modificado recientemente por otra persona. + Existe en memoria una versión más reciente del mismo. + Objekt {0} nemohl být upraven. Byl upraven nedávno někým jiým. + {0} versie {1} is recentelijk gewijzigd, versie {2} is beschikbaar. Probeer later. + Nie można zmodyfikować {0}. Obiekt został niedawno zmieniony przez inną osobę. Istnieje nowsza wersja obiektu w pamięci. + + + The passwords don't match! + Die Passwörter stimmen nicht überein! + Les mots de passe ne sont pas concordants ! + ¡Las palabras de paso no coinciden! + Heslo neodpovídá + De paswoorden verschillen! + Hasła nie zgadzają się. + + + Wrong password! + Falsches Passwort! + Mauvais mot de passe ! + ¡Palabra de paso incorrecta! + Špatné heslo! + Verkeerd paswoord! + Błędne hasło! + + + You can''t delete [{0}], because you are currently using this account! + Sie können [{0}] nicht löschen, weil Sie diesen Account benutzen! + Vous ne pouvez effacer [{0}], parce que vous utilisez actuellement ce compte ! + ¡No puede borrar [{0}], porque está usando esa cuenta en estos momentos! + Nemůžete smazat [{0}], protože výběr využívá tento účet! + Je kan [{0}] niet verwijderen,omdat je deze momenteel in gebruik hebt! + Nie możesz usunąć [{0}], ponieważ obecnie używasz tego konta! + + + Database update failed. All changes were canceled. + Während der Speicherung in der Datenbank + ist ein Fehler aufgetreten. Alle Änderungen wurden rückgängig + gemacht! + L'actualisation de la base de données a échoué. + Toutes les modifications sont perdues + La actualización de la base de datos ha fallado. + Se han cancelado todas las modificaciones + Databáze se neobnovila. Všechny změny zrušeny. + Databank wijziging. Wijzigingen werden geannuleerd. + Błąd aktualizacji bazy. Wszystkie zmiany zostały utracone. + + + Error! Database update failed. Because + your database doesn't support transactions, that could lead to + serious failures. Please contact your administrator + immediately! + Achtung! Während der Speicherung in der + Datenbank ist ein Fehler aufgetreten. Da die verwendete + Datenbank keine Transaktionen unterstützt kann dies zu + schwerwiegenden Fehlern in der Applikation fhren. Bitte setzten + Sie sich umgehend mit dem zuständigen Adminstrator in Verbindung! + + Attention ! Une erreur est survenue pendant l'actualisation de la base de données. Votre base de données refuse cette transaction. Prévenez immédiatement votre administrateur ! + ¡Atención! La actualización de la base de datos ha fallado. Puesto + que su base de datos no soporta transacciones, esto puedo ocasionar errores serios. Por favor, contacte + con su administrador inmediatamente! + Chyba! Databáze se neobnovila. Protože databáze nepodporuje transakci, chyba by se mohla opakovat, informujte administrátora + Fout! Databank wijziging. Databank ondersteund geen transacties. + Dit kan tot serieuze fouten leiden.Neem onmiddelijk contact met de Rapla beheerder! + Błąd! Aktualizacja bazy nie powiodła się. Twoja baza nie obsługuje transakcji, co może prowadzić do poważnych błędów. Skontaktuj się ze swoim administratorem. + + + Error! Referenced object [{0}] not found in store. It was probably recently removed. + Achtung! Referenziertes Object [{0}] konnte nicht gefunden werden. Es wurde wahrscheinlich kürzlich von jemand gelöscht. + Attention! L''objet référencé [{0}] n''a pu être trouvé. A probablement été effacé récemment. + ¡Atención! No se pudo encontrar el objeto referenciado [{0}]. Probablemente se eliminó recientemente. + Chyba! Zmíněný objekt [{0}] se nenalézá v databázi. Pravděpodobně byl odstraněn. + Fout! Gevraagd object [{0}] niet gevonden. Waarschijnlijk recentelijk verwijderd. + Nie można znaleźć obiektu [{0}]. Prawdopodobnie został niedawno usunięty. + + + + Choose root category: + Wurzelkategorie auswählen + Sélectionner la catégorie racine + Seleccionar la categoría raíz + Vyber hlavní kategorii: + Wybierz kategorię główną (root): + + + Type + Typ + Type + Tipo + Typ + Folder + Typ + + + Type name + Name des Typs + Nom du type + Nombre de tipo + Jméno typu + Naam type + Nazwa typu + + + Enclose the key names in {} to insert attributes, e.g. {myKey} + Umklammern sie die Schlüsselnamen mit {} um Attribute einzufügen, Bsp. {name} + Mettez la clé entre {} pour insérer des attributs, par ex. {maclé} + Meta la clave entre {} para insertar los atributos, por ejemplo {miClave} + Uzavřené klíčové jméno v {} k vložení vlastnosti, např. {jméno} + Sleutels tussen {...} plaatsen; bvb. {mijnSleutel} + Nazwy klucza powinny znajdować się w {} np. {klucz}. + + + Displayed name format + Anzeigeformatierung + Mettre en forme l'affichage + Formato de nombre visualizado + Zobrazovaný formát jména + Titel formaat + Format wyświetlania + + + Type + Typ + Type + Tipo + Typ + Type + Typ + + + Types + Typen + Types + Tipos + Typy + Types + Typy + + + + Yes|No + Ja|Nein + Oui|Non + Sí|No + Ano|Ne + Ja|Neen + Tak|Nie + + + Category + Kategorie + Catégorie + Categoría + Kategorie + Klassement + Kategoria + + + Date + Datum + Date + Fecha + Datum + Datum + Data + + + Integer + Ganze Zahl + Nombre entier + Número entero + Číslo + Getal + Liczba + + + Text + Text + Texte + Texto + Text + Tekst + Tekst + + + Edit View + Bearbeitungsansicht + Écran de modification + Vista de modificación + Upravit pohled + Toon als + Widok edycji + + + Main View + Hauptansicht + Écran principal + Vista principal + Hlavní pohled + Basis gegevens + Widok główny + + + Additional Information + zusätzliche Informationen + Informations complémentaires + Información complementaria + Doplňující informace + Extra gegevens + Dodatkowe informacje + + + invisible + nicht sichtbar + invisible + Invisible + Skrytý + Onzichtbaar + niewidoczny + + + + Expected rows + Zeilenanzahl + Nombre de lignes + Número de líneas + Očekávaná řadka + Aantal rijen + Liczba wierszy + + + + Expected columns + Spaltenbreite + Nombre de colonnes + Número de columnas + Aantal kolommen. + Liczba kolumn + + + + + User + Benutzer + Utilisateur + Usuario + Uživatel + Gebruiker + Użytkownik + + + Users + Benutzer + Utilisateurs + Usuarios + Uživatelé + Gebruikers + Użytkownicy + + + Switch to + wechsle zu + Changer pour + Cambiar a + Přepni k + Aanmelden als + Przełącz na + + + switch back + wechsle zurück + revenir vers + Volver a ser administrador + Přepni zpět + Aanmelden als vorige gebruiker + Wróć + + + Username + Benutzername + Profil utilisateur + Nombre de usuario + Uživatelské jméno + Gebruiker + Nazwa użytkownika + + + bind with person + Mit Person verbinden + connecter personne + connectar con persona + Verbinding met persoon + + + Administrator + Administrator + Administrateur + Administrador + Administrátor + Beheerder + Administrator + + + You have adminstrator privileges! + Sie haben Administrationsrechte! + Vous disposez des droits d'administrateur ! + ¡Dispone de derechos de administrador! + Máte administrátorská práva! + Beheerder + Masz uprawnienia administratora. + + + Administration + Administration + Administration + Administración + Administrace + Systeem beheer + Administracja + + + Password + Passwort + Mot de passe + Palabra de paso + Heslo + Paswoord + Hasło + + + Old password + Altes Passwort + Ancien mot de passe + Antigüa palabra de paso + Staré heslo + Oud paswoord + Stare hasło + + + New password + Neues Passwort + Nouveau mot de passe + Nueva palabra de paso + Nové heslo + Nieuw paswoord + Nowe hasło + + + Password verification + Passwort Verifikation + Vérification du mot de passe + Verificación de palabra de paso + Heslo ověřeno + Paswoord controle + Weryfikacja hasła + + + + Person + Person + Personne + Persona + Osoba + Persoon + Osoba + + + Persons + Personen + Personnes + Personas + Osoby + Personen + Osoby + + + Person type + Personentyp + Type de personne + Tipo de persona + Druh osoby + Type: Persoon + Typ osoby + + + Person Types + Personentypen + Types de personne + Tipos de personas + Druh osob + Type: Personen + Typy osób + + + Name + Nachname + Nom + Apellidos + Jméno + Naam + Nazwisko + + + + First name + Vorname + Prénom + Nombre + První jméno + Voornaam + Imię + + + + + Event + Veranstaltung + Évènement + Evento + Událost + Evenement + Wydarzenie + + + New Event... + neue Veranstaltung + nouvel évènement + nuevo evento + Nová událost + Nieuw evenement + Nowe wydarzenie + + + + Event name + Veranstaltungsname + Nom de l'évènement + Nombre del evento + Název události + Evenement naam + Nazwa wydarzenia + + + + Events + Veranstaltungen + Évènements + Eventos + Události + Evenementen + Wydarzenia + + + Event Type: + Veranstaltungstyp + Type d'évènement + Tipo de evento + Druh události + Type Evenement + Wydarzenia + + + Event + Veranstaltung + Évènement + Evento + Událost + Evenement + Wydarzenie + + + Edit own + eigene bearbeiten + modifier les siennes + modificar las propias + Změň majitele + bewerk eigen + Edytuj swoje + + + Appointments: + Termine: + Évènement : + Citas: + Sjednaný: + Lijst afspraken: + Terminy: + + + Allocations: + Belegungen: + Allocation : + Asignaciones : + Rozvržení: + Bezetting: + Przydział zasobów: + + + Reserved by + reserviert von + réservé par + Reservado por + Rezervace od + Geregistreerd door + Rezerwacja przez + + + on + am + à la + en el + na + aan de + na + + + Registered by + Eingetragen von + Enregistré par + Registrado por + Registrovaný od + Geregistreerd door + Zarejestrowany przez + + + + Day of week + Wochentag + Jour de la semaine + Día de la semana + Den v týdnu + Weekdag + Dzień tygodnia + + + Duration + Zeitdauer + Durée + Duración + Trvání + Tijdsduur + Czas trwania + + + Interval + Zeitraum + Interval + Intervalo + Interval + Interval + Interwał + + + Same day + am selben Tag + même jour + mismo día + Stejný den + zelfde dag + Ten sam dzień + + + Next day + am nächsten Tag + jour suivant + día siguiente + Další den + volgende dag + Następny dzień + + + on day x + am Tag x + le jour x + el día x + Za den x + op dag x + dnia x + + + Day(s) + Tag(e) + Jour(s) + Día(s) + Den + dag(en) + Dzień(dni) + + + Hour(s) + Std. + Heure(s) + Hora(s) + Hodina + uur + Godzina(-y) + + + Min. + Min. + min. + min. + Min. + min. + min. + + + New appointment + neuer Termin + Nouvelle réservation + Nueva cita + Nová rezervace + Nieuwe afspraak + Nowy termin + + + Appointment + Termin + Réservation + Reserva + Rezervace + Reservatie + Termin + + + Appointment List + Terminliste + Liste des réservations + Lista de citas + Seznam rezervací + Lijst reservaties + Lista terminów + + + Appointments + Termine + Réservations + Citas + Rezervace + Reservaties + Terminy + + + Change appointment + Termin ändern + Modifier la réservation + Modificar la reserva + Změna rezervace + Wijzig afspraak + Edytuj termin + + + No repeating + Einzeltermin + Unique + Única + Bez opakování + Eénmalig + Jednorazowe + + + Repeating + Wiederholung + Répéter + Repetir + Opakování + Herhaling: + Powtarzające się: + + + Weekly + wöchentlich + Hebdomadaire + Semanal + Týdně + Wekelijks + Co tydzień + + + Daily + täglich + Quotidien + A diario + Po dnech + Dagelijks + Codziennie + + + Monthly + monatlich + mensuel + mensual + Maandelijks + Co miesiąc + + + Yearly + jährlich + annuel + anual + Jaarlijks + Co rok + + + Every {0} {1} + Alle {0} {1} + Tous/toutes les {0} {1} + Cada {0} {1} + Každý {0} {1} + Elke {0} {1} + Co {0} {1} + + + Week + Woche + Semaines + Semana + Týden + Week + Tydzień + + + cw {0,date,w} + KW {0,date,w} + S{0,date,w} + se {0,date,w} + T{0,date,w} + WK{0,date,w} + T{0,date,w} + + + + Short week + kompakte Woche + Semaine courte + Semana corta + Celý týden + Week (Compact) + Tydzień (skrócony) + + + Hour + Std. + Heure + Hora + Uur + Godzina + + + Hours + Std. + Heures + Horas + Uren + Godziny + + + + Minutes + Minute + Minutes + Horas + Minuten + + + + Minute + Minute + Minute + Hora + Minuut + + + Second + Sekunde + Seconde + secundo + Seconde + Sekunda + + + Seconds + Sekunden + Secondes + secundos + Seconden + Sekundy + + + Day + Tag + Jour + Día + Den + Dag + Dzień + + + Days + Tage + Jours + días + Dny + Dagen + Dni + + + Weeks + Wochen + Semaines + semanas + Týdny + Weken + Tygodnie + + + Month + Monat + Mois + Mes + Měsíc + Maand + Miesiąc + + + Years + Jare + Année + .. + .. + Jaren + Lata + + + Year + Jaar + Année + .. + .. + Jaar + Rok + + + Months + Monate + Mois + Meses + Měsíce + Maanden + Miesiące + + + Repeats forever + Kein Ende + Indéfini + indefinido + Nemá konec + tot oneindig + Bez końca + + + from the + ab dem + à partir de + a partir de + z + van + od + + + until + bis zum + jusqu'à + hasta + Dokud + tot en met + do + + + x times + x Mal + x fois + x veces + x krát + x-Maal + x razy + + + Repeat + wiederhole + répète + repite + Opakuj + herhaal + Powtórz + + + every + Jeden + Chaque + Cada + Pokaždé + Elke + Każdy + + + . + . + . + . + . + -(ste/de) + . + + + Repeat {0} times + wiederhole {0} Mal + répète {0} fois + repite {0} veces + Opakuj {0} krát + {0}X + Powtórz {0} razy + + + from {0} + ab dem {0} + à partir du {0} + a partir de {0} + Z {0} + van {0} + od {0} + + + until {0} + bis zum {0} + jusqu`à {0} + hasta {0} + Dokud {0} + tot en met {0} + do {0} + + + {0} Exceptions: + {0} Exceptions: + {0} Exceptions : + {0} Excepciones : + {0} Vyjímka: + {0} Uitgezonderd: + {0} Wyjątki: + + + Rule: + Regel: + Règle : + Regla : + Pravidlo: + Regel: + Reguła: + + + Exceptions + Ausnahmen + Exceptions + Excepciones + Vyjímka + Uitgezonderd + Wyjątki + + + No exceptions: + Keine Ausnahmen: + Sans exception + Sin excepciones + Bez vyjímky + Geen uitzonderingen: + Bez wyjątków: + + + Exceptions: + Ausnahmen: + Exceptions : + Excepciones : + Vyjímka: + Uitgezonderd: + Wyjątki: + + + Exception days: + Ausgenommene Tage: + Jours d'exceptions + Días de excepciones + Vyjímečné dny: + Uitgezonderd: + Wyłączone dni: + + + Convert to single events + In Einzeltermine umwandeln + Convertir des événements uniques + Convertir a los eventos individuales + Prevést na jednorázové akce + Converteren naar éénmalige evenementen + Przekształć w wydarzenia jednorazowe + + + Do you want to delete the series or just the appointment on {0}? + Wollen Sie die ganze Serie oder nur den Termin am {0} löschen? + Voulez-vous effacer toute la série de réservations ou seulement celle-ci {0}? + ¿Desea eliminar toda la serie o sólo la reserva del {0}? + Chcete smazat celou sérii nebo pouze vybraný termín {0}? + De volledige reeks of éénmalig de afspraak op {0} verwijderen? + Usunąć całą serię, czy tylko wybrany termin {0}? + + + Do you want to copy the series or just the appointment on {0}? + Wollen Sie die ganze Serie oder nur den Termin am {0} kopieren? + Voulez-vous copier toute la série de réservations ou seulement celle-ci {0}? + ¿Desea copiar toda la serie o sólo la reserva del {0}? + Chcete kopírovat celou sérii nebo pouze jeden termín {0}? + Wil je de reeks of enkel de boeking op {0} kopieren? + Skopiować całą serię, czy tylko wybrany termin {0}? + + + Do you want to move the series or just the appointment on {0}? + Wollen Sie die ganze Serie oder nur den Termin am {0} verschieben? + Voulez-vous déplacer toute la série de réservations ou seulement celle-ci {0}? + ¿Desea desplazar toda la seria o sólo la reserva del {0}? + Chcete přesunout řadu nebo pouze termín {0}? + De volledige reeks of éénmalig de afspraak op {0} verplaatsen? + Przenieść całą serię, czy tylko wybrany termin {0}? + + + Series + Serie + Série + Serie + Série + reeks + Serie + + + Single appointment + einzelner Termin + réservation unique + Reserva única + Jeden termín + éénmalig + Jeden termin + + + Resource + Ressource + Ressource + Recurso + Prostředek + Middel + Zasób + + + Resources + Ressourcen + Ressources + Recursos + Prostředky + Middelen + Zasoby + + + Resource type + Ressourcentyp + Type de ressources + Tipo de recurso + Typ prostředku + Type: Middel + Rodzaj zasobu + + + Resource types + Ressourcentypen + Types de ressources + Tipos de recursos + Typy prostředků + Middel type + Rodzaje zasobów + + + Resource selection + Ressourcenauswahl + Sélection des ressources + Selección de recursos + Označené prostředky + Keuze middel + Zaznaczenie zasobu + + + + Change allocation + Belegung ändern + Modifier l"allocation + Modificar la asignación + Vyměněný rozvržení + Wijzig toewijzing + Zmień przydział + + + Resources and persons + Ressourcen und Personen + Ressources et Personnes + Recursos y personas + Prostředky a osoby + Middelen&Personen + Zasoby i osoby + + + Hold back conflicts + Unterdrücke Konflikte + Ne pas tenir compte des conflits + No tener en cuenta los conflictos + Návrat před konflikt + Conflicten onderdrukken + Ignoruj konflikty + + + Selectable on + auswählbar an + Possible le + Seleccionable en + Označitelný v + Voor: + Dostępne w + + + Selectable + auswählbar + Sélectionnable le + Seleccionable + Označitelný + Beschikbaarheid + Dostępne + + + Selected on + ausgewählt an + Sélectionné le + Seleccionado en + Označený v + Door: + Wybrane na + + + Every appointment + allen Terminen + Toutes les réservations + Todas las citas + Všechny ujednání + Alle afspraken in lijst + Każdy termin + + + No appointment + keinem Termin + Pas de réservation + Ninguna cita + Nesjednáno + Geen afspraak + Brak rezerwacji + + + Allocatable in the given timeframe + Belegbar in folgendem Zeitraum + Peut être alloué pendant la période + Puede ser asignado en el periodo + Výběr daný do časového rámce + Beschikbaarheid + Dostępne w okresie + + + Access + Zugriff + Accès + Acceso + Přístupný + Toegang + Dostępne + + + Denied + gesperrt + Interdit + Denegado + Zamítnuto + Geen toegang + Zastrzeżone + + + can read + darf lesen + peut lire + Puede leer + může číst + Lezen + może odczytać + + + can allocate + darf belegen + peut allouer + Puede asignar + může alokovat + Toewijzen + może przydzielać + + + can allocate & create conflicts + darf belegen & Konflikte erzeugen + Peut allouer & Créer des conflits + Puede asignar y crear conflictos + může alokovat & vytvářet konflikty + Toewijzen met conflicten + może przydzielać i tworzyć konflikty + + + administrator rights + Administrationsrechte + Droits d'administrateur + Derechos de administrador + Administrátorské práva + Beheer + Uprawnienia administratora + + + + Start of {0} + Start {0} + Début {0} + Inicio de {0} + Začátek {0} + Start van {0} + Początek {0} + + + End of {0} + Ende {0} + Fin {0} + Fin de {0} + Konec {0} + Einde van {0} + Koniec {0} + + + {0}.week {1} + {0}.Wo {1} + {0}.Sem. {1} + {0}.Sem. {1} + {0}.týden {1} + Week {0} van {1} + {0} tyg. {1} + + + Select period + Zeitraum auswählen + Sélectionner la période + Seleccionar el periodo + Označ periodu + Kies periode + Wybierz okres + + + Period + Zeitraum + Période + Periodo + Perioda + Periode + Okres + + + Period + Zeitraum + Période + Periodo + Perioda + Periode + Okres + + + in period {0} + im Zeitraum {0} + dans la période {0} + dentro del periodo {0} + V periodě {0} + in periode {0} + w okresie {0} + + + Periods + Zeiträume + Périodes + Periodos + Periody + Periode + Okresy + + + + Conflicts + Konflikte + Conflits + Conflictos + Konflikt + Conflict + Konflikty + + + Conflicts ({0,number,integer}) + Konflikte ({0,number,integer}) + Conflits ({0,number,integer}) + Conflictos ({0,number,integer}) + Konflikt ({0,number,integer}) + Conflict ({0,number,integer}) + Konflikty ({0,number,integer}) + + + Which event? + Welche Veranstaltung? + Quel évènement ? + ¿Qué evento? + Čí je to událost? + Welk evenement? + Które wydarzenie? + + + Other event? + Andere Veranstaltung? + Autre évènement ? + ¿Otro evento? + Další událost? + Ander evenement? + Inne wydarzenie? + + + When? + Wann? + Quand ? + ¿Cuándo? + Když + Wanneer? + Kiedy? + + + What/who? + Was/Wer? + Quoi/Qui ? + ¿Qué/Quién? + Uživatel? + Wat/Wie? + Kto/co? + + + User? + Mit Wem? + Avec qui ? + ¿Con quién? + Uživatel? + Gebruiker? + Użytkownik? + + + conflicting allocation + Konflikt-Termin + Conflit d'allocation + Conflicto de asignación + Konfiktní rozvrh + Toewijzings conflict + Konflikt przydziału + + + + + Confirm {0} + {0} bestätigen + Confirmer {0} + Confirmar {0} + Potvrdit + Bevestig {0} + Potwierdź {0} + + + Save this Information? + Diese Informationen speichern? + Sauvegarder cette information ? + ¿Guardar esta información? + Uložit tyto informace? + Bevestig deze informatie? + Zapisać te informacje? + + + + The GNU-license + Die GNU-Lizenz + La licence GNU + La licencia GNU + GNU Licence + GNU Licentie + Licencja GNU + + + + New category + Neue Kategorie + Nouvelle catégorie + Nueva categoría + Nová kategorie + Nieuw klassement + Nowa kategoria + + + New sub-category + Neue Unter-Kategorie + Nouvelle sous-catégorie + Nueva sub-categoría + Nová podkategorie + Nieuw onderklassement + Nowa podkategoria + + + + Delete? + Löschen? + Effacer + ¿Borrar? + Smazat? + Verwijderen? + Usunąć? + + + You will delete the following objects: + Sie löschen die folgenden Objekte: + Vous allez effacer les objets suivants : + Budeš mazat následující objekt + Volgende onderdelen worden verwijderd: + Następujące elementy zostaną usunięte: + + + Yes, delete it! + Löschen!! + Oui, effacer + Sí, borrar + Ano, smaž to!! + OK + Tak, usuń! + + + No, don't delete it! + NICHT ausführen!! + Annuler la commande + ¡No, no lo hagas! + Ne, nedělej to!! + Annuleren + Anulować + + + + Quit Rapla? + Rapla beenden? + Quitter Rapla ? + ¿Abandonar Rapla? + Ukončit Rapla? + Rapla beëindigen + Zakończyć Rapla? + + + Do you really want to quit Rapla? + Wollen Sie Rapla beenden? + Souhaitez vous réellement quitter Rapla ? + ¿Desea realmente abandonar Rapla? + Opravdu chcete ukončit plánování ? + Planning beëindigen? + Czy na pewno chcesz zakończyć Rapla? + + + Quit Rapla + Rapla beenden? + Quitter Rapla ? + ¿Abandonar Rapla? + Ukončit systém Rapla + Planning beëindigen + Wyjdź + + + Continue Rapla >> + Weiter planen >> + Continuer Rapla >> + Continuar Rapla >> + Pokračuj v plánování + Terug + Wróć do Rapla + + + + Changes not saved! + Änderungen noch nicht gespeichert! + Modifications non sauvegardées ! + ¡Modificaciones no guardadas! + Změny neuloženy! + Wijzigingen + Nie zapisano zmian! + + + You have not saved your changes. + Sie haben die vorgenommenen Änderungen noch + nicht gespeichert. + Vous n'avez pas sauvegardé les modifications! + ¡No ha guardado las modificaciones! + Neuložil(a) jste změny! + De wijzigingen werden niet geregisteerd! + Nie zapisano zmian. + + + Discard changes + Änderungen verwerfen + Annuler les modifications + Anular las modificaciones + Ignoruj změny + Wijzigingen negeren + Ignoruj zmiany + + + + + Rapla version @doc.version@ + + + Rapla Version @doc.version@ + + + Rapla Version @doc.version@ + + + Rapla Version @doc.version@ + + + Rapla versie @doc.version@ + + + + + + Rapla version @doc.version@ +
+ (C) Copyright @doc.year@ @doc.copyright@ +

Rapla homepage: @doc.homepage@ +

+

Post your feature requests, questions or bug reports + to our developers mailing list:
+ @doc.developer-list@ +

+

Build-Time: @doc.buildtime@

+

Signature: {0}

+

Java version {1}

+ + + Rapla Version @doc.version@ +
+ (C) Copyright @doc.year@ @doc.copyright@ +

Rapla-Webseite: @doc.homepage@ +

+

Schicken Sie Ihre Anfordungen, Fragen oder Fehlerreports + an die Entwickler- Mailingliste:
+ @doc.developer-list@ +

+

Version vom: @doc.buildtime@

+

Signatur: {0}

+

Java Version {1}

+
+ + Rapla Version @doc.version@ +
+ (C) Copyright @doc.year@ @doc.copyright@ +

Rapla-Webseite: @doc.homepage@ +

+

Envoyer vos propositions d"évolutions, questions, ou erreurs trouvées + à la Mailingliste développeurs :
+ @doc.developer-list@ +

+

Version : @doc.buildtime@

+

Signature: {0}

+

Version Java {1}

+
+ + Rapla Version @doc.version@ +
+ (C) Copyright @doc.year@ @doc.copyright@ +

Página de Rapla: @doc.homepage@ +

+

Envía tus propuestas de cambios, preguntas, o errores encontrados + a la lista de correo de nuestros desarrolladores:
+ @doc.developer-list@ +

+

Version : @doc.buildtime@

+

Firma: {0}

+

Version Java {1}

+
+ + (C) Copyright @doc.year@ @doc.copyright@
+

Rapla versie @doc.version@
+ Gebouwd op: @doc.buildtime@
+ Ondertekend: {0}
+ Java versie: {1}

+

Rapla homepage: @doc.homepage@
+ Support: @doc.developer-list-link@

+
+ + Rapla - wersja @doc.version@ +
+ (C) Copyright @doc.year@ @doc.copyright@ +

strona Rapla: @doc.homepage@ +

+

Pytania, sugestie, feedback:
+ @doc.developer-list@ +

+

Build-Time: @doc.buildtime@

+

Podpis: {0}

+

Java - wersja {1}

+
+ + + + + +

More information:

+

+ Java-Webstart is included in all Java versions since 1.4.0. + To run Rapla, you need Java 1.4 or above, which you can download from + java.sun.com. +

+

+ Check out rapla.sourceforge.net for more information. +

+
+ +

Mehr Informationen:

+

+ Java Webstart ist in allen Java Version seit 1.4.0 enthalten. + Um Rapla zu starten brauchen Sie Java 1.4 oder eine neuere Version. Diese können Sie herunterladen von + java.sun.com. +

+

+ Besuchen Sie auch rapla.sourceforge.net für mehr Informationen über Rapla. +

+
+ +

Plus d'informations:

+

+ Java-Webstart est inclus dans toutes les versions de Java depuis la 1.4.0. + Pour lancer Rapla, vous avez besoin de Java 1.4 ou supérieur que vous pouvez télécharger depuis + java.sun.com. +

+

+ Consultez rapla.sourceforge.net pour de plus amples informations. +

+
+ +

Más información:

+

+ Java-Webstart se incluye en todas las versiones de Java desde la 1.4.0. + Para ejecutar Rapla, se necesita Java 1.4 o superior. Se lo puede descargar de + java.sun.com. +

+

+ Para más información, visite rapla.sourceforge.net. +

+
+ +

Meer informatie:

+ rapla.sourceforge.net +
+
+ + + + Start Rapla (with java webstart) + + + Rapla starten (mit Java Webstart) + + + Démarrer Rapla (avec java webstart) + + + iniciar Rapla (con java webstart) + + + Rapla Smart Planning + + + + + + Start Rapla (with Java Plugin) + + + Rapla starten (mit Java Plugin) + + + Démarrer Rapla (avec le Plugin Java) + + + iniciar Rapla (con Java-Plugin) + + + Start Rapla planning (Applet) + + + + + + Server Status + + + Status des Servers + + + Etat du Serveur + + + + + + Rapla Login + Rapla Login + Login Rapla + Acceso a Rapla + Přihlášení k rezervačnímu systému + Rapla Aanmelden + + + Choose your language: + Wählen Sie Ihre Sprache: + Choisissez votre langue : + Escoja su idioma : + Zvolte váš jazyk: + Taalkeuze: + Wybierz język: + + + + Rapla version @doc.version@ (C) Copyright @doc.year@ @doc.copyright@ +

+ Rapla comes with NO WARRANTY!! + This is free software, you are welcome to redistribute it under certain + conditions.

+
+ + Rapla Version @doc.version@ (C) Copyright @doc.year@ @doc.copyright@ +

Für Rapla besteht KEINE GARANTIE!! + Rapla ist freie Software, die Sie unter bestimmten + Bedingungen weitergeben dürfen.

+
+ + Rapla Version @doc.version@ (C) Copyright @doc.year@ @doc.copyright@ +

Rapla est SANS GARANTIE!! + Rapla est un logiciel libre, que vous pouvez utiliser et distribuer suivant ces conditions.

+
+ + Rapla Version @doc.version@ (C) Copyright @doc.year@ @doc.copyright@ +

¡¡Rapla viene SIN GARANTÍA!! + Rapla es software libre, así que puede usarlo y distribuirlo bajo las siguientes condiciones.

+
+ + Rapla Verze @doc.version@ (C) Copyright @doc.year@ @doc.copyright@ +

Na systém Rapla není poskytována ŽÁDNÁ ZÁRUKA!! + Rapla Toto je volný software a je možné jej rozšiřovat pouze za určitých + podmínek.

+
+ + Rapla versie @doc.version@ : @doc.buildtime@
+ (C) Copyright @doc.year@ @doc.copyright@ +

Rapla wordt geleverd ZONDER GARANTIE.

+ Deze software kan enkel onder bepaalde voorwaarden vrij worden verspreid. +
+
+ + + From all users + Von allen Benutzern + De tous les utilisateurs + De todos los usuarios + Od každého uživatele + voor alle gebruikers + Od wszystkich + + + Own events + Eigene Veranstaltungen + Vos propres évènements + Sus propios eventos + Moje události + Moje wydarzenia + + + Filter name + Filtername + Nom du filtre + Nombre del filtro + Název filtru + Filter naam + Nazwa filtra + + + is smaller than + ist kleiner als + est plus petit que + es menor que + Je menší, než + kleiner dan + mniejsze niż + + + is greater than + ist größer als + est supérieur à + es mayor que + Je větší, než + groter dan + większe niż + + + smaller than or equal + ist kleiner gleich + est plus petit ou égal que + es menor o igual que + Je menší nebo rovno + kleiner dan of gelijk + mniejsze niż lub równa + + + + greater than or equal + ist größer gleich + est supérieur ou égal à + es mayor o igual que + je větší nebo rovno + groter dan of gelijk + większe niż lub równa + + + + is earlier than + ist früher als + est avant le + es anterior a las + Je dříve, než + vroeger dan + przed + + + is later than + ist später als + est après le + es posterior a las + Je později, než + later dan + po + + + equals + ist gleich + est égal à + es igual a + Je stejný, jako + gelijk aan + dokładnie + + + is not equal to + ist ungleich + est inégaux + es desigual + není rovno + ongelijk + nierówny + + + contains + enthält + contient + contiene + Obsahuje + bevat + zawiera + + + Restrict view of {0} + Anzeige von {0} einschränken + Limiter l''affichage de {0} + Limitar la vista de {0} + Pohled omezený {0} + beperk beeld van {0} + Ogranicz widok {0} + + + Resources and persons + Ressourcen und Personen + Ressources et personnes + Recursos y personas + Prostředky a osoby + Personen & Materialen + Zasoby i osoby + + + Only Own Reservations + Nur eigene Reservierungen + Seulement mes réservations + Sólo mis reservas + Moje rezervace + Enkel eigen reservaties + Tylko moje rezerwacje + + + Events from all users + Veranstaltungen von allen Benutzern + Evènement de tous les utilisateurs + Eventos de todos los usuarios + Rezervace všech uživatelů + Evenementen van alle gebruikers + Rezerwacje wszystkich + + + Complete time + gesamte Zeit + Période totale + Periodo total + Celkový čas + volledige duur + Całkowity czas + + + All filtered objects. + Alle gefilterten Objekte. + Tous les objets filtrés. + Todos los objetos filtrados. + Všechny filtrované objekty. + alle gefilterde objecten. + Wszystkie filtrowane obiekty. + + + New rule for + neue Regel für + Nouvelle règle pour + Nueva regla para + Nové pravidlo pro + Nieuwe regel + Nowa reguła dla + + + + + Allocation of {0} + Belegungen von {0} + Allocation de {0} + Asignación de {0} + Umístění {0} + Toewijzing van {0} + Przyporządkowanie {0} + + + + + Print Preview + Druck Voransicht + Imprimer la prévisualisation + Imprimir la previsualización + Náhled před tiskem + Afdrukvoorbeeld + Podgląd wydruku + + + Postscript + Postscript + Postscript + Postscript + Postscript + Postscript + Postscript + + + Choose your save method! + Wählen Sie die Speichermethode! + Choisissez la méthode de sauvegarde! + Escojer el método de almacenamiento + Vyberte způsob ukládání! + Kies opslag methode! + Wybierz metodę zapisu! + + + Printer Preferences + Drucker-Einstellungen + Préférence d'Impression + Preferencias de impresión + Vlastnosti tiskárny + Printer voorkeur + Ustawienia drukarki + + + Title + Überschrift + Titre + Título + Titul + Titel + Tytuł + + + + Rapla, smart resource and event planning + Rapla, der clevere Ressourcen- und Veranstaltungsplaner + Rapla, le planificateur intelligent + Rapla, el planificador inteligente + Rapla, chytré plánování prostředků a událostí + Rapla, Smart Planning + Rapla, inteligentne planowanie + + + Rapla + Rapla + Rapla + Rapla + Rapla + Rapla + + + Hello {0}, enjoy planning! + Hallo {0}, viel Spaß beim Planen! + Bonjour {0}, amusez vous en planifiant ! + Hola {0}, ¡disfruta planificando! + Dobrý den, přejeme příjemné plánování! Přihlášen uživatel: {0} + Online: {0} + Witaj {0}. + + + + Database + Datenbasis + Base de données + Base de datos + Databáze + Databank + Baza danych + + + Display exceptions in calendar + Zeige Ausnahmen im Kalender + Afficher les exceptions dans le calendrier + Mostrar las excepciones en el calendario + Zobrazit vyjímky v kalendáři + Uitzonderingen + Pokaż wyjątki + + + Display conflicts + Zeige Konflikte + Afficher conflits + Mostrar las conflictos + Zobrazit vyjímky + Conflicten + Pokaż konflikty + + + Display mouse-over tips + Zeige mouse-over + Afficher mouse-over tips dans + Mostrar las tips mouse-over + Zobrazit vyjímky v mouse-over + Tips + Pokazuj podpowiedzi + + + Exclude days + Tage ausschließen + exclure les jours + Uitgezonderd dagen: + Wyłącz dni: + + + Rows per hour + Zeilen pro Stunden + Lignes par heure + Líneas por hora + Počet řádků na hodinu + Tijdsdelen per uur: + Podziałka godzin + + + Restart Rapla client + Rapla neu starten + Redémarrer Rapla + Reiniciar el cliente Rapla + Restart klienta + Herstart gebruiker + Restart Rapla + + + Restart Server + Server neu starten + Redémarrer Serveur + Reiniciar el servidor + Restart serveru + Herstart Rapla server + Restart serwera + + + Load data + Daten neu laden + Recharger les données + Recargar los datos + Znovu načíst data + herladen gegevens + Odśwież dane + + + + + New Event: {0} + Neue Veranstaltung: {0} + Nouvel évènement : {0} + Nuevo evento : {0} + Nová událost: {0} + Nieuw evenement {0} + Nowe wydarzenie: {0} + + + Edit event: {0} + Veranstaltung bearbeiten: {0} + Modifier l"évènement: {0} + Modificar el evento : {0} + Upravit událost: {0} + Bewerk evenement: {0} + Edytuj wydarzenie: {0} + + + Edit {0} + {0} bearbeiten + Modifier {0} + Modificar {0} + Upravit {0} + Bewerk: {0} + Edytuj {0} + + + Delete {0} + {0} löschen + Effacer {0} + Eliminar {0} + Odstranit {0} + Verwijder: {0} + Usuń {0} + + + Translations for "{0}": + Übersetzungen von "{0}": + Traduction de "{0}": + Traducción de "{0}": + Překlady pro "{0}": + Vertaling voor "{0}": + Tłumaczenia na "(0)": + + + Change {0} + {0} ändern + Modifier {0} + Modificar {0} + Změnit {0} + Wijzig {0} + Zmień {0} + + + {0} ! + {0} ! + {0} ! + {0} ! + {0} ! + {0} ! + {0} ! + + + {0}: {1} + {0}: {1} + {0} : {1} + {0} : {1} + {0}: {1} + {0}: {1} + {0}: {1} + + + all-day + ganztägig + 24h + 24h + 24h + 24u + 24h + + + You need to restart Rapla/Rapla-server when you change the options! + ... + ... + ... + ... + Om de wijzigingen te activeren moet je Rapla herstarten! + Zmiany zostaną wprowadzone po restarcie Rapla + + + + Calendar name: + Kalender Namen: + Nom du calendrier: + Calendario nombre: + Název kalendáře: + Kalender naam: + Nazwa kalendarza: + + + Reset + Reset + Réinitialisation + Restablecer + Reset + Terugzetten + Resetuj + + + Default Selection + Standardauswahl + Sélection par défaut + Selección por defecto + Výběr výchozí + Standaard Selectie + + + Only 1 event type is allowed. Adjust the filter! + Nur 1 Veranstaltungstyp ist erlaubt. Passen Sie den Filter! + Seulement 1 type d'événement est autorisé. Réglez le filtre! + Sólo un tipo de evento se permite. Ajuste el filtro! + Pouze 1 typ události je povoleno. Nastavte. filtr! + Enkel 1 type evenement is toegestaan. Pas de filter aan! + Tylko 1 zdarzenie typu jest dozwolone. Ustaw filtr! + + + Include date: {0} + mit Datum: {0} + y compris la date: {0} + incluyendo la fecha: {0} + včetně data: {0} + met vaste datum = {0} + w tym dniu: {0} + + + Occupation + Besetzung + l''Occupation + Ocupación + Obsazenost + Bezetting + Zawód + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/RaplaResources_cs.class b/eclipse-build/org/rapla/RaplaResources_cs.class new file mode 100644 index 0000000000000000000000000000000000000000..797dcea4c3c0f22b20cccd2175ccbbe0cdd87ef4 GIT binary patch literal 24001 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 i)I-ryS~0D@P=mfeMwcT5lamoE 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaResources_de.class b/eclipse-build/org/rapla/RaplaResources_de.class new file mode 100644 index 0000000000000000000000000000000000000000..45ce0dc4ea7980b283cb3bfeff7b21f08a2c29a8 GIT binary patch literal 26670 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

+The client package is responsible for initialize the gui +and the client-plugins and providing the services for the +client application. +

+ + + + diff --git a/eclipse-build/org/rapla/components/calendar/AbstractBlockField$DateDocument.class b/eclipse-build/org/rapla/components/calendar/AbstractBlockField$DateDocument.class new file mode 100644 index 0000000000000000000000000000000000000000..5cb92c04dae450cae1ad5787e496d208462e824c GIT binary patch literal 2176 zcmbVNU2hXd6g}5pYj2h&5DXYY2yI9l6EK9tB?*uZ2a1UaP=gDELdW)yEI7N??wZo} z6{%8Hsn3ZjmG&i1twco~S}LTzw)~F%2vn8c*`$z=hbpz?-I+Ug=H7eGxwF6j{mU}| z{kW?kKsaeTvl&O!Ya&yz=j*m5EziwVL`_;%;bg|kuIGq~H&L@Ich8uzR_&S;o}9ER zjd}Le5F&Kk5%p~NOl^L9Z;24f*;N?>=WReoi;f_+ z88FaJ2&R-nYr(YSbYs3Ooy($JlZ0&rn;|O+E|cf0#*iw5FuLh1)iUc1cX6LzHX`QD8g>gYyFLl5KnX7&bp zktVcwc5Y5MboZzRapRSsj||y{-=JH*joq zxhU(x5uWWR`=Eg=-X%mur6OIoYmhMYKXjCz$!$a+zY==L!0_4-S%u6A11A;45pF!j zSEVv)U`&ZFRF<-?d?u6%a}0HACdUw$lrm2n*o6c;*|%@A*eK7;aLX!5zKJp`i3DNa ze@KNPt27*kyL*Msh-){T3X422!?7cdbQ?8hneMP-xj1JxYSjr&kS*8wZ?a3-2b>$c z=!weR^P=uIgoY0YdpBrqtxPpc`w`~tdmJyUbX1Bl5;qKdh?}h7`CB#NdMi{Ci{m4d zHE>PsuWMC{d|^q)Kt&N8HQj>rc&^Zr2CjkA3^K}mT+y%WjHz09=f$0ztmE0@#f(B0SUlS+uQ9T^>AEs|L34%3C}dV9x-*_4L7?(3)Px z)<--GU^_q6Zcr!UJT}yrPuPK-{3b=R9|H*SEUC_-KRK3)@H`z%H?g;g{llTYCJqdT z6X9pShKD1;tQO2hgW1>;9)z-b`Y~D);dpGIiGz!X1+)4RF0C;hUBHBz#$$La z|Muml@#q3q&taN4l}te& zKFakK{8mwBByk4s`N%)VS>%1Dp5q**IHwl;h639{*ovn(k7?$67arpRk0Q*-BV6RY z8anU;F5!Jdu^(Te$hH`I@EI<%O~)0k?=WI7(FI-OkDZ2Y4JH41Rl`*xru{GMq@lLJ z_7?~QUZ9=xVbQ+HKECFhl(xncmX9&BfPOVvoi%ZE5k2b+%z4}D>J!{z0i=_AmQj6; z_-?KPbQU`08R>KAqbUs0G)C!yk5=bOyjN(Ay+UgYx4F)MUtI`+p)ikUIky1jVDeji KD2N;R4)6~JwDYt8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/AbstractBlockField$Listener.class b/eclipse-build/org/rapla/components/calendar/AbstractBlockField$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..1a39e895b449b5a83199c0444a82188aa03f1df2 GIT binary patch literal 3810 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/ArrowPolygon.class b/eclipse-build/org/rapla/components/calendar/ArrowPolygon.class new file mode 100644 index 0000000000000000000000000000000000000000..37a9630e06be9f647a512a9d645e25c6e3598241 GIT binary patch literal 1295 zcma)6L2MgU5Pf5Rd)KZ_wxx?{?35IOaojYP3blY%A;=-AqX3NpM)ZKZ$!_X}?XI<6 zH!4T&T;Rk7Jz{`~mi4*;&> zvVn}C8O3*6u`>*u)P#j9Ldy;DxRex8987=;&4y+`kir29&`1*tzGloTH?b zdg&T@vF`*uFCO_(_RJ>{z$O0^ZyTXoo$o* zLspaynH>3UGN9cpB8v-}#=IcgSng?BwGtL^QD8c*dn@w8L{slhsOR^i*!5y&-WC*w zyr>VRm9nmX$QA=9;F9;lk(ZERju#R$T^){tfXm4LlnlyyiF5GD+s-gOPH`_9#|Pe~ zuMd3o-y>Mnw~s|~%IdqsJaWi$HMq;b6!=k20vo8O~4G5dCYX1aEPX4SeegY{2g?kTLF!akb7OkJ;^me8dqW?|;7TK7(2 z(^!5MYuXc-_ExPc$C{9-$Va6$@@zV>tJdXX?EY7j$51n5YTHHCPn+oww{A-DAEX{) z7J7(ZV2SSJ z{T)9B5Aia7!YlX%*YF6h;#a(e-|#wq$92hIO-#HY=dmt}=tvzKausjM8a8DcTk;`p z$^czSurm?Ua4L?Om}EQ?6RoM3C>?UuqAN4=5(TDEmv_mzLTR;Rlguj=_PSgn{|aTg zC98OmmWf?i;(014;85mxstU#2;61FM^f%LT20t-;z~sMR3;*4Zu}H^;{E3Ft>-B{{ Muty;;Gbe-Q6Fe;8p8x;= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/CalendarMenu$1.class b/eclipse-build/org/rapla/components/calendar/CalendarMenu$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1f44adf05bb12533aa9789cf63c379b0e6d59d75 GIT binary patch literal 1091 zcmb7CYflqF6g|@i3w4pFsDO%EwGU(g-xeXEs3~bp1nl==JG7(A4B45A@n4xJCVub- z_@j(>mZl}~3rsSPJ9F;6XU@HU{{H$6U=Vv__i$gtdwf3<43l+DQZzYzjqKiK#!+Wjx14EV7P z-jehk8JbG5nImR%KIUsjt3Dp#G37dtQM4mM62mLhXgKv*n=%jn+E<1OXA&u< z2ao;CBx`P0cjHjJk*;79XB&3OF{QG;R$-(KwQEDzj&6B)#ZWqb*D?4tr9@nfxG})TlGOagHaHpJ3FMdaX=F$mP25~2mA?$nd*&!ag tn8RKYf8jJnFFr-X6Fj91S<3e;VVcGZ@=W0+Dzs;?M(a9F*Kv*;jeiwz|7!pM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/CalendarMenu$Listener.class b/eclipse-build/org/rapla/components/calendar/CalendarMenu$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..ef2e19071a2380935a9f81c7aff66f3cdaa3b906 GIT binary patch literal 3631 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/DateChangeListener.class b/eclipse-build/org/rapla/components/calendar/DateChangeListener.class new file mode 100644 index 0000000000000000000000000000000000000000..f8c4e346eedc28b22687d42b6a9788d6ea17a1d3 GIT binary patch literal 253 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/DateRendererAdapter.class b/eclipse-build/org/rapla/components/calendar/DateRendererAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..f3ae63959c1c484698e559d9449fa10c82410779 GIT binary patch literal 2171 zcmcIkZBr9h6n-vA2qX(a5E|=Cfm%!gvQp@aCV~*PjRwh-7+c#;XGykkHQCK9OIv?R z|An2YY3m2ScBVh7<8yA-keV+zPBW9c=iWW{JTK?o{pa5oF9Cdv-8e=R);zyy`c|i9 znRTz-@m$*t4$ZpNvfYN|n>Ve%{)(aP+x~XL>IAkQM^s_zvGtQ>wk)@4?j1a~>p>i& z3b~UPQ%JObcnza)x~vNx1y0K>hTwUf-9E9H}y=ibqR<2u2nLN+r{yy~>=hg6v# zSSx!%B%iG*M2lX-P9TC)29lUkh-9+0aVVq=j3bf2Y0Skj%lR;01MeZNkZjsP$vq4# zw{9yGP6|H2r*D7&zi%LpF@;lQ$F=VrwGV8+Y8|v#I;DBnEZ>oNxEKu{Ifn}CZ{bzg zS6Vg}gzo&eA$`wiYD;@1;Kv4p{wdtgyanuF2l@!ZRi!Iq$A=(AcXzD%lcw(-xs9UN z@_dEGL6hak=Ci#**3W^dbMn%;jDak23h_fb5JZKU;f*!PTrqGNtL#3}cqlTZY$=Ht zt{C_TYYKCj5`RM&%xn;xw_`wtrlT;iACUE~)d~AF$;wsFYgL_2)&7Mb7l*0zs_09$ zANY>j%nOOn4Sa&D3h6--gGnMFZ=itd6hNs8F{Wmnlz_y<#s1gfu&Vp^v4IWYNQ`_<-{f?0Oloxj2JM!!HZAT7hTB^PA z^;nf-g9UDh@E^knzePOX93dBs<0#jYFgQ+d_C50=e9q+lz+_H6$8>Iafa6&fndf`~=eRQ8+luqJz!{4$XP$*6TEHTA3)F`pREOD8Cw&aHa=8bU zTPE-^-W-VoOCjDR;$?XEvl=tktI@|y<054VW?G|*;Iu{;1L$#x{wsycyF%`FO#h9T zddA?)au=6mLE@=+7t0cih0j>{jPm&x%ov_=e?&X7L?3`vT5B@8f@!Q_mLL5KSSR8J z->_X=6PMrZj$B}Y2F~sZPMH!%_5Pv zPD+!PGo<;FK1h!$+OKn6T$3PnJ`AF>^h_^JB_ppRqaRK5qe&gf-Yzz~*b#?&XKqm+ z+7fBsVgK)vVwse8>GeHa!yay;qG@mRc=X+^@XalyW?rPV{uK*y@#WMf^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/DaySelection.class b/eclipse-build/org/rapla/components/calendar/DaySelection.class new file mode 100644 index 0000000000000000000000000000000000000000..88e5daac24ad76b7a2a7e076c5c7082721d734ab GIT binary patch literal 11249 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 O@G(bq2>0=C4fq#r(k|ry literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/NumberField.class b/eclipse-build/org/rapla/components/calendar/NumberField.class new file mode 100644 index 0000000000000000000000000000000000000000..b0580ddaa02f651dc0d56fda955240bd9853cb14 GIT binary patch literal 5255 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 P@EinH64XB>Ed1+#QbXA< literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/PaintEnvironment.class b/eclipse-build/org/rapla/components/calendar/PaintEnvironment.class new file mode 100644 index 0000000000000000000000000000000000000000..3a2d244a7040e9267992cd831d2d28c12f9e7506 GIT binary patch literal 623 zcmb7CO;6iE5Pg#bOk9_b5K0?bpamq#0VA%hdMRx|ihvdr#Bt*+$s%VratsweivvQU z5`rr~s_Jua!Rg4fvh8rMd8(sSAZ@{PeGpf_)9?osJ0|LX5|kqy$491> zc9^vz@U#22Hti0}$|ugIIq7Hqe?oeE=1Fhgu?>nzBB(xvfAMX05o=PTpN%!?7eR6L zV?$8->RQ@I5!C>bnDX#SFh1;Wpyy)-)iMNc0t9&JVNOsPrVO=x)E?931B_!rFi|&F z@1Av=IyqF$ShK3`xUq&xOm@$MrL<%Ef{ps~Hq24{19z50`n$=rr?%9^fsQ$;adtgx z4~y)%$ZzQJj9`>D^T!5Q&e6~DMUEVBz;gnk@Ng@{3ca6H%OZ1Y*O*@WgPG%N%wFL& s-5TAuS9o_xx_|}R3QDZM;eT+)W!$4if06OvQ3CJrfj7YtZ2`;w0HH>WL;wH) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaArrowButton$1.class b/eclipse-build/org/rapla/components/calendar/RaplaArrowButton$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5a2d8dd0b4eea3653f523175e0a9c4196f287f84 GIT binary patch literal 1289 zcmb7Ee{a%I6g>~R)k1NI4u7CH6&0A$F=kwXnqY^?5-?^n{NX>#qr8ktX-Qkgckx>+ z*=FJ&egHp|@xIb5W;2UG;JtSr_ndq0Ipx>yA3p(XVoODWVZ-we4WCaOZdl%U;<>^N z1H}#A=Wf^!c__>|NHc{Jo~d}s&|0jK(q%9m&!uEbLCF1(Au%SM3RjGgAw#uTqb{Gs z0%jr+_JkvNq{3Vj)3K>xnpA4voBEdcU`q$AUUYd)3PxUOyO!exwtLtW;m{jMBh{&@ zvbig*r0=?}@J)x4&g7Nc_6$B==5Ak0jJ5v_UP)~qoZ@a^PTVL?|*;)6Tl^W zs368raNOIv%Uc%L4X4?1Y+?JJZg5N3b?)lR@=3vUovmwa-*@axc&qx{7sZA!HiWAn z!7y-#Z*tw@_HBKsc1IY#f*ywSk#)Ik+q`B8hJMfIu3s@N%k&u70)rY@W`)J?GW7Tj z)5}aTOqIKXHcjtdHEq+MVYr;__T|Y{hD6b+i#|{_8dUVFh$F2*!w^F}D;-j0(-w>E zW=*&&VKM2lLtL$L*OceTn2;qf6uZRm6mF@eWI#?I#xSnn6hpo{Rx~_|(+o=URz2jG zm1KoyHT0oZ#q-E0IQLlps&_qKG&M}%1%^SR?Ybn16|*TGwT!q}kTJ3v6d5Cj7ZqG! z7?a)J*1av0R8W=cP2aRk-xQvPmyoB{oA#!&A<85km*GUV{G>jnCC|sIJ~uWhycH3u zePp_#VAq$0CrDYBqFg%P@^!IE@brS=n~psv_r18nK>fRjS7h^EC7_*&LU~S?I&xQi zm%vhHl~{gV!y6#pd%0liBl8m2Jx$fT-R#JdWX9&7MQ z!xg-);XN!%d09fV!ceOURv3nk63%TKq9uuCh>2~6kq*)hpAlDT)oHtixNge%9{K+_ zBQFC|jV0R_ZqeeNCkT7`$u9}cQU!6klC(mKD=3VF3JeU$k)(5iE)B=X>p1PMAVz;` zckaR-Qn`H$?$RlSVOo302iU|2ty-{GF^Us(Vt58aQG`a25tzv39wPM+CkNEV&K}O> z4)EL_&PT=vP{=STgU5s5qXZK87%6;0K|dwvpCN81K z2D7+Oq(KodF7N_wY^7x)c=?C)skvxCGJbp$Azo3Hq0qW5ZS%i9?n7N5n gS|wpBlKuJkyn-r85ATyDh7Yh7JfZoZ(OC!n0}PIsssI20 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaArrowButton.class b/eclipse-build/org/rapla/components/calendar/RaplaArrowButton.class new file mode 100644 index 0000000000000000000000000000000000000000..c006b043eb9ae12b730f7c4f22be9ad2830de9c0 GIT binary patch literal 3232 zcmbtW3wImE75+v~TWk{J#4*NBOdw5V5iBR9f!fr?ks&D9NpKQ_X^UB}#?r=;*6gn1 zKpzwu%A+OF(r3!6Es#D)U#F3KnsfRC`k&g<@6O7SlIE0?Q=Q|P*_k`vz4P5~=K7!i z{`)@w9K@f}h$)PEemU>kt5rMic(qlpuIpitckHUJmux>jCo5CF@2wwM3q!A-MnYlx zS^J!QJ|C>R^>Y4Lw4l%vXy3J~^V$zwuYRUDt)Px6Y$NxGJwQs}NN zIu-4#XkVc)b8BJjjhvne?NApYkO_r!ZLy@Q_VaXHRIqA`OD5)NZ@tc`rxg;bUX`o+ zKf{|j?@5}Ly*go)!@q(;>LIu8hLeQJ7DndT6}*zpK;aGxJ20S-%od8Wux-Yz>*H&+ zCGDTKm#SK!cg7>7^EL_McXKikR@^{g>@%XdF$EJD#4#)`?^1|oN9NPGTVd+|CNP6N z*ekG~Q@B5St3i#-caw?FTgc!x8I4%5uti4qTG)zhGP=(~FSe(VCq*KmyuBXgi}gT< zK?b8ZAkGgmjoBi9BlAM-Aq!u?VTy%Dv$kJ$naLg5nHzRbM8*$V_#(y$K;u*H3*#WS_Rc(jUkx&y^qnK39tyV=0+sikzVwNdrIaZ-!`x4VJ3y))lbF`0+x-&b{ zre)f#>AGA)isd*?rg4HAY?0PlweSSy6uJoVq+1FrMo-hS<+Oz}veeC`$Fy6ngyj8Z z_`DYDvQ_d{F@^^-cp6_#<0}eVjmxUdXJXb4D;BmaE2uI;$7eG1 zQNDl`*I@$sJ89gUJ~%y*24jxSBdRTURga0NfiigxK^hdp?X5UA_gM(BMt&u6vVr;S z5R92J(tQr=7S4^{zT(X#QeebOX++wk;EjeNXGt?w z*xe@G%v`T9sSsuI&^FpkKUd-e?~vBFyMg{ca~vbKpvioe_Bjl4v@^295O(p4JEZUsMbHMCXdlp8 zqMOQXV0Z2s_AGF4&sFTp#jheOO)fWh75lj~x)A4Y17i)`pBox#-~mofi2auum~4l! z58VX34+#wOb=t$g?`C+T{K~T(!yz2tAs#Uy-W54-g*ep=kpbZdNr^Gc0;Ze6PV!rh zn39mPZI98xA1A#t9S2XfP*e1_g%}Et;%E~qZ@z(K?ytyxO3;Wy$q#VCz*uISY{Do! z*2=*v3|sz*8;-bXpg6m~f!T|bY)@T0oXG9!OOT&-gm*IWz-ewe!!*s4mnYGWr?49f z#?_$+t`+fclZOml9-)1VJGODp7CP={BA?mdE zC;Afa;~cZJxWH5H?@MgJzKW%5C@u7HExCc^@#H|V0e3t#kh+FiGs9j3s{^TcT#Onx zH<0=Zo;OoOS!&>$GVxN!#09!|bzy*buQ%}h%ao>KpBo(7z}wewd_e|37*FQJ)jOvB zscA0>L2;wqIcgGkhBPhmHatuH+my``<>KH0ma3!Bm_wOGwZa*fb?Yq4$_g&5c2MZ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendar$Listener.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendar$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..ba19e4502f1ef30ceb3347e01328481d528dc69f GIT binary patch literal 1779 zcmb7EU02gU5WU+1DIt{dsp1ESDE$xuh^Q0+Eud(DRK@@hD#+YZljOF|PvXjdy~s-fk#)%C4io^>R&FboRo2i1PBlbx3c zO-<~O53j}s7{*UOby0Kp@hFBCXGgb(#~DVGrw1RS9H+opJ+C`+bZEGt$Vi5vDPiV# zD;PQyv_h8QN2h`|bTRnD!l5In=lNQ3Z;M+`wJn1)bR|tvFQZwySeK1Wf;_`?BLpgH zQx1ylR3ynU426^bl6gr;9*<;X^y7kr^9->D)p@sr}P)Lb6Ait zPX*)lf=V6=?%_VYJpQhz8C3VZWllBCA|BZkm%6B6N$?N8(JfvTOl&<+@DM9i!ld0o zV}wttD;})+ANTAPuvd}{?Hi7keY>g^%5PcTFpE}}iot#D$0QmPGSF*X$y1X|7@BQ! z%06(^`Y=eH#19{uA%TTLqNPwP_S4q}h4$KMHbwhB8s%v0D}vE)2z{ZI58d={As=8B zJ@gm;%Vo6B zx?4srD(I>l@sk=Ox74{*b?-}#B2^31c}{X|KSqqj;NO%JgwX!+f=E)gN% z8T~Wp#B-wX0yB6?m9dEwUe!=dSE#0m>La4~m?E3uALtjkC28R!eb#7{-8}lS4*UV= CYue@j literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendar.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendar.class new file mode 100644 index 0000000000000000000000000000000000000000..37aa4580298aab74441cedbfdcf483f2bc6549bc GIT binary patch literal 6977 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$1.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$1.class new file mode 100644 index 0000000000000000000000000000000000000000..63b6f629e3a7ced34f7847f0a8d45c83d33e570e GIT binary patch literal 1184 zcmbVLO-~b16g{sUD7FKXYEdYPA5}|>3?PDnAttrNlHx+Nt{?3Sj812oc~dC=#+_>y zf^p$qf0XgO+K?u&fw!2s_rCje&Yb!4_vbGF%h*UDCa@BO`%Wm^o^%>Ps~z~tkF?W} zp7NVAbl#bpa^I_TWvlI}{89pzK<1M?lwC(3x&FShy%oxq5=d(my3(twP`iQuq54`t zYzvH*17AndkLuFvs3FcbM+gi@2d>U9a*x{O7ujI_OV@X!O@V6RDh+A|gX2je*o{I0 z*_f*fBrDy9YDWa16G#h8_p;TRdBr^5Gg&m(P_T0qL{lHAen2Q9;m!0Hu%<(J4!Dlh%OKW+sbO@cG$cVVy{ z1`Xo*==#mzsB*}UFEHC*+W=N3w)b{vZ~ZsQKc#SSz7 zkzKqlwYM9|#^)W`?$esw4LV^%ZMlZ{sfz@@V3rUVulNlw&{V~aiVlKi0?!4OFE3N0 z212&0zOTZvC$(0Z6cRfBff%MSgkgG#o;Q+C8yWR%uyB+aWArR$jAMdUnGsW&Dwe(@ zQ=C7=jc>j5n|vmD$sda?mvD>LWY14wiet=4A%_{pEJGjjOhcExsmhg3Fgt^Nj}_W6 TJi}@)w#F{&w2U+a-#q^S<;)@l literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$2.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$2.class new file mode 100644 index 0000000000000000000000000000000000000000..9f9c1a2bc3237ddaa662d524807ef2fe395ebb2c GIT binary patch literal 2927 zcmbVOYjYD-7=BKhX49~g(o!H=wPKZCEP+}<6F{N#25Gr8R47&1CQGv=*@VsZ0-|`q z`~5Pb<2YVs7(3%986i}iQNB6j_z(OO=oe=k#`>Jyqz!2)N-xX;#p7(ig`SqV4 zege>rj}(*%bfm4ZprvJ!S}>MQWzwc@+Sy=COX_A^vx0}@PG^4AHLayGNxiXMfk&Wv zT$|K_NzEJ!?jIf3W3~dXz~<%c?a^$#GeI3aVq|UI)GdKk$^2`Vsf{M}xPTZI@Y)F@ z+qjtsBg>my3SyZ0+YQsOcM5E4x*Y?}Ljs=8bX>0l5vr(!-;Z*vRa2J*TKdUP4L4!b*lP-m%pgVODClw}aBN^OfS=wnC+pr%S(5T=(fwtwZ zDnY5@emo#hIi}l#=?N=FF4r_QyH^xt8|^otMM1Mb?Go3kXvKp9iebj}>HQ}NvT3o2 z=03^CCKW;Hm*4R#YNYh6w7o@Tkvzmu6NpsrTLOcEhXq=fckhP$^rHjYR6K%5iH(M( z@645ge-4FG7FNJ;Z~PCIC0;*5*r8%)!Ky3kz~d@*VK>u;H%Zwr%UfXW4Yw8KM#NWnqUzmPu#Fp{`Ifu`c5 z8MH0K919o2EF33!y*R952v3mhY%$yG@+KU&=Fc||NxF}!7{;*$y0-`n+!oy~rs-gI ziU@;yqa>=^(35ed(USt}9RHl!aedf5VIu{By1~?1>=`Kt;k1e~g_Dvx*)Gni zcoxrbXk?8uRONtR-j?f=>>a^dw0n7(I~3hEEl}aKEe=B3@WdS~)ukoG9h-McF8FXu zdri?H2~0}aM|{$RT$2v>L}^vUaBuoYG7W%Cdp=iQN zPq_on?{@2MLr%ZIQe9z_w8dH3WyX@}EHkxVw-agRf!b&Cn?Pq$%VzZ~8aP+W`CoxD zeo^6g1*)s%0Om?cRzT(MO1|ylT1r;6v|dJ4%N10&crK&%qI0m0pH(yj$JAaLh+r*O zQkg1PhxN{00C%|N%7XC7O9Wajq3ROuY|Y``95(K#{|q&*sI4H%pQz7a^Hp@@uyr7R zz?Fn@*dFqf9(pWPAw_KgPoQEJogwcmdO}J-sp+4^{v4uma~4N_#K_T_r>@|5KnZwr zh~+Sr!^s@d+^_uBzU3ESekyNx@SzBHflCtUZK2hh( zAI{;Kuja1KU}dP%;Vn@4bDlqe3%JH#kUz=esKeDkvUUiy802J+vS1FQhaGPiN08uW z3dbR>r9^+ zbmI-``tT+_*$3ZsY!Gue3!eg^@Lj=M&ffv&vlqAyzwm7=o5Sjxo}tn^l?3q~O_t$( Ue88uN9ep*g1(S&N#3z6L1pq%8a{vGU literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$3.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$3.class new file mode 100644 index 0000000000000000000000000000000000000000..5a0cc4ef9ca700fc142ddc1b90e026433f69bc54 GIT binary patch literal 1195 zcmbW0Z%@-u6vm&sjg^fu<`it@kEl}zC`BM@g7JlO#w9}&w&3f_dhIIR?b3D%(GSBX zFo+r=CVl`vl=0l!EIFt2d=UcXGWz$rMLh`d4*CbIU;(-+uKgy_oZF+J)i0`QK{24*LcU@ zbBlk7tk}Pn!vqWsR~ZT?XLOjj#xUdrLP&<<=|Gj;l#a`|!jQB1?(4UzHw>&!*^*76 zU0+5WD$B0m1Tfl+h-sbok}L~E+46m_<@Q=)Ct@&;6M9@aRx=7*>8uUo4ujd^&Mfts zo_-XzJ3`LZT-gzBq(~|{ZlTPOZ~Fb9Enc{)xaL`{UQ}sPD{8Xs`60=#i>Tw<8tyYJ z|NqI+VX6M+xotnMHM`vN81%Z7BB**i3`K}pIuL34H(0T#P6dsWrD2%-IT}4iif$l3 zzwn)2htR)}mBN_v#WPe&d`6LMonn;t5=!)Cs``n_Ct5Q^K65I&htcU`ZV%c4#`otZ zr>4g7ci5oP^;AX7J z#%Li`KOy;;kQjV literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$4.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample$4.class new file mode 100644 index 0000000000000000000000000000000000000000..f050a655e4726ad482df2cde42ad70c38b0cab2c GIT binary patch literal 1185 zcmbW0-%b-j6vn@4OP7|V)GD}@KcZG`i?T=>HNkjc#n7Z^LMvVm-LYNS&NSPtLiAyH z1T--uUibjMffwqH`WVJD>!txhNMxIK&p9*ao8LKS`sL53&j6Nj$3TpsqWre)^Pb1; zmg@GD6f)@BE$#{FaNpk0E7izb-QnGyCkhn<35L6;XTA_(n>5zkcE_V{utARSh0l-- zI&QzPL}%AempJM070Q3$N;i1OaIbh4fzl>JqN*H`0>hYz5hT-yW88#+3`4xAH%!!B zDV`3xTf%ShEl)7y>WaFu$$eM*Q81xPp;nxMqfntza%~Yj;;rqruLjboDo;^=riwLs zO7&O#HMjYjzz*XpDNMmKaFHQ%bj3s-mk8V!4ny{Mnyzie#Ccp`NI87>*-Jec23DgK z@)<_DN(LQj%C6va{CFcEqIKSjYRnL0Qz@_M_L^cRV6YDJd0e*bM&P@$y)ud$1W=4qBkE%C(F9nGIK-$h*;^?y~iJk=-FbrE!wW8gN!^8a5K z6Sf}e7I9KBy-n?AUBVL{3MWH$l&)O5Nilx4MD6Sh&2SUj)LgQO2iaH84L7I Q;1(9KL{^&MbnEE(3%_U!SO5S3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample.class b/eclipse-build/org/rapla/components/calendar/RaplaCalendarExample.class new file mode 100644 index 0000000000000000000000000000000000000000..745ed4d4a0c0c7e48cbfe9c5dcf32124850d1a79 GIT binary patch literal 6976 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 WW4TckukvZJFFcxBA0F1M&;I~64pZ&` literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaComboBox$1.class b/eclipse-build/org/rapla/components/calendar/RaplaComboBox$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6f134cf2dcc814de4fce327e073b8a37cd0f7662 GIT binary patch literal 1591 zcmbtU>rN9v6#j-StkgjYB6vmAs--9kcmXMjP(h2WH%N{6!z|lT)@*m`UO*qq1o4*m z0KR~U_e<0_@Tc)iTP-C1pt{LsX3m_;ch33Fy!`p>1%M%3)zQFkRC;#|&n!8nVaZ}i zy21^7!!jM=7EI5$rf$-*xF9Fx{rI4c2t(|yxnvrS>E1CeFWePYpreVQy(YaDx~{q4 z2!^I$(e~p56ee3ooD><3*{&U&VHil%W!al&h@@pfG=rgqL&v5lG_-OwBgUX5ltOFP zcEzQzxFEc_3eNVdq?GffXRC8n7*XIEjCugX2MN69g>DpG*r8)PLth=4bL_+}hE1kr z3Ez*OWH?u6{@HRH%;msHn_eMnK9FIMQegIQbYpML_b|ixfAM|a@Rx0B{md0v3QIZR zhU9)94(Qm=u=Ov|IpR1-U2#l5VCYJ$K`7n8q*i#T-n@c%m?MGS8pIKX>HmVL&}9Nq zB!qo9s^bX5Hihs{4!;#R`e8716v<##IK*jNy6HutxF`_x#C&gF#~{OwKlzCz8WbZZ zLtjj(Z4}3FLdWrS<1zcdr|29fLDg=vLeC@3IlCxww&N&n5g%uw7{DpT&ryc%b=9ek zV=6O~p^q@AG{!hig9f9eVEZLAuolbV89LXPPF$ZWOUrfLhqD|Lss)X=ZO;#ysnThV zbC@D0#akuS#>p@Uq)XGb5w1^oo?Nb2P+`v_qvHZY{|0Ej#*$-34J7x(y-@hUw6sF1 zM|4((o+YMj^?01lSST+5L@F)$~BMOomuto%fkP?RZ2PBSi%Doup*g^wP3 z2{if}!D2D>AkgdAKz}o$B;8EA5jrbLG}-qEJoy+~9+q|5l&pNCtY4v>&YWzNbSpY& zB|afm_42fOcQd&H{sf(sW%nw2D!W6GRV1t1=NPzAy>DYbo?uARw21Z?BdbVN$ofy-kF1JE}0xskNaZ(|K2p~w5N|jQCXjP=XAjes?3(jujOWM!i z0X_t&1;hg%z(*m@njjUP+E}uE&hDAno!vPUjvaJLz(i5EC37;eU1%o*4Ykv4pDe z{)RR?`JyNNKt)3CZt!?d4J|a_GL%y-8(b!DL=bd1^%7r~6A_8jJ1dpGh99`mJ|SH` zp)PY@Y55w`(`j3~&RUn$UfsZpB2Ko-|7|!dlU1|SwwY2%I~OR~+P8Xy-U3XTKTFY5 z%5`0_RzHGOD<5IL_7$biY2hM$%@jcD@d4*4w+Kk(xPXiFXSf7=O7)y7^_*Qhg!K)V w4{@EM`7dz(XZwf+d^*NvPua4l5k7-D?$JL-CclrSW~8wt@=l9ly#hVI0sVnJEC2ui literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaComboBox$Listener.class b/eclipse-build/org/rapla/components/calendar/RaplaComboBox$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..ca583e649c71ada3a28381d6a65f613fd87c884e GIT binary patch literal 3323 zcmbVOYgZFj6y28u@^H{JDpbV>f(oG$AE>RUEu?5wUKJV&t;#UD!pLMM&P)KcR@>T# zeSd4UuaEs&*RtT!wfY146Z&JidhX3+GT@7pERvZ!=kBx5W1l;J|NH1K00(d}DMM-XO6Tvq4Qw4s{Q z>7l91TyrC+W7sNJ)p<9~=Ljm@qq(|eRyIZ%npT($SVf0dEaD6;!eSxq%aV_~(C#>P zqBVjRhK?$dtzZ{+GelKQN!ygE3IH( z5dB~jgcTkta8vl{QgBF=H|ES(^Rf-a>JbI62EBKQ#iI(kg=t(fEQd>521YH=^t{qA z)Q`BTHanmeyymELWZFgR$dU$2!Jy=YV1{kVsHpq4C+aQ*RW7^W^`?TpAlXAvoMMRh z5FtM2GHh8%GJsR|nlW^3R(P$KB+hYztHdIT0V+iKu58?Ay4)7VHF?Ux8o8ryL3hQ{ z=0aJ}W4dAVavDB7t2??>%&t;M&zJz^$QX7?#?LjQ+&{(BX>+dRD@NJLDj37NBBYDb zw72NGmPylLHQMa4ZEL=?qdSfXydS}P44tdcNMNUe^P+7On_nq%$31CjMMr>LR4@sZ zD&=rDGo#wnm2DZJWR2R+1(!hLjp$U*x$@TaF^P=vV*2+ z*ri=G`c^)YV6??=p^R#3)brHvpU^o{x?|w~Gr;!MbXYmLL^D2O6>W{5)a9|V>}>87 zRiqX=ZPNLiF;tojbi72%rzLjKoDb2b77@_#l}L!wixMmT>#>%euA{3i)X)crr#k*b zBDI9%eY&f`M*6NJ8(H0j;xCvNs6%ooJ5#B6%fT0Bw&*RC*Y*fchZQr za9TP!<2&i`oW#oD71+28ph&QD0l1hC7xUrH`f$rQQ;`Ck`=7#jfxxd4=WFEPdceuk zI1lU)Q9_r ziYTVlq*n;pu>_kE_Yd&SBF4R|#M~k-q>@u!pUY>tw&3?KP%aD<7K_lAf5h1 zM1LltzYx)1NoT(WQrqkkYAz8fgc5Pj>Ub!*%vv?W0KZiAGjDy~4Bs1U*kDOHLP1s{6bIIDE4&2HqiOZizy zd`KMl0sI|6a6-&3L5O4au;ZD1^Ze$`mtUVg1GtOZAp(YbrWhp!pD3Q>W;`)k=+Y)R zS3(bYk-Ts(sTmK<6+_dCLUNUf!b+oG z^`0=WeTJpfXj^h!W?WTbjwHCl80O1kY1_LDJN+57JfOxssb%?)VYf3==T^p0Pt8y) zg4D){a4td(D=}iMGSoT_(CAAoo>k+4C|>e`5)3PSL$+j`hNFC1tUK`x_h%9C*G3v) zZA_LO3MKNAyh@L`9*H5T>l|%m5w74`h^q|SGx!qYx*HT z9Ga@g#Z&3$`ftZ~+*%ppp4OsB6}MKTbVBqx%u(-+Ig%-OHZoEAf28BEI7S)ne)+G+MYwk>L_9PnjN3bW97~ rcW8XT`ahn?*ME?bpPr-j2RG%Q4&3m%1Kgti02|o!{~#~O;x_ObPg}g+ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaComboBox.class b/eclipse-build/org/rapla/components/calendar/RaplaComboBox.class new file mode 100644 index 0000000000000000000000000000000000000000..9f6d0c17d51f5e8b13abae2a7df06384b84e8c38 GIT binary patch literal 5533 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaNumber$Listener$1.class b/eclipse-build/org/rapla/components/calendar/RaplaNumber$Listener$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8b61a664fdfe154b3bb30dfc5493f39773fffc71 GIT binary patch literal 1169 zcmbVL>uM806#gcO-DDk`HEQd<7gxZ3Q%g(0tAq4eN zgj&TPK7bD;p2?;(|Jr6@nKNh3{rk?}f4~0#XyCDh48xNs-u7a#8w$^l2D_1xD$$-V zLaBNp_O{H+o8h1TDy-J#B?J)egDk@mTGL4HtwThp?qT62`7%KVMIa8kO;jRh79(*Xc+r) zJupOeCiY>)44ingru;C{H1*dq=|?>d4>Z=I@RJ}?n=<|w#RCJ;LJE;5_LDI_t0R*m zdLAs^cqp kf18LpH;$S`jVv;FfQNMEhf49{-`v3p{ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaNumber$Listener.class b/eclipse-build/org/rapla/components/calendar/RaplaNumber$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..24efbd8abffe25ade1e3e2059c8c3e3fa751ae46 GIT binary patch literal 2255 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 V%u!nR>6AbfYqXkC;!|*dzW{DZC@%m2 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/RaplaTime.class b/eclipse-build/org/rapla/components/calendar/RaplaTime.class new file mode 100644 index 0000000000000000000000000000000000000000..165f7089c567ae8e208fd3f15c4525088ca9f652 GIT binary patch literal 9004 zcmbVS33y!9b^ecMMsGBFmSkhul8skv(1yntFu^ilTk;|!*+!NH5*T|ldbS3SW|Wzc zYyk;o-ytj^ETJ?_DWN542-e6TLLh1F6o;hE+GgoT^EKU)G;Ko{LIVBIeQy@Y#&TL0#LanW<1_X_Fx2?re*tGlJUF*r+SH&*Rvh>~rF$$I&e1 z&hmlXanf)SPRivvyY0Hja3nmGiN(Xs$#~p}W~j6)TRf7^sJJvq(W;h6#^LuF1G|S~ z=~!>v=|~=EP7Wogg0#|11G`hn1L^HfYIAZZWpqr@Cr--YOXF$i*x{`vk3ck@jPB2~ zj~vK^TL&Whls!$5?k8h+f%FLM&D(Z%?B2eub!+E_jtP6HS2D#t4( z#$$C8tEah5b7UgJmhj13ows8(>1tn{|JteiRt*v!kr4ZEHn2!ZI zYP7Ks3j`Hyv4pdAXrR|gbw+3L_gqseAZkS6!h$g@`ES;xdXi9AIT=J)jUsFWpiCKFgKRbc9AN#ReEmQo64JW*-0 zB3gNV7B)`_A-dQkY6zRKMHOlZ!G|^-wF}Oy?J<-OhSLXPiGATM1P~X7n(DeNY!jSO zP-0yw6&cZl3t=m+PzsARR(9B^#0(wnv@r`+I=a%vYvh@jWxtJ4?DBvW}g1=Sy>fo|-x5ki@Ty@C~|hO~UxEL9a1TS9QquWH7a z5K{qLemf1Pw%%_ejsZ#>>FaCmk0kavIkJLfZV=>*?hF(5!xI-7Dm_Tr7{o`J5~QM# zHF1&P!l}eMag#?mZ6kvrfyLC+AYr^t$OHqBYQY0GX5tJTjo7Hc+#qfclp0K1KA6}S z!pCrvg^v>}Or*rAYPgx8O9qE6((v!jiv zcPnnUa9a*e6uvr>$@uO4ElQu2DiT9xhRf?7yQg_?92lrBrXv(1l4fF~Yd2-~K zdNLHi*~0xayHQCe+ZlF|&Qv72U*qCFJg9N;3BeqXj;_haq%rY*c-Y1xc$9fe=Xq>r z6)ks*0HIguJ!a!mc$|hk5Q$|rCR19k{k7(!;7J=#;nO5Uz1t$aS}t?2m5ZS*X1>Y7 z?|D+^J{T^o(PTmq_V;ak27f@qy0$QN$CE7Y{elTXcp87GdOk}SI6-ig`#C&s;d36m z<~X{d*!W}o3BxPxWR!az)pM(K(%9+q_)`mC5Y(uxb6?jdQ!KU{BT=S0!|scCkzRL& z-Y_tj8F9Z07Hjcpb)A>n+iUiQ-6afx=kSt^!x*J;DNJtX0#~7vZ&K_V6D%l1bZa8x zq*6nJ8K-ZSclt<0QPEQ`B@96`GCEququckw+pwp{4SMW@+rkV~WUE&Ra7U*m6R zPKxX1Q>&`@BO5=)Ph7b+r6Pm-#}C2Q|EWP0S1wdMhotSw#qUT4d> z)g^1Ux>F(iBmUXKKjj)O18(h+42#FV;OAr?O_IL9wxzD6WbMqto?qGcH}gFmOO&jg zoBQw%{>#FDGT`&B%1LA6zwtk`eqSnbz{^`!fc!Eu)ub6wm~*{szHIB|nPAvSHP!Wm z@D6@s<30SAsKTr;?cu~Mcl%AX<2!iY#s`c(1eLM2gfzaJd2CYxh6S@_GSdm6#rO(bq-Iemy2FRAMtf0je zKlob6x*QO1(dnj;tdt8ZIp0fy2_J2#*Gd_Py2mxGFdLJ4aGP0_3OZxTi%%}LWtCi{ zl3vUt+-sIr6ynLOWb}|s4$*vanJt&#BAQSxqxJbIhf{@$KM}q(PkN-qmUXgTw`uvl zo~I1;!ZD6Bro{>{Y21~U6T|eN>38GP)Q;`R!J$F5`Zin6#$xvAa)mAJ98vZiwsb1! zh0=~5Z&jW$>5{7~xsvH*0@FyuwDpd^wsh->(#P&&QeW6NFz6DyN6 zM;YE$)L!idf=RfXSxz!%3C{rM|39QEoJXhiti7ZlQ%q zWZO_?a7Y{Hfe3}E&Xw|vb1)NDOSoSQf!l1kUG7jkbTZ!M)B34Qq3Pz{KDid2Ojnay z=lwkCLLH)l_WaT(M~qUU&=$JWKi?rJ*bB7hRUS$vy@ApCkez_DLz zym|7%!901TVb<{MYo5H=Fi&1HmteX1!Yf;5 zL5}V!t`*J)>yIEjh6@Y3L;M1?QQvm6({|V4Bek73{H0Oz7Lfh?}$V3!UOx@=b#sZk79`Jcd^FX7-Z ztez<|ug~Jf)g?70N6~l$x73tmao0;YIF9?2)B~%n8jDMPSv*u@@#iO>Ltu5VK8q*D z@pLzz&y3--S^SaC_QW3JXobCoiMluqY0P*>@oeNr~4Go;!cWot51A%W-_IyK+Y5jKCQFyp8rb z>U!WWj^G>Zjh;8M_;zDuSr*@~vCzfI1< z+xutXr~5B1sq$A==-l5I=7QBFNAM4`@QeKqtP1J)U)^z8bc{rEf{z$hN1V?IGQ zJj8?c!#wLgf}i721;OTfb6tp%^viUP%EdnOCuFDy|J_8`t_471G56c-xQ9dqJ-Dk+0F{$~A0*{*pGbs}oECGg#jnA@d zK5Mjd0jN43zSVLjxrhltA7l>M&6fopyD*;$kDBFOFL2;mUh4qxyrJjfV!)#}O%FZZ z<_@mbbql#Unw7;zF`J`Z-dk3dJc)q+1)q|2MRv)4wTSFOkL>Gajm+mS^Vr^d^sn&f z&#oVnbDqGA3B>CPmT>F9Q6|eVYWnpe^0OzBrx}C?B#(TAmw@-^RjYY zfq`r4Z_w0l(bV6hslW9hroM2psd>Ee*!6qt=GHfi$wypvR>Lv)U(|6!R#q1n&L%71 z+x+=m0>JlJZ@*8d`#}-Yxq1K2l_pt39%@3yF7ZP2faY<%*5g{GTrXAE9AzEjgACUe z7`ht%kPLrB4S&qU`$-YAsywqQ4-1tUgJ~9d@l@yWYWH{GhzOY ziv6^R$BaCW8M2Xxu5rnGHjng5^R8vwgxaP8NVqZeGec=|3FlRqw||`{S}FJMqG%?1 zT#?*9;1?9>mqp@~=EW(M&Fphj9G*%&a&1&z!9S$r=AD_9Ed>=_djG*X{A)wct>B?N zy^yq-AmMI6mcD6tUHT{4QO+n*HWzw+xh@|t zhiMqi!4FFA(F&9-b5A%q}%lHfvgtcS6z~z%S)Cw6k@fJXX9FQ0ls^Xr5GD5o5 zm?PKo-EXqJ629N^7kJYDJ5*Ra{WARJ2D#BQ#q(UHk#Lnpz%jJck4s}W&C)d{9~;$} zFmd6b^-Wp1)y!n&P9hPPbv~tlYrs(7h==YDxi>5K>rgFPtmzV1au&mADSw5&4CfQa zSIas4HEbPr5Oh^jH$AWNG<}^j0mysUOtE>=^TfW?i?WjXhEch9a(pePIm1QKP?9%W zi9AH}NM%qSmPb5V%lK3i1hjxmu5ND_GAsbx@~C|Bge`|LJSk|{zk5dvZh1^Tol3m<{TIPH<%~5W|}-HPw~lPG`m@mPXqr8Z;4H6 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/TimeField.class b/eclipse-build/org/rapla/components/calendar/TimeField.class new file mode 100644 index 0000000000000000000000000000000000000000..dd786fb263d0cc50a69c88a24371170c2fbb05a8 GIT binary patch literal 8074 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/TimeFieldChinaExample.class b/eclipse-build/org/rapla/components/calendar/TimeFieldChinaExample.class new file mode 100644 index 0000000000000000000000000000000000000000..afecf7d1185e9ee8b51a22acd3d31b43dd162590 GIT binary patch literal 2174 zcmbVOZBr9h6n-uQH!KTcDB7x}u~kTdx>bu>gH(y2XiyXyi}vjjF0i=SO*b0>`}!;T z7y6-}blSj_nf`$Os7{}|n?S5iJ0mmf%f0uU^E~G~=WPD^`;R{XoX1ZFIs`8G!Kxj| zsw?fXU#a?@^1_;3mag)aWneEj6*cWBce$|Ucyek}R;sQtkPzr!mrtebN^jM^x3sRx zp+MJ4AS+7Xt)kxBv}+p^RW@j2-!*TgaO7TI4rj9a zmU>4z9<5B|aN59V6REBJ?(JGQgR?B4TwWH)wM8zpw3C0yX;V;n10M>E{C5=|Xc20? znXu85#04s*K(s2*)W>w_ivro#25qZVEJl(SI9Md3yYOYjsPiW4j>~RHVo~7u0@KZIOz(}RwBw~+U00PhQNm;0_Mh*=Yx5Je zL)zI-h3*R6~jYqcgp)5aH z2xOVfb00MeA?lp4YSUq+6B*7P-ej;!nGd{1AxuS_Kw?qxj295>mu8V(j!aSZMgeDK zwb?@Eyk8H>{8H#9JGxhy_K(I{&0oNp@i=7)uB_Em4JSyplV2mje-2e%JNeA70k7SB z`<1JDe>S%bGq($CF_-GwM*r^^$o+u?mL4+-=mMKD7gufsTrb2x>oe40WAMb5*^Je!Vz z;A32gEJu*XIAKl^>{U$AqtHcb0>2c!1Kk=&qJeAsK}~J}XL;0)99uNu!KUMG+@Q;t z{SJX?_Lp8@x;VOn;tR~}qO_R$Y#Wcr?286u18Nt7^wwujH}K>aSVits5<3Wi_}K&} z@q<6WA7y+`w@66PV3Vfjytn6hZ~gh}`wsvMC@5%Sh}+Jw=I~RKYr0)MwJl+JuBLNS zSY_^LM@Cg-4cCj!D+n?~PWTzuOl}=(d!-YhdkQ)j#(XKSdzv^ScWqPm4BL`!!V(Tc zhgUJ&*b@TF-VSY*eAW!h@HQA`ZtavPG6Yk0S%koFSA~MkFaqdS5kiC^5SIqsS;G?f zTD2scBVIBELvPlmbc@_E;fO3Dn$TM~}V6XkC1=e;kSkG4}4Wrp#1_QukrWtmnJ z#W032qF|U|`gVm;aSx*mom|(2>zDLD%Cj9Jxce%`F+ugMzBj2s41GSubIq+A)YVu7~X{y?>@QQ|OP{|5*J!RJ{ibW;PNRYUS1d!*rcP-3s_X}lwt6O z&}5-vNv6{&BXhGR!gz+~3RW1p{MPxip5tCc#S2iA166*`&>qiZ5*ZnMUB!kB5T*b* zer{B2RT<)yip{3EVM();ifyC`$8F)zsKzsLAQ_cr^j~Ab5GorE?HcVAnP-SYNoGCt zx15RInM{R99ojWV7dwWW^R9y2a=FlRGBcXjw56N2OKr~yuVR8OzyhE z#RTnAfZlenNJOp_{X5#|4Ixa@J9Jv1yOe~JGhd-5zoF}kZ_^`XzJ|P69=&u|$wx~2 z&`)260SvaHd?u83lBJUuP%ja!f0Bm_j5Y8eSgx!$Z;u+7$p>Z|m>>OciDf#hUE<|( z@Jc%nY+&n(z@QAu4iIGpOtM2Pu_J7=cRrcLCSZ#UL1PE6iB1%Ac!La4pTrb)@s_A9 eA%ZN)f^^Oi%{Jt*N8cb#`#uinB+DU_qvtmQ4O6E8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/TimeList$2.class b/eclipse-build/org/rapla/components/calendar/TimeList$2.class new file mode 100644 index 0000000000000000000000000000000000000000..9b06f858bd4a57e28374e9e7b48b9a5904bb1085 GIT binary patch literal 1378 zcmb7E>rN9v7(GJ^OX~{dRxW~oRBVf|S}USl6bfju1q9NVc){s*q)WEDWOoZZg^%HX z6RgA^K7bEp{ASxoNYKltrohm|zFa+Y#pfhJ! zVzXK)3TKZOO~KHevnkyIcMSP%2!oO`L$XQ2u@q760EQF{GE6pC7!@}#%+SttUATTp|D!ysA%eT9ViaRk-^#v84Pxl=DV}QXi9uc6 zkX@S(;}&8HCK$RT|4T|0w=qdoI}l#Ma1AQij(w7`s}{wg5@#hyTtxy&hOnzUwrOs2 zi|Rah8EE&9is0^IM!_^g|0TE!6BQb0etIRSa6E$=R#&cYny;aF;;PuBqtGd&6+B>w zUJ;rsR6LaFw9Clctcoxm;jw}_h7P}V{;cP@S61-^)Z{>gpE9(@v)M#e247UMBm;yg zK%So(m1;$Xc&1{xZf;o8ETdu-YlP!AaA;KHSvio5N;CYgF<}Um42O1&c8bii#Gxp& z9{5|%MDJLpLZo)>s-uf_L(X}}j@)v&&@(bKn%6Z;H*J^No)=!(F3CM1ifY!Pt<9L+ zb%l#D+NA(}tzeOeTq*kRXrV8JFiEe`ZI0ej5>8Hig_`_^jxWAVmz4P$@@B8mO>dQa zq_hXUbTafI+KBR*P+Cd0nmmJgj{Z;bJi|y0pLmxXgY zoef@S`+_yBT;NA#O!fv*_7>yp9n$PQGHl=HlCI-5xDYbd@toL1F@qP#67z9PU;{6S gSsD@KNEW1fo>;bE6I*l!Y1p^%if*zRGB^7D29h;XV*mgE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/TimeList$3.class b/eclipse-build/org/rapla/components/calendar/TimeList$3.class new file mode 100644 index 0000000000000000000000000000000000000000..be72135180c6173c2c1d56a7bcc959d729e2b4ea GIT binary patch literal 1546 zcma)6O>+}R5Pf5PtR&XhF(^TRNCLu@@6HwM1`toFFVuI-ShhO>v{9fUw;Ewz;^~F1gb%} zV})|hla>?o_5xq|ab!8tQ+`*5)-AWET5c3q77e5Y&fJst$~x)Kz;0>xsE`(8FW=1#Au>`Lj|NTW5UD{fmBsHOtoBJ-RSqWRd`EodrDxY z6_AdOWJ%l)jcE;8pf)Dp$|513+)@7_tGUm)z-qNM%I=2dwUL-CPm=EMx9=$@ZrEE} za|5e<5L*ZF4PD9!6UR`>ql}LYoD!HFk4_Vx;8TG@?@oBo!}&2P+wVBX z1(fE|s%^hRAFYIc9t#GDct&@?dWTpOi?~SfMx)sTjtsgr^wn7sd3kIa58u;Cfy{la zdo8HsmeHp2(Bfs^ebk)}No3`((u<6MtQV~_fsp5!F;5ahKa%UvF-1M{_zGMx?Px9n2cVE(T zg8xFT{u`!hukgXIiO*4OOHNpbc!VPNCS$bqLwv-)(7GRF5oz93psiD@&zFnoV&)Z& zuVia4G4&EBU*mEy{Q@h+%nK}OTlo*1UN(lS+2!2OuV@r=e_}3$m3%4x8ii7}l>Z%8 zDfG_c&{RvCrDXxj1(Gt(l7S9u;cL!*ONQnzeSWeJ)@I_Ly zwta<_gsTo3xP-LEkFUAPkR2PVxXh~RoQ`kkXE4Jle9Ki1*T}>bG?B*|V{#C0(Ke{( Y6s~eVfpvO-`O3JC4Xz5jSu@A)U;cS}*#H0l literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/TimeList.class b/eclipse-build/org/rapla/components/calendar/TimeList.class new file mode 100644 index 0000000000000000000000000000000000000000..f89d750f8a6457b33b79a73432a7ab90b576375a GIT binary patch literal 8864 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 Z0~q=_YUgf?@4>#mA3L5^3hmi}gKvz>dL;k= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/jdk14adapter/FocusTester.class b/eclipse-build/org/rapla/components/calendar/jdk14adapter/FocusTester.class new file mode 100644 index 0000000000000000000000000000000000000000..01b25f8a62b5780653f2044da8373f4359a9b789 GIT binary patch literal 189 zcmYk0u?oU46h&{Uw(8{OFX-Y!5f?|Hli;9}+cOQt8k3Nw`fmDMsgrygTa(7D_wYj%DA;Hzo>+ zCVl`vl<_%jH%A>WFw1FrPM_y@{?Bc{et-W7U!mF-kE3X=PORYIMe;Y%TA$iD8xMFbgK-noDYN{JUH^bs3pzTNo zrZS`o9+cNzWz#ZUuA7>@!qB~{o4UKkFr4mWkSQ@lH?4{mM;ETjkkH4_mClqTkW3jd z^e`j}1bbaOE^Bs?mko_!pkPt3C2s3t9~?&AkGjLKQn*AM=aWNvCABG@LDn5F&Ye2N z;>p^J;|4}!7$FJ&hAU$T!wkKFn~)~#Z_BtT&iftB^>~{N)zIErmP@gx_cA46G%n)~ z#u#Gdm!=;h+am={mnQ3xj0eIjUiL`7Wy-a=>FjH^clN&O@db23Mn)ub@SMR0SC8u4 zt_X`s8IOfU%GN&BG{@JsZSLx3#i|Q~X&H(TKd2v=maX~vTP;V~PG2V7o_mq*q29=p zVwh*hUA|gHo1bX5!;LqVp{tEJ=CCMQXI2Pamhlu+$l+${Le>o9ZJp=~I?p3zRK$HT zG`>`ZrT-0*D)r8)*{YV;McZlDFb? z(o1i7MCb>^vuBXA6W@^dLc0k1>DfoVz$BtnE(uc@pxuyfjcZ8Jj{Go4R2o;&rvY=u z+XFq>uSlHY`e(B9iQV)?{No6c?7jB{BqsW~v;VEI|9nS(YW2WBN4JTXBys=fDenFa zDeiq(BFW2b;Yh7;B;3P&!Z0xs7vLU-aVvydy#SXEa5OUkZo$L1vXc$d)~HVF9V4Wv z>dbf&X5@&m(UC!e7cfFqnhIz6MMwV`%m)5j)E6SlNs;9rnENnshJ{lsg|%!Uf$g^J TBwNW&Qr4b%*;pe^1nYkQo~~9N literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/jdk14adapter/MyFocusTraversalPolicy.class b/eclipse-build/org/rapla/components/calendar/jdk14adapter/MyFocusTraversalPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..2932cecd823f7a9fd6164bf76df91d8696efc97f GIT binary patch literal 903 zcmbVK+iuf95IvJiLoRJfXeb2AT__g`3xp6-5KT|HC*8A}wEIu(-_wP8{jlCjnVJ(N-gcp}H zu!I}98OvTHPcoQzH6SL+-!YAf!S8PI>Dk=@7n}Dekmu_R)lr*jqx2O-m z198(yAn^b^6yhW;VT{5BkrLUC{hf2Z<8R+Te+BRayBbmq&t%ZG0zUM()scgt^o6fN ztHV9vJ3O%Z&imb`+~Gqd0;@SW?Fr%8Zm5JW0u334wLTwnYouJyI&Oy|81uF#G%PV} z#(($+Wr;CCt)?7>;x_=p(!T4v>N&%D*-p0Cf9A1QX)$E#(h)k+xMDzq!H_OjS~{{= z(U4qm&nsbgDxK!yN;6BXxQxRK3Uju5dKmW5~wx zJX)}9>34N(qNrhuA)i>iXeh=SxQ_=6D_x=DhQ5}HD_8n)a}IUnu^lz5Ox-KLoTX4T zP{Tti!k5Z@H<{fP5s)}@UPPS6al0=%QQCwOW5rPT&U{62BBn{W+tn|~zpYJC_;`lW6qSqk65+QA UT|S356TFE>*opBL0aJMV1IqREvH$=8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendar/jdk14adapter/package.html b/eclipse-build/org/rapla/components/calendar/jdk14adapter/package.html new file mode 100644 index 0000000..0d24b3c --- /dev/null +++ b/eclipse-build/org/rapla/components/calendar/jdk14adapter/package.html @@ -0,0 +1,7 @@ + +Adapter for using the new MouseWheel and Focus features in JDK 1.4.0 without +breaking backwards compatibility with 1.2 or 1.3. + + + + diff --git a/eclipse-build/org/rapla/components/calendar/package.html b/eclipse-build/org/rapla/components/calendar/package.html new file mode 100644 index 0000000..9e6c3d3 --- /dev/null +++ b/eclipse-build/org/rapla/components/calendar/package.html @@ -0,0 +1,7 @@ + +Contains widgets for date- and time- selection. +This package is independant from the rest of rapla. + + + + diff --git a/eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy$1.class b/eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy$1.class new file mode 100644 index 0000000000000000000000000000000000000000..c2686637ef33f7d27a8bdd5b407bc5428721da98 GIT binary patch literal 1203 zcmbVMT~8B16g|_grDcW6hX{xw7W)M(1wYUd5=Ask3O+!1pKd2*VcBhVw-|ql|A7}D z)X0PJ*&jtbvos+Q5)7N2otb;*-gEA`)BZU>`vqVH&kZC5Uim@C3S`%nmhB&ReNTB& zXxY+LURwqyj{0Q1X@yZB?dU_`_qw}WMym6n!Dcfz+noR#^z#F=1dJha`qg zWRVw0mh^$)rsJud-f>F>d$Q#!fsv+9VfJO<=zZUq(nSf>Z%d|7V^N0IUIxS{mYV-c zTEA*3Hw@h8;hSZA>-zT5ASN(nVj2$w20AL*jbsq9o>KWDb=;|U>}x%ThnO|+NMPu) zhuUM}G3EraeWH85z-XW9WpufrkqRc}HByF1TV7ir;n%cySL)K96@FTDm;Xb*xE89F zXfY}isIcd<3ejK>S&@CTExY}uujs&z;7E^ z6?l2GuGi)iFdLqyf=yS3p$aj}>y_k4L*(=Nmhp#|;K(9J>mXNa+-pm&QvC+A@&iL( z<1=@)E%xZ>d5myxGDcfRF~(V79QXQJ&WMtsZLRtn6FUq1yiP6t#H7GvDxSV$=0$ou z{RNrv^l5^wCl@YGbRC>BHVKV673V1uvqXMn%%FlfRLNj5=CE;r)90Z1KSeR-wZ@1d z8K<$zxC-+PGN#H^idm+yz+D=1q{sMF* BD7XLs literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy$2.class b/eclipse-build/org/rapla/components/calendarview/AbstractGroupStrategy$2.class new file mode 100644 index 0000000000000000000000000000000000000000..46100a86750a146ffed5e048b0284454b61288f5 GIT binary patch literal 1366 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 EzowO($N&HU literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/BestFitStrategy.class b/eclipse-build/org/rapla/components/calendarview/BestFitStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..d6de2a8f4ea3079dcc61e8a52d5c2d3dd8bccd9c GIT binary patch literal 720 zcma))O-~d-5Qg8{uYuVWaA5`f#M`bCC*r}w8WSMF%cutoe%yLyI%8uqz3J(}@UP@V zl!PDPk1|#dYZkrWVY<4i>v^lHr+@zXaRFcp8vz=Gr^e=y6%#F@)ErGrAq!VVsnD{> zggsXBYqTRvx2N2`v%<;zBtVPs{CaFVDVa#!D{HFB4DJx3>*1YB>Ff_g=)6#caxV$Z z;pl+S+BKOB(L}e00CR-JSQYY3b(Bc^P9$0q`my054unRQZ4zNsEp5<;^D^5HRqK|GDx3Csqm9Q{N z@uxkk<2Fw!vWzg87Sp20qqoT+OOHpN2=j?H=@*|)Sh`Za?uXDVRgr61Up*n*HO@e8wslTw`**R@}Ixri#qt4(_t% P975dVop14et?=MCGXb&i literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/Block.class b/eclipse-build/org/rapla/components/calendarview/Block.class new file mode 100644 index 0000000000000000000000000000000000000000..8f6a3f7b03931b63b23838aba8f9478bfecef6f4 GIT binary patch literal 182 zcmW-bF%H5o5Cqo&l8_4V3829eEgb?XB#OM?a86Nzu_NPzzftf29)++|-QLdX_P)RO z2fz+RhD2axT`e7TnxwLi&KfrUDHUlp6}h3|mpo{z?ir>6i2iddD!8Au*| F%>Q&>EZzVB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/BlockComparator.class b/eclipse-build/org/rapla/components/calendarview/BlockComparator.class new file mode 100644 index 0000000000000000000000000000000000000000..b69b126f46ed84ffc577c10e2edeb5d685732802 GIT binary patch literal 814 zcmb7COHUgy5dJ2CEZHpYkn~;3Gij@?fMZZ4nyL~~+EfrB_2?{CSXkD`IP_2TQdKHy zDv-rCvf zw08&_t^cmrAdGEBNu0*!Eg@g4?-53tYG3*wj0c#2Pbh3Uf00d70X&QmCR=eTKlP8h zQg=i*k%XC+;?eemj_unSedICD`OHClO7JWRLUZV9t#xPb0sNzw8 z$9Tdc^`zM~LK|+YR?kv9>fQ?@8$O<4-otak#E?|$3Gf07gyNvljv~wsS{aAMSM_xyKg5=w@||73u}Ch+tn(S=Q?%6b|H-o~!Y-i1uMjzwKV(W{@BY-~_fdVGb3RwsMD) x=lQO@x14T4adiK z&)59{;DBX}fWVAxnB|?~tTLC*XrW!tDz1dCxgDjrvg06Cojc2&Xl^m)gmueD&J@=T zJD07f93d>H6(QYb|B2}rUwC|yePDx=ie<8Q$*v%*ax>UUoTL(j&5yu-nnwh}%-;aW N`-F(5hS+C-#T!>aLm2=7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/Builder.class b/eclipse-build/org/rapla/components/calendarview/Builder.class new file mode 100644 index 0000000000000000000000000000000000000000..132ea111e824f7613de81ec0258f2caa2ea4a35b GIT binary patch literal 354 zcmaiwJx;?w5QX1{#3mv9UV+ALSP9B>{6s-QH(%c$p8&3Lkz%Bf*S^x88cVvYUz^&o3#~56vfGm18-CNbov~Z?DaHzC zJKB@BFqAy_u6qaLUkI zijCk}n3BIPmNNGYol^QYwUY1DfZ-+^P9sx$rTJfd%+Mul=7sZ*!V`CO#Dy9$ZDO8G zu_Mxo`r6%nkR3FQ@NmwMIJu~mE*MU-;9H_79<+`K&ap&_7IP6qar>&@2=&kWg4>Xd;A`pcOUUYa5;DyEu<}fy<~p M^ywvKLuUhnUnk0NoB#j- literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/DEPENDENCIES b/eclipse-build/org/rapla/components/calendarview/DEPENDENCIES new file mode 100644 index 0000000..0927abb --- /dev/null +++ b/eclipse-build/org/rapla/components/calendarview/DEPENDENCIES @@ -0,0 +1,4 @@ +This component depends on the following packages (including subpackages) +java.* +javax.swing.* +org.rapla.components.layout.* diff --git a/eclipse-build/org/rapla/components/calendarview/MonthMapper.class b/eclipse-build/org/rapla/components/calendarview/MonthMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..c7cb8c64e92e92e9b35195fc028a4daa8dd86887 GIT binary patch literal 1385 zcmb7D+fvg|6kVrHNhv{Up-_P;$gLMj7#_=hXLkYHNCk^Na_#-~~ zsxw*`9sK}b{RIC*+~*{PsC_Xrx$W$|_FikReE;?N8-OJ|RS{swHSDTx8_k-bR~q$Z z!{V0H(kn)dTYH9mZ1PunsbM(>C8OEowhDzIdT1OQdd;w^`m^0bUU3*Ab&<1W)Om|x z@WtjuM%l4VtD0x%Su-uuxz7+xrFR&VLSv6d(1(5%S_kvUF>Cr}Lv+`02?GRN<<2_a zH;!u5Whj+)k$rjj2pBGFP!VH@r~dsenhk847T-Fm?{a(F*sXDfnC!A+*rs^*f{Jrs z()={R|7b!J1d$LEgjI}os7QHS^1U?SxP}mVR9s~kmEt)3wWF8Kdb7sY4To@vG>XFna{Pc(8f~v zjl$weRC{~&Q}hqY{1A2}qjKugy#MfS*G5qIdhfMq$`ire3tjV2*pw`jTq z)vn++F-c;MD(({Y1R>O90FuQ*THLP<5##^bT2zsvKoeArDnC!i9AHQDuvY`5_ns7)(~ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$1.class b/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e92887cebdbb5b0067fe15b29e1f3d1da6ee123d GIT binary patch literal 1228 zcmbtTO;Zy=6zoZYi^&2Z3Mv8dBWg&H1^fVk;u1p{Dp;jxJP*kftZsHwI~x-IjW^F8 z1j~bW{ZW=ZF-4^cyuciid2inI>(|r!`_GS`0G6?CAtta9g!@h?Tb^|4L9-S3%8#^D zm!9$)GCXuu$9Zc`OZ`lZnQ~V)Tb{}-Sx5+EKFUMcb#%w|_nqynP&So7TC32NUQLDC z4gB|&mjYs2V5AiII+A`=lU`d5k%w7A;7WAh>f9pvR4-0woj4n=??#&fZ}OJ`s+yS` zPjaH&DCA)4b2Wivxm#DQhy!U0X@RL;mFz^$DM8`T*+?RlL>v<~ zY)lGFYVF?>o&H*&-@F9h`?CcuX}-}Lv~bj5Hu{T z3ank+!p0#S->&$+3QL~UT4~Bj8Tg&VFohvpVPy59;dI(qtG5R)j<8~sQGyj?80W6U zjJcUA6u%);m_Nbwuf6gc{7v$ZA0Hu?ag)2rUYx=$wlOP(ET)-D7%5q20A0rBRU{(jM2g|9>l+6?hA$s#S=KDK^&&RB%y)lY_vjNtC+wVp*IGaWlx)Bu|ygIPk1AN a*hGRDPq~lb84*lw1uuBt(B`x9pX)C^)iiDZ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$2.class b/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$2.class new file mode 100644 index 0000000000000000000000000000000000000000..7088940e104d98684c5eb27f6810c8f9aa9b3128 GIT binary patch literal 1111 zcmbVLZEMp|6n<_Smo1GpR-LbNbBo$mF;Wo0&LNZvLY?5G`+S>R+B?&vBx$-&qCZJ+ z3V!eh_@l&g+J2Ii76Uiu-gD1+&U0Sw?>|3(0cfCZq9CvzCw(uGqfmN&JRHT5in7%6 zWvHS+Cb?D*nP=9(^P+NW|j3YFV1VF)-UGM8Q`qrUg9ccT2v#G1ekYfrs&qDilE zLiJh$vQZtKW-3yNz*;uYsr!^TbpD@2lW=kwx|3Ys`3g8QLPt#NSgDVk4nyqgNM{EE zd36PhMFnZD;Co*DT35hm#ev#@K-q?gb>3aJu>s3M5m#)Ka8;mKWz%v;N9u4q?5X5~ z?1f68(ut{KU72V;&y@z3SKwd;Qi~FD8&n%R&19x#%?ku}tDQxyZF8HOwXTIbxNBld z;MwxVo>LGT+nlYLsNPtI6w{DNpXOwHNn`=*C>|%idab!CTZ__q!U<3v+mRo}DNVv# zl?~#+!~=mB%NZ|%wNYi-B^d-fTKsmXdT$~c_Esp>E+l#b&N#`QTa{bX6F4Z5O!Kwd1)+sf$L)VHJ`<5IQ;f}--5i5Fi10n~E@GGb3)q88(!hN@M2&V9-Ema<{sMAT BG4B8X literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$3.class b/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$3.class new file mode 100644 index 0000000000000000000000000000000000000000..c34bb795d5a2f9abf1d1bd021d560d3028c81d2e GIT binary patch literal 1110 zcmbVLZEMp|6n<_~mo1AnR-LbNbBo$WG2#%x&LPwaLR4_leZEZ&ZDyL3B+ce;5(U92 z_`x6Gj}p&q`$-mB4BXs%&pqck&pFS%zyJLF1>g}J9TkDyB<;JY97WRgli?_dDb6$3 zml4H*OpB0?+;{4UGhN@OisW%QI&RLadpYO@WoXi5oelkvddKs#&te2JbKo!7!?8JVQWPB4| zQ$9!n9d`tt&SzW(YoeiO8!`x9$dBsjaPwZpeAnBN%reTb$*O8R&Y)shN@l>SE0Os@ zR(Pz!{{QU*p C?lJZN literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$4.class b/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$4.class new file mode 100644 index 0000000000000000000000000000000000000000..013b69a21a04772e053fa2f6db2c583d59acc621 GIT binary patch literal 1115 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 SHXNe6Mb8@TCq~bGg#HFb{2{&o literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyMonthCalendarListener.class b/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample$MyMonthCalendarListener.class new file mode 100644 index 0000000000000000000000000000000000000000..42c4787c9a40f288aae710be989898f8bf01939f GIT binary patch literal 2288 zcmb_eZBrXn6n+kQSqNKN(?T1y7PM*rA=qlQ1kpl^O-)(^MCHV1-72Y#$>o*Hv}t(i1}Y>Dl#k0uVCsB-uEC9r0U+5S`(BH!^WKB)ovHd zo7R?9u(rd(qG!8dJa2}!Q@Ct}iZmHGE|@!*-TNSoLS>M}pot-z6b!7Z@RINAh;_D> z&Uo|?aPJeM%Udyn93C<7Fsm1#i_mnaGVv%*3;LNs$!&y|TVs`n82;Z|>F5kb3=9jd zJ`nz{ryW7{&z& z`egUyOQR)io-i?q0?l;5*2tGiqpRBftVx+O1%unQV-4~-6VK~lN!>twcmWp;yeK#p zapG9+dSQ8oGOnAL20Jw2HR*D&osR7l76TS?ISiClFB*7BaI))Q$i?-!rtPe$pcgMw zWKlZ|N4+{6dczsa;F1>L9DT+Z+cBe~Y(c%_vWY8LpyVyz=Pe|d=-zsxx~XbmF|K0Q z={PV;IfJVvO1MVyLyyTaE5V5l`CUi2w~XrsDx^HZu@|9<8#+_N*PtD@4}#ZC4B%)# zmhpyx6~W}e-O_1CeHWQn#hdgPsH&!k{O0xTl&Wfl3J#-;wwMLtvugKhnuuMs9k*M& zx~p(%ft2n_@!J0XbQ@kXV9q60wQjr3kWHRhrmdzHY<>Bj-cRt8 zx-J5<icdSN3H4NB->4TZy&!^x>Wv5H2EJ$T1;*}b$>~!+(yk~6keO@{Yvn3LI zO@SVM@nPYw!PzY5Jsi_x<9E^fL$sdZZ$?|?W2EF0^m9Jc-USm!IOBfZUG%}y;-R)L zF_A3acVXB4mKjOk~n7Nsqy^B|3+k6YJw(#26Pgwi~OM>03&oMv9r|6T#e?R~L literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample.class b/eclipse-build/org/rapla/components/calendarview/RaplaCalendarViewExample.class new file mode 100644 index 0000000000000000000000000000000000000000..f478d840ebcbf5c58fbe08536fec4de06bf6f5b4 GIT binary patch literal 6096 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 Dx?ynP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/WeekdayMapperTest.class b/eclipse-build/org/rapla/components/calendarview/WeekdayMapperTest.class new file mode 100644 index 0000000000000000000000000000000000000000..dd3fb63f36c47c1b4d30c8a0775481f66d34d6fe GIT binary patch literal 1277 zcmbW0TT|0O6vzMDq!&t%Qsg2E%Dp8(Xc2Ez)Inf6)Aqqi9fqfct|ibWHBCXjfnP@- zfYBL0fFH{7Y*Jcg$_q{=o83LT=lst3pZxjz^EZGr-i8riShbys;qZEu8;5qSZd<}~ z8^$583aiYWQ&XH7pM*Fm^Yc8f*M;*@G~6&$hSB4uWxB>^hu6fJ?VK3WvdJ5QK|Awr z6v)(I7~Ibt^HXkAxm7WWu47u2b%wsyp|ok0#aD*FewH@9MY?5T2xUwPvcWKv==PB; zF{qn%Swx}Wo`xuT8TxakB?`^j0ip7PD$&GqHl6{k;RU1YTPf7^4iv9i#SO43ENi$Pn{FHC?l6_|7$qV}c>P zv-KhWuCUjpxp8DYiV-}K^_lDx@}@mmk|(A$%wU$G*VACzcHVPhRukD|HVTG$4GAPk zT;6C1$KCqUMzBmG=55R66&YhiLkelatq9jI-Vpik zuAdC}R0dq5z_&=>eM2@wsOGgOL+Y-wlB8Nku-&38_$v+Tvb2HSVg#@KG$=I^zi2m| zL$Phj?i%j;JC>zHn4}C8`p@JWM2JQpjEMK`@xBV3pq8akqumVz=mA0t`X&0l(=32~ z8l&FsIQf`BjMl^cDGVS^D>{!s+$SHTEZKZt-zci|mHCB{y&rgRiO0EENLMc~b%i-a z5Bd{TkA*IuQ2OgGAyS4f>u7Aff^YW-ybF|a~Ur#PuL##|d? JgHj0K%|D|kBai?9 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/html/AbstractHTMLView$HTMLSmallDaySlot.class b/eclipse-build/org/rapla/components/calendarview/html/AbstractHTMLView$HTMLSmallDaySlot.class new file mode 100644 index 0000000000000000000000000000000000000000..d3858c9666af08a16aaa72b3821182607661473e GIT binary patch literal 2321 zcmbVNYf~Fl7=BJdx-ne}riB)ZN+Z}@NK-|rZGZ|XE!1$afza04dXg+*VY8b#d%~s8 zc&($3zrc@v(yux;^)lnsul^*bqrPX8fiyT%hRkGl&*gpgeV+F@@Ba1AZ+`%I9kvD^ z!;B-!DZ#52PZga?)v*m*x~U?!47O%_}!cu~$Q&1Lg6JE$IV6>eEq z_)gApq=pWLt9B9X!u)F?-0&708%rn{t9-K6+@B{mI4h zlzPS~8P9=|*P){`1V2vbIEEftiq6LJYU!ko5RNi*Wlh_duT=_$SmFiCW9*Rfc}{B4 zxH;LO7&BZyY^M7vMFIq?H92KD#SMnxgGk`*O~>*fO8;dY131Ir=cN)uPqamdg~GZ~ zlp?s#?R_Q?=DqLy*QnyumOqRx&pSHo0Y%?eU0os*!=_voOnRGBOduDBjX=fuXnk zlr)fZT*M`^IZ-lztCcxh1q& zb`4VuXAfAeAgBur?PpoExa*EbDvmAJ?s*=HXt>I7{@J)*pHgkf^Mi&NI%@5dr)s8E zGDHy6fBFVoxnmjQkpeGnl!a5XOUa^RIpR_X*N|1mcCO9f%{COvAH_5lbS&asI_jj! z)Gh=W#1RZ9qOA%w;}mXA6=sPcx!(f+TMsYabP(hoUpk@?ZtA$D-W!xo12>5GsH2i4 z-p5T1cd6m-(Qed6mGA={90hgC%=^@9=#rlIeu&;5z35YP4O0Xl z2-PJdNs%@5(M&HzQXIYSG~LycdXJBA`|)BE{W6W!E-jv@#IHM+$e`5Mu3?+WYwOirYM|das7}LLEo}rE# z;bpqivC;s!?cI`f+-ZzG&<8%&AFt!ycmMvNa`r>XI_eeUBg*+>lI|0n#HS?OXTU7VN}u*|teuD3`eAuB=_oEmR3KY!5H=X=T|( z%UZ~rm(%9rqUC5fm|EZJ)8Q?|Xsx)W_VyFKB=Lx zCpM*_X}FxXT5vBR?;jdUCWnSvp`puwjus7@Q-zXsVyT$5oJlk5*(*j)nNC68{mICn z!i=I3dkox<-8%MZ*rw8`JUi+*=H*nO;zqF-dxRlwpcTFX z(N3mMPEOBcl9OUmurg!00|NGtfo+J=8F#M0;P!7IBx@?00cxvQZZ*ytcJzeUs?!6p zDItB_Kqq#{(_sVK(Glg-pn)gA*lx->7L^c4v9l)@LaNRykzD#0MI#?}cD5F9WeN8ni6q1kd~*j2BxuFo@NX@jkFH4DpJKWIp>rwdMcOLPnNw3-WHC%s_)p8 zfLI33BS%599&+hIDQ#Youhd_Q95CMIO$17Y3;*sgTHw8}sRaX@v4w(XI)->eED&wy zYUu^mgxdmmRhQ1ByK)j)sZMcl*b^JoZzV(Hx2n@V{7a3HBgcahrbaGWhR7yn4FB{m3 zEm6FRU+Q>`MHs|F))@E|UZ+U1*7>r-5Ui2cGdkYTaG%9x+bwzO%Z%e)XwocZ5YZEbD#qSLK9)F;9(vwQ8fc<`g zR#kwP3^lcibf5+A^3d)oE>+yFti}K0Vi$#}T6q_LcbTp-CfKW-C|{G+E~@iolxYYtRjchY& z+=;t6Zsn?7*iDvu_!j3V|03-_`Va2A!KVgv^LLaZxV{-X@nba$u4HTW_obDcz>fF| z9*Ez@-su(e+(In=C373ejZF8h;MgsU2E3hQ1n(8ic#ymY$@?(6=!8Vc0iTuqYTrGwh+#KuuA5JvjbP#kedjnL=V8||` zW|x6U=2qz0$G!(~Y7NAvh zbnRvJUaB6vVl*Sk*<-w29A~+XGLFY-@mPp^SIwJUl$3ZQ8RlOmDIL%1e9a=~yY{3X ztcZ~2>%){HSvmw9sR2hY%hHlC&7t69ty1SfMt@!@hNBN1R_94VpQ0ZVv_BJ~=%`V2 zsA>(=$v=&36s3ygc0h+9H$tELG5Vnb##oj}-Tz-K)(dA^(RjiM5`F;}eT2WxVGtdS@AbS;61#1f{S^rS~jj zbPoM^Hss*pnuCY&cl?9gk{ljw{e1iP1)3`Rc>Z8Q9+st|W**$~uicOX?=P<1g}AcQE)OeRKYfV*|k18^ur1|+)d z!m{;AettfletrSGVjz$arW~vcYU`BL+-%t!AHStm&iJ(o`_dfbCN@rfEI$`B$GR4{ zBRo}VucTAn%CA*rbQE|XJpa$SAP7Ti;!Nq<2HyGgoE-Qc`uzIJl>Qh?N+)^=%l(&-(|^BAV=%kZF|alZI1pK-=#*I literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/html/HTMLCompactWeekView.class b/eclipse-build/org/rapla/components/calendarview/html/HTMLCompactWeekView.class new file mode 100644 index 0000000000000000000000000000000000000000..4517521e42cc5ba31f0ab479b2e726494748b848 GIT binary patch literal 6548 zcmb_g33yc175?vRZ!&qnAWTRgU=-Fec$&@Mf#unUXo#H$=9!6zRY`fJNKOb{O6o| z-)CQZ>J#71_ zUP!@c+t6`YXIHm04TWGnoptgG7jNtMAGbVP_U<0E(&^RKo^DEORwxmvUDlvY$uqWf zY`1n=jcF^>-`MTsQkj0v2;{Q6I2d!shMiQpab+%N?deG6ML^izok$NS?WBTl+g628 zODdCcS{3{?wLM(jmQC6b_%X}G49ql8p|I}%rGE(&=9nmjX<)8G^hE7t{7e&5Fx9|W zv`>#8Z$SiAm?iVhHZcuRd0S{=I?hm-){)BCUBiRDc5ai^o3<6s=*W^7JytFyZLc%n z45Wxp%VfQB3L+84X%w93Ol3N)-K#A}d!wcZap`NW?TJvm#U>iDL}6+oXS27>W2!<~ zO>NPNvHs==mSUNKbE*D>{bQph&O<$^mbaZvsX;nwDb6=>0bWA?v5%~)X>XT(m!jE3 z3sxvh@3)<`sa)P6i8k~}ENEZ13v?Hncqvv2s~juG2@XMv7Ad98kcn+3R?9?#Q6`u@XBv zts&2OVHzosKnIr9oPz#B;S%bzDxFR2;H2{7G-}JH({{p1Wiv#%3Oyz^<7Es1>a{YR zR;Va;VbSE;tr2X+EXc)fzR2!!>M#q9Aum5Ll*(-70bs^6#fmENQs+F!a_7% zH_MV8Cej$>l3nCP(%M6mhwPlfIg^MCq0#sfP1&r8A-s~*;x<&Ds zj+1C&r^qTzWs>&pwb>l0D;n=Mu?Mdr0<@9rkpQ3YhK_Z+S?0aQ#A|UCbDcw4Ze@u$ zo?}8*>80MU$JGYjpm5&l70mBqer@cQU(r=+f{AOemn7@U<_4{a_!8oGW;4!!!un#r z>wq{}r7m)fg$#UrCs0=gKsc#Bi=;7yyQ;2BtnWLPmrFGnt(dY1`sX3U`@!m-I;NZOrZxBkneFj~Efwq_%T;QDC2m`*1%y zQ;wapoGkfyeBNyL`kPDf07eYF=eWE%HfrL%cpvS`*tUuWSM5qAoq-kA=PX-L-5SQ{ zWmTh-Y!#n;!NirY!g%)h^{%d`UjJn(+>*)m<|yl{#J#1_YkZvp5lW^)B=I**d`k*y zAfI}b9maQ0hJf}ToKCI`QbDrmb(&*bny_7^2~!csluAbH?Gm8nR&AKgyo&eOZ&u!?%~zI z)Ue_O0)$+ZFe9soLf2%1`joD0K1oBydntZ|eTJH%uw;@9kz=qvRh24JO*2(g5?^@i zOd+bCVX7HwCOe0Q-Sd|Y|I>@tQuSfET$Pz>mXw7+KAR)DD!~#u3CEn$@RK<#IZ}>C z3QH#|blhw@-Os8^^H{O8$_fpWaf)l6K9nm}Wva6Tqex=FPVCS_Oap4ZoRDuVRSVQK zLoHNTG)dH0uqI)MtAT*Zle26W=XR=2DrtKWImRk>57q0=4(Af~+LRo!%1?0vS}aM4 z6|Oy#v2$%w4&(|Hm6^pCR-DE7)z@QGAczoK25-kcgxM}BYDd`1YaxFj*FXOHIqqqf|x+YT}1b7WaP?*K;!=NUi6y4*!Y~Os^wGvn!Vt zaM|X)K2<5LBm0j1w(e1E`4A_&xRh}t;CyoF0t$W!F}Z-KH0!OaT%q39VIp@0Q6#bH zb+OQ=Eu_LnF~wj+Okod?4W3fXY>9yeH(oI3+z0vU)2u*1og%Xo57WmrQlt|s%=FfptpD=#8b*O8U&4Eyzr#ETgg>loUdoY6({ zZ$Ogd&oG*YIsYnLhHKHo>*HqJ%;%l_(6JxeFv8SvfFCuU;QP}Ij4zYjUn8@Bz}0`? z`#;f-qZm*@q|`KIR5`M$3PY-f*V84)sS9}RZ^f{>2s_n!>{c7GM{VWZJ&9MVG+v_| zj$g$)`gM4{x&>FOyKs%#$IJBlaIHFk>(pUfub##Y>RH^VzRp|WPjQp_Juj|DakDRk zTYOXT7T;_VzZy6C>hTWWGF;9s-H^b}J?2tjo>gNuhhej)w}w&)yT(3)1|Q+|YL(=rv{Xo*fpt1Umu3dyY2y$D&^PozzCWv0&dtVb9s=|O;!X))l>yWth97;Y6|gn zyKp^Mc`r&DDuM+yUDoNe@Ki%V#Tq6u^HN>O@8a*f2-mxrneS$$y@$lSmz8QC6X<<} z?tYemyGgMT((Aq2Ve4E~$5U!TgCr?8p@H*J;%35KK}VF6&f=T^rPiz2Y7SHFOL;|DJ@X=MWS;y+<^E%Tl~?9k zMs`(K1E*9=@<gGby1J5QmF&*h5a1o7ZuOE z)$Eg%Wnzc?(=4yT7F6wtCHpZl?6B6sJ^hqx%jR^c3b0U4O literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/html/HTMLMonthView.class b/eclipse-build/org/rapla/components/calendarview/html/HTMLMonthView.class new file mode 100644 index 0000000000000000000000000000000000000000..f071046b0249ca0f53d0aa3a2a2f8ae3922c6b91 GIT binary patch literal 6039 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 Nl;cPQ4lx_f{{rg}7+nAW literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/html/HTMLPeriodView.class b/eclipse-build/org/rapla/components/calendarview/html/HTMLPeriodView.class new file mode 100644 index 0000000000000000000000000000000000000000..662f6cca4fb2de7d03fee1416486eb1026220f61 GIT binary patch literal 9184 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView$HTMLDaySlot.class b/eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView$HTMLDaySlot.class new file mode 100644 index 0000000000000000000000000000000000000000..2a90c65b2548a2fad6195bd18b7eb25d33216727 GIT binary patch literal 1738 zcmbtUT~iYW6g@Xt42g?G6siGQiL@r6vI>d<0%GtZHqe=3!?bTpvV$v|-OTQyr9Y!T zp)Y;uLpvjJrk&~Zxj(3nZO`3gkeR;4JnY`DoO|xq{`Jpqe*jp(P6jE#Mi3rYq22Lp zs~NOAf$#WnWHoKi@mqHI+I8MoFXOgnJ$tcT-*cS91}(FyY}v=VUJz$s2rj*{U)$DE z?0VK_7~02mH;M)M$O&EBYdB%#2L9KzErC22j8p?Zifun`*xr#dL@xRhL9Xrk3i(y= zhLJVFkkjtO$CSSnoQq$&(d;e3-TDBGR|)XI_1$<~uu>Wbp;jw51V%MzIavrUo4A0{ z9MYIDk;g}Ll^CI}t0r%5i)%LDE~uXC#=9$<}G*g3&?sh*sGXZr`%m;0}r zX1rSF)*4ENEB7J2;zF2sger4!0-B4x|6evw%QTjE(n9>;HLvCS6 zZX+i*F)H)8EDN|Qi2afrdF4`225G!!u!OYS!>}wNFUy#c70k$L!r)F1@svRki_9yU z1$X*finyC_QJb{JNJksRsGmLE7R5Oi302UZvc&RA&0y8ZEd*1jTikHGRePi0 z2s%?`o=(p8T=iXdno3B))M-S}r>V5$$>>uNm)x?xo!?2@m3o5a%C3K_P|oi#E|yGE zw=gbZEQCvfw&Ny9+y0h?1bC!I(f*Fzz~B)cduT&#Uh?Q?&D6Z=e$QfpRp0j5G)-{qk0nR$G2E@r6)XNjLGz~bGVw*Oy+whV=CnGYX$v>-3DI?O>Jv?As=K~hNZj;1 z`(eth`qN>2ikl&PCOGqoWec}3OWNc?07c=r+*;31hcG9&@a9IS3)uRyBx3Cr*V#z`Vyj{(1$^7(b}XxQ$_a$S)GYdD0Hx63*cQEdw!nI}vz+ahM@U2t6WTNrDk( ztCe%WI92=v2@UrBiqT0^QHz?rnW$;rpA0@mhjs)xc4Zy~B^vDOzyBZRJqkhA5SDxB zly$x-Uz7DZF3UHX=}av{gXsh=(?cqJ!Y612v~`7+K@DQ~h?a@&dL2PsM>7Kd5LjBd z?4dJM#Ymq}t)k2|@S}7RNjagH$aw0`nBSlv|h2YNr0k6CP YxcXY)0KU{ja=6PmOzy(x;47H_0t%3mwEzGB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView.class b/eclipse-build/org/rapla/components/calendarview/html/HTMLWeekView.class new file mode 100644 index 0000000000000000000000000000000000000000..e17e5a6d14cb88ff0c654664d11a842f95ad2894 GIT binary patch literal 9398 zcmbta3w)H-mH(e_9^Yj00U=?4Kw?5bOo9?biAo^KvxWkqK`2 z&OP@${^#5~zVy}OPXU-JyKPv4BNEB>x@5R37Orbebao};k$5^)*BXvR;%(vN8PUl4 zx{h>btnT=wixw`AMAj`M#fDdK)F2sWwWQL?aBErxD6_z(=;IUJNr5y8{GHMGNePnu zo#72;P>@Q8lWBLxh*U>n{o+J?UT0T&6E}cRCuY zo0Uw4H!h5(bVATfXjZ+sy!#S8GeXW8(Rei7DDYI*EE9O=B-$cDcre<*2!skC7~{Z! zUq@vQhQM#*Ai=T!Pn}gC_V)oP=gUVZ_Z7E=Z${%#%7N5sO7y)6qn{!N$qd&FnB1jZmm?y@jW&%*^a&KJ}j z7%cj+I=E1yr;xJdCz4I^w#bGc%CX78#khnPrs9gW2D9jXe`_Mv-5KYHWTd4#8f&w0 z1%tIObehx2XuMtVLx@?>8jFM(OMYGu?*UZTyhvbYL^3 z)^j6u&H7g@rsc}P9oQ-uy*82T4EN=*ZetNczk?aNAL{I{aUP{tvuxa(ba72+Hg=bT zyETgg#@3N!N)z!O2R*o##ArH_45t%}n34TLuPIA!D8&7E(8dG(;4Aml!9(~l(7LVl>J!;|Io`G zW`I9|=NvrmP7QCc@uHxjPf`_hz&U+Xgz;B7gGt#(#gi4jsFmg+Fume2kYh*8l9_6Z|*fkI|qI;r2$RZS9{r@F%NnN=X5iQ^Bi zpVHuZCLnCDrwtTi;31``r&!$@iN)5m#MrDHP+dU_d6a z+z({gf3*SYRI{}o$ke+|zqw4fa;bG>k{n7WGRE})G>b-`sqt}O2kwV56U+%JD3fK1 zEp>vU|6Uo691gZ5{%ERsU9?LD9-;lpMjcIaq+X7qqo}ay%oHOArLURYpfZkeWV-ev z+Nc<6vt|fC%y49;ei+jGK~H%BIhKH~Mm-}Oi?%bp(upo6TONkBXpdMG5S|T!`4KgT z=~`vWJi(OzgE5Rw0r{2+YiVavCz3O(3T3V|IkG^3p;+}}jI}2d-SIZIqKRZc7ILk| zpe)80wr~%5O`F@G2joP}Xah0=`YtHkwaPplLis$rk#l-$>C2%QoL|r`Pff`Y!PB;cBdk<7Oh#bh$;|W=tYGZ z7s*LtD^58nCR?1XomU5}>x0nZ8xoEiHsQxsZV*CDY;hxY7WZs9)s`~|8V8QgY*=m( zum%NqSTh7u>juf(V9v`TXFGC^oJ+&Bc0^j&WyP@64^|AD8R?eu9l1bzQH26?-tZr{ zn73X0A3H#~*pW-*QX0qP2n}65w`PH|UGB&g%BIaGTUefDglCzxSfwLNLGfxwu90gg zxT`ydF*eWo+C(vg^};EtP$!r*2#xpm+JO5eMycs30`$ln=5yMXn|W1adY3d?!n)>Y zXICtu?Xp`I1G1Uh>6qTx8IT`vbUa5vxk+wgk0?C+9P%~2ha0W^%BbF4$Q_Psl{=YV zG=|nt_jJ|&ypf|5J8zP^9r=;mLk2xC_cDyiZ}f9yc7@7uuOs)#{j|4RsRa}AC%dPB z{gR1ixy$82M;;QMVQk`VcjSb%f{FQC%iTNd&m0gQY&?~kfrUIPbf?M8GpAb3+(nkT zEMIF~=0>oYvsxqbqk1MCo_|+3S-rx-(G-tIl5?~GC>#~$d6a8tY+xL7#KTZ5grye} z99i1cnF*4eTH^Yl-XXJ!vp8D=|!g(_yr9xPo^ zz7xxK<2x2MBS_ln%{Y{gc`sn7I)PG7RRJ6Yycx9h(VBYT^pZDOQpT6DTlZ~Mqj`)w z7VxeXIGRp5hNI~yqXQ;l22C}S7m|&bhhwpTqZ2TT7YMVF#vGi*E6Gdvb0UiL+MF+qlp{2T#`bJuY# zH}p>Dd=2$6>grf+*$%|HgL%)RQ1>`5gRZ`vjHKhi8%-Z|4Pprc`9zfRDpR$pbfxra zHAe6BxCSMg6tavi4D(VFlSpNk?-yyS2S(b-WL@?Rk*0a4k(JH`3r(4eT1JXd+YL20 zYFAL!%5RX>Z44+l1M9PT|i$A+_mLTJX%V8Js(l z0~2LsxhUHLpXWhRS99RiLB-gq8C<0K;YQ6ES`WN~EkG;NxQ!{imQmA=YI?TM-cx(+ zJr$Q4dl#U__};ZQe>vKV3JFlL%W`OA4<(ij1-u&jM3>7K@;M=cEBTmKo5A;)W|}0^ z_i8+>IZxNAmVyX{mQN z?h`zXZPR_FK3$9d9@&lU9+diaV;7INyRc`bj-L^f@4`PemfeaWd+@@F;-BusKmDY< zX!PCL_gD2@1^!&HW#7HEns}uhJMdbqYN?~wJ@vjG1~!cw^6f$S3XSO3d^_=G^Cq8! z6p$*O+Pd$3KKpbW*I&oo_*Y(GqLA9|#;+{&F8KByyhl9#wQi*NHyM1eoX?Nk=N^2# zqWC{|;*Z?jpECGM@n`&#!RPwbQ}6FVYi-EC6JKry$4g788|Uxie6P{fKQ$x5z56=6 zr)I=kBD8;wz0_AC1@0=7LY!#UEs;WZpbLGle3M^7{vvzpzFT$nkldVMI^Y5~?2_U2 zehyx%w|lJ0+K^o|ql2%dF)AgarU!Bx2`PS-c5MM2qAHfiSltt8Myv9Ctx5yAWwNT2 zNQF{7^#wh0Uu~!$yIt8r{)$k6ZgC5aF-yGGmR)DG>N_qcXuJ-35K`j7IpQI%&|r@o z)Sq`)FE0VPmnFMcD43C&>4l|*Av+_7ZNWS4XzFGhmoH^AO7(-cEhAI6pfvmGhcL3U z>fEiejTSw)#T9epbjKYW&E;NmhYf8Wda$j2h)!>GwRdfJ9BmjHVl2qQ)azI08JW8o zH91Sq=d4oaX_>oQju&3f{-s3nXH)36U7@8;Mi%9)vqT4*f)Wb$S$XSMZ{_cCi@TeX zbY|94OAS|ngbElmUoBIOml={RhV%8UU;avo-%(<1sV^fdcgQKdWkD`Mm{8Tp0vBhm z(M7;Nop6<8flILqNVDv9v(%lzl9OUd+rR>HI!n~qSdDWCZs(HgJW|f*+Xc9az0fVV zh&St-a4)Y79%UKaMQD4Lb6&>fcmr49U0jI|IP-H{DK@T_Vq7C3Tr1;nogBgOOx!5* zaT5>IH_I~IB57=vGqFW3;?EG5;8uAIx5*Ryq2YPlEvO!}@!~B{4c_)l!#kc?_>E@)e(Pz&2cAy+ z&T}O`^jweMdv@a^&$IZ0=M{YHc>~XRKE$6qpW+j*2cLQ!Z1;}D7v2io|a+~!~kf3^;r=3uqwU1{OSLaXO(X*IOC=jYNU z5f-p>Fi+M>JFDieF~RWqXyIa)CiAV&q(h?c$$A!cmF$~rf`frtu%lA^Z!YRY`F($B=Q)F^s z!1@yFZ5|^(Lm6FB6R`fumdvX+#k7%j;*P-!44gJ;x16Wh>$a_0MztVT@ZXt4&ugbnSHK@Ii}qSzP;CfymQbo%PsqskylrJ6pF-;Q`x>{CGyug?gUV?d^9yG2x=F z`a}{myu}cI(*&4@^Iw$fUv(7u1v$eZD zpL?U##}>`#;<15`n7V9QQ6U}HxJPbUQMMTcC2~s-{3WKC-LO+`o$fU@nU;~;GjbPa zOersN?m(?d*@E#3{MiX$Meo@q4-noMgcAS8eOf;4`($%}yGUv-9+?`tHe3OnALp&~zlIB4@7Vtd(8273tgTvw3r^gAK yH+jMz4(KiZe;;j`BY9ksNvCC;vMmW)7Pc@BacX0&ZLY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/package.html b/eclipse-build/org/rapla/components/calendarview/package.html new file mode 100644 index 0000000..143ce1e --- /dev/null +++ b/eclipse-build/org/rapla/components/calendarview/package.html @@ -0,0 +1,7 @@ + +Provides basic functionality for displaying and editing appointment blocks, +in table-like components. + + + + diff --git a/eclipse-build/org/rapla/components/calendarview/swing/AbstractDaySlot$BlockListener.class b/eclipse-build/org/rapla/components/calendarview/swing/AbstractDaySlot$BlockListener.class new file mode 100644 index 0000000000000000000000000000000000000000..347cf4361da9efb6b7120ed00080f1efefbe7a89 GIT binary patch literal 4202 zcmc&%>wg?&6@K2`O*Yv~E=^*^+(=_>bCadDh-G`Bxs(R8r8YItg4)UMWHZfXXPKSd z6a)oZgo0S*o>l=BfAvy-{;G6aFYx1&AN&XWXGDC?JF}OTf-!#Z!)9jQ%Q??^&U4QD z=I{Ud^ZNjH;>{>R3e%38iMwV#YsOQ~O5Vv?Ij;~;nOQ5BHr7=b@5UYV^#9|0zlYtg=Dujne=4GbaKom_}F>B|n!^M>a%ROc;WG#ixS%>V-o31V2 z!C*wfQ@C%Vux`u-Lp4@}{K>4HTDH;(1H-eo;(l84lo*+hp$`L5^ecSs6PFpd9fJyO zcHxMVFXoTAb|z!FI^q*C3}I^&pI5khgV{0g1@tI17nYn=ZC@a5H!zG5h1QJa=};z} zV$RbpXJRCI%)q$bwIEuYPTMkPmH4;!Q^KXaInPWjC(V4oeisvxI%*Z{$E_*bwNfI; z|HK&q4B<-#cHu6CCNq_?3R<7u{~)b(XTMS#hs<0$Yq^OS?#AvYzVcu2f0GFV_egd- z3dMZhalL|OgViT#*kfQXST)T|!<%ZQ!7cMmTz$1-hhXSn@L*OWTW!6(t{W$*+}eCh4;Vk~qxL z;+~13=Q+8gc~2cA*ILXHQ{0~;v?Gj8L#sm^!%-ZIVou?<+SH9Z4SXFe`9?ce za+VqR?x2$DtRx<;^BYicOLiVo*i`c~lk+TAPz(>^gn@^Jh9*1b&70YxCF1&qfp6kl z3M~?+2>hVKayxVj|0C-b&YZMzZH$^xFb&*^9ipC;fi$E$=~9|-+_dEeoGYANzovuJ zA+ZrepHj0kBlA)4DCnxuH+?!~<^4)+T+lM$bX_6>df5vbbW94nHUf$|qx9-KLlkTd zJJ;LiYK*h*=%#$s%33D1EVMsrzyY&*=Ks#HoNNA}F-={%a%i+@xYMU?&j(vFuqsU= zW)~{mBZkND?I<26OFA=h_)iwyg5w%^0#7m{6fbp@wibB~ru`}D9y39K)HYC%L-?+N zr|`6#1MK+Pjx4ST!yn^`MHCuc(kWT#7Odc`foFpAX*!qI?Mu#AnR?d1bGo_N1vY-y zt4>xT*3n3eLwLc!4}uuwJP{L;rym+P2VP=+!~?Jz=n;qIDqZX)120#)*h4X#$E$K1 zc#X;%o}qHZz#DQ@t?`6kf1+#3Nz@3?KK=OpR(#NwOGWohx3fD0B*UA@@p3kqHQ76P zy=c{yU%6^wkR2e*UjstC5c0YLbacpthF|h)fx+2UzU}1-S<^l`b`@=-*U&KIchEFC zb`7IqJFIPQCO}}305j->O-rYE6~MkaGQT36 z*)LA7V`mv(zJP}CWjaoLfc<40*xSeVsr0`7reC1B{~{V9GC6e-t@3F4IT}Kj!btH&-5)^h;mzkh93r$W7{CnQ!Ww=v z!tEcTPpJ-~zrVttN|FtUp+rFBucgADPKbQGi?99-W5L^4_&q#O#@9Z;gUQkHGLA>y zLNsy-5lJ5(Nv`W!L*zGrr8XliZQ55;Tcu`$x=nI0_X-UzF!4pXwvYPHiZ}SB_ER{+O(xmOjL` zC{`51aVpdjScE|VJ3fh8j{5}F(^5vhrqv!a(!fh(<7Kk(Dr0z!ntYuad_zY&=sT!J zyCaBp5SxM+MY$}>b|NcOk=?~XsXtY#xJE7jE^4cO6{xCJ69jD9qPA!T~t*|#K>$jNQw^_YEtMk)S_0tph2{5-2()X$k|3P=c=F-O`?Up4l?A$cdpK030bO!v=oHYL&5r@li*qqY5OO}shB~zHl3>m`D`GWIDvOvK&#*{ z8YO+b4qLp6EgoPSxIrvzbDKmR{7;C`q+730 zgu?uGK~v@0hcNyZoIlR7AM-bL4X>2(dQDSpdfQ*wz2Cz&yk7@mdlkg?0EB_wfS?dA T&{>FD{0X1J5C7B0Pl0~}^;`*L literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/AbstractDaySlot.class b/eclipse-build/org/rapla/components/calendarview/swing/AbstractDaySlot.class new file mode 100644 index 0000000000000000000000000000000000000000..5a017241ffb5cb7389a86a4ac047e1edf3c30980 GIT binary patch literal 4171 zcmbVOX>%M`6+JD@OiME@S&=O#vMpo7Se8cCjIj;DjAIflmd2KBIf@m_4k4|Xj?{L$ zTXeT1hb=(ZArSU`4G6GK?5XN`uV3GHmvhg( z@BQUJfA|xCBeOBxRp6%9rueieTy zR^qnm(tN|`IR>fW*wj{?o)tVs9It$}sG+l}aniCEmuP0&f_xF3)8_KB<#T09U@EMH zwo~95H*H(A!jY9Q^xSDHT=MAau1Ll)iL`G$>saNm5PcKznhn#fIHL0SmYp4oF_?_D zQd_d@t+;fw?L^tJT{}Ffp><$zPD5hUt61&Ou+PA5bcy4(Yn@%WwqW^BL{N86d8Edi z$y^cocrkTCsY#<12MoLoeWK%_0RtU62AP|B_>*R^L804cqJ1#;=#H<&bP8a^aF4+)GxPiiuh2m<`SHRbmr^ znhC71PVvORCCQMspdoDs^>rqW%l*04AB=5FLE z4$kR#oE58_6Nwp*JtK_*o-l9$QUMI#KBr+hIiLLHP<6~s}c3Cx`cvMnvC*@wNFH6Eoo;glu^$Sf_7K& z5o>C#*antQucCfFsEUuUAQpW#t4bOxSktkpp+}NeJ#j9SrcKvew0r~C@f_T9 z3yHdIchz+4iWyqftdfC2bXGB%)KYw+Bs{0W^QxUg^^i#|%*c7C;lT#Nk5Lpv+ydj`HQM~Zfx^--rw-DN@MM+Sb3J`K8WspFhh*#)cM#3z`B6I&;E z(_Y2uT@8>;@aD5*mxCf{pep+3_=S#Fs%Ms69uRuE))6oy+5wfRWdddqJHiTxyMWv6Vp zUhQbooR<>h^{M2NA?nn$0v)$CjBmBQHz~}jvunx@LW>#+=BD?=J~E?~PZAmIf{r%M z+j$FYL7ERQ8R|~RB2*(wP>n1=HL~c`$TH-Zkn4sTdD-CDB5jysn_PG}c5t=_eYCKb zZ-X4=mu!6vZ@I}y3-`@{33e=WZjLORS?m_XY;$ZzH#k zp`5nP58Z|Cx3~TgM>p^ezP^IQ)J<;g<+W%C#~H1d*~?gg9F^^7ya(Ax1}HI1i98PB zurh5Z4~J323Ccdgrwc9rrHH2U3;&Muwv3Z_5C0{ilXOg6OXYUct>%!9660e^@6Jdn z)=POjN^GbRk6|R%RZ#ClCwB||H>fm1C&gv(`X$Ij?j>t#c>2YgM`A}hxp`>l4#r#X zXPkMpNlUT8na-M)PE6x0^(1f(GqJvx_?F=AgKyyc{Lltw`8;_Wm!@-^ymtfU+2J=~ z&{%o+&;~4tJVJRVV+Qf*VuZbnu8;Bc^OzR*1$(Nj89s=saA>fLSJi898A30czek3( zD(o}R{*8Ve=XJJ*1eWps*t^3V1(j5{|2o3vC{HzDm5Pn=nt~6+yKhi^8+T`OJ^DI6 zD5?8!ZqGWN&-Jb2W4T^3?1fxUvM05HPu5c!(dRT%cZP*CMW?4p{<9?dIdXMI*?c_G zTMICY&rnW0&Em71wW!(WIBQiiDJFp=i_ddSfXm_woTb$4MN&j)cL86FJr~-EjtrCV zr44-j7QWj|l-Y(9XKIdQ=!MP%FA}P$N-AF^ zrlj&!{P_u9j+NF6VrU)ZX04aG=cxt!9}>lg^z0 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/AbstractSwingCalendar.class b/eclipse-build/org/rapla/components/calendarview/swing/AbstractSwingCalendar.class new file mode 100644 index 0000000000000000000000000000000000000000..54df69f1f91c959dd2da7acd5f1aa9fb6947bc15 GIT binary patch literal 12733 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 RPO0-h6uKTcjr4d%{x71V21)<` literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/DaySlot.class b/eclipse-build/org/rapla/components/calendarview/swing/DaySlot.class new file mode 100644 index 0000000000000000000000000000000000000000..3b971d5ac148246070bb6ba3776d8722f94e0e24 GIT binary patch literal 451 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 TAHH+)`yM~Yk~!{=;YZ+KTocHp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/LargeDaySlot.class b/eclipse-build/org/rapla/components/calendarview/swing/LargeDaySlot.class new file mode 100644 index 0000000000000000000000000000000000000000..db080888e43645578b208644ac811e439f45e1b1 GIT binary patch literal 9644 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/PeriodDaySlot$Slot.class b/eclipse-build/org/rapla/components/calendarview/swing/PeriodDaySlot$Slot.class new file mode 100644 index 0000000000000000000000000000000000000000..f09803e01058d0d233fa4dff05ec18906b8574bb GIT binary patch literal 4003 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

t}60pWR_ZdVLtg@fg+0> z&?1+NZ}Te`+&o9-o`?A)lILRn{slHeE|tri&1*@g2B`{1boDO0Ag*(v{J=o5vqVKs zG!@bynnNKx%sTMyA~aRwW$tFj06UJMx^8~f0yDC(x0zqY?%u4^SXtl0YgKx&d%LOm3$*$`5^+_XnWLY@$XuRuw>+1NUG1YRQbxR(_-)D#~^=?N^Q z=4_4#ap(x9>Ug~_m%*d(*-TG0@-Qe=Dxuz*BJz94Blfx{&o=uTP6_J_x$!U-u(^e3 z?XrW$iC#6_2Ck)<>x74Tm-dX@o{z3~(yD+D=oe?V_uF{f=bHX23N8~E$g9daj4rbyEA3Hc<=$tMZ9 zOYWvOj4=9ZapB=lohMB7T|{GTk$dE36ibk)Ppcz4ado5YeFVL-!YjR69KDCVQvMM+ z%LQI9#49`PIZaObb(WaUn{eqeESmW)Cb@ox)s-dkDapo84d`|Xp{?bsNIN`TYItL) z=9c>|xMk$rEsX_RJ}vj#UPDjHVmT!boEzw`&Tip<@_C3Fb;-l>8Mf8rg$DrnEc+Qc I;pc$=0e3`mxBvhE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/SelectionHandler.class b/eclipse-build/org/rapla/components/calendarview/swing/SelectionHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..1b165a9a956b3a38bfe0c0856e3390d4ee8e1360 GIT binary patch literal 5880 zcmbtYd32Q375}}N$xLSQ1(J|KF$5A~APZrL(x8S#3{j#9qy|yIC6mlYGBTM7Gn0hH z4eN%xRxO~_fYG$JYNZgstyn8qY}LBgrM0&8)Gp`L_8kB4p!9d&_svY89uFRqlegY? z?|t|F?tS;m!7rbD7QjjPzypWEDY1B0ARg?E1OuJ1p59p0j3yI-&S1ohhJx|_usIM& z41}Xyfi^Q@b|%BI=%QdW6fxr-xD<*m4fY2E!GUDJ?B~HiORO(pE(isClS1HDnDSKw zEivKK98M(7s2NwtN+g5vq(WY^rtV9IBY}m%q*<@vq#6pj9j&q6zTSpNxO271xmuy% z>##M7b}5WWq_k_ZSg9rjBfZ!tOtNE6^Z$4J*E$B!je(QtB} z!Wk9cl6&Pc1y@5XWcuJlv4IJgM1xjTF7ra6#DEVuGMZw*utp~u$i*00n`&UJHL5U> zXN{^1@X=lk1{Q+iy$Rw-lL&PC38|v5kxgI|uAQq} zg1xp0EX`ZvW+GvRd^j7;9-O0af+)5&6^H_%^B5!HWY|m?Xu)EI{BWY#T$R-EcSc__ z8H*}>{k^r`tp>g;db@gJ{d7yNHr%<4r6A>}47pH3L8d;v-9l1M3KC|r^=RBk$RV07eA9HDWExL<%!dncu?H6^%>7m&WZ)9CQ%skcTo_!ZFsq`e@|f|%6B6F_ zIp{#hgHDCOu_|L9HDF3m<@80ZT(ck&k(+fH=th|9mRb$5z9^wUurMpBum=&^BaOAz zSU8##5JnBex*~Ni-i@H z7U&{D=ItdNmojhHOH^+#;6b*GE;rysw%q$l16N@qQy=58^W4|~#nXgMa*OX7xCYnK z?VWLx*;q2NLgTS#rIdM_R@nMv61&9A^#)d8lIXC>z>RV(w`D{RZYI3a_Gw5xOQO@Q z25!Uc_I>RPKI@ySWL@x11K-D8l(i}xH`CCx!*|iBtdUlsJ`>H_ZT38KF>60Fr<>^V z-t^lhImkLmLrbzysQt!xB>=+mkcmO=HE^G#CSN$w7z!sPor+2CH}C)kEd)xgl?Rs> zO(7$rhL^C~Zs0+Tp`L4H_K<;x^=zH+|B-Gkd#>h_%JSq^)CH{z> z1TzBNF7AEYz|SN$_zEY}wiS*$4E$WYot@~6$0CuXF>$;NUALG-B;;C9FjFtKFFuO- zUOeT&lc^ZeC~pZSyA3=onmT*JQ6Ki=Sp&bY=0V=;IXv&dFX;!3D}API9Se{i1HZxx zJQeGsFZ`DO!m&VWoKe}9B=URevvGi1ZQZfHNT?(p3@6NzV6?=H$769HevOwrIH)jA zGd}X9f#2Y_jICZ_7NGr zTDGobbQHT;%IJZSu5aiV`q3_N^kj_Q<8aBU^G$O#oyFZzQ+H2rt!9!#J46~&#gR9Z zIpMRi&Y59(*8OQm+b{AAF$ziu2PglsFou;UQxIE70@6Lp5Z$u~VNcg#|b!rZ4qaK_M)ZM1G8}oXVeI%Qg6l}P9u$_?MhqQg6a{>*@E0Emnh81 z8KQ$z>rg=HzzkY7z%p(otu%WS|AI9C0yN@G@;ytRRQVh(N()NZf=Vqxc^N^&7+bvu zOJI_PW~=$uh%1=4B-j#MkZfNHg+ z)mm<=RrnQJWMq$_D}cpx{}Q^tb(EaKw4B0Gau^EZC}wF|j9^L7poFIdEjI~317)D1 z(!BTxYga0qhh?M_V9&EPbypSb!uc6KKF#<%hTgJKyxeJCZYY5Yr1pJ zFecIRCl`%i<$mO)hIT6_sFRpN)&Q&Ga)%abm5nR0s>r+#wo?gZTa2+@OuD!Uy2~D~WH%%9I!b>lV;Fb~G zk-1tGKbe3auhqdA@5EGu_#JIx0anrNUG!)-F6Nci^A#1x&9YQa8+(K8xIFIPjeBTj z;qn7)CV)<2me@jLxO9XXaD0KO9<27DV>V5}BHc2GV+Sc1d1^p39KqJDa6Mt$qD7Xb z@5K)lc48YBd)ia8A+byQ2!`hsI|g}T`e-}tMCn${6oW|Imsa`Nmg%;=?Drksno2e z@xqS@nfw(K;71tlsKu21p2&dVAYBGT35ggZsF#tyh6y~*G@ro99M47{lX^eX;#%gQ z^#sTU0^~AA!{z*Dxq`5{l2EydCpVJvYOb=_=I?E|j)1tHPt^^qyf$G6YvVn*3D4se zyo6ivIw{`6?f4LP;1k@5Pg%o$hP!YGcPkg}Q3f`vVr)^9uvJaNy=o@zQ+2ps)#CxR zfF)rgwy7p;R~O?!mEgD^4{5N@vtX41s~WJuI!=WMr_BWGY;`(z5u#2ssTmj%uu{TU z?B*y-!`2U9&KIa9Xw@OiSJmSkTQQVWOx1+b-A48U-^*EO69_+Z0<0hNSkZ6IT#$vw;uc=zRu9n~p zwG3~ni|`gh@*TAS&#PZG>NWgDy^X)BkMObj zlzWHpH~u&G6NejrcjVz8jw1ZiQNeK?{_R+dPaUi9A4eblt3!P=Z_Eg^Lp{r}2Cp%M zS#dkMm|n&(Ui103$3dbCEJg*Q2J@&66;@fJr}{Kvs;yv>mtH>w$Uha(SD zPBDJZQ8tG02hGJxi#&yQx#m-wXkp>(RnK6)CBu(La{{UkSaX)WLNp;!h@HlcOI1ZDcQ`3NX(4)M@1V@n^mk-hR=w}Ds{~s2uU^)N* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/SmallDaySlot.class b/eclipse-build/org/rapla/components/calendarview/swing/SmallDaySlot.class new file mode 100644 index 0000000000000000000000000000000000000000..99d8cc1b827212980cf5fea1cd81122eb023b4ff GIT binary patch literal 6570 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/SwingBlock.class b/eclipse-build/org/rapla/components/calendarview/swing/SwingBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..74b651a55348dc90ada5e9212cc9066a95603e3f GIT binary patch literal 360 zcmaiwO-{ow5QU!$CA82VHi#RLY_QaAcl;Dp0wEEp3wBf23NFE}Y?DYFjRgnbP>4wY zl^qMulRV>Z-t))j+dF^>juLbPCe9bq)21Y;-1Ej+ZDWv%N^MuM6mlz<5m+$&$Epw_Ix#6YL3`{!eQW0!g9cg6RUsX?D}XsE+dD*TYm`upwjPrKh6c z)dDB!cJ7)jKN=OL^Le%q=$UZqDq5CWU?f}Ft6W@p$S)Z_2;6WyBDwY s%rwtN+kj_{9Zth6K3)E;E+ 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 b|1ML=<{;MEOlEZ(Q@8{^Sq(s9r9%G;U@fnv literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/TimeScale.class b/eclipse-build/org/rapla/components/calendarview/swing/TimeScale.class new file mode 100644 index 0000000000000000000000000000000000000000..56b05af93e27a99a2576877d95f414e403171c97 GIT binary patch literal 5741 zcmb7I33yc175?vRZ!+_e41otkh=L#{lfX!b0h5RgAP`It2}=V-^2od-qmxNGnStPn z6_JY8rD_$aHKL6cT8olEMeU;1N;honUTsTj?PBfTS_RVo-uEV%0DiT6Fn2rmtp7Rp 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 H39fzslaokJ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/scaling/LinearRowScale.class b/eclipse-build/org/rapla/components/calendarview/swing/scaling/LinearRowScale.class new file mode 100644 index 0000000000000000000000000000000000000000..b844bc0ed794d6f05039ade2a53f055278d3ed6a GIT binary patch literal 3854 zcmb7GTUQ%Z6y7H!goGgkXbVkJ+iF`OV57CItpr3aEveiJlv-M)Lo$$okicZPw6SI z3FGk!G>UdPmDLMIF{fKwrm>wWZ=1#CR2geLj+sS6x28+mGkhpW zenHU{eM?UjbnH$pt{7Q6NcDoQzAAF20xBqI0pEOR2of1Vjd&|h8P;fN(}K0}%*3tP zk(q_5k?Doe$y?KcnubcnvaJ{GIlZuH)WN;9pa$DqGv?utpd(|F;ihdCQnSu#FRZMY zMLxtceMikg+a+riSeA`do&C988?fYHe_f*&@thA02jo-Y&KJzGIxwZ7#gNE>Z6n*Fs|<~TbA|%jiM@m zA8OQ04d9NnQ3wisa!I<>=5>Bpw~gMe4C7wY=sJx;DwwRK&cU!&)_cQrgT{jN(Z2Mk z>}oVl6G%`;b3rvs&N0H2MmOm)n8GBoQssEm6B|hn`;bUb2&e80l}c8Q>E708h=y@1 zXD%%X($-lYw+xT6Zd@m~Q6!8j8peaf}xsmnpYe_mAQglE2(snvQ*P)(6F}+qv)U_ zCmSTH%)EMl%1IO`m~a+WV1kH87Hb@bZH>-TDohXPvmiZ0zE#`pxNhe)8l(;0eXP;v zw82?v!k~cgVaro!e%mtF1Tn#3OJ80_Gao8h7TUF0!ujwFx@*?BW^%7++h5-2*&>|= zmpc3c=w3eVW$3d$?qnEa6vl|i$u$k@=tpvnLXjg%M~+AhIU@3MM7P3t9Cy(t@odN2 zJnjpOiR5$YNJg7?DV7ZG;&qQ++odx}u}kNEm$y6dj8Q$FN68QCVdBz^0BM=x!0N(| zrm!eU-FOq!LvJ~D`eDb1wfbZ?V5^8>xf+M335jq_opKOxUU~oUL+2BaS>izdVv?5N6h*XUB;8Mpcndabb@h~v~ZBh6%SC* z4NZ{VbAYb6Kr?{hKLst(v_$HYfa?iQj8w$axY{RSPpJzoY>NZifPBA-QylB}UCA!W zccL)soqR^U9%L2$L62@>S9E-39A7iA$G)~OLHzph8_4C;@v7H~;waKP?VSj3!V=lO7%7t`2dU zrWt?-P+_yET-M>1Ypw(YKg^v>c0Z>%b^&&BeVD}XOXT|#C-Tv>Cz8tK3<`FZIsnAw znp6<3$&-%B2)-&GOX)k%eC}Yz&1l}0@D9kZuWhcmG{^aFzR#1z%HTZwy9>B`9v|Br zgJDFN!3Fkx^ocYm=+l>(S*T$~hnYpdWM67Vmu7tY_W*`D`KP6{MD1|l+}{*QVmz}) zi|Bm3@*9rS$?l>&T7e|1_?i}^Db?}X9gmjeS0i#CO05WWJ-M;+(sa-z_{Xl6Q~@8#w6OTv#ZNqXcw3IrL(n>HI5J#! zWC$hVImGKQ)OQ|sA=mj3S&s7|Dm%{GF1xD$=a|)O>)(60RoXg^IB6iaKwPEV zskZv!^^#zrzwX2y?IirUJ$iJoC;R}MA5o+~NgJv_V=n0!eIZE)@D2V_l8)e;%bIY3 ze&yO70C}dbamvLCHD&qPRbbp15dks2C^U=_x98fAs))L#3z+`Wi%h^v!>G CA$98j literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/scaling/OneRowScale.class b/eclipse-build/org/rapla/components/calendarview/swing/scaling/OneRowScale.class new file mode 100644 index 0000000000000000000000000000000000000000..84591ad9920e5eef55189cedbd2ed9c4286266c9 GIT binary patch literal 995 zcmb7>%Wl&^6o${(NnAo8=@rVQ7j=_%fu$~B(TggADp`sE5mbrg#2L9$IWyIG+5peQ zh7}SE9-t3Z^&dMiRt17CJm;L5^MC%&%+>YJUqrM^>j8O;_OwYt!_QM5#(I3Nl~6Vd zW1b2%;^tC{NtjKfO2Q0#F1}OZgPsgrM?f`3oil#P!<4(D;hBhSKn+HRcg03C=wQs# zlu=_}DrpZH`Q7akMzx+Ei6;4UzeNGfF>3dv5^pcYLt#GhVJa9c^fgSKa3ftk-K^PD znK3%(-_=iL%su=q5%yD0Yco3522Nq98*N8$XI#OMEu&>1zlun`m!C!YTG)vYic!5A z<(+ex<;LdP2JSXbI?y0-vKcqP3~_$QzThv`$Z^4bV|bF_0eadP+_KbQHwXH{#Nt@G z`8yTMFWjThCcz-SI^H`##KmE~hbly5i1nQx)clUbqZZaiu}Ke*x2E|+YNG<4=CL~Q zOGFRR^S`;ZqHN~MmEx2NrR!LrMQ9i;(ejjWgy{c~(asqg#c74Hk~19b5i$?@$EBlJ zsGK9e)4pwKsba}5aeirOwS@eAtknv`D;XX=nU3}JKNxHOU_2`szlRBK53^N)REL=v Jd7i(=+6`9as4xHk literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/scaling/VariableRowScale$PeriodRow.class b/eclipse-build/org/rapla/components/calendarview/swing/scaling/VariableRowScale$PeriodRow.class new file mode 100644 index 0000000000000000000000000000000000000000..10c8f731858bc9ee123344f9570e4ae9b917c17e GIT binary patch literal 956 zcmb_a+iuf95IyUJxN%HkQd%xeODU<;q!LCvLWK|&m4X6Aw95O&S*2S!c4Rw^;G1|s zq5|>22k=pdv#SI?AUy2O&dk}fvuEbl?;k$_JjK2XN8nAGjl)b%V;M&2WSS-_De^Fq zu}VfVyV7bN=5w8l!<;c=2Qt%g7^@HI{LH}G?^UML5nUH$f#6bJ$uO2go(?ZnR0y~e zoy-cA3y7XT`QtR@v6dGyE8g0SK&80QdHadLtNyC>JSW?cPIU1?;N)O+x?X3%qL0&& zszRXQqYBSM3AcRI&=e>gbOt7K+s6%5i0JD?y_-#jDmyni2{ijDg<9&i2$s!{1^O!& z_)mZS+#9RHG)8~oyR59|p@kh6+X63F71qZC>fLV$x~*%hf3d&~?oCVCBIyNhx-fi xXT%8Rg6>zWbJf3N>moRcKQrdQuvct;&oY{lh+Qx`cxX|3ctqY9K literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/calendarview/swing/scaling/VariableRowScale.class b/eclipse-build/org/rapla/components/calendarview/swing/scaling/VariableRowScale.class new file mode 100644 index 0000000000000000000000000000000000000000..3b1a91cb17ad367dbc5bb3728e3ea4e9eefa934d GIT binary patch literal 4204 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/iolayer/DEPENDECIES b/eclipse-build/org/rapla/components/iolayer/DEPENDECIES new file mode 100644 index 0000000..006c692 --- /dev/null +++ b/eclipse-build/org/rapla/components/iolayer/DEPENDECIES @@ -0,0 +1,5 @@ +This component depends on the following packages (including subpackages): +java.* +javax.jnlp.* (For the WebstartPrinter) +javax.print.* (For the saving in postscript-format) +org.apache.avalon.framework.* diff --git a/eclipse-build/org/rapla/components/iolayer/DefaultIO$1.class b/eclipse-build/org/rapla/components/iolayer/DefaultIO$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8392a91b65e0b5a7d017d8d7bffde898d3524f3f GIT binary patch literal 1366 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/iolayer/WebstartIO.class b/eclipse-build/org/rapla/components/iolayer/WebstartIO.class new file mode 100644 index 0000000000000000000000000000000000000000..bd2a1be69e2fd8ceefab48f2b76866a99f20c2b3 GIT binary patch literal 8556 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/iolayer/package.html b/eclipse-build/org/rapla/components/iolayer/package.html new file mode 100644 index 0000000..72006e9 --- /dev/null +++ b/eclipse-build/org/rapla/components/iolayer/package.html @@ -0,0 +1,7 @@ + +The IO layer is an abstraction from the io differences in webstart or desktop mode. +With JDK 1.4 or higher PS export is supported. + + + + diff --git a/eclipse-build/org/rapla/components/layout/DEPENDENCIES b/eclipse-build/org/rapla/components/layout/DEPENDENCIES new file mode 100644 index 0000000..c09c982 --- /dev/null +++ b/eclipse-build/org/rapla/components/layout/DEPENDENCIES @@ -0,0 +1,3 @@ +This component depends on the following packages (including subpackages): +java.* + diff --git a/eclipse-build/org/rapla/components/layout/TableLayout$Entry.class b/eclipse-build/org/rapla/components/layout/TableLayout$Entry.class new file mode 100644 index 0000000000000000000000000000000000000000..204910c61793b54b18225e768ab9224bfa700bd6 GIT binary patch literal 1355 zcma)5OHUI~6#njX+L@N27KDmW5fG&h%0K}N78Gp2G*(z(Sh%~?Nf{hwa5{zX7yJkA zSn0-%3B<&O(XD&`jEUm8w?Jxi(KhGYGv{&7cOLiq@6TTV6!2Js!jSj;y6N)+hnqET z|G;xCH)xm+KlYk|`JC@KR#nR5Yi{5lYfu>q9fp)Ww-NZ0RIt^~CvXt3o zP|My+D+-2d2BL^X5kilFUR)uPV3_MPyuHN?-CF^# zy?VwEBp40%874Yh4-E@c(Z9<_Ewx@ZxkEMer(4V5aJO!5?(A8$pp+52=t)^LM8>z< z8NxE0>f7>~e$8699g88+_I##95Q9;1UCS>!ywR{ISy(`4#TZCZ#bAI$ zLaY#dE9B7ygLpT6{UEDK=Xy4GhIlrAiUd&~(G8+OqFY2GpKvFeJ;gnui4*kFktWKV zKvUmC4V@vIojk+jN4hD5DdJ-yr(QryRL!@P!~Mg|huIT`=fDx{@%fkiyHDDe%IEJ_>>E$6sQ^L)*Zn}ayj1u8ulp%#> nDp^6C{-W_M;Bkb0VUUm(SJ+R=px~k8kFY{#j3OE4u?qDMMTRzq literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/layout/TableLayout.class b/eclipse-build/org/rapla/components/layout/TableLayout.class new file mode 100644 index 0000000000000000000000000000000000000000..0c87d6221afa42f7599311793afd9b2eacccd424 GIT binary patch literal 19632 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 H44Hocdp}I+ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/layout/package.html b/eclipse-build/org/rapla/components/layout/package.html new file mode 100644 index 0000000..b7d8a01 --- /dev/null +++ b/eclipse-build/org/rapla/components/layout/package.html @@ -0,0 +1,6 @@ + +This package contains additional LayoutManagers. + + + + diff --git a/eclipse-build/org/rapla/components/mail/Convert.class b/eclipse-build/org/rapla/components/mail/Convert.class new file mode 100644 index 0000000000000000000000000000000000000000..783efa6b2d964feb6ccef4d84399eb353f135989 GIT binary patch literal 1313 zcma)5%T5zf82(OMXf1`(3Iz%R1<_uB0`*=%ErK?wy1<}7Tnyz<2Fpw{41|>{7ruil zQl0>$sNC2c~DE@saBm-By@Ip@dk?`Hs}Fz<##AYxjDq@|ULS~72L zmrO$%_D*tJ(~HSD)7X=i?S@OBeM{TZl10rZBwwy=$-FJlJgpnLJuBdh#+C$JbLP7A z!ig(BG@)6*pVJNbVt0E@TCcRVq7(?`%)C}y(kxxY)uhYb)OQ4ibN?ig7HG1~tU>I~ zXs$+R(YAD>kd9@&2;iz4L4iQ6%6?gpmJc293wTPJwIi8xBP1|TYpW1lFs*IPp5M>Q zlC7JDfFQNtWh@q`CsJ2vxSxz$7i}&7?zvW~%5AaDXL7$nS?S2c>V{O6xG^BmRpVAk zXLj}Cy0koq5Pianehe$8um8o3CFRBqANp`pbz~dhs2MRI;z;msYNe7i)&<5IS$m0N zl}uWV81rEqNqTFW7rHv44d6&yIhqj&MOPc^zQx*Q-5VRy@*;&hO7C4BHL9UJf%{6{ zHC0M08Pfuz|H)pBB>5D^1RSfR^1M)G54zCJj%G$Z2yN-cTTGk)*Q8}IKwSJwbO;3z_l@YcGKaB`YR5!=bs8fAPcCQ>Kjl*8vm ztfpRD6CqD%1+bjTc&vo{DHChNHzy}*Zru;jm1!(5wHd8Bgi5NMmdQ}Llr_#zJ`w0E zq1?45_0ssEOlE3}?Sw^y!bfei?+}{rdf&N&NTeBwzIQC!-l(iwv>QW0zH2X45l`@} zgd%nxWe>*A&gDg-GWJeS8+A6DTqrjPMZ#{+#%x-$bG*WFWA|)GD6y>Gcf^yLiDF6Y!F6DLYm1Y9+hB jlI?IF_=V>261BUkHMUgGRI4|rwQ6CdN;qJ44u^jMRb`!X literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/MailInterface.class b/eclipse-build/org/rapla/components/mail/MailInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..d5b5bc19f0e0a94a2d0e2bf21864c466bb05813a GIT binary patch literal 530 zcmbVJO-sW-5Pj2D)5dCRtlvMt_D};}6)&ZN7+bK?`!-#}mSj_st@yV@@ZiB8;Exh# zgIJ^o!G)dK`FM|=Hy@vG?*Ptl?4U$ANwdh$#5@*$m?ra7OKoyL5i0g?*<5QQvj-7M z2NgndCLVZu)vaMNC8{9ncn?uM(O)~2wc>5W@!I#C7 zDnG#A@!hgJONol2m8!{1PfyP|r@QCNw@;q|oWdgmZ2}`o*B$LO0?(@oDR_KzpHB708s;iZs!VE(;y# z6zFmNNG`60%Th0S%K@FRT~+gfs;7NkZyGbnsvip+bN`KKTEI%^enwc4(TadM`=%xv ziLavAz#f78&Ov^78|bAg|L$A~lSVo4NfZ+{y0X|S&=oNHRTZbU0SklJFVG#!guUm< zF3?|apL?%7C-9=WQ%STR)u)S9j&ab!AspWFzo#_$X9~B9RRc!^CK-&^@M^2lp$LJB zeiA)U^}5tfnP{p&y6MWq5Jp()!yNvYh2uCOkdqN>%Pw@cz(gU{^&f#-5ecb*f+k^!NlT0}Abeb}$nedZhHH%YZf9HqE)q415 zVnt?gMxbNiVwX|#nPVCT7TjfnHWrk@x zaY6+~cR2NH^66wJCxlPg+jXHN>Mc}eMXl+Yob&k^$gv8X;R)6o!=y($JxxFx&FJZ% z(V&$>e?k9_(RE}$q}wKqybWa0O{3Lvpnr~50=sCp4Lvl^&}w%Y<|~ElAj``Q*pJuI z=a%gLCia!~^uBN6KxqR*kK5NV+{Doh2uz zaFd>ur`V4M4yF{(w7_pt%)-Ya?h?5o=5Y`AiS872#{*PI!x@USL^CG;kSMpI`W*=# BgQoxh literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/MailToFile.class b/eclipse-build/org/rapla/components/mail/MailToFile.class new file mode 100644 index 0000000000000000000000000000000000000000..d7f1ae39072ee121eed96bda6fa8a9195a2dc6cd GIT binary patch literal 3149 zcmbVNTT@e46#h0OImz*Oi?^oUB3dLMM6sd<>J33b5G)jnTH8Z%5{@Q0>B)(xy<2;= zH=o++A8@8`&a|PHnfm5KpF7jXKKHF}o#{BG-_A)$1k{!xBx|p|F5h13TYLZV&rd%C zXvb{@bpksqI~BF{Tw0IDtxV3!8d)bF&FE%2I>@h4tJh2$3OoXY~3-b@2;#SWJJHf&L`*Y%Q}Xg z)Z>PLk}&OI-I){!4pd=`IJTKhbqe^p%&h4g5~y#Aj0vbcSK~%b=FBTtDR5*77^U}I z7y(bWl`vG)BdB2+G=Y@^X4W`e$V?dasLlgPWL8{HkLk84*JY*0nKbhPjRQ|Us#|8B zq^qf9`9BLP!FEQ*R0xDLJc|tiflBR(%;(Ai2bUb&k1eb&yRZylG$`06uz!hF)vz5q z1pFz(>7F#x34y_;g-wkt8LC9ss9`6X+$3Xqy1*i=ZHg?+5@5xeH3Xp2Hg9ATlJf$m z76G)-`M+o)V+z`y%Jey+DcCKbl^AYXQ8{`lqG*?#+bghc5m>V8QS8&uf&J{Xan;N_ zBpe6foPvV_8|IJ8u>xyu*eW{lf`YC`=Gq-74To@;GskHz7(+?2w>Gak`<;svQ^f(a z`*DoJ5l&b}KD*Nim+-X7o#PsM&`XGVF2_O(wAMx~kMhE(Ww@O(#7PZ(rLH=bYpG6~lN@!5M*#HDxg31>1D4%@tk4h>WU|kc0HrQ-&We zv4oj?N@hJPfxj%Usj2Tt@S->;+jL%Fd--7H4t6f&iDbnq0&6Ob9_BsfoFyp3R`4pX zlFEi;fU8$=5xPt;A+UO00?C03NXT6heNA=Ob>+?AM~ap2wXIAnENx8cn28aDIT78c{s_1gm_){?Twle^$pGSOQLy8!`t#2_Qumzo`+WD@EW!|z5&~a zn>mv&8BdsZkHYzukJ>RSaZO-_+mcFycyyVU6_PLvo0B$YP}3S-&w@sqYx_B$OSD;@ zaY^Jp4)p1(jaPFHX*=TR@ymmHuJl|e_@Z*+(la|cX-Y=~ls0}uY#K*`M~mn#;>0xi@5lU={opBX zNpEfj2l*B97co?|^mO>|ph2bxd1budDDBtLW~>xyJm$OU7a`w++22DxnR)iN8C+oI zi{l~RG+vuVJf?&Qk)BC@0@8 z#%_ucAGNzyJ!32oQXaq`Qi^yp6u4hq+$9qN=;GfnlK2aMyT77=!=4oVqMzNXFEQ~3 z83QzP)x!SlqE{RH8pRguruQB`PwkA*0TcU?=0)@|4&oN&Z}_HtM~nM-0l(7f4;;py zIKoUv@sRIQ1G>cy92a}gBYOGU&-Z8mC&U??6l3TU! zjjoR9q;!kA&sc%4q0aI+eh#&Q&YDkD0Y4X{dN}eBUa@5s*{9g06kO;3=d&DS^|29Y T0L*eu9-ox$5crbt>hRUSdZz}+ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/MailapiClient.class b/eclipse-build/org/rapla/components/mail/MailapiClient.class new file mode 100644 index 0000000000000000000000000000000000000000..8f4836dfcbd76020f2329dfcb35489f74f3c1c75 GIT binary patch literal 5160 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 D#QPc- literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/MockMailServer$1.class b/eclipse-build/org/rapla/components/mail/MockMailServer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..720a5a048474db8f5d1bcb3ab13ce5816b07c880 GIT binary patch literal 2691 zcma)8+fx%)9R7}kY=|o$f{N8PT5Q8LfZ_#|3W$XoKrV%1?PW<8SY3AGW`kN=?fqi! zS9{mCGwn>@>}Z%NGyVbXOZ(6_AKIBd^`UQlYiqx=Ngybl!O`U8{BGax_8out_xtMr zn(>u_RRT4(GZk^PgsDYh_DsUIbjwXfW;DZ$^x3f!eLM{7&aCcKH7W23lpfb+wTP)% zQ<0HrN7v#4es|hPRyERBbfwPPXtmF<47XjNKD=_X>QMn-mmSxOAh23RA^brUV2ug| z#R3IksZbI%EWJN9God>p+JvbKltt~BW{zr(A%ABteG;}n-HM}EH4%1!ld=?42vm55 zuyi+)sn0O0rMpGgfJy}$1;Q(>g^EqMgJ~sf#}yF0L6l>QOz2KthI^|=ix9##1zVRC zfA~z&)n`=PjVgk&Q#7rJdXNk|a>Ow#ci3fnX4(|oBd}qyYrHnBsm_#P#&suvus}nu z(V?W*=}^+u99NHrG%Fr54aTu(5wfk2gcu59J8C4pT80c~VtVtC@!VEDDmCg=G$6t@ zYl(zzaY{BbmD`lFFxsR=lggpoArNrwj3rhAo3A0TF$a;| z%$E>nH=?roeFBx)>ffp(JJ5vzsdYqVyD%4-$n21Up=E#%ah)ab5xUL+@3j_iXT%cs zsERQ>Bv4G;c?z7fJlJ^xq8`RkiRWRN+5(<@6$yF}k4U9Qmw?WMCFlSiXWg5d8-p^v z2^BHf>B3X8-10_OF)3M~aMDaAr=_=P6^1ub+=RGfg#b=S7cGs!0A>V&eI32g(4nD$ zzSbaYoK%olx@6w2sBl1{@SD0d4yyYMy$)R zV1~{cWMf#BZYyTmN%CKx?oQir6<l>APn z`U3~?C%yee`u~Ryz*-y@8xR#+$m(0sFTxlQjpXiK7$m9@(T*|EiE(cvCOHmldv+vB zL<8Qyo6Mk5tifA&n*${MzC$bp#QGcF!~5_N=}*k+EQjU>G+gA#Ppuw&$dkf&75Ip! z03-SEF+QQcPg#Lx_-+!YqChApSJ1AYOTnN5n}317<$p`;n=B5+Ts;LBe2n@TEmz@l UT;jKn^mQ3u@)VRB{N|tk02-F3&;S4c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/MockMailServer.class b/eclipse-build/org/rapla/components/mail/MockMailServer.class new file mode 100644 index 0000000000000000000000000000000000000000..061a35c085981493e267f745a031b07bf33b9a1f GIT binary patch literal 1314 zcma)6T~8B16g|^V+b$F-B8Vs=>b3$ae#_Sj#)JgaSV98G!_bapvE6NE7k-rwnkXca z_yhb=#xvVWTj7Bw-I+Uc@44rmdv|~T`S}aLV=Sc+6R>?q7&r~- z)}3{~@_C(`veHLNr;!jCIFLuusY|csyxTial~5oXD6gutaTFL_>o}A{?RvEZfs9ra zx9JjCAkp+S7qKdkT68@(To#Di#ZBI<_*Iof9Q_uu$YsE67Oo&8kY95>_4cr_r}T#0 zt1FYougLnQ)UL7Hhlz0C4FpPSmo16h(lr&nk0_A^Nu`5-cEVnbXi*AJVA$R{Us`c9 zOP2lSF>c`&ZVTjsQ0mZ#p)_lKXgJx$!$*Gg6`JT%-hto^lA4c{}qGZto%6G%oCv0YUqdBxss3s^xk6Rq&xwztkG ztwm`+bUHs|7tbqby8PTi8YzK3`j^jU$=tlMkTf^hvVW*6>J3GuioIhwYX*+VRy|MY zmAVW972pno;~aAHCjy@^Iii&l61M8reo{z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/Pop3.class b/eclipse-build/org/rapla/components/mail/Pop3.class new file mode 100644 index 0000000000000000000000000000000000000000..58547d8184ad832fc03e4fae0d9ff860c76ee4d8 GIT binary patch literal 11260 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/PopStatus.class b/eclipse-build/org/rapla/components/mail/PopStatus.class new file mode 100644 index 0000000000000000000000000000000000000000..eadc6c0561b78d79cec9a4ed494ab457e389edbd GIT binary patch literal 747 zcma)3%Syvg5Iwg^pT@p@zqMjp!GO5)u@OYESh3QDF66d`nvy0ZN&PAp3Kl`o5AdVJ zxv{OaX5k_;b7$tv%sKh^e0>M7ja(Q3hBeD>s5WmKT&-KJwq!>ZR8|t~$uDIOo zIAO>P$tJ(&s=>{MTCO#h1xJ%@?W+@}YIB#ULS}U<^tW3@HUcgu=-Dy5@U_s81+}BF2y?>85tpY1K6Q zlGhCHCacbkDz|mdSPN!?uOaG97C`9`d2{Vx|_;QH!dl<6$!e5r+$|VJ1L>K}> zJmO07#VS_Eu4_lSxHUe|eM<<56~ajL$HYhU$wCb9JkcdDQwK>zcAQ?v2v7v1i!X>5 zr7n_1=?&>FvQLx^U{cfw1LVkVkYt-kQ9MN%F+)_RF+-kV7IVF+DtS>07N3!Qq~Lo{ o$V=`FfrA6^JQjSwi=*IuU+}WWTksj)oO~GBeBujU^}5!+0Kfx==Kufz literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/SmtpClient.class b/eclipse-build/org/rapla/components/mail/SmtpClient.class new file mode 100644 index 0000000000000000000000000000000000000000..d6f33881fbc908eef7babfea1cb54790556434a2 GIT binary patch literal 7318 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 X@ci3J1DqvB&Mbt71ldB34B7hs!k=4F literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/mail/package.html b/eclipse-build/org/rapla/components/mail/package.html new file mode 100644 index 0000000..ee7c818 --- /dev/null +++ b/eclipse-build/org/rapla/components/mail/package.html @@ -0,0 +1,7 @@ + +Very simple implementation of smtp-client-protocol. Supports "Pop before smtp" authentication +with the Pop3 classed from John Thomas. + + + + diff --git a/eclipse-build/org/rapla/components/package.html b/eclipse-build/org/rapla/components/package.html new file mode 100644 index 0000000..a6dd249 --- /dev/null +++ b/eclipse-build/org/rapla/components/package.html @@ -0,0 +1,8 @@ + +Contains all components and classes that are independant from the rest of rapla, +and can easily be reused in other projects. Dependencies with other components or +packages are explicitly stated in a file called DEPENDENCIES. + + + + diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$1.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e92d408756f3d63f6060a4cda31272850fcac776 GIT binary patch literal 711 zcmb7COHbQC5dOw7F*v3`c(tXJAR$2jVID_NFHtK+3iJTtzHwH;$k~n78-5iRPKX|= zp8KN^vr8%==mksjp84jn{`>grH-JN|M+gXe+VoQ+hJ{EoJs4^wl`T^%x`iyYvC^a$ zPCxhh#zBOTFncX-L|O>dPk(l=Wo9E(2@BpkvU!oV7)cmmwINhba+TX}gvwU)k`T6Z zPsXUAmLS3;VWyKSc{Un!rSY8z^^VR&aVbphI**;9y~<0%e&>Dj9up$BmoSpBxz%|+ z`SDv%vmIgn-#UKD@j5(A4RtIgSi&-4YK(iK35)+hZng=5K5+ZI>FOefg!o*KOeTNi z1y48o;?R4pf^YL(WrZ$t)jyT?O7|kH5q95m0YcJNN}5(7%2JkSfFFWsf`5U4iJyS2 zDb|iy63dD0d&GA>oG_1lnnB3HX||K+Bz(XOTRb)9m^*+rXI5C&cK)Eg`+$W2w`>Mn r0#tpO^$?Bcv@rx1;3GcycnzOfb1*Bu@(Wg3hWN_7!4z|rn~}dKHa?^9 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$2.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$2.class new file mode 100644 index 0000000000000000000000000000000000000000..522d9427f86123642305d95d288269850adbaafb GIT binary patch literal 752 zcmb7C%T60H6g@W?GB6C!@@#>oEvQM0m=cyjY@${Q3a|)b?+jKLG}y@FwCX=~!v>@- z`T_l@s@F~y0alE3?fW?Q_*{Gb{`>t0Km$7=N`yUa`iT*@xkyrdbE}n9wn(h#<+9Mm zN|T&Bzw7<&Mu>nge=WX?Bp0fmob|3{YC}{AOFlcWS)R0*Nf=?ZAyf`CmDwXgxmLd* z1TB3jBa|^6Bg7AXyDlMuSOgpq`g zwa!!J&F7hV+sS(sV+qTINvpfoWU9{t*6L&EVYV4z73(3^9^J~Y7UMPE5T-`wpKHSM zxPlQwy-g_TeK+?rb*|DNL|r{Fsr;7ZJjMLjgY3BuzQeC7&2_;lPo%xlmmxk7c3*N+ zgt)DgG_70|g)C47KN#Bt|0*RmekzWp*gN2zc%S(6fauPbV_qW<`+LlwtKAn;<&^;K*jg{^c>Y8Zp7g@H?ZmJF}B!qJa2tx74LWt P@SfLgwun(qB!B+_J_)W^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$Arrow.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$Arrow.class new file mode 100644 index 0000000000000000000000000000000000000000..7d17680d9ce9be304c9dbc95bbe7fbbc5c066a92 GIT binary patch literal 1807 zcmb7E%WoTH5dV$6-d%4uiJN2tr41>hEskqyNQw(}p=})68j==BNFm~owY}JzYmU!1F`P&&>#WI->U+_kFLaKq90T z%oog@W4g86neu{F2^Gj~?)hBMw3%P3crHP!T0zBftIQ$L96<`~mn-5sOvgJp46M84Tis{UnzAfr#Go`R@2ZV!@w_bgLkZhQ?8@9^JrY9pL%x0J?b^t7F z@=h|gb-NN2L{Ui$;VuQc3Ef+a9M9KrH-@?7nr|`|sZH~u$I^m^y|_ogKCWhqUAtR4 z(ikCh)vR#btSr`iZ^^B)W_skmZseoaE{fl)8tz3-!GTU5Q5&bsu&(1i+|Niiye1)$ zo|qV!&@hGv6dWXMzaG0&l#VPdn=R3*+rX( z-8}kn{t|q~#8&WT$HY!VH*W;r63caT@!8EUhvgFA{h7DWli9h7-psC5ehsc-;8J9D zJD&sW5%d8s`iDr;N9d-H(MO+P2g@=od)$GY{9;d0T#6_WITleOw#aN323wK&zeeWF zfQ|j1BKZdHT!FHG4SNnJGH;?k;auoPhN*!IZzH?7oR^vIy$IEiS0Ed5m{$x*6`J*w z?98`>Nka)&AjRkNQj4KT{EX$*?4Tj7VKloVv4#iNP{3h6FKj1a`5v%kQ-lLy!h1T&M{epG+6<6su{6SZv zZamk*^m;coZ~`Y8amE>^P>Q;-fybh52;SpNNl0NGlNjbM@55zGF;B)Jyu%r4+|4qU zafT@sPq3d7G_9y$=r0WON#pbn2U8W0g1rjHi0>idEn+@y!jBPk9iu<7K-)O2C-GEk z9FXH%q#3pUbtYmFMzUbiwWv0|rO>X8F#Z3Gf4_-w3^P%Pr!mX77R5e`XQBNI#u0x! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$Directive.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$Directive.class new file mode 100644 index 0000000000000000000000000000000000000000..f80f1dc5af3ccb63651773bab5316097405a6901 GIT binary patch literal 734 zcmbVJ%St0b6g{`nd3D;Pjq`APFCrvCY-bk3K!({U1A(9mCE&8s7TVJ33e_FI%8j51 zF8qM`s9|oGiHNuvY3Mrlan8MU>d)VYM*!cjS%x5d*XBGhauUlR)Z>XxRFb7ZCP%SK zwaJtTPI7!~aqA#5D$JrQRfa?GFXfdCVws!=N25zF5K5trr{jb`eM0r@sa4s5lfukdZOV2K61nYb_`jR4-$R_pYVA$W}DBv tR_xxQe$7CzFu0AAqGkmJz?9`TDgJAUH>a@B7b~}dRX$xiXAK*0{{f;0oHYOd literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$MouseHandler.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$MouseHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..1338da1dc7c3fa3ea357d130be84a7affe3ae0b9 GIT binary patch literal 1911 zcmbtVU31%15Irl)QsOA7Tk5vKw1i@UoiDYan4~U+;Izc8ozSF&QeY;EeM!{Hl9A*j z{1p1a3q$!B1~Nk(!UMxIKZ#)|d!>{~LfRP*;~D8*-QBZi&)!}C@%OL40hq)mIuydR z=dYQ*)p9Je?loJUE8H+JLu=I$f#-+9H*d@JQnb$1ymlbwEVtnZUx!M_-m^9=)7lJ8 zvB92ZWH8gPTI@;C!gV{yT_8+Uy9rZb&nvcThgS&~^WC`?mI-RvYlvPD`V1tYrI0|s z0UZN`L|z&ktJ^beGTVwqk!tfsILHEdepIu3E zK5yV<BBJcI$kB5|1XEbAO;E;AsqjgLd9)}tr>}><|~B=Y|OwoCgQ~7 z_zca5QRYwO$n-8?QpZKY*=O=F@S4n^pD9H7M+{PU9dGC;62`i@!3L%<%}nh;HjcH* zC6Z~}m2f2kS7fef4kS;xFiW8owgai-RReF~ZDwHyWzP+L&zbc$-AK^L`5gmg^bmTi zdR+uTZc;j3GjLrx^>Mg$`_oXm$VhVrD!9Rsf4zh<=}cY@R9Joq2IE4z_! zM@|k_JQerab=zUd(h-|@C{D;*#eH6JUE!AO;A zfA8hpCEh9gPK}H{;>Qk*ZQdz3#!roHKwlxvYeTM)!f~A7H{m&)j1lM-BkKI^^U)46 zzav{4>)`DCIPYHC#VZPm>Uc)o#i)V~%wjT=RKCQ*$j?Y+k{w)n0CoGx=5kSEuQwks z4?g|{Ga0#`{Q|o35URRT)H0gBqP5gUQHy;tS_kh+!ik9RWehO4uUWK*=%;TmNZ(?Z zzQY)Ok16_r8{MoG@aiR>lGDd8rnoMsO`Lk;sROFtYe z;608vh!xzzB2*qWOZ;18d1qP9+q}~7K69Ev@-e2N=^!1abYyiV!z%uTGgPI=Y@r`K vBK}*XKXID%*0CJR%jgP6<6?}A?%;!?iz5rD;KS&77a#Fk-XG#d{20nV%8cZL literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$Row.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$Row.class new file mode 100644 index 0000000000000000000000000000000000000000..64b6f0e9ebbe0fd8e5d1bfc78857ed96efb757fb GIT binary patch literal 2184 zcmb7FTUQfT6#jN@lL-S-AlS61ZN-`dn*gm;iK2j&Ms5`_R=kuU3^*DxI2kSved<&D z52~vVZC`ltrLDH&TCKjhR-gNOq~Dn&z*@BrS**<2XYaH3Is4n+-u(Ug`CkC~VQB~m zdL4Hq>zZpNGh1|4*POCd_9|J=Tr61?$Mq~XJE!DXU+$i9HZ_CU7LZf_$4#6PH4QyRp~zgqb`=p_;cmLtoFj-QC-yO{BAZL)V>p6i8jcE1HG-Fc_wc?T zY8H!D#mD<%gQ%sduUYr(Qg*_wc)2DV#|aJHf)@Xsdlmy9;w0~~$r#gfTtR2@pm)Be zXM_}bG^7dWeuTQ!z$tvhI+d+0kF}^rIKZ=dah{Wc{m}N`NKDRkHv6gzV+CwQl>@od$;1}Zm+GY#oN25__ei6rPSGi? zua=jtU7ly ziY@{pUoKnjXvwTpEKVJL?~R;aj6q^k;4h2-|2W5h)>bv?IPaCd2?oE-+>O&7Uk* z)D%bRifC{^PiU{ul8C;7&doN?s=XdiV#e2olz3cu#v{Mu{6ieB%fksR5#7OOK@8|| z{UPG&+VQ}T;Lh7dIIcfdkD3xZ+Fc4hW(q+ch#7Pch$)0+8qIQ*LwJV6YZiSnhY`7k zS-Fma+`xj&V_9zEzTCnCxs46EgRf-)-^wC>5DP!aGJd1~pJMx9E>~gN1M>xDFiQ}_ zc#b(A)@J;QYm|Zn_h%Gv9U-Lg9lpd3p6bIln5Q*@5j?<6`fB_w;1<78p1#e$C~JR* znOs2hH6Jb-Qo9&KOasNBzt@mavf6_G5s$SG%Pu{_2ab?LQBv!x8g))^nQC|~_T-zvRIF5?UTDUGD@GnJ17}@{; literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$SortableHeaderRenderer.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$SortableHeaderRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..aff49448843f5316694c9d15ce31ff209c2c043e GIT binary patch literal 1879 zcmb7F+j1L45IwWHtSqk`#jyl}2m-c)BpWLU!GIM)K=>jdCm}L=@Y{MlI2+cxuHBXG z%AfETP(?(+0|l>q4h1}=0%t~6%F3lGDwn5cyQh0jpY9(0`Q+E%09?a2CJcc_5boDP z`_Qv%PH=D-_|lJ~T5RunG77?2hP7?A@96!!66$kP+Iup*Cw;CmG?5g@J+P1LnrHj_ zwL7~Hq!XJ+3(P6)Ni8~dsn@Q9cn#@!LwAAm+A^wJXupDMT_7Fbccb|$0?X}jQc<2a zT;Gjv3UtfkxxNyzN>?D+2=?Rz1kPEQKsJj6&Rdwoj6kAX=_<>t1rr&bXuH0=-88`lgo0m(#>KXmrX1@8%g7`@E*zx;spMY4C6-N^$z?dTl8c**kU2PL6D}p zv1(xvO9CbdSm$l*!Sa~|l&YS^GOn1Y2~6qUR+%Y-g{!zWaP7DcrLHA|UdM`w4+WOS zX+sMi;bVb3VT{gHlUWE9%0pgG=gRRgirUQ|n( zk8H0;^UU*Q709|#M|zxQxhEiY1Ty#SXgzRxY{Ens98=lkBsrREemKKxYNLHX6X|~j zfv!KhaPmM^XHYMa-HC1IyDj@r7uCe=(_)WCBof*YG-} z+NmoHhU7G!27XMPx~^6I2^SWZO8I0yl~4bIH%+XXMe`4ozQ=OW{2is$Ofi${(|O81Dt)})#|M3UQZ#>Hw1mcVnW;cLK}!6GDau*GxyWCfIm1B3NZ_iG z#Dhc#5@!PjQnNi433Nmd>Pw&+&z(p@jx_Np1ZSYa~#eTjwr~S*&0Ko6KvD zZ$*>(49B%V3fG9I&6633$Jj8jmCN7`?w&HSK&kFaDJE1B17g!kDgM$R6`cmY*6TfV MD6`t>I<{f_4~i7zh5!Hn literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter$TableModelHandler.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter$TableModelHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..09cada9cea8009fcdfed733e82925b2ad239fe5e GIT binary patch literal 1732 zcmbtUTW=Fb6#kBF;>1jg!<{rKHf+BHw**HU3*zB6!bpmZA zBzWr^^qvREUqFHcfy5&Z{3e8Y&a6va6_r|DX=l!SGxNnx+5BlKn~|0dvR5p*~=lfrg%C9#9BzZLluK0`O5!ww{~ zoFNnTWnueVVJA|AcB@*|L68{`aJRx9Y~@s6v;8RahNCHD(3`|Q!tRf{tMCP~g!S_} zoUr{Mobr~;v1K_Suh7?gY*CmGDD=yg4&GAooce+*=s|@6K~s!YEW;xVhZF{Jn0;ip z5!G~Pg>_C(B3sUxQ-&0d;>*8+J47h9T0K_`)3CxwGt;1WHmWcto+a6Zi+5^Tu#-|& zrwIH0o=}tRrW-L_<}b?UxWZ{E#Le%;9=Ag4ePxg)?EMeL!8fF8G$T-%HC(jyQrVr; zx4Gz9nCi_*tJbLETPMB%BjvxYAP7Ufr+i3ESbw(#ECez3G>d;+s)+`Kc&5 zRuE`TW~W)v{0dus%<@=sN<=61(6CTCT$!#02 z0WDx7+e&QSwF#TKCv3sih=E3!HNn`!{8Ok^Y+J@Av7Vzxy1rHHdcw`#*vg-Ht{LBd zTqgN1tYEx5_84O_+r5h7G6o}_Bd?K<^^$xk>;4 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/tablesorter/TableSorter.class b/eclipse-build/org/rapla/components/tablesorter/TableSorter.class new file mode 100644 index 0000000000000000000000000000000000000000..0933d1e2e23c9dcd02d5ae5d6ab2bbb00e7abae6 GIT binary patch literal 9357 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/AbstractTreeTableModel.class b/eclipse-build/org/rapla/components/treetable/AbstractTreeTableModel.class new file mode 100644 index 0000000000000000000000000000000000000000..626ee8c0e7e277e3256201674b6735f5d3f72849 GIT binary patch literal 3874 zcmchY+iw(A9LK+BZ&S8IORrF&Qi@2srCqFCq~%u2#l_u%EmWZ>On0a4z;w6F&K59U z62pUUnqWi>FTOxDU_hlrF~r0~6BGXr{{~~g?>RGFy4@{2!Nbn%obx-s%jb7Fe?9!= z0f1f-2^R8p0-J@JNDpyjujA?5K z39L9{%o=gq$WF!&kDoEqu7-#}_fr&>DiR1extuFdpIof1UqH95ylZAnC&{NdM6Hf$tPluxbdGAM7g#U7 zc#4H6>QK83RIg(hqVnHL9U7_xYLiyh94btYn~s7dkNV0-c@ ztSZB2gxaL(4l8br9i8Pd5`mRZn#RNu2u?)l^Ew^vSTC@gx(25#J2RLoWJ$Rqv;?7L z360_-u8}^QGG_c(8fFc?XhM+|praEjGnW&}2S zB*~=*1*)><`B7<*tm$_mn=vmOo>1-!Y^;#(3bqn5`W_u|Y^K8b=qn#jRG=#hr&q_T zSWC|4xq@LcmysF6VI>NL(~_ltu=pdkMkAAvk*mI$FI0h!Qb1lYm&x_ZvShw1lx3N$ zEX!Rwc4H6gnMT=)3waFMMn3POFSwRn+Bq~tckRkOR%VJGt#r)k+^ku)CB4|EW54tw z;>nP~gyksFA(l|SSR}g^`sa<1{;~3ejU_59c8*F*2_1*2|Q*vKW+6WP4!xMoI%bV|o*8B$#_ zr1{;&xf)hkR)^9$GNl~+O@USOmPTBskai1>>E~D)o76ES&oxS8ivdG;Mo-#&YFI6=<$dMu|=}<8nGIoDqoTO;?SL0d}b0dJAu^ z{_?6z$c~5@{;-LTs0<#kq`}pd=W>s%tI#?Qmmq&(1Q3$90x#Q;yeIgs;d(W6K9}?B z807+dH^uIuCUzfn$M2!xE*fK9chP)@8v(51v!2I+O?<{si*7Wc2Q6G__739(tmYTh zC}S)UtU;@9BF?wqUO4s>ns4)ur!t}zw<qNi)8($z-&+$`#1zR<~U zxfY|=0N-82;raL}r6r#B;O-j)+0{CS?oD%egn)?43q9UEIBf1>U_lE=F?b+?4>VMvNKX`$1-zoD-s z@-vPEa7laEq+NUTw{*!XjvkgdFvhY!$#Or%T0Kp~<3yHb@-nR8H1AIn`?#0nc#!Ca zJ%@@MQaH*LnfMe-;FzM8!YJOR4Y~FX*JNYu!*Tu#)6M`+&}IY;B^bpM& zPHISsH7jISzWWR~ytg!m0==B2e;3K&eRBAKetk#|ACbd{6Z~;d64hOb%a=!DJvgg+=pEn$CRlTi- z=L%N_mh^>?e9aNo;tGi?O3XYGj;M2Kdv0ABOTux=HCuXqrl2FnF#3k?aEtFsOYBe< zYsuRV#9WOxr0^L!d+;f(Fta+YB}+mejARfbr}tBE)m5+>TwVW16N zCUkT&v}Kh;PsMh{)9tM_;fJI!q$*yOJFDEc6-kjXrix{F(h6Xi0u^g+DKblrUELHl zhOunrUu2gR@5S6|9BB;c7-T55fNK-O7-8sicpytOBMd{~?R!?RYrA!8Q5nO*DXNRl zm^h0u@~<`LMKDaC#>1Z>YYtS=z&I}GIL|PAVx1-~B10{!3;8l^&w_yoWOZC-NUNy7 z@tMe}kT`|R3%kA{6PUtP9ak9grx0}vp@}>!8izo7jo*tvT!c7YDHaMQt=M%2LyA55 zY<)ctl7SJ#aojX<>o@Wj6d`u#)#!g3%Fwked3AG%H=_A6mc4DiDjwSovDc0_98_mLm&F1EZ?FmeDVOs0S3M! zw%-&-l{j^Xb8peFj>zEc`c2iHiTtu7_YUF5O_K)gh#*uj@wi?!(Gawqdj2^ni)!ak5mms%+ML5 U83FFolOkIhvv^3ds-J$p05QdU82|tP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/JTreeTable$DelegationgTreeCellEditor.class b/eclipse-build/org/rapla/components/treetable/JTreeTable$DelegationgTreeCellEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..862273fe1880fae853764a77c46dc3de0843c7aa GIT binary patch literal 5597 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/JTreeTable$RendererTree.class b/eclipse-build/org/rapla/components/treetable/JTreeTable$RendererTree.class new file mode 100644 index 0000000000000000000000000000000000000000..5ba63d7a7acb371af5c1ce12a716955d0986c8cc GIT binary patch literal 5083 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 U$-W=dGpI60`3&YLH@q~S0H&wzQ~&?~ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/JTreeTable$TreeTableModelAdapter$UpdateRunnable.class b/eclipse-build/org/rapla/components/treetable/JTreeTable$TreeTableModelAdapter$UpdateRunnable.class new file mode 100644 index 0000000000000000000000000000000000000000..7069545089e8fe61c4f1013b53ccbf623466c577 GIT binary patch literal 1012 zcmbtSU2hUW6g`)rEUYUaVEt+_U^TV!XfnXGZe3<^cG2Hu0-E^X z5Aa7B?<^?M_+Y}r%$z%W_ntH7-tRxYegp6bzJna$C^lz-k&{RU!+1Q2wbE%4q(-S! z4k8siJ7IWYVe2<~9*ECx~{ZZ@*mjP(sn7D;^va36)-`)zNf3P$qMfJ?X_m8TF+Jt$EAK zynQ<1<+@V;Y7P4!%v8JBLDRua!qYX4^>7Qf2@P)ALOS;`S&YMou+d&P<-UriW~dIs zNU;N}ae83Kf#7wuR_1`mAW?~fdxXw^%VLlJIg^C)pHqn@cR}#l;2pLZyu-E!s8($Q zIm+?!aFMghjNWjZ=dY7yVbIV`jTre)5cQ#8B@)eWroeq*k19tR-KrjBHm~9J^qvPm-Tbl Vmpf^piW zX`3c((l+jWxM$ktC;yPlG$b@L{WUZFn=+j~@3+h900w))*xJ?Z_df6Qyw~@^fB*OI z{{VOb??n(&xKJ!DrApRn!AfO|E2~AvcHDBxE!nnfEf(z5r8(Zt$!$EiyIjoKh4GxV z>e{6U!V2+aYu(yNm2c;rrIcqkzF2lkR@T*~+8}}h3XfK=wAbk@C9oGaRxPKTFFI5C zvTHj6dr;xz?u#|r_Ckf$vR%qsg$27L0P~p%1$9ZGDP45RuI0E3R$ae~Is}Cd z6RkKLg@G;;F?1^!gNX%s(`%v`Em8F2SOiBE68prUBE-aToKQGuWwUl!N5Os=If?!B zR6NCJY$s=z?2XdNFtQJy+6BhXWyu4RSg`!N z!vVqV=!vT5O}rq3X@}&56N^xDpwF%s;TUyJyYb85a*~~05c55q+PNa0H zW#Su>V5tr7)wH!jDeZ$9udGr91}sG^?q8!~VVhV)mJ>Uxk+^9DrfKS7JGIr?>ZjUt z*~Ai9vQdYrU>WKl)OotHxNK)#UAK;jB33N4N2VZMClCOK>9~k?!h=B_Rp= z!o(WZ$&}Qmm;*siZ*TD;pjx}nh?x@zuXTEBGF=1B@{JN!Z>{5OmJVqGz1$0BAW-4k zCT^i1L4DQ49ekH(0Iw=*R_=JKvL5_NlC zmqJ?>4nH#SI({sKcVcD|*D0%9C989{RqS>_`l*Sx@G}K}VArtQ4O>RUx*SC!_&Ixd zpDm+m6P#m0^kC2(<`3hz*ON1Ajw3pwxQk!P4*x5K$%ojDcR$mO%0!FeH~3uyzg6g| zuCQ4-Pl&U*2dJ;f!@z=<^Cc9mPHTS+xE| zVdC>^mDwGgEv}Wa_GDf*(UwZ=9~0%=_A(BSq`JjzcAQy#Ea4Q{H9;)J+7$8B#F>u} z8W7>N2Ztb4*~mj_2qr&y90OWg<-o>ohxsmsBm8XRw?(cocs-gN`Vj5OkIJL{CrP z3%T{I>6fd4k}jQBRR?-*@i#L!|K!7-x^ z38P*6J?_W1#C8aHUsr+sC}xM#pQYyon+C4 zPNN$qjGihM0|ASHfW?t|7ChuCT*X)Ym@Jb&l`)oMl^BF`=aYT?o0zG@-qU{+A>$am zA4j`!LVHen)`8~^%wvJrA!hh%T7L^GfH0 z5WqM1@ceD#!Jq~SmDmUBr3Zr=Ce+A2P~4IIz@Fh%F|bjFwPy=2E8OQduaH>|RC!us zncga2p^_b%PozCAaJ3Y5qagHdAs52?br5H(=rjgFYQzo3TikQc-UBSZ6YQydz<8YW z!Om)MkC`+Q+ooRJSe3YKW+B-#eTX8ZN$+?1RoA6 zRwIp=F`=Qo#_J43cj`jt9OLl0jSa#};~kX7i$zeP+dFv0cm9fB^j*o`kMOPO5$#r@ zJkqy??-)AF)!v`Q0V9K`afvLR)84(Z?+Uzk`QCvp9sCemK8DxuJ$edwm=S!R3|_|% zeID=lJmN`)@QqmFJv4;xS2!8>w>iCO=<4w}^$;7z74o@CJ~NESEZcVuUB-MBw|KxU z9&n5M++sD{4k2WIhDMLvTX@?i_cl9Q{=m?i>|>D5g}cL_BK(0c8tM-BZ{a6lJ(@jE z-e|s#i19o*y?`d;Mf4aiX+CE>n1D|&-eFv%H?~Kl+)2qA92IRkYT-)MnuJ(b4)Q*+ ztHhJiY5oLvuO)lQ?iU~9*Yz{RCWjl^zgH>Ef&XSbn8bgx9!w#k^RVutpCh)sGe5z- zYuuCmv literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/JTreeTable.class b/eclipse-build/org/rapla/components/treetable/JTreeTable.class new file mode 100644 index 0000000000000000000000000000000000000000..c33c3d3b69af8573af3311c1b751c577c7e5b0d0 GIT binary patch literal 10776 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 E0N$u!5&!@I literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/TreeTableModel.class b/eclipse-build/org/rapla/components/treetable/TreeTableModel.class new file mode 100644 index 0000000000000000000000000000000000000000..ba177fbbfd777924208ec9977e62eebc96df2e49 GIT binary patch literal 478 zcmZuu%TB{E5F8h1pwLpF<-iY+9>5aUo=^l*B_4-XJ#ceVD@x_qRqRl{jRPORM!7xIL;mVX5FU493o|{r zE<=AMUIkY|XZ(4wlBtW(X1MU^8@HRBaL*6az+&iS(j`V!g-%SR9m7sMnlN<#;3rW? zhG9GzJ^ZUrT}fi&8eIu%83y&i#G^FVA-%a!mAoa3%Xmxb=b_`8{4YlGxlN=}cgsBN z%y8aFeIWz8We_(^HCfJyH#Jq6%KKc=mS^=$ul>RlAcaC_kN&1jAxGGU5BmU}P!Dkw VY8SmwkI@hH1gFFxQMy|gd;^Y9f*1e* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/treetable/package.html b/eclipse-build/org/rapla/components/treetable/package.html new file mode 100644 index 0000000..c58a9eb --- /dev/null +++ b/eclipse-build/org/rapla/components/treetable/package.html @@ -0,0 +1,6 @@ + +Contains all classes for the treetable widget. + + + + diff --git a/eclipse-build/org/rapla/components/util/Assert.class b/eclipse-build/org/rapla/components/util/Assert.class new file mode 100644 index 0000000000000000000000000000000000000000..cb5ae036423423fd9a9347ce5500d1964c78d88e GIT binary patch literal 2274 zcmah~e^VP(6g>|D`N0;_5CWo9Y->qEX;7-Ag4ncxqG?h{K#4!%k}S9wvYE|>X+Mg7 z2LDi)p^Tl;Kb`SIIiB}+2^*l(oyor4``$hG-gD30{QKXZe*yRqdqMOFOj`C{#@3s4 zJyW#~npVSTIIT?EG3%LZt7X_u5CMVczJ91@>Uv`@Q`p%zs*XS`Uno`bo4H&iTP&_@ zl-3G)8gu6di;itJ_7()LuN5n$jm;JR!NHDGWi`8&6NprHvQ@`C)Ez@Wlm$YI)w^;LN8PD0Qc|W#?bOrWhlZ3mcA%j_Vq-MFi35;BUCwtUu?d*4}z$-+OqB6Nw zboA=aPxYopUl)>hIJFhR0|AEacN-~?NR}@rCnJWdR-0-uJVe<29FVq#g6%uIL27u z7~_A?-h+2|PY@Hh&U=g)!x%!G_b4XR38_#HyoZ?KDlz-gFY)dfMDPx1aQxORl-^eIxOn2}(;DxX1B>nL*>Vgc3^Gpa`gD=ckOcwhZZn;-Q7r(xcQ8ud^^@(;vgQ;JYtfg_Cn z*70|RyVxl#gr^<;=jb7Q`o_D)#pUA>`OEr3_93r&8j}A?UdVN(FWH)Sg~B!oS$~PI mW8a*hJk4M12i{Kb0Ih literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/AssertionError.class b/eclipse-build/org/rapla/components/util/AssertionError.class new file mode 100644 index 0000000000000000000000000000000000000000..f68f2171936c333707724241d7d241df5ef53a1e GIT binary patch literal 672 zcma)(TT2^39L3M%Vq%OY-59TJp>J^uUFfS95Vg<}M7-pEOow#JW+u$e7C%-CmVys{ z06&y?CL0XmOZVZwd;XmH?K!&-k9YR~KI452C4ruGqr}NcDwCldPpnbKXG!jLnjB`C za$Z|=;+%CgR0Otu%3m@`r5PpXx$%0ePHu*35=;VZ+Ox02U#z z+C&3O0NFo;D|accQx&jw$S{(TsAtQH|DiL1xc|Sc8Kv8M9WZ37dt1b1ir&s^ zk3i$X=5DCI=#Z!L@^gL)rSX9k%KRE7Y@vz;s@hc5IoXS|%pDtZu2AjM$>vy!|DhE} zZ~mh5hq8n&=gJhdiV7kg?qZF*W?{!VHmCw>bA~$OsSk5VRWKqVt;%Ma0k$G|i(`pQF8o-2`uZ>|`IUleXu`5HghC^VYjVuKc zdPiWmazcB|#e!#=(N~qmLZ+4jupi literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/CommandQueue.class b/eclipse-build/org/rapla/components/util/CommandQueue.class new file mode 100644 index 0000000000000000000000000000000000000000..6c035c3f52b5055667dfe8ea6bef4af6bcfc47b1 GIT binary patch literal 1557 zcma)6YfsZq7=F$ecIyg=Ttq~<=wKIRpyCa@a8uE#F_IG-um-M8$*qFb$+PUT5m)}@BHz|k#p$1K>Uvr%}wz9q}PfY=c@Rt(|+ro^c0%?ccu zvmDF6DbSY5mIUI9Zbj;7L&|`LgochkbWJcF22x3I$3Q!d2y_)KM?R`o*QK{=uG>=O za?7S&GCfN@N5QziY1ITW#n!a2I!!vSlq~9R0X3T~snP}voWP)fZdNMGwye@Afxb+r zzR4B7PW^7=(3!)lQUz6HR8TsTZ2_U`88I-5F?w6G-cSjRUQyw*2GST8FkV<*%|9r# zm%RV?Z&tmZF_1-$W_z;g?#Ku*Pi^tcO17looWSUz&K`_Gvk?LvPkpoe@}apMwMvh4 z&fB)mMo$|!h10~AJ!$%~dEx|etvC@(Cv^yLwFcbj;wY z8q8|~`4$EuOsb}07B@7^{h8%Jdq`>ECTg`f!XfBgCKw zy?h#Fv_ImTCo0BRGWQW(`38>vCDMb90j53?ko1QyMkIvbB!);css<&ZdmGWE6`KHk7}`gS{~)Px=AXV1Xe5-70JDSADPL9(e%C=(OZw-|Jy Z8!0SdnOS1E6X5US9`EYV%<#X0#BVnQSI+QQ&XwAv5}eSQQIJ$n!Y|i zMw3ZDukiEdT?MV%u1(BbpS3Ua|Mi)I*tQE~AkY0hw^0v35R(_WwI{sb9Z$~_W=h5) zgPb?lj9ZL)Kta%Q=9~^@a%SGN&eJ5`x1hi`Qpg%XbSUr>;^5H+ypO#qx)d~T$I`G5 z`xS&&466dKARf29$_&m~MKixL&{vO0h&&HyXhVAtZDJAEuoLYHc1)RhW4gSyWEAK1 zrJO>6V zOV8X->+25R7AG;)ni~-Jhj2j!(;wMNukfMaB8KVGNv)J;QlO7$=*MZ6sVk+zfZ?>e z9gOHXBcIia1APk(7)MIQ#2Xq`&NWPeCG9O4jKLpIr9>43nQdwPW(`$r=xd+bm-O$} zSZ;{et_oqU*~uYpTikuCQZu3?m(5&GSTU*0vSnn&Ld3hEVNPT-pl7*9l~j8|nfGtw zkaELI5>n0$UJjJXOSZi|;a12j&FO1~-1WyNDW3vQ_L%rOuHdvAy&8FK)@#>7(s5)o zWWiWeW>rL~ppN)bmlX}GFqwY}Ez*>d6=)Q7((rE>dXb}+)i)Lk%Ztv^$5Zl?rySj< zT!u1*a-L->V&0yhZFE`1ezvh9oqMUcf~HK-VCwn!D>2u~R@omAkv`J!F{p~@0V&xK zGmJLj&Rtbzw>VW03O>izl`$@x;-yD~YO)z05f8$*mn9&ZE8c@20j^XwQ4fM#had{X zUWd7Ebgd&?M_ubCu3KE|7_HfPh!qq~hht1)?jquDuFi54pQh$Lo9O%n-OW96?ERUW z9`x}$B8hdOw>a5#A1Qpe_VEn8V^Yvo2T!J0%U{ z#~KQUT=u~#1@{Js}n5rVnx(<+=~E4otTM z0emmfTWdQhZG|o&(H|X)%hbxpy@;dLa2G2_-%_kWDtV11J1gzm0k{4mOxNvqqHS0mGx?*f` zplFC&l1d04zLlI&hunHya<|__t{&8*caXb-kDQ3plvIcs6%VM3zyI-u9=i~uSd_hh zR=6uAbzW11+TMX~Lo0r%HIPmme1)Y1Yk&EC!pHA^Um_Y1qd#$|a?&5Lk5uO<*wGqz zj+RzmtNI*TtG_k)yyk89&>8SK-_REb;|ZGal%4TQ{*&@6^xzo|<7<}gHI%j0%t*p=yyW- z2UieMF|J~WKZ^YDB!qQ5aI!r?R8e0sW`qsqjPraAmh0NqL$bTpx2}xGP?XI^{2?hx j<{?-pJE*-f68<0ICAv59u=X{7CxL`p1)uQSgHQhjlpiYx literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/FilterIteratorTest$1.class b/eclipse-build/org/rapla/components/util/FilterIteratorTest$1.class new file mode 100644 index 0000000000000000000000000000000000000000..26ca8ff6b0f831788fe2f5d641f1ce73cfb186cc GIT binary patch literal 951 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 e0`HdNgiB+2s`6)*_M literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/InverseComparator.class b/eclipse-build/org/rapla/components/util/InverseComparator.class new file mode 100644 index 0000000000000000000000000000000000000000..d10232fae0d85e42a1a137f9f5a3a3ec8a0486c3 GIT binary patch literal 648 zcmb7A%TB^T6g^WOXjmNE%&e*bg{?A*Cfl;j7%3XpAoW06)rj zrw}E|#>L$B+&SmWx%cDq?H#}c4onyfbzk*u#m6qUd;Vzbd%_DQ_B4>L-S%ceO+=I0 zT=BqHCZY`MLq6lS%e}sR(;bRlU?R?t54)l4htH7kmF!E8y9@osMG6tDWsro$5UEr(C^iev%WiLNZtBV z)e|kLlNbJM{!}Y*Nb^SM#OOeeP1T_PBvMqgRY$8vHbfGIFHwwP+bV#9Wjr;%r literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/JNLPUtil.class b/eclipse-build/org/rapla/components/util/JNLPUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..5e5f648b721f19a0d42b223036d25adb7b4a9c07 GIT binary patch literal 1539 zcmah}TXWM!7(E+1kx&!}4&*|hI02eCkf_jdi)o-S4wTsD;*w6LPito}N)*W>$(j5t zcu6{CdU@`j>0{qI99_WjG&79HtKI#s=ljmLfB*N}9{_IQrG_DadC%`yzU(^EYJ2-# z&sA<1SiR78tY?kdi`U#}$P0|`$^&UR((PE!Tf3?q3YaY!*zKnB5A3!QDAf8Y&Cs{q zPFY~A;<-U6-Ed1fJ*DH6z*MAmxU%ay-IetL4{Hv0x=aj9A7LYFkBT{ zuV2-uU{nv=svFt_qG3v4q7U=4M8}N4Oa@q5mAZ6gNBIV3aY@5PLg*V;92o>AzQSbz z?TzO*hU)^;eK><^CYG_n6m9pw+as*|*{}(L%Gt2# zRW@#VrQsV=Esm4+M8mC=MF}4h!0SER*-^fZ@0ixlszuiMVbS%%BI#y35kHEn25#a` z#HPCf=d&rLge`3uxR0`iRe@q3TU?Ze7jAexcjt4{O+3K&4`%EKL833!4RRzr?Ob8Ld4#L=>xIP}&)ha{ z2ugC4=#-RJ^UE`NigMil1?%1B2TX2%z|HN#x5v1>bcB0HSUbY{F{*#Y$vj4t)XE`B zb)J}jDJC$@RAzCJzXe>vUA_iYT*d~9F^n~8jNl>9PpEIw{wa5Y+9k~4M?zYl#RPXb g+MdQUY!cuGJ=RdCMT37G;$KuX+6p}9c?d5)0=%Jwk^lez literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/Mutex.class b/eclipse-build/org/rapla/components/util/Mutex.class new file mode 100644 index 0000000000000000000000000000000000000000..98fb0dd95cbf5336c3443c8ba5578b312e080c53 GIT binary patch literal 2060 zcmah}+fv(B6kWoqWsJC)OWHUE0Zjmt;L?yn3b~LADFgy3mn5{b752dhWXX}`1U?{t z(3iH8XI}Eqb{dCiXZivCf__Td>1`d!fVs?c7>;$$*?aB1*V_C1`p-|l0Qdk;HPk5R zbiG{KGYhtv&bax4>j=j$rc1tMr)NvP*w&ybXxcQNnQ7Z}a_PCXO_A{xL~S>-C9(>X z6$Q0fu~y3EEGMTxbTg&@1zj`$ zQy;Tx>pPjNOfPCaEmLP*LC0ZfQ;sh@uT=0w_P{94Y`b)vLpMw8 zo9ZV)nkQ^w7DWu_71Ym=I-_!umDasF`j8|owwsfDq;w3Rj=VaqZ>{f4*mew;NXeqN zWB9HS=4D6)q;*=y`_fu{Zd!hv$_{I|d_=T`ouV)DI; z;LM>KVWZtDS$0-vbeW?B2S28YLM2u;T%%!-arF{vQtyI~13%avM6`MHiS@FfMJ zChXKOC(BLGbE16O3Nudx1#3F)Vls{_)-{m&s)-E|b>y(YMto-4B{4_NFI3kYPW9L+ z6vwd%Tf>%umVoD@v32BS-)aS!j_vR(FN#GoCx>RiEqNI+X~_|d2Qmyw1avXo2wx!i z&spaRIqAVKCp_5E19i01xtl``zks&X8`P&FuhA%%=2W8PHQK)CMGekyZ6}yqRU`<~ zf(D+p;%)wcFaZGG!CCGkc(MZinBFx!Ydr=&a0>R>D(oa9oC~nqL;ngkk>oQ)^da8Y z@$OxstK4@4#a!Wu%tcE@$}k=srXLSry2(RNRmxfgc8I6@d`wm#no^1P%D50RQbzwF zR)PV+7bS`my#~;Ti&dCS2bg@Jjwh(plg1dmS5t|LL{Gj%>n^h`V=(n28o&AX_g#$c zVQ9h_QFqbXt{P$_+8#~5`088Kr4l1_iM&cBU$jR>8CPjIqK1CIrBtb0Vw@K0D+Y)J zs!dZZkgF&zQ|vpdC;PiHKKqWQVQWSMx49|}dMgR4 z^4+h%Z!nl_#U7$Ie~peGuqp$QdUFpMMjIeFam%oz)FFQj!5A%YfEHQVQV=5S$esfZ Tdf)^dDXU}!-Hhi3xfT8cBXE%_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/MutexTest$1.class b/eclipse-build/org/rapla/components/util/MutexTest$1.class new file mode 100644 index 0000000000000000000000000000000000000000..6728ecd5aed2d1752d3ff0b4c264c8f4a42775d7 GIT binary patch literal 895 zcma)5O>fgc5Ph4tbz|Hl4c~<}ElsJDLfvvgDnddf6_FAyjdG~OVe70Cx6azE*U*2& zxl$>J13!QhzX&lKEa28y^6t*;%$v7wc7Oc(_8q`8?AjMU|BEeH(!(&+e*U665La8j# zV%Ry;+kK>_>9aFNB zYEFDU#(!=LN$+-~6zU){OjE2;ON(?BS+#2VN~;3>HWtWVqSbS2>U z#rUQ>q%>ZkO14Wm#=C?X%?vkD&QVTtlzQtD&LwUw**~wa{1t1teTBv+Slx>$z%o{_ zMWjrL8Y~)L6MUPzha~@-|4P;KQca4XhxE>-JW6blS->`)&}>n2p2DYfgc5Ph4tH8E~tTA)xuKWIvm6fnvOsR$ueK?+JLq((XPwsn@ot+O`kHT19W z3piIQAL76d;71{5jRoAAgS|6vXWq=dnV-MD{{YazV;d!gomfqL#gmBpK|D)hDWp#Q zOox#_$h0^gic~i`HY^73l)vYG#O1^vPL<$ehDALM)5cSx>CeHlPYKUM8R{1d&E{Mg ztr3HD5RXL#4A)&OV9`MtOD=3w8Olu)Q0s?M9A>ik zLPbxsn!VPsL)~q;cz|sNho`AfdZ@De_P8~&vBR+bZ)!cMg;H6f#khMOh(w36WLP@V zJUAQhq>#xuiZd06SD_KI`gaMQ7#`BPD}yLbLpd1;J&ngM_RJt^speGsL;PnmNM^Su zrBDZv=_kgO7YHm(s~A?q3W265VZpXv7%?nNF`Ggy8@s^T>~@?FX? z=nX8>$*_WI!Sc3XskblTT;itZe8JjB*yT^KtZ&$)qkoZSuVM`i>d5d{^Uel@9MUx2 m{8yu1)OeWJvsPZRu1#qaze`97O|H-G-~`yT)%;b@2`T&cTd z)3q8E%PiKbje5Za}Ht<4IVB^K*Nt5UFBN9L`UF@MYP6t14e zRs@n!tVYEGbx62Hhig^KsVVfO*WX;t6grSni2H;Itkg-hQ*Q4VxPXfaQMbv>7t@)= zle}HAy=KLq(s2owH4H2C91_THx%F+4WZ()$sJuac{G4wUpXXhxNV?H@^*q1p5C+)|7@x zh15xkbFx#%1m2U<-cm>&?Sa{f<#|C1w0XAwu%VzIG>)g?!(#>=tY{$lp;P)&#~s|2 zoFmds9~o#vdz|m?8TbUVtYOLCY?jMxK?U`giN!Dqwmna_&KY-5sLN?sd}o?Imz%lJ~m7sosdgA9Cy6*016+f*4#FJuamCU4-OU}~;i zv4exB9P*jhu*PmaMWQtG$b^nntc%dE71HUqIslo1hHu^ye^SQ=)1Sk6iQ`nB0k$e&()i5(VlbU&~_bsc*do@6pZ;=&31$O+a88#ZKO*#I- zouz`(MNzJH=M^gzUvFakw6b;+{m?Fg2lOV zz6JUd_ry0|EY#o57%-RQ7L#JQjS)V*A3Q635Lh@z1c^&#_i<-!57RrC z$^MF&*bYAaua{Zw7$wuO0MiKfwY*gL^aS)DnNMDyNAzyP-?Kd z^z-Y#lKA{LEQQNCNgNt`IjFkH`wg7sKUxwu(a&)hw`kvOj8l#X3=3Ymla38B{M1Rb-+K`8DmqvH-gst`D(CIM6Jyv;vP%9LcV^8IS6w+)84*DlTO1R7TIDF$MmYQn<_DvO literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/OrderedMap.class b/eclipse-build/org/rapla/components/util/OrderedMap.class new file mode 100644 index 0000000000000000000000000000000000000000..585f79e36284b62aab1b599b27097a194c2abb7d GIT binary patch literal 1727 zcma)5QBxCF7(I8Bu(~Wsh>8J3)KW@9Ad0l2u?mf)N`pRN>D0F+xudH~mf38W@elMz z^bhp4ooR=mo#~?w{Y_4%=iA*`(vXMdVRP?y?{~iQo$uVg|M}xD0BhJaVJIy4!Rvb9 z9C=Q??H?ZbUEK|P^?vAj^%p@$2fDNC9GS=}OuluFo%rOb(|g0PLb0a<*YWms&~yFn zch8xPdMGE0?x zg>2LBXbTw>ZP=JFQTh*$mx0#IvoML`MG)17g>i*K%kApt{lfztymSsctx#(DZSr); zmir`_4d1vug~itY(SYQpmj+ljsg@Hsp&v9V`@-OwP@GY)M926+`#b7~3L6Qc z=X77!UmU#E?XVGN3`Q#FL!!wo8}qnfvF`;NpJGB`JkSSy*XxKbtAEGn;f`cA(W>7x8WLJGNKnJniO=w9DrClh<2(|$)&MB18IqdA82gwnc= z&xLBP?P({FHtyNjzj$^#q0L zpP2mN1ebotyFvV{^!n=wr$|ztOR~fV897d+O6TF!OZyrHF=hh&BZ*`QJzrg}o#5v4l@G93<&&S0ul|P1wNoq__Fp^h>2V5d;uj&IfqJAuo^?91?N%23JVb)t6Uk(Dx=O-2Dcf#2;(D4Chk}~ z;uA?Y?QkbaWnplNy9%-(t1nLRfNX|kTp`dZ3DgHjU~(X*(7N+a#6}3niHEi73{X6U^=1+6NMib$e>yCzw*DHmu$~dT4{rxz92W zFpEZ1?nVrhmYYk|8{?^HW<;9NX&*65%}9VxHKDP|e~~QDdON9X!|grhd^VZ071fLV hmQRJ^Gf&X!30h8&gnVpTF+SM)nOSpb^0(2g*1z8AH&Orq literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/SerializableDateTimeFormat.class b/eclipse-build/org/rapla/components/util/SerializableDateTimeFormat.class new file mode 100644 index 0000000000000000000000000000000000000000..7321df4ac71866cb377082981427149b4c9dc429 GIT binary patch literal 3894 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 UtY9Fbvi+FZ$}ig|DxFXN3lEyTIsgCw literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/SmallIntMapTest.class b/eclipse-build/org/rapla/components/util/SmallIntMapTest.class new file mode 100644 index 0000000000000000000000000000000000000000..3c197bfd085e6b6b7f1ad28c4ebac18c2ebe886e GIT binary patch literal 2678 zcma)7T~`xV6x}zOWX2FGj*8$%wSGV#Km_~*L^PsC0;oYCV68(OArK}wnP9QD_H!*? z``Fb7`_`v+wX181me#(vKcM{qeQSS0m#h2EBqRzCzT}>B@44rkz0aPT-(UXx0zenO zP~j73$=kCr+gQpOu}pq(DQ}sUQ-~FvY%Z2sG;+CwUTVv|v9+|uwK6P(vz zaEZ%2nK15vY}DP&T6cyGCo{*-b;w*H4fUH0yk$Be37wS^nPY>I1V<$E%!jcc#TB&8 z#r(3VVUZOskYy@>?}=P^TAOl=%z}K2yzkuw*sX%qJSn*HxNH>W7!!hx2@T6EGsj0P zUxWAYK*h={N?@F1;sb$Go3y);flV~8;zNP$m4TkKZDS>wEjS@O!~}ciPzhmc)s$G3 zqnd840qd|ZRA(N)y_=;qM*8*+DdF?R#D)35iUumd~kF`hfSm}3ji8%w!b-Hv#7 z4ZG92SjFBS80mw|Cp!f8xVdCK1^aQJbT3L@o{CC&FMPin9`+7Pr3ImvFaAZ)l7t6q zIG7Ip5=#4((X>(*8cheZ(crH*oc8NYskEX;Qt5!+np#C$Qg4bXPZ4{DZoM_Cc~Ud~Ww=dmdX5p-Z_^_cv$bqiI&LBrpn9V?L_r_MSsXzMO_)S8 zGKj!J3s%tTB0Au8T|yM)Q*aH}iE@(nQy3#<0yoMi#rGsDz}){zl&cs|Mm2r%DW)c( zihj#o>q7c%Y3R4g*fv9?L}mDlzvCJ1%DC)=D2MyKqZjUpo^x~M%7;tlv#;1xxIy9>JIRTE#&j zw)h9cf9O*&I>5II_ts}u%h?4P`(b%@Yp^*(XSlSEl-3?4s$*!;zXxWWtYV3*I@10KACs&G-uZ-k=!Igek3tIf>rxsd;R3B+f2+{;Y#Z*dCU(B#f=r+@t&F*6AzfxbC zXrk}_DC3>oH6_&sN!WX5=G=47Ju^RlefF2K7-sfd<%Ta9(&b8@!D{NEu#v`G9yV?=%y(QRUXRZP!te2c6by?U?N9?wZD^fr zTH%QsFl=%AIHe$d>iec9iJ`ZWC z*101*lh`O=j%LtNwUKsNm@qOF%k96n&8!($4aGV6(a}kKRVFCf$$tF?9$_ns#|$e|Ow6N<3d3CM;7#xN zeY@8>Z1lQ^3`_r_Ww77svG0g|*W8{RJ)x@ci7vOL9H|3WjSfV3qUlodZKZ_YlspJT zfK|}Y=AEE~3}z^1X_Z2ba+vo)J9)~UQ)Cn~+ZUMq96{zIK#IQWu;_4svV07}EiBTC zUNDyEYY6s;)L?VpP&mH8ogb8^U^q-ukTa&f7-N!pLgOx$>D(}t5~h8^7|GW$l_RFr z7&F0i5BH-^F=vYM2Y8rpPE)sYjk=Y{K*O~5pX#bp)frBsZXFv5XO*Jy$ohiKPZTG8 d+l}~Q->qcYG`1tu4xX4Q@)meXe>>r!^f%uk-39;v literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/Tools$2.class b/eclipse-build/org/rapla/components/util/Tools$2.class new file mode 100644 index 0000000000000000000000000000000000000000..fec20a74938e7cc68d6994676e376446bee6eeb6 GIT binary patch literal 933 zcma)4U279T6g`t{nz*K^txdFkwY9BH`p`f{5K;;yMvSCJ+B8sK%49PnTc$J1&P4oK z>PtaE-~CbIoy|f^QR>3(y?5r^bMD9f`u*((fE{e*kzrWX@u(j2Nb-81&m*mbvZg+< zp{)0`mS%k?507E~jDO_Q<2T%lkA!8oV?-Qs*%z@1wK{IUVqk9>W}8|W%a!eOIT1P1 zat~ve*$q`__ZYI(TA#sd>Y?zFMX3lMw;AR-p%U*V=K~S<_&^GVg^mtLfRhZx>7i%G zpnOiUT+mels8WLQcClQ}lEl%z-`BuXU(nh=#~{&fIDA+%0g$AqcY zuAtiKdE*vVv6jbEhUFVZP{cYm7)q^!_q~(TcCU4~-|HSSEdGs_!9UWII1sNxH+w%> z|F-LrR?|{})FxD;17XLSMp|quCE}*!#t4HIP+xA#cz_&c$mS`^pa737ZI@1p=LQN7QUl=a)En4$(MrW8ohqXL+&3<6~E~K literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/Tools.class b/eclipse-build/org/rapla/components/util/Tools.class new file mode 100644 index 0000000000000000000000000000000000000000..9ad52733c895353176346195eaad07de54ed4fa3 GIT binary patch literal 4953 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/ToolsTest.class b/eclipse-build/org/rapla/components/util/ToolsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1b34c3dfcdd614686894ddeb7f81b377c344eab8 GIT binary patch literal 1012 zcma))TW=CU6vzL=b=hudSqkE{V6BC&b`>u#m?nm3j9GmUf)73o+Yz@8ySNwoxqOoN z;0N$S8PC9`Z32nSBr|i)ocW#qoHKv^{`w7|i|0jT81{m2VuyStx$OqiS>Ovlj_f4% zq&*A*84X1g7m;IVoF={(+n+-|6=y;C)mA5c9tnoR3y+SD8ES3klz->8`@w@ zv?^K8+UuIszJxVAuNV`q)r*yYxw=nr**m?QXRPl zo60)wYIsbhOYBfYi6l~W%_S=1AV@-2y!O=ZD4+kuBh_29=-pZR#h{rap+IwytYc(o z0EI*AC$t~5%Rr}DUwAc&EMbG}`Z5XzHp!xRl(9t&hHX?*);nS=R>d^U9kV`1!!hqz zb2Klo<%I}?@SAk8dN6%Fj5iQ1)8x~Rw&t-JzL_GAlOJ95uQ042%VC%#cp?b+-2_-scpmnSD#@~@ySY>#8 z6Led4$L?Uu7el(ZDWMf5l-Y3f}*1e6(&`a@H`4s zXQ}HDLvc#>1&X$Djyv|#b5y<(l)_!Ab2I?VQ>~J~JruD(okH{&Aq&)zfL=p)j{A6! zh;I^y(YLaFM!ILHTzy8`JT*=UGqid}e_zy!$`WxC#YN3wMFJlZIC0xd1hbb|+PT2; zHIXJZCqm0pLfJ%!V%2%5)9zCuYDw+4p-;$PVuiHUu9ZQ1hn()3`;@UjZ!PfsTa0q8IF#f#o}v+3=da z=SnwhneEVaOgof;6?%dB+;(WLMXnA_U|`QWuuR8tcg&6Yo@|6V(gH)B+fMRDv_QfR z1@g74PfrArUVV>g-NzUjpVCil*A7<%3dR5BmbL`6XWq8VAc>rTECvWyEN%6IfChB* zWN76Lj9^rtZ%2mf@-Xa@<$bYqwWvxRGti5SK(1!Ha=qQG%ixt&ccfzJH7sY#3T)*^ zms+@Mw*;1J*Orkj>bq7;k?IhCOOl(R)!2Vw`4PBbx7OTCAx9!1;yRU>mJVdoJCHi= z2+Up1<+a;t`@R>1a(ly9le9f|^{^p*Wn?gmTox(J8MuW>Wt9w+l~kHbN=mzV15=n5 z5S|WGVCr&$>)vL&vAgQXCbuPqSw*fxr`2}YRA$p_2Mx*Xp?bsrE>Ts1Y16Ed!~{QJ zw3~?=xJggNsY>iibspibbbKIN{)oaiq_m^t5kr$5U_}KCR$z({!y>TTofy%pX-XmOt_tos!|a<=+&!n=W!eRtjRE#VfC;s(QGUp1)$D4-?_i literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/iterator/IntIterator.class b/eclipse-build/org/rapla/components/util/iterator/IntIterator.class new file mode 100644 index 0000000000000000000000000000000000000000..680b469993d20e4c714ff820347ce56d7fa30f73 GIT binary patch literal 1559 zcmb7E-*4Mg6#j1FB#rB?S(jv^O}nmRA$7N=tozBbZljbDC|yxTVHFa%sg<}mcH}r! zpAkGF@xTj1LWND*3ol5tl|W+e`;U+YH41Sg}rJ&blj>F+JP1NLACCM^;pk96Uc2@+g8=JyjJzj#+Ka- z1%|p-(6d+lo)bF0Cm`wqT4?X^YGnC^dm{`SuXRlzyJ@>lM^>QkqCnEM8KrqDBGa~d zD@qgV0_mFLIpG3*D${H9S@bt;9Z4KBFpOLl0tEvpq@{M;zz~iI3@e$#T-tiX})u~7@#PETNN`Tv2y{x#W?K(X@g;TEUYWGg2PWH6xP6i#O_^*7KW z6b!tKGaQeTx5Bm>uPy^$F)$cSGi@LXU8ilvz**!7n}RvQhH$LQyQ-Y|Tn4WSOe&-m zc`JUS-)t|rc87#6?KJJKBu2*^j>#ey3>ZkWdSLhZt|YJ#TFp=2wYmx#+4dC!SMeHM znr$n%MHj77pC(nhLvmVH=xh_#!N7KvO6tjEQy{hJv?Mg?mK`di-thZD(|*&DG~^EL z(yZ*3g*ZAFGR=o9QbGc!PEM~*;-OBqtWI*wGtEeD0Oe7>Eg?Y-7&Z?uVkY;Hm!kL+ zO$nT!9Dznzpez#BF{UWsC0dLq45PGxdI{rkN{^AUwURlrhY53LACr41o25Neq5=mn zU*sQE%}sEKlO$x4^-ke9rkM4#sxukoit8||8dJ7hk~FLKNn~8R%2VE@%%4&GkxDd# zoEaz|YCQG4aRX=K;1<0T^cywzF?%0_zhds*0nR^WuK61AF~?-aq=Kc$h5?h!%n;49 z$g_nLm{k>uQI@zuo&#P~s9#diVwl%l%c!W>WmK3o<~dQRwFhAuv2QS>+!884i?<>ge~ZJ(zhMIN+>DE4;xZw)!tt;2 z<~pHX;5T!F9yfWrNXr|z&1HKVZ($X6d_>K{JJ`SqI=F)!T0g^k_yRS2g}e9~@8dgs zfCufgc5Ph3Cahf`9NJ2=n@O8*M{ zh8{p_RRI#*`B8}3wF^P*1zGmI9nZ|0d9y!%ef zD743s9NIDx0gt@E-bujbfJ@he!B9NrC)^%#_sHJs9}6ckk!2`pug<+nVKCpyAdGe* zhD!JP|ECPOP&l4@s3N9aaT;w6#fX}qa&i0w3q==Y7}u8W(YC70zz!I)&!j7(=M3$} zO)NM0nmq<%(>oM-q*1akgEB+9(dWdFp*Pe&cYOO46|M7irw+3FM^l6 zKNPA{&*8%!52QLLP9qw~kYT<1zY5co=75L0q=jziU>X@LT6lm3hQfZtop&#|pRi;D zG4f7?iH8iUf4B0=4adIk1(7)1^VJ%q=Wd-k!dD=V6_jXrr8cdl(Y!9SqHI}MMS~%~ z?~MaTY)d`r)n@f&SW}ExByrO8W?;}mYSH~NlvZScJf^iJJ;@prH-lOF7U|SSiZX#p z>k_wG#sz`)1*)yi1!|wkpTazSt5g}NQErv0&Qbn6%D77pP>=I*5BKRrl{7!oNOh1R zCK4{;dqYsC9z0WdGoPXGV_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/iterator/NestedIterator.class b/eclipse-build/org/rapla/components/util/iterator/NestedIterator.class new file mode 100644 index 0000000000000000000000000000000000000000..c636599e8f764367be583d84a3178c33a704206f GIT binary patch literal 1335 zcmb7DT~8B16g|@}6w2~dD#(WgRG?ixmQO)6Jcy8xR4}3>@?w@UfrYZ$Y`28?Pb9wk z!UHA(K@xc*(I2Ir*)E|3U(BYRduPwwbLQN;zkYxJ0bm@nF+>E$TyM+ttU}&0bM9Wj zb)@4L&602DP1~2A<-4A_EQ`L}Tnf_|G=ZiaYu_^Sma}E9Z0yLKA49c3BG?TMU!w(L zZiy$Ce1T;4?)zs1*p5>M)H(9NU&zZnieR-eyn=+_db_yf*uHJ$?T>O(K&%T?KexFx zC(xGu7ei)EK$~|rWgJl?bTptvAezps)k5H&ju>hL8nd<|mrHva(tB%dD=|7{z!C)1g`S5hLnbkw4z4pm6$=td7c*|v(yG$RnYuHHP<@dzEf ziSj7ULw!2>F(A;qCH>nS5=e(eRC*V3-|CJsbk(%-Y=XNq zDy;cA&;q>qf-&P8ItwWV0?KewV6LK4O;|~&*$>a}60KU6GEOmZh`I|*vdoi9r89f2eDKDq rR*nVmf?DUP^(D0~po@*aX=f^ANwSI492R~*Ji&odQ!>Laf~S80v8M+g literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/iterator/package.html b/eclipse-build/org/rapla/components/util/iterator/package.html new file mode 100644 index 0000000..bac94d8 --- /dev/null +++ b/eclipse-build/org/rapla/components/util/iterator/package.html @@ -0,0 +1,4 @@ + +

Iterators used by Rapla.

+ + diff --git a/eclipse-build/org/rapla/components/util/package.html b/eclipse-build/org/rapla/components/util/package.html new file mode 100644 index 0000000..a3f50a5 --- /dev/null +++ b/eclipse-build/org/rapla/components/util/package.html @@ -0,0 +1,4 @@ + +

Some more helpful tools.

+ + diff --git a/eclipse-build/org/rapla/components/util/xml/XMLReaderAdapter.class b/eclipse-build/org/rapla/components/util/xml/XMLReaderAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..ff432a996b4e718b64c0961f00c52be6ef4e733c GIT binary patch literal 2155 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 b4fh%8KipoZi1}(?GT`yCsZyXy9X9?2Za?_$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/util/xml/XMLWriter.class b/eclipse-build/org/rapla/components/util/xml/XMLWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..5d0f1077a333d772389951266be53fb60ff60e82 GIT binary patch literal 4512 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/DEPENDENCIES b/eclipse-build/org/rapla/components/xmlbundle/DEPENDENCIES new file mode 100644 index 0000000..2fac2f4 --- /dev/null +++ b/eclipse-build/org/rapla/components/xmlbundle/DEPENDENCIES @@ -0,0 +1,7 @@ +This component depends on the following packages (including subpackages): +java.* +javax.xml.* +javax.swing.Icon +org.xml.sax.* +org.rapla.components.util.* +org.apache.avalon.framework.* diff --git a/eclipse-build/org/rapla/components/xmlbundle/I18nBundle.class b/eclipse-build/org/rapla/components/xmlbundle/I18nBundle.class new file mode 100644 index 0000000000000000000000000000000000000000..179d4d1888a6f378e3f9eb54d0f9ba5de61ce688 GIT binary patch literal 951 zcma)4%Wl&^6g{_ux^V+3p*+f~K%q*6U<9k8A{JCd3No#fLN}}??$nxUJQLXt-_rt<0pU@*bJ~h=(sEqnH(4?VwVn_Rkp~*C^h|| zJu*skpKsYWNIeN(gsHu^JTG**w5a!o#xoVWEw9 zuk)Nc?y1}jvsj%v65h>~Z_Wx{&LI0VXRM!TH+GirWClys@JQrexDC-wWum+@udvQ> z)jkQE=SEhNINkd)2mKoc59<6ds|xY47jYh6U&OkqGL}0$yZ>^`70S-xK{@BQ+Aq90 z*61_85>^GvjWteK^CIC}9ZLxKWpcKj^68&?i@qcLhLx{uETF~TkWXNpUGL#)iF(zq w;u?osXS>GdjS^X#LT*hUw{d3zxy!8o^Q`0k1o8k)PQydP2InI@Dyw+>2Qts?s{jB1 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/LocaleChangeEvent.class b/eclipse-build/org/rapla/components/xmlbundle/LocaleChangeEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..98f588bb1f5255e86983ce28c0cec6bfe9611a18 GIT binary patch literal 675 zcmb7BT`vPc6g{{4K~+(z)JJ%tC04u=FGWH&M6mC(?W9(wv$7xJXOR$z2S31%5_e{s zknmz3X79b{+;i`l`S^T$2e6Bk5^{u{FzP#zxKqOEhJ(9MOP$2d!$A3|?kVZGVOJ>G zxe>ZAkM0>PAy25^ihJRtNuV5CJoj&9Hz7>LG75z9WE2OXzCJl5&?#Y}6Y4k-I`M=` zWr4?=j|fF&S=1&#x=-dslh@h00w6>Ds2gzq(nCJHEWR4b-`|n$fw^;EWqFj|CPpkr|NVxQWG~ gyu*Kk7240JJ#vtP5jJ~)+l*i(BMb!zOP00#1rx=WtpET3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/LocaleChangeListener.class b/eclipse-build/org/rapla/components/xmlbundle/LocaleChangeListener.class new file mode 100644 index 0000000000000000000000000000000000000000..02e93dab118a1cfcc7966a932cc4ab92bf4f70b5 GIT binary patch literal 263 zcmX^0Z`VEs1_mPrZgvJHMh4^jqICVD#Dbhe{p9@Ig8aPHypm%5irk!}(!7+MRDGZP z^i-eB;*!+7)FO5U7Dfhvti-ZJ{T!gUzJF3yYH|rX0~;fQI9Rl_Br`|f zwG3z!Oba6eZw``4DU1xJ8a^ag4K~bLGmMdeD>%QjC^^+FGbfdiK@ywu^gwO^x`mN} Y8Hibdo@E5Omz{wF#A4tCl1vO-0DhQGLjV8( literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/LocaleSelector.class b/eclipse-build/org/rapla/components/xmlbundle/LocaleSelector.class new file mode 100644 index 0000000000000000000000000000000000000000..47c9fac0627e550dde177fd1e44e316e1c9e0e9e GIT binary patch literal 678 zcma)4O;6iE5Pd_T#wKkbKvU@VEgZm7PnD>8iQr^`)FAE~XXF~KchP!{%Fn7Qap<8x zpg*eWtm8l{IMkN?JhL;;^WN^S-#>l=c#n4xmI(XS6{%B~TBW(IF0EnX>-1}-r;V9u zPBWV;%@fv~d+Q=B6V@-(l}fcTMS42DkUU}e^J#WO7-V-#6Yok>91>PP=DIYc|3r8+ z+B=uxv7K>(H9U#XBlPcj##+^N4^Po2L)#|;!a&}MAn;sD nhuCbh;gD=$8v&nnIFyPI?_jsZ7kJs?s}5hIFTI2}EyLSC{phJg literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/DictionaryEntry.class b/eclipse-build/org/rapla/components/xmlbundle/impl/DictionaryEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..e92d60a4a84f6f157af25ebc7d76457e9a120528 GIT binary patch literal 1987 zcmbVM+j84f6kSJlqQ;h;#&trIlCqv?(N#KFW_(VEqpS9OodvE>m>gBHhmhhDdMPS+W zn!0DSY(uZR`z_Zo9lxzV-M9BTPQx~JYrkddH>|pExsKr-+;n{JKt){O^dsYmq1%Sj z)VKE@nRQ4=wU6SO14SR1-5A4S|a%NI6Md60mT!87?|K4LLr5FZK5?#~qT(t$sE>1as^J>mr}K{a zlwJ-S9XTVAY?xmg9ow%4D?7{B)d6VH(;6rUseBM%fz zam^qugSejICu9m)yv9H9DY%TYnC6>|kjY3CGdLHe*k%ezB~^HaOmVS`*JHTbhfV|# z)6jTDLS6`idypx-5kL|EZ}LeY>|1y{0@wLp@YV>yvp?`5`KEWreq9aTi~bog|-v@(K$o?y0yU(hR)MO$87B0f;1}ssI20 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/I18nBundleImpl.class b/eclipse-build/org/rapla/components/xmlbundle/impl/I18nBundleImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..5082337497593b0a7cfff344fec26f9cbf03581a GIT binary patch literal 14085 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.class b/eclipse-build/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7a2cc1ffd4a68d90f4d53340ca65797ebe4c001d GIT binary patch literal 2864 zcmbVO-%}e^7(JH&3&|EJrGS-40bBB;C6x-c1!)UyT4(?zl}b@`2}@YINpQ1atk3=x zzWL;nGj_B=?bz|z|HglydhYHf*-$bJWG30{-Fwe>zH`3sOa6KD=W77tC@E+Xm@HV? zgr)77S|U@(?G^HR-YzD-&6%5}{FbRFjNG1?NEI@gsi$>Q&)5ZPo=Xav1-f>%eJx>X z`D|i&bC=H)v3R3*+zuJ& zDWhoXdEF}3Z(emMb938t#x(MVJtGi^L{}MiuCS#CaTezkbPIIW!q1snv8bX4=LM9k zZZBy$U7#lteVbxC1o~7cXd^<($m>g`+@@|l);3KZ>2`8m)ht8adyB2p4vioJ7*KHm z9SYv7XzAqVQVt@F0SP~(A_O&v5nNL6e%(%2N)?weDi9>od-}FkGHoAOzhV+Cs-hi1 zW^eBpl%tu2>8y#WM`9EW<;xvA)?%sHXr8a|*&gr~(3pXP3nO+}y5 zP1CbmVB%E41TI*5uCT8kMMd(MRPmAI(dup!XfNuvySYZoudbvoFr{J|9Rg>!4XX~D z$+Xj<3POMNd%b$nlSp*^R5>ZQD{%c7LmTBgr{W&ihl*XeYgyWJfktFUcNS78vzcig(aQ-v=e| zsfru8DXXX&H%Jyf)X!9`%3vXBQ+1P)sl*LqO~q5JvyqC%cjV2PGB5rAQpF5zEBH#_ z+6kPvzt6cV&uc0^#%K^5$jHQ4HFb%3E#M|rUwt9m!M2Jlb_C9t&fIiMix?9p>PUwS z+mRJpX)~5(K;P$J89zy7x^|HVhC#O^~3aR>T}!$z{2WiS~o82b$u<7JFJsiC>F zE;Fl92c_5D>7hv4&Lpw*-;*v=j3kO&%Dl4pYADda4feV1-2^vr9KX zc7Y$qk4By$^6du5PdsD}EsyiK6A5VZKo93U>&v;#`1}Vn zzo4UEq+VfTEyizOA7FDaF!K{SQqBNGjM6 lA+8jBWgT$ra@r)oKG{2L(h5s3?UOQCHL2DnMPfF={vULCcw7Jg literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/RaplaDictionary.class b/eclipse-build/org/rapla/components/xmlbundle/impl/RaplaDictionary.class new file mode 100644 index 0000000000000000000000000000000000000000..a3d1af903207e5bfd00d22dc803ee8974b6b85ca GIT binary patch literal 2493 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/TranslationParser$1.class b/eclipse-build/org/rapla/components/xmlbundle/impl/TranslationParser$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b44b9c74ce62cf4e307e667c19ceca31f7f758d4 GIT binary patch literal 5544 zcmb_f3wRXO75;CsWR}f? z(Teq1Ym11rl(x39YAvs9g0Ui$qE%?Ew%T{Ct$nxJr>|E1@62qn$wo=}B<${;`#9&^ zbN=(6Gf%z!$YTJ`!#fIc1ZKpn_K>B;4J{Oob;e_+ZrX{^`c9)YX+{h^6zz-~p(U1P zCJfDv#>`7JE1_G(l?r?UXUN0c8%k*FLmj#i*R4cozTT!K4SS&`&szd{c1JW(d@fbh zACsID&hqR?-`)#KG#1L(Rvo}}TqM)vBLtOqV%V0_<^T#XS8kd&xXHot z0PL#erd-shn21RVE+z_`ph;1S2X-l_O)m^RPW;4^twuCl8Shw1G$g??vxbY_p`mukTyCYqGt@ zltjuHk#UzR2ovDLV>ve&H6pqd;4O6(ZJ?2UEljF%ib<SAc96OWupBSdBGIPhLH# zFK!b!J2PNjdS>#K7sCKr(J3Ksz6U2Z`w=HK5gnFYq`PpaDw4-66$ua;d0IS9VkPfo zs`TV%tMnX0mRctuO8g*_MX3~cm5L4cIQ?YD+|vS+hH$JWQwH!8Dz1?>kBP{5__0x7 zY&u^O(j(Wa_#|$ib^6+*W{|FjFn-!0%l)`f0Djy=-$mS#pO0H`n}S;f3Nl%15WFgG z$ERr~nW$O1TVUo0H_r}KwlC;}&(OrUW--YWd{*H6(d0s-Y;@*F!?I3lR#yObqEn{R zT`IQVZng*!t}(Biq&QkvG)x$o@?_kj;`1^RKIUtuocMx@ZTKQhHFUFG)=vVzR>7A> zY4D(}Y!$37Kfc0vY$%Ra&NSTy?F!cg#a9Qg9i4uBO;VgGAMRK2bv!_YT7(cAQgl2x zjNoXJ^qqJ}#W(PpNhw2lw?Wt+Euxv-~geU z%|~r*l8*LcoRs+;6^HNy8?JDNX3b5?HP*Z=SGp^N>33;QG#oSic$&9QSYavTh>Gt? z!^V4t)pA3V6_%X$jEW!N*+I^$6o?!v=Ve({{r*+uhbn%A=NT_UU#GKE5k%^b1*VTC z^h?d?+N55mcMTMCUN>n)d3}@RghJOgIKMv4w#h1!-^&z+%i|Ln6FS;OxQsa;$d?19 zb=IiJBijiQmA_%(u3=M`LCnkWvWnl~_k+G?d)N4Z`QAf>?1T2>ssLWVpH%!=!Z1J> zE@FMt+I87TkvEp%Zz^8FtAnPTFHrx1nZmqea3%eYis-UK%eKeCzZSOn%Et;&vSMCs zt$Vfq$m;f*z-jJWmis+Fkf*|=!<-dt8OJy+6J@%uGYg{f-K!w$t#hhOO_tOeGi<~X zd`DWO+Z{2In_6p{y5+R~dICj!#mnU@u9z@EzUOf?h98BsilvUDnaJTE5Gb3{!>?Yb zJNcA@>UmLC}^qZ#hiU*Q_6cWe@8>bzQH+)8Y|zIumB-U zW9wbu{LaEcu1Eu?BA?$2xvQSWEJ7g~xcd^EjYjTV&J!y!1DEsdU=^y^8pum56XX#aJQ1egWY(!%HNF_%Y)x^w4LcF*y(9= z6>N7D+}DHM-RLb3_BtEq$Tes4UT1R;`dzvGPhgT9xlfx@c+6Ys$NrXHe7gq+yAdxB zKIw>Q`oG0EI-l}%9+t;51)u1uJ$MM?ElZRYn zZNlk{Zj|_1joC19G2#sDT4=ENoxnyUaVysGR2NTeU~_RT9>Vo3<2T>{HsM*^$m(%3 ze#u?0;x@dA+eJRxy+Yg}PGN_37B-6+xJ%5z7SYIND}t@U!aX91ZQ>ei7dNrDxr-J_ z#IAIqlSZuAf}gmE<>;plVhJq#j3XvGM?c3e2)8A;jN0p%yc)lM#ZMk>ITbsQVg?)_ z%6B=d62+AW%zg(Q@GB4sPEP;7B|X?Kr(bvz;tk}KOq($6jEQvEi}>|$oQvI5Ecxa2 z0ry7e-lKv3B|`lDK<~n$#0}%&L%7!+?RI}Wj2%v)yBizRSPaQUcf-Lx{C1=h2UGZi zbErOz^h$TzW^cEX3&AR%B&kAQ3V-ayU-rp0;o$xRcN=k)FGuBl_^Sj`FP_BH13+pd zM*{a_93e6p576ZgGc-F$N;?UkU4%~$uH%_I(1!=Hm#dHR>2XRpfFn4_03X6jcmgkT z<`vGohG!g5T;TdS4GO%T1_ehRC^&LKafI6cj(;#VE@k=OLS0$T1uGfT@qy!M@;~t} ze#>%Tag(I)!hyRT?~SIMa%u|yUM8!9nS+z4`6yeCt;gld_4c)+Sc+VBQNQy^2| mdE!NmwsGXrXD-BK4&UN*4*rY(@z=+C54_D!fCuGK{(BeA=Qbw* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/TranslationParser.class b/eclipse-build/org/rapla/components/xmlbundle/impl/TranslationParser.class new file mode 100644 index 0000000000000000000000000000000000000000..d6e9d42680e9b46013a91dfd50368ece51a9139a GIT binary patch literal 8898 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/impl/UniqueKeyException.class b/eclipse-build/org/rapla/components/xmlbundle/impl/UniqueKeyException.class new file mode 100644 index 0000000000000000000000000000000000000000..06617e5752a0b65aa1d6b82cfba78b95349ca3b5 GIT binary patch literal 479 zcmbVIJx{|h5PcW=fzlRAOIwMFkq?PT3<#;HO92UpSW3IQsa1>|J0uP&KZ^;8fgiw+ zLR<=hp&K6V{GQ*vyYt8A+dF_`^s4X(CpMi2sYtX4A{!^xNaM0#5$kDgW?BX+PINFf z>M@r$^7&#B$;2sZswffK58_D#T9|q8`#@-BGF3uPWSX&Xe05HsYeHjaP3DAg6QOfi z<`IfRgvyyR$_)sez3|U)IL1 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/package.html b/eclipse-build/org/rapla/components/xmlbundle/package.html new file mode 100644 index 0000000..f0624d0 --- /dev/null +++ b/eclipse-build/org/rapla/components/xmlbundle/package.html @@ -0,0 +1,10 @@ + +

Components for storing locale-specific resources in xml-files. +Java Resource-Bundles can be created automatically. +

+

+For adding a new language to Rapla take a look at resources.xml. +

+@see
rapla.sourceforge.net + + diff --git a/eclipse-build/org/rapla/components/xmlbundle/resources.dtd b/eclipse-build/org/rapla/components/xmlbundle/resources.dtd new file mode 100644 index 0000000..407c87b --- /dev/null +++ b/eclipse-build/org/rapla/components/xmlbundle/resources.dtd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/components/xmlbundle/tests/AbstractI18nTest.class b/eclipse-build/org/rapla/components/xmlbundle/tests/AbstractI18nTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6f2b52983c72d6c0ce4fe6fb90a51d001457a972 GIT binary patch literal 2451 zcma)7>sHiO7~N->k~qfOl&W~aQ7JIoQf*Z#mkQp?0OitAu`SJH4iE?lCK;iR($xp> zw|@}YwfX>kCRgn~NoE`>UKWd4=klHJ?7hGJo&59fpML|mif0-!0@wUt#SE-X*D`H? zW7GGf7lr2bhFht5Racsk3^^aKgi&DG(Zef4-U3%NWCc#I)jTIMmji1@h!E|vwdxBaTj zp#_HxXwU_Yl^jn_*ET9LSgT#d$g&=Js^ss$ z5;&|*-6v<;_XJvcisc+g!N6x|)p1JTh{K)1XEla7zIPbyIIH1|K=G5cF>ns&Q)S~@ z`VJB(2Dfd7Ta?RuxM8hG1!-8v1;PnrR0}*=EhsPrCoFh1*Hu6-8n}eZL}`Vg45Dd2 zn&yr`_W@Tl(VwZTNjqXybbKjrUJ1OUQZEHEX1Wxv`Zc$@v}`%9j&6b3xn!fT><5MJ z55{*FlEZ~)HSo6zQ%)F?(wq$aT42k&+qT?PN-Fe41HI@I$R+3(f*Q+o@&M?I#j=J0 zflF}(Ymwuc@5{?_D<<`FHxyN3(xi%!tO|%lfsEW1=uBk!U``%9G9Ov?`joX9n^MDd zf#V8HbACppZc1FQ<6GWnTb?alWt?FHBN!Dp#2!l`1iB7jTWqRS+CS>}cLr`@JUJfs z3B_t-lfKm?Ssl*dHtuS;lR`9OZpog3d$>>66G4gXS)&)AJuOZR07?@kkZV z)A2-rHlumN_?bD#zJofR3e3Ih-}fK+Gy{`(l7jwKWlscFwq8a|sMpg=0c;|B{v%*mix_H>;AumG8T=GiXM)B}B$(SL!C7Qqqf5hN`y19VQDX9~5Rl592EK%Os!TKN2 yvM-QriOqr36#2Nw<76>GYuv(l+-bU@BfTLl?-Me6!{n?iUmZ>q37-oYZ2kwT^h$^T literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.class b/eclipse-build/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ccd467e5195cf7691edffa0b5b946ac49e456912 GIT binary patch literal 4088 zcmbtX3wImU5&o_$XV>y3fB+{UDF_EAmYi5|nitsQB`3k)M{7GuOo6hJ*7hcAt+KmH z+)_#ll#;$5Kns08(+54L>1k}J&*=~7Pv~#yDg9uN7pKS~5hLH$7X{was|2X!{C}xAX8$Nh9cZneK@C+Yl$vfrkX>77aTU_DgQsgd*pb zeb=#~h$OHB4~zUGw9-G8&UexCM-6ntkgr_^H0TPQz7?FSD0K9TstDpyNlqZD;`qQmq zk;ahtazJ5Ei=^Eyk5aNq%MudDz!LhXs$}~W*JllB z3syK2nPc{#HqmZOU}3FawWSKTN$;w12yKY1OxR%!9247H{WK$z33!;+afOpfMny!S z+#<)9Rg&M94SWG#BtmweXku??6KrKjy33aox<$=dy2Ci>__D(0+D6o6b$o@bzF|to zt2NVOWlmYU6vbO%M@uUqX8QCsg?q#KPz`K{b6DoSj<2)1mH58K_b5sKI)=JgJ>N3$ zZG1-+7T(eDHdFqwQ)A#q_%Tf~vFqby zcZ=!KV&Ld_k8&pq1<&H$gM?A|sezw`&DivP%L`6lu9}Xo;}>+(Vvv7Dq`45Oj^A+H z*rk;1rE#&qH+FbTjvvUK?vV$fZ>~0 z2fn2%@>as+* zrp%;y0kJhRu!`-OHSCz{T*aquB9+;B6TJ=P$q;9nNPBS~GE_Mb8c9Xsbt7AAMyN9M zCPul(&_^h{X(mpydqOYXuNls*Aw8EI$gE)RD)x_O{*K;v@kqG&>DuPR-sGVb92wZV zf+wz{dmwo%d13{pG6MPZO^gZ1jxYkfVfY3asw@HR$1V(Us2||-Ag>vRaSBH^fX>xG zZ^0ovgKoU5Nb$LmJZjJ3*%ZZ9ZIMs3m(tYnYl_#b+lOzZrg zK$Ka^3SnZDN@Ec=y^rG}gB%g$FyD$=b=n_W!KFqLBZlOdn9Z9gD1$$Nz!8qCos*g8QvXc8OU>3MjmhA zLfudHZ~FHdWfiW}1N~af&oN2#8eX4EzL9)$72o&}-;9Ce{ciI6AL55GB;Wl2KdGPj zdFwO3x(jRVeDaSqfyo2L# zPc2|4S=vXQ?#3nl`Qec3ORU8*B`ZwAWlDQEk0A6eYA6?K-u3WYRGTBz(x}aTbm|{* cC#FHMLgldsAF(t#qK*0<6ZU7~iQ)bK0V{tA*Z=?k literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/Annotatable.class b/eclipse-build/org/rapla/entities/Annotatable.class new file mode 100644 index 0000000000000000000000000000000000000000..af7b7aeaaacd1eab8f52723a04ca9c88b14b7630 GIT binary patch literal 446 zcmZvYF>3-r5QX0u<3)`|i?k`DSLi~jKq?CZl7NL^lWIMNWo6luyH%3EmLfkOKT4dF z5S6=TA2a(N-|qX}fByh@LO(){@Q`LkWqRYZVjpaz literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/Category.class b/eclipse-build/org/rapla/entities/Category.class new file mode 100644 index 0000000000000000000000000000000000000000..650ee85bc8a7c5e3b9081ef4a2085f8cac5b8912 GIT binary patch literal 1272 zcmah}TW=CU6#k|~mU}Bg6FW+3np_u_G^8P1y~3sF z+s;@+h+*}VpK;yfR$s4oPDNL02s3O4gnb&B(x?$|#QWla4@6HxgdrCIt*TVSA7j`I z*lwtLCfO3fn6hQrl1tt(1w*LWKCBY1_CK=bcqobtsYoASxQ=y(aLMP}$=9a6t(e?( zi!%#H(lM-lvCxWw;YI>Uq}12V1Xi%huu?NDaWEQmgwwp}LAqvlx!K~5p?rTa&U?Ly z8iuX>T(wGG$`J$mOiW{veIb31WMkv)djVUN z>N(^N%{TQgUs!;SpKy07e^JXm(}B7|eiWoM8>Eza8m9anAVbNgNACB6)EaKt>Izrd zPW_lc^U9Sc43+u1FSth1Fm>*LVRzUAEFq^xk6w(N8a%Q|L~t2t!d)S6pRnq;_7j{a^Y0<=*#ho+_5mJx_7QeHtK+d}_vkHC W@lXBrXL#=UFYuCbFud|Iz5WL#hgl;4 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/CategoryAnnotations.class b/eclipse-build/org/rapla/entities/CategoryAnnotations.class new file mode 100644 index 0000000000000000000000000000000000000000..821aff67d621a1fb84927326fb3e3a123a985717 GIT binary patch literal 219 zcmZurISK+n5UloEZ^TGHVCaCUkt~{cEGP&@(k{a?GR(->3VzMN2lyy)H8C-&gQBXQ zulobQ2+aru!oY`21wL6;+KCaP&njlonGd&#b6!}CcjpKtLg&a=R+e3+lEYD_LTJyY zyZvgiobKafk*o>b#V@pxU|cpPwBo!%*vXddMORTHlv8hgAk;Vh5>h=gRug)EmWQ9d Y3V~3}Zxi|`qmpBks{*QDum0tYHn+a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/DependencyException.class b/eclipse-build/org/rapla/entities/DependencyException.class new file mode 100644 index 0000000000000000000000000000000000000000..6126cc52e081a3adfca55391c9bfe1c7898fd064 GIT binary patch literal 925 zcmaJ=%We}f6g@YOrVW#(1oGmUQiPK57>RAFZc>myQIQB_!OltC;4<|@9uKsC1ri8} z1s}jiA?`RKDQI98w$Jss_go))e*FCQ9l&GUEg(a<7n+%G#5@qb)K*y~BmYp&rJhPX zIe&6Ck#nm;T|ka-XU#n};#7VJ%{%{PlDpy&b|Pt%2u9LGocH?KA%UI~O8rnrR%kmC zK`is!LGlsvr%N^aVtgVeHX_spC*r;EW2*wc9|i$Oxm1s^HB>V#Y-}W!s4kT*w%HkNfza?!#3e#`ptL-SPsh@{661i+TN#8CwpFmXjF-V& zqCjX5);IINTVyAyf7^Y;7wJ6zqx|{&w?ug+?ZxA9kL^yniG&CL*h=+~P#lJ_naHOq zIbdU@vVL}tl81m@HYUrjC4+0oV}nt_p-mpyEykY1C1wyiT;_QZ*}-MrdBZrvv)8Ru zzT#^4{uk6gG0vjN0^=eiB9)npBzw&3GBZZP6Z+;lp(+?tk=5~~qzqqWl8b$Y&w e1NrV})ITygy+A>IZb1zAst83Y6hf643e^YMq)XWnlai!@pC!Ht`T>5F zIGgxb++{9%W@gXKeE)oW0XWB@i3XvY<#R6=%S3oGEmf&x;SII(YNAQlS%??mB_f@B zx6wkzrHM_#$(o`-|54`<+~GJJh0~`&5Dcb-qep*DMNM--urA|7rK-Fl7`^_4(7euO zvIWAH3lkQh?W@h~zuObJ(>%d`n literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/EntityNotFoundException.class b/eclipse-build/org/rapla/entities/EntityNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..d62c0c9d1c07e85742b60c4c01fa364efa6bd23f GIT binary patch literal 475 zcmah_Jx>Bb5PfsSrD(jw7DI!OXf70@^b4%GdhC+DJ;k48Wn$qE@JAWv z&`4p7Tg=Rxyf^b^-#=d80Gwbe50B6=b`n@Ii$ox`Q%=b^=%mF{&$zBh^tdx0$(d6| z=aC`oE%`TAOy#4o_rYbV|KSnJv9wA=18HN{U7w#3=z>sc8y!2L-9SW%%(9F05g~V~ zv~n#%Z9lvd46OO{A>;JB7@-`>uE}i(x3&HQ3#ExWFr8{^2_^IPmh+Pmn<^!>fEOMOl zj6AGz#e-1bSmaKNdmiUp> Co^*l$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/IllegalAnnotationException.class b/eclipse-build/org/rapla/entities/IllegalAnnotationException.class new file mode 100644 index 0000000000000000000000000000000000000000..97e80ba1b908e8f24b3a8fdda5ff54315e505721 GIT binary patch literal 700 zcma)($xZ@65QhIAkueA^D7eSvq@YgX6+>cN5)AR+!o9^7TE}kE(+IESiNu2s;6oX! zfq+qrPBPt7mA}6FtLFXV^$oxQ)_iyjd)m|j!y6$FgtF2~5e20%6g3_mDWxs9QmfN; zRW#g(j~K(&u;kwGC(+X8F}QSyfsSD&5=Qc{B1}YeH>DE>cFvGG)+(}G*$NMvVw{Y) zhcUztrINPDkl8Lj@Mj)`T-AarYow|bb}9_9V|^zQ7{gQ&2~09fm!%RH&8J&ouK8^! z7}8~3rIwr;Q`}F+Y+XhSL3!x#i-Fbv}j69@`(lZoUa35plg2o9ivL&QXFh89|Sy0NDRFS$p5 zArHx0o_xteQWdd`RmLY%m2b%>q+-_T?zsr0%Bh;ur_W{Ywf9(S zw#>UcH!sjy)>aF4Ni+3|Kxe`8QFRS7KkMlFq_#RD5Itg8hC3=Skn;CEWHYW~SW6?D zSJFj+$e6vTw<3&$igt7fgj4CFf}H{#n>@54iNrPt>{0OscC>QVtzsWK1eA*I%B%?N zC>WMLRV^>*&a5AI+(TW|m<#41Sd6&K2IJ^2yiTqeT1|mV7mYRNGZCfkVvDvR0YW@3``8LB%AdC`gM7bY8RCR9qu5oEIz&L>;}t zdSrBlJnCoC16p%1BE@-0MNvw+t+cF{R^}YTl>%(VFg{Un8Kfw}(kO3q7SxM8_o<4{ zaFq`ATUE_u+PbzPWL{?Yx(W>oByP1zOv788Ya;yrsg$M`Rp?R!46|&n5wO6Lig$2G z0rk06cdAM6^qrEvDrt;iMc}}gW(~MKWqZ-MakobnTu)iHv05qhSghE=RxG0|i=TC~ zWq9loEfoK(Es##VUcIJ^G7d*YMN-;QGHr{6t62JNze#ja-6z&GA|WA#pt39S&TSQU zz>XJP(eKX466mN2!Q+=p9<>R1_6rqX;wzqI%1@Xkl@?^(J1SeEtoWE~`;5vweyg&} zzsqu+v8zr=KV!(ooZQsh2c=}u%L`%tTR854f*9x9*qcLW<)3Bmb!v7(K2`3uql06d zZ`XMv%x5z57@e7?NM3%7U5~Iklg+JT@2}hm;Z2TlL^$?xe2Z4zMi=@x1A6@1eD?B< zcDUC^+j6#_vykWQK;Z3r-k08T8@z>&K13pu?H&pbafl4j^@EV;&OZC;<=+xR*u$^~ zQO*wp82XXG0KN4ii&PVqTpde}djs^`!JMR!CYB8EcOdkVSHlW~f-I4?dl0(BpY9p%a>8})IV=6Duk9!i-!BB=*E5vWG?{tKRJ2GNO&n4x{i89)2~V4s5FJ{c>& z<3UXKxi9sUC0Vn%7wD#F=i<}rxbmYPmsIh!xrb1Lpi6TNIVG8Uu%AZ=D}iwWK1XMh z9zb8#**d^%UDnw^))H0(q23tN%HACSnj{>_P&~7a8%)|$EMJb_d<^rChF@Pl=UJu~ z7|6vY+TwvfX`6Orlr~la)6;Y$CDSQm&15}}Zaqhm#oADnZ~GFF6{T^*Ut>Nne~9J1j<7b`*l literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/NamedComparator.class b/eclipse-build/org/rapla/entities/NamedComparator.class new file mode 100644 index 0000000000000000000000000000000000000000..3f4d5ce92955bffbd2eac33bdea8426ced1debf8 GIT binary patch literal 1280 zcmZ`&%Tg0j5IuMD7)XYf667KB6p{=OUV;K5NR?Go#kj!Ag54!dg~4G4ClkwGVe7^X z8><8#3(K{i;fGM3JBcPBsY<%;?e2T}obH}qSKogCSj3JFO<>&f%Q;`3Ix=UufgRXZ zC0CFq*5QtKaw>fpc)pIPK=-kHCv%Q;%ehwv$5tuO5f|tUz16^Wa*cd}xZ{_Xf*c3>m{|Cqv1)@9Np_M=cT?Ufq7Ko%X z#dffu0Ud1#^rBBkN?^1huS7wfOOcgaNO-$avHZZmJ@gCct``)lj?*aFBy~MgOkfcA zbqujWsOTDF1H*VAkStrlu3HJDTcY&zZPag*t7wlJXh%YzD{s42p?Y#)`LE?ct%Is< zMd{n>UUx==BfBCnnQy3TH9U4xSIVVNPSbTx&Dv^|nmw6a)!DRx46>Ys^|mSW(4|M@kqkNoPiwXNrUZCn_}FQ)S`szu`8f?3;$NKS%r!$()bJyw(Kc8srgKc`&Omu1OkGP9eaT+y?H55 z>yt_Bc~!q;y|C5ndT)G4b82-k#(78hk3r*i$Ze&C8b7T@e-Z|52XFhltDL^<7j$OL z3-p*@aW_jdaDkCeVg8tk6ARqqDEf&rz_)`)VF=@4EJVNrCV5l2sv^m=uT%9pzxguG zSl*nu#Pk_rk#qAW%)$)KS~U9^BeOI;-!Q9TK;3J{ODwF!Qn53{Q?YaN63cwO`~kZ5 z5z**5@gmd;WJ6`cv?J)kD4C6s<2V^jV2lc>qv);H)~w}G0rpkgiOf~YdmR0 qdCKe!;-|36^9K1Z5pxsI*oiG>b|ad&!n_WXKhe3R^lsCy;rSnRLnH|R literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/Ownable.class b/eclipse-build/org/rapla/entities/Ownable.class new file mode 100644 index 0000000000000000000000000000000000000000..f65c53450fbb8fa678bcd0250bcf235728a1977f GIT binary patch literal 213 zcmZ{eu?oU46h-f=+SKacZ2f?CG2rU%ByzW?z* zI=0*56iEFgv%L6=64FC|u{G}+!-VvfiMceKooK&h%sadBw-;;haKq~*VH$5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/RaplaObject.class b/eclipse-build/org/rapla/entities/RaplaObject.class new file mode 100644 index 0000000000000000000000000000000000000000..2b7c5dffbfd1110b73a25db6acbb0af18d53e024 GIT binary patch literal 180 zcmX^0Z`VEs1_mPrPId++Mh3b3qICVD#Dbhe{nWgY%#zI1V*MZx*FPyMHMxYHfrXJl zAS~G{7E)P|%E+Lgq3MImAdm`cMh33n{L-T2RJY6=pn3r$ hEA&97voSI-GB5+(#lXM_w2_s84a8z#2a-$-8~}t}Fi-#h literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/RaplaType.class b/eclipse-build/org/rapla/entities/RaplaType.class new file mode 100644 index 0000000000000000000000000000000000000000..d71c4b3b3995396cd22eb67017f602934b9f3834 GIT binary patch literal 2918 zcmai0XX;TZvOfA{vQBF@q>ndz_y~Zm~@Pi zZ6wWtYq^$LPEN_knOh}OLyN%1%f@vhX&Z&bRtzvT8bS%TRZX0v9 zN#U}3%$iQwDi+R9j0uR-0-fn%q3jw3H*44xvz7SrBLrGp!U#k%b&zS-u?mYRfp)u? zH|&COl>!?abI~fhren@a$I9ICR4T4zC(jrq%7>2TZL46p#|46eu`G?Ji}Q@3M_`jO zuVlxK@)G64=tiH8Er7RCT%9wW885O(MtYMq7%e09HwOkA z98cRuxtwa)@FR(3!`OkH8ltpYk5h^3*oEB!+M?-BszAF3V~<-1)3ZI&*#UvQjgUUV z;~FY_cgZ4A+cQr~F?nmv+s5tNB&orS7fTpH^hsKVb?E4ntE7%Dbar4rUeqwk%+{GD zt2z$gCDPAu1e(b4N+;DAoWG^vkid>QFB7(HE*kcp zH0Ezb>lG2kL8K%-M+JJ;p(mD={vOxy3SOmir3#%p+$iUJ(h&cX-DO#MCD}<2^H&(O zss#-!^@djQGDG17t1vGx+6cE=7tcyexE6j{!-T-DdLkDbR?Cf|bH!`cnxL$-H*{oh zhDEhdbiAV4vo3m_axdEYbn}C!FL&uzK$dFs~UWPG_d0AT=Lh*ItZm5}=C8u~p4u@1M zt6@=Kb3NW#f~09W@8zXkE*1Ig!Ud1q{sxOpEXj$e2DR)0fq;3F)!rangP>qQHvZ1R zrx#f4Vi;*SI?7-}w3*i`hE27m4qEL4=AgCcE}4#i&Vo?0(2F6$$Emf$xp#GnsgXOu zxox;bhmM8E%#vf~+1m56C*Rlc0X`)7b$Kojd`pvJy2x3Om;ImWz{mJh!zZgJk1||; zuj4b2kC5d<$%*-ejv`9Uhl?K%C6{;($n!xR788<*Z*_cyuj%7-vEt;-Q8bVyR^DGM>%!@-(tvMoj56iPe-9y-f2qic3DM>l`>3D$d*=6+p zivFMZ7{GJdl-rj-NVQ)=zoOHx~qIntYBXNf6Lv2vysEg zc=;iBKONtc2uoB_qnAc10B#R;3>xjTgI80OOmPm6sx!8(wkdhVuc?xyh? zos{mTeRofAy%~Z3s2F$MS|I zn)m=dl=19RMO#hWi`hA6&i6BO&bRNMzXEuO-5fFkTQ(eep_&BBBjdEw6nR}z{(%Xm z&pr-l;O^^gGDEK$bLp6VoeQi+6lxXpD2%xN=*3e3@lv4FwkC4QxSk4P zT4LSg69UVRw9)RdzJf$HM?(1qFzpTs)wDa>P);caDh zoE%$Uzn{wV22=UAfD+0@6madFz?^^ul8W^rDyXs-HJOm{1@`{t zot@VUtTmb!Agux}p)9b{(S}~d<35G26Bh#Ijva8H6nBf`vt-tdbR@9d`JZ8E@r&8C zQ3>0kIcLoiC>+{29ME%}=v6KZ(|!U$9fB?LETD!ZEb~9dQ3iS5F$FI3TI5U@Sirqk${RD(X1IBZ`ll3khu1<{S;ZzcaF^rC9EmO5iz2R zyxjqeP>&D@^v*VsR;5NsI(h9iIl0zHa$X(N2t|R`L0yzI>XgXk_CT>0Xe8vPmXxQQ zD$wZ<7H?MOwUIN%#{z98EtK=qJxf2t)(^IuTm`zU{nKIN$g)XwbyhTks4}djYR#K;HlW literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/UniqueKeyException.class b/eclipse-build/org/rapla/entities/UniqueKeyException.class new file mode 100644 index 0000000000000000000000000000000000000000..bd7e1bb09d7940e0ee90d0cca3ed6c30fa78dbfb GIT binary patch literal 460 zcmaJ-%T5A85UgH#m<0q;zhNa zqLBlMbLg4sRCQI)=hyoOfI~F$@CaMR4g)L3kqD%A$|)HKU9BDyc_Cj;CIdNk%IG{Y zgv}ZC){2pQHufR7N~M21LM4_~iKr)S%)0K`F@eqrrMA(r6WaAel*lXxNDmQmM@lQ# zBGh)md+{WKNa$hEaaQSJbGJvxw9Sq5v4Eu_d=v=fP-%IYjQY}Ei+&^t)zA#sQm`@O z-)6?$shF@G&QkxgV3UoUoVaw@TnvKWF^L_>Q)k{&?a74u6&7Xr&2x( z^#KV4AHYW;W>@Y-!a`_epWWFrGiPRZfBpXU6TmLsX~;3u!pN~AKJmCEg2YW+5nD&G zh&1FGmQMI7w>%y=*2mF_7$+L$8R{7>ZRtDHpfhY_YOnOJi*roy+#LJRZl5D~4VYxq;I#2L&+PDx-w5oZT+tIu;lf zJ8mEjrv6AoeLnI8L!}drxi{dEE7z&9#}nzeoIdSrCt zrtQ0ds`;3q5R2qcL~%%#Z6m8&c1WIq)$}|Pl1LGxo*XIWxuZz}GCG#w$xxz%m(r_O zn|09}l1Z#oJIzwO75W&`>}Qb$J8m-PPs! z6D~rhZ;4npXtj?#{ehM5s0=Htviub*XIPv20d|JVuyx~x zjfvpL!npP)_+yCY%~Sz}n6|g`?!E8abI-l)kJGQ;04(5v0Zm}s59(GR4_s;4Ug(65 z-LRfF>|o8`Kahb8{lI`O(7h+$NXwO8-FmXKXV*dlDS`gT+YBAoI?ESGxqeN$wm@(7 zETJ0tDgtda-*pu*@5k}bej5@X_A(>2;&@KDDv&Mw3sBq^(AWHzb{YwEnaH49AW6~R z7611}Ow}@R6SuepyRxyX#uyE6LqPNCZ7s}s+A6X@6EK{+N<%8A1_Px(R-g(D)PKCecC-n^vPg1CzFcr>8ut zoZiwWbe77;=qZ&yqwg5G4^i$l6@yMYNIOJ~9C|Q}5qbvVo4Afqo>ZQyM9x(6MhpKZ zd88OyFVCJ}{1C~+QTaRao3k{_dg&u_b6+q+MfB+F1m&eE}JBlt=%d%dMU5{Y`(|j&tiqpws5i=3f)tJK{rtAFMSR_O8!fifj rM7hJ)67jRJaFd()>^a|uNBm?Mqf;5e4*5sv|xacpbutP1~Scbm+a2g^k*3# zOf>Na_@j(xhHb@!n$7On^UZheXMX+u{u97UyvQKMPz%Db8}fw8qIFI&rm%68?K{6>5qxCL|H|e`?|+fEF3H`+#$DBTUPZ@ zjCibcM<_~;3Sw{$JSBap-!R-LS9+98oodUV$guUlbR4Xcv6u8ChgEFkaT}Wq3kQk6 zz4A>!ErO^{GKNh;9d8iM$ zHk@*0>NwU?xdx*~%{efZQ>Z~oIAPzl|9OpV#BPZ0N-Rl>> zYL<|;oE*}76DgF;Ea_U6kVTHLMfy)6PmhCT6bM-%*s*dqk@pgL9}g`4Fp-b&*y?+DVr4mz6+E^2Gd#C)-$+WS IY9qLR0Ly$6)&Kwi literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/Preferences.class b/eclipse-build/org/rapla/entities/configuration/Preferences.class new file mode 100644 index 0000000000000000000000000000000000000000..5763311bc563231f0634c437f14a17475aafd53d GIT binary patch literal 1134 zcmah|?@!ZU5Pl9P9c8jH1sNdt6E;Mu5EGLT6D1=dSq71134D9kz0{KKZPRw@{w(7M z6HWXB{G*K5uG?x-wI6zY?|tsM=dO1@e|`G_U>^q>W(d2kZyCPu9AQWm+Mz82!*tb^ zZ4G=8+O9Ire0e2(sZ1GY$Pr4{;)5_8p)BLHdo9gS!z`ha!PAHchZ^#Pjg0GeQPweq zPFT&roPJcI>qrd+!b-+{OY~)rkZWI@H8@K%0}`ic4?S5YK zWA@vG^?!xtu|$~nrk&7H#@zx|P$A47CX`#%=Cn6QjtGK!%5fh0wzBHA&KwA91>C{{ zq1d#QYz_Kd>9?ao3FW413a2A{J31%Myf+BBoBojSGMyyh{A<~x?s87Tc2?X}?nE6o z$&%w_e^fMvq-sj|33}s`DZOZ3cu1ZQb~3s-8i$q}9=ik8n*?ye_aaEDTgp&byX2u8 zYkCumWDx$REs;xjmBE>+A)~BG=;Ac(Ti11@P=w_Sy30so3VfnMX-PjDd{R3hXm-%( zdm;Z&9z+h-&)tD<%40j4fl_Mc_M(5p3&ud?a1$ElFwdt-G(fz_I`Sx@#GXYy9WW+( zir-PbC{y{)S1fSuP%V4dGOTkzKc)^IQOMmxQMO^odQ*gn8RCVa&AIkt}(v4!pU brixl(cVhb#yRm(Sz1SLf&QXLHG57v&<4!h5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/RaplaConfiguration.class b/eclipse-build/org/rapla/entities/configuration/RaplaConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..4577940877d0df430acdc513ebb5068a519a45df GIT binary patch literal 4557 zcmbtXTT@%t75=u)IXXg!OR?ot)DZ001SGH;9D_j)!PgoaaB6H)96Rno9N=If5lQ&g zYdW6Jv`N~TK6DySrky@COlSPy-e6pJGUs#Mi`|y|l{P7b2J@}rDkiy|YaW-9a7IRM8&6mBh=a$mhLVm`ZT`D?duaHk) zl!qrbPuVaP8t0vxPCDo0XVVv^=G|=BMp&VB2XorM`kIKsZoShhq{rQ&=j6P*&Q#8& z!IHk6aEm3ny*zwML7h{mqw7-H$(JXb+>&b%y8I{w^U~xSr|EIzSuQW#S#&d8C*dgc z>vhhelbv(Zgq~w)Geu{?y;UgQ*cS4ZXlWvHESvN4UU^W#=;)lF&69;`*Tx=&z5mO5 z1YcALi+^u6ia45M_!9PV>R4c{y<=p9#*;axRLX3c7%vyS{A{Lkq6UmJhI%w8G>mw8 zcWh~4$}L{>mcfM6MI>B@%hOgi(GflH&S_r$z)kcX0g%HK7I2XftjIb8ncb1$S6}LsNe!I$a zUSS$@QeM8bnyg?Q@k-RtK=n}B**yLY+qj@`eTN)94Y_*x2rrjon82I9kdBwxR;HH9 z6w=Y>bo~^8tRQFIjL%Gcc&f2)HFjS?0PT$VDi*i6I zgxuQ-C#n@r#SqKJF1kGIvZQA5|EPV9WLt4QN9&4Kkd&m-W@5*_I8 zOHRhu-RBP`l6P`G(1LpvPm_)u!_X*(DEBjh43Q3qr8GH>d}HWJ1o@6q`w4s@*`B^C{BaSwq4o!pn?shuK>ZqBE*^)}xY z4)I=o+VEw(LQgX4;V4AFAbhpPErtzc<5hk*CzyKqEkT{(Izb)Pm{J6@5l_AL@Cv>6 zkf_7j>mGk~#cNdFCTNR?5sn5n)A}B;B<n?$Zj*^^R_aLK@c)s?U`-iXXTyl1Mo z*-gZM+l084G6sf;_#E?ap1K=BJ5i;0e}qWd_;k>BRYBc{uLU~k!=%3C1uj!NyIn3RnN@a|r8v~{kX?Mb0MQ*?{dc&1`4cJC+WElq&c0AIP z`V|@zmL9Gkzl@mK8%|iP17;CxXC1oY;WNS|gMi-AIOP@FVTS#sM~#i%fVt z68e|48{8pwpVn6Th%l}z64yyKJpz6o2k`-+|A;5UkJ&3epu~Qni8<@TsSq&o=Vxqg_o>g1SnxmRN&gESq<@I^SAy)vx2O-r c=WWzTnn3(UZq};szpVa0;o$5KL7v# literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/RaplaMap.class b/eclipse-build/org/rapla/entities/configuration/RaplaMap.class new file mode 100644 index 0000000000000000000000000000000000000000..b1be02fff267f42f48ef8cbd8c3e235a91a5fa7d GIT binary patch literal 478 zcmaJ;%Sr<=6g{c6(~f;PK3j`RX*ULR+2W??YJ6Zzq04lPL&|h!NHc<;B`yR7KfsR? zZ%T_UR08*La?iQBHy@v`?*LBFa*$)_Bs%0;q>0{CsP?12L*=1UqlwPRZWqhvS4OLMV!PK^271XIZ^$;xWmU(b{UGj zAX2e1XAEoY&WMQps z;;`EpmB6r9MhPxM%~!F!%4QR(hhh>*2G36d5sidaHeZ77AjxzfFO;pQtd@6dyV0iT zNyuRx4n+;COJ6}VVgqIJ70OPLCkxcxP#t^BtG~c|#_khAIqZ{l$pcNAszJx1R-(Cx G4!!^oymUPP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/internal/AbstractClassifiableFilter$1.class b/eclipse-build/org/rapla/entities/configuration/internal/AbstractClassifiableFilter$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b0b76d6a2cfd74b14373d915ec0aef03d3fe22ab GIT binary patch literal 1115 zcmb_bO>fgc5Ph43ICWf-meN4^Xla9#wg?kWh*Ss^sE8Db1gJL-8)xHgWba1n4O0FU z8~}*};>?dijGdHJC_R8`$=;crndh0eZ-4&!_8q`O+;xy+IMgQe4If3^7s^U2MdAlq z4P-br+)Ax{sjM)HNB*;3Vhs;$JK{+q2a@+9aVR5-)|(Cr49z)KpyQENgqZkaD#_)8(DfTCd$1<>! zk(jILR7F9ivZ;bmVY0zRf-O=`o^B$m zR#W+qm7~`|iT0PsYLlPF%X|Bu;qKl03hz^vRH3h%B{M2~gev*#nP0{VR>`9xT)`Uc zF@c=> z;o79RV7jJVm1edH6ko7lbj>!Ft?KmJiaBbonD)G3(@RF6Q~9=>;*{xHM$LLpVk0C^ z{hTpfk4$csM+L-Hf$b&7_I$3LF=}-)&1lGv5ZGG{sZ|yAfSf0AZnhGGYCb^Y6HT!Z zlh%d90&N#8+ww07B=fy90;!TSZ)T80myQnX(Xdb8^cF0)Ltwv-UDz$KvtrriM16VA zbf*K>9Tlf))MgAuf>8)xru-#~OvdAgymY?FY^Q5_PVJGYa!An#4Cdo(Kc8#0$Q_o^ z$c(L4%@wIJPs34xLQEtAiA*^DxKp?1qXk){(WB!K4hw7xk+>AwOCX>WEPl(B!<27S zA6_?B!cb)_PifM!7X^A>$cpmD1XEsKsbw&LlREm)PxUye zjs%Xsh*uK>sVtg)R8P!FSH8ERN~7*uwPKm2YOwZ(HJlST*@RkkmRB6xw0*CrCR*Xd z;)v@SYmH?YoW*%5+&84**}!m1y)&sAD2?%^VVc}xOF8yh21B?g-LZV`#%AH=bsHB9 zDaBV>3g5AVx^K{CcZpjj(CwK~FKn%Qfj1bPm>{$YAuj(6U^}`os$)!6_Wn|3WNNBB zUM`JHmv2mrmn+j_llMm^Cr54zWNp)&_ex7_w`_F9*!Z;i8*R2uYBj?KQr2-5*96+B znSimt`F!uzkW1NK*D;Pa+2v$M6zJb91g($+v<0=5P_%8qlfaeDENog$R5}BxQ{T&$ zzr|q9NN%@ud<6`<#$d_qN4C4(&ET~XlwE&T$5(Ne1kHEqMvYAO=3|P8$r-?X9n-iO zL7z02okymIIf0=VVKtg;$*^t5A6vCN|CZ%1Idz3K>Y5tn1@<)ifvWBbCugvLB@JwM z!6vSnfEx95Sa?9lh9@Tq^u!i^OM%E~!x>ajleN1nkPAsFqa~+Sq*$@My1oMC5g^r0+#Jkn4X=x9!C)TfSju}an1<|^@ZHacEwW6H9sZb>6w)A4oe zAstr*RKEJAj&I@H%H!h z2W4`p`Lb=Bt|D)GsUvJvN&cmwp&beAM;1EYZRe3KfgQZ^7{qHkzdTcMq?1oyk85IBw$PS98$2lz`Gy>91x?SjdiVMHyND%aln)NyZeO~$O3RZe%d{ylf-9lzdz>R}clP}m z*+L(axQn{MO2g`JbI-=^_qIT=#OVkc{$jZS72foG`R?*9YKr+7FqumPKUU1}XCa;Xh)uly9< zL+M<418Xb=MQpnqc~4*+>ggK-KmYu%g#n6V1MereU@8!@K8YvT2?xQ Vn81%YlE6>!Q{LqfZ-{q({tNGS6x#p* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.class b/eclipse-build/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..eff4e442657e76244bfa00ef4f993f71d3ca70b6 GIT binary patch literal 4533 zcmbVOSyLR>75**^Gz=}IfP{=4+j0~~Fi4tMiH-2!O@L%%kQBhkLQb4!xQtqAy2srO zTH?f(6DM90FNy7{_{A@N^h1&grYf#VGTa^SDJmG#hx-M}xpeyl^^@ro0Ur~MTt zoDEjAH_?1%dadeN$SF+Ty|(9;qd0WR@r36@k-O?T%bq^%dc?BOsZiQg)6V8t=u+5! z)!A^0Zcv=pq3d|=Edj8QR~X4q9mPTDRCIAlIJh~dS9PfUve;rP6z?D~dDC~+-15TB zs-DzU;m3~^_C*GCQHK#Jd~teGL7i3DL)N00Cl(!VU3c&ru zzlV1Bt>#kca@N_EgzcD^#aiH$O_(O3Q(9X3rthuJ-rc;Jy)09QmFHfO!)s!G|aBmDM z*!o7SeMx(hD|_Z+r+ke=Z61@Y-%-CwB-NN6tDIEV9c{R=E= zsX5^em#~8wq_Co6LxB_!g+oKbS$9}JQIbfzY~yA8n7Oxb>B5x4LwA-)FnBe!ir7bt z?Q}A9^0Z^BRu=biGM`rIq%wAKWg)4!`)lIORf9#9Cl*cl>}ir#xUY8HT;4?BN%3dI zl!Un}He9SS6gQ+v@Dh8QWKB#R%O+%pio~`<1@)Fjg#+8*r`d8Hw!e~vfCZ;<;pJeh z8u%>nQPJ4xrU#2PiHR$Y>&vyjYQw{t82@S>K4K|*>%8@$CQfTYrK~jxz4kTfEqOOG zrm|@i+y@m>f9$)K~h(7rh23;`| zy1D-}b$(+&J8s+f1zs0ZZZi<2Nhuu7g5OCE!;+-0x$!+(u_(^JZR0KcTC8}xu5V7S z1si<*{FW8EalyRW1NFU@*Fk>XycO8L$=2bWA9eD^IW8%RN0{#I$e{xky3vC?o9Z6)a&<3X zQ*GGCUp66mT1i7SU$#^8WivHjwo>zDJ2qc-Df4AhHea@6e*38NVI1P`BYdX4Ow=B( z>cSSjQyA>t#G{1+xlJ4?Jh+MB!eGZHMhb(Sn>bb&v^G&J40dhevBJ?U{Gc%M4~%YN zY~-KlEqsm9OIs*$S{Tfm_3^@AF}`hU{Lchx$J6{hWgL2(4v*5+lbnsw=qK4&OEha7 zNAMJm@#G0S!_{XwI)!OWVh&Tdgfm#->>28*CdTu`bDYr)x_64M$!LP-+ssHDZ#N^M zB42-^Nf19~hd3ui1$D}K*fn5q49 zda^n>AKSc)OeBF6<#7a=3a5!%!&FJEd8mjv6HL7ywPHtaW2)O@Dsd}$`(`E4w`hV zRrq3)a7SJErf-Go+ED)F#n?>xWxc4qwJ=htrlo*?v5V(4p=M262(9tq{7lfp)^R);dl z40lqiNGd0c;%W58h(lq7iiI7{=4sgT;W6}10Af9xYeg_N%A8CiNr~KP6TOfriNl4; zP<0b&!^c#8bdvp-<@*HlR4VD7Gwikh17|elANVohCBuGapTQgG1F;5%dVmV5HI#8N zfR9TITkZ3b8Y8L1t86wF<{clWf?<86W1jAFBXfOW^zsHUJo|UrVUHS654qCnXr?nu z&1|hA#Sln4RLh$&Y%I8^TqV)#@l?dF-+AxjDnob0Ff7fFCnDO-m*Z$}xdDcutjE** zdPVzAqcPOp>deG~#!d}ro!Og5c>+UYSH-EeQY9~io9F`{cNlh7F!-}=3~&$ksaPW1 zS*q0N&35OU<_wh*W{`4gg~eT(cA0(-)@Nj382+4TGZaJUi* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl$2.class b/eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl$2.class new file mode 100644 index 0000000000000000000000000000000000000000..58d9ea941a77242adbc9a16cab4a47db07e5aa7e GIT binary patch literal 1030 zcmbtTO>Yx15PeQUmhPq`Eun$(RbY|Q2C0SHUxx3H%yX%v+h*8n{)bL~#NYGdgikW;Z0<9Zx_T&EQKGqSF6_U@h>G=iBJQ=S5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl.class b/eclipse-build/org/rapla/entities/configuration/internal/PreferencesImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..57c7011892a27525b761df801bbe122135667f08 GIT binary patch literal 6602 zcmbtY3wsph6@I_Xh6&3ANL+4;7^q6JNmxx$(DecY&|nBkAPCmWWHU(yHapv$4HB)^ z+E#nhs`ZA7^kPLTwq6sFs@N)6ZR@4A7cZ@~w$Ic5;M4Z~X1S|qSt@rA$*#f=-)tv|tA7k{vX&+cp&~x3DsIi*%%M3X@+nhwSYP;^eRs-$=->T9SL) zbbJwuSua8qSQ@c$;=ZPdOUy;lmSn0A-BaNSRFj1=_=dwKN+Du&-6bQtjbu_aUKmE? z=gVbKID?XF(~72J=eBz-$PO1+)EMQ@?Z7I9DJQK`d`u zmt9(I59j-W4U*)`b!2dstW~>?l^`>cB$w|;$x4yHW|Cy(F6f~27?hLD6r6_+4d*k9 z6YuI+gA17Eyt#vgO8OSuEU4^hSWB8jV6F_=hcX47ST4O@sN*867tjU`r^|J~{@p_2 zs+<;S_fzCjAZAIBQ9+VwcJJ2lL2csyb-0G|VL7f*YPvvEByPVG`JATGY z?H;!gAp9x>V?lU$Q^)N+(!%!zCij_Up*?5kImeLE()j&4?v=&~%U!O*k96#oD;jy# zWegFaFJEpay2Fc^3CmZYCqLzJP^l*?hWjbe2|OVE2|T3ZVf>8UO6%*c%$v-_aqO&! zz&3J}%hX^mPs6feI1P4xgEaPY9lyY1Orued6C_8}D1DruQ63uh>=SrO!;=ED4&zzJ zkMWZlj8fd)@ueYzVZH?LjE;SHmVuOPUw6kJWGX9!n3MA!^Qh*Da2hG}y~F*i#o>@r z2+IP$!sc9JN0(94NVuwMUq%{z zMaOSsC+WQ&0(Xq&XwCB{1h0cH9s{zXQSdsNIuiIj-q7&+ICyH4jyLfZvso~Tj>)x( zhEU0D>Y!8po02!pKBs++16{;WbA)wD7hQxLe-m&t}P1fjjO!^jc8JPucRmG z>x9%OQZ0utE%g-UHjkop(;n2i-&;m;>Lv-T%7r$Q;R2@;S{rJxm|-pD`kAhq2G5jo zL!&qir@Jstz!E+e!x`KgM=UAdq#C))OUP#gaW+kzLlDadVkJSWJ_-=0SAgKq&Xu!W zSc2AMeSW}|IIoSV<}oZ|kyfnTgJjD-tQP2MJ%G;UedvmT3+n{#`QLxa$vGC2xUYjL zT0Dc7p^pq8l5SganSqM)c5clHWJsVkT0iYBFLUqgKOt)A`V5 zY*G0-n-9k1ZB?vGDyx2x>usj@P~dH{Du=*jxLld)RHpp8Uvd!D@x4`hY2B;0N284) zgVO?o)09C8m6WcfO%Ail@-k&v_dy;&ZzaynA+vg5Ru6Dqfj(ueKx?ulQ&S|T+0{yz zt&g=xdmhYs_wJ?4|7FbJ2n==ZCa}w#^k%8GIA~xmjMeVPbu>nfj^X-BBZZI=ACZv5rb2YPN@|nh_#BVpWO!FAIsVNU zc1kw*ME@v63yQU8!aoZ!VL{>#;j% z{Z6XeU99`vArDFAp@wzc?M5niJ)(ynMtiuA9(K{g{q(T=6FhM0R59GaJj#=7@qRqO z7#>{96K&5y%x$TEWE78XYLP!l>c?Y{KldQfQvbAjV-#aDMo&jPUOz|#dwB9b#Pi@` z9#oI;KiM92ku-Qdf^06ve*BUMYIssVhv%8cpn{DW9+2w!0$3;aVA;;wQpA!<#15f) z?%vjC@Zu;Al@-@Z^OF>&rzmAlGo7QZYwz&z(@ZOYlqD%;uhRA;4h~BqrR+8QR$*`y z2C~Q%QXj+bDgiu4bI%jN3j}Z=1R%^L|9Gz>fIqkZB#)!Cl*6L}utxz{8dgBIVT0F( zU9B%d+lhLfvl`3wrwR>vKcqok7rsQMzsxQ?Nc}m)PI?8cc!?NZ3t?Uw)N3jJg1-_; zEfvY@!dWa$#fdwey*HN+ao|*-cPY?q6`+qB2f9{)ey=g^EJwg75d0QJNGs@J@s;Xp#2MUWg}3DKWp{_fK4(}DiS5kS8~(C-rTdj$PH gLBB)LAADZWG5nLg5W`3K7q9jF=I|>2u5&-}e^E;S-~a#s literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl$1.class b/eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..facd9c1a037fc2a30600c0b73d5669aee92a000b GIT binary patch literal 1012 zcmbVL-)j>=5dJoaIeV9yq}E33uc{}cjd;cf5hHyG6#{7sRr)5fxooc+F1ulGBlN%0 z2N8V`pZ%l6*)+C6PS76Q?S4D+eKR{V_v7c+ZvdX+p@#y)b8V8y@JY%ep{%r0WKpcu zkxZtBTd7qfl@&(uG&*ozyL{3cPtvgMp~TQWXUBRx(TX&(Xli8|Nn&xUO|&O6D~7!} zWGLHXnT1a%bpM?FKe0Qc@lq;jw;A@E7ZvG`_hIh-n}-agt{#ddFa#A`LfJWB1s3GgNm}oa#)f zWLMZ@J@oK^;aN_`|1il6m7Y?OqFtA;vjg!d0x&8N)TQoeFN#>O%Of?`V9%4TcYd p3UGR5vH|ZFwEQzIAGdLb>_yz2`ETGJttH&YIzrm{WOHnKegWnX5gh;k literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl$2.class b/eclipse-build/org/rapla/entities/configuration/internal/RaplaMapImpl$2.class new file mode 100644 index 0000000000000000000000000000000000000000..c29be1bef841f305904d0892a9cf54664061e208 GIT binary patch literal 985 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/Allocatable.class b/eclipse-build/org/rapla/entities/domain/Allocatable.class new file mode 100644 index 0000000000000000000000000000000000000000..5a32225b91201c16ef4643fe635f8be6d116d2af GIT binary patch literal 1306 zcmb7ETTc@~7(D~X7AOVEMT&q|a95O7yjwz2YK;#okWxv&2Q%yr&EQ_h?gHu0GCY`Q z^auE(jNc5^lDLAt%-Name&+0a|MB@7fF+a-bTQ0Danp|ZfzNFbrZSZxvArnZGPEnc zAGti`yS^~c!!W$hkGSpguxYRF?h7|H(92NDNKjLmS_X0qvl-^PD)%czKf`2(&l(Se zXCTk8kYV*&ArGXRwhn|{^?8!WJ$c$^fnh2mVEs5ewGT5)XV@Du5J}2|1BRZ)_C}2w zcQV{`=MAb_W*DhB&U&@dsH{4*_mz6Rvdv(=%ZmDwPYTa1yS@x%y28+HT3b}N8hJ!? zDZ9bnm2-t z;x=7}sr2oaJQWx2)m%kNUX2C0pW$Qr?=@6RAH}?hJh|6mFzCB3xW`avinKE#v1*yt zdBW=WlCB0raojl|Nt)Kb@k^?b2}LIAQu;Twyk1EqfZ;PQ!J<+Y{r03<^x_f>^kD#l z7(y3HN=x*%l$4SP^T=Tw6XbiDb}Q(i6`1&f$?YO5PJP1k39fa21v|lwk7Vh>Em{kd z8Kmd}?Zz>KIc-r7&^&HKp$SXl9V}?Pi+dUuVQajP2O5{!_^^$S@K~Qe!BdUTR37T? IxvucyCn>>b`v3p{ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/Appointment.class b/eclipse-build/org/rapla/entities/domain/Appointment.class new file mode 100644 index 0000000000000000000000000000000000000000..6e30185fc00e3451d478b76855a8d1a9324e28fc GIT binary patch literal 1869 zcmbVN>rN9v6#fP(El>-Tn?=M6w-%KuUSSa}P!f|Oq$L>ehZ)LH2DiI)cR_grU&rvn zM57PjLmAHu6Iy8lNSgGUbLO1yT;}BL??2yv0hq#k7)=bLu2)KXykhgTZ~_@f;itFV zGM7#|Q>nPp3Cg4oBgD|T#}9bg=1wWSvb86Qq-|kHG$6<-ro%8I3_Vq+1-D$`9^bM> z7;Ov#4IEcKIqIGvw6?LDWf;meFv_cJ*A6SfVrb7UudZ#p&*bx&4Tj{qM)vjPkYi-F zXiG;1a}3SN)H+36aJMP3Zid0LVn)zQQF*mBZHS{kifc$Pw9FdHv1G2MZkzkQRih{b zo^(o9YP}T<*Q01hRGn@_aTPI!j+}JFoBi^Z@YasI5zo0rZm)AsD%mI_B@q+??gb3- zWa^lHKah5Mkq4?ZEp(rCwi#OKu*^T}bBxY;;S2A82hw#IQsmm8UemK0Q(}y2=ZYX# zr^GORj;k>w$8KLmHF8!zG36CXZmPz|rC)zXZ?Z`iW%q!FVc2xDTHWbt6;F4amC{Ct z!LxbAXP8KyQEAPvTPpMgVv^NJUCh&&Z7Q;GnFqyPK{>>!g-g=&gGITsBRt_0slL}2 zP3$yzgIDjO06G3Ie@yyscU@a7@2f@?7kee0tu?2k&Ri~%rRQ(=a?bymrViCsaQD5USdwbR zb=HjBq}mn?Uyd7Fvtq4A%{X4KwHu|nS}&LuHLek}*}oR;b=r&cyMi!U(S(FrQuNtK zs1-%ng9tj%NmgAX%^^hpK;I9HY0OYfmdzcWULjA literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/AppointmentBlock.class b/eclipse-build/org/rapla/entities/domain/AppointmentBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..bd454b5e551d5923ea0ec17099d676199330b5b0 GIT binary patch literal 1517 zcmb7DO-~b16g{tBLrV*YrIw;13epZAgNVimVvuM8DY^iwqA?C-QU=@#T378#Rd@8A zvLO(zxw_*Dh;@OWVeJa^nzj3HibmBnZHxA8TJ&ZbfysPVd=>>FOQvPI%K|gm_4O`M z+qr^3Xw}{|VhCa|jy{|vvuv&qg}_i83VP)2TpUsVHXKJB327UNBZgjq{=8`!4-YFl zhO^~YIhePLdbyxGrqmn8kh^Er1g5)V=Jl6F^^^>E)9)Esv1<_;?#sqeWwZLIwv0s} zm(6vTfx)9iZ#2f1Eudw)gZadAYrV)}N`Wdc(ba(BxQc1EG@Ea3hQBY1xiv0^?d}t6w*R>eiJSUNp0ZQ#hTe#nRl$ zrT-~>c@bkI733F2h`$XNgeT;Bc#IvQz8|FHTM$xpllAQMX`V9rYt_Z=EZ1TJ?3r`o}{JAz}Z#BYQ~ z`7d+ks4eqqNANhyKMhWQZUg5#g1JBq@G<)tAZBBVHOso+eLy&HbfUdSI3%?c-%|3e zMdKSi)sF}VkNBLXTlzb)0mur1UhihT>2GoRk2$achxLT^r^wnk0sbg) zw$_SR#f0q3yxDm(JF~BE&o2NDvFoA0u&>P^Fg%TUAe5C>iY(~sgi95irm2?7Cd9Y2 zNw^ipLy=)=$ZvTNb2SJqdqWXfhT_#_c+OA@zg!(_q#86CO2<(wm9!@eGmX72Z9da| z;bR^P9x4pgub8u#XITY{s4{p1VcR?r46BX3pSoo*ELSj#IZ_Cv674+c33JVRF@@AZ z9r3u!jdb>ytde5qMjPA7lZ2alhGrxD*YTTE3Sd|vy{<6#-!*-gUkR>6D!6q` z`Z!*0WgLVuv(wWZ{ZH%HQqS)qky@$Mq&mN&a}$Y{bSu^(8bcN%hvyeS6_@t zUwpyngV9(2CN+MuTfqP(#H5|sIdkUB_dDn8e*g9P3xH*88qfq*UGLcPWW6dayXHH- zW1m@v?x}QY)>gglIyL{4_FZ3k{wRh6}4>t*T0F8c=B1^NPO z!*{CImA^pyW2ff$PXr?A%)WrW?H<}uM9^izK!-q2!KvBB#%am+_GGDQ3nU6|SyuO@ z=cskdsQVS?Okl0>KdLtcjB>!h@Tqj+y8g|ZmduWUq(JNn>Y4N@T%g}X90LNgtvCU( z+PpQ2LLD?Qgkh$_e%+8&QuN;A`e?Deh~{YsOg`^(KR)86o`^hV~A+-lUdDpmjMIlZ5J{vVII=05cpH*_WzcOF}jow7( zPfQpX;jb_DR3(uwPnZ|H=UJV8`7jM;PG#W&D@_Gm%!Pb^XfKx`=U-sctP|$eh%qc2^UvIJx!1R9-D6=(1966YL~ccaoER_}RwLXERp|^O$&kGO-uDMX z9`LR!45S#ABeIY9K=c@5txml{_|=FIU7&R`6lI1~z0x?W9emhpH1;|S>+hoyE)7db z=8o+;o+Eb|W(&nORonM_)KZRNr-pU;XjGmu zG-cp;{c^FL0K=^mt|G0zZl^Gh1%~;mi=I^a?<5+{GfBMMdETOmG;^puAT1{oB+w34$#z3#9t${3wPFNTv`AS<5Y z6riyU`j|lFrbj-Xkg#mulXPNKJp$_;VSSYOWYZr9ws_+xe&;6Vzom9Yw@y4EhAS|Tz#L|fR~w@LD6jTIG7S^gkfFFm z(sn6UJxf23?POSH=^K_$u`>G;>=dhC$uomBdZ!5$bSG)NMvk!VXpj2i?qVHE-V5ah uHnn~q1uctspyk6*KEh+IZ^6>?37%@X9mbbJy@Y4lUcz&##qdH`eEAn4JO3B} literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/Permission.class b/eclipse-build/org/rapla/entities/domain/Permission.class new file mode 100644 index 0000000000000000000000000000000000000000..acde9307f350575a96176818270bd0453c61228e GIT binary patch literal 1972 zcma)6U3c3=5S?utTTPq~oYFS5(6qF~23$i+TS~%*u;o-#wv6N$)BvhtuZ?OauqS?Eey)%1vX8!v7_dki~7WH#{qZ^j} zP_eM7%^b}raJ|76qou0vg^}Y$9cMV^5}jqVI1YJG9t8gQAY^oILS-mBs@YZy#Sml? zE?(ovdi)2K#>|wk9=)m{Hr7Gjd9ahYdGaRa3)Nl^)G^;Je zXsD*C>P=fV3>iaxILX}ddgJvaJ{(Oj|Afh<+O$8+@ViF%oofkf{^$R77x z-jnDie1+T+eE=FH1qE6!=!DBSL(Ur)%`KSbdqN>vV(BispK} zIUeovpzZ7rIa1b;{;=Z&uE5D=F67ZJiX3HIJWWvX4>1_!22;mN#nLN1ArlC9M8h!J zIF+#q2?u`gG-j2+ns{G1o%Yxr4GQXp>&d-C2Q7m#ET+m(^U=g2(Irr(y$ax+b$jfV zP&q#zQ^ki;Slq&loB#u48YM2v8j?RwJaISt9iM+4_%ecM@Fn2ODf}id+7!90izbaNIw`j3BiJ?M_zrC% zViD*U%HT`XlwMHDnk&3#TA4!GwB`#H)5;b;G_73Wws}N%q~{A(CZk*P^SYJI>Q*kN zAJM%(=)U!g?meSBztPqaeLnYs*b&LUg7FMh@jVZ92=O)$@h+99PLHX98`NSCF_9JQ z3A;lNVyn_uv3*EdY#Y>!txm1jew|<=!6voi{axzB_L~HMn_!C`#ru1S{f@qm@egFj S_AxoJ-KQ>cV$_Q>g}1w*#(+uS|ifmD7ROobwCf4s`S*8*B#{T@ zl9V~H4YE~>8CHlkVxwpt2G#5HR*NIkl+28hd1i}FBz-SbhcUnWD>rk*!{Mwc86FDp z)jg*_%dorAWp-)0P@QY%vOk5o0*4<-$3(sq51x;j4?#?TEQ&h#h$B(TMnRLe4RabwohToa5| zaGdVi1PW>+$ttK-)JQw1k(Q4zPdhn{6y>MMs}ZWF&_$+)OI>7pnD1hths#|o_HgAJ zeH_D8dgrMykfS2=L|s6ZB8&9CrZd#Ny^b5CfZ--?X}pa)8kcZa<2~HhxE$vd<2(}& zbbJM?8Xsa!qZRWX#rQbJ^%$ST_%yEnEXL<_Jf-6WUTS=W*BVRMAgv5jw;#%8Xdo>xrdM6x zuFJr6+U^g|c3U#Is~;OO=(@glXJtu1+!Dww`d&A5ys+W4doo2a>L&z7!tXoWR;Ud~ z>R~|YIe|=dZE0(1VY4b=)&93;ZZy`mHdj`wb%D|4^^IzS{|$kZqUs9dBd%WPw(V7? zqlo64ZP#io$|^Mk>;4ZMB?GW+5^$Y=1rz_9_Cw-vg3va13<5L5l zuv&uvzBKU}E;BQoUMO&7*k{xZb3@MKmC~C_s?@tK)1Rw{PV-yhYPklO|Dg_xiZ75* zp_SrWl)ZF6i!X59#FtoLVdQr`r%jAQh3U(?&u;L;T^Uf$1J`RU`$3=h`mn*c6-#d+ zLuGN<#0}hJ%624EHa(2kSMXm6N_TbVvmZmhFK4VcoXc2`>cCYK^SFBWB_Ef6gJtpB$F;{?jmVGalw2hF3}sY?2n(+W3;0SAX+jnxO_hsS zib-z7BzbzHwQ2${AZpgnWQek-ilsjKId-JVT4X1W6i_ z0F~B@mo6XGZB+@hv^)Lyqe$Nre7o2x^@4%=QMrphyItFISZ fHzt|os1#9$Vj9renGL=Em-0*$7fd3iNBQ?U_~S z+m>U0Z|ypg!EOColYZOw+()a60^)%{cENMof#n7@%jw7jrKpb(=nF_AkguGQR0E&% z(*nuurKN|Jxy1OcZ;m@TTly?Hog|8#s?#8aK(h zXW7o7a(-aof^rU1-GS!@&Coq+;G%LDiF_z6KlGLj$4tAx#6}C8E@fwy> zv)FdFTst#}!&K@96we(42C~Y!Yv674r|_Y`McrUs^NQ7OvhEBfVZMbae44^19MNe2 ze>5kM~bx~uZYQ+(5<=G(N{@@zG*8c&F;<)-j?&sv2O7l^6QTZJ=E zySS6VXIM0_gk?5Qe$%lWBJ_;qMBEN1;RQ|UQ_R=4ySME5C$zKO)t2V106B z^~ojWnNfSjQ)OSm01@8dn?+ppx$_*Np1*vI!DqOp?Hk&DU)w|49?^C|+ohkG6vHik z4^S3xl`^j3GOl9?H!x1{+d4u;@k&N?Kaeg)|8VITW2N$M82<$mFOhwY$@(!qdWH$U zmrK9n<2bezMO;%1B1wA)eHdolBdlkX^%m(VX_|o$6tlWg!t0(0%rPqm@ehMzDTow% z&c8G@q)5*;6P2EP`6UwZr=?#pUgmRzg{Sm}5!K{SR zdvuyQ$ h#)XbZCU`1^X{GQ8H3c2k8;ZQwB{Kb5FmQo6|iWCv=*n$%8w*p#Axy;mpZKsMpFiX4CFlo|BQXGDk!-F$A z`UCt?j%PzKsborh$=S2#?74j3=IpQE-+lskfQ=CP7;YJ6LosHS`b$7{>Pb0arAxH{1UoKYu0E(f>tx7IMOFbta> zn-NUoS`^oDgJE#d4LO@Cc>FquXM7uF+f?;NCS4r@-I*xH5tpmmQC!3%!)QU(MX}x7 z6=p@^%n&aaHLg{;>9FQ*#(2G+ZM6(lx0`g^80J!4y7zffVuH^UP2)iLwkdH#*uD)* zhD>*Z)aOi)#w=meHK*ok@|rW0x)!8q)RZk7%=DT=79OJ_JF>j(HOqgr68{H@Rl_8B z_EfzS@vW|@J#I4T9+{!`B&!}YXR+#ecChMgyR3Q}J+SII6RSxd-ojrR1?mpHzyGcb zcjSwH;+6}5px?avrS_dne>kfipL36N$e0o8e@mDajUa~TF&IYMtO-&RbmPlHqv-T#T2GPX5^2jApf51- z9n;%!7N7Zwt4Fxm{{!p@vtP*4hZKEd6dAON;T=VsMcT2**K7{+kn)Zz?_$Bx72I>= zeR?9L{h=!#;jyDX!Ba;*bLDfqaP$lo9l1oc$#YA1>Bv{EJ?qNX$Wad~REPA+WA#KM Jx#m>2{s#+aJW>Dv literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/ReservationHelper.class b/eclipse-build/org/rapla/entities/domain/ReservationHelper.class new file mode 100644 index 0000000000000000000000000000000000000000..0b2a9eaf9479d780623f87f8c0cb6492e218ffe8 GIT binary patch literal 3101 zcmb7G-%}G;6#j15WJ$6X1jI%J6{Q9O#$VM+to0WtG@wOF1+8@n3$BDD-7HpH`%CTb z*1mLna5~fJI8&x?_C+T;+b2?|kPw=k8zs z-FpCFJHA)p6NqK4sko)*(t6y;*rsh7`S?V3MmIC@AtP^C7j)aqW{w)^oMEX@1ZvOg z7xZ{q&rHRSjh{DCwm@L7nKA8s0#(uW5dq~;cESju3PBBi1O#f5X2uwtof$W*VSPMp z2-GFBDLp-+Tc#WrCl&jgnHT6vJ_n?PK;w))Z44PXgGe(|y;V4G>^D;aOcC`hi?7Yi8^j&Q~%kojQCeXC(UCN5WW%dKGm7ZBGxv<6J`nRtePS z4ZGy4CnGr_ekD5QdR(pHMMMO&DUX@J=4g9`5K8_MVKkvx#ae-lPX|>p*U*A>0xBWN zs02E_G%hEqw9R3_g}XsRD>e#L6YdFHx2TXhLUnXAYn$o#Vcj-}stub}yd`%2Wf9*7`@E)|^u>&pn12k6>r*dike5JgXB zLK3=F!!~T^6nWwlbNDy}%ApB6HN1>n0zn$OH6SxftqAyMqz(mIJZXHK0ZKfqm-WcJ zd(4-^^=OOxR#=N=;ij?@DN8dc5Gw6uO^QASP@15+D?lhYB7i`ySc|O{HWbrAxXfs3 zdO*(=8$xi>%uMu}R-OuK_0pR(^LFA1iaLTm6-NbLC~HlcYUs!7)T3z|mTqS)_KYQZ z>?_Vw5d%1;VvvF@dstl6a2#(icNya%@iZ)Y@N~k2iW3zp-_udU7{Z$xM(`HVu~KiBpt9U{gUK5gh>Qt8$7RJ8Wgvdve=o8 zgXwH)nvw1C=Fw>c%PZG2K9o(TdBgD7glsJtncgh9FP~esQ1LE#dwL;zICHRskV9T} zDqWH=E3c{xZg4zl02eh}!uw?9oSq+aGEP=Vat&M1;;ks-<%Q@0>H+oJg6UMXrjs;u%vuVxY zjoTWR-rl?=iUoW4i3ja{9`E~DL|4e*iR`SEGI~w(7}oI0tIaHq1zwvKSZQixrK&^67d(%Ay?u)%pn|6nhV(Bg9K3J0BA)u z-)neGE&o?yHR^Z?))Q|7_M;I;dCg03`&?J@s_bTnG=%*X6 zakoNGn{WUJ$-^P8Yw*ouzltUmF_i%xMvohyZzXLd9sh`AM*+P819P~~*pdRjW2k^( zfx)U>${c>`TBU4vg6;OZuabyB>`w$E{^T4kNBprnIC&F+IpiXNhp3ALBK|u#Q^0r? zZWgUZ?qhQFF3xqU(g(Lh)B;Qe@-ahy!8x=?g2m%=-PMumJFw{Y%nv`J_C7{Oor$}! zlhW!vftw4Dt|?-b()Hlyg|o!%OdX8fW=L*eXGkotmNYdp@D@_Bj?HX6<+1^tEco5n zNE$bhzBUrJnU_P91>XUkt5ev@zOW4+@dNn=cHkCv;x^y!asMCm^*49Q6rHALQiu<5 znNJ_*Kja=>l6Z)Z@d;;|@GCyW6{e^Kzu+oQQ|SLXuF=j<3|H|P(-z=q{rDVTP!uEF))t?72k?^taHXq;d=i9Lkp=m;u^?RcS&X6 Xt`(r{R_q>2n=-u)>c-qw!armVz?9vO!fs zE6%oCv~JpRJ_r8)D>W(y0vFkT0X{)KkW3^S1yQbDOaZ)4$J6M>8NSJ#A4JO;?ih|f^fRT9{nbdl$A}=$?Bwr=Jw~UI{0*_x z4hCu|-w;-e6fH?w9@LUN7<`OiphmCZ0uP3#RU^HNxY4I_-9d_{O6@Jv7)@%;_yxT( zJX_;s0l(x4=zQ-d;ZE zMK}b35Ba7rdI}#gKEP)T(_B^LcpgTuC(`~3F%84~Md-?@Z!qx>cWrc96wAq{xGGQx zOsP*WoQ|p!)4|jq=;;eS#WewHTKSMNQT+^&Biy2Jf2CJ5`&DP5}z_*B-^kHk!V-cV5znwly20xx(;DVpLQ`HM!bJSyHZVV73YG5Jy4ZSBYQ2Nc zYEs%l(${fc)csvuPxVm8LBC_Csbh|tltX^oB6TWuqxt+=L$FDZfqgbgUY!00oBD5i&99*l5Drc;cjrB>}lJS-dB#6NBzdWhlA> zX&ZMbZSM&EuX)>q-<4Xr2MkY|X9>_7@i+XC;%`pv&3%SK#|*>*7|IdOp%@~M#Rvh; zGt`@>fhs+z#oi?Ci|mze4a0Je+NAb*CcQp07JSJJ_s_t$(V~*e4X%xTo0^HGzSZWj zVOSapce2;b8FR(;Fn-n_iNv)x=fMM9`fHk}&f~erQfaL;+OI)~I#wfG!BvJu%Kt*V z7MakAplVl|b2BmIO@HJYH66rpW(?s=GszP1So&7hPVC$r4`8S~(up!w>fux24$L6H z2E)$(uM$Jl)mmg7#jO<I4STiYKHZr%Qb=>7Ck zg}&kRG9%!3R7qc%>SZipnKT070%~MqxJbUkfV*`16s7I2sDH%ecO>WFqZP>m{5Te= g^e0jY*KnQudEA)ZU&Bp03s}c08YG3}^Jsd00SBE7;Q#;t literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/internal/AllocatableImpl.class b/eclipse-build/org/rapla/entities/domain/internal/AllocatableImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1345708a4ef00a9be5d625c075a4b08aec4c6d75 GIT binary patch literal 8840 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/internal/PeriodImpl.class b/eclipse-build/org/rapla/entities/domain/internal/PeriodImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e929387843ed60efcd62cb7d655c5e310aeff336 GIT binary patch literal 4316 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/domain/internal/RepeatingImpl.class b/eclipse-build/org/rapla/entities/domain/internal/RepeatingImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a981bfc2578fc4f46d68279674855475870ac393 GIT binary patch literal 8455 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/Attribute.class b/eclipse-build/org/rapla/entities/dynamictype/Attribute.class new file mode 100644 index 0000000000000000000000000000000000000000..a700a35d68e0ac3082f99699e672135e27ba2a7f GIT binary patch literal 1465 zcmb7E>rN9v7(D}(Eu|D%0Ywq7Kr2eYyB5(}Ffmjxr8WV6m}xuKAll8U|7GezJ2mF}lZSJ)4+w}v{P!@(5W+QS`bjpAeXPArNylvY`mMK}A zx5O4d6io|>=yXNLaTQm*ZVQH3b@$x{@yZc7P2DPWUSJq2R;!gauijTTJ`^jJ;x5DD zepF1PUW$*eHf-rgwZ<@*&DE%I$!(Gm=NV@HR634HhG8B!mp}#=lDLRzhN0DN!uf3Z z%*&F^eZLU;utTOhtwOFg42H`|j3B9>t|T#v6bUO!M{KnZ>%yycEXkDJ2DfY6llr~; z(P{~$tzcNr=KfiD*F4J)f>*Nt7pt8bqUcR=!Y~=u*^@;C>dg=)sI@aEx(tS7Q+(t! zA2n{bNkBiVGgq`i$%gA33ol^xnc5|Vv-jdg93h&1=@ZQ!CGYDo2-{<@q)+8#lOZAf z?IR^!hudZr=;sJ2Jo^^Q?rGVhq^jgPzVf(q6hmJ_f%=f#UPGC_Kr;`tXQI3dMR&%A zs!}WAstXZup|C(9^_%W1OY7llH*)(Sc5g*e#9i;444t7``uk9Y_qBqdPG5 z4Vm2x%S?R1)G00veg`|n%xC&DfLXeyC?n`8g-uLi23O4=edt}ob!fbSn+9)T&fq*2 z3}%rtcpHlb@8GV%r7q^NY~EMs(A9bF2*1!a$K9K}D|tm*AmC3(RD3Y{v1UM@!inQZiaHI*?oQzzguAjGtrC znRwFVNuR#o+xFx0?HvGma9x4|fm<2R^_Z?AsxzUu;%u#lJ3*H`P`ee=4W(i}OB6GN zkcuiU#kvHC1nLXAp?XBcTz6*+7AOMM2lK@@2iC}+Smu;K)Bbflj1luYl=_&Us8ACc zB}{`dfierZ>TWpO5@@6u&yQw*WDfi%cj{?yf~VN)3TLpe8_VsQKRv ze#}5d$x@(Pn;7=k^oNG!q|G#F;?O1KA{*M?3&sGuTdrf+nbyX$G{kavYZ_&8buT+^ zCS4LJ37KtHJekA+yXO%j(E0E2Zoc27NPxfrenSyDaD*#nAQeDEuH^U_xtilsUK%$o!~z1oP@tHX+J#aq(4eF(grtSKU@7O(aecQDjI&FV@%Qj2C-*sAj-)`_Jfgyz>53KJjvtzj%X07$WZu<$u z6~=Vb@yxp2b*zr_z18a2T-?)-O}pE3JokQiQ9<2RNH2J9&$nE^X?6N`jC$m!6o!OU zAyYXZsZ)TvF{co(Ha!-(e2Xt~-T_F}1VOCd2|t5t55stU;k25#4uR~2Hy z+fx`F5chqjW8Sm2xHnmBcO2L8KO#&v*Cfn>w{9nKih_DtS_%qp8+ZrrGE@xK9?QO- zLasT?rDqI`U^I!d1aw?qLgx(}k z?I~QNJv@KY?o!b=j=R3(b@#aE!#M^<%^gmO)bdjUpJADW+pt-<3t`Yb5&u=Dr0?ws z8Ow$X87L8BHVrI+XC{220!(^)lT8&nYj2mOBwrZ#96S)Iy4UZv?IlM}aptA3z?AeH z;{=cLih*YV3EmZkd59xO@uHPD9~P(Uk@nUjEv-j-SdVlo$CMb3qo5qe2_n74r$@w> z-;HNbtC^F#IQ<0g>G`;xpVRXRJ%3-%b9!FT^AGgg{Fwj|T;lx{;=GSj+F8P%!+HKM zVgf~+=GRbG$;DF~(EmVsiB05paXDXjiYvch_65?W@?(_15nKC%n7e+rLaJRQK)~oIFf)$uowIyO7j9eE8Hl0GKCk2 zMIYyX#gziD9o%`mPd=hcHcj%&%yuS3nAs=Hpdv(?kPVDe#Vr zC)7_23~CtHFRyA`W3Z5Ql~ya%(coPgXL1yfm}q=;b1}3z7Kl=E41>)FX+DSgQD<79 zh8^60HO-s!ONr{||2NGQVoF_^rhM3F?0{sNqbN*@!X2y$bU4GMkjUh|$S?J(ul@yq Cj&B

!AiqG5QhJ0t8HVoMtjgVNKqQ>RS{yaPzVaG6vTsU(lu;Jlag$OK9+bB^Z|S* zaW>kM7rU@Kv$MOi-#_#D_4Wavk4_yG!bz6LZY~yyaAm5MR1*N@(4 zmxQX*oe*k%HkC~fc3RlNHlZD;RNgG-q0H|L5C0rwkw_*YFZq6hb}aQ8I}%!DDdEiN z{uk%x2?N>1-#mS1!!$;SHO`iKBnQeM+iNtVpl6E7%2+b@gm7$xvR6d|b)JMK?@rm8 n(Wt(IUSYkkUqOpki!E@(cRScEqozfBXrpWuY>si2%9F!yBm9PX literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/Classification.class b/eclipse-build/org/rapla/entities/dynamictype/Classification.class new file mode 100644 index 0000000000000000000000000000000000000000..f075d2927016a621ab7d98fffb8c9ef41d7c9c66 GIT binary patch literal 902 zcmb7DO;5r=6r4q|h@dE__;uCxAWgiIXb8p=Q4s<0&s&110{lMKXC1U&IGlYC%NP-v?p_qPPrrJGiLV%4MYCM z9V)r+8Q3IfyweYA3+lP{)A*e^(!dr$yI{~GowA963PCgL=?mXubSxNw;WGK6SO_|% zH7FR6S8|`IitD>cYdoId(j4gFk>tW2_zo4UYbBqw#-R+j=c<;vV(UruHjX3L019uy3P^IP^QHX{=*c;~p9s_i>P7Q)3HHu z-vs>u{wVR>q+=Z@g$3??a!<~==Q&T#`Tgg|F95r6EL0d?q-yLcejIaGBwA`IGIw;E z@QIA{>9KJAm}i;%BqOe6nsj8Wg|bj(xOT)(xEu3i>>dn{M5HZTVOTr2`f-{FK8yv! zrXPB}UeF1AuOA%jcY?6L*Zt^qyWV?-mxJ&U9NG-E*HJ7JsoyXx*v=tC)lWyF4u+*B zEYuiQLYavDd@>ZOUou$@(}>51TuF1D8m+O=eJYk=$9CqCc~^>K{E35=3Ej<2jnC{L zJTJbdl}yI%!C=N#%G5SY-;(p3qCHJl40A31dx^zIqcXQ+&!m}?dWoX;zT`a4%Gm9H z#LnC{L%L3p!8EF-sOX;jN`;g50YlRm0%{JfQ^l}BLKbS|TE^~~odjD}Vv?Q+FOE(6 zjG<8)N-|YDF!ERvuA|T9>#jXdr;82Rc0MpHMyB-`*3U@HbgB7gI`x#|rwp%b=d#V$ z=%u-e1PufwYF#8zPRWj`pGJZdqP0k?WxA4PZ<+Qw8f3Xjr{{#`sV)2j`;O)}dasZV z$fH7gLQy_e3TrWVxDJD>SexQ{fj6*G;7!~rur{aJRsFbgzlu!uSf*D9xnPqbRS;4Mf`Uz|aWh%2+}vI6&I-O-iabCbN*onp zA!0LA%r|q+nZNzdFMtX932Fu}dCY92!jt77P8^r^a~J5_rLrs7PCb>S`*JCX%fq|# z!f{b~PS7wIY-mf?Q^@Rmz2Q_0dKt@`NObE;*x+e2p50OSr(e(8^MWHu9!rDaX#6p| zXe{+?$P{a<$clW$*UZ_6GM!~!#gx^t+IYMbx?#gBq@@hTw0s2tlHkZ=V z%>4NH4d2i0>l?r;MiE+sne&D6d@fmOD@Kg2)SAtE#`#BM#olmTwZh^4*_}S2 qh4VFGuyGfk>o-&CAo=(H<=5CF5Za*uVTvw#VMgIL#BQ4zI-q$xFNENFlof{87f)qrf4jrQU~|o!yydW}lszpTEBT0PqMeA_y_eJ8sQz`GLg^VJoSmXc*O& z&Fj)stpj1KAFp?49YL63WS<{$!{T<$cwN~Sri!4CAsK*@*Kn-}q6{+u$6Gq)3B&-y zY=F&1(^9fXv6{RlHhEoCBZvjVWo_G0T=9w}7{WW{H+ixv24H$|^>s1~qwD3(>_#D{ z&EIFYwz6f0g?B+-f1!jhqN}DQZK>86dQ#~U1`d{Irm}D6A;SOL7$r!F- zilJ|{4LO%8o)Mn2c%zZ=ZEP!7+OIXJZ^24a4HhBbf6CmD9)^c)_qR!?=E&gGpo z|M6XE`~6GZ_+LI0-FuHW{x{FJ^g6DnJBPxDkPx5DJ*xJzJ$jAaRH5Kqt07e05_Rg* zSE9u*9z?UgKD~zDZY-6)STR)kw)p7PliZaiSJJT=mdG@qWPLSioOhwe|Im@$KU}&G zF?k`?m(o(gWmxGp;bTWidtlpXx~3qV#>I$l$Svx2qlre{j4*l;K|cl&LQ*#u&CR54 zEs}9WF^UA)T_J6aZ1p$s4P)g5OH6#h)gw&zdRm$p`KI1uS~Hfrp-4qKU5kALB_|E_?DRRwxF;GcVHf E-)Jqv=l}o! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/DynamicTypeAnnotations.class b/eclipse-build/org/rapla/entities/dynamictype/DynamicTypeAnnotations.class new file mode 100644 index 0000000000000000000000000000000000000000..17a20e9297a2bef54b070ba4dcefb31676cdb69d GIT binary patch literal 565 zcmZvZ&rZTX5XNUwp@Im4ib_m;0c>L8$y2RM(g>8ag@jYH)P)qwmTVUiUd@9K;6oXw z5VaC7oB2)V`{vJne7?N{z#TLTkRxy(%c(BeB4RohDpVm)^p~|@^Dt2B1=pXpv4^oC zM68$!W04eKpFnlSR!onWnCkX;#sfv5@=Qm5&*)OWZ984VBT(!7R=G-sV){U!Y@&x^ zLJe88x%iLIIbnO&bEut)@>M7suHxzaWrbaGAsc*LOE<+F^vPn*SgD zHoat?0D(RHz&u>S0lowZNIB4uiy1BV5SE109Hh literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/internal/AttributeImpl$IntStrategy.class b/eclipse-build/org/rapla/entities/dynamictype/internal/AttributeImpl$IntStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..929ea087949bdb036a41494f9a37826cedb2565b GIT binary patch literal 1466 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl$1.class b/eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a831ee382593b137d894c4fa35823b4ad55cc4a2 GIT binary patch literal 1097 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 IgcyGHUvh9P5&!@I literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationImpl.class b/eclipse-build/org/rapla/entities/dynamictype/internal/ClassificationImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..f3fa699c810c52a55ff9c54ce4ee21b5d0e4a2a6 GIT binary patch literal 10163 zcmbta3w%`7ng4&2$=u20hDX9HAdnc5WRf9(2ucuy5HOeoN+JkWWk_ydV3>(B6AB?N+zNR&0HB-Qw=rZhSD9vK6eY?)qxGc5SzH>tnauwYJ;tqqQn%|L5Gt+=Rj4 zZ+*!E%Jey7QCwk+#L^{>JXCP@HD44J-zBk^SjHh-quiw7Q>dhGl z31VYN9VyH}STIQoN~D{+txO`GOdN=BPg({dg61N^vbl67zQbx>ZL8WtRaaXBR;n+a zq6Vg*@qH$>DMR;fwEC@#mFl%Jv?8k)-DG95H13M_)dE>3sAx^6vN?*}6i*IXrF5J6 zM+D)F74KW0O77>lt%3;sWp(E=iPR23WkPspYEH1XP>t+uHp3|IploeW*NF{R18K?SUBK*qxqSex{Nf2yJ_gN8?pw`4p zoGU1)Z`f1@!FeVsQDxwK8l}DI*FSTDVU`{Z%{`9!|p4i~mR*mmSq^z#NJ=?8Jj{>oRM7lSg+!QCU z`Q3RK%{)G?p-b1O($VRyLj7Yw3hw<_qQ(jiKvF zH*xf&j5apXc73lkpeP}0V1*!BBoOwru5@lqdN9@JO;A2wX`%(obVAuenYqPmID-bX zKWpVSddV29->PsGvQoC=BZ+L`CBem9t?1op_3qxBN#xWJ1D6wRMRazj`Ltb!P6g90 z!DK%ce37r{&c%CoGsT<`>*dKZnim@0*R@P6+f6METa{zFO>Dr22)^|8U4rx9&nJbc zv~GuTheK?P=al*e9|5$J%j0Cu7PZ0_6PvJEU~r0!o_QQx#1&`CU?t>g6W8Ecs!1Va zFTYf+aqzuc%R$OI(JiTNL zQ@yq_op*^;-rdx>^70a9Tb})R7_KZyU)b+VD$=F*A2##1WHjzZ&j0SFfj>}Blsvj zZs22ri_X?>qZK!CBmRi4v)yKg?z2UcqNpE6g`s6EsE(w|7GD~i86tE@Qc<<$>_Xvj zCa_?so=9-?}VjL(spGU;?K#`aM^D#t;5!N6^T`XUqk z0PqYo@kQKjQ=IP0GI6@Oko|tx7g4nwx8M#FU&5Dd>evv^?G&^YwcpkI>|AT$E;e`t zw5SFzf_v~41NXXpZO*zr*Q{Qw(VSu8FL591F9V?-w(Bmlm&j_YZ$BeYN68=$d=>W_ zI4r0uxUe_9XCR%jQn_rirb8vZC!J1`1pXR-!+OajdlGxBtsFGEJh;y(`5ruA;%oT2 zU0~f8f~kJ0bsw`4P&0;1Jcx&wLUw|)uKEWnMT)a>3DSZxuXkk`7%ROzNU#Aa-K%=@ zk!`nwPJyW~=SEX7vzTD_HDyh)eLvdKltZt1i|VX7t;a7~=ZfOEr5xMvn2BTfdlt^! z7HL?OZBIVgI9A_qRWV)9Ebj>uC-6AKm9nh9Z0k;L$mo<0*pjpJ5Ikk#AMhO}$8F+rgF3@H$)f;@z#P?N$q3F%)NjNQAju-IH z27bVx6|%mX_}Ai{Rr^6P4YnqnqgZ zUy}(R5xl>`uMPYc!B7YuUzqrf3U)Z*^q3T!vi8}HWgwwK=_58b*vvUI0hVu1v$ zHOXRo5;@y?1HY$N3Tv&*Wa9ff5?LzzCTh#^4o(?3=@PBhvo)Pe@+g9v5)<#LHm4-s zM<)voRr27ZKiZKE2VapG9cOCM0R4PmvC*vtLW9>=rwb~hw5#6EFPOE*&9GPfJrLrPq z4`zE8cN-J6{qV)S5EMqe+#cSi=zw#aZ|!~j5>6-k9BaZvkaIgubzYwC9M<>&2$H8X z?AfK=km-s$9y6pyP*Z?ZSGs$!cc(*a-j2@@o=8kBc;2>q)nFpoXJx{29?7RGUE`Ts z)30{7{LIuaduk$5E9Y~+D09!?zD;UGgDFwr`9&x`piZw8^ZWAE_4H|v93@&P0_lj% zmh)+sG@EG0xe8kgxXqD;g85_b=scgQRBb7fMY7nC3we|<2H%XBXUY<}h*os>Y;5mZ z%VUJI&Ii3}L>6HmtBJIjvP>?aprn=Bq53oK+1r&)D@?gmtq^Wq+0(Xm{l+Z{d#iXr zBdy$#_{9o=o-;h%p5b5GcAmG&mt04mUYSeSFrT;aC#F@MWSGdsc=gC4uwxO0Y@kChIVg#B9^=-040hs}7^2g$R@T(-TmK>B_ zrtDU&MTnJHOVP7 z8#U1xvak4gxLd(n7czxv_o>!>DPkrUt zC9mokBS{Ifd6%K|0I$*LQPf0Bj-W1j40E;|#oQyP=WUd?O-B%mK7v?fb7LM09^~i% zF68HQg!s9V+AX4PEnI&&Wv)U4TCtdKrr46P1Q+oe*TBVC%5_DZ=;c0HAx~Ba zYv?|u$cF@ z9mkbUCEAhWcm*~xxZMnBk5Ax4N8oxrRwhsqkNX_SmpCT69@{utwaq>Y{od-q6%--r zT+b1;P=5!)%K3R*ImGq+MqcI9DeM`^BQj_H5{_0zR;c-v&3SzI1h$P9a;;BDg(qY? zdL1FpFepI^X^-a7cLM#LO_e+I*wqz#3gM zqqZ`RqEri?z#mi9Frj)AZl=ZK3FkkdoD!(`mvZajh`RGO-4V*`BOi9C+dfLcm?6vK4NGBVDC_y+Hk**qpZi3$THHM2RB zn^ni?6?BkdmU0!%#$kLjfYE^Xq*lVFiE>YgavUd-DSUFL>Ihq;zjHAqY#85?(`0?x z2d;<*u5aTzwglPb#Na*^gD3AmX~_dr>K}QEpe6Dqk7xNf_<(|N9^dUejAabOKPfey z>r$g)kK#us@RAAzBX}4y)kEU6k^ff*hw)P-$Td1Cc{T<42gYHe~VJ!E; zxinNAQY`iCAr;5-8>>SM?NX!KcoO4d)y6R14q)?PR8$A6L-rRppvOlAwAq%qG!&(f zqj;~FkkZjYo{tSniN-^NtI|PAs1A`GC?G@)BpATbFdtQi^AdJf{{dm<%$%ewwr7(D z@?vgw2fbch>K|0^8#JLXNY(mGp#*)EkOCec(7r|=50M}rkUs9AOpD z6AVYm2#>M~4dY63z}3w71ipzZ-+zRO`zdD2XPCAJ@h#kmCkVK2E}{1f-e#f&@Pd@`xMvElv+<(L<;h1BKav(+SL4Uhj-P0(+(afK z3S98=&c@0NX?DO{$K6zwOd?*IWR^_kT@V-YI)!(ov|+x6c8C_t(2QqL-}5xIL)6-R z_M&qaqNY_cm6jXSH!Rb57uMXj9OKH~BfEwSh=Fa)1OxBb{{bg4l}T|@m4t(Dp={bI z)RHCbFO_quCR9z}4=Z@g;3UfZOgdF07Lb<6Z(SvegXD|YDxJC8?uH&%4aU2)b#s@evD%CQb zj#K^p3^~Uk`Erz;BFW24nHu0L9;rE6-$|`i&7L3CT6dN#KaAN;Gd-P&O(s3_%;3YJ zn@VJ6Q&FXV!KL3|3H>GM?N?O#4SMxAT4}os&)2GQA;!)w4+a{vssZBFR@E-UT2)i2 zI*qQC2Bo}-0o<1GgnYu zU`%V*+4R2J=`kdWLg*{CY438W_rTx6piWA(ay7P4Pq~<*TnKZuN&$^ypGxYe$WiI{ zoU0r*5Y5ZH#$n;l9v+el@^UeIuqHBP6ANQrma=F{Cu^V$(k^%4ay@W{qAAs=5WEW% zcgFHEfz(>9@9E@~o81wL!$z^vVx8&g2Sj0JU>T+|oVC=iPAU+Sar{NVcpgnwqKA2X zjZDTaW@(!FsdgVWZU#Kd2eiGaw;6E45<@F_MfEmLA5(V{^O>Tm`QRVG94~y|@j_?g zQy6zl+6b1lN2UF^XK|-8g_f*SkQ%S7p{)yVDTtY;oPB;7;4oYkGF z%%F+qV7$yiwbb$#F6Z$lEpzzetGQS#^|**MxK^6@8-#g2(>guVIvvxh`7;z{P=FP? zQMP!djYDw!DV(d>r=+x!S-}mwW8Oz-o@&z;9fNF94b4%xs-sa^k(aAaAj-X;`o_e# z_5|i|Q`o2qhx({%EcA1ld1N8aO)tQ7S%iAIkO5ju3zle&?ef0J(b(kstt=<1$K#); z9Zg;%*c9Bf7Hs*sNqTtbm~7i}RJL~zg1wqtE|_^2${VYsFE9O@8%Zj|>da1msgk6= zM){P&ue> nwO3V}VHJb$G1*INuRqRv-|kB~d_Ht{UmWeQx5$1qUJm>Li0(Qt literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.class b/eclipse-build/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1286d765c22701bf3875dae920105e01cc46ee15 GIT binary patch literal 11854 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/internal/CategoryImpl.class b/eclipse-build/org/rapla/entities/internal/CategoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..b8b183fb737a7d981f70fc8d553af4819c9a7576 GIT binary patch literal 9696 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 TGdV0Ehn9EXa66^0kUM@0^aQk@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/internal/ModifiableTimestamp.class b/eclipse-build/org/rapla/entities/internal/ModifiableTimestamp.class new file mode 100644 index 0000000000000000000000000000000000000000..e4b81e8b755e731c6866da5465f9d8b91eab65ff GIT binary patch literal 288 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 +Contains the default implementations of the persistent entity-objects in rapla. +@see rapla.sourceforge.net + + diff --git a/eclipse-build/org/rapla/entities/package.html b/eclipse-build/org/rapla/entities/package.html new file mode 100644 index 0000000..b498316 --- /dev/null +++ b/eclipse-build/org/rapla/entities/package.html @@ -0,0 +1,6 @@ + +Contains the interfaces of the persistent entity-objects in rapla. +@see rapla.sourceforge.net + + + diff --git a/eclipse-build/org/rapla/entities/storage/CannotExistWithoutTypeException.class b/eclipse-build/org/rapla/entities/storage/CannotExistWithoutTypeException.class new file mode 100644 index 0000000000000000000000000000000000000000..8cf76109536b3aba104f8bf46afc2e98b87ba929 GIT binary patch literal 561 zcmb7AxlRKy5Pg#qLb$>yss&L1MOH$h0YnoHfg%bBp>{SyV%XS`*9q`hR7ezj03U^z z4OfY9F_+)Wym@c$FRuW$v0Oxkuxni>bgCb#kd4<~a}p-rI@RH@ri`)v=s_p`TKldY z_{L+Oj~*iKdu>e-Il|g+|BX{UzPIi!yh!K$;0QAbJFVg-yF~h~P7eumMwqNwlXzu( zQ^f<$3#;@Ip|G!w_6LOQ#%7a{tJyY>VTy3l=;|b}ty_+K5RK>sobn6qKM4jZXg?a& z(~%dd)gUGO4Qz4XxMzplu9lF+Oc^E25*9Y76#6y>#nzT^l|h^jhp1 zsueS#Qn!&@q2w0Hzlu38lnDFvUm^Z0sq$yUDVdmiE;=_y9hXIICDZ z?8!s;LIOW#zK_qhcK}y7$iao?tDxY=La@jUAG%)CE exjSE8YhGm=d@684xcWuDi*pz9JT(4w zFCYvJ=Y2|XznqkdHf58oQ@5F;mWwKJv8kQ2-Vn+^Gs@h~uPUEK_!yd4^V~WnTpac? m-J10YgswCTbfu;v^aU4!dh#C&Gr*|;!Wo9b63*rAVDtm16Ln$$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/storage/EntityResolver.class b/eclipse-build/org/rapla/entities/storage/EntityResolver.class new file mode 100644 index 0000000000000000000000000000000000000000..a6eb8702a7daa8ee25c0f8e050ae4db20f886fff GIT binary patch literal 286 zcmaJ+%L>9U5S-O&d>sUTLOmGpXwU7bDCif&x|T?3Buzzs&4VA{M~RVwpooWMcXnsk znfv2<12D%xph1`zn@OvVxsqHs?KGFNbjGTTW%OEH)?AwW#8x063=it0WUh)#uC@nG z9YNTdKv;~E?{hdw{ybRozWxysdeJ%Mqtm7+1-gXk4_!@O8W)?Y*u4c_yfKwcIo3H7 gMxVZCFHda(q3Lr2ln_}=l=^K%3JCuj6issI20 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/storage/Mementable.class b/eclipse-build/org/rapla/entities/storage/Mementable.class new file mode 100644 index 0000000000000000000000000000000000000000..49d5ed7b941f8cc2016c133e24ccb32970a9111e GIT binary patch literal 378 zcmZXQO>V+45QX3H7yeo(ZI4hX*I5o+ zl!aw|&u`{==J)vh17L!YhZ^C@*jQPer&@955|{8!?VPbXX7$cn(eyfH4-LX_qYql8 zI*ZlEdc%?P&?4NI>LN867j{A;GWi$b(SIwS&qdQX1SvxiqKt}y^Z)aDKZD;f5$~CVfGR}SKG|1(v@-T;U0uevP2 cLtCgLR6|#|hyI0cgm14|JcE;S_+N4N2MD2DM*si- literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/storage/RefEntity.class b/eclipse-build/org/rapla/entities/storage/RefEntity.class new file mode 100644 index 0000000000000000000000000000000000000000..8424746be974748423481f61c676e9a1d092a3ae GIT binary patch literal 940 zcma)5+e*Vg6r8P>*j8)3->)bn2nKw#r7xn;Qc>E{2j8~s8n&cK*=z-W%?CfgAMkI) zlf&di*hojv>U_4W?n3a18A3}?P_Y{mO7w}q#rmLjkN?JMpGyC$A*!`iEX zS%!Rx}vQO%ropH=!c>OhQkE77Vb7|kzu$<;0!Iqt;mQ_!fOjT5Aq01eDO{+R)#GVQS2Qj>1PNG(mAw%+}P=WM4 zh8feUP>Cd?(yUntX*r_R2d(G~lq=-N0tFZeg30JH$?5mw0>FkLm|FjA}>G|M-V-@(mwq8sh)} literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/storage/internal/ReferenceHandler$ReferenceEntry.class b/eclipse-build/org/rapla/entities/storage/internal/ReferenceHandler$ReferenceEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..2c875fbf98eeb5f1d04bc6f702377168072325e8 GIT binary patch literal 1041 zcmbVK$!-%t5PdaX23wQFF)<-wi9?L>27{sq34yqnAcCAAVeo-l+ipyUp(pf=k-`an zgKx+MiACao;Dp3CAw>1W+2{(@8Ix>CBa9e2=-yz(ros6R1Bc$8mQ0725 zg_+?+3$NPmVcEW)OdV-6|g`5P_HXXwHiIg1j(&i># zjYYtOrP}|+t3S1Zmpx2l#tL5Xa1l!^IP7optcI&>V>cFq7n@>dqA%YK$7Ue!DQkV{ zpm!$Cbj=z>@HVuTrX7eVl97uhVeJ^7kMxExeegiioG7#26pswjScHpHyw7o4ImqKJ zJWM4`#_0fsg7qP}1N(5Ak#l@nW30n#zR~=IQsWEeKO~q%p0kVrE#MsQJ-cVt^SHn( z*}_a1-tqq_j+L7~K<|-B?KQuHKBBzY`e{$C2Jb)P(jH?{tP(u3OtA!)mXV_s%u)p< zs$!mM$y?=pzR6q6j0$H!tbPWUc{r#tOAb!%H>O+$JGjCD2Q}1r%`=qHKnwT_=Q92k literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/storage/internal/ReferenceHandler.class b/eclipse-build/org/rapla/entities/storage/internal/ReferenceHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..a51af9cb08c1fc3ce841fd65c448387e12963aeb GIT binary patch literal 6433 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 DkIe{J literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/storage/internal/SimpleIdentifier.class b/eclipse-build/org/rapla/entities/storage/internal/SimpleIdentifier.class new file mode 100644 index 0000000000000000000000000000000000000000..70ef26b450ccd13cb8cf954ff5cb663cdeb5c2c7 GIT binary patch literal 1997 zcmbVNT~ixX7=BK^7Q*t;v{3nOYr!Oxt{+IP!D>s3ga%MTqosB9kQ~Ui%Wm9kI@Sxv zpW>C?^rFrb>gbH)m7Vc7bsV3Q4UhuU3z=c}?BRXi=Xsy^IfsA#{ryh>@8T;15rG-c z-?n^NbEKu*zz%Fxx9WlC%WY-ZZlHWuI#$u%sW~cN(Ggp=@(siU`X0zf(sHD`ZLMxT zQ02ftLf}ku*Y>QU@@?tZ-^)!$F}U9REGfTkd+we5O#!ha&^_R}cPT;H<#8L+p7+*6S-?u;4Y^%0Uzf%zG7;#1KXd3=0hI zmpX=QViaQnrz&boHk@Fsjc_!bDRqKyCQNiEaRC<%y!nd0Ve2L)Fe#7-$3m&onUmz{ zE!eJFY3yt&e?1gGRq)EvDM=25!)R^Bf~s8?m@WJt18@ov+Z7mojn-s3XS;TAP2fWM zB$PGnx^>Pum(P@vh~jM%(-=$An==O96Bs#x+Ch?u_q7@wffuTyCA?yy2fg&b>*2^u zecO-@+wX6=rOn2<%m&@%y=uO2plmyC>r+7I76Vy+xGZZeIXkMdUe#`(Khv4K9^(xY zALA2(X)iC9x!6|0ZSCDIE_CB7w6Esqf(ND$3UdZ<{D!S-^Ot zPs{3-z~o8vkDDTiMXYLZKReQK2*G2~fi*V$wGLc2aR)pn30bQtw<0jz4zizd45Y;~ zr%QaPOWfrE)A{2TZ4aE`aV&ZbzpNH)eNFTqy=g9MIdGmDMfn>?jAzY22iKjvC?ZJm z$y1|m4Ly23f7DX)&D#y9kmB<+zY=_(!2sUiy1;dW@4l%$3}&;>FusTLyBPnKdl9_F zXAjXpf5kA%npcqK*Fczq46^)UHl}ciJg5&Y^QkLW8KX0Yvd>{<1#4!B@lIGiJF<(} zLyQ4-16(DB#a=!nyBr2F*Tgy(Ryn{LVvipXgO!_IM!3GpoDlVg7V5;*3&f*Orv8Fh zzVr;U>}>WY^l>?^oBSE^*puiJ7Kt{SOc5G%XbjgW&pf(tvkiRW0DOYP<_OhA@Q>Jh z1lO3?iAdt5zV@^Nw0Vn5z~WllQH}UFdO~%t&;3GXbHl@$QuUjo9P%925=T{_2rF$I zMq3X!91H|#9YXATM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/tests/AppointmentTest.class b/eclipse-build/org/rapla/entities/tests/AppointmentTest.class new file mode 100644 index 0000000000000000000000000000000000000000..5f1b99ad85bd201adf4d7debf24e147bbcaa5aba GIT binary patch literal 11303 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 W_iKzR*|oPR!}R!tterfv-+ut(A5vie literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/tests/AttributeTest.class b/eclipse-build/org/rapla/entities/tests/AttributeTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1dd4c1fffe68073c6032b831912d5fe9b4477ecb GIT binary patch literal 2712 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/tests/ClassificationTest.class b/eclipse-build/org/rapla/entities/tests/ClassificationTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c0ef9ff379f473bb94b804aea90febd2c89f57c8 GIT binary patch literal 4065 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/tests/PreferencesTest.class b/eclipse-build/org/rapla/entities/tests/PreferencesTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c56f587d7857254b46459c117f47d27e14de57fd GIT binary patch literal 2370 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/tests/Time.class b/eclipse-build/org/rapla/entities/tests/Time.class new file mode 100644 index 0000000000000000000000000000000000000000..9c027f3cf5c222ab539abde821e0e81c3bf01914 GIT binary patch literal 3273 zcmaJ@TT@e47+ohP7ZMH-gLvU4c+CY&MZ^o%Rskg%z#51JZQ+m{AsUjHoY-n_YFmFq zA3J^Ip`B@?Q)fEuYk!H;hyH?2r)%$XNDhPw!_K~aYpwm=!k_>C`Wt`|yzs%Lps!e7 zirVm~PdmFnG#f_3) z)>rd}g8egzWHOPOnwXoNOfBD>y0vW06(|V>Z4<>p#ncOCTF+Mv6;R*oW-^nQU6`NZ z@n0(nx|$HD=N4|M82kGvRWuz=US3o^$L~UccO#e2=PI0B%oTFxB?azqB9i9EL@{dw zpkkkf5cVrj!;!R~76&!#L5qTpWUgS$RyS6S^1St|P_mfO^J%@D6Ki|ZZLSOWL&>-L zaGWm;C#AQlW-cF}(DOzitCzP_B*oQ#{q2_Z9M{tzd)(q29o(NFlaSbOBrbNog zRP(xN%-FB=g%kXV(90^%=$hR)6?k|}I$^z7ElVdAswM;Htr(eNA4LX|_%NoRz2T5aJ~DtaI47cY zUijj=<+^bV7xAtFU&Sy5q=HT-i?E}UX&_$21ia4a6Kdb?o4Od@$SBaVG#kn4k1eAU zO^A+n*G(fbHdi%V!!!$K%Xtl$|H%LbOQFky4os<g&IBW+@*0Hra?!!Ejvr)*__LXWbpEb%N+tM0tAQ`}iSn^?U zTPv{cYPf^DRQpKO^V~gFD@)9Jjgu&V6h0Q=TNXE(&m-v;==8+}aWSJI3kJ!nmrBe* z1;e{pG=bQ%$A#`S4YNXb3ONCGUqSC~x*8@aoW~ANRpGS@*e1tzj<0ZR8|`7Kb-<<_r0T<@JVLsooDCw3V-6XSx{L@S zh>~8&h}klpN&f*obs6d@>Fw)s?3JQ^c0ZHK^1^cZ{k>k)u@bWG$^7P4cbv{@a^Mm z5YJ0Qjc6f?J;1einr7k1;DKEHzO^})s8)C@)E&II-m}7?cV&c(uBw(%L8ywxHvg|sIAlmnu*4#AdZLyXxFnuO3w^idPWZ3l){$GBO? zIBjG21qK01JKu4~0pPC#u!q|srlnJX{?|w?GUFCr;r2^>6k4famCJiItk>|Mk>yt4 zmK~`5b<_#=lFtjB4NJdO&7i*mLINv5b{CM zc=Qy{Y&~~)EK<8G_6L;j;88cDu^OIpwoQZ8R!n}CREhM7obis6`zs%h}L zXL%NP4UfB?YZR>-FOsA{W{4j&>y~Fccgz}pWjlw4@NAhbXXskD$hE=HpUfYaFHNIr z)+f5xbAmM`tO4n~h6O>Y5b1rp=?Ks* z4U6ZA>P^vY0!tc}u|ny~cCBGLylDTm-Us^!yzFK59MOB!D8uOGYoZl}1#mHVGr_yW z&|C1#^5Krz2==ZPsJ1fSw!~%ho}J->SS$^N=0N8Q$RyD<(O)5L10ni=uDMhT-Csxw zL8ZUyTl)yvk1M1Pv{BH|OB&&E6%pd-K@`^luDKwCdV<(qjJ44BnUHNhkq?ObTq2*0 zLDJeaq(~QDcAmZsAMxQ@+Zm*$dpiqct3(r~!1pIe>`8J9Bl*-ZMq`slP~=aLrLUM0 zu2`}KeJ6d4bhyJqx)F_Z7z8vr7>y9mu8_mNxF)CPkC6#=0Ou(*BX=0mLo!)Do@W)E zNd6!f{2oS09>XxLVHy)y!6ddZg@>d)p>wn`i#JH(9dsYP-0mvqSjAi1#vPi%G-_BS wDMXQ*xJ!~m@yl2vNk*1(&OkfGpn}9EJ4M`oBb)3OW=TBL$Ut1{gbv}}ABG+FAOHXW literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/entities/tests/UserTest.class b/eclipse-build/org/rapla/entities/tests/UserTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f81b3971b0ca50ad89f6f0eb1b796fd135ba824e GIT binary patch literal 3028 zcmaJ@S$k7e6kR9OCQUDbK|p1&l&J$HfHJ0_kd{Hxf)r4}={7k@FHP^QH#dbUiX+Z5 z&I*e23<`zl_o>gm`Q%^VNgsXlbM2d?NlWm{mpkmU_de^az0N-O_kVx-1;8qt2_m4d zz;QEC*Bs88QEhvcXX#wj(>X5}-IvquUOoj;r*M76txvlnS?$Tt7Bi<68vSrFYgeHu zQE_Dk+M>lFxmrmbV}O|&vh1y9(o8Y@#;Sm{Z;QsW7Qqx9=pPn9W%v55lQgr8izE)2 zBW5)3S=ng9x6!q})3PmZlfulF;&9fqGtoZJwd_o+b-zMg+)3#$reL}O15*{IB`jO_ z=7;*ZTC=~HShDRmT}$3e#yW4n$|)?Y0(%9%h@#FmhbjoGAt+px)84*eg()opC)|A` zsfRtwv2#JpQJCSc$&VNx5w!CR%*J(LkS+sFSis1P_TrB1=_8)PqL$VwU}=}rA9mcq z=pHF-$txDbLWS9t35u+2$y?c!b{nu5OM_UVF#rGSXP^bMxWqlX65V06VObFE3ezX2 zHPC_O3c(RGo7cP23QMXBvaA1)PI|G{%WD)yGp2{IQekQ|=Q*yK(H&_k%aS$YCIdHP zHH&Nx4{JN6&{3VUT;$7gmR1;(6l)Ev!+M2~=M?=Ft|fPq(Z?DQ!^R*wspkqEwRttL z3AYeb)^P^&EbN4Z)&Nyndjo5^*}zq(Z$MnA?^2joHP_`kA%v|8S4Ukv^67L=D%5LW7j|>oc}{%5bT_-MIm!aIv>uE%a_T(>`mmP) zStn!JR7ed{55`*$gs~rY260EZ*i{?Pz+E^{lw_AqoB1pyIZkVpUrgZMZ6J(BnfYD= z_u+o-RZ3a9%{JG`59i{hr!$UAh&N79_4sxxJFrM`^czTmQmE4@i?gn4soDqQ5#7?+ zMk%)nzmvy;phoA^7%$HzlMNWK1aPCR50~vB43;`nM@H~BLSx8)Exo0ldwr)K71OYR z2f+5o-j^zeQd~9RmdDw!WLD2W9wX8@xF6V7=GP1=uh9=VVqg^4`J&7?c~3gXLk5nD zDdcI>?Q#y=Aw0rTPLxx}Dyh(;1{y?Aj}va(w3m8KzBHu!JZa!59Or_~91G^{b@K!? ztA=6@wC)e$8HMHwrIWVLcz+{IpEodByK^v_0mN! zeQe+psb$dBX;c3 zq&D2=YZG%VK!oqJie8w3Yxzch%%qL5<*?+~^|VRm8zieb$2dXr zciRQbZEG9D{GZW$*AG~95v>;xjjR~Msxho7U_$`EVexs~TIIB*^!O zIE>Kpvh9$ z(?L8vjUd^!Cf5=@bX0VlUF1`U;_3@1F;;{2zJK*a0Q0D8p8@_rdW1yQpv{OuI;4kEdY u;@rtvB>275gZ1P-j@>@OrsCWsgkfwT=id_bdTy8#dQ7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/examples/RaplaConnectorTest.class b/eclipse-build/org/rapla/examples/RaplaConnectorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..330fda49152b76617da04c1e4765e93fbad28281 GIT binary patch literal 2302 zcma)7T~`}b6x}x@xgi-W4Fw8qA%zwazNTWWN@^8TP&9x7Mgxit$xSjanTazKK-*v9 zAMm+-0FkxSXMdFS+zF6jB`kT!Ozxd?&)Mgkz0dvU-#`8YFpHNQ0fvW`T~=+aW@xH7 z)T%W@IO>{QW-QYb1=q4SgyV7q8M=41eN8nqv#hS}?9w-e@KfE?-DeCP$yAOZn6Zi? ziVk!t2qDaHBdeQYrC!|;_J+1&2!?ppDriPdvvs*X+YGuD-C-EdUJFc`0#!BLWavw7 zWt*VZU0XNH=~Ry6Cc`7?ORH&xickr+VVP>l)~e#bviDTODwl<=QjU&gh^)7Yq8mLD z_bu|DT#|137#_EQw64oKT@+~D)oiz3TQK)^+cK-dbR)RU&}qm_E0#mcK?bHq(Tlq> zz&(bIWGnEc)~!viBL9;`1HPB{FvHy@V6TtMR4Ib$(o5J;4B@_nFv2jI^p(3=n$~Q{ zvpn}e!9$EOM9adJ4#go6;6XCg*2_7Cq*b~TNlb90816N}m9&CZ6l%uMsbGuVLct`a zsQ7EE*#*gzme$5FgGU@HL&E3iqO1O(3f{&n5!A4(y?TvdtWCjFz6cFQrz3dG5YmcO z-HhM~1EP2za~vOBqJM*F3etGW5Ob|eMYHE^Tl-luC$*J{QNqs@e1wn58F5W=wZ9F3 ztxRf@;}eFFE7MsxEQp$`TLkAh#mZ>rxSQ}?Mlp{?*~?EEdfPZp)JL-b&>ZJanCB>!sjMGspW0hm&ya;tyH&jo^Lcy2#szHk9qNLRg zBE>Bth1WZuT{?z!e9f_OdE{IjR6!2kFmS@XLb7dk(C^gW!87?w8Rr#j%CZD?vt&u` zey8AjIgfZzcWRa+BKU!dma*zaF=1M6!jTeAxHRb!^1P;C2L!^>6Kz$z$AEKE+Ue>KKWY=_8EJ1qXt!F@A#S0RBdDE;JB|zY~A= z2=ATX!w&q4u2anCWj_~6v z!qSNv926-*iT#O(vzvDNFo=GP;x|&3KH%b%4K$T*pXjGZ75G2oOLhuunb(=0to4kg}E2m$bPVAGX nDRjJ{z+sL9j&6=ajvN##ruWM1n}ZNt>bT& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/examples/RaplaImportUsers.class b/eclipse-build/org/rapla/examples/RaplaImportUsers.class new file mode 100644 index 0000000000000000000000000000000000000000..12b415267066bf25e0b7c1e370cb820bb0bfa26f GIT binary patch literal 4744 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 CHrW3F literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/AllocationChangeEvent$Type.class b/eclipse-build/org/rapla/facade/AllocationChangeEvent$Type.class new file mode 100644 index 0000000000000000000000000000000000000000..e23eda017d3313134d670082f93f197c2531efdc GIT binary patch literal 747 zcma)4+fLg+5Iy5KF$so1Al%w=zvLonsZU5jNGPIGCE6k-1o5~DOIT#=$k`zAS5UR8 z+J}BXKdS1i9cU!_z=OxT=giKTIlI6A{QL#r9kv`;glZUdy-4(Y;a!T3xRBnV?}r_s zRT$K-M9`H-w=&S1&AXm-U=yaU#jWssX1vesYuV8RTQf;09RH&lI#NNmM#$`|K(9v=x8^H^ZX-hjv08|^Tetv1s05Gg;0vLGzENF!sERUkhNZrU23|8VmmJ0$Ec1@b#3IDSSFk#i@c2*6r7K^tc+U$9rer1t acj7W`k}xb|v53i9XAvM5AD_e~vVQ@)KB;p6 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/AllocationChangeEvent.class b/eclipse-build/org/rapla/facade/AllocationChangeEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..29b870d18ad643b0c0de18f654bd9a7b63101b0f GIT binary patch literal 2805 zcmb7FjZzy`7(EvfHi3l#vCtGPwo*#M&tk3EHk3jkK$V{gX_TtPCE3E(%?6W&j*sG7 zXe-6BGkpMOd?oeVyP0MacLGjkbHBa!JNG-^@BaDsA8!HN#DRu3fzfhh->8^}j%hqI z3ue(W796KsFg?5ME*_ZfzLh<;Tu(zpp!d0XY#I(Xjm^F1R>2d9=5`)sw*@Y&sk0-` zc8qoNFeA`W+Vy@qv;-#C&SzpIM|BBYTwT~$$qKYDEG_YME4#j#=PNHfs#+C+WZ*(l zvpw6Y8jpEIaBpeXwO(vld^=V?2;2x$FP2ND?HU0^g1bw*rtiGD=a6|TWGzZk@txU) z!^5)edL@!N16)`1!DXk|0FKQT9NV?MIYwbDl^2LCmW!5#q(EOi(5q(kfWhv>B@F3! z9|H{1tb)ZMa79NH9U49q82=v`h~XNqDX7$UVi+Ux=Ia6%$NUtl^ly6=+uhHk^3u=^ z9dX2BNRg~rEXu8M9i4J(l2=u%Qu)}DyM~S~#ALD9uC;Mg+OsM-KhphcEIB7{R&4oR z+k86~$Xu)9^eZQz+*lQ12O;@yp%zSbE44scQ~6G`V@SIFsSX|8Qu<7XhM1J@=;%eC zRLSU=#XZK!`titgs!f6R`z(`sB0=|cyoZF87IgIc(xQ$YTwsBC2R6ay4H?TW;pZ=w&`kUg)X!18yjWYGYdbk^i-xatP2d*ORORK8a4&4haCPl0~)?;sT#C7>@4=unkju14W^gpLPz#W1bz6YYdDUbE3FKw_-4u}d30%T@@n?pBwr_cIbh5w3 zQURuCcZ`pflT%=*0oxcQTBnVGrvj;P^;%K`sw}iVf;XDjpMkFzTOA)r$XWISsx|y( z(}3;VE+172*0L?<{N)&UcO9`^G z`5%|FP_6PzzH{Vpg`5FuWxJ}C{jXLwvRc{NTqXJ<26+D<-*%N1z<7g8JEyq(3Lm_| z@J|2LQ+)Iaqe>oAa$3m~N}l?a&^Ao-e}MFWB#BN?p2Rgw@i&N%l?G^r)m1b07ctV6 z>GUZ+Nl%>MR(kvdGwEdH1h>auV(K;S{)~7!89l+A`kzlvp5TGB)~>9Ll0Gnl2<}k2 z%gL1C#G1tw+`|awkj8x&m{->4d|OyTmKa*aGF=x+T4AW#l(foV$v{uzA;T3>(&r3R z6kkvtg7}9Q^CKrT3~N}^u%Y3RhAkdS*K#%2UeK6yEs=hS(ea7NWaJc&eMjoC>QR=m zOw=-`>q>xS;vLHb_q!F#1SB`fGNHIhmI-{tN3u-dYd%qG?%+v{guzw%7ft_$nO`XQ zDe6$0Ys#GNE7Z&he1mVfBP$^YzSRuQg@V7s(-83OX7ElZco*M?fajaRPeZ{b_Cml9 gn!$xoa3R$4Tr=1X0k@&3!fN3eS2;e1`RpV9FN%LqU~3gbK@da~1+CW27!#LWiAg@r!VmDH#Ere!o;&w) z=JkF&0gTb{P$Bp>jYKMMT8gt&GGq~GZI#SoYo-@zB3{P#j18wAYJ_eg3n{eYVs%Pb zWdu)s&qBg*a9sYKn-y%biN7QC;`_oB_R8VP1pDnbSm&HGp*rvng!abfsp5I89qRw` c8kI^7f@`_IfQr+sqk&S_L(>sLtK?{Z0BM>=hX4Qo literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/ClientFacade.class b/eclipse-build/org/rapla/facade/ClientFacade.class new file mode 100644 index 0000000000000000000000000000000000000000..e0e018900939945550df570a47a594fcc78a2940 GIT binary patch literal 567 zcmZuuO;5r=6r4r0P*9-aC!i+A1PH6Tl@-3}hG@q4sUfr;6K8+~uCI+e(Tc>db+GEJJzBpSi7g z;M={?Sh$ga4Tf53a4-}4F7#q04CEM2Qv!OFPtxU)41=Z6WT>Zv_p#6~OGWX&kb|km zBe9S$WFLCYEraE(lJ+Al1OJL4ckL<}$moV)t=SrqxE*@J#5Q&eR2fREnYQAySrNO~ zV=#OXb@@avRGY1|ZypQ>MQmb=92^;lZaf(Y{m4g(Ml2_Exf*gU6Z}gS$gwvSnn$5# zI3w59zh}g8U)cRcU&<)H*$-pwijGWtD}Q%$kp!nj(7%wyIt=7dNMa?aXu}!gP(qoQ p3ZZlA$;n&n9o8H6UkPMzNY$hc)JR^Xny|^%>uAuO;b_hr{{ZwAjz9na literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/Conflict.class b/eclipse-build/org/rapla/facade/Conflict.class new file mode 100644 index 0000000000000000000000000000000000000000..660ee68ebda873ab959dcd4d5b1605bf0c50707a GIT binary patch literal 865 zcmah{T~8B16g^W4Ew!|z%18NBK9`Kw*R=MMrUwKRteGj*p&g}iVma#$qhL#6U~ zO5`A!yMPLoide=9!`wlVZ@=!}Dd8zToi@*-BAY=C;F!OQ)bo=~Ocf5|h%M(Ij+TzkdcB{kLnv7f!>=C=f@| z>a_5C8Q)m-Y4hl3k-;ozcTuxC(<;}j%4BKzuz(U_%Je!!mQG;#8!G)Ot5(0@*)>*Y zzJpz3?K4F(*r2mS8G${r4J=^?n{mYM{uZ`j?Q^_{?GAQhyO;Q1Vn2SrvT>?fkD1O5 D7xLhc literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/ModificationEvent.class b/eclipse-build/org/rapla/facade/ModificationEvent.class new file mode 100644 index 0000000000000000000000000000000000000000..214693be1304f18debdecfc526947993640ceccf GIT binary patch literal 331 zcmZusF>b;@5S)VqV-p}0P$Me4;iR;b2&zO#p-Z>ei#g=@BKz>;QseG1C`5z?QkM64qxvTi|9kZSLHi@>Z;ZRs=S$BNy?^~Ox^a$s7!9zETWrR!|k%w zH`hktKZ3136)~?>#sZT+DdzQi9RY#1jSqM>)FV2m!+8$74t)gIe$SzgC&w*XhrX>X G41NJ!tx$*n literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/ModificationListener.class b/eclipse-build/org/rapla/facade/ModificationListener.class new file mode 100644 index 0000000000000000000000000000000000000000..92a30d689e2e0bde2fe9670bb0bd532b55b07226 GIT binary patch literal 337 zcmaJ-%Sr=55Uh#O)x<|`>QxYvivwOgi6kIIf)5nDwKJVK$vP8eXIHG;6h1*prCh`dprW9F+M=>EJ~>k#>=c|~21W$3kXW_{{OPM}(bOIaI-JwG!4L6*nL8RK0%OJz7 z*S-*_Z2t&ZV&kM`m?W?|G;L|xW@k#D1p79(0g=FzWM>ZBqX~g`)m@iY$8ZrKQm^^q zhf211+|e${o=3|i(9D`Ql@NF?Oy?iH%=c4jQo&?IHOj^WA%|WuE=lH_FY%}=X`6?p zo3NlMXqpZx^MMP)bp8LVdYZXf9vIDKT+gVuMGd>={(^^L@dkCjya?*P#J&5a@TjR zAJtt6ma2{p8G+GaG=xxix9O2!nC~Pi`HAUN$-y^Q5rOrQf}#bo(A)-YV!OmjcL}Wc zjrs)SPb0r!u;Y$81~dKYy&u`0ACR3Senm1@WI)GQwn?^n|Ew{A_vf|AHtm%jGak@q z8GRn&v?H+OKdb$TyizEX#E@^j2i&$}vFo2P=l=+dvxsAJ&cw{v0`b&P+pN>6QJVDz zaB3y@4uF0HoUtWmKwx=fDoC8stgTLmt|xkX6w-NU$Y|dY2-HUgy(*!~f$LM8UntOG z@v+&o^L&B;fgAWt0W9F#Q-TTHmvJ|a>rF%|FohetPP=smX5D%V=5oy2aHoLW%^~+- zK8Gw6kVUwk<2-U!%@ru=y7n&R{A4 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/PeriodModel.class b/eclipse-build/org/rapla/facade/PeriodModel.class new file mode 100644 index 0000000000000000000000000000000000000000..379a96a0d5142599471e1813eb1d681c6ec773fb GIT binary patch literal 536 zcmbVJ%Sr<=6g{chskPNn7lODFgqe*2ao3el3&Qw-S-OgoIHbghWKtLXG#7q=A0^&- z&=%T-xXI^#nd#y???VHd=i$7vGA(RItoGO=K z)i!-Q9j$MN^apz3q)yz;Ol#D0rhcF3GkmrrFG9gZ5E;1E0YQ zAHaulJV{fMY(ud#a?{R!Ip^&6eP{RV?>|3(0l+JGS%5JD6(QTEq@F{~7PY9&%!7c* z?t5Ve4lBSofzl~GqozaMwz+qF$}B}-rp?q=*QFh99d$kC6WBC%ldwZ2x!bN+KkX*P znX9iYT$q@}o_GP{{VSrBeI~iEvC*r;&q*&1O%HE!Z-K*yIRut6cP^ezsR+!OP{O8oJ!dgA znm@^*Aux{xQx3l2u8m^}86D&vz5coNJi%Sn!GSf(ZJ5T*8p3Tk+)}v3_OLC|ea{?_ zSYy8q3arJGAklS6LivRH=uwB`-4^bVhz(#PsLs2WeRGl_Q?GuEdnQ?nN#QdoN*Zz-W;Nsv+#NvXG-Mvi1IRrMxepIC$a8oR#jZmQ-6UY*?-*?S1qju!NB{r; literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/RaplaComponent$ClientServiceManager.class b/eclipse-build/org/rapla/facade/RaplaComponent$ClientServiceManager.class new file mode 100644 index 0000000000000000000000000000000000000000..1adae00ff75fde3defcd6faaeafff0a4fe7c9031 GIT binary patch literal 1256 zcmbVLU2oGc6g|$`m9>F=c6_rBw$ZMzFoY0j2m}?ACKZqv+5>NH>UG`{J95*}Hza-! z4@c-LLLjl;AKkbgN&u$}T1`#W3EGO1$WXO<`X1ru8zFDBj^l+PuG* zi}z%Q;a+C{e?LhpBhdPw8!@a@8iOOdhV}bLC;u-dK)`i)E}ZJgEGi|LRVW zG?mHJw(c5VY)UI-`uHPQv%(nMEv1C12fWh}H literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/RaplaComponent.class b/eclipse-build/org/rapla/facade/RaplaComponent.class new file mode 100644 index 0000000000000000000000000000000000000000..8b36e3499f697715b2eab3a76210321f915dab12 GIT binary patch literal 12635 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 be*b;@5Jmq$u!*6dgo3&Y*c&e5ZOh~|6 zy%g9yJsS$t!#^?2tYVmlhQP;CYewGEZ*6}0QQqo*qd-H=JE@|~cC{IB0c2dd9|8w5 zNq7ostYVob?W?(^EWiJB+ApOprdH*=$g4UubgP&7JS#FanNiF;G)9{>;;aHuVRVF6 zL8!PEIATDMrn+dMGv!aDWQ}Q8V4m9lxgG1IU_JGeQq~80VPfj4l)tD^UZ!@w8ruRq zU|zrtwD1hutURY`tm`GcgBtJNE?%%nQ7OKbE`*bEIpJNS`)tDLCljV zxO<&Q;TS5hj#R?X@dqn1bVemnZ`kj?Fx0Q#g`7L36YF7<;p|@*!)J1-%`|w(y8a0n zs${EE^55{g&kRjvLuoB}TneWaGRMi=i=@jkQg**PSQ*R2DW{~(2k0@>>{2-~e$)&n z{#squsUdh0=He?ZrVKk`OykOXZY>2JF`TY{KkU=QWW)enD}NF@zn`SwiOr DwuOBS literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/internal/AllocationChangeFinder.class b/eclipse-build/org/rapla/facade/internal/AllocationChangeFinder.class new file mode 100644 index 0000000000000000000000000000000000000000..cdd22a31ab788715ee0c4fbc4c65848cd1702880 GIT binary patch literal 7887 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 UIjcmyUv=T3Uj zuKs{N_|R6-WxINNv1|2D^pCh|_ct>pv*N7q!Z~x!x4*N$+YbNy_sj19PU3-zkb>S~ zc~vhPrM#i97+E7{>Q=!v%LOB^PZSF)c`IvAZItpVA_{h`8=HonHwvrzjpcPSYpZBc zu&?gHEZCN9nH7D;*f4V{S`{Sgx1RsEZWTo47jIrtaB#YAQ}Zw@l;*!GnIj6+vRN_9 znHXaHw>$w&pJkiZ50c|M2u2t8^Cy}RAjIle3O8fkaGvetPu3kI-1Q}1ZV%c$qCw{N;$+dtKpYQo!R%eE4(c*7wJn?({ zL+J|dNNPzGt1e&)cFfsE_Q7?derwV>e|rseF8h6@;#-I9inArewt zUa!UA({`z8#iUx~>Vnj&DZVwHY@R64VTOuByy1L=V+=;>r+ z3n$Xa=oU_;lPy~quKPYrMu1Kxry1LaeB%t6pC!MK(9LQe!>IG#71uj0&d^@iNCp&V zCpic?JIR8}Rq`Ow^@<2Fd$N;Uv=DQazTFJyT*XH;{S28Oxp4y)BT0`0>OKn9TqjbXsbjZE}lkvB0so&Ho_opdX7E#FCH6P>snDK4B9nm?b`n za7$+=KPYY=MC8cV#1K|+8LP~d<#6wDsnob%!(Dtzq6rSb zXSheI5`~6nOnHq?6>40B;XXaP!!gKJ<{80UCj+$;R?0aUc2By$ORSXYvAZ(ykethui3&&AMi;8A<0c011x4XY gU%kdWMj`g?D%QwJB5g(ZHFifjI{0nzJB0QB0SVlqhX4Qo literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/internal/FacadeImpl$1.class b/eclipse-build/org/rapla/facade/internal/FacadeImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..393c4cc7db758814a3c593b8fc9d5c532dec1d75 GIT binary patch literal 1383 zcmb7ESx?kZ6#fna6o%pqi@1V-1I_?a78hh#MM#K)7={p+n0P6dnL=qNw?+Ib{sNv! z-0(pXdGjY3V?4JIhM16yP1CZpkz5^J+V*^!$USAa~B}%TaHia!Vq~&;_ zRGx6Hg@|9=DY>a(1J#63NqwsaJyR5nOxLIS9k?$d3{UTVPvt(L^p18 zeVt&=_dJH>MpWBZI{6+Gy}H(hlAB5fMUACRWYAYmbCi((uQWwT*hOjaRJp!qZ7Q)N z_k6W&xqhJ_m6eM~whjY?rg^1&)p_dO@d|?t7{rhPi^oV;p(0x*hA~2@k=hucFMX~Q z`B1Uh>^Wq$sQf)WI@!#cfqR7Ra=FXFuIS~Ne{aiD==dIic=A%`x_FT$PgY|-6!!L# zC`Ger;1MDDZ*L5+;>qSk9Xkt(5YPL&%9aa`9`;0eT?e%dM&>=+^#e|7Nrpv#!^Dj4 zV1r)1m6I+K%tdasnsY@E$N-(ZUorkWP%^2Pj89ek8mMEuo=;=UYb4&+|A{|eU>-y| z35`V(E-pPsl6jNwXtW8*YeXk%vYv`aCNYiU% z=ncjgo1wQ+plwm$v!{V(_}+ayVC*5^Z$-^-^cWc9zvXD+iGlH7EQw))WmW8FifJ{k P!Zc?26z2qW()|1d{kLEz literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/internal/FacadeImpl$UpdateCommand.class b/eclipse-build/org/rapla/facade/internal/FacadeImpl$UpdateCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..20788910fe522fe6fbc9e4decd3a54f6450ac726 GIT binary patch literal 4642 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 Ds2^uI literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/internal/FacadeImpl.class b/eclipse-build/org/rapla/facade/internal/FacadeImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..d7f639fa49d58241e19d765faf89fa0760719af8 GIT binary patch literal 38809 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 YGz2CdkZ(|KBf%VcyJY%{HGg`31C`L|ApigX literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/facade/internal/PeriodModelImpl.class b/eclipse-build/org/rapla/facade/internal/PeriodModelImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6b90d451059cddfc23ab3e5d64b829183e3d8426 GIT binary patch literal 5350 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 +

This package contains the facade, that encapsulate the storage and the entitie package and +provides a simple interface for accessing the rapla-system; Study this package to get a good summary of the functionality of Rapla.

+ + + diff --git a/eclipse-build/org/rapla/facade/tests/ClientFacadeTest.class b/eclipse-build/org/rapla/facade/tests/ClientFacadeTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b361577394d651626fcfd13c6dcff6f4d8765226 GIT binary patch literal 13488 zcmbVT31AfE^?z@6H?!HDK*$2R$PuF;xk!kBnkWWBP%s>lfPx2Il1W(D?8ZGnJbT#M zdSE?TtMzQ_QLR>N4Ovm!YHKZ4ZSD2f9=7(>)?W6m*8bi%vpcid0qoyn*`4{m_r2ry z-ur#u4Ez7{=o3WLrY+M+V>%|49%@O)MiQ}>!B~H6z--BynQW$|D-k!7+2!g|AFk-+ zXFALoyiTUbjjmY6WU8Yz-$VXKMRZ@s)VoyA2uFef_G1GmqEtX)B zwjq{|%WwOlKf5)aVX80J&)Z<=;!nng9X;KOFa=`g0K*R5We8KS8a6$_>@O?I2wm560B%F;l_%&s3{^34^yL*3{1nY33vrh~KsUk7r7gBkJdX$JMsDyDEY)wMO2UXo77cER;? z>(A;6BV20?T1%&6LLxO3Pa?D)?l`Nfep85gX}wN;g)q5N)1VD>hJ~eN=3p$B0G5gl zagFN`bvGKMQ&5~|#?s4DJCmZs*#@0M)0O>0sa#gDy4j#ja%tjVJUOt=%$VsNF+n&a z%ypyG0@vv|Gren7Y9N;|JIZ1Qh&cX7<%(zHW~OBzH5`j4TU?@n?S7^@XRMR9Dg}zU z6eg2~bOIo!y9SqOV$fEKBNdQiu2nM2Q|ToMfo0YzN%zh@>md5MhT4`Xk1mU43zj;+ zz2)pesfzb!ca4~++$bRN!8q22E0@O;Su@>H?>(*DJz?5T!#X9HW;O2MoH5K8S_V=5T6Lj zdtvH;LJayCeH_t8AKW0_0c^#iaJfoB0Wuq;{e8lqo9Je^MN(7Pip4R|7fXy8m;W{q z3DYffn@+bP0*=a_Lk+r}?f{0fDM?qs@QM{HY`{Ax5P6?6=+pMlzWA^ym+q3;cQdt> z!N#)65#S-Qp6)g1vvi*o`6VMGsdzFwj4(5;co*^ zQ-ixoA54k`)Q1e(Ll2|eBO{z!N+D;YojGF$ z<>^uM#r{MpiP#U!cR2sr&9#oiu=$8%p3O$J;f{JaX zv)y(X3;;s)8+7_Al2P#<1%p##nXSDh`sUO0j80!K>Cvj;XAJrV?FSTNnVxtCD431n z;qazHa=4Hs!@zc)qHhWleGYupjhn7iA_4M+CIWX!M!g{FersG7+G0Hx!knk*MT5RW z-vu-22LnYf&LHpySqBt^>H7x#fc_6;!*WYsT2kLXcazZIO2{b`+v#r1j4!PyJuz9z zpGwDvptD!>Jm`UnUn~vpRl6LeIx!?FGU-D-0{?d1wnKv+GNGv6l0o!caHRgN*ua=8 zlD#Hw4J=m#B1pf&&=T6(7N+0O8l7HaI>O0J+o<(GhedqEJ-;>RJroPm8}tXAevf)q zHXdV(1i+eS&>scpesdt6m16&AgWjaS*s17Lj(3rY&S0eCE%Y~o{!af8!_y|}Ul(?E z$$=OQpITtc3cQ8uK-<6QEuH?2?Vkhf!d-)YMo-F!{}}WRnz5o4QY$gKM4XC8m^Jq6 z>^mq`an&n>16%xaD&5N1?GYpUV@R&aE*}zS`FS&a7mIL7=m_&sJX`0Z(HopJar%q*EQ9CpG1w-7 zyOc5^i%l~fS3)5?#d%Ha2y#7)97*jo)3snEXe`O0FgJ3u&P`0m9zsJekp|Bbj#P!# zY_*Sd*dFQJ%Cx|d)}I<4fzy*X*HPKnYvO1m5x+q8CIWp44|XiWv22K2xJ{bD^dK)l zAlq777dFpt#eYFwgjmjRZEtIBZ*7%v#~XYCw`1**SUOXb!?egFW)@CLqv+(nO1~hV z=w7f*(tEMw?8!iRS+XKIaes-yOBs7=Vd3k{5mX>JR2q~wMhe>rkAwq;@7?I@$yG8T1PZNmgwz_zc-z>uGCf zh&S?Cy3`O?%NUOhg@;rskumseJ_l>TwStdLiXoL&^}=b%+D_lQL@VMP)ZAlZ)u z21Rt@TpaIav&Fh00qr*!o`qW=M7c#I4;nlqp4Z`d5h2&&25;l-s6!Yipnj=Jd!ZG(Fes@X@fHi0hJhU^=6d667<+*-F>o!##hff z4BpA-!(2oS#W$5pi@68ia=Az^uy+Ansq=*g?_LgN4f4gXc4;COF} zujBU_{C@rbTm(C;$~mvZ3Qt&$uah4%_(O8$RVB_#n6i~P&DxG+$M)a*2W3t+5?u?H1Ea)@HY+aRw%SyxrhCg&s!}wDMe_D1jldOHe3m`BK z{EqL&k*$Zj%2vfmbTXA(Yo;^c^k^(DNrxZ+4#ZHBCRsu(8Qs#Jv7;UFmKs**E40Lk z&M14{v=W8X#SJ1Ul?3%sR6wzsAU|ZSyV*S7T6eP$tRO$kMB+5;_P)Z8ApCPTVG9uC zy~=;vv4O7Vyupw1J`4B4lEI$6aW6NKbC2_vbjBvl^(3PRK^bE3mn8$FhRILs0YF3w zM=!#;7KPMIn<#8R;Zx9P7@L}1LH-)PZpo#Sax%nUH~1O;hQ(!E6PQ}PHIp4fd?=Sz z)UCxeqeJIsnVLMJf50iwV+1;)Ma=W+Ne7&V$g7^R+T1B-iy7ZC_}j{}sBeX9-x1Tk ztBw~uw31QY$FK)pH^|>-S`2Ty>@FmbN}JkPverqh!Bn~ysH!a>r8b8(b;e%Ni``i@ zWpygMJe5lh6s4d5c{xX^&ooVf?P#+MtRgvpkmEQx#6RMn==@`(gj3p_T{1f6EBsSH zJA+P~FtaIiqQWjiF&~c|I5zaEo4ji9&-oX2H<80C96vI3xtpi6(7SQ6I`M)KP)_VM z{X0!_yF~Rj2EWFy!vN`8vQDAZ(o@A^Y0D*1OE{mXCw!Xl1<}D%|b8A z?2%&1^#vHo;V=K$;5X&eslsX?LH;WqEEPd}fUaaUq)Nc~?*{*a{|S28y=raW#?3t| zdizRGKGYGB&i{r~4}Clq0)|0fohKhSy_HiW6SS`Je{eV~vfRsb(xImv#P=W){q~`R zbt)E?3Tany1VK(jB;9o_fNt(#V`-EN;MX;sspF8t53Cq+&|>ixbDYIuMKN+ zw7I&5jlGM2j+<&|_3|i1PN+fZ3(q6x2en23vUX=YyH$y4Hne#j56k^UhIX8GeA!VPPEHQ7nQ)GH5Q#ZjJ05y#Xyhf&x(l_UEHs5@ z-9b(0PA!ha(g_?IWt4d*8(OD_N}z2=xN>ov>#%gFSK$_v5L=-s?k!Uvn(91hnsg*~ zXFj}uqTzo$)5a&s!(x0+!X3QPfzL30Eyf5LQ_;}4myA95rqKj^hSb%Cn7fE3;`dZ* z6jfus{8K?S6j72U(-d1)gIW=D_tDgiHN2M&e+VNjc@-E#bb^v4>-pvN3EZ2Zz5{4V zo6E4Cj9c2UmuedtMyYNe&Dr=c%^joWy>x8Nf>ByDO6_@CtkIXL{t;T%@I_iyv%Kci zQCgX&)jm3-VT{&2LT5Ub%!J)UCt=0KkbW{9g+J@5liFzs{#~jxGOSf?>-_S#yiB)F zj1k=?$dY+F3uI_7o$IVKL0R7o-!7*rI>jY-f-P5*17(-oEz0Hxpj7~J7d0~e$4XU@B8uF2E2 zK0>^2oTPuZ+VJP;lYVOV%Y~@=tTueUJl*NXgQU;+s6EguLZbd?AW!%BaPfYP)TKOq z9=LDI(-*9Du)-2?05ahUjcK z^&GmA&ZV1aGkpf2_&jZ)N2wor4$yOWA>t((q@UxBhriO2pEi~XX!`uV}x!M-A_Nkbw5_RmVSzF0jzT_eDq_)=sAS=XY?vk;w74eHC{$Z z(BvS?1xuBRydR^b5WHBPg}*G#!c|Qr3D~r{somd%5EZZf+DD5jrc}U94N*VJ%iWeo?C_@X88pk6!PC+{K zz`yH}4E;!lBwdI*7tzJ|_k(l^-G-MF_R@RlNqRs0{{i|o-Y$@M?Y2BuOtly7Vp&HI zaV7k!VU;^L#7Hcxbt@ZK%a0Xr<|>|mc%4F5@4zB zPX;EkbS_Wfsfgaiw4M*+!-2ZnXaNf@3}|))Ps6t=Z0$lz{=?`oA3+to0=521g!3vS!_{!&ZUpukgz=;Jyq505%M+iY>+vY{2HKAoBAm2) z)(&G0e6xaABJCE?jVjqRNc@OOEFa`v%BLYHen=nY9+h@UI)_)`TLq-g;ni4Ahx{O~ z!M7lSvbMaCVzdu3h_*LG`1HNpEB5AjJ(`UbrPGl$RV|?!F=B7MvVH|Lo z)svd5!=t()29ji*R*JK}NMaatQtL-Yx#c@vDj8R~r!ZR8fbVR$QOz-?%k zx1*ul0aV_Js`V+_hBqz5Q4N;Lwxg!g8cqSJIC7=s3aRK`bh5&y4`z>)o9#Oh4gopg zUp0*Kd3nwW2J;M-Et+I6Xt|1s>xv6QmLLQA}mZ@i0i zkOaREWfkK}evKRNzK5K%y?V3lyIaQiwtFamnv9k>&abX}@XDPU-ZU*<64NAiKVubf zJ*s;ufjVz#eYd0U9`f;K-T_VS!pZz~IBC9%Z^Zxi@?DC2NCiC#xVjsa?H-zjw{MQ7 z`;d0`(@G@i>3B^hNe`ml?m@yn3~WAv4myesx|d$S=c}}jeov3Fj`Peay!R2Ir}!9p znit}2jxKtJH`6zP!RL4vJc5VzAyd@sGs_t8(lXv<#I}O560r)n4jd&0`D5Q$8oAe_~-?o{XX3FW4@p7N7)EKpI7*E7*_$w zP5c19>55);QuRALpLCsA=L>Y&u5+V&!6*7Zb+XaP(>nQV9Uj^!A8X~~EsElHCm+!X zTFMWW=M=hdx5~Ouf*fv6T0uj>Qfe1}O^>M-L4^XuE<#Owg5g`@(7cA?f zqFdG#7il2E#%-RF;71ZC39jawT zgnuh^;th+hxX3+R^(QG?e<@TsnfoyRO|5JR{huU>hc5t^xSIcEdw3-{25|reQ52i8o(9+QA}t)e5+8! zrA{Jtb+Nc;eqF23@yYw~p9JtP;x=~`FKj*4)|Zb2 zRO;w(KFXERQQM3#P0%VeIdl*hVYl%XP1dz=Cs3#v8W<{=D}kC>c|HGOZGvq4u_Mza zW8WXq4zso#qgvE=(mhnw&^WzqRGWF3#?u?I4SrJ!j)nKBvdiT;puWdYEzhN6@MkMG zxG+B7R*7(;R;RX6Gk|N^?P^Ln{C%CbFcr*Lj>K%uzHisk-L_^C?I`HgnAc{5nH9F^ z&@rN+BrU>qyl3LRjzbIRUYy)wO~&Dq8l)}I(7)tl!(-4wFgNXlh<2hS7=LF6Kdqro tomHEEZo=PKX{L7kc@oc~E!+aIwYs9QyJ-4utxj74+gMu)*J)bUe*w|ON4x+4 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/Container.class b/eclipse-build/org/rapla/framework/Container.class new file mode 100644 index 0000000000000000000000000000000000000000..92b28691ee0e69e8b91ebd3ef29e01cacebfe782 GIT binary patch literal 994 zcmah|U2hUW6g^YXEr|UeORVA?J%<$7VO_LCO-J! z5Aa7B&#YK5)E2T_?%jLOoO|w_pTEBU0PqS=BPse%%UHs)K-5>+J_!g^>y3HbA_P{;xQ-h{Xp`IiXwX&uqwE@%RN5|) z=16)S{7G<)h@DLOY?QX_SbJv&%98wZ;$PJDd@j4$k-grz93Q+J>z-m@kUC4ScXpUb zn~=e?`aI{E$RFW$gB-O>5wAp==p2yzT{}%a;_y`o~y`T-BVnuvI=_^*g&{;r*za?5=ovBsa&ZFU)Rk4O( m*KsGe8w3vi2JYqdJ|5(@hKIS`#3LT@nDqtPCw#VZtexMyF&VA^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/DEPENDENCIES b/eclipse-build/org/rapla/framework/DEPENDENCIES new file mode 100644 index 0000000..308fd6c --- /dev/null +++ b/eclipse-build/org/rapla/framework/DEPENDENCIES @@ -0,0 +1,4 @@ +This component depends on the following packages + +org.apache.avalon.framework.* +org.rapla.components.util.* diff --git a/eclipse-build/org/rapla/framework/PluginDescriptor.class b/eclipse-build/org/rapla/framework/PluginDescriptor.class new file mode 100644 index 0000000000000000000000000000000000000000..8735494dd5d8589f2ada26669060e6659f3338ea GIT binary patch literal 407 zcmZvYy-ve06osz?G^M4qLSkS?s2v~@YerB}qyUuyT^P{C+yob6M~)NTje!T?p%Ay} z&|CX3Ly}1Y+VsKEHy^C!#8@j?lqd}x=`klD(O_|tqWmWz-WOD zMjA~K-99ZydI9}edViJNJf=x@C*UAmZ)DynQ^W!W7uHlBjh~~gsSCS&Rkre{T2-tu zES+uCGiBr&C8-kdFi!t7#X=sHAs4q}EK$Bt#GbS@8{VZgxhiUhUU8p~)>S;2v&(|~ zD&IAEOiXV1%aie6?~{$zDlo_CWwv&brb?55!{40FmH;{e1Z**40Y|U{9ezWu0_Z}( S7<01+ww9umAZTZIhBM}2E}ZA%+bsM5KT6ynsD)s)%qCn_r69^--M2fAEdv(?(7Rww@bZXVbx+oFakvvI}$TSd(O{9EFa1yQK zV@Bu?=AZ4#nlKH<-WT;c7!zvKi?1>p>h$2EO7Q+gzx9OTP96x|Ur}pzUg@Lp)htXD kq4V8-m{)TM?7&Y01%9Rshq243#IwRo4RuC@My^2f37q{-+W-In literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/RaplaContextException.class b/eclipse-build/org/rapla/framework/RaplaContextException.class new file mode 100644 index 0000000000000000000000000000000000000000..2872d6e77b4bd3f3e90f6e799878b717d1151ed5 GIT binary patch literal 1040 zcmaKqZ*LMo5XPSY+QSnp#r{!Rl~!%J1A5xGG`_HEq9HaZmBcqD3vB7N#~s-_+WN74 zQ;a5l06&y*7LX92Ub1^TyYu{JW@mr@`SAq&g7|PZF}#pvip@ z+zqxzn~CVm4GG2St*xBye1#CdkY6=#`YQRz=*Tb>Z4P%Zr@~pq#Lmf?3a)f&6{~I{ zj*`CIGQs{oXi`SF6aAxbSLVVAW-aKcrhMn>TglCR-g~+bi- zVGI0Fc2QumURk^v#n?Kr`qnob4ROLEU`u8swrr|CLDB0YWKzP~O z)#DHtRxyAPfjimjQDoq7#W3~tc5_E}o@+Y|T_9PpYFcAUa}0S7jA3`*Aotw6K`(1o zjzd98a#16=DUi5Qa~$JH#mM-!iU^|e>3tP3#97<968#O!I%wMhceB1|p8gxIW0>`F zuFK?$OIhNpuWGvO8kX6L;6oC=PRfqI(JQM(?-*7=uI|WldRKwmXnSnkD}D>V}Y?= zm2XLpl8R3-Pqj4L*3Dgk*KxF)4OgojaBYIw zRQ5HFW>2Ahkj+_D@dV3EZMWIg>Hp_{-e*cYj;~a#;cJ2W-7$ejR|V%WS4{#jj?$*t z(hj}tT$L-D^&J zJ%qI8#VLk<;Zq0+UgNw2!$cTiBs_l^djq39NraIAVUwAp?^ynn-!qJFpW?mOxRo!w z#>53+5@9;YYn-s7{ET_PDL*&>CJZL&A^729@Lh&cVVlDEQd$cAuyhWvJN<`i@Ex_5$4*UvDuU6^H+5B?;8;#E0GZGhWUW`gjO zB$h^ssWM#W5~e+Zc|T!?;35{VNJ24cw}dZ9u|zc<(Wc-r(P9Ywjo}EC1f4iPyh@=h zI!c)`=gi4Fd?X3KMW5n5koigoM|ASprC2O5NAw~g?oqN5+0A#!mg%s{1gs>3FhYY- zrd`9ALGmgQ6}}nplFyvr>Gv0%@mu|Xsz3Cg)4pp5dLV#icu;T{-%u#Ou02*Ip%Zxu zUHKVtd9NN<#W5YC?q3PQpZ2E&Rh>j}U=i>&z0uvws1e C|DjI+ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/RaplaException.class b/eclipse-build/org/rapla/framework/RaplaException.class new file mode 100644 index 0000000000000000000000000000000000000000..74b8b5bacb893bb2f166df253fdf022054f11e06 GIT binary patch literal 823 zcmaizQBM;=6ot>Mr7KGjq)-sFROJC$!zR9Bc(7`MsXhqyeOQL=>ax?!PNjd#7fpQd z2l%6mXUe*+LgGHm+3TW;1=#Q5MV)IX^>>< z?d0NAnG<=MDuI=Oj@VMNG2`J; zJs%qa%|B(Opn*+n2?VjSZ&aSkm`+!B_pWzv!#!}rwFSD>Ud0wF6(xMOntA)%4A*y~ zO2AW7dN|e-6RB5;+g9`MXWn<#@eqP8_#!kthdOVck%!yNvK|XO8_XOs=kcz0dtb5m zd8S$78O*XR)~;ijaqCKjyI5gFJ(^f0!?D&1)^oBQE9myVphe#Oe|ejj$5w?Gl)M1j r=oGwm!8;<)&ER)?Pi}ys-l7m|vJ{+cS;oW% zAN&FSDC3>kC15}vI5TJNoO|w_yTAYZ`~~0$FXM`CQVihuUF)mMBdzDRXtHT2$= zUG9lEmKd^^{F+-H_Z{o3b1Aw3!&2kSt}^88=}|LKuJ0T(r0sJ3yyMZ8oT;ru4xLh`-wSco<6r6hX>%(5U_c{B%gTVO5k0N+&x1b0Dp9(C3+YoY z{_XIDrw%75ES%k$c`%iPtbT;19ILK)>*@i>&P;nr4;YOJ%^!UuG3@B6q16uJgk;dL z39Qp<6)9rYh&d$GzeJAxK>9m2ztJX!ZTe3V0tXbH$1TI^@98!PYP^HH2Jhj%!CmY{ u_`u*pgt&`GW}nBt!GkFNafDAIEJRq0@F_M-{4+c^c!&~tV6cpn7k>d(Vf>B& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/ServiceListCreator.class b/eclipse-build/org/rapla/framework/ServiceListCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..edbca2166928b6d475b41561c4a663a6f8d40358 GIT binary patch literal 3148 zcma)8TXY*&72VgCG?F|?9L0~ysZ%#;TKN?bH4Uwlrb(0<)XGj;2d7SfGM2{jB(g@# zjO>OtB<1}s4Y-s?OToMfB!C?1wNk$L;Ilt0zWHVG4~rGE?;XjOA0K4J_ujeZ+*aZyj3wLYV$LubHSJ? zn*y=CT`vmZt7n)4De?*hnl*%Ds%#oX~Mjl1(GoCRo5>JVUU~mun@fa-<-M62&kkbzHy) z1j1&e=w7ruVzndRl<|u?o|9MZ;gzRnT)SNJ%=3mfCoj6B<9U3Lgl(oJL8yR zGo-FoHCHuT)%DDI9iPSLm=wFl=DbnD=h+uMMqwKB84cG3dKJM{ z{C;p}YF4>uI$?ZXV87}s16y4kAUFe2T$5#R4PVmnWqgH+G^$mSN?^3r)g2JqWQWLI z!`F0tUGgmK*}gD}Z{ph;zSYuITRhkCvh0&uRR&XL3w{OP)o?>#ce7gkI@Iw!sTW+7 z^&G~lq)9Z4*8~nt*qeeP{EUe$R7IxHWqe8eP{)sCMuX;j)w?R~ysqO7`J4p{W!oh? zLatL#oiZ$YrmRKET-ozjrantHdKmj*$g`_Tf447e7BD5sOH#RWUDD_#Y-+Rq#d0D! z_iU+t#>J8lIYMIiRm#G5%(CHG3#wj;Y?Wo}6FQ=Lfxqsks`j8FUUzt-7)X(~G~8}x zK?yF*IrgIef=4ISL*hr>yZyJq5t$C$&nLK@KQzFR;2^|N<5!Zi;2a!ULHH&YZHRJ| zV&GnMaMXPT&b#;(!EWr~jy(J~UM4SnWT-urAG#BG6Oo}nY8ipy@!^r%=v+pBeidEQ z!*%qm;NEwdANR?Rn=}Q!+kO0#^Fw@E+m-Qy2y^E?1h^BU=Y2Sc{WwI82av#F9OFtl zc8qb*IHiX;2hcK;Jwzv$F3e2RZ-R2LdX<O^l4z@yNwhJT|?G%=GXI z9$&%9bYL0pj?{7b&q$?%@n9WKE+HZ3TsqW#Tw6xxNIcZ7rR3S`n&{Tzp*ydy{c9Po zNu}}F`8u9m!Z+l{R5}z7(a2OC({+3(t;MxKT;oT~;83iikPgSgw=mmzq>jt!NIY^I zm2@;7t;2g2`PiadU0uTPEqrnn*QR4Ht>6psNF86SV1E+ z9>e*;(%R@UcBMPwfjWL1?|4VeHzmp7d`ID>!SEdGO|wDyz; z;c3yq=Xp2heHd5VxGu>my6_Y7fd9C9Q*k3Kbo>-QV@~&qb}ZxP^fiHh(#9{zpkw$8 ze#N~Y{W^eO<1J=?4ENwS_$~8a!%O%bZwb-6MS66YdpA(TEv~}!^f~;Vs|fFU27kaG z$z{p47ZARSVGT(QDGjgOMZa3qh5m0u*Z4qmkb~-fLqm!E9e=ceHS{33MGwenScwq! KKhaDZ-u@p8zXnVI literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/StartupEnvironment.class b/eclipse-build/org/rapla/framework/StartupEnvironment.class new file mode 100644 index 0000000000000000000000000000000000000000..1b1c46eb241b9453b441d6489d236e88b4aba695 GIT binary patch literal 976 zcmah|U2hUW6uncB1*BhCMf|pE1+`t{YmG^PH8I(iW*6~!*iP52%M2NYwtvf*_~3&- zz#nBi1K6%&;y%pGxqI)q=iWQ>)R>IFx6!cEV4&n{pYu-NA{745NI|^*u&a|MFL8bRy$jMn!MG<#jqPHJoLRO%E3AGg8m#rPVse= zCNeQ^808wxKE$-uktkD*>JHsxw0fzjo$~RxLbvEPSYlxgP${F0Msrbj399Z^=n56U z;3rZXOojuYdwh^0r0T1Pr+uyyi|57~80RfRjmJqm(cC0TGTKE3+h9K8(MRE;eW{X} zMn_q9_m5ySuo#uV3Qp+=mWKq+$(-vSsLT%;KhqwW8co=y|GGk05T zs3tlRZxh?*+B|dS2JYBtVkQuRyHTLJ9T84-a;OMv$=(<$17FSH3h;6UuK=%R@EY)X z23K(|(ly!u<8?4@W4B+a%D&Q#FLdWKz!KfVTE=cy8*qPWwQuABJw(VRa31?3Sf0?< dUzVo}md1jmNzXvR==s8*7Z7Ei&dxNa`wP`w*gOCL literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/internal/ComponentInfo.class b/eclipse-build/org/rapla/framework/internal/ComponentInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..f497916e33ed7ca0f991199a60cef04adee4ab69 GIT binary patch literal 1003 zcma))U60a06o%h{LIJyU+V=U8w4Lz1p;dZ%BTt)WF%&nnnTxDN9Xg23g5|z z7Yhug(i_Xrkt3mj6)rbYi=a3Wtkf+vn60<$joqnpIBmt*ue_&*y8&8 z0(q-DE)(y8fdY!WduTvMi5&lzPNGXQ6}?UTZCc$7zJNg~1D=r|&!}N_Z@VQ>83pIz zRK0X#o32g%2@e%Jq##d!og95h5UpT2aYUNHZ@)v)3(Ddg-R||4Fuu_?2b0!Hd|ao} z2G%LwNYZc@HHsLn|AL4ZM%Pg&LzGEjjlIo-QuATqMo)nXl?RjnKKa8e+DVI&qwE)vKKl&uqR*BWiQ4|y1+!h?K)G4+v{-k9oY)y-zD zHL42~)f-_gx=u4A^4*zqCp#kvfnfdTm8V)@bX+qN`f81G^XSaLsr3Wmtx1}ZSVwi4 zJ(WsEqM-&YUaer9z&LB0HMc@bbaLK@u^8n;F(xXQFi1_Cj*3Gti42oQy|Gm{YqbRR zC=NK(Eqgc&y_hWEst8MBr7EUiDovzsPH9n!I3bWDp>4qGvh`m0<&nkm$aEDmFjHVu zBGsC(R1laLsH+>1(<}i|;YENP!j_{(BZzVZa|8+oRHS+;Do{xe#Zz?H{1Jp0L9F3Z zUK~MAS~wXoVsx}-c2K49BN$!4+gcafqD3QZlyE&6cWH5ngh4{lfkin?9Q*M=g#YTO z!kVNO-bCpwgeXKT)Uc^*N!>=JKtrx3&iOJ6Kw4Z2cj_U6HEP6ifNh&8Wol9f2i?va z#qlle4(oBbM6@3-FnuH}Hpy7YZd6c1u`In}dNQ=OsosYrI6-26=@5Ts1Y9R~ELX7t zRI<>B>oMvRV=P%_oty!cLvCP=*ga8Tip48pglf)8>Pt*hJ8M-cNxzc1u66maQsTG~ zs}-ywa&iS5prqm?G?90Qo~(;y&k7up;Z5>63)Ma}W1WJv^mc}O&a#S=aSHK3{&Y99 zK%JCgy^2$Dnt*4k8A&o&+=03>YQ7R@s5n#R1y49?B$z3hafT1AXj2dt@DEr#Y;?tq zm>x?eLRO?MNhEYLsX|A)fD$v3jj3pKh>0^HMPWMyN;AS{O_d|H6lJ4|O&|@1b#{xC zwCvOxA36||UNk6a;MAHjlH4q?RLb}Hz;%M&uBD<$TAdlx!B|Zy5^d8>9}-9@U@TUC zvcBD2(auiR6^?>I7#QlahBBNY`M*f zj^Uf6YvMRp#d-J=6>gPs3aobGYX}_v{}5AfK2c`5B`0S(R`KFO`fRCb8m3<+cBXHC zIM;f9AGYBH`E!YiOL3V@MsbD@C9N1S6MO=rYA>$fS-&hyRX$vWFDtm3ktKbRG0mDK zr?9Rh^lYH3_=-e%0b^#Mph;P-k+NJ%$qDdb>C91$9It0m^w%2ER9DR6`85?^mjuU< zpgnEZNH4y@^hZ^%!VVQT$*SYymIghM&^j0{+i;7DTjjJjY1k>nhsD?>J-nOsa|A== zNY&hF8e3)6tu9;V#q9#qYPHzxq(5qCZG(+n(H@EFel1B!7E7Zq#+{PI9)U@@EOH4d zxSK^W6Ld>gEz25D!M8HG!}5D}frZX?F%u^vk7HJrNw&bl6CksTAuHHn_J&VNg3RRk z2`e2kJ!H4$#6C9&mM&L>%!&s=%<-4N@-I+EJ|)u0X~7quRGSNTo^|QnQrk}jCbvz@ zDw%6^E;!l`wmIj=*h(*>i<=G0^mB8a>QpM5YEGbLx+%vqEJ*t^#gD#_)O_fZVClp6 zRXl+w=?J|$l1S3ntPAVq!T}Xe;~BPC68Bonh(*{7%A=ghDL-O)Zu${^qTt6FNt}5VFW{%nF+yv|v3eeR5icqDIgK%pCTgQvBBA0Jc-gLw z)_Xl;LpKFVGU8bl$yp+;U*Q!6zox;5(6Y~}_zhlVnW4%}dcsJVVQM>l1dBTfBx7GM zUZZ$h^;V|2(8)_{D(V`Sg}iv3e7dw~yJ2?enW$yPOm=$l2a0J&v`I$MExHrb*0Ss` z|D@v2_zMdtJEN4oiluZ`t{j;HI^6YM{Eg+x&${bxH&U@SzY+6?rMVdL94deHG8$muFOnE^n?w}Lfae}w{X8ygAmEaods96F9RD#6k#AF2TQ>D z@pQALshtC?u=L>|K34GGL7nK(zG!7*{pz*6-l*u8fR`YXSFjphQRr|XRN<1qvI885IgMyYLFkaG;P;bT|rFHH42iurWqfgNugkUI_$88G5r# zuOui(v}}y`O-j~k-KGj1#8UsH-pwq(A{UsMlr+#U4cu0(j@&txNm033OA%uQj+ZAt zU*~3fz-igCDDjFSCghptNE;TbVuF~+D2l||^llkNgKl}l4;j-M6XG;x3gUorEKa&sqnMa5Yq(8N1!oM?;#IYj}|k;;fk0!sJR~5 zc&eBsW=muk#-+CI_6K(LD8(C-z45Wt4X3Z!OZlgS{e0qXC@IJtS3qEHPFbktOR_zUZ7VvEp3Ngk$EUqTWe9qmTx3CvuTY6B` zAR0xLJ8zz6588qgJV&K5zNjRPL${-Jg2%lf*tZK__rg7B3|{OJTyNZi1(|(^S^KQz zkTaL(PGefp;R6d3orNm5bw1d)yZ%688ZVmKTLe-1d9< zUW%D#skRZ5Ii5#FkLCM(s#j@oXAUV z18<9~c#~U=jcDSfYa#D9YjFWDtQTQDF5?aLTAao{{B-Qb8J77L*(Sn~q$th18%JX< z4d}ym9An9$;zk50O&;aA0Y`A;MiK9k^C_8!GJqd&M)y;|d^JdC2t?h9&}gbm*kgt z(m1C|k&g`}3OAQ1d&y*ROE0#y6kX7Ri-KufTy!~q$nwfGzFKshJ-$JXZ?wnT`AFmD zIX&39f8g|O&S|dn;0}9%TfVv9!n46k=2cYBz_)Ri^?VxlIG(-~(>T*X4|lRpiJ*iw zEkzfmb9VrnQAz*JMUr+-(R5qr`>phEH@$o|ecDZbo{KR3+lepn)HZUufTu3v+r_vL zm(bgn@(OnuuE*urfh({RSCaQdl;mpM&y}Zf4W7Yu77F6l?+dt>-jyNMhWogWmj$Bb ze(a^&N{FEc@Eyut$}boX()VskGXvk{oQJYZ#6w6EOJRm#06lc>X1aSH9wwFhF^Qu` zIC_RK*oR(@ByP&#=_fgl1(-$!D-|>oHskvFy@)_6mOodWr{Jzr6iPk{kK%hn0VEzH zcQA=N5U3BT2*7FLy<$$J@rUY*0>`oecH$(C^n*I(#X%7y^-AoPlFo5qRVD4j* zxSs+40KYXoNJ{(YkVgoEM+t*Io_ZX2^2YKIp5*LP*pCAQ#1p)FJYzv&g_VAv$2%4v zXkNU_5o;26+>7`49K$5=K0csa3z?^YDZR8b!65&3(q(HxE%EA}=> z(~cLTWE4_7$uvM?lw!8^w6p6}ORX14`6Y_~GFM+=8F`gEUPBpPw^W}?M3FD&WGrwb zMq8@8`I%a^RG&rq(g=AxGupzl%TjX^TnAA~HTya3veTf%FtIBNL?KT($&YOSlb<+= za>(SjB{*J;ON;TxmEO!sx0i2+l%_?=qF||K!xWa7DtE6aZRrtHt2`y1U|uPw(&Dg_ z=dgT;>153mmlgq;;7Sy^um{Ce`MqLHi<~bj$?p;6`+0DRdqY}O$PLVd;)uO;=R8)6 zCK042vaD9Ic!E&#;%(-Dclh=${~O>vg6n;LXa9h^KV%mA2+P@~H{oL|Si|hL<08+p z+-dYBwISSW%WV-yilfNIiHh7YhjN ymXDRJ0f@2}XLT+=3vw literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/internal/ContainerImpl$1.class b/eclipse-build/org/rapla/framework/internal/ContainerImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..14e546ec88f96bd23af4ec17d3ad887fa4666af9 GIT binary patch literal 1204 zcmb7D+invv5IxRq>1Jt`Pzsb=ffRCUm+~5*LV-$^(jrk*2_znzjl0?6tRwF>z+Ztx zh2Vh?;G+=Z%}TU@s^-D=*q%9aW_CWlgGpuozltEFW`!C_JJiRdlS3sh3B|$(ce+kHRQSo-n+r z&ysV79F0AOLRSsM92hDNESxje1qXAmZRBy$K^Y4S`MPnf^r*KxhoipGuXtYyhH6jw zT<&olntgUyFs-5%&p^7iPW3JXBAFJysdSeoB2fAx!$!UL=LvTc9Y#T?F+-7MT*pld zHy9e`<<8W72e+`qFi(uS!%z;Uv=|&eqqRfYGv)uoj08tP&%{1Ilvygpr2Ar*k{#RG>I2JLMNiBIAMdV!9$Omw%Mm+Ro^EAqE==MBWkC97HD$Ujr=9}#! zxXrJqex|D&F41h$3Uapb8jEC^K%j!lxRRb<#Zm^fL7v99-24K!^$pi@_(a<&Oeqa} zn?fv3-7*NnW*N8Xp5YGeW?){r2Z{#lZWc~&Q C^g7-E literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/internal/ContainerImpl$2.class b/eclipse-build/org/rapla/framework/internal/ContainerImpl$2.class new file mode 100644 index 0000000000000000000000000000000000000000..c899e0ccba8621ba6c02c1368456b9193fbaf35a GIT binary patch literal 1987 zcmbtUO>^5+6g|&Yti(|h;UPfVIrrXk-~IE+?|%ST!EGHWfwCX$ zRRX)~+Le2O-I4eG;Gp7op$t6Rt<-!kv>i_d^-kB#ujtSO%zgXNuDG_hSJ~Rxm#t7o zMqn`s=QD+?Fyv7vkO|vPFMpMsjU?w}(yBoA(021(JCGhhmJ-j767fXln&Ua)b%EQ3 zME7SWkYVVRB$zmRlKF+%@bE|sIq~#@eU(&yj^*;b&q)z>czS` zux6l&YXTF!{!TCI2!Xjmy*^rpxKot-b>;q^iY3|O25LG!5Geh3MO3qVD9}pC?sRJw zpSQAYcGtG-%D@hNcBQBbj4Mr>oM|kJ+GgW!`~9FLZ#t3ICx+Xy5}r49!)v*Ij~8fD zhHZb>z$Th3a8Cw@PK!vFk|)aOovEs;Z`3`G&6;cXdXgHO|Lz7Bht0{~7*eLG1_@y1 z)EMD#*7%!*!QC@lts_NGV7g>I!c?jJ2xjS5|>5Ab&&3O5idn{ zb~rs==33*#~3dUu=KF>3ry=b6jFFd|8#_(ivsE(1CJa&k-v<1 z7NfA{V;+#D1d9wA%%F@bWLPG~IK*F=)_JLg>SjJwQg^wlqMnWTA7e~=5L3UN!h>V# zsfeOakV8`6k7(zH2ajoIV_HSVimC!~OvOAu(KJSjWto)$-dMMqVoh845ofLR!T|3! ztp)9i0oKE9FiwZ-To?ubvSml?yb#kTfF+Sm2!wodB#Z`_rC8zpar1ewa EZ(7>yJ^%m! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/internal/ContainerImpl$ComponentHandler.class b/eclipse-build/org/rapla/framework/internal/ContainerImpl$ComponentHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..a9d13eb9da6607c1e3411571e4ae91740a33def5 GIT binary patch literal 2280 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/internal/LogManagerAdapter.class b/eclipse-build/org/rapla/framework/internal/LogManagerAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..69619edf4a86c6ebdabe40139dc94879ac2d5c3d GIT binary patch literal 316 zcmb7=K~4fe5Ji8XG71|PhBM$oI&sUw7!0d1EI2_q7VTi$J*hMrujax7cql@(A;E-| z+n=BJ>etWq>l?r=h822*NmB2WyTERx{3ahsUtJrsXyoAP2+O{+;Q_F&Ojl>KkD!cDPm(y z&1K*RS@9<9`GlMC{}6*^+Gr#5HV9#KG-*;U>=Otl_7|XM3(wF;Sz6)T62e8vG1vhp CSYJi} literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/framework/package.html b/eclipse-build/org/rapla/framework/package.html new file mode 100644 index 0000000..3ea7585 --- /dev/null +++ b/eclipse-build/org/rapla/framework/package.html @@ -0,0 +1,14 @@ + +

This package contains the framework, that is +responsible for component creation with dependency injection. +It also provides the basic services for the plugin facility +of Rapla.

+

+It combines functionality of the avalon framework with that +of the pico container. It was programmed to fit the need of Rapla +but contains no domain knowledge. It can also +be used in other Software. +

+ + + diff --git a/eclipse-build/org/rapla/gui/CalendarModel.class b/eclipse-build/org/rapla/gui/CalendarModel.class new file mode 100644 index 0000000000000000000000000000000000000000..0ec2701f3c35480b2ccc182cde9eee12d70453f0 GIT binary patch literal 1254 zcmah|TTc@~6#fRmrE9fiK>-0TsMw;gikBCS38^)~RGPHNi%-*btb@~CvOC4gzcMC1 z_}~xlM;XuAE^KMNY%+UtzCD+3&o}4iukSwqY~itk34x_B>iUs9G}7<(wO^4&1sxf^ z3OmX;m=q`;$Rp_+8Fc-6>p-=wgR=s&8Co%6pk&J^fyqX_Ru%AS+1I9xbkKbwF#WV` zbfE1sfitD@J_T2(hl}$lIJh8C$Z{%1#&I4+%m_GLWp`zdiqDnG<8^Z&E_pbZrV2G3 zsNH_ArJ}t7AFmd+rP-H}Wd(}K=Cvc> zl3xwdzAnX{INlJgfkv^w!YO8z&@gQs2E;E%@%2M?1lCe!iNL8?!*d?gqokGbCfh-$ z@=lvhq^OWv{n%DX(b&Pdz-l(ew-E{WA&lPp4Zdh6fdcbGMYoM1wJa+|^w&$}H-A#1 z6ZWJI{Gnjt#*!ZE!ctNG@?Y|Ylx!#pJ(4^JN_aUY(U@faA~aNt2>pls>ENk0Z_wxk zKN-B+4Es@Az0iD9y;BRi$vZ>aNLPf;6rDw01zK;9-Z{90oFi|8EI&C#yf5TT zV2<7{S%>Z{`&rdh@R2oh&CAQX)}urpQk*Y+k5jH@aes0m631wB(C>B_)w}CYLuaI#J!iD_B1xr^?j@sh&DI#fZ9Nrb zx=5EIsxYdqbJ{7lwnE!fWfaYX>+wu5YBXE_>XwMnPKD0X1t@f-61_Z|2s7f76e;zt zPIx-zM*4FgYfyZr%||CQF?8IZZ!~nwXd52}`jdSl%xj&S1+k3msOf^}d`{AQDvtP> zMd@Wvxsz!;6b^&#N{bk=aB3{AELuT{_wY>Gw$A1}ac!OEnSw-J+JUgBmk4m$yMK#xu87-_w&&-7#EL_Ww+ik2L6tC>8u>Wb=%-vpALRy0S}{7r zBhA_Nj7{N=GP>>;j(;`Uq6j}mC7cd{{wdYjH!6Rn+7}!)sE&6TNOXYEecCNpe}fxz znLJ(zcs1ZP6!82Fx>?|@fO`RN2fPz-Kj1;YyFuq3-7oSV(8B^BQ5CfrHH!{fzX3hL B+d2RM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/CalendarOptionsImpl.class b/eclipse-build/org/rapla/gui/CalendarOptionsImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..e7819e63b910dbcfc909e937af044f9ba85b84ca GIT binary patch literal 5695 zcmbVQ33yyp75?vJnaSkQHbW_d0-dxJvNQ?BmO@jOWI827lT4V&LV^%pC$GtCCvU>c zOWJ~p*vbwn3Q|NsM2dh2ND@L7RIDN@B38kD!+pUWMWp=qzS%mRYQKJ8JNKS*@7b4o zUY>jN$)^CEDqL>31Zon=k>;d69@m>kCd}r59yhFEJsBRi&4iT-jg80MC>5BuNuSi4 zoBgZLfCrxXlMc{}4W!buA z_v!Ho!-GnJ1!Uc%^lFNwb(%DdEdrkYaAbW?s59un970ZR1srrjm0O1jmBYpTZ&R5;r{4QcQ7*49`22JFrTPoVoR!V+(VxS-55*6 zC&ny_)p#6^47GKH1M7L`c!4sWB`A#y)CcS=!vQB3P zj2g`>nRvo#-k79QWu7)Ww|5L*%j%rvP7muzY&IgOTLHb#u3B-^54E4HzUEMu#!Xawfh)*UFti_7s&H{P+|!{E3=!@DGlN;}b! z*kU9DdWzX|Io_?|N{KIJ&mZ%`#&&7e4uPYJm{mt3Y+R+`YFtC_u{hJ-qy8Z`t`j)A z&|_^A47T+D4b&-QvGUAezpQS*Y5Bdl7TaY&-lyUHN;{@UMY!5#EQMs?aO`+Phu_4nXTzSK?r-jw0DM-BhRgyhTq%3X3ywO%6;V;Vk#$M?I`mPo`6-IA9E>jq^% znAUKX(;1%75P+uwPvWy~?B)ZK>stTk_0jM-oI*Eq1mRH76ZDeDZSv>y8oq!p(lZ-P zYj|BE=|n-`?4nUWWO*%8@h@p;#wl|5Wett8%{`0f-1sUB_z)P$hOgmk9M4eR9}KSV z81RywNW4dd)>nBc9<^>Wz8d}{`3G!AxWE~ z0a20s8A2j5cQ_O|H|SNVqcfRQWjbu$Y%*W6$xJ$H(=&o>ONTT*WrwdLP1YZi+_a4> zH(5!4(C|lD8Wrop5e`s&!H6u2S2g@u_J(rf(g{7z7*?67E;TRiNBlPpf0xAWt|2vI z3b>@@^UPE)r>J=LF4@zH%qU4!vbmJXPE#ZbI0JKbmhzdYNO}Y&E+Ib=biLHM*hcolDO!c+G-->H?;omx5Dsg?a( zt(@@G%K1*M?B;4^=iypK-vzObzB`vtDWP_p2b7#c@45l;a{Ua}*Y8Hxzzn*laDKgO z3Q_sfTkoDie|^am2I?E8aAAY*h*@0ZLg#M82A27ZS&X>g+dPA@uEuGM@5DlKu?M)H zoW^C-xMBwHnZ|p`$T@C1$Z>QRPF`KQ8|?$TaqWQb`Wf7~Y!)~1iNXhbxA12gAD+SO zPuD+=Ue{fy)kS$y1u{#~eDU7nTlNlK|M%_{a_PK-3~_I*?J4Zb6lIQJ|*<%0BGgKvStl+5B$ ziII1XQyAYOrOFg$h+3*pk70HiPbu^hczO!Y@T69qP^x0MhnN-VyI+~c*VA{uF@+a+ zvPzwZG~X8=WyAxx5<9S0l#6O{9QLxNzRMiA4|V))VJ@7)+Bp^TnTgd{!Mr~WOZW{@ z%ddy!oDKr~b~uk;4I7wOCZQdC%dTQB-N9_Sm+Sq^q$d!<9^QH$>&ZKW@1qm1@GIpt zgz-AMML8mr92F;^M>L>UtVEwUllxYF;Iv~<4B|o&$3@}_Tq1Tt7Y`yP_P`J?VFWKx z%ZSWj@iJb<_Xx?I%yNO{Vi)FcM;pa0l==hOb`=)mhxifgdW8-2$2={i{1*I#Jj$rS z5_MXRpOR4T-qLq)gGA3u#jXet~OFN-{uO>*MD6nnZN981@o(_kBE-)W5?@i2_;*O9iC5CS(%Z5ZJo6ZSKaD>X zD!)CCMP=6Kf621Ag)CfTv8rTEj>%4VO4jVci4NwkWJ^pbF+K;w0wt!bbj?C3&Z(xw zs>@zYX4kNqu4Oe{$Go{7C*cOx)s0w*o0KXG9C2w?T*Uu_eOst(^q}Mo{<*Ab4&i@h zRV=Vl3NN(s=Au@hG+ zm5i^KZlCcjn#O+$Ioy-S!JF0nje~GlT!h1YMLGNzZ&Gq$QNB=^pbz8`=UlfB+lmms QSV;VEF=A;h|6VNK0{cvjBme*a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/DefaultPluginOption.class b/eclipse-build/org/rapla/gui/DefaultPluginOption.class new file mode 100644 index 0000000000000000000000000000000000000000..05f981d33a645e50ea87e684ba2c0d2f0999ef17 GIT binary patch literal 4270 zcmbVP`Bxj)75*LwMi%2uwy~XffyA*v0;X|{T^rW{Wa2tzaSbMcv~>pQA;yRqbu==# zTe`++n>OiQci+==P1_*qa!%V{+MLtBDW|93n;Enr9}}a)jAq`u+jqZv-_?Kr_xFDQ zIElY$XcFjj+^pf6`J8EFiBV7ZWk8@c?b!2H zR^aTYQf21N^nx_FIp^5MylXDWWyf7Kf?Y+|RPGrmUnYE_lD51n=cOy{v@8hp`I>?N z>8IscvQVesYGpsgw^6%iTDEir4%B(N5v_9dyk%S71%W5Jsw`A|^bw+Ko?P(;x~BzV zBP(g?16t6qN8qsvSank6jRKLBlaVnrqg}^N?9y;RU|&P@qIiThh8793rGk%PKMpCO z!<6Xq<1lh2@t*Wt!cLdAfoavDAu6zQlmU+ym*%89WzOZ8r1+?lHgnUaYpLh(WyD*s zi0R{15#NV2M5w8-#3-w_)`htNjzD`>dKYCO?OJ)yaZ@?7P#9;f1@?AzZ}yxSPP>v! z3Ypa&ZYmSXe?Ooh$tY^D@)u%ApjQFYC(zv0J+0w=A*P18>>0z3o00CQdD|&^F&OAo z`=8Qr3jO3pL3+WGz@s6kN+@_YX4+;}x`Z~0GXgE+j_WNb@v}P4frvDlnT$Ypm0-Dk z2CCwmn7b*{0cl$DLG|pdC1Mbvzz+IT#a@9YtI47C7FBjhn;QFe>oW15Itz8QVtK z0%GL#xQ^pEq2a2)1*KwZog{32H4P<-YXl~MAchGXisHI}CT&#~8C7M^>3AM9EIz9+ zDRa!6WRl6OS+)HI9UsO=1axL<$Ybfv6;%stZ-Bw9;>`{6CanrU37blIPT)j?-Bo~< zD_TXK(IGL<8X?zG3sx?}ULcSPc=7Nskkm0;!GaD8H`$lwEt^r^*qUR057?UR8tey@ z$()WQFa*t&Jaf_n@6GoTOs&F)_N2S2kKKp#o0&MEY9_DaW8hg5%@;Q+puZ7p4Vdn0 ztm+2+59Ne9(kd-AzL_}m&6dkPSp){(14NDLMV+8ZTX>Mi*r_uc59c2~aq0w(6c(K2 zC_Y7h3t^!t#=oTFGx#jcvc&|Y@ZcU3mW(Rj&+GVtIwUn#=oAlYrSfGRUFcQ^>(}E6W)5>UDfi_3$_W4wlBGXI{4F9ZoXe7uc;1*8rc!QmhiLNy2 zNEiFAO3Rx%ZsX%z_7A-c%I?bq1F`RYm7P6RWfU4G^LK^21N9tE1;nht_DRo7FOHe{ zaE#LFeEH-Tc%*)SDX&qb#=XHXv~g}0Ju7GU)0rG-I3Bg;)ad5VaDHa01$azNIz=}v zpRv@A10f-Tv<3rvpAw365|U>Aw;;j~heZBnh$ssCca96ZL)8Ya3O-J!Xu@tjMfeoQ zUVfY4_a@%=B$8{`msrRCnfSpqJi3Y_f9C5Zbnv=^X25SPc${LL`~dBN7#`z0^|uGd z@B~DJg^d$@j;Qk7WbOtvDRW2Hk(gOS&uDTT2ERO6!pUUfZ5)Z8F5&&jx40!R9j787 z$=G^mq8EqJS7rWaXg*5roW}9+1}ovj{I~rK=X8~>)^aGV zYSi*|4bxgZV*jQ`Ez~+mcL(FCdl+fLzi?$VQNq~RIwoe~A6moYcyD}4#Z$s`3A4TN zkM@-CVxqT%bTa8bWchvZTqIC(Fmex0Gb%0~XBxqfb~32F7{n0_5rkp>BuwE9E@FhA zYdpDBCQb$JgzoR;>NXU72%d(AA_F*re%!(`u^(YBSGcMO!x{ME0@5z zu##&2PzX~ksA8Gx5mk*3QZaTP6^f=RU7y$tu{i4c2fVHjOvFD~!lz64T!ILHaTRy! za8JI2?dyoo#J{wLulzGXbX6uw$gbj5ZhiF~>>{nhw5WH%^4H?uxQB14)ZHEH`43{u z&kx=}r1^qxlXCH?!}svxW|Z*Dgwj*OZxlSu=-~A<%LM*jECI_6-c_zz=;WPB;RFf1>04A}=7!Lsz+dp!Q1~qGD)TK0 YlzQPpRq8f`m72G)N-;rX6m8c258PF4+5i9m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/EditComponent.class b/eclipse-build/org/rapla/gui/EditComponent.class new file mode 100644 index 0000000000000000000000000000000000000000..a0d76dd45cba419f9155bf10c9a8cd0be2dd30cf GIT binary patch literal 350 zcmZXQ%}xR_6ot>_$B`cu39ekpYS_@ktxJO|5)&o3E<>FZX68;x0iVqU55PkaE)Ydz z(X{9G+^_d^z4=}NctkTmfpE_*R!--MR`J}b-q`wQPIJyo<^z-njfq}pmFO&1ucL{H zq16+!# Zh$_iml}a5~A_&*G`FkVhhPVp2-2$rMSq=aI literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/EditController.class b/eclipse-build/org/rapla/gui/EditController.class new file mode 100644 index 0000000000000000000000000000000000000000..e438a597146f2f8153a558f75406952156b2e6d1 GIT binary patch literal 670 zcmah{O;5r=5Php?p`s$-_s78#9JC2nj2;jZlSUI%?n_;p)zT%)BKot8i3bn<0DqKm z7SLkQ*rc7E*O|Bb-t7Cw>l=Uyb{tGGY$+Xjns*}Zg+1xjucfJ}*k~0+LOVz?--V=HkedvZUw5zDV?0)eQhDEaHTAWfb?x~7rol)?zW+tzUZ|c9#EG;v6@E^4 z-%f)3q(RYzU|6^I(kg{C9C{ftlYx15PdFzZPK(2+wxH;UqymM0xWSuL0r;S3R<@0w$~D^hRW z=Li*s#)aj^8uX>>iM}RCoY++8 zBjHqt|0LH^Cxw@RPR9<0)<{FY{-in6yx`L==AH3;OceO*X*IE_?VP1@=#@2jgqsXo zrB=s|es^r$DL)9>O$!M`Tzb~(o*FVd`sctx)2VQe=M=u1BL%}s{?U#DuWco?%@|s9 zpao4a_Ppd1uH(gj)|U7;RvF(8*tn2%TWaa$-{IZn`-_s6=$YwBDPAy|Cy7p#=S8Ep z-5~d&9l2EQs&K1~87DpquA#dpQ;~DYv%w0qi?BF(8LAXLrIYYfWA+WTuV{RsU;#0G zYqSE(RKA3@Nj7+U9oGnQo#G0uHz>1#TNH%#_GI0}opTkNxO*;h5BFy?w0|&}u=N|F CP2t@D literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/MenuContext.class b/eclipse-build/org/rapla/gui/MenuContext.class new file mode 100644 index 0000000000000000000000000000000000000000..6f4a674ec8c047179d6720c89a4af9b025912ac5 GIT binary patch literal 2033 zcmbVMYfl?T6g?BDUo0^-;9%V50Zrlu!7WWnThpY(n1sY&7Xwn&57uH9cT=-#+3TeL zqJO0gQX=(3)zAG=RnN?h*T!aZMoQc3Xw6*=d`F zR^Kk{TTZ{^I-d2j7sj-}{h|B3YhGAy-0n|>Lm9qfotyo(r-KFNYTJk9gQG^Nx?igv za3_$cyfR;#g|_Lm3U#k*JFTL?Os!fwt~F}aJsEO+w^}-`mvq88Vd+ZJb-`8}?&&M5sj`*~M5Jq(06nWst97Q`J&F2}fha-(@rvzO2mOmvt9xXg zwk_GF+ceuJX4jVA+8El>ls7Y#f7MWnR~*r)st6UcCo$GsF>nj30zdpO3?J2e;}uE+ zd2}Udt4U2*hjMy9+C72v2+y%m;IYm6N(aZiG7>#D8H28vbnZ6$J?qSG>gqt~Mq`*l zUbeX=aQ8p7=?k-Npny*~51qcpA!SX3l^pvJP zMn#=Vd@zPVbaI5ukT)qMS`)CBGTF)Ta(x=itHoaRmE3&LGgJ{M}`+n`py0bC>ek70)K2EWQ& z<=k6oOxLJm4CC;IH$kX@8S`i_f?l7G74ZuP}WTvn;pBf;U+#!*Y_yLmxOGk`0JtH4&D@ zCcadJv-k>MQ)+=CwlukIdSr7^@=52f6!*K%vFp4lmh=OIVo`j9$Al4hf^Rk4Bh@=F zBjMg*`%jdACAxnaAqD~K3d~UZ84V`z49_P(%qxh!afpqH5HC@g01;OZ`{NLs6CtXo aX^0KoNJO3&A;$BIBl(e_i|o(J1X=bO?i7-lQm`&cxx8bLt3@(iK}D zM$=uOji~O*^KF>eIKD1tXTtagp171&I%B^yIhop~yjBGhhX3F5FdPvGZLbWpyh;}l Of>IZ;ZwS56qyGWww>g{u literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/MenuFactory.class b/eclipse-build/org/rapla/gui/MenuFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..22c8ed64a8fdf6418b91870efdd8d1246da65d30 GIT binary patch literal 602 zcmZuvO;5r=5Php?rJ_IuzfYdvpiR7Dybw)Hsw8OiytGTRTDoMrRrFsO6AvEz0sbiC ztQt|UNq0JL-D&9uD}a4$JD6eEP&)QCA12(7bLpRoG(YB{QTpCNfuVBEZ@HiF zH1<2aYY`fTLbnqfF?hlF>fC6V#w~`0gD{b)G=~hcjpikh+bR++7O~`@#84h<+6m9H z5|&YBaAIN3_&_k!8qMjtMKDxLn8Q3(2xKbG@{|4TBsN25>-jZ|soV4Y!S z+(}=P>pP`y{H|TW50Rlx2D%~>`j%Vem3-hj%Ba}6%5^A?rL|u9wXQuoS{e{dp4Ll? zwezB{SuDVzm!U}6E=BtkJ@yRu36)1mX5i83QUq3rTBXyX_6Mk;PLfs13l!G~+4zeP Jy7|f8`T#1UnK%Fd literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/ObjectMenuFactory.class b/eclipse-build/org/rapla/gui/ObjectMenuFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..dbea4397c1f2e6572db3cc58f8c56a6c4d4f3ed2 GIT binary patch literal 248 zcmZXPy$ZrW5QOLaNz}^9)>a!2Y*PvWK@qgHI*%n>JackxL|@Iq2k@c99I=SlEDJk3 z-^}a%cmkNCAEPBOc0Q9{ovo5tY2@aRljb!QWvVnge~-}-80PA#q*X=s6$nJylVTFk zlhv<9cwV@I>BdRpLbyvxVLVR5VIO literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/OptionPanel.class b/eclipse-build/org/rapla/gui/OptionPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..5f6626db17d5f33d32dae84db7eea515efb3c6c4 GIT binary patch literal 378 zcmZvYy-ou$5QN8%rgj(k4Cvr+H>JQQLL5=kT~ z%eynXv)|{}`v-t492Lj}PJA#jsClKNX{{X1qxEjA990E!f&Hm^RkBjf$kFqZbS%&n zI9)eI@2i=O@;;4uvJ*or+Y~rn%E(0DcHwE?t&Xxnqz-t#i%ziWe2?g@z#V^?V;M<_- w##Y2fuTZ#10Qh8Hf(#odm|cg#Y@vq)Xd64++vRG`Z$BYhuWehCg5a_8h<|e5)WJ zkTk7@tfdw6T6UpqWGCg*P|h~Yf`X91;RdfS-5MJ)SBhpqFW3qq0*NJURa?)N){MeJ z);%l`S=I7oy(ADHm#?#B+sJ3HX~jVSHE)z`y`Wp;ybHAY42CRA+mPEdi(D`YhW)<4 zvDA2-#=NDi=xe66>~bA33%0&)5B5$AL`TuyiIWkxCP5Q*Z_;>%ld|l)PeGQCbeR@O0A~>HQ$k{gK4SpfQnwECCjra&fz?L z5J=#xAHzG*0Au@>1ihf*J+KlJ^Mp#=_F`ii-_MVKl<>33YkHR(6v8p^HfDsJFomVe23NDw6-`iIW#J#$nXRKJ=S6ch;f$~QO`;PJ z27hB50#mk@TW0?|^GU(H%xzx93JL;>Z93ynAeHi9ogS~&T7$hN6nRc}hob_Pw>ylT zbHk>YXOTzo0Jf}wE}6Ae74P6(vSH?$jZ$r{vZC%t%P&-X2@V-`);;Zs)8eZX50^?r zr_8dI(=Qrw0PpdA4Nu4{hC1ml$X^%%{&D*AOB#^Vop(9v`2pd27gr&!c4H5pbe;(C z-kHv9VsH8xT4pxU`UD5~*v`j;Pw-YcRKelLGz#D-uWfVy9Okuy5C?fZ!oN;*JMSDY z9K&(02#X%1=uF75$E$St0db^NEd47EWS$}uz%N|7;1L>uP<60a4J?L}{LeswQBn`A zz*s^&(Vos!aC*Xl?0bqcLEKJf`ui#vtP@W-mOY4&Qi6n%q$K^MU4)vScFzw{N%liB zi(nsy_$1XG#)#*8*b5{|uW!-)N4M*~qE3kY)cu4nmT1jK6qhkZ9Dyr4;$7W_canIg zUW*r!p8}8HU*xSYzG2C)f{7mxdfeCl6R*!OIg`%x^>56jkhp3a( z_Oi>M7WXhTCx>L^C@KqK7_*MHhj=1~IcB4qcsk};Vm-{k0u~vGLCZKovG7YAP%x=r zN$h5zoQYnz=P0=>p12G*_&e@Zu>1l`TWf37;ibB!9xu*8ba^nBoc@t83G*2q%yev` zR6%)bYRA|>R~)D|C)M#RJ(?i?!G48vMBr<#1Ni1Yb2N=& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/RaplaGUIComponent$1.class b/eclipse-build/org/rapla/gui/RaplaGUIComponent$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b9d5b6e3392b5d98d1be238db8ed31bb78fe69d4 GIT binary patch literal 1116 zcmah|+fEZv6kVsS9a{!kE`o9qkcy=!0~($%#!%5T7MeiCM{{V8WpFyvOsA-SU}B63 z#uwl43(!DJeDDMODC0Uq<)S8?WM=Q#owfGb>+Jsg_5BBc+n6^H5t#J+n&r!eBduD? zw$^p_=t&{()f=9x+#s`HASRIBk-O4zq+7E}TRW-}7>EnxPQjHwfTmTEj&iHgx5{>1 ztus}=@&)3-w%yFkvt{uV_TQdM0*PJeWSW8W0|8MGF!VdANORYA?ckokbhaZ;p)j*4 z5X*a2l>mn@Vc??9`b;E{)Y*WEE+mtPV$g(%A%SRCgHlD?Rco#Kmh#JT%TdG>Jx;bM zeOte`i!nWvz*HwGnFS8jS5v{Vth}iCUdyfKJ;$Rh16isphW5&rffZJl5*Wv%feC@} z4qlnKhA9Dat+e*+X=(j&xv;vzN&hCKquXA~FFk)CU(>_7?Y08W)V&c<&#G*+$LXQM zvgbKvyHQrJ=>6cSy72Hf0^fFPoF%zIx{7*eYikDoS(`aM5M5kxD~{JBWK{**Ue&}c z%(1N7oLi2$?93SpJ1rCYn+4ZZe%_JIrfOn>CmH2^0nv0?A2N{c(?=Xe9xyjP%G*RY zzv^MOj0j?k1G(8Fq;jK2=*^8Cp+ENxm%gwb!DT*^j36R~H@L#gWKIl*F%s5CG1lhW zwXxMNVaprHilkeE#J=b6l z7Czt(K86A&j+?XvupKfKsYNZ~dMJ0AIc*qEX+Lft+tzoVQR|C@&5oywhrmx~h$AP& dkrU!bn>dOYjYkf%j4?{PNom?6{zVyi{RTcq^|}B6 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/RaplaGUIComponent$2.class b/eclipse-build/org/rapla/gui/RaplaGUIComponent$2.class new file mode 100644 index 0000000000000000000000000000000000000000..b302b7c999472839b540bebb66d4db70526e006c GIT binary patch literal 968 zcmah{U2oGc6g_TAvt=303Y4#nZ7e|BA%glkK%lCip#l?(zPpLnc}n9dal7%ekT#Hb z;0X!Dk3w8$6%RvdEZM%ckI(%$_xGP~-vPAIvQc8#ROv8C`8ejma3X{E#(MQ}x1&a5 zm54<9Z5w3vH*sr5)g>ZBzT7$`rc-#^UvT>((N7}y ll@ry^!80QIhE3chDhpdgQi6|rw3kWf`)HEo(3^2h<1bK7^yL5m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/RaplaGUIComponent$3.class b/eclipse-build/org/rapla/gui/RaplaGUIComponent$3.class new file mode 100644 index 0000000000000000000000000000000000000000..06f7027ae2713126b24741e5126b6aa6ea495788 GIT binary patch literal 1005 zcmb_bU2oGc6g_TAvt=0#1=^xaKNmnn^_#O=nPsxEBI8SjdVc{mO%Ty?R4YYbMyK&zcNl{=$BPiA|fmq>HY6+G&`moONf`eT&`(dV`}Gar_`IRMC7^5u}W38Xk0?c^Gw+RuV#u)zetJ30$e&>B=0$` zEwa^M;{=z3MrN9v6#k~ITUZvT6)P9zB2~*4SVX*ncxlj-w1xl@H8El6j%BsoZFaYSkK$vP za7p~(1NaOk8WT?%WNPQq>&-nwNMjoCS;Qmy3aWG~7W8@>dskCHxPc9GV7jufs;S+?a* zGrUYSq;LqXF6klvacPE@7$Od`Di-B1 zdQ(9mM~5{d=QcUCq@ox7QS>o%9XHb;Ov3;!GPGIVVQ8x6g}k5Ca0!>G8Aahg3yRE2 zcS^(1p8L6qG)AHrCZ_e{JLtEDQ5b|F>mV|9tPcj8&C2#MYFN(+MKQE4_`L8Y&nvY~ zYGtXQ*{gCktK(c_)Gnxk~+o=zbxR zUr86=0{Fx(L=B$6Fovs?U_7|Rdda-DpK+RkWky9$?_lC6=kLVlM;)lL531Ba8E*V1 g)=$Fvbs|<6H;G9Iw{V;G2<~7C_sEjEk{zSx4~48bdjJ3c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/RaplaGUIComponent.class b/eclipse-build/org/rapla/gui/RaplaGUIComponent.class new file mode 100644 index 0000000000000000000000000000000000000000..fbca8bf330206748efc585dcf8c0358744aeef8a GIT binary patch literal 9676 zcmbVS349#ob^kvd9(gskW!aW3Y;5_q&cz2dSjGX%GM3R{Y+)e=XA%WT5(|vPa&%Wz=JG$BhRh>tyV^-KYo({JqVu@s{pkiAj7L7;K z+XbcT>JJFY+7d&yfl9&bpl}Ew%rY?>a|AQCd1Gd*>*(mHKQI%5xhBdnLolZ^8n?U0 zM+fa>uQeF61=XF2h!s0vC8PS?ySaK@XWqx*q%~?EPb80KJ&3366X{m9C)9o-VvnVx ziFnGuLcxl2j>-v!P>Nc$bUxilAC9I3%YBm-1(Z-2k%TiX=kQ6N!!%+$VyAbh-JQ`? zTF|_%-Zx6;NGB4pqtSHO5o)9EWFi)`lPcai6U(vEzzRWq-k%E$GO-G)>CwKPPR6p@ zjb+S=kA(N9lhOD{Ylu-;YhoSh2^+23ZzqpMBMiWrb<>6GeYbiBkJynkA()jqoH(At zQPAWcn7iNVr;$fU#>zl5fiCV&dor0w?u=To#E4oMHgOr&yH+YP47OlZ0Ks$M9zqjp z4Q!%Q`I(py(R9>Kg?HLxc6`W=M^5I9)#)~y*n%qqPrX42Qr#K?%9%yZKkvm%G>Fl#_85fA4PW>hE_cEw4f8tgK0Eq1#B>atTQYlJkK z&j2|!!B4tM>_Ml2>pUi3)D$MV&@Cvpl@)@9bK>Ppl=oWeL5Y1ru)t?WF4E+0dE$6n z9iCqdZkDYfhk=5X=SWo_O{uNaKCywc^vUKSb1Jfb>RJ2KR^(`xHRjYe1O1F>9;}?C zfp;=@eU;VAAHkw%sv~|Zanv5_iC@##+kT9+ynfssC-AJy0|ssu)Z{g~yxK87JZvXJ zI0Q=zUWI{(VBvJBXl%$%R)D&y9nf2bvYEoPQQC}{IE<)E8&~y(%SJ98j$+h6jQyo> zViR#Bn0F-HxZN{cpwcTlMMxFGAZ}5I7|R7k*inC=0<0LaRRxckI1Z9xhBcms)Nbx`Y(iy_<)Jq zaR>V%6Eatyh&m&l&8P8nG^QOn#wyH4*IJ1?akqiHNMr}mg6Agg!G}0YG;JrXv}RCE zKvRczpL*`aM-6-=%Q#0*_Nj@F;p1#4ai{nObK8rIqVP#Y;ZuUe>pF^I=sEovCT4w| z%70en?=L{@oRN0PQ_`nVx+jmkcR`^GLl^wrovom zIU?Rt%KO%8;8{UqzGq%=gjR*;OibZ7+{W3l{)%|MmAGqDpOO=!vBB~9P|Oai;11`K z1pF4BH}IQ*WzGc#nfNw-E8D-+8DHaZP<2+5HuH7@FKCVU?R<^!Kd(Qa9{i4p-^K5F z*{3M#`XH%2qUC}B?)1q!)BV1Qm+=QwmSQUV9%?jvUBc&JE*O4su9ZUgBYe-mciD=H zhQx71$MkX$nKJRm_!AO@6{I&hY7cM=P?+=C`;ML8H}M1fnKH^hV4+tQ9o;#3?Wv_S zlcBwU3jqR>Pd{SkE^2&Hr$hJ){FQ;fBzpNS(H65(^zN^<_UhuSo6Bi8R%+kdiIrcT z7zqB}#6RF4nQBzq<|RRoyN}>1H4uAUcNd6|x&MTJG4RiVOY=S!5j63yT8yeVOCR?y zX`0Q2Kr*f4e`@02_2F#a!}j=)f&ZAcPIj>MZ}3*F58+k(m-73+owgaYVw!xbZo^pH zQaU*!N}3Z$U*%AMSO5Z!7bB{pS%n$l|K)xnKks>^LwF4@DDH2V_#6DKetpx#TP%7` zw)n$y5!vDwXSNVbDKVuq3+BGW@zh>BxjQk=rO#_pZpsWXh%@Q#d&CyOUcgj)4c})0 zx)^plelu^l%+5~0O%cPlpKD-tW-jlzs`3zR%{qo}x>Qe9S*bLE!Exn+)f zf|1>NR>(@0!z}zQ1%pg$Xs9hQc5<(kN;3mixmEB)ICY#`wy&s49+;Yw?8%)_K+#%1U=hrwZNx z5kjWQt}x|FU4|RlO9&I)msV4@$yKZ}oIr3{5YatZAiS+}*53SmL*8)_1#n|XwoAA| zcCf0AY3xF>Q+65B&Vw&M@I`P?^RCVBD}!wDk~etM(6w2?*~RpDZ3@Y5xlZH7BZPx* zGhTTHU0fV@O1CLJvX_}an7b0=Dd(ig4de1@VGIZ`iVUG5L$91-m5o9Xw75Dg8zp(O zYul`-&tPsgln+X8ZZ880^I>(5#5#I%$4*Uw%HV4s(L~HT$peRuo(`V zXj@M8z4UY@|VwS)SSXO%0)t{eT>#DIbV#On(Cd?$xpC9z$f9jUB3!tx;_AYBo89XFSFpZfvR$)QhW2x59&$i1cBYalba29nLta%>GpXOKBq#4ems~lyfE9NQV5(SN( zito|+GLG3cg{J<73|c0zp}XYN$=&SV{oFqkI#)Ie!OM;yOOZO|ds6>8#<{@k_W@Jl8BwC|Yuu62=dt0;6b|)I;9Xr!QyA=Ts2<8-_*op8z*u!E zgYgVbX7KL5rt0_UM`H%>pTq|R-KCq$PGgYxd|0rxyy=cISx}b2Cn)%7N4~Z^gZudH z0sXe1tZM1Q*hJ|E1rMOnnX38=oWoW4Fw=S|Cw{#8bbiXyFx>&4d+R~Q<%~w&MSlmX zc-=<|--y-dC-MW>jCYb)Hxb)|*vT`sZ!c!>QscAu z!wmkkF`t3ej&CP07bj7RQ)Kh4j%jXcukcKp%jd7)&pFS0Ju~#?+rrt@*jWwLKg{6A zPICV+uiEACZ9Wdq^3=`Oa}ZC7O?yB+m)t_n|mh(P}jhOx_F9B9^gA{TN zl1kB%r}aBuBj?F1g;D0@{dHk{$_Hbmr?yPyO7%1qXJwwFVt%2DXNsz*k%dK6EOJ!T z7OMD0Q5B12Nf8y7Ix3bHs+cUILZnW##}#6+LRDa(P{lWks#qnf8RuXl`w7FOxf`95 zHT@H^u4_u_`PtarJSA);jT6$6k@d|D^W<`t%#3VlYR<^kKA+TfN9t-%>KeZkJB_sU zHBQOy{)Q&1+LMv4e6QTVj0ex_EASl_m>1X(ULr$YMhlO(H{-i}6a51gxL4RZe#FxE zW4>bispFR0a-v>{X}Vl5`-n{iEZHx;bg>FcZOL!2BK(S6c$0>{1s=d*jj)VMnPZ$=@VDgf*&=s1_;7mppxjB%%lT8G zyX0;fHHW{7xt_JOjMApuBOl^3bz&w;-oP3|2IlYwMO>A6e!R}Xx+ZAP`q9!%qd#1N zt!1@kXXRs)@)=&2*OtGCRgG+p@?b{3a2kuY&d7Q7h|eo-pV-#IY;Z2rYn0z?|K(DF znXCrY%>Sh_3oB&~!ZMdX+*rt8C)E19Y|nYwp7XLj=jGL&m(~2O%suiLyJ}FP}a|KO!m7n}in!L~L-sf)j^Zx(}Aru?{ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/ReservationController.class b/eclipse-build/org/rapla/gui/ReservationController.class new file mode 100644 index 0000000000000000000000000000000000000000..c03fcb645cecc93e7a826c8f3c8833efe5140574 GIT binary patch literal 1645 zcmcIkO>fgc5Pe$$Zqm@Cp?tKI0xchL5m@3H1gb(fMQxQYE?5*`QK>kp*Y z5vfRqTuT)-RiqOY1R`-zV5lDQA@>3v^}X%xq3|_Bp|jm?G1S`GU%NVyQNO`3`^XPu zB=uv4Gj(^LjGL+_N|?iW2W5sz=F<##nwBw-3WL)ZdW(mGVX^N19=8aFg)+|K97Sl$ zNNf$lu1NNHHz1c4>wHo*7ZQ=mcatRE|63BLCso>2 zgTxolq?tL(xsqfP^MT2qW)uxSnzal|W@ORV9A@FrkD*Ar`?Q*;SYuyM`i$x)+RUIv z?-H%RbuwMSg)wSo@FFgf%O%KE0dE+Oeg6A6m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/ReservationEdit.class b/eclipse-build/org/rapla/gui/ReservationEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..3d19fd1a21830aad55192637c846ebea60eb6ff0 GIT binary patch literal 462 zcmZWlJx{|x4E2??fdHj^EDS76$-+sjolq$fQYxetF|ZvuH@KvCQF0CN*BJN#{3wJ| zq^8ix^0S})-uwFg_ymAUIQF3>;LH}OEL5H;nJ!3o1YW2;40 zm7-g-C?E=>xFK%7U8T_%;FYTS^~di!8Z&g<1{1p|61<^|o0GNUb$%DM<&FSOg);|e mbDVAHKpm?O+l=op>TwMi*@OM%qzecCCcVE1PY;>bf}LXQWAxh#a^rn_MLUUB!o|+-~;$5#5tCD zh-zncMx&km_Q>nzQ*=uX=^((tHLYr{1D*(B5%AJ*`l;YjE~2EQ%9VON!d+oD*10Qc(vD3sdQ_&(23ucqOKb} z4>%q!2>qLvM9TW4D#AYD;wSvcaUmP)p4GIj@NFdYyq$TcO-48!44WHw1)6OfVrO>c r61mm65YGM;zpQI@3531yE}#|u&_OrwD6n>zy|C%yATYvV?ZD9&G=yd0 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/SwingCalendarView.class b/eclipse-build/org/rapla/gui/SwingCalendarView.class new file mode 100644 index 0000000000000000000000000000000000000000..ffe88cfe41ab68ffe26cb19361c025d787c7b07c GIT binary patch literal 336 zcmZXQF;BxV5QU%HQbV9n76ujsQ@db^m9fBpkSaB(%qB6GTh|vk4(V@W;0N%d5EmhV z5QA;Kv+uk2{PFqr4&VyM5bP{Kl^6(&SNc^euY*}hFjaCCYKeV;i(kY`)Em=M zTz><89`bZ1-7q9Ko=0=9!0BZA(0SUbx-+cqXSAs(n2@doMs*R%`$x)?j_e`JsfmTT ubDn*i{7ZP*fjAC(fgc5Pe$$Zql>~p-{p%g-Yq6SmK6)xP^~@xpkz*~xWU9iRAv%_^&CEPN zL7;jezsgX{Gzm}p7Zh88LiaRk3)G_Ab!Lr9lcvDt$5^XW*-rv@8i(f`+{y-2!WOmz zlm#kzPD{(lq>LR@1cHQYM~+Bfw{dtIw+MmzW!%L*Mu=2Oo$07grYHNFQ)*EbOMNbl za`tj_FE%7C`9svudrr6#Ef6)nL^)?lt+I+H;b5N1k&5knOyO!)b5YM#IGHiU&~kr# zlRO$TF14>>8e5g6lK_te_H*o^VM?>iT!vlO-+zGu<&kqV9(mq0Cqm01m&*D+-w0=xI}5BF;9#klTQh2r*4JTfRA<@L#B{8j zYO1c5rPALyRkF5Nw0tx8PB^LYUw}>j3KZEoVvl=@HSq(b@2GxbV*@q*mUsm!9KMYQ ue%IZdT|DHJM{E~(-Q%4)p0FYC6whvWp5ul0yu>TNzQ#W13B2)WZ~p?b2M7fK literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/ViewFactory.class b/eclipse-build/org/rapla/gui/ViewFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..99ffe7e61511e7c6b232aa2bbc7d69d4c2b5da0d GIT binary patch literal 678 zcmbtSO;5r=5S>M&fbt?atvyu)QXf^6JkkX zNL*9Hk|mH!G*(oq^ch%tu0!B2%_|&(2Z(F<812uPDp=u_E9|{Y5 zj!W#a5=yqAr9L^sfWZN65A6*cLWZJ7w-jU{L(7tfBSMY|NmDEkQiAdxasm}fGdN9R PHHl|Xi~62N{Vu)$FVDc; literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/edit/reservation/test/ReservationControllerTest.class b/eclipse-build/org/rapla/gui/edit/reservation/test/ReservationControllerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..66e923eea568f1254e15fe17dc9333bb1ec893fb GIT binary patch literal 3596 zcmbVP`F9i775<(qX>2hpF@~Tlm>t_-rez7lVlzf&lMS^El)_0mNYC<^u|{WRY#?p6 zmJnK!le9@`Lb|Wez4^he$~ighPwna7)1Q0ty&2&d*{Tn%bZpOZ-@V_x_q*SF{?~v0 z`Wb-T_@jn|z#+#i8?ITkO`|+*8M0*ghATbk&X~UCR19BwzA+L#7;q}S>)5t*$M{A= zQlPWZg<9bmC(fTz1_P!i1=0ttisc^`SkqOQG-pi1HY;Ug)OW2)IoEwbAUWWaWCks0 z(~&}2U}eFo$l>X!tBhk_wdte1;1o^!g6Uf7zWy-jPgtJ7kwPPc|1pak0aVPXAjl$k z0x56W^7(RIS9f7@nu!?WF0HRS?lnW@nA5OYAlvNKs9KppJJzVY)(UjQ3ou}to)_fb zs){ybS`~qoE>)0B{zg$&RR=r`&kC%LaLvETK;U^D>(ME&sx18h+maQ3l&!Ohgu97w zqp}o(mqvq4ZW%UWvxZFq>zB6Fu?1TN+8AZfESe>{-`L=OJa}4nADYnnc64j#BFe~n z6GI(6*g+#Yj}grqbliU1X4CzU01vt@$MRvOmTyVVC^=KCn-Me3g&dpqE!#M5`f|~I zb3Zpp0jucWtV*WA##rMPW3vN;mhDS7*WG+s7(NC(sA{i{T`<^3)fbM8yx|LMX)M`1 ziAL1;)va=E_#*ab*e$R*s+t05mn<+bi9Z@ z&ZX@**QToi+v2o*JeRRiJ$rRh78TJC3iL(w=@W^qCqlo^})73FUSc1CEPYsDZb z7xNs|bc5%ct}jc=a1y6AoD%3(DL;{49cPq$C9TT1Bd|Q2y7`gZ5KFS@Knmz?q_tGG zB{?5MPYDx6fq__n|Fb#tv`VSbIq6zXX<&j%O$8$x)i|HmaRC=YT89S2xV3A^(FpAV zHMpeXE4a+MxN^#wks+(-p|g3Kc{SrV+42-OEPlklGk6)MhOZK1B#2`Zt~5(Ju7VXv zdA5{fbh7KTqDl@@$2iIYD>#XHa_yp3DLK~}l=>K-=mjIDOv!hP3xi1WYLdYOt|>KN zr>>@SRKQMa^gd>(Erj}gI>4LSb_L4BQ^v(MOyjzS8G-H5{45l)5m}X#oJx6&Dx~8E zZgNI1=JRI?mq@}`Z&>SnKM!m>6VVSaGL{Mk=H|lER@HEDbCaA4!*77TMZ)D+*Ze3 zyd%)+NqncgMCrQFYwEd@x#HPse{5B+0;EK$!KfE)9UX-9lr?< zb-`X?7JX|*s)G~xV7g@%YIPF`6q!+H+AT_MzpCspv5TZydD*36bJOJL1uBu^70;0T zt?~Xa68r+`o*i>&{WGr;oJ#OVJ>5vlP3%0dHnf6{<-DUkR$wK4v|$yVs{87xN60)v z`=xd`P};*|fUJre|SyplZ&+ z{SpJ@HXqL#a6wmR@LxcA~4NrHGKCm*rp&hfW@$3>?5A?8h-y@ih8yo}0)^IEXTz-Xfpw^5Ak0NAY9yW0qEb=TYPz zI3Cn{B&=1v-WhyG%kQ(Yop=~jK0)sv2bFK(%G*KZlk`4`kN7;r7$)xH6SD6fk^KNa zWRKhMBgP8Zd_3qA(EbR544lPJ=J2cbU(ez}l-G)YrGvz9g3LV`;L^FCtMFU=j(-Jy J&)*6B;dB0J&>R2& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/edit/test/AttributeEditTest.class b/eclipse-build/org/rapla/gui/edit/test/AttributeEditTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c102cbc9b249374ea6f0d0fb0af2c6d575bfa0ff GIT binary patch literal 2636 zcma)7SyS6q7(Le*3`QY|AtcZy0U8?HECNE>1gE6bEG0E04NFRBn+jVPfskBDX6e7^ zKWSggP-Z%L?DY5axzlqc$4hXaV@Bxee#<%E`uD$o{0U$JzeErcNZ3wZb+m%1srjOz z>N&$xJ>B)x8P9W!t)i#T@zW~5L=YCZTQ4ppU3Fn?Q3|9rR~Kk`VpxVZEpQ{A+0_m- z)zqxKxQUT4o=Jq}nlti3r9S#44NZ^MVQGrwU+;-rV{Hic2f#ccp{+qk>4-a78M10 zW#zKRj#T%M?WI0T+vPh#5SUi*6kiHlkyTi^Vq5}(4YU>)r9XkM6r?d5L_TBZ^SUE2 zQjWY<(6T$aO1GwM)wGQ1%c+5QsulAB-IX%ylWp4PdYa?uxpsVwXAvxxYxI8^RPc?Q z6=B2Lw#g_c`$|vr)nun(M{q7l1U7lRKR_;M3=WWpjNP(+D68tFf)%V1gfu1as9_@K zWN{p)YJ0SjP*3ex!*>cc@S4n70hOq-SecbeOS2;H7v}d0e!!0$ zvVJXDuIF$*c`r0eH)V6y0+$=Xvu$&av(fM8S4NInoG(AobCrOUdoPSz(r(t9W2EK{ z-ONSt23rcU$Z_!QYlT&2v2H^=-`dr)Ua%o#LkSGmB=xcoF;i{YyN$)*UZz?N3Dddn z59sdrW}}4_g$XNyeNKw%toA3o0viQZ2qUuWZ<(%gJJzi{*-mY(xGDd83X1;5^Ml3k z7zeuCG{m4ed1kY-0R+z56}#wU^?5_?#%fQ=*h=kDi3{Vj-^9fZPFaQ+Eqq3Jnns8} zpd~qUg4W;p7DANIsQ>jgCGVh}=k7oX3a;=(d34|^ZM5MUu9s~k%O0XY;{ zO_cC3Ib6cy>*62&mGA{sW@2-vSO}p?qnALzwbYFJ=tLZYNN}zvNqfkL(igZZ(`v>P zGFT#6yJvM7Hi8Rr+CFoOiYD`N6t|opUt;; z(-SU1t8y4XD?N?UpGsU~{EZXm1c&znVx45;KlHgw28b$L)+$^U%3Q|CT*o#!PjPGH zu|pPZFtAIOvKVH0BhwT+gJ1$n*gL_`F{cE#il)Pl*kgK`V&YT2XC=_W0S>7xaKvW_ G$NvFbg|rp` literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/edit/test/CategoryEditTest.class b/eclipse-build/org/rapla/gui/edit/test/CategoryEditTest.class new file mode 100644 index 0000000000000000000000000000000000000000..7e14950c4dbc09942d862bc90cfe2055a2f76580 GIT binary patch literal 1961 zcma)7?NZxD6g_JU!b17LCIm>D7z(XzoT#B6Y3np?<3Q@vkTwPyO1~C)QI;CXBguq5 zNZ+IVV}>%*2k7(kcc*tHVcCN-?J%>fcF*2>&e^@!fBo~vp8!^1Ye+E^T+cQ=-fnTz z?nqNKWnc!v56mhLgzb92tkTLREoewH+#Wkl|XPe!!2o z+2W3EHUdvNcBQz@kgmE-p<@IY1EUyYxKfvn*ytSY32&3{wJ1im?pnOH%{{5UGrce_=az?)dou*h&L zIW#P?fw%BBsZgw33V0kaEDrEVEPSq>RE(E<=X$ zt#OMtN&fs`x^Oj?A3-V;cn2#Q?vaa$n*EDF1MlL!$l^w)ExdD2=#dZPAoFD)h2JX( z%J2a`)Nr5SMv~zI%)m$ZnBkH#D=H-l!jLZ%cl!*ua4hudfq_pzHI(s1@NDluSY-4- zJw=Q3$dt368TcHJ7>w{<4%@CnQ5oh)hI(JervHkH&wN^S<2}m3@YujA)`*~bq`fV2 zEqcpCPSt8EAHx?0YIqvmOWn0?;W6BaJ>zX|y%Z*;ZMjZgMYTel8Nn;#sFR>`$MdR& z^M1g+Kr|wKJ0&$ zjp{FlVR26vc8B#k9Xr_7@GZ5tq|U?cVBkA^&!EwTZG;_aD!!|MZmGP^jN`ic&kgK_ z%`z-xZUyp4s4hhuxM$P5$_=4FrP^>io+Z|#YO6iN&s+LkMGN;R{0RLb0BM?0OQuny zuZKv{A23#0KEe3!G)qCJQ4d#V2sw)h`kszZFmQ>!2#?FSLNPM9ipe-uDbApuA-j`h zCz$$;kWoC954ah|Qu!FJV}|x-X|5Q}g=~JMxnfx@b#b$PhWyU*DHa$`P*^Y1beZ84 zrW)QSIV)XMO64v-olL!$WPf+VV^6YQo?<)Gide*bEa4F~IwdV1 zrHrMGk|od4AWAvvF`L*Tk{N8{8(L9@Jtnl0l05?>kzKqv!4KIVyZ9-|csYz%qKM06 UPC3kCM5kb(Nv9bEjVbK^3pI-O7XSbN literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/edit/test/PermissionEditTest.class b/eclipse-build/org/rapla/gui/edit/test/PermissionEditTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c678ae5032b291797170f495152677879892983a GIT binary patch literal 2689 zcma)8+fx%)9R5xSSqSSbh>G=s79|Pb3f6jw+A4y@Mzo-|)V8`LOFX#QO?Nj4y;=L% zmp=5VFMaJ>r01Jc3(}Fn zC4qr-e#Klh4cl}|#zNpprDAMd?UdM5aFcbyNrPZ}SV7Lub#N)iGt%g*t2N{9BO0%^5 zB!)1m7#tHglWvLX1qM1*l!ARihk=sUp4c^djifl&# zFF!A+<22r6oznPa+h%D7sw`QH57PHqFf&Iokd|*0*I9J35Uf`$I%FxxWl1IGd`8+# zLN3!;%`LM~j20Im!m~Qg;XEr@Rl300R+^eFrk&XKEY#yW#{G+bjXz1VZ) zP{%B;3uu1bx-#A=7oq9Q-9F@y*Kq@L0^7`DF|s3&>8RLXB@$#mt8%@i<2}sNaoMcQ zcy9TbL3eX$#VQ01+1onqfK9K5ol>s24oMf-ujUO$8+Q6)sg@=|wx3=rF3_3fMGwR~( z&<6s0qo9XW(GB^5=>--C#1e`c3ZzVB=#?z$u+)r?OJ~_-NcC~j9A!f-DeE+8IKUGM zfy+Q9T4Y~oo>5tt0wXPYFR6JYO)s&^guwBas6^aQBUYJIA5M_C>Ro|7oCwiGZ@zj- z1X$Hja`*U z(<`yd`a3}2v|ezlUcur7;%scm@O0yOKcRqOf)2X)`v8b@#pjt{jk`;T@efF3M>o;) zD_1cj`AvqW2PkYTiJ$(v1NthKU%uCgg?`pWrs3&Wfrla^^cMb2x@V``IFwr6vZ%QTFq%`Vj z;mO!wd;>SLV;fl575j6S;NpG4yqCIPgBe3a-4#*-43oNJ7~qRKj1j&wX;PiRJhHfl zQ4}$THH_maPT*TUao^)4eqfS*;(YxLr$Ur^x-@5awqMu}7n;72@!BzeR54l8&> z+E3#v*j&ZwrHV2fdN1N8T&@!IkU@njjp_On9&M=9U!|T(N@@#&>Dqw5iS^WH8~8km eWqX*?GsJL~X+9U?((79E_=MU5U-KKo)BgZ$bj=3< literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/Images.class b/eclipse-build/org/rapla/gui/images/Images.class new file mode 100644 index 0000000000000000000000000000000000000000..dcd7007b08b437f0c3731fb2015a2918caeb2a6d GIT binary patch literal 1228 zcmaJ=TTc^F5dNkV7Ro}oDss_^2)!sPhpWqe*Owz6^{*M2s1%gvqI7EgjH+0mRlD!8ChF; zGms^W9EuOZ@`PWrUhf}DCnof5xV{@dA@meWdxY#}@J{B?g8>u0=p*E9*O#xF^?e!c zihWNK#_Yfm-ku0ubx$6%@q0HS%-R2;P$dl4WW41!n(L}2iguS1Ke~RcT53PJ zft7Nt<}iwJ17l37i`eu;6q%Sno-od_w`CMGLq|T1Itls@Tu=Ifj09z)GiHJ$Y^E35HVMQCTY& zDtBT<$2<~k?Ugf=zsFQm{C{jY5bm3}jHw*f@K6o#BQ7)v-ff|p^W2V}lNUT3tY7JFRQQ#H! zR({49l}|C!;$s?KNWl$E;*y4QAqo5=duRA!);Z=Xr?}Cwsim!hj9lW> z6MFB_^ro30u*f8qI7gAKCAOA1Lq+E-=vt?eoCZ@av6a}KVUJsUy3P1WWPV`C!16B+ tLX1^@s6%>pGE00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru)dLh20xOc6XMF$w1F1!A~^8t9RR^$Hu{`b)9>uV~N z3IMrWZU7FT>pC|#H|V;~)zuX}s04fq9)b42qFgRx7zV1U^7{G;Kt7)zfR{=oG)<$? zXz>32&hhcFtNJVOgrX=TwGcu`PHoHOvIvL6sH%#`;{hNRivh5|zmF`-ZpxkQ!?hj} zmC0l{Jv|jYBS@dA?!mEb8&y>)7K?PdU2bo0IXE}~z_x7)g@W@eeW^5=Op3d^J5Ekc zP!weZE`*SV1IT1DTwGj`N~N%E+x?konm=;ygmbgGxk)G#qEe}_zP>Jcb&-bCt|*Gg z<#KFqZ@a)wr^CNl6Aup$0QmiWB9RC_pN~{3MX^}?6u!8)$kx^t^Yil~KkHZhU2}_Q zH0nCivMc~fr4j(eVv%Gr>263Q5`@EHyk0N1ZM!OcJ|AaiXBdXT(b19A%gp%nZftB2 zi^WK%(*RhO#nRG}8+js;a5p##`&9*lL8{d%v$L~!y)t=6B} zD@l?Qy~t*>tgfz7tJMHdRn@JXWm&wvy|J*cz{<)B&1REIr9!vcb<481x5vlF2fD7i zecb7Euq=yCr!zS4gTWw9jZM>}AMQl&oIIgWh)5)YVHo&)K2%k8vy#i@kY$;8JPzOn z>lkm`Dbqi^0hpeirqO7OeEV5e`aRKaNCz&BYvADk#zCFH#=-m3?!do=eizJ7;f``y zmVXcZExg<9{&(mw+<^rGfw6Fe5P$XRH&}0=2tZ`BSz(%{czJmde;xW0`2Pm|3jPmO WA9RU7lRQWO0000P)V5?2_Q*C zK~#90#hBku9M=`cKQpsGW_DR-f3W;EV917`Vq=sawXtJ2v5Xqyv{oubeTWi8RnwQg zR90Q3Qj|ZS;i2tAD=SfyxKVAXQLM&}nnsH3U=vIV7%;ztZOj5oz$^>PEPTgIp?0cuuT%60PTSIU;m0d&VK^GlO6$N2evkoQKH`tv9%Ec zVIqV8ArP2ZP9d^mfDooNmm5QfhjJ!@?J+@?Hzy~Az%)|a?79S!jbFe0)n~RHfE2(5 zFgy8gqVt28rUAkPvH*l>SW1Lxz(Ww(cafblvp`_SyAW9!VOT&g4NLKz={Nzu2fbK5 zxf75HYyn*P_)kpUU(Fhd;Gu&6FwC6AWG#F+Vdk8N00E|%^^GuvB`ero=TTA=1()Vv z=a$KU6F3U|>x(bGV03hpOeXWt#oOBiu&}T|Sy`F&y|J-DG#V{X6p2KrtgI{;Us_ti z>-FMtxzKf;^B;b|ox69j6>!3Ed3iapGGo zv48*m0^yttz~JB@2M!z{5C|0T2_f)!JV=tn#>R#vw;Ld9OqS(5kKDd}oA=*;pLgDQ z2T78UBq?tj0dC#8#kFhKXlZG|>-91>H;3QvFHkZ#IEW-kq|<52%ge2G~=fT)6=Z1tgybmPHk=NE-GMod6~({Nt&CRxqkgRE|=>& zJ*4Wo&e+%(Gcz-mdvg}N@x~hr4GnSU&K*l&yC!A%UVZgd0Q&m+EJcr!-|wfTrNs*F zhK2_E`}=nV)wOlb{^0|VAd@lp&1~_!0 z%#cVVz7vqUv9XcZ>KYe5yUv-{e~RvLA%tKxy1?@X_Yn?<`Q)one)MeHu0V2Rx7*M? zZfYt5RF(O0+HI5ubdu|v=pMHvGcq!QEX%tBQqP<@^D{+JNTt%uEi6;yR*@u$o}M0h zdwZFfn4r|>C9#pp%d}jr>g?BcB)9te(3CW9 z|M5d!e0Cp-ob^PJzns5(+{J4h2N}6NoVQIv2s%1C0GODVK$0XPkx1S=fYa%up`n3j zG|Jf67@DSG7{;!E{Kt+RbGzMc4!0emO$b^irs(b;r+Z)=!!UXBiE28}zQz-e)qQV< z9XN2H0I(1OMNud!Dq?PKj?&UnoK7dI)4nU9fZOesVEYKz-?*3kjeGgk&wq>%g1){! z>T4>$H^X)o)t!8bqF6Lg&t%J6~U4Pb!r{QItHZzx?t` zoK7dTwY9k2?p-avc<~|)4Gr1FLLqC798WHGE?>UP3opFDz`y|SzWXk9b#*ARS>U0f zcs%Y%r_=QJ_ZMt|EXxcG4B&J+nV-*QOw@!>6BqirsE!ad8ohINd#imWMoVzWL@a zbJpyPkEy9ClF1|h&CShu2WfM2b3s6lj*fEp@L_~a!=}homik$^)<~o za^uDgCMPF3dh{sqc$}avqiJ>v(B8JTwquXB6qhbtqPx30t3U`&oH&u!Bkc_6{{DXa zem|R=o2afL48!CfpLdhV7`Rj?k;ND`MZ)cN<8(Tin3y1yN?{lVs;Z)Uz@=sZ$;XZz zd;a+GFf#+})9<;oS>+uO5MS8*^E{+9YZ z<>*B&0$vY>X)qI>A+ff~+Ug2pV`J3T){@C&5JHej8#o*aHlXa}$&;_EYW9f8^+Guk zLU8{4dCJPl==|oW!Qt1?iA&@&eJO3IAg)B4=9z0-W zWrgYKX&`$$ICA7jL5H|o*O*GB@cDcNo#fuVdkF*rM59qOO(PbI5ekLydcF93K2%j@ zGbKo83~WtJO=VqOU4+A7%cAk|aSk3l$oTlU1=8>LTP;FKNeLd0hvnsE?%%&pFc>70 z$WxIruy8N)ERckdocOG_k^N#gN1o12@Mrb!}^z%)%HNy6c9u(h>CI-O>HeH|eLnM?++ z*NdiUG&eWX)YJq(Wo0Frrr~nAxNzYDZcXBEAN@V==*R#OU=1LVNO1G!O-$3oG_&_{ zUDwfd-MWe9;%GO@0m>ynj&hfS+%p%4526WHRyXq2$X%sH@$002ovPDHLkV1g_Vqc8vf literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/calendar_small.png b/eclipse-build/org/rapla/gui/images/calendar_small.png new file mode 100644 index 0000000000000000000000000000000000000000..e57a5e6fa6ff0a2f15f4173e3f5ee173b194ba0d GIT binary patch literal 854 zcmV-c1F8IpP)C^=BXN@DW(Eup~QVOIT|ChxWDJ4>lxxJ0}y74RD z{&4+`IR&r*e*WnfJg-KY=Hy}wXb2$@LXxF9=mt_sG%OYutLXa82loJ@_4Re_;IpUd z{QR7DyN%;GxUNf{=L`k|(lo{QeS{DghC!?U1wu8=djNKKch}10GI1Q!Y&Kb0S;4k# zlv4EjeJsnOSS*rd8HQn?>-y|=0JGQYJqm(=2M?B@yv*f4FR8!r5Yy1nG>s^V2!ep$ zp8t+*su_q05Qd>~a&mIi?cVU!lkb@~Qp$@}zI=Mh$NRfTDVdv_1K@TTQ!qhDIoqIE zuh&0xUAKPq;sseU!u5)jOo*bF{C#~*yWM7QZw~++0YWg&b2LrE1S*|Q=aYkj173S| zjlX&ke>5*CCMj>#Unf{yrC{3tL{Y@MZ$ISp^prGBCntEG=f!dSUJwLWmW4yi`){tX zv9W=a5~UQqUXS_tc{EMq?(U9Ot2Nn1*D<%YwpI@h582+{=IZK-YPE`#lEGj=k|Z+* zq9{h!b-FhSFE8Ub4z_L6YPG0VtE6K^cQB%V zJK*xNL#0x|G|dSMp64N@#Ih{HFvM{j01AZyVHi>>mC!Ol|87XL`6qE4QLEK33O7O35`jTYy+=2j&pQ&cJ|Tn@i9q~ z5Cj2IN({q5DTVL*Se8YhP@qz&FdPoavW$B-YQQ@S3k#o{ruj%tMe=_;E2Yph4PBoo gb37gsMbW4K0@veG?0qdyLI3~&07*qoM6N<$f;GW@c>n+a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/categories.png b/eclipse-build/org/rapla/gui/images/categories.png new file mode 100644 index 0000000000000000000000000000000000000000..17ccafa74aec643f96519278395cc21d751fd312 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmP;vkZphbcz~lP1i#g=3 zacbHVmYvS)56s-*^!@;+#LSsDR^L;YyW)DQ^^^+biZ+Ls5F*Vlb@_)t! zD>LJctLEL;tFRGGke&Xb$^U#3$7jJA%p&~S%wWESCtreLpL*S2{~IQI=$uczB#LI vu77mv)Jm|fh|k4UEvr^D^l5w++{3uScZthy-VKI8&og+s`njxgN@xNA#{rWR literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/choice_no.png b/eclipse-build/org/rapla/gui/images/choice_no.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e3a1b32b135df2c9f5d2dfe84b7c5df35a04f6 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPggyW+8qf2IfabD}h4Ao-U3d6?3izIdU}^@OXdqeAWLY z)b8X@Wz~6F#Y+rsW;VunU0$}(O-NT_)|Fabi?byWD)xJxO-b^I5VaL z6>q|x9*9+Wu=G`7)ED-h-JMr%3%0!27AwIfF*o4Wx5**vMch08pIRU$ySJ!?eeL%P V{Ii}nMFOp7@O1TaS?83{1OV_JR6+m% literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/choice_yes.png b/eclipse-build/org/rapla/gui/images/choice_yes.png new file mode 100644 index 0000000000000000000000000000000000000000..21ff2d4efd53571bd65a2b31bd7ce547fc872686 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPggyW+8qf166A#R-jOer;B4q#hl*Bj(kT9IGEe(YUWPg zJ>4r>)WhM?gaw9S95>RYPwFWMw?DM4*Wl3kO0^HIf^Bb9a)MpgoM3HyTM-{Cy62i! zqUX-QrwOlBSa_I5`Ag-{0|v-xtv0O&&X|c=SmYQc63nh7d&;OFvbQb6mlX z9D3WEx_LQ=tg0vtW7N?HPsIxe-o zQ0n-Hwl{iU5RW}(wC&pWIoE7G3?Pkvn;yw8bBacnCdGd=x-?XK&NSqjESr^?s;Dwk z_2;EnZ<`4S5BPiJtL+oQdvSMgAn>fL)LGjJxDCclB<5y#+;)eIoM<0Yk+1OpX2G~)k0>}b00000NkvXXu0mjf D7PlLP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/addtsk_tsk.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/addtsk_tsk.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5ac28d4c566907f9206b991a11baa02ce450354 GIT binary patch literal 590 zcmZ?wbhEHb6krfwc*el+@$;`YAAYt^S=%#h)$_MMFJ8U-{pa7W-+%x3`8%#`ac;}n z_~K~^#nTF#792fy@BWJ)k6!&~n6jmD%9f^ytEMkMFk|_FzS$er?>h7K$KQ28^82qz zvzLAT{^!PvAHV{+c)*@-qQ8==c6YNFZ_AC z^Y7>LoB9+t_A73mth#Hu+P2B6f1WM=`*!ENO0h+?5({f2mNiN(Ym#2mA$Mg*>hHVF zhgYTjc{t(nx`4yW;ttJnJT%wq!kUUJ8>)}aN<6o+?D(RhQ%g%Oud8}@|J1?RIY;K@ z@0*eR{8d*Rb6z9wC>*1tMmg_~C<+Ym>RXjlG!!%dz7u3SMkiFE}I4}+ox2M@c;!iyI;EP0M4 zDfSD$=;@GFSru%pQBc literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/arrow_right.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/arrow_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3a7cc7659eeb3657deb54cd1d87cf020bc25778 GIT binary patch literal 216 zcmZ?wbhEHb6krfwIKsg2@9+D+-*5i=e)I1)AiDME?an_>X8wLW^Y@dPf8Xx>eYg3~ zwiDPZtoX!gqw4}O{`X&}W6N^k= PeB;IUy80$vMFwjC!uMVm literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..bda0e6c997507745eb925eae25673ac4b7f217f8 GIT binary patch literal 1304 zcmeIx|5MX-90%}EW55R88X#CSaYM~J!w!iM?8|LAU~qbZ5s_U52poi09tosY2aKYtMV!^PWGy?q0ER zF_BSe!B8M%tAX+b?$sHL^7M$>^S(E~;??H|{PbOLbJ>yRiet@H{9ms|No!)d>P`+d z2xJX;y^>EKHl-`>UsSi{Djw8Mc7CCf7EMSmkM~rn2ilia*QV9F))`0JjKe;0xlQY6 z(}H%bqg_V=Qk_Gp106cBIDKELcS!YMRa4uc2c3G*G3)4@1zj%4jKk6;_)Pq%RAmT_a7Kph(d zvO=IXfI6L+9l@Lkwu53$0^h>$9h}&C{(t`41voqY$MZ7NE@Wn~3v(`Hvy-wj*|Bja z6QB@?jO$4t+79$Ooh6V;ltLQaab#Em38}PQtVD4FyuVl!loMhoSGpHpd*9>OhUD}< z0p)12_GS9nMt+4?SSTmw#`N7Q0j#L{&BQ(d|AB91Qc0}oBj!T3`9?P6tU`q;VC%u3cpM#GzFa(-eM-}98P0iZ~;IrJMquMI*CB z4m%@HHH4?jQ|nYUOM_& z(AN)ms@>2V96lqgC4p74=`#WcgM2o3PwsYryC47DTnUX8+ye6^qat4jOwHi9`$e}1 zD20a$X!|O;OlJA+4q}Wk57p9(D#N{!Jl{X;-Fpeh)C#t zs7P|4f|@N7L07UvmCPs&*I3WW>$3(^H@I%zS=y@RJGuP}6#Dma literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_categories.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_categories.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c8967979725c5c5935466c58b02f12d44c70388 GIT binary patch literal 1313 zcmd_pjWe4E00!{TWJ{vU#FeA8$Ud^Vu2Z8G>)E7EGqa)Vb}O}(ZbQ4<%$?5XB)-|Y zLt7o9;#-tRkWi%(9=oaB}qqW(p;*446Ds>Ys_P`7awjf4QVeA@4C#&s#S`wMP%11v+I;OxOyB5#7DL;KkkWkif|8{HA zC@BGTqc*S=*={9PM2MexCs~J!-2+ zZCzL8h-R&#S*Ul`+N;4qVvSX-fg~D8KO+=tq2+ru5-rrHg(MHHeGj4j9kBYIuI~}l z{|Fk`0T0YU(jBl=2T66XOb5wy@E|@O!-G2zNd5EBV|Yl9LvHEeVLiN{?Z5Q|9^Qf6 z#u<?sQA%H>bdIo*nU0aYv@3cMH5@kMlE z37arskm1Ut2~(O-r3nL;QD7Of8tcqP09?kN%&!3}7`TE>nQ=Ci*|udIP+2gQ#WroR zK}#)npV|I4N!M32u(=1eNd9>?@^V$Z{2YPS6)Woq{9+v4nEGoI+uk&6Y}pX&h7De_ zAr=VP-bUA9bQ?zP2)b>K)c@dGk zhl^Z|@$uueaZ(Qkr?7YPTG(+RKJ06qCmoM=&8ARWn9+RdXXJG1)tP#MJC{{keJVQI z^{f|JO8LBv^Xq~w$GIx4tiYu-#h}10e8y%NSuC2a@LyEF#p6@4!jvW}E04hEqQhY@3 zo(OEEJ@5@;Y%!zv9Z4QP!%GjJdd*YfWcN!x#3a6;1q6FV^2Wo<>E4IJPcO}vY@3$C zRO;s95-#ZVy@0nrW3s8lJ)WZ=IE_++(xe~ z-S-3kWic`O%|*GRlQ!jiQE*+#*Ph9lRir&Mo1n0UVSg+BdYp45;Qmz?&js g96|%(19g9V=O^##mObyfNuDb9Tk9r~h=dRR1AU@g00000 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_conflicts.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_conflicts.gif new file mode 100644 index 0000000000000000000000000000000000000000..0399277554a254b59d5b18234f271a14b92a0de2 GIT binary patch literal 1349 zcmd7RjZ=~b00!_EOHa!>A~VmN7gk=|*;ZZG=dN?=$Xs<;>&vb(aHY1HnIEZ50WChV zl5!U20h)qNMO4&GNg?^vR0M$`qKFC^YnH|P@`7&qU+lTxJ@@aWAH<~%;%;&7?s}7)p-#x^Ny*}n4~|^T;!vYBNjbe~xBq-_KzBV?oS7@Roh!bR zC(F5GxIrFWMlq(6C3$)LKQMAaelLk&%($;4=8t6*88eF{g~XPp$7SRKZT>wanW&@{ zjOEe0%cEr!rYWC3T0k}t=yEDkL1nd;rzvTym+Xtuq8A$K!x7pe#pB|E2W%7NS!Wea zSwbJDGA3xx%ru7iKBKEPd;AG&qJ*VjSIKzSEv4+P`cli&3T1QhKy|g0PZ+GOR`7Gp z%xW`}GsNYnxSU}wXQq-PZ>Lx*xq}U&A)a`ktxG0sRCfqD3OiT%x3=@OS^Ds;Ox>Vz z@Kg@FB9}MpXdHH^GpB7CxMP^uRhTmA0xIp8RUW-d&fh87~ zbPASExg4gl8Ix2tk|~sXNwBFeLf@u7QlB+z`^i{Qf&Ml;y_tan0}RX zBe6eXv2qS?*nQ1o-w8G3YiYtuR*Bgwb}-&PS75^rGMdj1;x{y5v6!%D-(76of0Klp zBCiSfDiB-Y;i&{j!)xPW_tw|x8smjtt9N1pV+xKHeTnO9Yq-!>4jfw%IL|Ig=sovN zBDw#hq?@o}wZAVd{!s!4^&I!h>rcHn ze32$dEM^_@x|F?lx;7L4bw{wu_DO%H{?u9A$})j`h;`_uHX4B$0wxX2C@YhW_u6>2 z7IQiq9VrP8&z@c6pI_g}zGY+POkm!46g~AjqVzpbvF#_yu1THka>`)_H;P(??!mYJ ziWd9DdLtr`C-!_4txvIWS%^CU>A{5Av5>xRs*oZPDrPG&YTZWr=8D3T-uNrKfi^U- zqmIpq^9;5TBG+t+N}Vj+z@t?7)li0gLLcw>6z=t{fKT#VYp*G%9S+6yY_CX+pl%^U zJp`Yv=|{yL`^uxy5d+&QFNK!uBzbTCemmB~2e}zQ_-xsVR3e z!Z4~>mH4AabeSyZ#0;&{Z^Q8|1Vma?O&!l`e@q=953RE|_wClbZyECULjs5X1LGP) A`v3p{ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_events.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_events.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e316e79c5b1d1bbb83609990af59ee978f23ef3 GIT binary patch literal 1325 zcmd_p{WIGK0LSr&s<6%pN~(0))eUD|^sZCedJ|JpRNXw(F@)LOsI%6lhIN%x>!}nY z;-Obci74V(HE4*hhteTIL=s6P-^7~hw7PsB61Mm|_P*B-pMT&Jcq!n#PvR+zBSzhe zIpa+_cfl`{Y!)059};Pl5E>O1dNtunG$kxL;oBHWcnl>XmU2JY>R!_4^y@ZhH*Z(| zM5@iSPtT%eE zdAxx<(2&7s>KJZ}t9#6>ecVyk+|kh7{_qLwc}r3wvy;=FJ>7MU$sXi9rO)-I0_?n5 zcJ9njVc!V1j|23L0s~{f;23Xuv|A38Ell$}mvmiAI_+$3*RrnLh_7QGfJ6)JYyqU4 zr}qe;UIEmzqU&9O`c|N&d13D=)PDf(UxNmWgz%sc8Wh4q#<30$9YCO^tYHy6EJB`% z;1Lll6ZDO2ARIBw5hEOl5jrYCMy1Hu0d!o7z81DEi{#^*C?qU;v5Bq;Rm&SHt_)cg ztGIHMFIMrz;Dm8VRD202kf;O_a76-6Zs{TMA1hLjx20c|f>T@Q>ZW>a69km#+NK&% z>UGjOPzr2FUa!eOK&2PTK%q>%E(6!)>KRZ!0~$nf^(<(3FYTXG8z4pVOO4^()__*U zhrv!*-Sdxz^LBel`4<9dxhgFJznMUHX8zvQ@9m0r-Ww3zjsaE}5H*DC?V(y2-GkA6 z1l=>}cTxSm-mw4g|0Yk2v4byQaQm1aES$*fM(!P)MJmh1kA|~4_Enxwb(o7MwKF=! zlR@_XklNvwGePmAv!bxxbITgbX7}(G%VOd?%j$)CreB^Dk3d$VMCJskadnbuWQ-$UJg-$*; zANyuW85aB}L3XZqyKLQ7>&-0!1KS_nlr&Uq>*!0c=9`t+xqkB-5B4Ww6{2+iuj7d+ zHZ6hW_V}~O8Vub%q-@`?gMZ%mvnHJ^19+H9tK+3kc+2Z91l?s~aQUWH zPP7;-b+N|J%1stVb2hCyFDJc}_pRpmR1av7pkdiZEH^h9z*FGg`a= z2XjqgptGxZQB~>_L_YbzomBu3;(zoqGs&FqQPv0DLu%5J)A6KZiOHmkwwEwFB=h5j zXWYZ~-w~<#7fvfN9v66vW=F$Zt}0qW0bez#B;fi*yI>q?yR9%v>DwG)XX3%U9eKLM h6mM-JZ?}6CP|jpp2~uBo4lCvwSR7qUm@nqb{{VI0S}*_r literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_events_filtered.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_events_filtered.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bb6f40351511f572266771e7ea1ace2ef758b85 GIT binary patch literal 1387 zcmdVZ`BRb!0LJlG(?o5oP>Q8P#Adb{+hGs4Y;8s?kIKx#K)v(&_7&6liKvdAQ z)FgGSC{_baLGjAKL|vq^Srtq|KuLMAvhvFJ<=n+TW54tH;rR!iu)U!>0upfm1~Bvh z-)$%O?+V_rC;n2n^Zu9<5l8G!M#jcR9zA*RSVGjXlLv_L(Zqzq#Dti*grmt zCjHDhkE}Vf>TLRrl5>QLOKbkPOg)!Q=bc-fa_vq78QDPg!HOxKq!n?JF0XetI znZ@OTvQXjO1JA3%TdFRWKdftK$5%e$Ry?Y!G%{vb)K-F8>8R%8 z$T%p~o0a3Ba@_EC9DJ)Y$Uw6Uw5W831#L6*j`M2DGB?p;0q;-i#(-Qr(5&qn5nvq#&rPkR#>zvd&*Y{=KY@JunELe<-GZy%r#b|(xR;y_mHd$el z&1kY(%=0F*&1U^#w%Gptf97LD?Y@|jNKQ${UQQ#EurZ_*Y}nodQGg#{Z|Nie!Up8I zt`8TmCD{nqO3a0x?n3mo)c&VsQCK`xoRQ{7dY_A=J`1iTHvU%LaKdrBhkVMNvn{UK zO)Hyozx(>n_Otx~6(vUx#-U1|$iC(u*&6*2p7B8@yA-YaF?4-EFrDE<>-NCC(AU*HFlE?=<>Gml+4xv+T%&ERt%IYl&|dg3);2%PDkwKiQGTX1i^{qa*Nsc=q1a*KQkR zIOgVP0Of={MnF54VGI0(U5>B(ntGESxt1)feQ_giGY#RqVU03B2;ngyS?*04aB#ui ziQb2B3wrlpW#qyD-6LmJ)I^?(#E`o#09{Pj^37y1#W#ObFak&QLe@C=V=nj>DRe(n z1Gy1+>V}Kh+u=U+sV@4xh@J0!7%pi7plsz-V%YlM%MSrQGzO1Up6QrA8pJNfVv?nN4K>Z=#XGWNMi4@Q#Wg)@ScZaKQ$|2<34TeORcLXI5+^m{0I9)Ps{)S literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_filtered.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_filtered.gif new file mode 100644 index 0000000000000000000000000000000000000000..eeb8e0370ea3d13e84d74bd16488f6e127d881d8 GIT binary patch literal 1334 zcmeIx{WIGK00!`HyhW%=yw^BE58dfakEz(5d8?OAHn!|cafh;b*^PDHR_u_l=xIx} zr0SHFC?$!PD9TB^B+_zSLMxPrw*vJraS@^rzK@ak5vh!)3*@U!`d#qdw_9;tNo(21qWkN;! zqY@YH4a+a?j13f77SI}pORYyrt(g^UdAi_&eL9O3J%BNOY$G8xoSo8{`Nei=z)~I zfA5SQ?uxheU~r$my$?fwO&|v|nnQu+P^dW)XpV&Mk5SF>%E5^mRvoCJ4K=I;VT}ga zhY$^fXkkR7MvoCxtJS?;LPfN~COC=U$1o99NOCmb3FvZq z62MpskZ}$XoEARS80XfA*9$T>cL+!l-;0)el(ht8crx4#Ov{>seIOW`q5v7@kNzpel2{$k&vTlX>>;~P~8;bK*d|vM!S$;ytxaJ3K&x*CxJPjlI zk$<+NhJWS?uJ%u_4JUU7k>}=P`}+_vTK1)*Use;L(&j7A7}{CyDcdznh%tq)hYPg> zevPRPpK&Uf;#Za?MDarjpIUXa6xUc$*4$!@i6L0W6>+>>BBeJDf4TYzk&3-wd!@p$ zM#4XrlAAnTP0IP+wF;Zol4@j^6likcg9MDBMesq=R_*G?>3GBYloZkVI!Z8(VPjCM zZ}#nnP{R*c5|5{k_W>|2^w5J4vy9t?JX0KjBQo`fZUtOS=!}kH4^GA(RaoO38pg;W wbF+t&b`Th9jt@qrLvzJYkx$M@} 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 O-Ee}0yBl6*wz{iU?bfm*XU&<-hj3fEIm!ey zbNDbi%L;X3h$7DlLV^#F2??P|W&|oeB$f&CdjQ>j{uTS)>)!YI2fj(khvMQdgrRV# z>0wmfVRTsy~fCY0SI0ILd3|T@C7Iw z0Ys}nkr5CXL9r1Kzg!d>!FFW71lw0Zfd1ExQBX4K>==b4s{@jbg3?z@<{^RP6*3S| z=a{o|43dq3GNi8&u>3V7Hvw`JQuwh6dTfHbOz@nssp}047)umy;1Q!$VTP4vNQu+} zC@pZe1@0LKdd6M76H7f4aL6?K2CYMx`u*!ug6C#_{08X`n)4Zh_*@s#E`a;v|9!mOa! z>w*t+8OkEeI%lH7f?Dgn9v66$e%u^$UH9OpD9o**P1m0#dVkHWKl^#Q=ND%Tfg69| zr>WQHV#2S~XzvZ|3{0q5{BAJK|5^m$Qf6TE`HtNwQhjRiI_yTD8C}kVx5tek>^s7l z7WPORL5|%JO~V~2+Cy7DJ0NcTUVI02$_r-?DZi*XKRaxl^DFNnd2I-gl@LlVHu*iw z&&wc}rO?9FQV}~K@*74}e4=B=U{Dy@H?nXalXTlRJfxuzpApb}{BFqh^~4>|wtDds zA3p7M4ZZPAI^GalKfc+PT;@4nag{vaAKZ<>eWlrN2=wYago>|RQ$h>b8n<#RgP1;8 z8? zx>-T?Oo&#Zjz&Z%_MS2OP`72pwAX!fBnCfA-lw6JG6w<~Nx{+Sartjsf^dX`2R(^* oRa=BkI2h}HI-KNjK7A&#RqP$9;A>*%Yyv$xa$bl=uR-nq59WANpa1{> literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_resources.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_resources.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe1f368514696274ab07acc814a6b8e446bc10c9 GIT binary patch literal 1332 zcmdthi&N4E00;1&mI6wJtWrBua$c)e8(psD+$taW*qx4@Z8g_!;vRx<@`9KW?HQOv5zXy*E{*8U_bKm>^1K;G-q{Ko#K6iE|>(%sU_`lhg#StxD!rH6U% zcJ|M*=3*K1(!G`<8Mj2iE|zoUoC_5ScBP`FT+XNVv8(#nI^OqGl~B%Q(E8hJRh$Q+ zQ(8eWL&X^sT)d{~V%+D@HFtm0h-q5M4P8gAj?2(@F!bCyJ-1oS)Avwy3V!RKV*apH zFd`KiWg??&T6_JGZlw3AqSIjK8SIOL7kR^W-Z01?w)02q0xwWF0**f72#ny&5JPAL zMMhBg#4dUQc6mXDA(QASDE5NH&p?S6Br!qVCa~KC^?1f}sK*Ni4d;4Cq25tgItocg zVc94&W$coUL9#LU-Z(5Dhvc4~@IVw3u)^$t^qJv4GtzHHUYhRoPa>eHN;!!tDz=b+WO zViphD9D_FJ1Dg|kaqHon^NmHaI6DGaJ0Y9!pE>#KdBe;C3@)l>7h&kH0c1)4_p-ya zJifHzgzZaC=!Fxufw0SkEJBD2LfkOoaypg~huh(F|NFno7Wak(N)9(0>;ydVo&-R)!|u+nyGwvM-%ZN|?9q;>c~|rf zTy=l(s=$rMs8jw&tMPm2>bdvZb-!;pSt>>cu|6&sXJPiJiP;*u07nfA&1g-kLciiH zTdPBMt=@LwM09)McOkdq&Wg$#NX@ZljMaw7%b4nn)ffWrla%QB^w{;J#|G58%^w`^ zJ(f2RRTwurgmRx&x=b~#>$Wm*TU6w=lTBy-tWkM--~h#{2CvlFG378^pJ%sO^;zK2;%aP~jBr?uy{hW4J_Y@KK_r z6umu$8F5~zN-8{jP^At)B?<;;L_K4Mx_a(&-KG=yv_tFnSfBra$6$b~c%qz~6r!H5 zw|)C#_{=*#c~qevv%;DRG#B|k@Y_IJfR7xKp${t8qfhME-dYrpwZLg_YuG_)>Rvb% K=j-DG#Qq1dCsE}9 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_resources_filtered.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_resources_filtered.gif new file mode 100644 index 0000000000000000000000000000000000000000..910c7262d6db9024cdd76db7d462cd0c571e7803 GIT binary patch literal 1347 zcmd7RdsmVN00wZBG`!?dOibn}p`z8SWB$=?<-m-{vZK{$*7B&`wRSS+WhV$b=V=R9BF*}IRpZF@ErhK5ZI z!nP%46q5W>j%R#(x}^4WNae{b^gLwih0t4<2n~g(OGV|ZOJQfO-R2Y^IR)X|0wlK} zoKuM8dWD~;c$m;cO=v2=e+_%2rc-n!TzEBnH=|-NvrD>h3h5eFaCwO-#L zFGsajCmnA4^>N+yV=UU4b{emqn8mF>*FihSX}s7$@4S<8p4<4Oi6m;u&+lpxGct
>Q7m9su{Hoolr7ya2ut7=Fg$nShBwI^P5c zOaT9tUGNI%^a2foX2B33^a6#i0g)FdGJ{=apvw$)d&V2E+sgqMip9gAc-SEs1|`D| z=`d(DbxKA+>4>9e)FB%MWuAWPkb77>pk9mPi3OTAw*lsA#h=h?^Q6)WDc?bT@1Xv1 zCooD=jXTxjPR#^lx7@Q?G$U`PHIq)Qhs~w4IdwMIXNz!P$~iFQ(oea7vEQG*cg>HB zT(;(!Nh4_M0H^r>yqC>=FiiaA0A`evGY;_YK4@0wp3}JJwC;J0dtUo#!RcNYo&D@` z*k@hfn9DH*INWY%287%owCI4`F6RQ|TwHX2a=I4({U0Y5=85+UFvKFPAt0K>V<@SJ zfL^H;O9?_^4@CRYQ?ueJnqP8a5qduqMV0s*ile@XJLS7I-uPqiI5$%sC{3lt-hI}n zJQTg7L6H6;Goqm+w6dMfKH7#$!RDXx501obTC*>)yvnESX~>4KqW1RJ+${MJHZCtJ znVL|dKK`_;}+yp{=`vRIfk0c5k)+NB+1!;Zc9}`elsIW>W6aM??{4 zNsb}ro8r;C0jJ7Q6_nzwX}?RaL!o5G`y ziLb0a#F~((()m9yt6EEcIQt@CLP=g(kjjYHlkv&xQmocJktZ$^c8BHE8Zt`}gK4S$ zJu`j#H%Vp%HJf5`^9KBnq^GHuAKICwtcXNs*Wi8P;RJXXX_gE}ipTUzxb-*sLla?h z)MXgO`Q}RhhmoY1%`5oiuYz_mNtj)1s|vY4hSC?3tlySeSG+3#k6Rk8sKS(vVzfaU zPh3t4iv6+ylNgMEO~P)*B_d+RS_s4yg!H_`&}{VO5j-P127M9{d_%YDipoHYN=I~!)o WDr<(X!!^cklx>-26MTGNU;hW3UovI@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_users.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/big_folder_users.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b9ae57c3b2e9089c4c706e2f78661b0889b0020 GIT binary patch literal 1334 zcmdVZ`&W_&0LF1dU0}?ZDRG#kvg~%WQ|r{y&S@a7$Z6Bg+^IE<%vEM<<<@qrIVBbI zmgZe&XFAkO6Oq6xCLp}8*NS{iRAMS9-r86?-V3j8?9bTue13TTf#>*%V}}FIGYJfW z86e!`Iv6VWjV2~f|x_0HzZ*Rl9LINlIv~- z-?GbZ($3y$icS)pOA_&Z7V-GfUz3={$*huOR&1KAG=*KpXP5KYm(scl1f0w1U6<44 zaRPZ=`u@6%z#F-pb(z86<#jdW28fG~HC7&fQX1A%$<3+)vZ_F-@I-bsD6346)tr#k zgtS*h-4lX&HGN$*F+GnzEo^upf0S6#qy;3QpeSDcxMVrwe@JFNRP+HJs|8qlW(tjB;Y=^nzmOvUfmm~K`vg(;^{MLxg_o7H%P8`P3bXY6xnf&e(OXt= z)M~+z85}jk=-L{#j9_aBwvJ+JxNQZqt=sVRfBskb5$yf<1p;ZEkW2RDimQ~VB(kJa z%v8B--X2bxC=U1D&sV0z`OU{^-1t2~0E69I*32V*#2DE{5$=s@cM-7; zPAWc?*sIg>f9!-2|s{i4FS50KOOF9<83`$;ApWz6y z^UgT=c#Ga}rF(ogT&)j`tV=E8W@b@Sd>)2X?ENZceaq+1^br(2gGeUTk~92V%lwDP zmIv8uMq^^YOmD`(9qA~TqCCDY?o;!e9fhG(=l6CV zwy3s#L9f2!bkZq;=m=NSw|h~;nf**=8rzBTuEi4K5mrCtKx0c;zG9<(GE2@M&a!MKbCUvmGmgH2@eo8A<>E literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/checked.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cacb96dca98b0bdcf7e7bb62e491f8760b244ce GIT binary patch literal 343 zcmZ?wbhEHb6krfwxXQq=a?`PC3wLx+TirNeg?n^`Z$foW?Q~|F3@j|LW)e*FXQi`}P0h@Bcsk{(tl9|Jz^xzx?_C z`q%$=zyH7g{r~fy|G)qJ|M=(sx4-{?{rmsx|NlS#|Ns3D0u0mxia%Kx85qF&s24FDJgfQ)pYN1>8f~*-kDi$56SbU&*+2PvdM;cZh zZCQ1+W6hDyHAlME9_?Ox^!n5H4XcheuRhwo=E%JLm$#g`edf`J=bwI>Bq8T*Owl>w&KLi>uWpYOl<{Ql>^x8MJ~`S$zCyU**+-r0Em?(Gl1?tccV{P*hXuPqnv z-uwLL_J^O3zW#mwrY$gZgVUp;J!!Um=XT>`9fF$WHQU_C6wB4Ko714rW|HFr0e zOrghaT@r>quaf3ti1Qk!WHwQFXoHX6V)H;4Bx}NIi WN#&gbL^A_1sXmK4AuZZ CGA6qK literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/copy.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 GIT binary patch literal 594 zcmZ?wbhEHb6krfwc*el+`Rnf=KmR0GEr0jv*Qc+)fByROo^gS)J_IJ)ZIC1ImdoO<6eg6Iai|ch`(KYl-Z_w&Qo-=Dty{`%wh_n*IK&6+S{#>BaEdS}g? zuy9`2swFMU7Pc>%*EMf;?~yIV2RD`OU0=RsRqfVQbsLs9u3Fr>Y(e|+t%XN67a!VG za&TkmzV+q%)>rIYQ?+Yt^@e4Qs~5LCIMIJ)Q^u7|nYZ@VT-}uU|Nno6Ap#VCvM@3* zxHIU0+zW~m2KMz0?oG`ttxXmkot4W_b9Wps5j zXfk4vRxz9}$i=Scao16jlytap?!qMnQ+Hj7J!X%ee17cct|$M~{QZlIOcJ_%OI|o69_p&$5Z-06 psEL`Ko0;1xqTxYPJC}anf*T!+9v{#qMxsidv8UQV$-}(Rm literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/cross.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/cross.gif new file mode 100644 index 0000000000000000000000000000000000000000..98377bf1bfd3cb5d188e2c1d1ca9be170cb32bdf GIT binary patch literal 376 zcmZ?wbhEHb6krfwSZc^{R9N+>g!)lQ^<$D6M-{Y>Dd-&6G`OLqf85ygzK-z&9h2j> zmd9@UgLpHs5G6qbB0D*0So`lYz!YDdkNhPtmn)L46e z&WbzB7Cb(3%3QEFmIYKlU6W=V!ZNJgrHyQgmegW^vXMlJ?>1|0?<0C|>y zt>(b|0uLRje)kBs(2&#w7m2p!M6OWrK31(7--xxIFGOdpIi$actI4ZYY5ru-B-JK~ zr4u_;q8cV}@X5)^@^g6Dv++tvOY^dMD6oo7nZi=W3#1wDmj fA`E)Y1`J#)oL6%)#5iqS?6i7k$AN?PjttfSv{tGa literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/cut.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..d044e59777b787792b58cd20446f3c9dc6e6194c GIT binary patch literal 212 zcmZ?wbhEHb6krfwIKseilb~3OACaCnKWKMG`nAKpo zCN?d%F2U7-g@7tAoWRp67E bU?#;O_=e*$=hE1@yx+`a?3a5gGFSrujh8`r literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/edit.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..9312d7e0fe06ee1a96c56ac48a120ccb61cb725e GIT binary patch literal 577 zcmZ?wbhEHb6krfwc*el+<=daH-~W91_WRZQUmrgIO0Qk{^Vgr;=CvhVn~OU)HB8;z zIBj>=yh9IPet+`%NBf)uy^D@aTzY)-fot23+}wNe?!6a3?!Wl{^8L@x-+q7i^6T4= z-|xTt{`%w3m+!w{e)y^6oc`w1&#ymzfB*UW_T`1Uw{+DM*j4A-RTtQ`mDw~G+te4@ z*5unwsB@ZCZ$6>YvZvf?POsI-Q$@u?XdkPBeycH`o4c<(-&a13Rs-Gz p^76d@d4oif5*H>MsuF|ZCiMD?&fRpK=ImD$qj2;7oBYb zp)(U!U0S~T*77~K)*rlUT(HErV6j8_a^9F(|NsAIpdL{C$->CMpvIsBG7{t`2DUVZ z$ps!dQvDvvnIT%LohlPQYwEbJT&CH{W#Fcfkd(lo*X}eWaeB?N3@5410-q@!PLq$b ze>&4(z$eb<-^j-+$H~RR-P7AE$IUJyBP}B~Ra#nBMsx}*6B`>d2iuZ`94lB>M7TII GSOWlifno0e literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/filter.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/filter.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf1fe5299c5bdae61727f3f1a71dec625d6235be GIT binary patch literal 224 zcmZ?wbhEHb6krfwXpv*EaEZ+?YY9)ODQ}sTT014Cb*W$f-jMFizEQFN{=WbF>Db?o zKy>`?r{jN~&D+}|wzW!lU8&HPYT;cCqPrSJcQ%Nw%oki=BDB6#XdRF&5nf*^yskue zS+>A`Fi`x-!pOiN&!EEq1Ry&ZSYsck_oZaAEl!xmsI+Qn;ThJ8bsx0u?TDP9A^6~P z#S5SQmXDvMedkT~GMTtwiUOBw^2Q7ei5Sn|B_~}B#QBarydmQ**6wQZkH!A5pSyd( V*CbSma*c|>aHzlbq)mlZ%Ooly3q`h$cq-Y@) Yxhw&eP`SmIQV*Y8pyqyFor%F3054BIwj(b5!P~sjn^4pBFDXFJ7TPNb)}zFdzZN zpDc_F4AKlbATf}g46LCK)cR5~=VfGBty!EmMJ+qTijl!k<;;`cOWYDXbj&=28jDUI znIPA;;-J&oD09KqYe6rnb~B%5E3$|ZiD8?f r(5RuL#}txqFvG}%;Yv#K!33RNPp<_UX_HoYDlAByc|N0rgTWdA5cyP) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/green.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/green.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d24707ee82f54aa9fb10d1d9050013cbf161a7a GIT binary patch literal 193 zcmV;y06zamNk%w1VGsZi0K@VRxXubL!4|)qjO}gg>klxZ?TGXw~#-V zU_Y2&N}FX?r*L1YbYiM-aj|xBv2}#Mgo3?-guaA=wSS1Yfrz+)iMWB7#*ml2h^x<; ztIwFU(w+bR{{R30A^8LW0015UEC2ui01yBW000F(peK%GX`X1Rt}L1aL$Vf5mpMgx vG+WO#2NYmJDM}^)l;8n@L?90V%CN9pFcyU&MPO(u48jTlL$uClRtNw)MiWcq literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/help.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d70301dae38843e0ad0ea28a42710f4c920ea9f GIT binary patch literal 259 zcmV+e0sQ_)Nk%w1VGsZi0K@U5T+@im_^v zw``QSd7ZwMvdp5p(@=n__51(&{r~9j_4NDy_x%6u^7Z!o|LpSh`ThU={{Qv-|M>m? z_x=C-{{Qy<|NsC0A^8LW0018VEC2ui01yBW000Gm;3tk`X+Do(pr)8Mgb)zTT0U^W z?HoWqBm<#9IH-g~!w8q*Bn*q1fs<(fKMz8r<6!JkoDSh?xL`1m9m0T!L@LTpc|+%{ z6&U&@o~2NBDm#AzS2%uu4h|L`78F(^LK+$zDjF6V1aU4f5IhhQKQ{(25)w2vEhs81 JEv+RX06QZIfSmvU literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/import.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/import.gif new file mode 100644 index 0000000000000000000000000000000000000000..d38085ad9c273000d1c7ef3ea0144de87b776e46 GIT binary patch literal 327 zcmZ?wbhEHb6krfwxXQp_Z$IBYetux?yuh5fA^8gfa_0sYEDX$@8&R?(qGWMI>Eg)J z#W5Aj<7-wY)UHmhUz<|DHmzxW>%y~b3(wBod@a6qb$sorkr;FE?8n*u-Kt|Id9CY|Ns9p&;Tg@WMO1rP-f5pnGNz216#_0i3J`yQvJsm zgg7JQrk+bO_7dTAKGtDoB+_bkXzjJf5992w1-8iStkCP%_Lx#5y6_`@wFT09~= wevLfb(wrPzoISn09c+@45|YAGBqXFHg(kDGv$8VHpTB^88S}Cb7e@wb0E(nwr~m)} literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/info.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..a688b8c8558f371c2592cacc849e96bcb10f50b3 GIT binary patch literal 146 zcmZ?wbhEHb6krfwc+A1T>3;+NC literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/minus.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..d353b8324e3b7d63099e6b8e190dca04326f2a1d GIT binary patch literal 185 zcmZ?wbhEHb6krfwIKseS+Z5x{o#Zz&J7QUB{D$hKha;CAj$C>uav2aEj#_#sYT2Qv zV)qmkv%1PvXL4rV0>rik?s+1aPxR_$LZ Hz+epkV|PIn literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/new.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/new.gif new file mode 100644 index 0000000000000000000000000000000000000000..d68588b3f6c593f393570c9bd1380670b56ea1a6 GIT binary patch literal 335 zcmZ?wbhEHb6krfwSZc}e`Rnf=KmWY@^y|~t-#>r-`SJ62+pK*(^ACOa@_X{KW3$$r zUbOlAiXE5N?74dH#gDtszu$lH{mGl3&)@xg`{~!`Z@=#VMPB~6_u~7*S3h2T`1$R} z?`Q9Re)#(P)3@JWfBgRb^LKTLe^s%6bxA;7sb4jaQ5?`-<SgGr(Stle^Db26xs$JRFC#dDB*55Co=Bh3>wUSTWRatZn Xzo>?*s*-}@%2f)gDn1*X9T}_vyYRdz literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/no_perm.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/no_perm.gif new file mode 100644 index 0000000000000000000000000000000000000000..486faff8aacdbc43192d92dc975e5ce62c0f26b1 GIT binary patch literal 333 zcmZ?wbhEHb6krfwxXQrrsif>>R^IE}!k;^K{oJ+Z_qhxA{loA1hrf$RdK41)?CMC*pNz!pFGm$8EjmR87z6*_|_Rcz^Qzv(;PA=fzy_s=Ym} z>!iEg`KX{LX^Ed}YF^jWJU(*d^_46C!GM9jT)S?)rz3+k E0Jl+U1poj5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/paste.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 GIT binary patch literal 605 zcmZ?wbhEHb6krfwc*el+?fb9KUw^evS=T;g?WeE5fBgI%SGG8}Wo>-%w1nbmg-r|E zr>?vI;>V*`Ki+@-_3qQp#_4++rfg}PvSs4Z<4qG+wNG6;effbI%MbL;-q1T^)%sm$ z?!EZ&?Cp=w-+uSZShWts{r>RPk4LY6y!!C-{>$%=UVncIlKnMl_Og2~zfYR8?9;bj zs}ElJ`s3HE`3q+*Sh#S>oE0mkuU|W9_m-}08~Qe^ne^a9|E;|>pN&Uz=|bP9i+x|N&is6J)|Z=0zuevM_2I6sPY!)NTKMTi<>xcapD*-%xia(f zm04eJEd6q0>DRj(zCGOa?eU>+PY!*1cH+jmoHHv*FRZD!vZ4Cin#!ZI5)aQxIk&Rx z_@bgyOG_@Vt2#J4=g7SLeKWGxHU_P43ES8iv$;2U&$O(q6VjhtJ9g#Z`v3p`Gf)f^ zf3h$#Fk~|5fJ_3#2?P7ChRmksme#gR2^}4Y_7)L&c`133_VkDdE^#q2ajwLO^p>z7 zP9Y(|WkMW5;fsRSZ`c^p5*rxc8fd(0cVtVbi;KUDG3!xQbCZ@RXTLKhy25M>W+$3s ze0-gpOl4WL)zuk|nxh@P9lQ+rgaz2y_zj!m?d?204U~WWGH8yovGtg+=fQzD|i zHo=}anS3p!hc%{&IIfR8zMxCVtzYQNbl$>m*~Eu!D7PV|`Vl63Xgs?a~Nt_M=F~va6HM0uvY~7kQp@7bq5^q@_?VsHrC* F06Xi>WHd=(Ze15;Qy1mX8t2lT^ zHOHgY9FJamJZkN+sI|wVk6ueSb}ixP)r4bLfn?%^+sU^crQUj&`rv8W|Ns9PC;*B- zSr{1@v>9|jW`O*}z!rUAYJrE2RKG`JYNRKhwpQrnor{(Ph`sVEnyR2Kc;c~(o$WdP zMb0Wl6K^dQ-0hgs;>-jdR^IkRnBPS>u2 zzP$y#dx|F>sGEJdZuY5(OOHQ%_4C==pYin@GTOHnPuyQR`C#3gQ`=8I*?#izoRxcz zUVd@(^7Grzf82id{m%0rm+!uL@apH&w?AKh{Pp3>uWctEZ$I_;=#>{&?!9^T?&te2 zzrTF{ee}xn%lFV{=a*UU2JB&6D$UFRYIK|NlS300G6H zEQ|~c;S4$;`$2KSz<#hHys5dRwKb@tv#rJ7mAyYKAhLKw;#Wwi3z_I zzi+pXu>v<2Cx@|j3!@sdmy(gak&>m6C$k!3xSEHDo#E=W9Ex^F)WTKWU3m3%`S|qp z__UndWW!|~oY`2I*qB&(cvzjCrNgBREG%rl*cupowUr82F}KmS$>WIG*u?4}Cb=$Q z#l%Hz&TSeJw=yaocCm6R>x8T*n0Tn8S6nxS)8OIZPGL3MB_@`NH#|556;8A$G%h=n J(8$1G4FI010%8CF literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/radio.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/radio.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c3356ca33561941f3ec8bd8d7bcd90d7aca192f GIT binary patch literal 187 zcmZ?wbhEHb6krfwIKsfN`oy7#SzO^W*du0g)~&N|+~{1r+H%6q$jap=9UHtl)_Wbh zwsh~gsi$tN-gUfp*Rj6m&o4fEdhz+=^KW0>x_f=k=l4%Oy?gTi|9=J?K=CIFBLjmt zgAPa@WG4fw#RJv8l+1YMuQ!;$7k V0WSg=S{MpbEB8Mz&}Lz<1^|?nNoD{5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/refresh.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..2139781f12fbfb5b3d13a4172b53a2a15c424d4c GIT binary patch literal 217 zcmZ?wbhEHb6krfwXpv+Pw&xRZ;um!jknj_f3=)!#5Rr}&QOS`}%aco67@xT~DSJsu z;mYjN)%j&>3o6zX)oduM+gMS*xvG78W6$pPDF^ze9h|u0%#tlvHZouXia%Kx85ral zbU>0II~iER9;o-FWKL=;oW-_mU2?amiH}cMp6L-Qn<)tejS-we0tXE_xmB3t)kD5` zbuu($pZRJS6Q`c9S~{`8yUinYZ<Ew4RM~ChuP`<3xJx%B+Sp`K{~Ax;NKM z+|e|BZ|B^Dy$g@DOoEfOLTT#K6{aU`Bz54qxJl zB|@GpTjyQSSo6|If~%!bfuX>+fBlAvKcbsVUTm4=8k1@Bp`yk$BvY-AEqS4bf{m7o zrj)XDt5U17vZjknd1ZAihrEo7sFZ?&?95rSL|sJ6g}6D{6_=}sxClzAimPr=lTcF? dbPViCtV#GtN}CUpjiL_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/save.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/save.gif new file mode 100644 index 0000000000000000000000000000000000000000..499dd0ca6021c351c641053be30eecb5b4a7e7e8 GIT binary patch literal 639 zcmZ?wbhEHb6krfwc*el+6w~t;=?ud9vy7?cE^q z*1q%4_Md-x_|o&km!6%t_VVPl7w2!kK6mTY)%$O+-hXrZ@w-PaKBPA<&u(2-(6RIc zNcPq9H=oX5zOnP@<=ao*J$&)u*_+SB-Al@Q7r*)NC8Bg+ zz;2_n+r|KMbN2{G6a4_&{kGN)4gvc5juAGR#sRMOu1@w&t^vlzRuN`KMgigX?uQ4k zYgk5@s;SFPcrC52W*VWRCnlyRuKMMRsEVpigru?tONzsU2OVNcZfg!)N^s&3;9>A! zDQIQv=+@exGeO}YGc&uwQjf$B2b)>gB6wUn7Bn7go*uf&AmXGW<1{9LBBLK|iF{>@g$ZTe-g{Fpkur7MvwUbEG$6sEqLS8+g`iV!qwyRD35-;MB0perhEzk zlU^jc1o{+wCWA!H9?Yd&paXuKEo03Gay1y z&`g?;%Sb2&svJ-|phU<-nLxOVDGZs9;cK&4WpAhpn`)G6pxn34GV ze^C6h+&CE=pAKHzZ{M8y_A7s2w>yVjRQzpCA#{e;(3r_Al>Hi=#j*9y8V=F)%(;aN zb93|742rXhcelLfU2kV|F&m>?ZYi^Td8u$Q_c?Z}yYAkeyIXY$?mWZ27r5QH_pNz= zyFGl+Tqn-Medmj_-*iZ2yH9guR6Mg}Iqp8iGJ$6m*AGeuaZPW!k}UWCCK01kf}Jpcdz literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/tree_plus.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/tree_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbad1682f77583c1adf5ba144fb82b643bd9b833 GIT binary patch literal 92 zcmZ?wbhEHb9guR6Mg}I4p8iGJ+cwN;I@MSmT~T=cTnR@I1A{dHd2AiZ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/unchecked.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/unchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6b9f8a590c64c46ff86e92300a896154d0db416 GIT binary patch literal 148 zcmZ?wbhEHb6krfw*v!DtJ#F>RzyGg({{Q;t|Bt`_zxnn5-S7XO|NQ^<_y4c||Ns04 z0R|+X_>+Z^fq|Pr2P6hEgMr1d;H2m3y<#uUnzA}+^c_&=$(S`wIAV{%8LtJ2_rLFH qaC!gR>O!K23L9(3lAuZ+i}~l1lf0J7iQdRDyYVt<-ve(J25SJ2Iz)f~ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/update.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/update.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b724a6784910f0fb632fdf4df6b46a144555ad2 GIT binary patch literal 336 zcmZ?wbhEHb6krfwxXQr55IT)Fb|!D^4EglA3K?_dGv=CK0qT>Sf9>(8_Cdt1adlnL#q6WLrPyt`3!SEK0m zI?>&YVk`3mR^$n+DHL3hC%BBnnIz~g+PYz|NsAi&cp>2f3h$#FqkpufE0lI z#K4y8FgqYZi?`q7(Xkmen}SxJb-OAu&tZRT}eifdF;41SfF@krG-*ZXoxN^o#XigWm~3yMt<6%}OnWfKq<5fb8OD`Vm1V`gP- SG-KjoT;(U7vw8pD9sGYH>i^m7 z{}+n?Uupb*wdw!W=Kpu5|Gzi)|MMOH&*W4G3O9s`Hie5dhKhAYOSDHz^u$R`Ns&F; ztb4Lu|5%IOu~xma-9{(d4NrF&pY1liGsFJ=Y^MivoF6U?J>712zT5O-ui5SC4)jB<~Eh3Ck(|MR1tY+CYw%7@BZ0uHG65^MT;^$&kcave^ j77&vV;AWL^lhtKopEXNY&Ru%J!UdsAmM(L0WUvMR>~MP$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/eclipse-icons/yellow.gif b/eclipse-build/org/rapla/gui/images/eclipse-icons/yellow.gif new file mode 100644 index 0000000000000000000000000000000000000000..563743d393f23c877d037a37348c9f799005aa88 GIT binary patch literal 181 zcmZ?wbhEHb6krfwIKsg2|I>#5FDL$gHF5i7)qQg`cF$1XJyZSvvl;8!CMAi|&nQV6n>fz?Ps zwJ#-eUdF0*IbH&~j0_v1I4TmBoId!c=P<+44xhfs9!jheEmS+E9{!nODz$daHc=)9 FYXDFdK#l+a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/edit_window_small.png b/eclipse-build/org/rapla/gui/images/edit_window_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7102177ec3880bf858e537969f429f2d74a00378 GIT binary patch literal 543 zcmV+)0^t3LP)&N0JdNQ9WMX`+=|8I7RG`Y zNHCH0UU%oS(B14VtKM*$Z{}pqeCIne>eJ@EeEqTpvDoM*5BF!pT13J>)e=5@CykH( zHvskW#gi*ujo!Ty|L%++SPMVyqu=XD5J0RD*^G|o&z=IPyU*tfICuh((&fe(j6lv1=>t->0+ z&Km*nJP$YhngG-3^uG@C5u|^EngE6d literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/empty.png b/eclipse-build/org/rapla/gui/images/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..89ac9a7f26658ea6c7f2f9f506a583c44ebbed23 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3HE7boT!OQfx`y?k)`fL2$v|<&%LToCO|{ z#S9GGf*{OTpAtV2D9B#o>FdgVm79%+N2sf-?;=ph+SA1`MB;LC!UD^P?TNCUuV&W& z`+u_F@hjd(rZs=RPJMWJx4%nv!mt0&?LGaHjIJ1}oV}cVeO;dv)5 PV;DSL{an^LB{Ts5M`Sq) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/error.png b/eclipse-build/org/rapla/gui/images/error.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad474bd0061cf3fac28ec24d6f872558280ef08 GIT binary patch literal 1030 zcmV+h1o``kP)l-H{Z9;Z@*7?pYg$a&3+pI z-R7>D232!g0OBT#o&^o_xYKiPn>;swX;3wNE%{QYY&;TBJ~~?pW)f_f3n8z34&bay z!bz}Y07lxwmx@hoLA=Cg19%H;0FT?pS+Z_(*OWxe3I5#tY~*f1O(@U+lJejjDn%}Y z1Rzq9;a=60bo#brqnGm za_M}eBx4~dYDFj{5=Erc%5UX5hW9Gl?3cFz7*_7iJ=;u@7PZ~EoGN@N`ReD@r)4bw z!@a60i8vW44)Hj|11_tP@&Le>66MO3rC$kPQD92{#9Ro;qc|i5Qq;><+8F0(>{0-3 z`^;ITaz(AEiI`#KE)i;O_t$}23&26pFmC(IIS3jCpzrzsM4nAl5;4Tdg(Y94B!w)o zy7Jtw1ki2n8h}>&*f|IqW+R!ecY03w=*$^ukCFB=Fn!lg#*#3rf});7rsn|EJ3S{= zyxEurRWk{;O#0zjAYgl5&`=X`uH>+W6c6{RW>YIh+9woH(2A0XE&J0Jc#@a+wAL*9 zY+TFNNJ%0jpeSft>RPM-#polCNJ;!mp7Y1GI#BQQoK#{LkJqMFjFaByVg78a?S^nk z(vq;cVA&6ETnpkeBJQ;R$km2iUQiQO1<_vSh@i6F-|6H_4mrIbLh&dLld?-9rBJRU z6cFCX)^Y;4$oj1ah1Gnp#v`YzUGIMZP(C_y`mRq&#C$@8FXPPhlq-4u#cuAO)ZBl? z^-eES#6J@;O3SZYnGyA!0RS>bENIJtg0}yJZvl`zOFU$qm^+5UUw$wTzkQO8$FGMB zP6q(|^y_o#egQRAe0umDC#@FUC}hX=@ptL~ls|vq05esv90>(in$sMB)2|!mN&gi9 z_bc1{ICwSp^7!=-fRk1$n>%0N-YPjxfsKXC-kUo-JKrBW_bS^ajKgg1#r{+N9-i{e z{y|oaa|Iu|@Me0scDuH7Ro*O8qbdbkrrX>#^-j;prGx+v8z0a0_r>vFYl+V!*fNVM z*=;sVZUA{>(cVYeBNUQxQss9JU>3;J_`hQHFT;YJ)nwH$Z~y=R07*qoM6N<$g5JH~ AGXMYp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/exception.png b/eclipse-build/org/rapla/gui/images/exception.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d2968b14e7af376ce01a60d1ce8078b4698c2e GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDCq0y z;uumf=j{bUJ_ZF27RP`8GjrB>OtD?K;KQp@A(P*q_f9)^*ekZj&+u)4PU6kQ>OQW5 zZh@S$`M3R3JSs5Dc2a=U^nfZ(tKU+bclYSZ`s==DnB}qxXfT7PtDnm{r-UW|`>rwr literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/filter.png b/eclipse-build/org/rapla/gui/images/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..43fe182b3747d069453a404c30c4dcf4af2e8697 GIT binary patch literal 450 zcmV;z0X_bSP)e>aWTXHp{=suZe&AkGEF$w}OtL>A}&r2 zf{P+Wupok#(m`8aG&Ht<2d%U=Y2(@Mx#w}uRU$$g$(a?AhJ!DZhSG%E?Xmi$M1=AA zRcUDkYGVtPFns;u)CsxIXt_hIhQsAqUa9!prX<$az?$%H_Q2=WIqp#o1&A@V1VC)> zAdvZEcN>7$yOZw;L*a-_F6>abzX%jyXR;Je_Yo1L1B6YBM!kle$p)T~j;4U0PXrh- zN5x4mlD2318Xqb*IE6eSq5!n^MfK%LIfeYd=1y~006;8mQYshvwuhot7pHd~-rs6U zk0gcEY@qg@7XYYmoKpGPvwhgGdU*XW;Z`4&9xX(ODbx2aYZj79uojs sZrw*7FyKG%o*<%<)5{`F>EgV!U+Rj4q+kUh#Q*>R07*qoM6N<$f@a#iUjP6A literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/green.png b/eclipse-build/org/rapla/gui/images/green.png new file mode 100644 index 0000000000000000000000000000000000000000..a4450c1c39cd0d33ebacf80b698f66f06f7a22d3 GIT binary patch literal 433 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/list.png b/eclipse-build/org/rapla/gui/images/list.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd3d1e8f0994e5c11cddd70764fed19b1ca123c GIT binary patch literal 428 zcmV;d0aN~oP) z+qONo==Yd1o8Y?cPf{$@OF015>wT@4aq+tRapWmxq?7))A!lDsS?0Fue(KD&k zN~o~$*rVTnB9mD|0M%9*mQ!E~7y@J1KDp$D=ateJZs!6XOSv#HRt1hv1+5{ZRb*PCo&n WsO_RNU9J280000b@?P)2NQCF@k-K*Q6EB`>Dglel1MEncJ zf*TjoV(G@J)Kx@^O+zv!8EX()8|y;3?gy`_|yxKR7!2sfA3~1(Z@EBJ%3x3$ZLq+N)ZvN-md^Cy&#jwRLDJEgJ+u zK%ubB>dFe&uHOW}w(SEiG;1GLxqI(Eh3)T*j$J}TR0p8hbTJHr?CWJl&z%LJ|3rjh zvCN&B8TNgbQZXL_BHco8I+0*Fev+x_sc`meaRJ$P@qHI0=oB4#;Cot@mKMbKov>YJ zPh4kD((`jtHg;s|+t<*84#4xLi{kr^Xsa%sYl~wy#B(gsRzu3Ayrk#nWame&yNPeI zS;ogkP)F7vLBO%TzJt^$`j1E0%9og!xZ3)Rz-+ht_iAAFpZvPNF=QyKolyJF00000 LNkvXXu0mjfAsh(0 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/new_repeating.gif b/eclipse-build/org/rapla/gui/images/new_repeating.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d6350c40c2e413f63f66717cb7469c2057f8a2b GIT binary patch literal 570 zcmZ?wbhEHb6krfwIOfZsAE#xIpyOTP8PXCE(HK!x>|YH+0o5h`)g=M-C4P0Ke$C~+ zk=>!uePQiYK0UQwy|rEmlcOfqdrWU~%b1pxF(Wx+R?^&7*X)^Txzmd?<|Quba4wi# zy1dJ2dAHM=9*4rk*+q+UH}uRr{>vuZ}) z+R0rzT6=eP%-lMA?xuBDHf3DdlzDYi=7vLuHyzq{Yj4fQqlY&i+q3QX=?5qJ&)j@` z_2Hvy4}s*nTTj2-dH((G^Y8aw{CN24$Ey!N-+uh|_S3HqUw(i3`uoSvKRYKPHt70KF!d^ z!dRhIZo0d+q@JCpe5=fK9W4VzQCFE(2@fwfD?V{%X%~rB5jQV;O>;&g7FUs0VJ|f) zFf4u_bxCyDx`7I;J! zGca%qf-qx!O8i8iAbW|YuPggy9yS(zy+XCuO+cZgo-U3d6?0+(4EYWj@Yu93%zm9` zv*4Am*1{#FXaN8K literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/option_small.png b/eclipse-build/org/rapla/gui/images/option_small.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc272e6a4e2eaf7f2e1db6417d466c999c3ce24 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg)7CvqfWyN>*DuF`ZJY5_^EKV<- zY~OvzLEz~9BbSX8BAz_{;rT^sW5*I(fkoH46c>oGceYMAW`DJI<72)aM&Cz9V(kKF z-NgTvZhm8P@Agf_v}4+PQoA=kE{wdqUhhh;(V27XqMR8wA8nIlDBG_olOCBdIYltW z{Dkba-trl9)$W!SEWDn5{gdCL`j`RKIEAASV9P!al)JDKah{ZIZiZwuxJi?en&EmxQe P3;_mDS3j3^P6-%w1nbmg-r|E zr>?vI;>V*`Ki+@-_3qQp#_4++rfg}PvSs4Z<4qG+wNG6;effbI%MbL;-q1T^)%sm$ z?!EZ&?Cp=w-+uSZShWts{r>RPk4LY6y!!C-{>$%=UVncIlKnMl_Og2~zfYR8?9;bj zs}ElJ`s3HE`3q+*Sh#S>oE0mkuU|W9_m-}08~Qe^ne^a9|E;|>pN&Uz=|bP9i+x|N&is6J)|Z=0zuevM_2I6sPY!)NTKMTi<>xcapD*-%xia(f zm04eJEd6q0>DRj(zCGOa?eU>+PY!*1cH+jmoHHv*FRZD!vZ4Cin#!ZI5)aQxIk&Rx z_@bgyOG_@Vt2#J4=g7SLeKWGxHU_P43ES8iv$;2U&$O(q6VjhtJ9g#Z`v24bivL8N zi&7IyQd1PlGfOfQLNZbn+&z5*7!-f9FfuUIGw3h?0VuK<*ta&+H#N7kw$)4M=t#7; zh{(%J$&0k7M?`Rmi;0PIB}SyTgavU52?;I};s^>~6tsTB#*miSzyQ}k<6XNWTS8r2 z{9TM$kFuJZv_v`koiWk9plf!bImXA=$;njqjw~aiQFFATw}Y1<-%CDze#7Q?dpl20 z1Lbeu4VvR@Y&|^mWtfT#5)U0!Ft9F>xwufN<*)#+)B=f+v@SszOPib?P)1i1pQX=E!EV3=R$ga2PoUG8_(*&*v!=3U2Z+az_Rtc|Oum0!R5`}L>`zEt%Q$zFgO=g)InrGleH>I^w zP#2Lz*pP+WPrJ5t;QHeZEfpmMO;P~@9DDVCTVMo|AtSU5unH zK~yNurIRsB13?sozdc0^IS3Z_1JWphSXjlv&PJ?6QrlVh6EuazT`!VClwe^WFr1B` zNC-#}3o9X5q>~s@C`pK3ZlA>w&FP&=+-jM(^JZuEt%4m!UE}d3Cjtu#sW9LGSU@wr z>F0T4m?&Z+LbLkfb8>SebHz0|sO-vRtIzY{>bEw=FcETq&6^Jw-6F?}+vK0_==+e` zJc}dqK~yS-r-h7>VdL6n%bLg266x6p1)y^1TABJo!7cSF^d=zRxaF~4kl@-*RA3Gw zpi}^^oG(i@l?C9{>#*Or;(ooPepCj~wK5t=Oj>9St+6Uo$xdYM#=y%!6<{`zByFY9 zfa%Rd`u(CD6uZ+4e;%69JGW`$;*K_+CT6f%LhW(-D_Q;LW4r@G|7M?-^&uDl0000< KMNUMnLSTX-Y_I+R literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/persons_yellow.png b/eclipse-build/org/rapla/gui/images/persons_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea2a4fd43aaf1881bb6900f75b09cd9d790e0c5 GIT binary patch literal 414 zcmV;P0b%}$P)=6N6a!*$MM`@S3kwl!{RcMjA9zIqIc&tnN^8MCa48hT zBZy*WVMKyPtt?Um;Z!htc@{@Br*{(KR?EDdnSHZw6>Ku-8cHrXF<8_{MF9sO3pA5O zzt0=JM3FKgG%ueujjJu$D=o_HMM1pB4_@|He#scUM6iJ}S_@BiXRK`$@s4lMfncsz zlE{1!m9l9E!sOHphr2}-|-6lT^! zfZ@?xY`;I8!{VDY*Z0sw-r2{;#T{%sGi1WeDvCZt)PFw4C%$rLM%e{SV*mgE07*qo IM6N<$f~nb`X#fBK literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/rapla_128x128.ico b/eclipse-build/org/rapla/gui/images/rapla_128x128.ico new file mode 100644 index 0000000000000000000000000000000000000000..63f32c1f24629f7acdd17310836b906adb486a3b GIT binary patch literal 67646 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 bCXD;M%V*zW>!w-SMEkP6TjKpE{ki{tDh5BX literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/rapla_16x16.ico b/eclipse-build/org/rapla/gui/images/rapla_16x16.ico new file mode 100644 index 0000000000000000000000000000000000000000..4bf9bb2318d5bce2e0bdede9f2823d23143a0d69 GIT binary patch literal 1150 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/rapla_small.png b/eclipse-build/org/rapla/gui/images/rapla_small.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8b8b605c48b8d5d61f8a7baf6abf2e047215a2 GIT binary patch literal 5303 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 JPDHLkV1k*NA7B6g literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/refresh.png b/eclipse-build/org/rapla/gui/images/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..60db566202614e7367195a2aa5707c0130ebe11f GIT binary patch literal 561 zcmV-10?z%3P)pGfD3zt44^_TJb+%IQjG>sVHZS-RPhLQ;RQT`g#dmlq;Pd#;U_{rR6_kB$N>n; zyjS-e9$pEQ5)p=kQmR%^L{!uK{m|sIP0(syjqSiJ2w(=B;I!SAaz#WTBBKsKW}856 zeD(NXTVUH`0MGNxuPvvyfV}AOc(lfS-#6EzUO!2a zgfI+wczCSWXcEw5Dg1AqihwF{RfLTk8n!?wCFk>*%jHswrDFezIDvtT7wz+K^X8Kza2!xriv&VH|KJcfnWvQ-l%Fm3%&*Tj!e|$s+Pz zy3ff0CXK$Fc z5a=wRy80Y#UHF|2#Bpp^zX@)mh{fWaIF82?kY$-62Uu;Jb4C$RgpIrnItj>+SvKs5NSG~1)AUCKC}7yH)0X%Lk;qiuo*%K^00000NkvXXu0mjfY&!K? literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/repeating.png b/eclipse-build/org/rapla/gui/images/repeating.png new file mode 100644 index 0000000000000000000000000000000000000000..a4edf854212af93125bf7e303b747b5d51832800 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE=%eIs6b<2Q{O2wPA`WF-_p00i_>zopr0FJA? A4*&oF literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/resources.png b/eclipse-build/org/rapla/gui/images/resources.png new file mode 100644 index 0000000000000000000000000000000000000000..81fd2e9b4aade73d2450e266a1a374285cff9ebb GIT binary patch literal 1397 zcmV-*1&aEKP)VwtR$mlAC+)`OlsI|D1c~>?+}Ki2u`6 zCubxQ6}RHMCjv|&nb661PXtUDdCmCGn0|TKvEY=H@FuPcZ@eo5Q_LEW4>bY{|1OMX3Muz%bBnJ!8#9UHC{Q&5?MsipfMJSUCCmE&Euvz`ZbIOx1m(kJL1Hjgo zN;$CWRSUnba5l;^(i*nH|hy z?y46MV{!7hm06Zl{3Py1n#OEDxGip_CD0VTn9$^g`FF#zx zj(wkT;#7Uc`}cla1wgm!B}H&tHG~XlQC8lVYd z=)jpXQ7VA=p=oFWQqtI&2deun1VkcH{9X^eBN|NuDRePPt_guA1SPBI0PydiW)UX_ zptsLhgH3>330s01$bR~7%ih>5{LeQ7exRMybyL2U*bjB3m^1;B6g8-TIBeqOR z4zQ;D6uBN1uWCjO*)A0Us996drNT-HNMU5aypAy$kjc$iCbW|S_}mJ*z`BCo5e-cU zl)wx$sj%hyA6I}qa#@5EIe-g=Y`2;&Jb~Y(lBKF7V^K!|ZXYNfNr2hY$4k52FOvfl zWxK7S(}eLQcvXeujcznX6?DbYkpsTzX#rX~0~6i39Y0z2bjJF~x)(XPqL>d?7H50` z!@a%eat8X#=x!{dJ7$m{jT_gdPDVanCQS2qJl6Vfu^}SMt@8U1zj5KL@&C`K!h$8s z2;>)_#>J3%1dPen-y0Dt?g0`Sn~20m|#v-Yyl`xh-) z2Egk6ZPeBu8Y@61ut#ktUsHaHbAwPo1%Z4&H@Xt!&h%Tjf100!Cg6T!zi8oN3(Lt1 z0(aSp?Pe#>3FM$o($sG23QUs=F)Q20#y6fD^Gr@4XLQqZ8v<^nDDD3t+M8lxiq}Ja z;S9^C3mu^gf?gFmpt|~9s;l9h?cV{$o|e&H(AzS*0D#!dDPqq2LJH> z9~ykW`6H#Nzl|m4_SWp5Ia}U&28Jz6ysoxhVIj+Pw`|kUt4~tW*e6VAe4+a)@Q3xT zidWMakFPIPSBs3k;C9wm=fakoGE=zgza3xFy#D1AtMG609_cSm_pQo1 zZ?!zd;a738` zq?Rr&4!lfEKYsjR{K3X(?_|Nm!o$P!j|^5;hA#>RXAe6UV|NBSXR`lD5C=G$I$1fm zSlQbV|0B`Z#NO3Kfb`4K|8l|BK|$fa1=~6QJ5XOCV{$ikU}9lpX0o;Y$FF};JG-a= z{kJ&>SX#gALeBLVg8EU|69>NgkRS1DmqzxO^UINxV@>XEx^u2 zMqGgO>kgxtl^HKH4>vOl3l}>x7b`O-Hwz257z?`ur#LtB*D#w18^?cS{7<|b>@4h( z63pCeoZONuEME;y77+;%5m7b{9uW>vW}g4>%Gf!(7~7cw{-f9GOYgsVx&EKLykbrO zV;6fTHG6xT{~$og(%!}1+0x#DSWK0JSi#uT%I=^3KhyJH-iia9tlR)*l1}!v#Q%yf zuhsvc|I69`%WobLPIggd4h{}3QD)MA^P2tt#Ej|77^Z)~@qd8jKSN&#{HOWf(EsZE zck%%2zB0z?D>bB`I=*r=B~3Ueb)w5!yWr~IFnkl$PHQzS6uK>yY80;RHpynu zP4tlslnH1O0T8eWIOse*d)r7XyiBQrOQ*3VSXn+5CIbm5*uxN=|ex=y*!7MDTkOXdx?Eu@J54% z^|#-r>cMy;eC#>N-&TnZ4R?NHcwXH!TV={KH-48~=?0APlscnE+pp4?o=sQ-5 zqTlx>BM5O-C$3n^J_Y;0fbfapl7$envVhL^5=f?bR@azWB>a>uvXc-QXR zJ|l*XB1bCc?&t2*$|JhTXIZy&XL}>Cc!G=U_TN-^LYFT*2nK=Q7=0%35v;J59Q238 z-uv!lrGoGa*DRjj^zF9SZkn*LWL3IK5siX@1KA-qE5XNrasWCI=CUIf&fIZIQB>y57cZ zzC$(`f$ZN9s(sTEn2-#r);Ko~e$d(QL35F+DR4n_D*m4ZlqLwP?E~#ujf?{%H3--1 zN_$9!NosZ9WFWAG=WVFpt z6NE(ipTypa_no{wGX|iY1Xq5)3m}Qqq8+HNK-cRTv7d0~gRr-d<7X}KC3bUe5y(aT zdv>v)TeUDz36U<=ecHFV$)3Jt-YEbk}?SQp!eWTm;ncg$4bkqsXHZ#Gqp-7n>U9gtFnt+S3sg5 zXA!*OS1OnjJ#k0Uu|gRjEGg0n;plc8GU58l4j38Pb5mVG#i3J?xNfj8;$S zAj92K$=$B9v|PZ{i6T&3e_Cgq9Wby;kdMEMEi6N}{pJ}OTnKJ{kdequ68HAwtiJUavQP9V|&htY%!d}*C)Im{WY7Pk5~q)eqaW@zcd ziKX-dQYcp8E=(-+72NcUVV7g28Nw-(=>@fTF~9EDu*$fKDU`o9%Z0??YL$%Ni(LAP zBWL%1`@KS7%(WJ+IQVkjM!1*uAGTwy^L&T17*dysRGk!|$7GzM5a_2NttMt7m0(e* zLezEhN6rAEwL*9(D={bW>W_`(?E_8%^N}!U9@xy1_0{bluJL_mPnP#z2pl5 z=Q==-^-P|Y;?Pa3P_@;%Fh;|b3I?zPa|4EWh5XzqKZGY3g{t#NB-xXLG?Z&mHfi+? z2wWrx2DPV2DKu_x(h?IYnFJ|lkqoSdkM^wTZHB`uc#uh2l_UXbqi>v(`Lr|laEk-mS&3UFrZ#gSWvC-lWZIJc^+eDUv;yoo8Cn7`9 z7N`67ZPs*a-WsF9LMi*%<2Cn={oA$C)oOUz>bgx1@vfa_jQb)+Q>AV(^h2OElMX3a(5OrBOGxrA0AWEL9i8HY)dI2ERpYNkFGehGQBv~JvnRHJHi)H+ zPS|!&@UXu_iuuOTfko`Dr4;}bS4l7nISIByDi2`SE}&dQUESJ<#yE2fp_b9FGFi|>rqxu#+NrjrHb<;=Qb-w< z044Tk*Vy9WfA<^Bw8blLGn!CV=Zc?szfmi1a+8gXF9xqG9tO1_?(QiHai9?9&rYDD4Qb2QoWh2sH+1 zM=}`>GiTDCS=EW@DCZ*Pa5}vG83>9*aT}^o`-7v1+#|+elY07TxTDxD@MS1?=rOP~ z^7&%(Xa%rHFv}Hp=F&kriECEc!di7jw^ay9t>Ykr@jh|j;0BH%mYHKwMKY^ekGzd( z(1f`VBnt%y5%`lKW_Wb{yxuYZ%7;!~`z3(l1=tUDK70=No>Bq^q*yWk@^(1lN@0^c zPyaTb9gdF!9_?Rw0F8c95A++BMU{^3B_aJs#q$vi4a%GpmS|ob71Zlw=q+MS+VzAs zy95KP8*)AT{Rj#F*|t0ObeK4cy0S}^Ca3xw;Hg=t>HdQfUvY^xya*b+`v@;Pi({Kd zc}iYlrKiXn#T2!lA>9~1qOx~Rh2Se|o_A%i(L0=jBnD&oZ_pJe?5Ic9iUt9 zv?N+l3?FC`G^4H&@*0PRs0V*|ol%~tI!g=@+!e%2qO7E{T+l0KMIFgOkGwqV2ufTy z8Kck(sLDjVHn(L~p&(4y9u#Kf7(%$8a)@gd5FVS5Cko`F;^azBEJ4H4J=7%_12EKe zG6nha5ohW_6dlnoAbGYSUGfW-u?7&s&+Wo&-UErWx^qnQ*wWzctSP!?)ka__o!>-d zuu#HS(|)F=kar^~uh&x-htGudV2rDbkY0nh+(6{vBu$Z>`RinoW(8&OuBxEURqy%- z&rzhMdnnG(k5Pu*kHlLcCS9wiAt-ur#Z8Kfo-JhTTof{l}4RAj+ zFhf1MeT_n=q1QJHXXrrdLQ-rBDUPclRE^-FVqMzpyVY|%J`hJIa%`&#`w1c+8>AA9 zHhfpDPPM>b(4oSx%eY!dQ}#o86N4h@kdPJHDikfjRlmCJyZj;c$fEq5w+bNq1Z*;6 ziN-3h-!BR?)S6bVP=#*Mt!4i%5(Q&RoivHr%lRiJjF|Y`IQ_ul{;e&+GO)|rDY9(s zcC89lA_fQ^Nr{M1R5mBxM;2Ww=fyykm=KL(ySUD~<^|cBiZ4OB3q5~_CgzW-JibSe zZBeq~5%1bL+HlNi%gdbON7_PS$JE!sdPt*7_vTyWJpEOUA8Z>ogWV)0lEoR;=qQ&s!%7#E`|v`Dn4 zu(IMw@5C@AEw(&!sGy{sqbsQbGDwt#t`~Etaa$l04rD}_Xp#F3f(auzmzJP|ag7n9 za&;OES`7Uyp(`L$L^QAVo8P!*G1-TVS2PJSQ&9bKGIK;c6N!TAQ?I92B_k~3ziJb@k!}#p?&0+ zVc&^$2ik)BjO}D`fPLJB8K`aer1r&YARH0Dc~9%J#D|~E9=1df#ksJQ3JWGxu>=#S z=&j^o`UrvyMLxmX6rx@CCw_)uS(!y1I*L&xL=DKajjM;*1dxt2gJFR>yPqbr^>vm6 zGz=Fuu}0v|73J222Vs*_q{T*NcZ-~8&r&@!VV`sKKoLfM zOILp^K;|Z?pc&U$ zJ+~uqvm`)SJ2i44nTI}a6VEUO6K0oqW}H^bVcdje_YMTmhR(*?Qus{^=#}0Ni7GkX zOy4aIVbw)hItS}SN-~%ivruso8sor#?>+;;Yo3 zkZz{1507QJ4OM}#MuR{Bgne@nKw8Few^nPOSGELSWAmFvGK-?*hLVD?B*2nV0GquL zQ-3S~M4r+69EyvmH;uU>g+p#JYxhIyAgbX&2^6f8N)_lqRnboAsbbr9aNf8Q=^tpT zzE(lmQvMor@^@X%V@qw+6IXOlIEkY<$6Ex;-VFOq$xH|nK8>HJRM>Xjp*JGaK7p^y zl_0p}-Njn?Ds0G2W>{2~C5&EZqNVMz+vo>UjuV~-i%dL{L<^!_#G@AEDx)fTl$S)z zIuF#8L>i_DFw|avzVX}C_!uJodbAsko8#o~%paF&^(2m^njQ)#V7Cmz0p1O~0{p-j zV_PWAs8^e=Pc^dC3h2f{5%qBk0$jvG&XB0-_k_ipMKuY37Pqeiu-&d#Rj`h5oKI-B z%!gkvga#bi`jeN-9|f1E-ng@1qc~<|VL(7=4>boz!r&h6_-}>O5MRTfSVcfEpjK(o z^YfxRk6;x*O1^<`7hd2;YT~Ot3hX5mV6@HE{p!DQ$cBQd2OaI(M|Rt0Bus4Cun8cf zeWShTfq_ik)~?fny`Cdvc-LmZ9So>hPN%OV zp&;X1vvrV#*s;j0HW51oEC`1#B8pX8yNc`(+G))LB|KuzS)lmZY&=;nP>@W#WhB}7 z&IyRF!b9q|4ol~iEb%l1F;qmvz>#U?W(*XtSyl=L?rUVGrFSoIxcuG9aDM0OG%T>X zTTKFBwTq#RzoWmB>n{ift`sD~-J~gm+32Yjp9Be&^;Ol?AoLhV#8AekKzJ?aZ=xL9 z!pccGYGcgb2hq(IT*%HphZIL?&f`F;9%q|yVvb|i;KIlq=i|G`iVQCL#Xcw=Wr$Zr zb>P`+W~`T?Lg`1i6iyc!o19V86i&<(#two%6pDx!neK`zF@Zs_AQJ40*T>&kF5wuFo9vb zfIX69$g-0Qd>kEG=p1Gsj7hF1`&WT%v(f_v!u;j=(?NgZ?qlZJgec(~Er-UHh(Jbk6x!%y!^QDp{5*eNqVYR77iaf%@hH#(L1+0^=!CRWSqP?*F+ZU8 zrY(mbT7!1Vy;Iw{Gp|eD)Xf|`GvBXQEm_PYDh!`Ik78U4aEBrZ1vG3PrzXcf;qs1x zToGke*6$G2al>P3`i#QbcpbBKQ+`_$i`)4gy3g3eV=4J|mb3nK>Y%DBY=0mK5hbD2 zDWx@pIpi#9NJgfZ(Z)fT2nmz63g&HTM$WFD110T@$V1+O81Oqd#>aw7(I#1MW;sim zYdWW3@^X<=W6H0nYz`q~@qPzXPz+rsZ?)X8S}$r?ib+M*9mEleR+q zeitmS%-(UXwqj160QKG96@SdtN@2(dOG9E1f&fBrAkeXPx)$Nd`x{)T&RC$)XGKlvJHPqU+2Ag=*H> z=`AXs)H?_1D$FFxOMJA#II61;j0%fQC`j22ai#!Qr$qb!3n$=s%TfL1b`Py|hk0&z z@I-yIFR213MJ2O+Tv1$LGdEKTM4wwpqTvd)lQ8I9DO_i_DqDP(tWLR+4nOpYV8>z4 zY=UFn@=M~DsElhNd3E$({vM2dtI5_NDHl5rf#xcPqAn4&>*%r9-~#@fHZMEPO9Dlg zfRC>QIb%Vh#GG{n61lOcPE$?=Ijp>Um?@bjHE!|p%xl26UlNF#AhF|-l6>R`bsk0Dte-~Dl}UU7->sKoMVeKLWb8&*mkpmcbkLtZqn zDLB#!ZZMGXEZA08!*EFp&)57myTWMkeYA~JVt(Eg8@6tOzgwcoO_~=chnRy>fdZ4< z@d4J+y<07rdDt0S+hi&^%rQ2>ZXON&L_zj~IKIR@6oZ%5offF$n9r;fOH8kI+oFh! zR@0x{bFRZh_tG@UPZU}#Yf3gEU@9AbaDJj(c67wdGK#wDCp$0_g^bH#;PScH=4W)8 zgo7nS1WtKd>R{xnZ3i>GU=gK=NP- zl_o*HC2oZpA}v)YHJ?0rk}ye4%X+>ZRy+S;T2Kv4r=w6usDvOxldCFZ4gJj;Wf{WT z-Z}OcEI3M=lSO%e4Fpx6M(q^yH}!G*4bRABATJz-7$Jgx-$dbK>y$jijG<6Q#Negy zq?UbHx@X2LJ#YOV=IW8sZ|DmmDmhV5*fiumhWWHsS9fCUI95t=U^tmbgo`i-k6{?O zEm7e}-c7xhbcwWV*D;P8Q|f?RWK<~3B@P7SO{=S-Xh-BQ@Pp>R${9!|V+GUXiz#B{^y5S`(sw*QG@VJLL@pePMsM@1@{U|rb~e7l-OsmEdq&Oa zU0b=pj{t5_dO6S^^Y8lmL@&^5m3@$Nc{ZWlHgTCthOc;x(WW)vuOniG}i1! zIM{4WnAxZvF7K-$snCwqk8{K%!OkxE??E>6rKGlFCS42>Sh)1Us~q^#f~UBGu#ecP zQ8x1O!^yJC1)*u=DH-%Ue2!$(RaU1Nls8L{PWn#}-Q)?ls(v4F!+L_}mP9gj1#dT5 z+bCP7|J`?qW9}{V`q6TsHAQdz`E?mX@<#F=8IM5GbtSNJm`}<{*g|MiqBQM%jDtPKFsZvO6HjAM9^zS$& zsFmq7by#gEXA4e@*=nrDk(CtfLeeO8aV8zm(U8X~5~+zrtXzXIx%qZCEDj|m1JXem zVV^(SsL2J&#a8V_X_VAFy|Zpvt_J22Wr++XEW$x%P*S5`C3tZOZmqNLX~67FJstIM zf_TQfQUEN)(^AGr&G%HyP67s+K5=YX76>Z4dQf?R@0IDH<59?r z9z=`2O}_^^lug{_=Ib$|nK02UefBE{#XDijc%2xrYXdfgj+zkAiK$=si4cFEHblM& zP&a27d}H{HgFAy+CK6eA!&;4+*B4?(Vp zP^&&AQ&~>ItniR6ngjfkL}wJ=KwF(W7&SfwfhGl_WHPLaVxElcVY)#jbboo+{QTiQ z^D^*?Hhxj9_g3vV9OGKqO7yA6aUlP;^LcyY&+k?KJDC<7V*w{NXRXRS;vfqty%p1_ z>RZ6s1fyS4NEWMsFdq2YE;AK|R9QPVNS|_wD-Q=teRERF$VwaB$m5Tl;)x!n_lK%b zR_5XQS$E3ClD81~`iav*HkZ9D02YEIvm!a#Mi83(@hTb=iO=G$1MA`LgoKw#9mn+7 zMv>kt8IxqkF0|_o^05epS_$|iavIA~-%>G0g27Xkx!HsfyO_Ch)0u8_F^0#D#=uWU z0Z{aL_B5KQte~DHQ$z|mUbQb%e&K2U*)0+1ScjjlE&9eRJa&km5AD1Vyr2Vk|8ADv ztnbP>YhoF7+J$1bThX>EU4od(S^Pj9e`k0)-1HNe)B5GjzLa^!0uJiAlIHgngyRl* z?%DtZ_0+S07K{>f8~4gK-&m2s1n}))==v@rF~)m(*JR=>6u6IEYTqE7e0*o6~nJ-cnj+^l60Xn z^Vrm><0mpRZpVNk4fBSF24O4h82xRr%aU;$Z4?&w@+bq)mtE5igI8tS0u ztg1s`sd~b7p7*Ib!G#xs>cxa__Z-peeOvZLDD9zd^}s!ODj>jWwqX|`6<02k6l>mS z5IAo9KE_uuuk0ar!~?WFoF=soYebr9!<0Rvj7*?q(&`EJ3fEg(tiJ=&52c(-o-^QX z{9~38R=SGqV1%fxsBk$sJSp6o&5+XttEsWz6WE-2bCm%-NnaA&itt?hgBv~8n5=Af zn`6yvv|l}*CoM+HSCCiQ7N9%B*(Jrt8}#TcQ!GT5w1+h?=@*6tZa2GWwGu^Z(?~Wu zvLe;;qKcs=`nDdcmJ3)9#D?!s3*vt6x|Fpx{0nBZA*od+jM40plU+u1OydQO^=%a~ zo1`n9On2+S9OlyWlH~G?-myF8f6Y;KsQ|o0B>81pq5kT~MkzM^!~aau;F!s)Em@=a zNH%E|=YA50M2S`-k7>G8e4yRoYegWNzr=&ykd6U8o*@0}^e^a1@>GkupRwS)^Rwg6Gw6s>P!}YAsXm{YSgbXqZCtQE&N23z2SIb&_c%T|lrN zO-3gm#3s7hG1&;RDw>myxk1e2JSYL*R86)iB0EIghHZ+q)uLat_IbVr@(B zd8{YkaHMh>FL!L*g2w$%it_f6y2Y7WYtT+lgi+yJ4HI&(Cfh5h{75_+_pv5|7hN9%StIg9xwqpOnN2> z0IcYM!n@rY$AZkN+}c?>1R0+gw9p!x0Zx~doanZ^{z=aft9%vwhzI*z*`s<5$3%q* zt?yd(Qa|V`OEr4X#kXRUX-)bau^ehm0LIe>ZB-YSrt#n1#(!lTRM&IV1mv4&sM8bX z@M;EOB7}E49hAgsnPqL649T7@!SSISd9w;6&6+Bf(n>0b+n64l-YqF$>y4L~=^mO4 zjsO(lwkKYCbclY7Aq%*W0(yWOlb<>0q*2kG&o{fjp_cU4HlQj~wpi3~m zM(axtsHQw9=+|1ONC13FCo0DzOb5Dy6rc*D#IPaHIk2skQHVvv!2TV4D zRX((^k#YK0=x4M5cs;)-%$(<#P?NM>9U6pFuswr5j2Z$yJX|i-W;ol+r(02N{uW8- z*XO=|Axiha+Clpi#2LIL%;IDY<<}o2sGC54^Uw!`E>gD&8_ovxIv5SJcB4W=kRh0N z9Y}nj?Mj{IuM&B#;F##niH-!_`o({u6apHsD{6fL6%beNORRh4Nh60V8~O~MnGBmu z=k`JlR|<0r`F>xo%BKra7hI~T3wZn|!+66an#7ERAZ+(nn5)|$ zn=!jH=i!X)pQE;HXDIg-m~3~)N#e>$&AX9@p3Cfrbr{CxC7N~Kp4`aicLTjyOjG} zKrhXBp&x#|Rb##?C8Y|TF5_Zz`Mz5Nip|=xO<|0EMp}UJ zFUogWXn0#4z9;#eC%;)861M5vt89T)E~*m8*%gf~yIJ{b&W)#U@7o6*mcM`17cQO! zE!BDd178_sS^^_RKmIoL-M&w2%;#*jQBi3-hQ~pSC>X4n`pAwl3Oem6>n#V3QKN|6 zkf*$CxDw0AZN0HfSKs~O;PR~lCIcF_f(9_jWF-%lX4}y#&f4s(kPHgq7_mNgu^IpP5Bv{-o2P$Qzq`r zKs__<7T75hw#1}umDp>vtry)BPA>FDgIWF3A-ZxA#*ib{MBe~DSxxp@V{Fytb+|t2 zH=%B|k|Q7Zh2*Cw|17CNN(WtSwVq9f0`;+Nv`x|D==s1O?9bb3??!jWW530!fk>y4 z;FseX%XvGg1$+-v(ma=uXhU%#5X!>_vgv4?VdbLDY#%DC71AsqjM|0m&)d14e=9#B zF^V>>S~jlQfIlYD*6=hF7fq-U>M4}&_8YhAktXCyWSPm}?}W(FD-}Xax_wLRL3J9; zt0riIk6YNzSQmbf1x^GzeGi$8`^|v4A#jk;P|*DzGQL4LMP&hE=jk%R&d0J@$*=mW zT2CjT5(#Skn|L^8S)P|DVyX1yby^R6>3h(K0D<#t%)Vldwn2sHi~`#w5})JX#)#Wh zu8`Z36?jNN^R|<-U34WdXsFi8v(ZR_-WWC7N#jXF$K%M%=7+bNeHge(k_{4AVsN*T ztvqC?mC*UcqR5XTUAO|22Dtpe>!nN*W?FkJbUs?30#M$5gYD;5cH!zaZR0?R#&v{5 z@7T{@oy`#rakO5;v_fLkQC?;NbMy5Z%=;9R zn7nW+P|W*ghL-DX*AwtYroUdP*n$0d)DaAIzwk17Bqb#U@8V;--nXv*?qm19%*Xz8 zv9hu{aIK4pS03f{Bw5OXL}m1bGU$sY(D1W3)fwq79JkneWfY%Vrd`_1B5a3PreouT z$L%mUu)tj^;+$xcqh!`D?0$x_&uCy-UvqYNc=L)V*T#YvvrHHyua=dQ9-0Oj>HORg%gZOqK(&>Ro zlZTmpeRTr7Q_eV;`6=7f!XlZ`K?U(>{Q;fpu2sH^$oXo#g&^~u_54_t?T=N@0uQh% zNL&tS^JgZ{h-*uBR!#z}Yn#rhEbaQ%w!i|hX69CF?x9Q6_&-!6Zr0xgW#j*ns9qt} zPgLn05_E37-E`@-w58v?jQ_p#bM{vRA%2QJeEx0e=jeSe-rfiRp&-^&Mf})z%BI^* zz~Ay+9Glv1FATL!(T*fq!)pI^c$<&x15@BMh{(13NLSl+_pqoa^!Mdpt_i=^e8=P< zhg;(_9QUQz@U3{(`2gU80+}(P9n)jUZ`Bsdk$lo#}}MkxIV4W7(QoPo7hrHvZ0EnB~EDX{z@*Zy@74E69v z69H_}c#1m+$lH+!h|T?`_T6Ruj_SE-0($_xk)i||Yt%UsGpdQL_@c9p`KB;zfBcnShK16Pc#Q_%9u*wAfp=JOH-o3 zSU%64UF_XvI5Dg(mh5Ip; zk0pA6`gf^Dz80<=e$@a&KW*=~^x^}bg;4pB_66MXQMktz+vw4l$LE-|i_!aR0_TeB z83et{+lrQ*rUhQ+w53b5X{)TT|VPjpa@hqg&c5Pm)4kksUri=&L>SzdMRrYvU`-w4V^tkk^|Gg2_#(_KqWvSnE1uA%XuWtO@e^K>CuG5bW zw*hPPL*n@{%uhJFUJPz2Ei?awARk@!oh16V)8%JN*X zaQq zBJ?VLE>&dub1Gk61cKERz0Q>}-2@W+cRT%f_UgLJ*#dmj+oS!basJ=q+rLf<&@8Qo zYrH!>t&KpTFibo2C@bd%hL!l>)s$Cq36zTG-p`KCw5>ljlV#A|buA>10g3H|i*?XM9CP0#3?7YwhWoh2Z?0D)vKNo!@c1i+pE6y30KkST~1%**H;r7bmW#ztGw zXph#RvT%jy@g!9R?MGT;Fo+Q*E`wnN85IZ}W$^5*3nr!|xkk6S*89?{GtG)bsrOO? zn$+WxNmVYU&)vE7Yx&iC!e8-0hE>9WhJmPbAp5JrlB8te$$eG7gi>Z*rnG8uaw>b= zo8H$3BYmG`vBQ+S92GV;nbWVWGyNaA6pydhw|ZhVt7Nt{R{1;m{H!h>xN1TmP+Z6gDxyWvSy{L#j`Lnzz5!=g_^Y!Ego^3dn3DsVZF+Su&SyY-0u}#8H|&u)nf|=<>V24kAnwhy0!s zH_Ce6;obi9ry<#%uFZJGea%@V@DWmdwduAn;<1=s{#+Tw$WuxCe)3JDg;4 z)lFZYUy$F#<7TcCMPB4h(B!&0LPljhZ%A3)j1 zDkDyY!Kx>4rr$;nG7L}q+s4v>XG%ffDA>g2@ySu0D+JO^R6{WN_pCpDqm`p1!@S;U zhkM2MkNc-rsU^G5fz~y2W8n9a-|HG65F^fya?nzLUtJ4Z6;8rQUyPT6Lm}S~zJZJ} zfLeoikM!P$2q1S~l%`A5s{1z5$8*u2RIbB1IJ>_5F%T1Vhy_xePY+%IzO}tH|LDMa zTwxtTB*%ULl$dPgVT8EiR9(pc0;f!6%{M#k?v~&=CWN-qLktk?gyr-GWzbu-U{7qQ z<#k^`4{4YvZBS&hePekKt5{OHn`?w`wq-aJD-aQxI!SVW-dFdS}MQM%1;yU$Xw-WC1i0g`L! z4Av!ua2*Q5P#k8n)(KZ~w{Z>>`Y=FVR>kAN=UffaJ-c&E#YgrrEUFX^Z1 zQ*_$=lpm_6uYpt*SFiFL#Gw^PrNzNs;i3R?W*!_ItgJ&5y6=wQ+j}3UTl~GZ5PUBz z&1tH*;rg2xJXeKgE8g!Jgx2gncm@d zIt*^8z=IT@jcr!o^ssGb_ZLeuuWSVF9CGmC7ohPrPCNdhTv_uU1tk0-%CPKeQ|dj) zz&dQV_~`9$J)i3P``|xMlykl#uqe1(ol3{G+R6f?GiXE34uRTAvrbRNz97n`G1My) zX6gA+(W}QM@*bO$rCWw`U}?ELb-3NK#+L!A@DydfVTu4iNJ}qvxOS*pdTlo_JrU0M z-EmQ)(Fmz^@RZikv!w35%8+`0j$V~x7-3pX0H5yBEnS~}L~Cd-GSNh`-!<2sB4g~t z2!oaBoM~URf4m;Fbj87tjv{JJL&vDmrP`mFj8 zs>TVDzRfx74=Kwvbcs3+yfhl#;;{Pb4hZfwA-#-h$F;m>#oO3$XytYb{5Y@(j!K&m;fz zT0(6D`Yi%Bg^54m+eAO#AEbQkei$#=wEnz)H2qj-8b*M*L;0mS4^po8vQfBIDA%m9 z-&qR9EdR!Mn&uHN)83kRh5xk@y6-N0t%;Lqv++*zOQln+Dn`)l^h*`^5m=Z zY=G*$QRms3YrV4JcU`}}#P}TC+VF!X`dk@r?*WH=3C17ob*_T{t^!k{gG4K|GrBc4 z`}K%eOO(cg=+w`adFp8GkRi|qk=zSQ&ZF1`>Fwmh8VhS-(C_RSNsGsv+Znf6C*6c+>U#1L~jTTyItq*Kn8p>LcS-meO zRq#_3ev|j5+a4!VQwVn8BVz*tU@yV0%*>MOHI)}Rc2SVJ;bGE}5y;z|uRXeyz8ApJnTN~% z^8M>rH@PS-quXR&H z)c%pnA@rs@FpG3IC+p$f&z7893x4?3N3x8TF7F*&m{&m*34pcE?Z=wWmor6hVx!4o zAJSA_xVnyzmEq+T2C}}PV`wl&kN7cXgqnL#E4p;z;Cn=idr7G*ap|ybS!MjyK_0DI5_=ur|ZhDsDOjm*2uh&B7c`dT-n|q#5 z?(XjFKUVBN_L=_f^XRe%`dY$w1>Ae&4dDh$IUH}}$f7|hWf2iH&`PfXq!)J26&a(2^yV+kgJoCgA z{Cl;SM>s97fZSZ-McC=3Gb`~LCvwl)5zzJH!X>4@9vbP&5_>eDNXfXZuEA7gR5G$y$ z+n*Y194gJPJd2ArGYsiF(Lsq)i|bURyixudm3~>?{k&22RO4=mUM=S(kxF=1btM$L zXWgWvTh(}$wtc0TxzV8SS0#hjVYjdQdE4uBE`LcL2aQ9>>rQQWtQyab8G0Vo(B1g# zZ#P-1-Phrv-=U@N*S{8LFvQq*gyuT|9kx?l;eZ~_^Xs2<&CyywifOjzNNlh+C0q*5@YAoO@=o2D6};&8nO>3p;xC} zAL>!K2+Z!QJXWD}s^$bsM~f!0y7sb1n_n4qTPm*(%stmCP*Hb)VlLJfyPnWghMEQ@ z5(#?0NC~~68gSuFhr>dtrkX3V6aIO;jLB>Rvf)80eFket%_MVvYZI`LRuch7b!Y`XF z`?4%5tUl8B15;cqY5gE|f2K5;4>?8S7KD%>S&hN8=_eC}e2c=;Xju+UxFXgstB&!~ zo~?8x;Smls_~xD>YnAp`)9J9`4=wo{fpK{-j6aY03!Y55ry5KQtDjH0r4BM0LGgOA z=1#h!m-rMu+}zrixRa82P(L*1RIV-=M*tw!0MJ>l7Nx7hW4*{*RH%}dvgcK*YO^&V{+KMZc@&3 zHI!Ckkk2E-8>*5P=Hg7pHuDX%s908-sfP5y-sy%8nwZV z54J?|hnL8O$045J7v^ucR`xVaWPzLA+>g`TCWC;aQ-)&*~oq}`JR#Awo^)6~uGkslyk^jKUEQ@8Dv$bpUwe?ohYr{=N z%3EFPIR;yU&JsOIQHec(fGT-`+7d_Fxcchb4~%C^^>%z+G3P|`ze)WHXIiGN%?RDi z&g+ku@2?mQyoD!+XD}$C;rqRR9L&pC*)tSc5E{yr)9o1X%4Uxqb>(fhA~$hiWUX5^ zuDy>xbAbw9;l%3KoK>%i(s}Bs3-qcYXtQyd8p78~SmD|d3LFf5uY5VFOUizR)|%_* z?cPr=2TQiDkCvR)j2i4}YM+&D^fO-FFe3ospt?@M)6B~4eiE+0>T9=T_2`h=yXXk5 zUPP}?fB7W&-ZT4&@umRFrS6hXzk2Ib(GwW}fd?c{Aq;?as2(FK{sn$PFQY?%j?ekC z&nm;WJo%Df!ZqgKf!r2H5XCB%P^c$s7qY`ZR)lC61`CC~qbq|m>M5k#ro)K8)wAI9 z2ddFSaq@?}G-I+n1W(qv;0VNe)@-jSW_ahKkq!mC`P|V#2kB8P&w0I}$f$3r{0op-O)Vxmi0J3CtAgh8u5pAA3socB4<|urEi{jvigIw1 z(dYBNEdBZtC+j}t)+@svUBxDW84uF@(F3aeu=->FUtL#s3JMIs8bR*+ogSZ!cU$}( zGllnz_{y>$H~Hm0Ch43GW$^)s(os^Wum^AfU9GJzANMnYPpd0}k7j@;JK)r{0N`*` zj6#m<_~~-P?Rm=%lEHKs!Eo$a?#lXQj%%5o8jeOb0g(~x(-YM|^gBakN0W>ip1qFv zK(YUphqAmf#s~YZZyM9O`vAJpdth|DpfRDlOR6XC8U@cY*7 zEiL^TDF+oDRn`G6jx?7h6b*dCJoi7<>B(q~Pg;NLXd~zrR!VewUyZ_>XqeU+otR4h zY1!Zhang~D1pJPNa5+hlot_xE%62}+-^I&qVkFA&LrG@D9IaOyYnlD67?_yV-c{uF z>H2lkaf4ervk;n*{kTjs<4|jG<>~B{p74|gsBp(FP7){+N-4z1EQE=485`vdMJlXh zw$`b-ET$Q(10r`t^RgvK?y)AXe=fjKrl0VAT?!=y6QyGrLCjGP3ombG76dNWVJ-fc z2h4O+XXnSY?-w#Cq<+1}0#9OlZi0I}&c;gQXL6dSaSF69RXY|S*aq|HA|3GfJuwPJ ztK50?y!@CAR6vM;SWD{$Ufnfybjm~cEjuB5W=WFCmhty_wj3>58xjr!b=#`sH}8Vw z&GVvfxJ<;_mppdSwDIYGRUT8tbfHX~z4|$ay}guNhD{pcU6rfABT+c>;cL=+w8fE2 z@KuM5=>b^hUm}v)t#A^?A`$8)GcrKETyCeMmpUU{mLab7a;;yi*uT1mDHU>gT<#93 zM_p5}qD?EPa5T;8*k+|u{TDlam#6A_o|cvP#;MOi*MOgZt~q(!g+$(kUJZ{tP%2%B ztXrC?a_TB?^}T-fwHuh2w9$+om6IXRIBs6e>i0f>>enHt)sHcO@g+tS3+HHJRBox! zFNQJ?9#y&gwWVgF4j%an`%H?l{w#98HJ7ey9|kcBm#+Z*cw_d# z=Hp((*~izRAx}rAOyF>Z>@6)FXRia@w3Db&!S8|Z*Mx+G4Jjc0f5n=s&0R+cw%|ZJ z6nlB0MBuRuad9kDkId1jvaJcLhdX7ot?oE7s=rc`q^9oc_|DggKnLf^3mVknHrxT zL7;Zp2|sZREj=Skn{t4?cX;`s)6~@4+WUAqeXGOmdZ)#1CWn7vVWF&Jeh5MFTN-i8 zj_=4y5AadE08HK59qjRuA^5(XkCVg7iZ$|AHE%yT;y1m+?j}U<`r{CtZLma$>aH>m zm`k&#B;L zf18_p=>Y*2CPcZBGBPF_6v8^sVp&#>j+Q?p(7Z3!o17di9YWW1za)rY<(mlHc$eQq_$Lnb5fO-<{SOQ=O90}hJ!eKm4_dGohwtgZI+!~3YDubK9j^5a<$TSFMH^!u^$;47=Rnb=9Z}_ zNKbKj+#Mz=2ypZAdVwH+*QJf!K&I7_7Y)S603q-uG53Qk1}tE~wk1?RRVZVLNy@%g zwZdh4!p|YzWcXftec8pV@E)W(xH-zSTc)$ORpo}8J$tnMCPRJMvh4_83$wH2FyeW) zYl~rAxln}FmUmkxLEv!+>d@;-IPZAVH&6T~yQ8ycFP!&U>)YSAv$vUg<^;{JSGqwe z<+H%?l4+-x{iQEVpRM}WUU@QY6=k)Yz>E0FMfbtT*AXVA+`b!aF)!+GmpW0*Osvek zwaX_)vLId&nHYRxI67WWgX0U;?&k4&pZmoprX&3UMdF7#IWr^pe$jy9@^Rk+cyAHB z@kjpXXZ#TP&bbT6Ouh)XjnsR)?|E@j#}g|6=cT%oP@oSZx}j9aQpbJM#2?ef!Nr9= zJ#qD_M6Ev5XY%6{9lhPqtx3g01f%nYvD?qBnA{J5$i?Z{c1ItM-gyT;YfT;H2}*KT z;zDDp3$@lHLC2AJW5u!%ex69&zBX-S?R0k9IL41Iy?4!f@#b0uW}RcUy_7WMUnLW1 zjFw|)!WW%I_{@uP^dA+MU$QbLSBf#56=jsE*bX81Zy9{YTueYh5UK0lX5mF(9_Y6; z4LlZ3iE9u!O75&R$UW28wLds8TG92|1rbagz_;^WR3iC;f`YhJ-=18K5)cr5yR-wm zD|{|07~Fmi0bY==J!ZU!+T%p=zzYv*fM+#5H$y$x4{y!KJG!V z-i&VJU}cPTQNYi_!C|bnCJZY7wGY{siBk~pavMJOd5pZBWg8hGvf+`(g-XVXfa;EiZU_Xz_LVpp^c;F`{4>~0(rBT-w}sL8mZ ztfAO*AH=Hp#=)|M36a(x;2HcV&sCwa5Z)#fKatgKpT;Eh-WLelVza@)&mT=_@yz4fzb`2Qo!kw= z92>SBHm0U9R{Nvzq@k*B&!g(mA3ea8o_;=44+0&u9C5je-ELJP;svnCK0lR!nI?=I z(}p=H%D?au^#miw0?#|WL~nuq3RRnlYU-zqKBp5z-vqzz1w(V|u13VRNEt42ytX-j zB?mt$Ol>;JNqqTI_a2exDxbTbyKobx8(+mp9N1Qs)sz#D)kNo4hBB3|t?b45VmK!- zi()*KgZ=z!?>%5jXZ0_>clKp=q6V=yU3|+mvms7VOM})5T_%FECO$bg?>dy;Uyz@G zs4r*;xxiU4*NE7J-o(s%NJG`{%i%)8=YbMEc)2|=o6hoQiA9x8ZG7I`+^jPiDX;gw zdOhygVo>F16aGHjf2hHG)sp+hIt+xDvEoygngek@??FzJMU_MH%Pb zgVXK2yy~#)cvQtbH}Fpu>Id9neNnG|cMsBTv)10eNM~j2`bgl@yZdL)Souslb#NOK z;el=Vn9YR`m2Fz!-|%q^QdnJ6zovI8a!?}qM`mSZ$@*#}rmNUZsBlbck=r1U){+&O)kMw_^og2uSY*-V%$#!TIoH{F-+n$mKDKKGzUcvz z^}3(&uU`%+zYckKfVNcArV3!5F?@i-Zm(^;-`zCvhYh_u@IK z?@YN0fVYLvzu?fnye`M&nK87r=FE4Ah_F(-T$hV(hIOh*;_Xmb4F*Qc_FF$%$`8v~ z3B%&bw?-S6MC%QxZ-jXQBrNS)l~iLD6Fg|wq(-5Mpw+|Y5HaV>l$>>vBRz~JJ6K&e7z&g~$L~0Tbed9KSmKDo|$__PLMPT{B`h29a_#`kJ+c1|f3E zQ=ZyhzNqNv1E@>a$gw(JHyx*`>anph@rJ!he%Fhim=ANQy8Zdf;~cY(wIjz7o-xk_Y0Fh^Yb{Gw4qff=AUvh_V%L0<^fS*k~sq=E_PrckR8%Q;;QWJ7ZK5 zir=JKQ%enws_gA_Ea2ndYhUjpGWT;W7us@{nJkpt8b$KAw7EiELSyJ>lON+c0;n@5 zBRwu@>HYp>(;LI8co20Vu2eV}o=BOu`h2<7!2!*x0<+~a#oqJL{k-Knaw$}OTUSRn zqlP|tdypSW@D?ceGH~tl_0A-e;3J~H^fvgd-KcJ#@h7I#(Y(*|)^pp}6F2t4r2RbS ztb(yqJ8ZW>>=CX$rrK<@-u%OC%X*>?t-jKk`XeDcyE0F)YNQC)sF(KBrlW?8g?a{{ zXocD%xPrE*a#Z3(&pt3O;^f`P|7!KMVv2-IF%3&v$nOqtJA?%|cJqZj8ot`cer>67cuIc@`=AB^?2+C$4 zHdh?8JS=7jil?G;cipPya~Jk&X@bzl!`BySc?yNGP*e9RhtC16rz?$iP-V+uF!U z!4i6&=m94HYp2fJ>WjS+jHk_~r;SDQ$&fxyPWNbqbku3LTjv2IZ~%ZuNO;b`IMCTX?}KR?Qv)mBYwvdm*#Ty5+xm}MTR`?@7gLIimYGBEQQF1pJ zU065jLkP*MYy0kw1#W2mj-|S6$u^e<`qJxd>QCQZOzbJO4ch^=b2m#A#;+- zQ*0JTN!1lOFXsog(!hX$rnw{`L}PJOcqDaDVitxSV1yT^5<|pY+HCW%KMU7(xCc7o zm+iKC$KyL8yn3xL7Zm;=1ld+KgIfBK&xrtxB>#3zU<0kb@S2?rBFFFHzsQGs>ljk# z_jaY7(~WF>me84pBG_4DL$&R%BtQE7`B}Pbv;eb!f2(!LF-LY$Ji+{4PrZ$G7tVMx zt0)(X6B2qnPDfGP6G#kvN^h^vJJGULjASyRd5~{E3R1{JtxYQV`0QC?zL;Go2Wl||;WT2I=rd34>U2Y3 zUi?sHfmS9z;m=BB;u3#j{XP)1>AO#hSGWBG0^xFB4rsTdO+!DErbmgabQ=08wA zrRa?JUn}TgvC-__NC})Uv1WQQo7?qb)dOVFHlxAuZ93r?nE;a@QJ+&8y|)3ukAa~f zu_`&^A9aXIbV2O=?2nesN&(?2wUWDB{QRF+Ze8$PR`qy7uD9~(Ef=jHVkDfYQbkyq z%GBpo1|h!;ZmC@s1{zZ*H93@y>iiW^C(Mr^;C3T_vI;EBr5=Bu6-EA>0tx6hoo2vOmEvP)*QY#QBY)Xei*jyVC%dfKS&mAQ zujXSk=D9ZI|0a}!ALq-=py{jjL)lrHwLr+F+InD@ahS(CGaCBZO)|D^nS&{>cP*Ml zYnGwEfQ~0w?pG+U`!D;SmHn=gZpN^mY2oB#jpB1LX?`z$M&ZzEV$G*i&Mwsi8tk!3N!~7erT-bgq zN`=|bLMx4O`g`&kk2YMbvE^#KwvSYwh>pZibxbao055L`;LCS+1b3mGYaJ989oRzOrO{Z3EsR6tbVEWGfhFHVg+kd-{E$K!wT~AKc0VW)m(43CE_nF zXZ@~R995s7ScZ`JOZ>d;wu1#cic}DIG``u3K+5Y*CyA%_%W$;Z9*^GDyS%dh{6>c+ z4#s03Bt|6jTO%_AhJlWrK+yN2*B|mr(93S# zSj|xvbXCx`52GnUIB|Ru)k39h0Zd{UwbH)GfOxrXU6WF##Yz+1k~l!5C$Cbo!qUpB zB3YFMn{!^AhE(ORWc-vZ4XZyCgrqF$Pm+Da=eIw{-aC=0#AIVoa7bXz*%ta>x7+xe zpS-@^uO^e2sWsYd?zj7oxSWk;<){rqdj$g}5(ke1%V;_q$lQwr0SHFsh5wv(0kAG%Rz}KpVnmU|*iUH)aJKc=SRA3$h zvUhf-uZ2^RVwHcioSfa3IEPt(7p;1*5vGQw0Fpths?yHv#B8H6mCAnK&_9~!-+H4V z^_K8p`Noq)_uNPdxdKaBb=Mnue(<_p@0U$Q!gh_?PuJb=SI2^1ud!-V0UxYEM?jMN1Dbrt%JD(qBUg`pC;%>JukP9I<4fn3A#$&G^ z`X;Gi?|9a$5f;kW_cNBJy64HNheAHiXj`qb?Rff9r|a$MKgvOv7(&kZp)bsw80HB;Nb6@P$D1;w1NM&N zf0KuJ8jV}_x?OMa=1jRZw+QM+TW&qycwr^<)e!B)c|0nf33A8{xQ-wbWbwM$X8$fu z_;~O6de?jD$C5W~pn9aRf3X{#Rj*{1t+eQ;#GzgW&v@%?g(!t$!_htlHMQRXz;i(M z)bXk8&50G8Za&E1>$kU8#9+`>{I~6z@hb;m{IIpeM#2Pfy!>l^+BOaBw2Ubpw{{!k{Toh7GH^5H>2!TCzf*MABG)?8R2Ya1Kz zoJorwwCK*osMW`jZd}cpb!r>h$yQj7>W4wI ziZiEt!|*6ah#L4_l&jJ*w&+rvx5s)>W8nQJ&0x62r~d*4CCxDud4f?hY3K$S2U;*5m@* zY_kIC$S>E~yVhAbBCqF!%%f3fN`FR3&pfdug2VXRKxr?`t1p~l%s^^`Y4r_!EQ3x| z-_#dx&~QZgqo)N)jbi*L;pNM{;Fpun1*gQ^%dg7OuCYJ^l;X1d-{gV#LwS41b!;8B z?ir`(;1n3(@ODGi@udzODJEVr7;d!qCDm&X_PaQ}$ckuLBgLKeOv&Q9=0-@P$cz4V zKId9$HQN53HFv|l0mPH04IuK{Qt4IiV@Pka-R1o2<@w8(B$z3u>EI}82JqC78yp6l zXZ)P!z3zluf>bJ}2Xt$(XJ1PyTF=;74XfEN>NS8q zedKZFO8??N7xhS-B`sToJI}SlHgDi_Q!OP*ct5*3$%lHIZ9Jtk@lPz?5I=9py~hd2 zM}~KS|I!7^V1J22CI^7e-v5s)1j7crl>pv~K-3rG*BwY2jtm5&c^K&vnfYM!-h*E^ zGsY)}PPqHv2)NF7u4IHDf(&=RJN(8Za*5*?NRMsCECNv1(kd0VvF7u+gEGH+nJb81 zq31bQp+@75A!JddQe!|fH<{?=TjXPGszH1R?;D18nw=_-$!caa{wW?FAA`oM(3-qR zM+QWNU|Qr`t#94}{#q&KJLn56<=cFpkM!Sue1O?=ZwNkmtPYNR;+ug(095E9e=_IJEaj49E6*I% z-IAO)vf<;zK&L#M%#qe2cP?^vzsh0uTi|dAq0?Si;bgPNaN^P{oeDEJ$_p@!(fmGy z58i6(g%T33)rSjwQ%=^XwKbCyh2xzUPx3I~W|*i2ldsjV$Xam@BJ2h7$4oMn*=u@vi}V<{~2@gMiUXtl(>+;48m1qSeg# zJ^Y@=52H()Ib+s1IKF|oIaDSHg^G;12j^XXe++l%U@!!40?ls%A1}8?AAZ->89Bud z3VQFFgrU_Y-|$Ms6$k}=fs)M*Q3n$2)^c@&{@_`aF-vuj*k0+pw2yaWh-~EMWTGr3 z4w&pk+~!?<#A8ATD9B}zDh*EA2b`e^pv!z!D&vZ~d%Hu?z!lw}x7-9jPZbW1ySn&) zjCws^i&n?v2tYF`dXWKfGGMqkwCH?K0dKkadLMIypLW@eM4!Sa)n;o!@uP5Ioc7;m zoZLqfde)nu0uaTd@(m80!MGN!9ln4*d<{y--fEYr-tNMfLf_1XranKLEtX99FWV^} z*+A%e$$*w-L)fD0&*Smi{c}`_w|Fb+!6Z~G%Ld< zQQdDc>gX;Tj0u(0##?M#pC)B*!HU9idQ6+Gt*yO+#$DYHhNJ(Rp}g+AN0Q%t21!;x zE%`WE$@Qg{9pGB-E4B@Eo{RZSI_Nj4frrhxf^JB)Pj`~HH4%o{mbB;1lkRA75MA(j z{<_IiQ&m;;d5~m;v4zx^vy4f?rT;{JpkL}2mZKD-!v%0|?d$+RGS=0WZ0K(CTb+O= z3}xLlo%=J)WPH8*P)_rInRO9znqYLYkW0jC#ZAR!vji6@a8dXF%tuSYjm5?{(nQRe z5SA-H@4yARwD~e@wK?L+>76nIHZ1AUqUd)AdLTxFGw-^vZ~3= zg7&lgvFYbIHP|hv!qIAZvfFO=`09i7R?6fvg1F7cpVRZh+R)nY>c~^&ZN*~4@*Bcc zyz|1dOBoYsV-(J>jkkxwXK3>?PHHz^x@tDybUgiGJ?LYpPP$_}AU@WdV&HJ+J|Dt1 z>65lg7F>?D$ud*|(`z7e6Lso29qRu9s@uLELH$q{$%A$vJz2RP12Q51`qtL_e;l@h zbOK*{Oq4IN!&~WiX$rkyG;DCGU_7`kn8)(jHW5-DtCyG8E-KEmzuq2e1jP%P@9f__ zT^<@%4a{G150SiXSG(!V1e*YRN5?2Bt077f%Ri8l+$}AkxxyJYms#ixaEh-_Ej@^Z zy~wRcOBHGog+E7V*;e^La;Jm6OPiRk^m6+nX=NY)= z(gFBTyyjVw!E3|nV;~dpi=nn#vAtpq00H(cva8%$b2J9jo4$^wC;<_FAQ-{-5X zfq?;7WP)vwjQ5u(YCSDlW^(6}T>Ggrgb38wPU5buH!9J~;q3wLO3hBU&pWWo>wLA! zo@dcHg86D1bar5-|J<=46YwUfd^uffW5A0o935~O?@E{u%aQU244E3RI{l7R=Pu6{ z`kIa$;htVwk6JkqHCNUw^u6NHJSd`lk3^V43=Ly(6t+e`p2@{E)P5QOUT!eH1)QI0 z#kn@A2K*|OfCK~o+|PE~_O~psfpS>*{Pg+2gs8NPfe7LNSNZ`-1?ks%+Xw4*<^6Ip zM_e5kY8<2vm#L+dIOgnRWaMU-syQ4S>1AjDUb*>sGw}7CxidKA@I2(GG5yQiyg+%0 zt9>EgG~+iSHpt!f6;l+3)NsJihKs!z*B{m^c{P4t$VLSw3AmM(O!zRec3 zPL{P0>`0R%g4#;*miXQ)#duO{nOI=({7cM@1cFf1C4-IX6V+E>@Ger`e-A{Bup3br z*uqG$dx;R=0#fpa2HBnWx4XO)6iB%iN4{w+*;{WSy+DZHpWGgRHe|Ewes8ZpA~L7% z0(T+0>e7bF5YYxD6N^FH{d`|+7ioiZWqdHMpa9fM{pxWzfawl9xAOgtemJD+*i4tU zZuQuGp3i5#`S-xx1R-mA*yw5J)UtY;E9I4uIz%%8N}~{?i|NI2*wkP!LC`;d1;Z|) zVYq24+xh-9GLHmz29oyf?-t425ACINzUA^HeYuGk*oE3kaP}S4hyBpcZv-( zN0z5uQ2-;;%gaSFsnuPdPeYMd9b?9>j*j<7Q+B|6!9cg&xBE3~>MEtCFF4!$+r0C$ z!3g|up9ffgX_P*5jGB%6&XlQwMmmkGWw!D1Ct-%`#7i7x)9D|~S%v9Ux>a_e?@p%0 zMZAL4&4@Y4kChg3mp-cz4&uC}-{_8Vb6S8?Yu}k^=y3$U$8T?L)^6hq_JlMg(NN;p*A{(k^*rJrMgWjZXkGH&@ZMQl-ZeHeQ6MqWl zapvhc>(Jifdv$ai&tz|`1%}jdTJZ91jE&u{bU!scZ-bIGP@p>Rw>r&D>kALepL~NU zoE-n~2BXUY>=7UVB_35d z7KGb~7YK3KUt?@+<|O(A+0U-(^`4MF$Kn5`u3QbGsZD#bPOMp*S>ckncsmC<0YPPD z$q%`xAd!GyLcqRza45@gKa!heExWyZe;jENbp~x+Q4^K#_H$eTHGF(rU~CuHJKgtt z*=ycc3bAf9Sh$(H@R<-OyGTS7egv~nM01xLEnl~UK=4IKnn{{b5i{j|y2&ytS2@Dz zyWj?}{MK5EU()2_BA^{w9K`0ZS#>c@Pjx!)v}vibL2pD^-e@BFp8gr~)7`3-kxWF1ywm>zvOtCrxf-}BPfgkeH6nD!fZx%=kBo>xXv@0 z*VeXST)0|VDs1Ju9v3JTfWT{@{15acTMRh1j14#yk6{=G)t(nFAN7U5s6@lJnyYk{ zE9_g%CPZQ^)@!tnTrzj$&vYLge{dZmY`IxYX+R?Y;~AXj!;Z|QyqcMvxp8V~ik`~@ zR8jZxXeZfIPN~njYW0eXvtbsR%&R4(mOrTB+F*WJC=*sm<^Op5A>hf3PQ_Ci#*%;j z@-omt*!=~31OaCP0nftV+H!Y7S64T!@X@PvS1Yggvt(L3y)MsxXG>#+yq=y9d)d4I zN-*#+gR+VPqba-vB3m1XT2sWCG-81m)R`n`?@O@#ku=)dg3ia-f9!gJd>A{cd=9>> zDFtxbo!;v~PR+9U`eaXUM)0C*8$;jE^@@UiC^r=I{m?qA4-+AA6jBD1`HYDg6xlV= z9b$pkB>Or%EiSFI8{Rr`R`0Yry-zzEm7}7}3g?xW%a%yf!3FRL`{B=G=UM)BI94=y&u zfext?j3|&t2Zp5y237HOU@m9l621hW?um=SvW2cKex~^fTwH;dV@;Re?r``N{LKA& zb;|v$OgR&goWzKUIOQn$kx>P%fc>@ZVnF4Dbb4>U~S)<;7yu?eu=V z3x>zaDCXzphB0^zWdvaFc-nsnBqa@b>(2P4t}9|NF1wDKJw!JAH28Y_32umI*Y7v1 zPa^Zg=~Yel%jTr&n(XBJde}lhw=@3Bf^NwNJcr=@WIbux>g428k;B;9aESOh3x;l` z$G1;&G3K-yYG}Kbj_C-*eXX50Rr-I=zRzyNPZ$?N5XXWKksB>`gm?rwVVO?#b5>pLOO{1HUx_D)w*5fDokLo`Y8YD(oV4XxxgN|5-i(a3f~kLjr!MJ z(c+ti!(umxf>@%#m}3B114Bxe`XW~C__z&L1V?*i%qSn0qR8#>M{5rgNw=}M6&NlY zn8u|;U~6UZV$Cne)a$i-mU-_3{!j?wvIMU~6<%Mog>mS*3qoqaLZVdMUju-z>xtJ* z^KO_4tt`6^75dHW>}(mkt|qrDyj7@1XrlhF=PEm$9^cR5Xx!egh9Qc@KV>!&k2O2Y zs+OMvC#QHLJ^$j>1GSQnIP0nlh#MX#7-W15Wzfg#i?t({`*<$@P8a8st3Cbr_R(yD zKdo)3|D8ew8!MwREuDh(`{rRPIQ){tV&ZtMlO}NlvVoVEnUz3mW4 zrOkxyxQt&vXE*S1&+#;?CEtDO><5d173UU8HHwqN0m^HbSbL!rT zZ?;ne`>6s(p=B26OIDy zi34Bg6v+l!1$cJoh4Y+EW}J3J5gs?@M~Sb&O{VL9zacax!svW_YMdaU<_Yb5934g+ zJO|~yC|_TX1m+M_b5JT2ys5Wp%DG|HPac*$!wcc{113BW{R+yH9j_pym2{6$kV+Ie zH6{0t)av!imLu%iv;+@yvJSXp=wt=PTuw8pGvp3Rnyb2t*K@geskfQLx;ntB$Tmu> z*ng>qxU4}DMcgvL!WIph!0J$R40eN;)qHsH3K8EjMq<#ku2k!Of-sH?2NgdzxKFF^ zCl71)^^TsjV#*l?&iA_Nof-f?uKg$eK#}gVdf9(eL_b|b*&KpCq^K)&f}MA%jTV)j z7G1)M?3r;zYxq5~eBWQ5vVJY^1|9WgEE)+@t`Ig(Jfe_hcP*nVNPrUd`t-I7B&=>z+_ypm%u$&w0GDV@~X1HS-*~uZFL+ z>h~|E{8`uO6?($0=B~QZIZqJdUg-RpYk1vZt<-2!r?fk*wHqPFfDt}Cs_1k#krJwm zOR2w~x${wchWf^s!Cfv`LrN`(gfi30E#dcbgsVGuFA&+T?Tsy2Op{=psqW%W>t2WW zdJ@HTNpM#}A_vbO_CaYex)gsZ?j_@Nctgx4Ell29TPsN?9N{WAUFdg{co7rbiLaUC zd(VveBH!p(r%>iJN4$fVKID}}`?}^ex|}p%8FQBd?{N0>6wG4cWRLu9pi5uJ7tS~H(4!c`UzP_0oYn0{(P;LrlT2Ejc zArAP&OhnEt7YB`Z(r>LNvMp=|74xla#;d`a$O95>#46h8)GH^}6N3vGRR%wzz6Zrw zG8b=AT`X{k{3@uFdp;h zY|vq#PP zP!_fC0EA{G11ir^)iC+}h_wkKyy}_}HT^oWx<+gh@vsKL2-h}LEt8Fl?6Wy8mQ$uO zhr!HsSl*5W^@-^=J6xYrz}LT=HqD3P1t{$g(Ub7B8eWjc7fW^H+BFe8R`awamI293-%n;p#*E`&O- z@PMxWKPtIzJp*4STj`2N(y!Sq+j)vgj<<}%y+@-YdeHcLLs(f0-SWB2sXz8CS6X&N zPyK^wv+cgNt8Yg}T!F#71$K!C$bU(9`!z&h;19Xa158*C$+qQDok}UYU78=~jU^|B z!)O;nl(44#IR`UhsxH4z1eu{XJ78;%3hPO=)!9ak;ecEYu2lc_l4L#Xv8qna1;<^b za?1Mmrt<~AX@=OfNXmW%uJ&xx3c% zBUwiF_l!I$Kz5Y-NquC%AP^6MrYNJ}MY$@}#L&ncK`g5ND{3yQxU@l+aS_Fea+z(I zZP_!^20VyuBY#cyGYS>Uhw$}NWaIR|fVkp=L51ctAEuNwHi>RfkcU(*M(XmwX7j6^ zFi`_)Nw9LU(IMZ!^xMKO+4w(;yS#)nS_BzlQj|q+pn3jv&i||c$&f-hOm7sv?MdBI zHZED)z1muvpfx=1t`v|u8IUb3TRrqo@%Vlq18X=l;F{&gD{NpgR7$X8_j^Jdc*Xhh29qgD1i%RaV?tTI7bLm>?~kAV(2S zXWqUD~I+OI!H zzz+ZTs?PLFbI&Xh<;RX8m=3AS83Gyf4Y`Lk$$Y;qn)-?RXmoxn^5l#US;4Boj1(h@ zY0zKR(58V30mTlS?b3N5P~;)j@={}Pg}u9ZSugsEKwviQ%1!Vqy}9iW20nXF4g6-LLFmmBX0t_U^6YwMkC&*Oxn9JzC= z!R-+9M)Ko#8(wjG9p~IKnX+BcOwmK@(KBR=9|QJIs$4m?&w##Oi>-Pa%|*Gdt0}Y5 zlv?h-nWaMolo^4bcu7)hxZZQ~r1g-Inuc#e4YThuGQfeCMPEli?#079$mk;3GG305RaVK$Iej%YPM;{0t zgi_=l3H&j)!0IN6N=ZEZTOu&`qRvq1DDw=qHS;FTeLBQpP8%!T9kX-TYfhq9i3O*# z*U?3oLwQ8S31WZx_vX1E+tBa-sch_tNi{3b9eGy-q zN$}P(8%#e7LRmjD4C03UFKH2Vqu$&%;4E`qX{#k#lnw#z+;k!~u*G&VmNW{ZnTN4l54%{k3V)Afef?!A`RHd>&%RhKhQ z&LlLK=q2f2YsuS2?tAJ$?tv#FYOu*$)B$J8-4krZG!2FBzh(vyzv4bx;NfsB;e-D< z>iJ7sB*DZO;Pk#P#;T_dO{kDSu&^`vZOVFkSSVTid#JVj(@UsM&G7Sz0z=s{5hr;MLi2?rH}pJcLv#8%yj+_ z`(W`}>-6^`Fdo;w1l%7LLRssIU?^d8a+ZhcKE8}1t{uQ6dUYChsOQO@;kYOhXe;$f*hR(8yhD*OCsO_xutb)wW4cI7nTY*2Xlsv&i)e`}CEL%UEKg+LZ20#Ecfux#`iTKf z`)9nkw7IjkfenI1AGAlKBp1D__q0!VI6QJ~Z;#>w1z6;`rMY`k2=ON$SoVC%I3g{3 zY+=?~#3?9%TrpKknq36-{w6+y%%?)u7KU@W{MY)NK%Ukn5JK5mTQIng**fNI8ql7t z+0wQj*)MAEJF&)E@h^VVd;B6P-EYmCb7k2Sw;}d(M}MA-M3IbP35+FdYut#i=9fY5 zzttX?$a-f2I|(Xg-Tws=7wzZ|q{227m=5;IvQi-u*h_C6Z-Ln${@|(u0i8_BP1=ib zIp@alE#5N?$1cu!n5ACMcDxlyC}p1Xi!J#$hY-%Z#J1!l%+?C8^j8wLSTj7m_?h66L3oc{dGB_I>X@cF%*9ON) z=d+90K?M)e1nE(j(y$EO6eJq6#nPJifYh*9gN2i4Y-Njx)DOu|tRepZLdRio8ajNSQrVkMPL-q}!c{ezhA8fLa&iJDHdcTP5Xxx=*Haw}B{U7+?R^XR#KiZm z>2e$hQ<$CMxFbnwl3Bp$sn9Ss|h^1=3gc@|MC*oz>M8Jtq^QuR6oRC zb)_YPcUrTKtEuWn3{%hwq2sd8d3?2a-ji*&N#Q04f0(VjN~u`jeK&37ZvyBBbT4ooo|ADtQ^R*TD+i8Z4kp7A`80uY&dA z2B27T=sy68;$jGwwl+43*)-*G=g%?sG|wtjzrN==L3JKN?vxF}?uw_ttbTn9l&9`8H{Y7=>kX9!ZxMbi6%lupNH#fmrbQmfDxD|CzWtT<7( zJa?JK!ub;tplrY{y---QPH?cAFfnw?T6t}Nv!fnt#awWm~( zabiJTci5JZ$4x}+gs z%Xy!e>q*UpiCdUW>@2)v6B5aSs^pPJHK*#SFkc)_UW_S}dfI{TE={*mvT44-)}X#A z2Vs?-#48>x$RCmsU3kc}T9CMe3Kb7;?mJ2hb?%@H_7zCfhFLjtpKbj ziau8+g4DQ3F7B{RJL6uo9YPqOYGU1mu{ zXROf!ZMF{JeI~UmWe(a-jgU$$OZDU)s9(!dEETm6a(ZmoNXw&CCdIDL13o~52_yt+ zl51J&qezmi6{`y?0}%u^SY-@PQlZ^6at87!hBVO}K)Gy4E->Agof19waN=nslu=Bu zcwQ_N2~y#bcw9&92e zH^Wg8+TR!RhHEY=Yupno7=@IUvN&X0k+xyJNyX&TY?I|NtddmP>sW^p z3k@wyG)zD()`brU0ybUU%lg=pnR?$q*X$g736~goLaTx&(B|Z5GKO{yoZQrbOr*X9 zjLIM~fwRXjOfl41LBU04=&Mw9^`6I=*jHnsnIy9hE?8zj#y+D1uyp zPu2nWHxwa9n!B0>l`C|0HP6uwM6{EpMwl&-6yOWRtTb)YO>NWACQ{A|#gHT4iJ~O7 zV45|!NBc@;r;-=(mFV-}aSlwvnS{q-=};pJ1|jWh_K8|A4!3zApa{N__|QvY#3;?9 z7@9&ATQq13gv65|0a*%t3WYMvCfA&Zj*;zA{CrD%9DC^%J`iuAiBWQ%N510yW(6?t6I zSuvEjpqWE#{(KfmD55^0`ZV=@tOs5gAVekKHJ&C>@(_9;gedtcLM1HRsp=}O8{8NS6kr9L zmQa}@)~ZOhC3#zI=~sf{4sg$d7@N69GPf-ka7fO8W`gpa+QP*FL^$B2Wzkh7Xj-g~ z$xsh+4UG|$4Mp#kN3mI5Z3}~QI6jRKc+<~NSvVm#J!OB)qpm;cQ z>E*c5Q?{<^QHd{z1|eCQUiL{~VH?%pg=kdcR+ckj1V|RSDhQ!4uRcO*XuzKOHVa{u zy(9q@;nboa;hfmpIH2RqCY;YH#>d=fz3g%E2pF{y%8^&3Y&bZ-ct9M@PPBDTB)qE? zkATP_6h&I09Y0wz^lHb|rFj5Tjrpfe7>|suFW6(Qb?v1Sj|o+7sBPlc?mb%tdfmL|_F7Z;p43T7vrM1m9Es*nfSEcCkcHB8lk zXvD2TUJ*L(TfZmKu-s1~td~Hcm7S>44k88L#Xhg>h|^e%fNV|T zdK|#nxf>v_5ptduVytCb8{#6~sNL$*22^FI9W&#==?)!@Utl@SM&hJ1Z6VTOLH$VP zA>otIS+FeP!=}k5mWD0^I!dAuT!8jOejCKFT*Ru69o)6NIi=3l1o9=lErdS`&7=7z z)A((~mXvB3XtvC~_^?(+gDNN_Yk`G#giGr0l`~1x1XO}({8GFtRU)4n0T!C0J-~<$ zGZ5@*k9$ER4DBU_=1DNzn#957#XyT)ztEZz;@wJ4)?S3XTe-urkZ zwq*FzZGvK6Cfcxc=L9(@8cFtWb$Tvjbzy>SOl0GcXM1xJHZB1W^1SaC$HKYlsxk%e z2()7`o7T*lW~00Kv*O*I3&RPMt|za;#;vO$0Mfjn#~#4in$-kSd})st-Np(jX6UEb z5xqQ3c8hEWGH;yZGDF;F0l2ea+)4nPa5(`Emq<3nI$Z|59@S&quWd2!^g@72@Td`| z1U3p!td@^WMDdBnE$AB1!?!Hd3cF{!LXF&>`ap@C3rshdEv1)+6X7A17o;voJC~QR z0qS`4DnXp^d|-{0ehg~$Ud}C=Ysq;CLuU2#)FN+N=%}M6ZXB}7dNiQ0UiV# zX$llI#akf}*c+*zR|>G=*bw8w)_yae49lWhDvNnN1aTwNDALn)N*fcYoY6j<*iirr zsx5ep4kubByyC*gdU%sHtQZ+73ls?T6E~)iG4S~loup)^SGX(k| zSe8;06XsFjR}qL8o5_S66L5pspwGX4DH0X46JY~dz?fRd9ip> z`WkUmDbZNsBA#2>OOT|~TrKC{p~-`*qF6a0{sYI_RlNzdHfz*^xCZD3?r6fm`?3v? zYl6^Dt7;?kR+>K~C1((@0DhEvbC$_xixn*tn|&qybw2g zQu0F{1nqg&<#P)$c$ex?be29jz#b6jd@3eDqUHL$5y>o_K1 z&@B>4ShG5cb3b3PCov*YC8w-_{!Mszie@P;mB7~#8!gRwq8HEx#^5e;IG!MM@-vQJ zG<Ble3Ghq#qE1)i%#ERnP-i!w}E1%U}9;rTSIMt!qYmEk1LOREMdc{PTH zNK&AYa4(6@5S5@cj zukO2@;NId2P#|Mn)mU|mQR2Hs`gBN|mf#ctiXVM6Nfan5ImDF2K@BVpAX7NExSw(j zP#*~G5Vi@$9xT0ST)XL-sZi0KVz1fB65nfZX2c#!U%**KegBwHNuQiob4(E-v2^;_ zVVJ8Lg;l0q!25{XRjM$BepCL6f+K!os5ee@NHV6CdsU;KMAZ|y$yyjLxCwtwN@G%jLeOtjp5`0cNJsDRsr8(754|CbpHnD42MP&hICMM zv)XyikGxNsMP^rlKdU$^6Q*L3BoKhHFn(<5L`kKzN9>*)y%haS*wmrpv4GEnMq?S1 zRhxtn9+=fm#@EKqCcZdvtn$pIyP*Ps)z#}U@I0rVcAtZhGj*s0G%qVVl<}x zie^+&N2(#}UczM9X64S|0nTN^Cb0dnNwZwkc16Vm*Wv!ASy%KmT2P$C6bN+;67I<$ z#MS?*#wpTs-l|%WNQJ6KLpaGO7S~WC$Wve#h)m|01ns5u%?WueTIVAVi(aUw2oO<@-Oynpl{n0`h^;2|~Ov0kEK z@c00#(o9YRLqrV49-)*$#4k~$a33X%sH>a~Mg|>vnwc`)jAA#k#C}=e(<_3F4pvuJ znHrrGG??dpsnKzA0Ep$p>IBO7@Qk zS=sP4>Q?rUlR!I0_la!K3q?jPARV|8+{~iQO46OtKyjf^nO~!ACCf^y2?IDXP?dL$ zzAu$^oC}HaRytAEXcnRUq%w}U$1Z3HQbAP5LQ^Hli&(hn%~){}je_GT(l)sRtDK0J z*9Whv3e>GGGjvjH2@?Atw2S6PQ9S5U&uJ!haatB_1&q?LFLCY-uR|LP=5$hU43bu8 z2uz|q*U<$l9dIdQMSZIhASY4{1u*guvyAkSCD`;6XuplU)fUnSVmrayXlQ`vx+j1_;mWN`geyXO zhG{mD726ZcbgJo$t3B3d!LBvBY zWfi>12wY)|L}CFBQI%y~vhWRI`xO0jy6lu~N{N_YQd~$x2F0U@;nnk{*j-wTxmF{j zbe~AjXqKQjIit*}ON1P9gQ16H37(S4-;!QR0*4$g*cqhR!4j6CFh_<=dZ$6ZmD5FG z5c_kpid&J5;MA2!qfeAT2N!g)O5DA`5LJC9B1siU`5tvK?vq^2 zI{ipPt%X(qAb7Y6C0Gf$Iuta<%}HVg&kBjgwuxp;u_>^jMyRWFgSvtqu}L$w)qBld zl4vigY=qYs>DnlLS%vm{YSY+XUAM;i)sE+>z&a9zMscxNX)d@#j#M+`LDPk3dDZl& zoKmnFJe}zTrM^h6M5E1_HXX8kH9omcB_2MD=R~tls#|$aBrfQ*pcO0D5Sr2is+5`T zZ1cr7FPvXqHfCvm>$iSu%)T4PIL7gb<9`S+0B0DQx_B9N@&Et;07*qoM6N<$f@-KD AjQ{`u literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/tafel_old.png b/eclipse-build/org/rapla/gui/images/tafel_old.png new file mode 100644 index 0000000000000000000000000000000000000000..e0645a594f47ccce560d8cb76a70c7fbf0d82b8b GIT binary patch literal 5701 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/tafel_tocompare.png b/eclipse-build/org/rapla/gui/images/tafel_tocompare.png new file mode 100644 index 0000000000000000000000000000000000000000..e418366e8267e9bb9d3fc497227d1f0741e79d3e GIT binary patch literal 39932 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%0A#L?_TTlYl5yIS!Gh#W#uq!rrnoh3uBc3fSW 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/taken.png b/eclipse-build/org/rapla/gui/images/taken.png new file mode 100644 index 0000000000000000000000000000000000000000..b89eed1a80c9eb87952d93b13e8e5c90d5318c17 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u_bxCyDx`7I;J! zGca%qfiUBxyLEqnf=Qk(jv*CudiyW(HYo78thbo7Yogy%k4J8^o`)|LaLOr?-|{r} zJj36WCQ@-}txPZC%oto#J8$^!y?=g}vghT>2-lLVX?9!r#16Z>;%OB-yko9@h~uKt l?B~mW?4G@0`Kx1rdsn-4cpJ01l>%*J@O1TaS?83{1OUffMl%2a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/tree.png b/eclipse-build/org/rapla/gui/images/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..4a96c6caa8f3634f849b68d809f290afc5d5b22b GIT binary patch literal 388 zcmV-~0ek+5P)zqu1gl`2cQot6?vs+3x~0kKlBu@JW)R&F7XK)7k#z+H%I$j##% zi;%hIfg<@~iW$!TIA=HpP&U8==(_IT#J=zGeV^SHcbC9gOO|B-q-nY+QdM^VM1Hv+7A)KrfEa7Q++TQAbwaVd9>E>eQf}O_FV}5XK`mOeJnGl7d#tpG%U59)0E}MqXtORVcx8 z2haT-^k}V}2D%vKSdO{mG0vV#BAtI5^z9WtXazJg57g2NsY)_D02tWMB==7B&NTJ0 zmxI~38_g##cizFs5CzNwBs~Ulh8uP`pU zIrKzQS-|+D4ExRf7b6mgS}emhMQiErzJ!tHq5`jL0|5F5Z`{%^7x2XQX4y1_00000 LNkvXXu0mjfXG)gx literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/users.png b/eclipse-build/org/rapla/gui/images/users.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e408ad9be476d701c553c819006f65e6afc277 GIT binary patch literal 1231 zcmV;=1Tg!FP)8>B}zyrhw(><{Sa)onyxD`n=fN z<#2D8Zm+-LeERcuOGI$RoTv2Ktg(D5DuDC9{{0xt7`;Yaj0UI&=fOLCh>t)&eY4cD ztS+}^UC*T6T)KRU(HbAZy2ia9p#RTTn>5zb6oBFVbPZHEPnuYozx=k2REsAn3xLs@ z5F;T*VmZg?Dqv#_)|jQO-kkmT^(NRnF97JYn*hjaBRt9K!CaYhKU-9OQau1gP%MfP zwL1Uw*=XGN&z~(_6t3$#q={V}Hl%4v2!RknMdQm|Y}!B&W|J|-Xs&K&ocFpYr9mm? zlMzZQfZFZ7TYB#|>R5aK{Mqt>J^?No2lRS9>h=0YRCm{Bv^#qsAQBl4@7O!)A;lPN zGejb>TrgV{v<^;~&*yYHoei+9r$E>3?k9l&v{pz6NDM@m<9#5;$oPJO1djyAY*BEZ z3n2uW%_jYRe`69Ue|kai1xCS%HDoKG?&&46DvULeP7=_I8ChZ(Pv=BajkO{sOeXj1 zpt3AODTQ;6ot+&fw-=AnSFs>V%(}S6_`1q83L-+MzTlt*Z|<5L8Ao1}Yvn1Wu-0;) zdqf0dA}1%W@ZO_}5e*G!!=fmcKyAw!vz9!-WL{8s;i6k7v#^~+OjUG-GtcGQF{7Dh zGMUtjF|^xlvMeJ>64G?1Vxt(ba6(bKO2t0le5i0_)zqaI+PfXJQlQ}Vq2}!El*YEg z7=zdr!{Hf4Q7|5lmxI9oYb^%{2Uu$n5oW^y+l?m8%rKo!*L?|~qOxf5D^fK|t@+(wAyi@k@ID~X1B!ZQfrv1jPS=-PYblBX=N#5r{+yI(t0iq)MYwf zaCe_qjp&5i@dTwFXO0Ls?@>ylltM&s&aH%zu7MYe1&v07vMf1hB}nkRIqp!F4kbYL z_J(k9h}N1kO)D8&gGLi$Bh(It81@?q7ZpVrNwtus z3AMk!|F#;M0>e(1^YimnCh`%bpZfNxedio*c8dt4iN#ej5;YHzC@>8|rYnm2{XRQ8 tJ8Qa>QX3ckueE7n!W8E{?HAR*&41T)Gnv4S!rK4<002ovPDHLkV1mW3I)(rM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/images/yellow.png b/eclipse-build/org/rapla/gui/images/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..88a2047644f77063d2379bef4e2c3d8964d4421e GIT binary patch literal 434 zcmV;j0ZsmiP)pK%%8Z=o|D2qL0v4(9}?f+^8=QZ9;@b4UH)n2)+2i6}{g3{2Q#{ zjK9N=qeKLN`}8b*r3yS#Pb$w$1!Lf5(F?DDgY9Rb*x&g_NO=e{Dgdd2K4&@z22N|H=x@M z$mRCX)oN9>+ij`W&#~>r*XdM<#Vn#x#rF0g#o~@q|G{0?71zC_(`l1PSd`0~R4NB- cZS5+6Ux2WqhNLS>h5!Hn07*qoM6N<$f>>R^2mk;8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/CalendarEditor$1.class b/eclipse-build/org/rapla/gui/internal/CalendarEditor$1.class new file mode 100644 index 0000000000000000000000000000000000000000..dfda595ee05eaabc4c10d383e4ebe6f02e10e83d GIT binary patch literal 870 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/CalendarOption$1.class b/eclipse-build/org/rapla/gui/internal/CalendarOption$1.class new file mode 100644 index 0000000000000000000000000000000000000000..d969f13678b4e96440031ba245dccda4a91d547f GIT binary patch literal 1121 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/ConnectionOption.class b/eclipse-build/org/rapla/gui/internal/ConnectionOption.class new file mode 100644 index 0000000000000000000000000000000000000000..253982b4d251a43e7e032da210ff29c3a303919f GIT binary patch literal 3377 zcma)8X?q*h89mpMHHtFLqS_%_NdPC2WXEz+Xd4tlh@B9*&Qcp(M7l7RujNU`GwNs* zJ9MK^y3w+4Wov;#_ZA9~2!_Jv_7C(Y^i$y%^y#^CC2PEtpy$!dojdP(-gDn~{_)>; z{|?|F-Z#)Cu+Q@=dEcr!R=!fV^R^pE-?g0lu;;q69N3)swUDpP+ioR48on(E7&Te;-07M?|5(RL zxoy6dFI$dur!7Apx;|Z>o02~D)>nNwBYo+XC3OcQx(vz=Y)MVeov|x*-%`os&vxXg zo;Yl~c5p;sPbQ)|<6Cob-t#YLX9OgW3qc_}DUdq8P?jMqH3ORkuI~i9LTgD-AU^C( z%M@bhG4UB}Ft9}+y&8rTda+eWY!irOvXko|u)~Cbq=C-~WIL{|f{TG&0-KbBykimN z5wAYw$i&e;R-eBVuEhDcxDP^$V z!~pgSY^caU+c{xNXIfx?CL6(etyCi7g%t8QU|{H~`A3vYa{Ti|peBQ3j#s`g5y=!$lqZR*|BhKfIR9t zH&-$o zQtZ}N3KO`~z#YptrQeyD#8>I)qUF@(nVA(P&rF?XBU#(zC`t;Ny9IjJiefT}uMy3g zcc(ClZXFPw-3X+%=z?D4{DZ!c3nxQN*TM&nrN6WP3vZ5{M&2R#DPfPY* z7L;8v!G=6%2Ws5>!Nec&C*9xLCYE!)Wg~^Z;0*(RUDnO?I}>l>Z#*?T=98+Skvo}e zQ5~qQ>T+4Np@zUt4w1+i&?l_jY!tZfn7D#>X{cJ)P;rQ?fzT=&`U_*itNUen!d8^& zC5@MTj14L@aUDBajQ?(4p*|48fy2QY-bn=B6MWB)4Rm26pW=Mlgft+^BuauiALaU+ z_-t+wy`?6uxs2^x?kp|h+ENd8H*tMuC1OqNxr|KiZDbnAZ93e*V0)cv;Km+&vDkw{ zhvMAazKBAp`+eL}iY4DOO0mp%Dc*xy$4lK@CBl`F8J{S{yW4NK#>Xd`xUGQ^t$va* zjFxigu?9}RgYhQrN}p@s>$wK3v`kmhl`F90;7$Wx6SZ{Ez(u90B1+%edRW9sn)nV) zD3R}S_f4kUh41rvFodU%;O!zLyKw+}a0~XLh%ceQ!|KP0TD@CqKpk7#|I-2O3F3hbZYr@RtyYLl$IcdIDh;6jI?>Z5|W zk5^L*v`h>93=eTfDHkZ+#k-M9|D4&ZRKF=y-=am9A~WzX9-#q&N12H>bfje{k?X&V z$2(}GLfu0|qY$x`ShAH+eI>N@B(_m@8JTbo^;CF$%>hgC5a@nUJm z=GecT2b=g+1Fv*^ZU||6gtl(Q4LBO{+t>2Dk)!B!{5JIaJNnf*NFuAeWtI5`e&4{K wX@6FEqjN=@Cf?f7z}uw86*OZ!&TX`{%VD}4VTq4NTxOSCZeMb_80x+EKiE)jkpKVy literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/LocaleOption.class b/eclipse-build/org/rapla/gui/internal/LocaleOption.class new file mode 100644 index 0000000000000000000000000000000000000000..dbfc3185703342c37a6df3a824b1bb09c41a7393 GIT binary patch literal 2797 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/PublishDialog$2.class b/eclipse-build/org/rapla/gui/internal/PublishDialog$2.class new file mode 100644 index 0000000000000000000000000000000000000000..7b249419d0abff7f9d86f0320152d27f2f95dbe5 GIT binary patch literal 3001 zcmb_e>vK~@6#s3S^rqn!VtIx~sTfKdN>VGLQb0>uu-F!)5EUPFn{3ldZ|;rv-n79t zzWw5Nzc}M3#u;^nk(2>Pa2#KQ{7H;@c5l)&O_6>uAMT#rJ$v@-@0{~Hx%2nUTL1>| zxrP8kx9#Lp4lkNKl`k17!}5eZ+vzg=@sYJ z2yLUaB@q9= z6?2>NBg3iSXkJ|m%7S88TMXj^6!;BPzErDcgfnA11wlo!yQltsF;7X8^2>Wf%7eX` z2#(;GhNBFfjYYdM2Xs6w9}vo#wkskSLR!OdhApetppIdTP=V)#C$ohzwWrs2WO-Ug za1x^$o~2roW|oId$0=zbNcmroYGXRaF+r(KRg(8+6_TUta0X{JJkM~j(fPF{qK-+N zV+gzCq~sNb%~iCPJ1H^B;6)8D(0;>fYniL#C0t;L7;dfjm3tS$ctyRSB*J)&pqt^Q zOXBO4802nJadfh1mhy&`NDdV`+V`UIKNN?9FH>G3==) z&WuC!yI?zWsk5?sE*+<~N2#&1Zlt-6D7dOKG3eEXF=BbnCD}t)v;@+Skku1KmyMu4 z4Tv&9u#8vl=M`0Z`=rOSbK|_I_(H?wYC})Se$eD3CFrDGafTT=p;*Swa z);G1BapBF{IUS$iQz|+?dJI$d<)Z&?rgiM<0az_d37t{P5>DFWt}9%05s9|Yzl(L) zju2XDrqL{ba5O488;EvD##STowHk@7)ks{eMq+9;5>Km4DwSt~ROsgP~h=nWYOT^kLNG4*D z3i=b*F>qDceVo1#vPb`s@D#qmA(C{G$vU3ElhyUZ{>|(Udar!r-NZF?En<*{J&Sl| z5hup`7V+Fyh|)^D?*>i>a0Tsh!qkMM?nRvc65)=QuOQU%>V(|um^yF+yagopH0&M@ zs%;Sq*7g&P`ysWTkA-Ucbp0~xhg;RY5o@jO$7vyX19Q@^=r~O}`{>iZ2}Q@i-x4gzsqe2kNQUs7n%{xQ>3@#BtJ`z)#?$Z{cTL#xM8+zv65BhVSt^t^SGI zxP!lNS7CV;VTo52ODWA`fo|-;wD``akH zZc|*|!Mk+gJ+gQd`aN`OIN7#-h`#r*gTB7Bt4aC?od{@P8s3*5Pp8X1AR_^Mh>vIt R61{zl&q#`pYclxs`xpFMI12y( literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/PublishDialog$3.class b/eclipse-build/org/rapla/gui/internal/PublishDialog$3.class new file mode 100644 index 0000000000000000000000000000000000000000..7501ea3a0910f0a06fdd13e023db3566e6326a45 GIT binary patch literal 937 zcma)4T~8B16g@*rSJ$PjpcSnO>Wb}xtdTcS6H_3esfMK32i~Ubq#ZNPn%P<8Z<&ZB zKKKLt1-_{N#CT_|F^!sZ9(L}XJ@?#?b3gz1_zA#6Y<64g+g5EVL4x zTCQ!6t4z#OMt2xP$&O_jKA_Bd{)Z#_T(Wg$u_L7FImmW~lvpAPk=P z9m|f0tea$JAogTl;FQ3dj)D5v)dQ8JB=2)!$H~w`lOdc%rU2{MAgKmMa4Wi&+l)GW z)W`=MD^3g3wT6hd|9)vstB~)NlYL)nVOol(sYtO(<1f$#6>tsnD3RxpH-~f8s#6E3 zE;?=UH;^_JLR86nLKqiUiPleXG1@rAQgnvP?{eTWeSHGZV$%HuSIG* z300er4qJ}uXSf-?$5Q4sRYV0rt=JZ1mGC5LLJ$&3(IyaHe41`AWyr9Lv$Me8G7&XC z_yhbg#*cU7oux)GO1jDHoqOlbxnE~K{rK<^z&z%Q$O%lxrW+W!uVv6pRiGkECXza6 zrERT}ou^9bxLaK)q99P-l?O7=GU^5|+Pf6mA_fE|GOIka0Uc0egQd`_IBKfIQba~z z!0xD|dY?lz`-!zE;2%g`O^t5KHfe#eri*YCB!`M4uWiziT~(wz>^bmAMan)ASgQ30 z{y(VtmOx=S?$8hfNFet;2l5E1;{Z+bn zY6_O;c{0`IcyB+BTv=zAEFie!<7YVucpGtQLRwYXbWYKE&NYgAy%L2wPMB2dWOw3@ zj{r7Y zAy+OtiUH+{BN)HO9Is*ce0rXDk6F*NEH!41G18blM!E40mDic$W&V5F1+EgGG0M8T z$nLm;F_r>XajggSl7Srf^~M{N-~JL)tc^I!%zNDa4O>BhUB7T{UonDj4DvmLA3cHS g!7~`@XmEf$X4pT6S=?h;VE)YE0q;CMa|!YH6Q2Po9{>OV literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/PublishDialog.class b/eclipse-build/org/rapla/gui/internal/PublishDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..f7b10e85ce0aa2d565445f3a5311497f4419fc8d GIT binary patch literal 9153 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/RaplaDateRenderer.class b/eclipse-build/org/rapla/gui/internal/RaplaDateRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..ae63083b3e064e78335ad84196170ebb48b6c2a2 GIT binary patch literal 2430 zcma)7Yf~Fl7=BJj*bufCu-q*40=*=uumvktf~cfmQ-NMUDr(dvS;CghZn|s=)nDYd zI#XbXqrcj~& zVOuNc7A@(n7B(sncWd?qZZEu9@v&iSQTVP|+O+t1^~f>;ofX41onqFp99Q7%!V~?O zuIW3T=HE007M-GD30w$ys^NIx8}PqVJYJ7h;9Ov=>Y0|7tzn=<`?P7B-i*N2WZ0Oi zmyI3A-Kz6KI(NNHYE>XHw_7kOp6S@z3f>YJZi3xt)oKU|M6(Pyfj0E2ID@ka`UNJN ziYL+gI+haX!`srzd4aZMYPACbLn;)+6jR4uO??ux!{83Nr44!K{|T~nTG zmr-xi+@@B@@SBU335sl&NpeWz2+LU~$PHZ*!mM7{D!ES8uGdhn1f5GAtt1KkmWuZ< z89?{j#1EOVkF-K>&1xW&>BMbJDfpnZmrfE@k-;?C_Z-SG}EBHuY zuvr(!Yg)x8m=#bP*_xM)aw~b%TsU{^XVWu{ZLR2(b<@^@BxYnG-BB@)34xBH{`~%i zEI9#@V`1?u5G#}0O;+!7L#LPair-tU*?5g{fm6#KbFrvb{M;*8Vo5cTovaq*V#RT+ z6|=I!juYq)=g-pZlD6!*rd`S?cqGv0S9|DswrW}&b8)Q5*535W)=UBqu_{~OvE)7= zDx|@tj^m!Jhc8upg|A5l$qk&aJx)?MZbSO`M#Z=Ij&Aizh2u?N^ndBrBF@CIPR6IE z*Ih;|P*h=HLqK6Lx$)b!G#5^4Xk_e`t#uZ>WoS}x*59(8Ht|G(DUfQi{vS#zw!o<> z@z-179G&_c`*X8V`-`wuIH&~iEpb>jsR~Qhl*4q#!BSGDwMK3{6;(XrtoEEb>kY4A zMOm-AD(>R}hw!pfbqmJ4DMwB3vH!R+88R-D#x_1NMET=@JI-la7UKNv_iUkJN1ETT8!0 ziq_xli4F}O;{7NN@nHm0v4Plci1Xvf3oe7_2Zws1`^dhaN?Ry^>vVPv{YYX6DTa{t z1DFX+Hv-Twhj}`tJABHW3{S&d?%Moaj=LzW^x+;pV_*xsjYIs6VFioSV`ge$|4|D& z|E91fU*X|e_woTgPj`Q@kF|Z|yLB!DF#;_dq9h2i9D%%l%4HwhVURmVL23j!#_(Am@&Pd=P+qPS6p2|1WTuYzzPZ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/RaplaMenuBar$1.class b/eclipse-build/org/rapla/gui/internal/RaplaMenuBar$1.class new file mode 100644 index 0000000000000000000000000000000000000000..7eefca59c5a5ad3ab22ea8dec012db595f144d99 GIT binary patch literal 1041 zcma)5*=`dt6g|$;EKHgOC|gTHo6;mL8Ojq<5E4YKgh&daDB{(bxT)KTU3n%g|A2sR zL1GgRh-W?uaXpDdScEc?W&8N9=brigq>|x%hFWbdk9vNXXd=TW;)g*nh>BnAxSTIZjP>{xbM^83}=5`F}*vs7AA`GpznW z`rpZj@9e%F8&B*?JHq0uNSl^*8pw{aWl&RH5gzJ+RlydCZ!6tEaQZg8t>thE`7$8Zzy-SKH|o&Xp51>Yvk|-MZAq7 pRwiE4h~$qd)+uI=a^A#76tzZiW2mD+dxG?}iCc8C_1kLb`w8y+3JCxJ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/RaplaMenuBar$2.class b/eclipse-build/org/rapla/gui/internal/RaplaMenuBar$2.class new file mode 100644 index 0000000000000000000000000000000000000000..981c061dedcd70842eda2b6eccc5fd080af86d53 GIT binary patch literal 1615 zcma)7O>-MX5Pf4QR-&vU*$xJRi9@UqNip7_K=@DyIEqpgkZ>vn-AC)Oyvcf2H9NA+ zzv0F?6bT;(iZlO%3m?Tlpm?(ul1!p1??F4=>h5{n{kr$pe}4KIKn?eDm=U-Vo1SlE zKazfL5c;9E%4iw+51p#5^x%#(rCJVIfeVl1zC84kgHZSUjc#I%4D3c=!&nOx6J~)p-LUtoXpH>{Of|7NlJXB^~odm8< zV3`WIRC9G=Q<(Y#Wp-k-r?v%F$}QJ9UmjRr?K2bqsA)}iu2(u|u!1*oxFoQAycNyu z(6WEl#8IS-hs#)HiVrtiO$RoO8A)mTMl?@D{1rQ?@Nb-H7-4v1ZN!OXZ=DtI0@TKg&w^9-f5_VWRy;6)x)(ZL&rj}>b=N(zw5fwAPDq=!vb*uNhX%MZ76PNBRhwzG z{#z|~U)X}_gMQT7(V|Mnff&8}S}W6tWRj=^mpGakuA&Ss;1p&lJCs%3q;$p%UZS#{P`_zX8)#YeqItUF^P5_U1vt%lLHEMr=Cm9xYBeIq)b zji3(I5$r~zggp#3g}Lmq>;$*ZkX_53m$4W77%DWIt1jv_lJDH(@x zgrPLa-9g(*bK9L~*q4K-kQ2V6t7sC&QR3yn2-!m|u}R-?8q{bf9d4kDncY20xd z4>O$K9K~W@&egQ4O>%{TGb~e?u!+L6mOZT)Rx-(LrO$hHhH;!oLP<~Qj;Nq|*Q$5C zc&nyQs)qLrn(Hh z>wr?wCeDpdan0>qD_MtVq7W|1cuhbqd4-Ue7uZ~u@jBjE!KRHN{v>4b<60q+*QTk* z3J9qB+A%Ie1LdroQqr&LW_KP&hU%uAqoR*2%R41ZFl;OA2fag@Z5hU(YVrs;CPmxR zNhb%->g}TaOs_6euO)|(BA!^&5meFAR+Z?ranyoxf$s zCG`8%v^S0=e4D$+C<50t5i>-Ftc8TZwb@0goZ5kM-MFF;J^Z^I|9+Rf#%;(v4m%$ zoeyxL2utX04+v3J;5Ne17Z(tW#mRj`&UW@|!OytRPJexd7GpkuOl_Z|gW zNg>waDh2i{?&2CDBOvG!NHHQhBMlZrEeoNJNoZhUx_y+=eL+T?mEkfg#|>72TP%t@ ztP*$GRxGe8WZ5QI53_zVFY zrS8{*&uJCMC4518LDH$km-vb@zCcO2iLdFDZ^+6egdWjf#S+NTTM~^LdSCq)Q3+Fz z5JhnL4-!y`NoapWt~@3#BC)qY1uex%;^$f!IrtqJDZ=;of!+aXTtDJxT1Ds#!4G== E2bl6(%dZ+`%|hQkO#3`0V0C!|?$ z%*1xlPS~#E(lwpLBfXU7ZgI|(@yQ6n41K%izIl-FO18V5nBDS}G%Yo2DO14U|Xuh7h!@w39+UJGqDbrP1(<$<1x>$dVp+)W3Ui?!EVCfVQBpIUnrW1F~JZI=$ z(vc(_lj6uIN#W3b%T3$0)h&kUkyCkm-^XZ{Av`Z~ycKkZff(BK=tBbr+GA+KSpy&7 z97EHHHtkrlUA|n*Z*jS1ZaI~>ghddT1O&~ii(#E8!{yTi6`!O;ItW#QaD~ffLgsmn z;rxgntXWbCzRz8i@KImTIg7XXm$6-`LID58A++RyCWo=%HVE|`ixQKWJml%43 zwVV?&$K_qRSI9#HLl|c0vLrVZU&t5Kp})^?VI)Q0XeF2$54I|26TV4O-!fug6k`mn z9#^%K1AYdL4~=GH7{^2eR~arH&!Qn64J1IsiJF$hJuiNpA$7Wvj|OV+OcIq!LhkuY zCz>jLppsEsBcf9f6BSKNkR~QJxMPVtziV?R*M>=a5y9sSgY`%o`!et)riho05PQV} z!*I2VLE8FQ`b>VfwaYD)j9{9Ot~=MNtQE5&$_+cW&6S4irhyp{<2z}dHf?ua)kwBiS~SEVYJK@zlWgx-7NzasFAdL zJEF93VDW z2KioVUepzhQb2{&Cr&sKP>6mLa+T7be8Eu}h=}}vAs%phQhwyOJ);QOv{|V3_*h01 zr9~Y=m#!=LbWUi}Q%_%TEk}6tQl+`t5jg|fB*SlUd-LiW%rd;fLil&w-)z!b-HT-` zWnN=tI@}wkg`P69z2UCVa2Nh5<8g1ejPHI$Pg>iKSACUXKCc8RAi*g+oyHg?0yc#x zn??_t!4R88md)cSTfi>62gy?K*aQ5;(v>uC5r&jXHBCL*#twOnViz|3h3M%_V-F7b w&!QiBxCp}|U<3-Z`vaYBMd)wH2zUn>Nm>Yzfui3qb-^MIXcQxt8c+KE109pC!vFvP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/RaplaMenuBar.class b/eclipse-build/org/rapla/gui/internal/RaplaMenuBar.class new file mode 100644 index 0000000000000000000000000000000000000000..2acaf7f584d02e0eae943860055f342b43fb10bf GIT binary patch literal 9270 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 Tbh3O=zQk`mMrFq&F9H7tx1TC7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/RaplaStartOption.class b/eclipse-build/org/rapla/gui/internal/RaplaStartOption.class new file mode 100644 index 0000000000000000000000000000000000000000..7cfc94d331ae9466064ec3409fa742544b43c9d8 GIT binary patch literal 2637 zcma)7TUQfT7~Lng32_9PMii}D+oDO(j8dsuymL`#L<&e7>1_x@7@5qZlZim@_GT}( zuYGHM>ubAK4a?fwbAL^LKv!4ynF$b()yi6A&N=hl_Wt(y=FfkA{tZA6zE%(tIOMn` z&DATGu9a%0X4;&va}B5rO?1jeVO-*M|F@a>cO?+fxt|=-g-& zxR2?!VF^Sl!84V=q2JV(wCbX1m$VW8ZJ&Tz)GfoF)!k9OYzXYyXfuQq9$6`P$gJJ>8>|!;|?zfux^7vvgK5;khh^ zFSqwQcGc5uZ%VgnMjVd`v@w3pXDP?%7Hf;0Hf_^8E6|m0N4?lk45)o zrUVj$OGU${vZ|m%;HmYJH+iiY3Pk#yStEfkI#nd`xPm>b`C;l3*p0o?VxK@botbKZ zz>_Kz#AAQ3*YYp+`(MFA!NCn(FRnJPN*b1(nx{?bGnSF}*9y`Cq3MCx`BdPYKo<_n zOh-sTdU|>wGbNL2DvsiqKugu|0#AWG>402)(bIynE4rKW=8Y+jA6xbu}O|LyDIA#P%(%h!YmnHAQypy4VcXu$~-Kq1kT~I zByLz>$5t*=alF9p9X)(h5_(0&D6Vo(!~&TnD%Y_!CAm6t!zfCf#qlDYdSs9uOsJT| zwE*^@ExXECk@R&b$F{s_8>6-IjN$tImUqG7^_$XNQ(86-Bi_78t};y;|IabO>l3P$ zsqQ9+P4Zs76s(h%SU?Q0s5#T(cu>jf8a{#D>43=929K=0V;Y6F!I)U>K+Q8P%?Dxh zZP9@^h+c7mD@gTP5-#&MWNnHa%(cmWsFWPQZ9zlWH_(!{AKdJ$#_xeHJM%cJn(Gw`70_Cu~`oeWc=Jd?I^b z*d=eCN=RphB{8>Ee1^{j;+0welcVa<;8D`i#%SKo&sK5aie71GI5FYW+@djL%5Lx2 z{9((VaUDWCVq9}5b1jEsgu5Ns35XPX z9OKE|Z1)OwWglR7VFgdz!~PTw45#q)sYv!G?0t z74uh0dVHb~iLSog6&ascL3bTFhU{U;AX(B}%--vF<5M&vW zP~f;9S`7>up#^lz@I*TI(K^JZl1&x~akKjg-@PL+S*uKefjI^cC}F-4=xifUEZcn# z<~kb*-?xu!oN0;`TZ^VnaTE~bsu)v??5km=dGt{r6F*h zlDdEnTx?3UvyrNm-@ip)aso?C72vF3$r(Wd;lM*cVsvgK0pU(%xmp}%oJ!F$_yaEAvWeDyD~ CJam=- literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/SavedCalendarView$1.class b/eclipse-build/org/rapla/gui/internal/SavedCalendarView$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ba02221f76b2e26e9f6058cf4cc726016f410dad GIT binary patch literal 1348 zcmb7E-A)rh7(LTg7Rq8PXjKHMSg;i-xm9mD zmLmhdcoqOH7r>zQuQE}el<#in{9{Y`h8Q-+8*WXSYY?mRWB*jOdt_I{Z+ zJ9Up&RLir)V@G#J>Yq_q*2SbcZ%Er!z9Z{p5$vj(?l7vuNq@8cWwfYhz7B&zpId)S zovj)TC9QJH4V?brJC_h9rXpM#M9TLTm*U)`9qr$;T~e85#ib@>FgGPlYtiMtFMOnF zexh_=081wI7|~xNLiY&bgpShcKJ7IU&o8`%nLokBqwvfnjfGz{`y<9_ZxTnN6Sz!o zhAT*QR9=#mC}H#YH!$Df>MO*KPM6cKF;UjbMg2HN`WTs`kTp*HEU~nuNet2R6KQ`Y zufEckZ>0SlbNCTjPM@lGER!ANu|O&*B(R7j@^hK^!-$S<8ptN-v_<;}RO}bMJGX$zOl}_6L9|cq$?cNypvRU0$=e zzFjwU)AogHb4xGsJyFhaOW0-ZmQ1l9n^K`L4DRqfu3OyR)|WSTgyE~`VYnit2fDX! zl3eTw+t>4^=NE-VJ50xx6JZONp~tV7UhGqHoIkJUEJN=ew_+9ZKG4xMsOXiWw>9)3Do0})`k~3ugoX=vD~c|>qhSE= zGIYhI`as^aMWJ5Z6z(eDv;@O&-Z8jU;;t#@$3jIGh9PzC)5WGJEgB`WE^-yZgP^o0 z;-PcA0SWUG9N9!EiWnwUe8Mnvrk)zEAWl%*7RLw@<&t#6FcMD$4%z{jRgnzgvgo@6 z!zfb7s7N!6h8(m~u0aRkQ1yf_Wt7xr@J-uIBNV8LDF(d*Rt=|Gb!`2lPnM`q)e(QZ4)kq$S$Qw&n7w*mvAreMRl(7Saq4A;Vg7%5p)#7jDLj466D}FQhFJ-_Zy09VEp`Z|E!?o7M5!Nh$f>x=Fx??{ zuVuZ(GC}$^+>&KgEQgnSal2_H6EIw+X4SV%JHt0U-{po+O%TvqMzX<%7m$@GZ z-jWA^c&y9?yI|7| znzOj)2@f9<<9E@o8_M9IycU4LVR>pAzKtL~JpU4RA|R#f3N4RM zD6cRyp$vc5z|zl9yPiQ&8uPl?V3iai Uu;I{Kq0X+srBReZlF6sfKhjaH?f?J) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/SavedCalendarView$3.class b/eclipse-build/org/rapla/gui/internal/SavedCalendarView$3.class new file mode 100644 index 0000000000000000000000000000000000000000..b017f5fbe2cafc4841a1c40536cad74c917f4c6c GIT binary patch literal 3315 zcmb7GX?qh@6n<}(PD}@=WwXT!YK1hE1Qa(~(ORk&+oBYr;!>x{Z8~%^6K1B1sJQPN z;KnBIqC9-zd2FzL(C_{Xe}~(9C+U*3_0ja{+&g#fJ#)@`-t(UM?XRDI0dO-eY6uA= z9XFqLjiP0w^W$dPw0-H?hLs*PCS9wFTW`@25okVaOc+yXZ_>2$>8@eV zca5yymGw=>7HIIKYZ_KYx*qQj_U;i7dj(c>JGSQ=wx2PqaT(>?)lUf2`J<-Sx}9G1 z{Z}_SXl}x=T75a?-)BlICvZ*QLZ9{?n0>;ntJT(`;Y!=@b_zwu=0spka3F0=`suk< zZr0T1oRt^YRO62CIM$fyr}r>8Cx5V)o14^Tk01?7OJ;qU+hh2$;?VkPhq^~)cI;kf zil^#2P22Q$3mi|>ykdFaJF2bChqqJ|HC7inUTtg6v$l*tq}$2Kt3W(;#8Izi%{p|f zP_t`wti&ocyG};~u2!>6IvTM$jxcV}u?9B^gcHipsy@?}1LK8Z=^ikKEh*60=VVC> zgXG|SWig_XFVJ4&^725m-a-Udk#6MHL(&~_+=68KHzwwRkP}RBx=hC&HScK4#IY6I zG_(t>Tbd_2Qb;rXdFd-~$&W-^*`#HV$oY~8M2LnjH45~HQXhT_^usjm969;u<@Ca85 zWUM7{+j11jI)#E`r)OoXY@Y1tSLZrncuZg?14#w?mnvH0dDBiA6;UH&1My3#Dj)JH zWj>T+o!8@WJgMP{^6{nQ^IzYr<0%X=iJtWL70b%GW!W55r8T3%H*^dmE1;KsVmuTV zfm+pZ3d4?4oj4@&8b%huU)i8z6sAColnQVWXsPgjR^~~8z*HHwI7@#_hlK(UWgXi$ zOq+GQy&S>PXBL-J+aU#_qob&ZqPvn{^h^~U*Z0%|SBD3dVnl&Y&zFEl(XkT~IwryB zV@5VBJ+Jk4fz#yo8ro@~YN)rn0h<>Gp-8%&nJ2zNRI$Wi-4haKn79jkuJJNyi;a?^i8*?l}7_ zQMz`%Y8MM3AsR8sXc|z0T&rP})`r@4Ca`jjVijs^2o5ftWPy-mCR!I%<8uD;Z7T+S zBRke_6oYo4;W)eXyi*58U1w4?3k@eL9~}WWi{et*`$)&f_=GGXg?lVnpze2(J8KiY z3w5xPoj6Y6jE2)yI$nOJ<1Efmw&js=O3gCKC2x=7ypGS6!mFM!XdWe^bp@p<><)sp zBzjrh6pUF<7Q$U|gL*gUjJsKWGpG)^Zm{-yE2Y37<$7!-q7>?W>5n=&RTrvYdTm>} z-In2b(!(Z}WSE~+b!bMES31VK5Mm7ts+9u`jjE9cBinc|vWW*HTR8Ws(`&GnC)aT{ zz_WE6Hzl`DV|}uH8coS<)7X$~icF&=*%Y0|#^e=Tf0=tiXyrA|k)L$fAWYoEna(-S zV>7k{>j|`Rg|@{ve3!C)CHW(oN=TNly}!MLThHJcuB=!8jdzyN!O4aax-N5UDWQkM z#uE0PMy&Cn3y3!EA5c4g#DT^~x6R;C80FiiOUUht(9iZOID7`HDw}4&uhYuBeFjHD z!Arh<_0gUP@4kTM ztt~V7FoazZB3HtvrxA@@dNnLsw$9))fiM65J$#9K%aAlH*TpA@ic?rAPGh||izeQ0 z7UzS|c9!kVg_ghq~q^dn+06*Z78^seob#|3R~>Lwxcr??X(*1&$H6 PgzuRY#Yom6NB;f+=gxli literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/SavedCalendarView$DeleteAction.class b/eclipse-build/org/rapla/gui/internal/SavedCalendarView$DeleteAction.class new file mode 100644 index 0000000000000000000000000000000000000000..c9daefe4db352a63d14ccd464c36ba018b81660b GIT binary patch literal 2216 zcmb7G>rxy=7(LByG7AiHiDE7U5P>Yi!XyYr-3Uf5y2>SH6Ew!C&1|y_%+64=1B+Vz z@hyA;e^aG+snQ4VHGB>)r)Md4SV+o1G2PSsUCwvD%kbwvzx@GV3fl%+1ZIM;Y=?5! zlXiK}wOv0_p)WnVDEC!qUV6$e$#C6Owc!QjsYu;*A~*02qy?^=R=ux{)UO3DMq6%m z_@;ohd|K-14)WBx%MT_y~43ydTYHd$!+&EOKFD#gsT(auXIdhxPA zYgt9bD0Ka@z-V@PTkcESlYZH*ALhr-9%XQafL0lxHgwHIAFc~zcK4!n>Fp_j8|T9(k0fXqZ zkihskKI_;I>}rkS*@cQMD=p0Qb}qZVTHUK`sPKW@@QAr*IdG)6E<;zpA0MW5?FigX zB=$K-%*Ymu$?l^@yla$nSY zGHc*9GTUsb4KuiH;B|p)qvoC+kcl_&CX*{2M^&rCw*+RB<@Rjl^NL58Oy0yDyvxLc{h`)dj z4SXQbf13VgNfXOh5x7u|WXQl$*|Bx4yJq4ZKB~uFWFtF~Di!>aI*3III=e*^5Ad*& zuPK3v=gAlS2z+ef6Fd^=sBQ(d#0<(MTkPaKe=ZlCb7>itId=OR_h&1W9UR2dfL(Se z$@B5_VPqwbNf>M@i)O}jt7#sF6LL+h)&R`Nijj17R^)En=LVh_VDDW$sh%@HIkk(y zUg)SLR}YKcGvB01tt(&_d|!q0o~%|CLo$&u|kGjxPu9v#N^vV8W_CQzo2 zE!uO@jcr`U4hG<196rW)I~XI$!QzSj$?j-b<_?Z0_@20RyNbmD+^?Rfb>oWI$K*x#|iyUG7kPbli(}ZQwxL#Ax zkVj(zs^~;S_A@w&b1CD{hzr1NNAPkiBqm6Iaq)ZEm+v2Jlf&Y_`KKuu*Hd;6U literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/SavedCalendarView$PublishAction.class b/eclipse-build/org/rapla/gui/internal/SavedCalendarView$PublishAction.class new file mode 100644 index 0000000000000000000000000000000000000000..13173eb9538299cf8606f7e0f5ca26a477fa27f2 GIT binary patch literal 2365 zcma)8T~`}b6x|mB33Lz$SVgfQ(vl36DOhVI6|I3<+60i$)YgyoGF-yY$xPNH0se@; z!53fZve9MNa{26!a=C9NB?*Dn2bj5c&OK+JefBvw|NQ&sUjPMYfh@Vw zDpVcI@hU3tq-*8mq1sJLS9!ZK$UEw2db7IYI_3S_cE$0%C?W!5?Ps^Nm+-T|Kq)j| zair@P1g>P-jZXqK+=g~3f!@l#Q=YyiV4ioP1DZZ{%kiAbvcN{-{~v3y+zVt;9r?jC ztDZ&LClAM!R5CBnzj|z|l1{oD#el$6Gm%rLP7DPiX@6JsL14&06tRAEBW|D%BLbIO z5uWnUj2pw-0?`JE{dDw>fp;+`&{t5ETqSTkO===@AP=SGO0Qsro2g{yRt)bG(K<8K zjy^DO2@?XbQniwoZdD1)oZ+X%&Bo4wvNahoe8`M)`+iVaQDr-D>a@i05n<(u(skEt z-;3e0zy*hI^Xj-nQyp~1Kmti-MD*H7VD^ldA@*ade8lvuwW2I2ZJdf?R$#ixdz(_* z1f*kKH82m0g=4IASV*2uB;Q=_ewc{ssx2DmL9f7I#_`m8wYZ~#ZMox;s(8k?rJI+5 zqt}hih}NvY&6Wsl5IYpx-b~bQSGh=KwVXdk7_6hmI%*spl_y+TZ_Z5>?D;`a?FvjZ zSe8c>OC2h&VucO5s^3}BJ}l$QD83N5eh$61Uo85b^=cI4luIqJ8L||(Yv4APh-qsh zv#P028(6_=NPSKPhmK9CZ&GPPUj6tQYf;=4NSp(ugGK}QaGy$+wynzL=>>u1*5-PB z4bJKmokP~ZIyR_t$|oxwFYOmgzDK$QE>c8w+BKag`zbA(Zwzc9$3YZoUf{{ONM6fm z>Z|~rwNB?hztrGxZ};xol+6#De8*z#%NJ# z8^f>9i)Gq#c%9VMJ6Mtd89kv;V6++hWLNivI%e;-L_F0O&E&{Jt|IMcSy^gygJa|^z+LFt|D9+c#Cg8@jb$4%A9?HL38eR44d)M8ZNGz@%OIQ zFmA>t!^e~vpRVDG-g*i1ky!(cuf4#+a~|))$NWE44|SKJ*BI&^hH;-aMFtbdVwO@~ z!X~cMZn6$Cg->vUD+b4>xJe(wq~kMMX|O5W;(rbCB?0#ExoG~1&ujSVZ!Blc-!S+G z?yM6tqg&R*@mI+!bc^_w7Q9F>POI;Ta|ENb)i}q9@CW=zgbC971W)-@@-%ZdJfOpSsfohm!;R2Rr|P;s5{u literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/SavedCalendarView$SaveAction.class b/eclipse-build/org/rapla/gui/internal/SavedCalendarView$SaveAction.class new file mode 100644 index 0000000000000000000000000000000000000000..7fc8b8c1d6f9ead8a9eabfa998c2d6f2d90ae600 GIT binary patch literal 1348 zcma)6ZBx@g5Pq&y5@L{26+sXXc`2a~1W}>LfE8z$>40OMem~Nq1k;4Mq?FJ8BWDyH zKllUuQI2~F((*baGugYn-DjWO+s&W9zkUN)z?y~>!(t$7w&aH%w`&d8cKt|5pL=$h zABk#_d%~}BS#d>kTxm9($PIiAX@-IGjvp07a?H>f?YrUlJcCs_Z*@I0(e7U0}Fp z;to0ubRc6wLodTbJHrbIt++bw6G}*RGYI9Oi9S4H=&FgR97)%&F-+!42mFZJ9`|c@ zqAW~bR_PcZplwP|0S%fM!V?Dlun|?b*ANU-SKze4?Cc&0M^!?{2t%g4AIRvP2p#Fh zHPP{uXqD^S^R}G8*YS+DF0JPNbDuCVi75t+xGNKenJXeD%#ZD`Ny*t;bzT$7n69>` zxXC{VxfjT~s4|S4=E|FqEslgA*-4{ssx?*Bz#^73ykN++`s!xlCSKwdT_JZI z5yqo3+ul+)JI5`Z=CVc;Hk71rH8pDda?p^Dc<-v3_gxz5Ih8+yx#jyp7Cjz@g6eOy zMjfNna2@o&V3~{>0$Qa=qd_OxMY}ZZ44Aa~LhCfiyfyP3-B$hwdaP{r1P`{YZ2#;D z9$VSrM2uS5u@j7w>T8Ubqwg?b0#GDT9izM=ak7Fw~4SieCL-^RFoiQO5lPCS-l?-lY-5tCJt LYV_!TNqq1RJ)>f$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/SavedCalendarView.class b/eclipse-build/org/rapla/gui/internal/SavedCalendarView.class new file mode 100644 index 0000000000000000000000000000000000000000..1f5bbb416782e11a6e04ca1b1ed2c80a70e76272 GIT binary patch literal 12842 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/AppointmentAction.class b/eclipse-build/org/rapla/gui/internal/action/AppointmentAction.class new file mode 100644 index 0000000000000000000000000000000000000000..3e278edc0e7f41b2a6df6e35180411dd3c595c4a GIT binary patch literal 11886 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 E1@Un>;s5{u literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/CategoryAction.class b/eclipse-build/org/rapla/gui/internal/action/CategoryAction.class new file mode 100644 index 0000000000000000000000000000000000000000..da3dde778f6a3f3e8f35c47a4abdcad225879a0c GIT binary patch literal 1894 zcmah}ZBrXn6n<{9bVJy_SWuf*UWB%U@UmJ_YJ=4_fJOqP4UM+_blKd*Ez53ZSz7v2 z{285b>fnry-<=L9a6TwiS-?Cq#@ z|J~Kf3ncdUm|2(A8KhaGh73tnV5DCG1VlsNQs=5!2bxutry{1E%+6E>A#l~gHGIU2 zAbtYPCoZTb{kq+Jmb{5EI_p)ZX+2@#V@wKMsH>>x*Mc>+0bgHWG&|G9LUZrB&g;O} zEevC12se>6F)fhkyhjh*!VGdu%n22{Yb7SI;z}>5>kfH#I^PcMPD}Kr69s{{>qd6d z(c@x1jX5lsm=_p3nMp6wf{iNz1N)H-BW?Am#p(Er6=D&}%+85awdhyXVO-^+iO&VD zb$s&G+{jh??OD-@gX}KVg3=IPJd1JrmyuOm%WRGmM4%C~z)R)n)J9?w-%K>s3wgRld98y>~j< zRSRqQR=}#cezmnX1eW{yY~A9(ix$4eI(sryd%+9Ux?{7x!*fNKV#C5F9>mWZ zgq)MHzD6yI+$&~ta5(M5eOi$%Q1#fS6Ft+=+fT66V=8g5xO_v?ZlWR5LU<6Z|6l(^gYZ}MdDltP-) zHf4kVsod<`{I3{#9b?b)H%%;%A^s{ZP|7uNxQI(U(E{(`GW}?YGajQ;cpo1yqJa-_ zNMpZrXi2KBiv1Zsyjx8AL>>T)P0wLhGdK*loHTPlF&?U!Q$^InT#>lappRKDb{8hlUSf+ z<2sgb1M6HWs7v7KTh6lgH2?qr literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/DynamicTypeAction.class b/eclipse-build/org/rapla/gui/internal/action/DynamicTypeAction.class new file mode 100644 index 0000000000000000000000000000000000000000..b245a4181b5b96a8c6b1a3e20b8db4d4d90e1d9e GIT binary patch literal 1657 zcmbVM>rc~A6#w0A(y?{CL_k2^;3$s@K5y=E8S8Q&UYSNUBFFc3aCbxX) zI_B#WhnJ!_Q z*Y~7T$}x1TOGo+}3~Sk~7Pmu>mqp$6KAS=Dyh}Wf{ajdp*L^eZmMg9!96vX|&yXq{ zTcVbi{V8d?36%eqaZTU5nfM+>`3P@iF0l zl2wM42;Cc5Nn&HwGLefUw$VwpRJcd#82Yc$%&_^NZndhtcd7a0o^s%>a$t~wRTz3M zhA<3Og}*K8`73%_$cEw3rp`wM-prX!FpTTCg$~7LQpXgg$%7D#M)o?P@ zWaX{{yfmQHicUw=3#!x!Lp-Z&V7RX%i+P6LlJE;f>8r8xT-z2N!$kHX%K3<#DzKnq z5lb{lRN$>!Y|cNGK9_#TEnXC6G=$DITjbI(v7+Gt!*pbZ+lA}2*AE%GNK0gM8D3t~ zm8OTqaNm7$F}nLX)sV+J?qDE|r&!bQjA67zNOkqRd>zk0t|kQ8#;|&2!$P~;FY&Hh z^DOa3s?8gS=m~!+%j)NWNg@`f{~4o;#)a+)I@9_hhR()Y3Ob!ODNaRd#=_z$GT-PJ zLpR-1^aKVec?dmpnh3+ti#~dz1l&e{0H7%YC|UswUIN%7=mfk-3{!NRutsr@?xBQOz%^qm{J@yOPBHP(_)3tWkgkCE82K=cG|5n6 z6kQgQqxv37E#l}Sj~*}gR@Ov(=D6b%knG8s}c+~oD#S&p!-s+jy(E#KaoFFu5$)Tcu!!wEu*a{aJ;s_ z#Y*GAKC~^@_S#lrtW{q%Dfe>*&SPF+tlNv4w%d~emrn4`IN#klV0CIru!)A_$<1D8 zM+V<3(gMYX-?H7N9XRTo8Vk|B6AE1UugaX%RIGX~?63wIr!Ih(hsGl;vy<-vA^QB}wO=4EFq>qY8O071Tb8EO{us$Vw(-UF|94DOk9s;X{Gz zgN}Rss0OF@V|J4hrem4RkBXeHRJT=?mkiv%CjuIU`XQ77+h#~7@^B(YhL*alDL%^v zJ_U=wj#R^#IF+)p4Ev}~9nruUogB1Y(kePu@wpm~TQQ-gB2+iZ^#>Sf`(`X@1HNie>gVNQBv48&PZpd>IpIJfvCXmCitN_?4Z9n6tcHfb zY)s)q1OjaNy`Uv;J8{ns{Tg0Xewb&DdH$XXemLV?3*2iMLk{EVNr%DR0dLgHlDYT< zr_Ia1W6~`2Q8bIwX7Owvvwf5w^FD_QT&IZ!%y6BBjyX(l_~%f@`?Q`Zcp@S$ z;!@0@6m!UNUqO|tifi#ZW@r9}$zN$m0*uDS`54eh9;AQ*CKhQ?&P(xorZ-@gI4;DF z(*#qwzhJ_@0BWG(UB;CZ;#r#anu`AvR|Qr}zhFw8%s#F^#myWZQ4pR*d@zeEe_-{; zC-_X+`uO4z3LB4!1}tNRYUE>u%2XN5QYYOrBwS|13bS3oHTL0BMya)9ervdmuZW~` klJ4MZvj2t{XHj^LvKapdQ^;u$8opJFt}@%;eGZ%d0#1F+b^rhX literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/OnlyMyAction.class b/eclipse-build/org/rapla/gui/internal/action/OnlyMyAction.class new file mode 100644 index 0000000000000000000000000000000000000000..c3b7d855923cd7fca25ac3c6262a8b2efca6b556 GIT binary patch literal 1859 zcmb7Fe^V1z6g@8qEW}kXR4R~0u|<=Wy0sN64bW=D{z||pZDvaUaF+0hi<{ld%Le4D z^b7cJooVA}XZiv9nL2IH+l^$Sw4;CUc<;V<&pr3vb2oqf{o)S*A7j%%O27(K(^gK~ zbL?in0 zGU&)~-FJ38xl82YcBwvwce&eOrel~9I2W++4}wGgfs!4m4xEUshL|&v$9n?fO&M;5 z%JrK9my6YX=fJT&$8XxPv0QrHq}?x=xQKayv357CJ6=}`Tsgrz;k>!C&n}g9;U=oC zFE_fa9jU(8QrOZW3azn;!vXv+iXhju(5>w3>Ro`Q|* z20jwFF%aIHM>RRSpKuV}jvmfRS1H2&K#|1bq#2}(rET5pB@;LCser+P=@(SbP`&8r zhOX?``m(HfEt~iZYz76YXES!nC(ASJqlG(SfFnCOP++W>ELQP_o|W4Xp}HniF>x2` zl+B*2rTB&i63eL*Xg!Q@F%+nrOfb*I8sShY5ZH=1{=< zv|fyH@BtQhA|fv1O2i-^aY%7rM2V}8Yx94^&iWOTzt9i|7>$hc5uh1A=mYW>0#|9# z&P&mIrZ->~J1#_y(*)DGzhuH61lB;uTf~Qbh!_35*L3{nxF)cg{~1&IWc6_4Ic}x! zgazSQLpm?nBN-i;Y%WAIZ$8WYqI}_80V4s3k5O$52lbZAPjt~m#ogL#`_dD{sphO(>VYD literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/RaplaObjectAction.class b/eclipse-build/org/rapla/gui/internal/action/RaplaObjectAction.class new file mode 100644 index 0000000000000000000000000000000000000000..24f52a4a5194e976bf71b14f517907d1e703bada GIT binary patch literal 9346 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/RestartRaplaAction.class b/eclipse-build/org/rapla/gui/internal/action/RestartRaplaAction.class new file mode 100644 index 0000000000000000000000000000000000000000..5f6235d51d684fc7f34df70968543d014338c4e6 GIT binary patch literal 1129 zcma)5T~8B16g|^cTFMG#RiJzd3YJBgir?0lmG0w1dY1ernL#iAe%Pf+xEL_1@29uQACyoqq43j$6{lWE>45BO;YzxJ@j)dQo40kT*9%??Qol4i7 zFoSubt=5I_@3~=+!6JjDDBA9;H2BLFR&bLcP4Y|?!`21xvA7Ozv`IhTs|!z>;u6DD zMFn!dS+7a`PSkvoXIDa3_(wu3v+pNU(MQ!_*co!>|7<6UM59jT40T@ODT#@v=dIKy zp{~nghL!$dL_6ZLMV9b*ns!Z0cQg(MchlISix{{co5#yN535qQlq)UV!!}uccu?6j zXB_d*TxQY2eeBR=8L#8Mf1BO+Yl4(KwD1Uz$&9{149S9-)RfR(kzp}rz4$D|S`C}p zm9Ld?VRrNdZ5z#4C7nrnh(LlO8ev+~v`f)0gDgewDNfM3>}-9-gkxWI?5QrMySU-l zdB(_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/RestartServerAction$1.class b/eclipse-build/org/rapla/gui/internal/action/RestartServerAction$1.class new file mode 100644 index 0000000000000000000000000000000000000000..9c4be61282ed4df391bb08f655f04dba681490ac GIT binary patch literal 1427 zcmbVMTTc@~7(LS#7Rq8v!BTHfu}Uw>QV>Lo7(;4eQqWL>@y%fw+J$AencV^}{vMx6 zynqkJXMdFOn{AV=K@(t;-I+N%-|fu#=GX7jyek`q<98n~63?j)8&8rQGn&pV~ z_QAH0o1L6fHP__!7MGS>ass->}_ALr9|*43z;qWEiPR>B?+3AtE$8gc;0gFc=Do&Jj@PKJm$X2|uZ@qb%Me8Y90oBM0L)zxym z?zW{VURkO`GymxG8Ko`bS&dJ!JP}@t&qE}JPmBpaHb{ruCAqx*#>c=R(ePGF?YD>D6BJ>U-PUsNLmT0Yzc(L>adhr{s zodkPE6c+qZ);XkTt&@#HM=?et!*wLPUOrM3{03=Y-1)Q@LWpZBO#DIQHeC89A@| zl<6ca_scn9dasc$J$j_iQsZ7V>|aRCvFR0Sq#vk1F97cPoP7c8lny z;MY3`!cr$pW0=yG%G`C=E#FIHgh6*`Hdkk<@W*tFV}cFSzzdLysCdFikupSVW7E2n-$MfR~?Bu z$)!zzBe5V_pPJOfElUJJmOQsF!@WsvE#zBQppw^P9Zx_d)Rg+ECmf3u@-O+<;~O;R z89rWyWUn8@-P}l4kUSu^L?&ASiZyJkuSVx?u7=_qj%+&Dc t6U}0l9kdVn6f@eVm?b=|$4t?vcH4~_md_2LuoqGAD$xefXVjR{?-z+$wqpPQ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/ShowConflictsAction.class b/eclipse-build/org/rapla/gui/internal/action/ShowConflictsAction.class new file mode 100644 index 0000000000000000000000000000000000000000..a56d88c942a4ac4fedf2a391b604445fd8e12796 GIT binary patch literal 2376 zcmb7FTXz#x6#h;xOh~7oftGubdzz-5a#xEe)PSvRKvIj~1*emfbm(LzotZSLH}q%l z3wY)wh_2=G+27=H`JI_G9VA`qLvqfXeK~u7``i2c@z*cE0l0vlH1r9a_x!5in{~%D zstwz)-B9|j=@_OJ+Ma8aR=wt|=T;os3WFQbnT7#@L$8|MQx0OWfIfStcx&$Vqe5}% z-UETm!eev8G#t~d8l}*;-Rg|MFr5aW>4wXu(~v3b7C1ncQ&A*SLGo6CUDs^a4zCNG z$u4Z)Tk*}BYvU6B!_a7bW}iujSW1(dQqqT?uz3GA-QFiuAtNPkI1t%~4Trn7AN zw)*ZI4uq?AAaF4O>VM<_E7%v*2yDW1hk6L?jk$DJ`W4TwDF}~uGBKN>AvdHO8ZmbY zYR?L$F@Z@9d4au?P14VpUzBcRE|j%2 zrg2fnC0u5W?VuzbBB%oF&yGJ-!mB#oRsFan8BrJJh`m#J1aa~0?)`_sU)r|7JFNGVlw8^HahHI@#YfY9FC1!Peh=PDdM$J(w zFwuh%F#=ou=W2{bDbw{dZtM66bM(M;Vh$# zUD>?r%Zl`+Ysuh-<9N+D%)2^1!99UdS2hb}J5+>AXbMadgYAZ7#qH3Rfx)XQcD3P~ z(cno~%xGBRc=+cOx!JItvh>p^VOe$T{itl@P6-cmJjCZ59A>>PUDop`dp6N3aX)q( z5SbFb)bSM_vE4#%t65(qQ)hAw!Gxt@MIirwQqWNbtFM~5;D-L@zczE{I@JmSRUNCa z*+?vWguHDnIWv9roj<7wH@}3>N;F_0)s*5`4MM(m5X`U z;bzpV0_!?_aFh(IIhdHK`6NNR=QD9BR9DY>wYulVU9X|Rk-J^yu09JZH$ql%+wS$L z!Esz;Taze}))u3?z0Q6etdp>ea;jH8JJXM|PPRBg5(MgoMz6!A(6rVT&3b35rc2Q@ zx@D`md$7j?I;B#?2^O}W4>8|T3}P2ojbD98@yBU|A+9=42KY6Mz1-dBzK`pH+{6pK zksD|ulgo_eG6&l@+{W1R$owS#GgJg$pFtd>qcM!~DLKWH(bycPafV-XgtItD_X1gr z^PiW9G1@BY)h8|e*7CI35ELr literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/ShowHolidaysAction.class b/eclipse-build/org/rapla/gui/internal/action/ShowHolidaysAction.class new file mode 100644 index 0000000000000000000000000000000000000000..0f0fd524863d44460f97b5752345f7bf88a1cf2c GIT binary patch literal 2371 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 +Actions can be reused with menus, popups or buttons. + + + + diff --git a/eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeAction$PasswordChangeActionA.class b/eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeAction$PasswordChangeActionA.class new file mode 100644 index 0000000000000000000000000000000000000000..1a3e389087b2187973f21f800a18ba36af96b7e7 GIT binary patch literal 3631 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeUI.class b/eclipse-build/org/rapla/gui/internal/action/user/PasswordChangeUI.class new file mode 100644 index 0000000000000000000000000000000000000000..35f0ba77981129e10ca4de6eef33b3b389810adc GIT binary patch literal 2685 zcma)8-E$LF6#v~M?S|z7rF@A+DOgI9N*7v6fkJ^s3az2V7D5Xu-X`0ybh{fjo2K}I zii#gEzUqwc`lvH)>d1`av*RD&AK>31p1YfmO`6W|&^_m#dw%Dh@AR+#e*Xi&0KQca zVi>fYoaTtUDYRVC&Xg5WnP_mtD@`12&`t1n?5r)H!z!_=c z+U<#?y_~l#-EtMQGaPADa&6mOGF;75zGGx_y35d(7nW`^>`grsD`HhElng7UP2QB! z5r*wK$H=C{BfIFHV%X;?X`svg#&BbIea&XONg(xwEix+C#4gL-u}qvvHB3knV} z9NiLCQ)GxF?X0eX;bo3J=wj%7f!FTJ=XRwGOP?w(FX+xKv0&;9ohdsb%(QR}d9DZ} z?gOL1FcgU4g$qv^2^E$pk^p#%1gHq(H5tNQ1;@yh&9zn0gX2;oMj4L9)7vQM1c!pC zg4Y@LNJLYiRrKMw)YCY&K~+E%Y_#mvTg6FV?KH=Ba0xiWvBT%ia_j_GaGp}!I}zhRhIT-J-E%0 z#vMwj$Yv>_0S9WMITEjXRTnClXE@+x-K06!W?hE{aja;VS>1`^9s{?{?EQRY8OR=e zhvQw`r;uroeRZ#2n{8Cz3z!{IA&^n9z|hgG&XEOmud*V{qCUOYWO91pp`M`u^FwGf zIftCA*#p`WmAHfV@pKdq8Q6Ihb1*rUVbN5Jd|tOGQzu#>Ha${F2f06oJjeTR7^1FS z4SsK|rC%rEaulUsve36^K}1oad|G;`md_|2k=xbm-e1ujW6{V6xjqMo`@?lSC{bwy_BhRA!vt>7_3_m*3xvYY5#Dp#%UGzJx?Ypb_*NAtdubQ_+H#Nzjo zay-7^_!3X#g4W%-S5kjUFVzJH0@vw=pwwBr=w$S9L++}5RYdhireC%Nj!>6{>8}k@ z`q84@Kwrq&_b3gwM`^S@N`viDno^I_jCzzNlxREIp?!o9_R%Rqr~P<|xJ&dxh^Uh2 zi)`TFuf&FMh`y>PK0&~Kyh7*wz8YS|VLC~7x;+P_*)F1y%CO5Qkm(`+dS#32VgGuy)wQfh*sI7Q4ibNgGTTihJwjRUK`)Mx zq!$+u!vx~A{SwH~|2Gx}@ffG^6hrt9XYf6S@gvUSXX@QG(*6?{@i#{C4>iEQxXi-1 z!j58$T|v^TcDG->YPH!|rP@?ce1H$B-XD=Ky$C<2V^{%G@G(uLg1+a{->M))0(O>~ z?Gt=TU)gXPQAV^)X8ado{C1Q53Hl9@t;T(Y%Hs^5;R#73cz~$XixQYh^?5UXGJucP f@K0Ofsid3mQ!VjdwZv2DH{oYm;=d-3L-^)@)-QL3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/action/user/UserAction.class b/eclipse-build/org/rapla/gui/internal/action/user/UserAction.class new file mode 100644 index 0000000000000000000000000000000000000000..96e2d15161f1b2fd9a0169e51dfed6b4271c6f32 GIT binary patch literal 4081 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 UkOraQPwH`1U4#EZt`PqEKX%A4CIA2c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/CalendarModelImpl.class b/eclipse-build/org/rapla/gui/internal/common/CalendarModelImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6072059e5d45dfae2e081d8518121c8ab83cb0bb GIT binary patch literal 23377 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Î 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 MCRmd}zp_gIA1$ne&;S4c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/CalendarSelectionModel.class b/eclipse-build/org/rapla/gui/internal/common/CalendarSelectionModel.class new file mode 100644 index 0000000000000000000000000000000000000000..a5d9bf9c02a9d6600b5c00cd2fe5ddcea8dd6328 GIT binary patch literal 1434 zcmbVMTTc@~6#fP)Ewx-)xmEB2UMQ$63aAK*r74l5(xj~<>Vp~Dp&6X+HoIG({wqVG zi6;I4f0XgeblXDOCtvo=o-^k=m-){5^Y`a(08fz#V}N1JajTZg>xx^|hP0&Z3)kk# zDm%5BV_O-ngk9loQ7BRNrDMNyDnf-3Vi-H-C)`rpu3GuSW3q-Z$S`vmuk9bWMHp5t zU+4*_xaY|u$q$v-m5Q=q2o>_VEJGsKjac+uX;(KH;^|y2pGlX}JGpG}b0MEEF|6mh zF@)_)UkZ;3vX5l7;c{JtRnQe@E~*GCvQ<{nmi}voE2+f;3Y?*8qln{r7zu{aZv2c+ zGlp?YFodhZ-{&>KFrHfM&2b0}Q!xx78b*>~^*?fpV1}}D9mlsRp$Kj=#JEyUnftm= zUKG=~9m5^WF$``6B`lDvQ7ZHg2|o@^$^J^z?ml=*I^0{w;Ka5%mng-+P*Gv#EYA+Gg%1rI)u=Gt+Qg zVwYC8(>1*LNIakt3W5wLhHY&gZ=^o;1Fke}UXx|NSr?Y!715twmg;FanxGmo-F@;l zWXz>7e)g>HxIVQhNodP-S$VDs}`7ro@6xbhQ+2}2-1ai*EC$u-U|0>puT*osb np9k^<#n$!>!ee+zaYH0GN%N|s8Kf*X@tSmRGz!_%CcmA3#L$5G literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/ClassifiableFilter.class b/eclipse-build/org/rapla/gui/internal/common/ClassifiableFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..4e32baa917a828f993c029742f87e57ad29eaec5 GIT binary patch literal 410 zcmZWlJx{|h5IvXDK=`Tzf}N>dFk(VtLZwVdNQDWetGPrjjvd)fpnr{lAHa`7TqsJA zy7+YW&hNc@U*8{}0B`}r1bPC_ozJDm(xA*MEwzp0EgGp@Q8+6n21C%9#<`(eZ5T|T zFJQR98l^#-%lr9)R1|QOQ=CyCUt`qHu9gK{j>gY-od(&cqoyEVmKF=G;fKu8ncb)p-_hsKX6qSeZDj*~25t1_2wR z@soh#7GwXe@{0c8^x?PTQ%JzcdK70(3IhR5#EAm*IhjouaGx|C*Dao;Ym*(=Wmv#o MQ+aEj-yR(N05f)TXaE2J literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/InternMenus.class b/eclipse-build/org/rapla/gui/internal/common/InternMenus.class new file mode 100644 index 0000000000000000000000000000000000000000..5b75ea0ed231214672cd0d498cf517da6264b8cc GIT binary patch literal 796 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 E1L+$EA^-pY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$FilterEdit$1.class b/eclipse-build/org/rapla/gui/internal/common/MultiCalendarView$FilterEdit$1.class new file mode 100644 index 0000000000000000000000000000000000000000..34b0962c96b1190b41bd5ef636f57b705a6f6425 GIT binary patch literal 1947 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/MultiCalendarView.class b/eclipse-build/org/rapla/gui/internal/common/MultiCalendarView.class new file mode 100644 index 0000000000000000000000000000000000000000..e512fbcf558414e766dc447ac1b4f8ac1b6174e3 GIT binary patch literal 9698 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/NamedListCellRenderer.class b/eclipse-build/org/rapla/gui/internal/common/NamedListCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..0bdcaaeceef3950ecd5296ee9320d8d5380cf744 GIT binary patch literal 1419 zcmbVLTTc@~7(LSq)lzPS)*A?jm$p(XkgIQi(G5a_a;hP0GGx~lPwwr^TSHCQWi_qpS? zq%UwP-1XJAZ!9a%lTEb{Z0V#q(>DEiflTf&M!qf(t2pZ_i73)3^kPsTn#x0nKws6g)x&mcO}S6xTF6V2sY`and1o=^zc4+4Yt{b{lZ-DNK{TXpNs3$Z zU20s;*OO#+R&(x4V2mUKg$`?w#3;_`w23_p4gv|JLM21!UA6aT2@E&Yp&P9@txd;P zHt%3QWc}9yOZxK5`)EH}+fWU^ytulW4_DP zy&P;>Aikx2d{D-{7 z*>P5~=Cs|0S}?WuP9OOir*xwjr#GT}Ls6VY99^6xIE&yIBdyE`ZEnUW_h=!;e$E~- zC&F)EVFv>R@c~1H$q&fB<5C1C8PkX{o@E@yaZ1>WF`VK`Hay01XE-B3P=-x0W4HtU zjHfiIbYXG_BZV&*T`BHhoJIEVdxMM#l0J_CTnMno!c)80=?=DLbDlX7;`35ERo<}O zE>snL8XuaQ6?ZX+~}U literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/common/PeriodChooser$PeriodListCellRenderer.class b/eclipse-build/org/rapla/gui/internal/common/PeriodChooser$PeriodListCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..e8289ac56bbcea74a8f4bb1c246edb508620f54b GIT binary patch literal 1415 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/AbstractEditField.class b/eclipse-build/org/rapla/gui/internal/edit/AbstractEditField.class new file mode 100644 index 0000000000000000000000000000000000000000..209a0cc42c78165fd20edc833417a3d667413964 GIT binary patch literal 5018 zcmb7IX=4-D6+KUqJw_gI0GnWl36Mf%$ymWnXu-tP7#U1uhsFz-tb;Y!gJnq>jf_ds zk~VZpQo1imTbeX&>5{h4206qHq)TX$}#Pfk&K!N%ZYX$$~v|&=ES(@wajEf zLqOo>@*{W2!@Gz3deT#wbjnOQ8fpbLlna&XE$S0kvMbixJscmpKOP&{J+wza^a(8P zNvE=ok#a_iWX|*x?iztbhb4jmW6Bg*7C&N48_}eZ8jlV-wv`(16ws4a)-hA29p_V^ z$(6}DRx;Xc+r}}uO|iO!nKZ`@hiW#(uZFVU$YiK_mnY7nwcD+f<#f@zP|3-|HZdJd z+mlg61+hEkjMLdVA`pztjF}n7qB|Oz1lG^nt2k8@6bSUB6J`*8tkkg-%QUPKSg!mn z_a%sC+$2R>1pJ}akwsu^bS%aafrhx1G6!-~hfI6OIFwYBrN@lqh+$iD?QI5}2`eiQ zE%D|$vVctZvQzY?y9bqaM0IJr5M(BXDbJR2KSC8BbSLR7V4DaB->}cWpO%I4g2Yv$8vr>9I-0_(Ae) zWeb!JS`V2C0ge7j74>*GwrY5fKx97X*94{Gc5Du!6L)CXE^tF-n(OGoX8P@<vL11Gw_7)P#Y8!Nnu}QMyCBu9wnX=GXA%ggdvZBjuR4{FFTjpyU5 zKIyQ*L&2gWT(pE*?=Atj08CD%`?SEyd0pi)GAc7Vj^QE3(R?sxB&oHm#yzK74+fFL zBRW2S4+<c-0N52q}q;hfuQkw2rUf ztHf%hrqh$m#I2?NdV-~(3o)ps?i8NU@O5^yd6El0_EG(qA#b`N!)C;agzI<~-ynh9 ztN6mUQkInSZZgI?m!G!@)l2g=49aNU*b|#!WeN$eBdV3=&V_;xnf?Dn-kM zn04|}Kc^!vi^NYYR9hHpVOO zctv3Cwa`ebKiBaK{E{p>X*GojghJKwt;(K;O9HpJAFhgqt{k>(Qw<#{$8{+ojsHf+ zYxphikt{D~b!Yc!c%8lMO2}g}DnVSv?`3;X75GOTFXKWzF5=HR{(`^CF~#Bd=$TC{$05I(#mt3@1yb4WJ&Qi6+@Ht$Uc{Yw49is@kI_8t&EtVe-r^-@HhN|PvTat?o_L$u_f^sE zlXoPUDbMTInF_UZFW#2NL>{Sa0soeo(+D*Onrb@oa3XmeeF`hQ<--?Rp1~ruICG*# zG}SZ*E@!^Y#uC@GKrF0Lm>W2BJ#0ZOGKRq1Ab{tR$yIk9z z|3rb0uqtKj;`k^&rV>AnkF#?9)X{@a;Bm%4XL3Hly&CSwI`;n$4H}*l>txtD94v71 zKQt4dsEiO3Vu^f2&f`-)oDDM_J`)Md;&c6Nk-*EaM*ZCR!eAax?LUoG1Jbokd3;T} zG9B{&8%wjD^Y$W82EB=%rJF>o8b zAh03>eadgPVHWeZ@NL@ZpueZ_9qQjf4o>5{e3O2!Mqt@nSOdQXp@HL5PCie?H9RN( z+~r-ofQNsR1<6CKoQLmwJp3Tympp{qB7PD<2J-mPwKxc~~*jB;8BsoZugDG;5 zp@dDzEID&1nd7`W&03l%;UHGzAXelcdv>r0Cx}_RNIe4Quc+^(1^SLt-=o*i$IH{hx0UE*+BZmiWdC9w zKYInQR(6fYltQ;c8a#jj{EFp%4SyH2B_ zt)+wM|0f?#_(e+_EBL>X4YwPvXJLV*7i8Jhv)~$8a?LEaHF%OY))OqflL|!GHROS4 zB!oBcH^OMpicQ>JK_#!#nK(V|ASb3 H_~-utyP=I< literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/AbstractEditUI.class b/eclipse-build/org/rapla/gui/internal/edit/AbstractEditUI.class new file mode 100644 index 0000000000000000000000000000000000000000..45fb818e3263bd32a11150cb532ce69a73683ca3 GIT binary patch literal 3639 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 E0YCQT#Q*>R literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/AttributeEdit$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/AttributeEdit$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..81f8a85a6748488d8d678b081ec10dbf876d1c7f GIT binary patch literal 2485 zcmb7GU2_yg6g|BO%x0OeArRCU2*jY-O<)l50~b_Cf-WZEBM>ouKxej-OfoyO%*^g4 zexN+?<{z;1%_{fNq6!!F!5`pnvMf)}B%6&Iz}m{pboc4o_nv$1?fmiAZ@&XLg?k24 z0;l|7$qHn}mDW<#u^cZ_fhS!{m7K^rA4P$)P>s|iN5fN27%5K$208_LR%A_DuJo3y z%L^;YjtuM;I26yydSt1Z@@T-09N*j8m=-vqA!}Axceph{jW5%T+C&NLj+UKp_@uz- z)Khy`;I^}l=R|J_oEZ5Z`*L#vo#TEvF+W0=-kdE!{a8IC{J>*{K~DIQ{g;w@9V`SsAl+MFop~P*x>@!I7!|By>`fTgc62 z(2oHF&kN+9nkW;8aG3d9Qqin(nK)G{dL^|Mhg!_w2!;$C73kmjWD_r7I5CkVc-$|S zrALPkjN}rJV`0ovJ>F6wjTf1mK$ZQP%3uU}1G#MiN^mAdF-D-eQw-Tg{SHo^oohoF~|;-j8q%wH6~okyNjqdOq{`+G-dl<7zL90 zzal;53Y>gw5+~H6th&*7Ygbs%=FXZp2P!b_vQ~7_JW0dXbmeK~Yj7chcW}YL`6uLa z+a?p^m=G|SPi;r@mgHcw#xCh;n!bql47@9_ue|`{MH59_+AfJX=~k)o?fFa!ou;NR zV_=$v_Bhr3n<5jJafPmyW#wYvmv>0Eavh3K=dPP|i$@g`B7xv&L<_&x(kl*t3NxMvZgpXO^YR!)OQcF41 zGYs2FI)o@P3%XSdw`E}`+w5rFvyrq{r)6cMKbm30QcT)CyTwov(xy<`FN5|DS2I!9 zm29#`7oDK2OC{7)t(*8vFZ6O&u@rebMJ?lk%n!z4?QCBlGwW9aTU~VGp598eKH`L~ z6P{Z1c;}6~G7J?Jkk-|tZ$UOnvWFCQ!GP%L(H95r)eipcfyuRQex2reitkK*^k?kN zKSIv~j#Ajq=Wb#^g&g2h7B2Y@a>V!2Njk)p+)h#y-UB$*a)B+f7V1@qPohV${`k)a<}OXX#gb&;bqq z1)nr7&qr<*{9zGX2yUfrX9OgF842S4a(voPwBVEE2C}qq zhvx=7F$?2QUVMGWjt#NJu4D-f5hX0+K0!KjL)!f&s>y4uf&J6^b1WHe1_bQIzE(g7 zsQ};$s^Ck`-bF9I!cp9dojj6QZ8&U GfWHBg$(F?c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/AttributeEdit.class b/eclipse-build/org/rapla/gui/internal/edit/AttributeEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..ae46e2c009aa21f82ad28816430a39509c5bd529 GIT binary patch literal 7171 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategoryDetail.class b/eclipse-build/org/rapla/gui/internal/edit/CategoryDetail.class new file mode 100644 index 0000000000000000000000000000000000000000..13644ad88bde0b4b6a0d2c4c6b80c71a1410cc83 GIT binary patch literal 4912 zcma)9349dg75{&eO=ejJ2uVN$F*L-GY>p-25J|+4geVw}AA#6NugPW-7B)L!b`}CX zZ0&u~*4DPR)E>6Ach!;&7!g_&t*tGBg7rS|s@mGao*w;wGn3s33E0gq`(5vS@BQEP zy}jp+TW<$Yhc{Iy0%6nYjaYhrT#xjoVv$(FHmrmmj~LxCJJPJ%Mz3k@Y%y#-7FQ7v zs6HG0@~)(9=}~(HnOkEtrwV((EE%wy=xp2XO|?wt;SA|A`~^_rsXZBIE&`ZrkOOXCOaW8 zZM2N0lx>>{-k?QOmPO^7CAUDnLl)6@P+Pe}ihxu@V1C=#Y_K{Nw_|ODm(qI;#|Y%i zp>_iE&dRvK7;ue7`pJ&gnH>QalVcBoyoOjJW-k-Cpxk$3k45cvnAXnl3Qy<#A0^xH8rkyJ5Dpd<_6G_DLG(KegiMhH1LU&A?=p<<3e!C3c%P>d2uF_$pQ zD>^2CdTCG*R59;#4#z1Wl%YhDg*8k-NY1J>Omt^88Z?Ad%oiveCCv3x2oaZefrd$# zEO{4cm@b7~C{UBdH8z;XIwpvzAuPsHsXdK;;s0SxHz?wCZ=~I}7|^t@RN`U{Q&FJe z5`sUQ5*e2UQ5eE9ES1d78VXSq#0n;Y<9NAwsfKAN$~*W9la-&mL;R8-6{{IZSs78Y zuis2CZj+I?zSB(EkqvrRoY^AhD%J`pn_BW3i(Kvy+R!fXZeSRdZ`#yS(IFk!q2UU= zor#t-Y?o7DR(Uo9+`ZL$f-!9oau8PvsI^tKRq?7GdBHn0yc6$Y1nAw}0u3Ik-%i=f znnyIQuNZGLi1+aB1-!dQ-n|%I8lvE>TCc(6^w0{-EO*&QD$AV< z?pxsAw+vlDY;}$oxyOCZ@gjMw!eoJvapxp{lWBDutR&KuAtX=|1S>;cGp%h{61FX2 zrvxf|w#usE3zoHATa2ho#vpbuwN~g!`i3Rp97mSVPEDy;oH9dyrqV$E=lH3iI3;B z7iHufV$}D<;(X&p3(G{m#fMb0jBP0+X}6luR8sovCJjH6@5n^@QT7m*8#}2`p!`bd zj56%iFo;|Dobk9LmW)yL5QeZ<#Xf=Qevf8rf%Ms4Mv?4i-0K8OSCA>yArpWt$Ecw4 z;-3^!hD$Lj+D8(EX3aC5q?XpqCRyeJwNLMFwah*hcd(Xb&X2*9k7)Q6 z4$6Q#G7*RIYYq3{Hv*HW=JG_sv~}rqfhFT)kx%x>i!^pCgnRLO6~7ZG&1xc@Ynx_# zD?2@}Wr(wHVpFE!DDGny;uKu&wVKvt#sHbekw2=2leS(yUdJ^|LB7QEfQH*~Fo=@^ zkiPhXhKKMlq0zogdUR{AWu|0-DD(xg+i%Ip4Mx2VRA9C*#Kzc=ueaMFc`oyN#Ip)T zw%ZiATJQJbJ(nKZU`q2pt>H=6{7*}rpVe?14utSLcB^<{R1J0AE6eMP8eWq1DZn?b?Z9=GXm>7bDe2k`TF+GK>qk=l1z2Tf^wRlC+F=$ zSf9p5d3Ql4zbn$%bcM5eH@_Rw&@&qbH!3r$Uap$bh-EgmaHBf2igUHlTP++$f)?m^ zhOIBp21@g?5U#PO>fTfMO^TyPy(()hYmWf*%p!$Y_}jc?z~5K!>wqH5aAt_v(oqlM;Q&Ara7(lwxplE ztvZhTv!Z6oY*KO%R01eeaxqKELz$wYMhQBir@PmWfMZd=6~m6=Y|}j@BF-AfrNq*k zsEzBZJZ?jo=tGd3LBNvhF;{uaia4EfvX4{AaPooiI2SpRXs9e2S7g3VbCJ?v&Q#cvn?Hi`b95bFilR2&RXt_u;pLIL6af zX4?HXVyc`LoZvhx+=Dvq982RtsauW{x;3m^PzsT&6k(Dw4bznAC|3AWTA6`LoOSDc^GnWIUd2IL{W@dJch?9;|WUApuCR7Dh{i-Y7(*X zp&NrV?ICUSBYnz4dP)LGwYJ1 jlo|w-h%W?2qK@SF5B}@0zD8yRuj37l^5@qcj{N)&rtAiS literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI$1.class b/eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..474fe5ab3306f2c21a7dbaeba73b5ea699256a52 GIT binary patch literal 1960 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 Wh~Z6g6T@4$Liac+(*Hh+8~*_8uGg&q literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI.class b/eclipse-build/org/rapla/gui/internal/edit/CategoryEditUI.class new file mode 100644 index 0000000000000000000000000000000000000000..6084376148711dd412e48fd0dd728ad7912e71af GIT binary patch literal 13289 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 OV|&qrVhf(ji2e^@QI8}5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategoryListField.class b/eclipse-build/org/rapla/gui/internal/edit/CategoryListField.class new file mode 100644 index 0000000000000000000000000000000000000000..ab396483b1dbf24dc7d96dee16775e496a7e0737 GIT binary patch literal 1294 zcmbVLT~8B16g|_gk+R5_MHVOm3buu^f(lB}2Z_Wc6%$Kp)Te1X)PZG}Y^RFv{t=&i zHc^P0@B{oWzWONMEw)#&Gp_ER9&wtX;(QS4AbWwX+s$d&vkVx1VggWIVT;hw3799h8#m| zRXIxEXV^>ykXxSEm2X^c$9n3MTyu%wzRnf4#cN^N!l_wB?J1|03!FI{JzZjmKisd# zJ*`})&e6><)uD4LNgK!zS#zs0jxa77;OJ#o{x5RrQWqHd4MY*^#vl?Lml#Gn49-wC zFoeqtJvG@XA(e|^B9(r5u2K$@p|4q;hE}#!k`?WGaSUVBS1`s9PMxqBH*f_L484x4 zUr_~%(k85|G7Oxpt{-5^z*StM0HR8uL@I!KQr@Psx%7)T$(%889Vv#cy3{A>JLmwX zoZpn*f^y_WW4A25O;NU`pWLkoyCgj2|NmKx5JOUL1*HFjTggP*hfVjQU9O-s2BzrEQv-`yRCXSVy`~b5JJiEY+yBmnW2M!@ zfWtW!$izjr;Z@|i@=G<;x?Jr`H}5wdlhlMT-El@Q8Ll~F)cgwwp^N?^v=fIxv!8_H zH0Cq2bBE~3WIv-X`vn6GE0J#)etw9Nm8cobd_wX7lh49Su@C4sqh=%#Tl5#+#aJR{ zMvmSe|Hzop15AIUU}2=`o1qkdN$E$>jWIHPlD^}ZA=k}e0?RZ$AgYfrMOe_-B!XGm z^`AVlm~TqR!y-Q2zyb*wBh(^plFT&ax`o@czeLC+LdO({b1;r&j=LO# S9663*DoPK9T_sQm_kIIDXHIhf literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$1.class b/eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0c990175769aaa0d3b7b961ed3e9a5059ff2ce96 GIT binary patch literal 1120 zcmb_b+iuf95IviOrg04k36w%xTEIY(mYTq0011T_0pTLG%KOINI$Js3%HAaK5xgLN z1Su7W2R?w0Ld-g8RaK}`BrL6GFEeLm=bZih=jSf~kFb?ThM}S2z>WD~$lYKdT^VT+ zM?7?eFSXm^S_CTov@1g4=^ZIT-)ZELV<;W)A$LO_1@8Oq0UhQs$FQ32@{xAMP(<2& z?rEu_woJ5$M9eU!dopnzQr7m2X`2l5LmoOh7J{MDHipna3)F zJ7dRftYMu}`eL6CLVYX+BKcJ5ltgMNk`tvgElPOX#vM4s823DpBu<0D|1XrBn>po+ z#{tP}<-DdaSi5Qvdtyf#mX?lhc1q-1MqYIH?Z^vNLK=H3bWiy5fYDuXI&WOKxI9S>+`(U~cLzQ1`1DBl18 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$2.class b/eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$2.class new file mode 100644 index 0000000000000000000000000000000000000000..3c36092f68c338999c9902bf4383862a1e4d55a0 GIT binary patch literal 1054 zcmb_bU279T6g`u~rrmDMnrf}KwN+P5qPR9bRt1TvD5(l9d7tc#n<<-}GCN81&-fz# z0HH_e7@BJY#rS zn;HHbzR?RvUdvJx;no|U2Bq#IUvF6cX<-zz;35yNIJXC9o@ylwU0sdpW$<3<@948e?w zyV%4Qsm{YtWSPIs5d9Zf|GGF)ltzl|)MrGPH0L@di>&|aVhql{8tPE&N~`qhIYxbG zEkcsD(=bsP`D9O+zKUGjLygL_z8b%fJW(;j+C;=tKeg20NTm}28QfPXnYWejEE5^F z$O1(g7f|p#>j}WCT1U{ED$rPjOQ%aTdrIpf#Y*G;2`)AsoWN^*L-lK(c!mB>UO-&% z2`jX=g_Mq~Sf$8t4cDhoZ3433OO0bfI)=x-W9=-^X9D<=1FcMwr$AJOo47?#McgKk V0({(|SR!lOMV)32o!Qp({Q*iC6%+sf literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$3.class b/eclipse-build/org/rapla/gui/internal/edit/CategorySelectField$3.class new file mode 100644 index 0000000000000000000000000000000000000000..d8bcbe61b690d8815906d89c22ae41bbb997aa7f GIT binary patch literal 1690 zcmb7ET~ixX7=8{(S=cT%rl|d}Ew!PB0Nu7&s-{*;3K~o(0%g>@LvjpTmOaew3FuGp zPXB?9kk0hN@v0a8CdctPOX5fxWz5XxoU{9WJ@5NG=l4Hf{0iVMHXRHJ+|hB%kL6w{ z{Z>2hgUF~jlA*7ff$=NSsFseuTUViKn5964&BC06tia`Ga$oxL!1!ukMaHk|cA_3N zmD48 z*xh*#qi|hh@P>!8cvB!#v`*)0L8MmNyIU&WkXs?~=WDtl!%Z0n_S}7$wapcn>#O5b zEQLAt!rQfjT8&kbsHVWxVhXT-kc)Pv<*7{n!v?D^G?k?T*o^^+*0Pt6iL;3 z6+BG#UVr7{T}(MBvI(!u(?bcE8U;RHGdy!MP)g|_=WyMetW)3Oo!ATarF75}qcG#^_xvawT_dtH{h>$)8`)KXw|aACkjbjwnS zqFIa@p-y-|)Ro!RO$T2H_$Ps%Dh&_o*x<#IZ0m#L0TA7>G3Nt~7gueCavH ze@?C6;=h}E5h8xV1)i-peQ*(%xUxdL-HrDnv)g$0ONYo!cW{NzjSgx~EtaQ!Oyb*G*)(pHr8lfc* zJy8veSK>z0lzzV>LgAbBK!nv?+YXdm@eQphBpJrv@k4&(MXf;Ayp`R^XzrW#dxnun z=zxb6p(Bcaxv|Q?HW`LWN=AlDQ{iD#^b;ieV+;dkKZtUR3`^x6u@x!#VITwZh+#S3 zbM|b7Az4yYaRG$dg@cO@`jBzqVvM0LZv)chK#Hf$`mWF~_--f|GG*n{c$|hLzq6UN zLolrL3gRriG*X(lB;uY4y{B|tR2io7WlOlnTgDTILK?5l^_sPdvlRyuxRJsngV!U2 zE^cCqVUYX2h~h)2{0EO`hBiut2c)KLtFk9eW0Wjfh%+v-xW(W^`>M4{5>YjViS}%N z#I#vb^@ft&xo*3-gS#Xjo3wW1i-skKVZOsj$Vq}H`^7F%rwgSp%aHAIv!{7ow3I$* zV?0TxLl=jJVX|B1Z@w84;)o%4YU+R0qthJPG2B1c;*E|_oE_EFzE}^el&+m~;TG&s zGq@X43SA0$6bTYm`ph-N3~9EHE>HsF=*Iwgsn{DF8L>i+ZK{GHdNWMkGDRln=@jNZ zBVG84(c?Jg60J5H*v4gA-Pm?;1y{)b0_lo!v{koTA_z5hHT5ZymYSFXQ{R@EmpM+sP^+BB^;c({5d3tZ z_PN?b7p@_DhOm!w!Q#n`Q)w@iuG>V9n%CfN+Zi?yTuWZbL?*q&b!=OAc#(;1=;adb z(8UQs^J)3#HR>9+hHPEjp_}Y5(TD5&O?(c4`wGi-rSHCe6H!D2Q+r)2adVF~;-w7( zFA>Zux^r@r8+a*G=|pH7c$r{!k+vfC1=Ew+9TRh6bz>8AWj*auF%@dusp%p@gY;Rc zQ3liuCe7l$*Y3KBC8R@vyxWAK>YT&1+iB2EEEX&>Od1twwq%;5DWnZBwi}9qE9y!X znaE%Pqi5T--5b?Ux0rCi%o?YhoWLya$E0 zm4rfTnHq`A@JJ?2183v=hEuyn(*r3x-o=IMz1NN@csXt}@CrdwQLQr&nRq2$<>T8c zC#BXNb(5*MKT6&=;tmt9#%p}}wp#9PL1$^$R(L)r5~XZP{TS4Z2<{@R(is-6^w5p@ zO3f(Dcz!NVrv-zCv(d3zE32JRsc6-4={xJI2F#R1%_ zIp|FSLeg`?TTCQz(-dOlZ6@B1cMx6)$7cVs%}x*4j_qg)_Z7+Wa>>dAPp6$q<(Dxy z58z!U-i`ZMz6pTR$pUtspM^?v01udW4+ba)nQUWU(wEF8S@L!2eJ0+oQ|EH3m$u02 z{MD91BdaQW(8P!EVZjt%g&uYlDM82c`|UK!dBmPpA2IP!9Q0uwu)L_;_yvpjM80J| zZsHU8q^E~=fyEB#(sE+YHD_ul419{%DD&u6D{ZHuID~r*d{!{i%Nf>QH@-gO&~x3^ z{>-Qw#blMOrJg&4~WDRfZV!2jsUo!D!e8qQq4?DBr(c#|Yt&Gp0 zyp{9t%3BUkm^h|H?0DU+jy-5Qjy<4c5qyozHzl1c4R8qGF!4?N12Jz65Ijvm#Zj$` z0#~M74Wn-nYh^a@JKG4p&0T{o*$-k*vlIBPYIb=9-)Bg7GDp}>6esY6fgiF>E#|4S zD*6lCqIeQdE5{!Rt|~?GS<(9$DIan^%+%T^@Dme1#m|@`Xb`_)=uT!`JFU^apu{}( z9;y(u6!{gjeFV?2R&-lg*T6r&0KJw)@hqO!BJfKSzrw%xb*9sAwgn5z>cHgXxg&yK z)5X@vNNRrszooSkRyv{aa1#Gv;NJyv%dMS1c=+jaN0*8J#P5{MOLl@gOU-+lJ$;On z<7THfSTJ%CP%kb)RFM2ncNogc)M4PiUVu3-jpFzCABD;P3WiGcc)>6!IRq$=iN^Ed z?*RVa#2@fSMgn2fli^7)j}i9r6(}lO;4u(9XX4NJi(g~?Uc9{d3G7CvvS}C5=2Cl$ z?MYYb!AYq$C8WiyChJ-bL;a+LO)-Q$Qk~bhXx_C4x>(5ec@>XGg#!{bWr~=kOBlO; zh1W)^G~5e$U8g&ua*os)GL4PYX&0F?9fR!QxV^@Q(iI?K$hkbjPY%m%c4E}YCimD| zShJ#1FEdR!PdQB`CpL|a-wQ-#mRw*+1Ep6H{3EG9Wy);1kbt&t8MRVu-6rk4b~5N> zt_c^T`Zmv$`D(xV!K7n*@t1Zxck`HQGf##`EQjGQm{n$zl177T27+#6-kA`?grU}C zJ}u|Aor64%*NkX2qv6VDy&A{qXtq#$X#Mgv#j?bOQ-h?Ozk!%pzP4~lGQ}Pqarfs} zMbh@(pkWP-c)i~2GP-gc7;-6(RHYCo+C%|%nJJgc3c5(U6z>A30I<2`rN5jn3y!o0 z1t;$Hk?S1C+OI(sm6a^xvQl`2{H9#U{#4eOvR1D2o7t^_r!FeXoRuxAa#(Llr)*%% zxfzeWBBiM`Sp{9Ef^d^5SIO0^6Ml^=;*j_X%4i|;d5)Zfk9WFB1Q%l5%roo+_2{^1 z#JP5J#WqQs$nueSrMazAJKf17n?k?|E|?I|MMrVVh?Pj#+3dolg1%DDXO}fkm(0sA zZz7?^-(hcXIcD(P^cP?z&f^z*KFlK12EK>*bpe#k4hj+Cvo_Y;(kf%P@F9Lw zL0Lul1Xfa(c8^`mUl_1cX)nS&Z;M)LwZL0l>*-MKZ8mq}W}+Nw$a6T>Jcf&7<5=AP zFdE0uav0NNp~HylueMl2=opO9L4>Mxs3nI>W37j=LKPiHdw*;U9XYJg&zc<8>oZor zF^8*i*zA97$zf{_+sWuKu2+SsJ%ujkg%xlGMQGyp5?W&^=3q6Nv4(GJd5Lu;?{(Ip z8|%@JP7LxZg^ix_%YDHM$`2QmA1)|A94Jo(^@4=T?&N-#q3RSaL5%@1@L~fu7`T!D z^h-{0zG9+^6Y5(FyZC#euiFlh#&?kK>#j+CoxngqyoRgQk>S{E8h4_5d#KkIkHdNX zs)B}Lz1|}aflW(P3Nkbibh{=Iq+UW$%J<2XdZPp=9!gvRk1zCM)0!{f;Hw~pb_RW%JY;~4LsE-lmXwJ|)F!_oZ6o2N_2 z8~JKOsG+9*cn)7D%lLh0AIFLQSp7fJL}U2QsxYU+_21)kLs)s$4b;u>=zgHzPxi;S z(Nj76n8a-bVzqCP_@7Qg{H#a(b0yB<7tK_m<}uvRUmdIeSJLL--gP8p8UOlk@M#)L26}Cv##sxu}SPkJ9ttm01M)>Fbv>Exv-GeH*cGJM-Qh zOa-rIfV>9R<4z*^F3!G|zwgF9bnyecJ9&_AkKm0wX5WXebL1)BvOJ6T;&*r-PT><$ z&AW;a4oMAf8Vr0|=5TC2FBanXf~>$}(t*ciJrC_0aa1-hf1rr3u(zyTFW86yC2z lC-Ox6Q|@*ytCAhk$L9k2>PbHJ=UM;3v$g-zPKB<6{1whJ??30K`1=oGh7W@GRQ4Z;_AgSmni<3^kn#);Yt271ce$ys;ugw9}EK~ z4D_XuM8-rvvJA<*K9H$OPrTW4w}ro@ug)-3RW^5O+>fM)!IZuV!|EmK$Su-UGCb1e zo$wpVcSW6HGG9GYzKWKzRH&tK8>0s9Ff3hMJQHIWXE0peUh|d9uyU?~wsKwNozecd zhPx&vwOoS@>Bq(>x5x;ht}DD}Vj43HW>bV^<+hba)iaFd3(@Tkte_*wG_OzgN;>Mk zi3fN{O$l16Q#r6jTN{UAF4iP6+6i9j3Du)1)C?3DrhD2neC~>l@^`HbZSj+EG6DCS zW3b8r5(~C>t%PY1E@_T|0|Ea zxG1j(Fhzb((t8Cgo7J|be?WrXexwP#Mzg21)=0WI`x9pI7p@;gX9hJE?da%_7^1aF zF&Z7l4H_A4VkBnyKv|N6%@lvYWXHIr$74)BrA1 z_yIon0}A?+#5&Q?cFyltrw${0JeD>lS%zvhhcFzT#w9k`ZtuIj9%u{MW;8KJD^$=CeMrfcZ zP;L8w*;pHTJKh^mvF+6h%*T16vc4)xH>P0COA&Z{j(4=WEG4o|Ihq)h3aqx{f7#db zR&K2ILtMwr05=4>XE!gxl9xEQql;-jf0Y(2arr;h1;VX-TqK^$;Y)uXkB43YJJ>Tx zmRlZ!H{?cn8etXp1nQRD_VGTkYwPXzzxl@Uw9{l|dTi95P8ypI^H?Yd<0z|Xv`^a-$;nhIM=tbT=<+De^&V!GLI-ha*q>P#KSb5{wr zYHK%bt6*JFD=u9GWdH++8!olBRIOE8tM*x6+t=6Ud-iE9V*lsfJ6i~apYZ$5z4yD{ zcfPa!&pF@C3kM(D1E5acG2ju@#S_bG6XEV?xORC@q&5;uS&3LUT5EMiQniiIa55QL z76~tnT5}>%zG~vI0iR$@;kt!N;jHuKHpaWU<1s77Nq)ho%fhR}wc$0XT5C1OYG-z& zBJo&rB$={eR>D9)aC{-1R6HJC$(?O_=SMo1TPcCj5hq(Q-jy~h#kIA`HIdlz+Ib7Y zF)P|22qrrc@n}>Z1?7cv+On^7V#f-rW96*)S}Q3y=Ay!xjqW?0w=65IVCqH9g-rIZ zq>iu(rwSs0qSU%>-D6VzT8a=!MXY3P=ek(9E7GBJYG*t5i+Im<10%_WRx;j`=&r~8dJ>)%51i4ds2~T?aV|XyiSL?wj^OCt<qXc7fy6LklJ5k_k zjCWc=cyXMGavU$1a1`5BEjBPtF!WH92Qd~Cl+pJ}On02W^fId>)llUOsn^@H8kE~pOq`0-1OwDU*$v66OCUE}rKVv< z;_)L+_{cIW|$~}X<(MCLOTv;N4l(7lEw>SCT1(0COT`S zu2ITonK&DB1%t`vf`qlqN+hh#w#elSs}XsdWvMhcTb*NK7)pa^!F&U)WGtWgS@A@t zm6#LmNW~NDOf0~;f*~CVE1a^Ly1G;AocBZmazQ={Vsfdyw$_Rlq&eOZjxG)-Y;1D}eW?`@#_UOXk#Mw_NQ*fr zwUz-oHjhA`n8<{ZV7Pjbi?0rJEQ+L*wUDc5+o#%62_l{AQyBs0Wl^@lz$JYnq&d9Q ziUzR+VKwhkI&*&nY3?QHG+|*GStl=Z800ieWuE)$5S6|Hml=rAckQrJPt_MDRw7C` zplu_oEob%6O4ok2uer;YAZ8+tZf--HWhUl=#Ga;J&v>%EzBW(tSv`>`cL*|YxnmDj z)AD52QHzaQHdA>kGVzx`6vSFwZh&w)xbJimSKvyrwmKZ`vF1}31j5{$!jLW`xeDO` zzC?ts4`LOrG4W-5g@79F?zUo`#F>0L1!n9=K5BUtt~GHTzDj&a#WV7iX3SBz^%C4* z;%jPKRp}yPGo7HL(3zM|)Xj6UxIAcXavZHsGPV7Nemo@H+1a>)fMzK?YNEE`S_x$w z(8=b7lL!Thu{W8x8Q&!=lS&`g%P5l>EfCF;9$OIb{ZeM$Pgq^?)mGt-y4?m78+ALs zGl3FoSQT*3h@MbcRhaAh-NwKjg5!=Pr|x=}iA}hh+E2yp1kCJH>1^QGHX~_2V+QVJ zZaxZbXozKzgj;qw5-~wlVY7+*@c>h5(uQTGzqtk;a%-*r4Ai8hR}c^4$BG9(IgC+g zJi)^zZo>~sa67h|cm$8K^hlNdM{!{UsK(0)Sn5vHX9Z7Jr?mTcgcJHb3N8a42aU}BCW4eGQPNe0@wcu%U<_Jn5p zK8Uw5LFxR5iTChFr$%sI2}Zhbtm(@cbBj8XBK@Zn{%qne_%C{XB$l)iTIlt3 zv7Ba&G@CPLjCW@GAO9ccMwk4riT~3j#m%Z3?OuiwN8<}6 zLLG)oJv<~9ctl}eKYnUZrpSpZ?n#1E@;kJ{J5?bG8~^vqG*eDduhvqc(53w|20I21 z2%*FqstfsNkrIj%p+tvMthLN~_Fw;N7jlwSTM11FXZ;>Oma9ar}{mrnJc-wiC*owI=IV zf@9q}En}O!3SAd2HsyR>ID`uq_C&2@cBvulpU+lxLAgLqRN@z#_!hoR(Nk)R4Bq9- z^>0y=W*E-Ov2QP8myg~=d<_9Ub7;c)ydZ67L5wtf>R5s)dFnj8)8vqdD|yxu>&zsR z4f$SoB)DlfVzw!4u$)cUARGbF`dw8bE95dmE0GgF$8u9v3cDqR1I?90>;lg_qNG8I zNx+bJK?mbt79gnF3SA4DHfH+eJ~g7Ou)){ylXGv&^plBQfIZ0`Kwq_$Psll0RaxXrh{ zOs6%J$PMy!L%zn7LA#U7zA@!S`G%4s!ba&?nX@2!0*e;6(ru`^Fd*NeUYVQhQ^kOM zhpW1+L^2*LW{$tvl<#6Fp=ow|>&%w9jf>hBG+i=t;li2i+!}WoTA7L5YT|Xgp?4ci zxlMjRPwonL&q>6)1ScQS@Q0it)95Vd>CAq|2kF9E?Ne(`hR#Y!`R|r{4Y`NNk~3+) z-gU?(ruJIbpJMXX|m;U)FAy1!2XCk71NoVf-o4%As;^>(t z75Y)s?YazMC~Fhvs5PnDdCHWhRrh*!l+pGeo=CDhU0@}a#S>lHGL6YA8l4jYr+9H% zQmROvlNStmp84JmM(rgInPq9$g2_2r&YTXbp~p&Ee|9R#H%$Cc zZCjC>e27RilgC=iYAMe;eQKrLrj*8!n|fwa8kuqRoTum~lF6z-N;o&h^Cf$VmBjIE zOT6%)2>dj}GLh%`cCpA~Z2QV~%D%F1v9D|!?JLio?JLjq?JK)yUI&s|IgTa0k$m#; zsRE;U_agk<1z1{LvmIlqdoi|sJH~IrMBY~Mwq_eb)sJH0(8)V6C5>quu5Z_Y!NUiS z-j36^VLG3t_hM%I5Krq68MqydY0Rmv*oJvJEx>;}(45A?E!@R}#r&8oUQy;#yt;Vx|nh0^HorLjDXu23&lwO7}qk=%hb+i}&PX%TSk-S$y`8PLK)-am(+VpVLLq ze$&a7mQ8uMGc!v$i0|S1q$9ZHu=H*{gx(6$iyVO-&$e9tPUD`c#X-uScQ4l1byfjqq*h#e?nD+wr63>NI}Z;yrUS28Bk| z)$GI;57v8SRA|qp&pzOUZK@Hk?HwnOcklo>hy*{`Bx%7`-=4DV+6=vKeX$uOM0ryf{> zt9SzQMS8{6IE_c*IWMkvc`iXMevQ}2!&t`YZ)`7CPA8-207e>kyh%Qzb9)U4ALs`L z_J79r*#Qp+MD53t#FjTNx_ynr4r3pR@dy=jgPkBL;L2yHXM{z z?=+uxTG3|D={03Vb;ATZ#p6M}zuZ45EyhN?7b^3WN-&KN*88N~-)cXad{nNg%l&B? zs1Z6$1~WLzd}$dvOv)Id_N~ULj3_JGhzp2E``fFB$+3*&tx~aF#%#k&r128R#-?R_ zS}JXd9C7G{a`YyKc_nEWm#29EIMhexvY7+EKuScsjCmzs{?5{H(ygW0Y~AP z_vhtrP~>djh;KjSCikN&BY(R6;7l(M^vVUQ{|nP{(RyFe`XVVSs@b#Y)2DJ#^)9~} z1J^RPu44xIDr4n(#`z5x&#ylrBJfGX;M0k}jYQzHc?__S*Cn_K%lQ$en>d;vlJ*cs zufVNbwSjLo@`V33+(9JV#AE&kdG`wLWF&3Ef8%Z*blf9j_=RFJw#Za$m3llPXYf0~ z9Bh+SNK1-NeH9*)>(MJW^O)=o?3M?xM;>ROKF5>zSMh|ri6`Y9JSFerX-^Q(cq*{Z zGXc+fn(&+_f#*G&@Pg+j*zehbTRgpZ*+z(En&~~eGC6>En%h}9dG41l$Pz|*6A{iq zwS;G$Ttd0M=<%E-mlElGSnFxD-xlEpPoB2G)ukz*b)WiKb6vI{z+))w>IlH*j;s_;HE`<%IH`vYe-RY3U*k^6}ve zsJ}0oJ{&}M(C{_dP4Vq@;@oT8_l-ORAD5Apf8x+h-D)-(CkaV%I}gU>A$S1Z11OTA zL_A4J58oEnGw*UwWiV3H;ubKiblZ6wQ9g&`JRWi{eD_*sSc%OL(V;&#Pt?gdYcA(hemss3F|$afj_d0`A>A<&-{A) zmpri}S+OH>yPX6)SWY*3jWmM%mVKw(MRC+jC6G@skr}{XA1c~(_LW?=ajLc6qSAhzm#O7XB!+@W(t8@o$FT zH_cyO^el#y`I!>SeLIC;&+3b~fEl5@Xdet8^B@sPQRtu!rDdy|CEjF~xS7M#)3VLE z>?ln7^X%gFZ#3NpO!R-pIDCvs{DaB<6DH0B)Zsx~z%+M}_+ar|o##KehNtK^a^9^> zFSd(_hqC&8NP1-#-D)Jfu3L@6_3qsS78y=3O~J*oo9^f1o^5i6 z?4iq^#}$v$ZT&1Yr@D7)kvSMp+GNOHx}%R5{?bC@4e=VXqDg!Q7&b#&4Sb}@+R*GR zcXJvqI)N<&U&+TTe?^{<`}!J_P~^nfX|5ADd(YU6V^y&g%n47nPTI#}WRjMW>pfDT z@pkYW7uvQi9?GK`Sn7%3z8cSog|B**5t<7uwC0u=O4b`NY` zXb4q}hu`3Wwn8%Q==~G}3{=T54a8?;pMwvqPQ3gNtWWB`{-iIm9Lt1{m zAtMM!-mD;k(2wXUn=wG;sHhY58%HXwE_U-pOLd6R`^&Vv%qbJo@|tt`4F_M}Vxz@5 z>=r7xb+*4Cau>;QJj^*Bqh&1rQfWMIEC0y_&h=l@fEaZE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$1.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$1.class new file mode 100644 index 0000000000000000000000000000000000000000..af924ac27a950d1c22e806378961fbb3e973d4eb GIT binary patch literal 1353 zcmb7EOH&g;5dH=d0?A?^7+-)vjYvXddH6tMafwid3Rq<@2QJpI8N=Z2Y-)GH-0Sjl2DZvDSaOxGxzaUmw?ve{1rKBB)7#R|&JxJVIr+{(StQ?QQc1nU zusn59=gJP>xFfhW9p8CH_vLcmOZ#i4S z+u&QaU`T}lYn<9Zaz_~n%4C?oAkOR@m6^zL<*Eb6ZTZxv)W0|w#u`GOokhuYnywN` zGc2{i@0Uua>1v3gtt@sRbgSYtlDh^bagQP93%w!ssj8EabX(?X z!O(IBZeWz=X;YyLBVkd0SI-dL4XAk9(C$Xir6fY{6L-rDap_luO$`!tQfx997E%5M z_g7r2MME8|YHqz-j<5joiSz<*7Y#2S+uYe4sqSXs_Y$o6zLvmSJw(CjoC_glcqnbH#HVhQ)4X(=4Ty!Z+&&iaXNM2TgHif7=;CG8<*3gcqh4J|?Jzy|i*Y z)R`#yNQ#A0|IkoC_3#X$`XJq0BB?}{fqf!B{SC={;TXeTLZi#{j?*P=FQRM@X*yjA zA(`|d zNRmQ?a=fQs(FY8(kF cGq4f5en7__Jj5gVM#$hXp3*5`TM&+(KX=<&ZU6uP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$2.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$2.class new file mode 100644 index 0000000000000000000000000000000000000000..25fe57f9884307ca2176706e22055b5b9417caed GIT binary patch literal 875 zcmb7C+invv5Is&pm!yWK;ZmSLX$i0mQeA}?L=X~0K?({NQPg*5*G*k*Y~=N}`7KZi z5)XU;AB7mFK_J9SELk2O&zu>bnIAvDeFxCSc7zhcu5}~fPRhQ=TCePN6oW{P3SAL_ihOPL0X zrRq@ZQ*E?=#_%X!G2Zxn`HtJ0=9xC_YtlGxF zCNkTXPKWy(tb{Kxv=^+Q*`_a)U16$N!}SQ)7wo{h�&lWCG zFLh|%`tJz{Y7j)j5vE`#P?LN;lVmoh0$wYBXj6{+ctEgB!nnLs?!daSN*OldS+zo* zc%hD!@#6W+r5Ef@$jbZ1C^yTdaw?I8qkRsnUJtFKfi2OlqDJU4S&!)+kXq~EDR}EE zE`FN%tOjiMLecCq8g%Cr6VOYzOeYD0`kdtnd4@OMnu1Spwe$ry|KVX%EVI+Uc=(*B Yj4g^R;VznVR;b1I5R(-u44kxn0Yh@zO#lD@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleComponent$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleComponent$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..914c774ffebfea2f2d36dd005c4552dee70bc55b GIT binary patch literal 1645 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$1.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a30e47f676bdf5683014663cda17ca9cd1149fdd GIT binary patch literal 1213 zcmbVLU279T6g{(v-DbPmG-|C@ZLF&%DRhkwQd|)vL=d8dR`NdCohB2uvt@U-wU53C z`fmik@WCJ8j}q@}q7*?SSy*P~?7e62oO|w%pWnU%cz`V%7Q;@G4*irL#oQm}(w9n$ zRPopsk<@-C=2<2WWXQElRF@!cFOS7ua^kgZlo_gHe$4%ttD(O;7>iKbSYW6d^tGRz zNW#UjP{cH%7}1lN7D}WH3wk6ouTB5&%~wD`9FL`v`UykOn3ts4XDD})NL0XZ-i3`t z2PG`KsG!PFYM6lKo>byxemD^6D?W$?L#>yDJnr*Un)4Jan=3IqnzI(KO;>U=&9#__ z6)|i!djFELYh(?YeFtl}X5%Wu!})}Cv5xBui#!ZPmU;IX#`DWL(R6LV0nf8xpj2g7@AKe(7{UlFAlS|?2zm0C%IiWLV-!|e?|GO%TlZ?## zLg-Nv8FMrk-pndfa7G z`Q^EyaVn}8H;IOcvdk-k(~ zq>9JB7)b56VxDF4NQPX?M70U>4kxiVOisO~jUq#N#80>%a~1gq{gDW@jU|R^j`CCO zixZ)=zpur(BQq_ONEw#&P-fmEy1KL2-2rhtl}hSo3_)#Cl6sG!*h&VX1cr+)Y%Dt{ zVAVwlWrjk{99Zp0C0~eJPbvac@G&zi>o>3(*p-Lv2EiP z!|r_9ySQ!Yvvwp?@j}LA*FSm{c^c6xHvg|0gVRkWX=oy;nAP6~H?^FS8I$iC)v5Sx z6~;*>RrFHmVKOkzs4={mSES&aHdH#PrO5ojnc`y^>a%0vKi4{y{fQRAH1oWlx`e6d zJTmPtsyu_cuc(*u>;)Omo^>U*$;$;A7r@G8V`=Jii$)0!p)0i7qrE|##?B|WjW4+L zAwRQbu>222TW?XJy-P6$y^Jd~GhD^`jHN}hVOeQ>g!>iOK4a@I8tWY#>wQkMK0P|4 kp&;DBT_PyJBMJ-maG&NP+4%wLw5kxcLH20S+9W{VFUR;#yZ`_I literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$MyMappingDelegate.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow$MyMappingDelegate.class new file mode 100644 index 0000000000000000000000000000000000000000..158cee4b9740f3dd8e0d736ba06c6bf78ab9d7cb GIT binary patch literal 1631 zcmbtUYflqV5Ixf^EG$5c*3>i zt_tl{SG3z|PdOq~zPH9lg{_V&xBP>`#`_J?YALVrRJyVuLTMsN$nA@_!ght%uwT{p zr4yPMCd|df_ydNJ(xKOtbax4MHO}=(y&VR^2{p0Ep+XoAU#oWEHeor|_2fU(7%R$C z;bX#n@n1n={RVlLYJ}vfzbjK9WG$qSPQ$>sg;C@QMzK`WHt!5VXJhW5IZF&i@66ip62Su9oiW#0}17DXkE zi@0p!5@9K>f+q*Ja0OQhBf@cHyIolPpJJ3wnE+;g4cAQ+2)E+c57g1Z4a^WM&P}98 zouD*|D4Qq|7UHl5Ghty4^Zg94q-&>@V`Z=~f2kG0Y>L);;5P|V#ot`IEnLy!Os~Cj zWJ^zhwh5*(+y9rnfdBHq58l{YdW;+!63ExW>}#Wk$0Fi*JA9em_B(+i*Oiv=%&!z^ z1@jRPBHh>v+Mjd!-1B4*nMl^O*_%Uz@qtOi%HfvbX9x+NblfpOE~k5ncS(LmVe#!4 zuU@i+!QX6o?hu*s7v#$GhnV=tM+r>vJEO0SQKSqD8Dk97d^R1yW^o2*dB@H;#~~67 zc^)%8;FV|(>g@*M-RcMvIPV5zqL$>`b_K8nDS&umrj+mhd3ro8Ue#Vwu;(tB1f(wK}Pr literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit$RuleRow.class new file mode 100644 index 0000000000000000000000000000000000000000..02ea6d0847c74386b7450509e5705cbadadb701d GIT binary patch literal 6722 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 Ah5!Hn literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..56541c548832f77ae63f64b84763d855c2212d0e GIT binary patch literal 9052 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEditUI$MyMappingDelegate.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEditUI$MyMappingDelegate.class new file mode 100644 index 0000000000000000000000000000000000000000..124a5f32dafabcf6d73e6df82556881d89be46f7 GIT binary patch literal 1726 zcmcIkYfsZq7=F$+D3l5VWC~tDK;6crFt0cSkxN1xm-QgDzX8Z#O+kd=x#N~~msc&WmuseO+P-jYZt0?E z`ue)XJFC-nAL+ep+NQt4P)z>0 zdqk;#h`{h3^7ELsl3!&)}Ww=EOMqTc59V_aQAt^5)4B* z$KY0;yQaLK3u7{WhK-J7+GQW^Ce@>>!mIlZ!$>lBv8!3hU)}s*h^ib3Pr(g_$!5Ds zF0Y99j(eoPk~7sXR56ZQ3MLrln#SRQ3)M@*B&Ha&vZ(iZm%>wZlBpJEd%jE4n3WK> zHQd2nh90udbE_7ztX}n8h3+aKjK@FmrGJW@?&+J*VH2&^bw2 zYDR4s3ac0t%1{ z!!pJQ&ujEo-E(TLA+}7p9HZ?zHZN;UGqi2n!VL@r?aE;2KZXffyeK_gh|nLB_78~1 z<%ZHNMo%9!(q5vk7i1Bob09r)g8uXu#M84U82(J62uA4LAE-Gw7wFqSf@Fyx>;SId zD&5FAfQV4YQH+u98p&dGyB9ArBfvajHc}w@Ds27zA69! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationEditUI.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationEditUI.class new file mode 100644 index 0000000000000000000000000000000000000000..fd2027ce255c98df94210e6152524171b2f1e70e GIT binary patch literal 5900 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/ClassificationField.class b/eclipse-build/org/rapla/gui/internal/edit/ClassificationField.class new file mode 100644 index 0000000000000000000000000000000000000000..c1baaa960cc8c29a20ab2ce12786d70a88e0fc50 GIT binary patch literal 5631 zcmb7H349dQ8UMdcc4v1pNQiV~2VZB#R=?U8;{i&r?ZDxAFTw{)sFeFvKv_oKd z=ke4mwM{B}X$QGaGE>R5V;L=NB)0HCfhM06>Sx%7o{cA63aL`uM=kjiB|f8rPsCrU z2t~}G3Z;uQ>H;HU*sBH3Z1Bk&w6wH7Vp_Z6n`H#sqzgywRg3!sqV1yzeOUT9t6-ME z!lEzAxTXjNs@u$@9z_*mD(Y~ug3|=*j*dnYb1+X*oGwt+u(&S*f%z&FgcU3lIJBE2xU}ZIo+^RWxD=&D70t*^C__w$OS_2Mm+$C8h zO<$qn9Goij(thRR; zS%GD~AfL#GPL2^afoz&#_A!>lxquGlnvq?TG84O;=xwELMz)|vuW_}W6bPoZ;VovF zmp2aVWb)C=3f2fLDMq@8(d$zQS{_1xVWUk99Ozq znQG9A4Js}{C*#Vf6wY>cSqc0}^AhAaNLqky6&oeSYaDMBlos?$oezAT+C*r=OMN%K z&Aw0^_e@F7_$fSPon@va#QIcRCQpu7dfMErx296k#C{c9aXC$-3(HMhMpwSXh`3%^ zB@^xn71L2G!}A&y+i{T#YS$vUKcHd;*eD2z(HQ9-j0^;$^3Wp@kv}R=DoAs=2?RFZGiZn7T5nK9u+NoG2yNkl37>1?bDuKBb zgiq0_$b!u$q+gZOQp~`T`r?In@zyYQ6Ao5Ul?XSM=Mo#A7u+cM5Iq<^i7*Wp5e zu#xT2t*n^|;~Jhk?7i>d4o@(1R>CQOZ&LAQT+2mzbyH5acvh)L2epKj)Z@-xmzm5F zO*Ob4Z&7eViP1;XskjkuW&TsLuZz+8)=Jg&@=A_ARwt~%dfcqyZMcQVrhFF)ODjX+ zSVANO->zaBPEv3iW8$yr8wxEyioJM;>_+btnALFk(V6KssCTJ|AS#LPQ1KoK_35k> z?m(d@J8V6z;4Xm`MUa#f-h`P>o0+(5K1n&XwCSnTWI(A}*o-B+k^U9Piomu3eD-?Xs8vvcStTobl zCd-jBipTJMsrL`)9L`Lxjz3cIWBi08FagxXaW$Pw%W=2aedWD|OlK$~FgV;YGHfV=ro|d1Q11hV|IXDe?_ZAhpTWNs{EP5)PAkt( zhfc+R3PW43*OB((Srz}2tFmvD7SQJf8jIzt;?(17G*P_B)+|^(efAc{iRVN>6;+~| zMJ1z;l#e^xU-m?IqUKe40&AuaAyp_M%m8I~m?OSxQj_Od=k77J?$riPWQQCwd|1q3d@h5VIjG&$dtSbZbwU$83Lr%Dg3q(Aw2RLl@=Ib_nYy&=G+9*;O>Sj{XDhK|!pe7uVC^ zi=Ct9yF#W6orfN5qT)f!#%A>L5P>a6A0HSd1!E{SNDt?6siQ?>(*#~EFph2VeEx6C zHT%t`?A+ua}!j-5Xk} z8}oQ$ta<|11<(?dA}4T@Kuf4G78=K`jQrmISnwcjAICoK?u&);c(;6+#GU=*eeVQ5 zDA>pE$>S4pnM2%ZP>824b*qQsQqVoZ_5brX3^O6r(W_j&h~&i+D6coK*E zW8vCawet_+t1XdOBo@x&NG$RozLm$LvB)GI>z^T-YLf@?cpg72EId5}PdO_;b%aLh zeomn>R#gr-Z^I(KU&3tZB#62Q#%|`(Ml5D*Rxmm%8JUY1oAr#$CiLM7UfGi9#|~^m zj$eClC8zN1xE&hq!T|2)4QUcO9>E|U;I+TjFI8 zj^KC9^boZe#qU`Q6rSIOKTw-6PhO2b;m^$aztH+xRK0-p3R)EmEBNc&DoT2i*ey#v zaUW^@sdu%bX=&7AXqPz2+5i_QS=U_o5VtH^as$?I_jZeTUKkyJO)9XAsew>X-gLn`VtrFoBt z2zfmS^1@L=8v^8RblhJ>zKBr8G_FZk*Q5G*EK~5Jg6Ez^?TcIvC?Fc1kv}tK73S#a c86W3Uswq>jzTEkHea;Vhng}6Fdq7P8KdjdU{{R30 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/DateField.class b/eclipse-build/org/rapla/gui/internal/edit/DateField.class new file mode 100644 index 0000000000000000000000000000000000000000..50953140d5ff185e89b1f9990afa2667683e2c00 GIT binary patch literal 2950 zcma)8X;Tze6g>}S7#LbaL=sWl7Z|`cs8KT-7X%YCAQ6IM)@J50wl>{kPY+=BJ-;FU zBB_dFRjf+P*ZilXa^CBno@Obcg}uCY?|J8*yY&41@9%#A7{iYlvDubn6hLC<_#;5leTn98KeY8w==!ASPguu7);PFa%mGd-E=8>%N5U+ZcsIg zmLuJg{E`cLWf*WvRLxI$|SCUz@qSwF<>|sh?;{2ic zECgOL@GABS7*!dHK25R$dj_|nm%%=Pp3R|W(T@Rj^Z|j^!J+vM0v|Ha2_u6e1dEe# z-SbP*FIZ2!T9CzI3@Fdz22S9lKnE#=TLSx{^Hm1JwJFQB%F?GuiuRC!9EJsU7k$YJ zTbCyRb8sl3|5jzQ&LOY(jvDAdwjCzryeq4u*N@i>7Wo;*WR+MfLkUjfjZ#de@%G|F zSqwD8ew;J#I?jht-L6=VYg9Egcwf=Kh{6)NJ;0mr%Yf@D`x4tI?&Lt~itJ5|+=|C>xx`A=r5a=fIhBi8!P-Kff(*?b= zV7qd|tH^Y%Xho_OcALpwyR@qpMZ-Wt32*?~H+WaYrCSTO}34XqeUl+tG7~tlF8M2x?sm z#ifw}o4iXO5&J3pdj=M8pZEj_@pnh!#%5a1HcuCsQgIVc7FbDB>kjvto&ufZ-56wi zQ+8pAu&~EozBVS*G}VP6P&80d9pAHL`%=s81~F!e77L6~9N4-Tn~WW}8L(*f#^Weav)ar+8J<92BeQDyG!M+;F*uZc zMjRu=y9NT(SZky|WBC+m6O0=uqJCb%tQuIulhFLSS941&{ak|o9nKMc7#x|8%26?C zE~?q|nSsyo1t(y&=zET%Hs`!~TMq<|^{v5Jd;7xL*zjp=$lt9cm8CeY#r_lps6n)%+rV0I0t2Qgy9A?5C7|9RHlGXh9nM8NuHZ z9KXCmeKvS)=k5-4ac3vrQhe)151;;|Pb=>Wx#4Hnog1m6FZUe%3(v6sDGug-!@=h` z%(tU;9LweE7<`HmwaWh^J*Vn8tzKH|II9*?bzD$)+Fg$B*M22<3nq9yMJm7%5ggR6h@8R{rn#bm z8RK2;wX4JHxcv*C!?WA;x~VaZ&?dr6VHR^-QT}tZR$_DwzrcG_3WO+kn-O&B-7!XR zhGL#gFzkvMcHw<|K)f^)@F6}TqQJ+DC_KUBT`^26@Qw7&C+MXkK!HzSMb4LbSD8&y z-^C`YtX|AhiAx%wFEol7r6IAT&n@FY1eN4*a3hZ^Tk^2+FmnEhGNj1kz;GRprYKQm zdh{>!|BRiZFVH_C>R74cQ$?^Xqg$a{Boe)LD=ZNSWf$z2B5B~wp CL)_v3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints$1.class b/eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8d3dacf00775f16ac030f69150eb5c13ebd45952 GIT binary patch literal 1520 zcmb7E-%k@k5dOBU9IYo*1XK{IP_!*Sj)EXkM6nd3DVl&b5%po)F6H33BX?WCzsP43 zti}i9lMnt;;%t9N35w|@o7o)*Xc%s3_FzL7@!{vJxH%evGFl{MZ zn_Gq`n$lPno4jnvv}1eH<#gvolNtgH;cdRp4U5|)<3)a36r_eWhKQ0L8s33PaqLbt|+nVDP*)Ev2DHj>0W33v;a}0sBQxrikT+*STJp?~G zbp#P+@W+%wXV$dE^YU(9xG#C$5)55gr@*ZocTIJ!3j-Z!V7-DEI37O+onKIfPi&sN#=1xjOl%fCRZHnBKrtpl$lPU?fb=*+_ z^%QHQti{vNP#EJn5*VdAdP1%_j%?f!F`Ef<=5@-lG9TA50fW$zc^z#}tv;u~)|8Vv zbSlm-V4>T3}Y|PXK>yj6CR{36)*BTx%3^XHaZr~~#3ER3;b_-&~tTxAz zl&+aCOOc^jF`-N;_ZhojIUWswRUx;WqH3@V!$@-hHeJ3e4jgyKSW|O{ri&DZit7}@ zQ=7&_+TxxkJVdBj{j@HCg~O_6X>R#w1rZ|YMcU2LSxG{P(NEA5pV9HLs&iS%syAfK zUZIQ5I@u`c6?D^|h=ktyD_=;{PqI|v2>KDORxt1#!>hH^$XErj`j%BNR^L`IIralu z-~$5w3hpYmekixS1Q+ZzI@ktv?Hi)@Tgqw?hq*&zYHX=G*r#UjcNmT}4S?&$^LxYMLrJ%C*$SlQSxnlxQyx z=~(5d?^=_2r}!;vcB-fdG)~k^$yAwE zD|}dwwV~JfWI*mn4N?-=h%I;1S5AlfJXi@W2y~XLq1oXU){@_vBuuf`$G;Wq%~;$0 zoqioRaI1=&0=vuU7vVPU2t=7*tYE7Z2WQV^cBa`|3R&b&&wgcOb!g@V#Gz zoz2~lUg$!~1Mi(4!|3xA!R>ia+*(^wFbCOWXUEE`u YGVU{JiA#RSdxbsSLbFIGinM(E0hx*U-T(jq literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints.class b/eclipse-build/org/rapla/gui/internal/edit/DefaultConstraints.class new file mode 100644 index 0000000000000000000000000000000000000000..13c59ab2df73efade905abfc1d3fe7c6ebfafef2 GIT binary patch literal 11191 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 bJj4Oga06JWc{C8fFV-}!M2kP3YqkFiMB?2+ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/DynamicTypeEditUI$1.class b/eclipse-build/org/rapla/gui/internal/edit/DynamicTypeEditUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ff697f8b996df64dbb585e812ca7392622689cf6 GIT binary patch literal 859 zcmb7CU279T6g`u~ZnCa6R*m1b))dl+j_H$75g|q>tO~Z~eX_YtrrpeznMpr>mY^s; z_yhb=;+-@PqKIT+n7L=~xgY1=A3wi+2e5@^gpz

This document is the description of the classes and interfaces used in rapla.

+

 Version @doc.version@

+

For more information contact the developers mailinglist +or take look at the documentation section on our homepage. +

+@see @doc.homepage@ +@see mailinglist + + + diff --git a/eclipse-build/org/rapla/package.html b/eclipse-build/org/rapla/package.html new file mode 100644 index 0000000..a3d2c9a --- /dev/null +++ b/eclipse-build/org/rapla/package.html @@ -0,0 +1,8 @@ + +

This package contains the classes for initializing a rapla-system. It provides +to default entry-points for starting a rapla system. That are the Main and +the MainServer classes. +@see rapla.sourceforge.net + + + diff --git a/eclipse-build/org/rapla/plugin/RaplaExtensionPoints.class b/eclipse-build/org/rapla/plugin/RaplaExtensionPoints.class new file mode 100644 index 0000000000000000000000000000000000000000..6160713c3aa58a0ea44332ab9778ac6a464fc808 GIT binary patch literal 1386 zcmaKs+iuf95Qb+9G@(!krA+8qSp7BCwK5Tj)B`4bj#4;8rKnmVp5tMx2XHQYSh$LX^6O1JNeq=70h2i{m&)h*LLYku0`A%SYPf!ZI0 zQJm>O_y5!3$y5h=e6~YreBS4e@SH#;n;a6@Prqs0SXVRB;sba$h z;fEVB*}S^z>YAr3GoRq?)F%?~c!1}Qm$%@Aqo~8T{Q!@@bl#t#mVD;(1PENfze)j0 za0%v-a!7NKM_!Ql3i6`F*N_Vm-$1@8@iKBz;#K65#A`?uiPw=gB)*M&SK@ofn-V`j hekAc@L}-{8~)-i>E}{|BKvTSNc= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/RaplaPluginMetaInfo.class b/eclipse-build/org/rapla/plugin/RaplaPluginMetaInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..61f9d49e4e74a68e86106255d6abd54fff858c6d GIT binary patch literal 273 zcmZvXF;BxV6ok(Ono>YQOl3tZEV0DOln|$il%^GJk(i>_%862pT^R?&Ut{10@S{-O zFt9M)-IJc~yYHXRF95eV4bWq_Hn!%Lwu<;xwRNNU!#>P9Kaq|yU6}xf4CfnqBd$o- ze7f4mwPU!Nh((kY>9m~X%W+neqKM*LBxU?mCL)cN`GVmh|9hM}+vxg^;q2b%S4Y}C zl4|7u#|$@~BH`H}*LcnpR5w(!?K$tf*DKcsMt$UCXpll40}@ak%g7GcX+Z Uu?&|uLf>oPQxAjgHthV#4)>x<&Hw-a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.class b/eclipse-build/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.class new file mode 100644 index 0000000000000000000000000000000000000000..e0b9e6e6a4ff75073789c71f4cef97d70476ca67 GIT binary patch literal 10307 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/AbstractRaplaSwingCalendar.class b/eclipse-build/org/rapla/plugin/abstractcalendar/AbstractRaplaSwingCalendar.class new file mode 100644 index 0000000000000000000000000000000000000000..bb2889612ffe1a8452438e4760e161b0d6a52e04 GIT binary patch literal 7700 zcmbVR349z^dH;XXN+YeF6DTww5_e%y=nFb>LWEk3Ti-XWeYxLA7ApLZZCyXHIzekoX>NY{Dg3 z%@SSot#7^wiv9#R>3uwpiApeEtp#dt59Eqs|1%*RHx16P8;7y={j74 zmpQmr(7d895vf57S_PGp>6~C~i*;Bk!)!_owZojXEB)F<2Zpxy#g+yI-=)&y|x);>#vZMyPa0hddQi=kaD8QEFOy0|+B93bG z9)rE;Au%;B5*Gszr)?cl`Mn1Fae(%b^`JN99w+874;C;l&UY#MK7+gP^3Wm04}x`3 zq^*GBbXVx3g9e9im_7<)T|^bZtqXkg(y`GDDXz47+--0a1C*Q|8!G}$oJeq6yaN6o z+{3CkX0QfL4(<^&E&vCMA4v>hSS#%~bG@Z?$iXX_?j?xa>jz_Q(4Riz&*YQ17sE+B zfV6`L>DmR%dWrySFoMx2Xm*)kW8_oC+>q75bT&QV2G*|+z%>}x)YL#9o=!hJ!}{L= z*MYZKWeZeEOk!B;BV(`@mpjM`R+Ti~Pk5@qG`S6=v$+8`@WzvvLZCLXl8f<;S8`vU z#&;4k1}8yubf|~2q4b#MI%5@{gjLC+~a3_N_h=l%Z+3tlO8=GXb3Y~ z4Y!{e@JYPR;Pv=%>TJaX?nL0vWXA++V!}ddRqG9Sql2FitdF}p49k9Q&VF#l;7#~R z!Rjz8d#9%JXTtA9#Fjq(7uHvCQy8%!O@$;@p*I`61#b=gUtGB*RA%`_twS|N|E?H<9v*qf9aU%6;AaKZJ!}qibAFfL`ZB~_>JF&r z^&W$>I7bv_@kjVAxOzcVE`p=tE|$dOctUgIy@I{*I$ME02J1_Ay|CckXRsQL%J?aR zpT{q-p6HgP-H70(xWHu!JGFFC1Vz7O@By4>g3;i9Lr0 z#k{dnxK?f&*^^Y{rq~w5xUArHL5*A5vxExQ+TJbHaMeJb#da_~ZIyHI3=yZCMoXf^ z!W;Fo*0F z{geh!+X*?$|wl1PdEVZ558naxlkL&!>S=f7$X%?m6 z?-@Lg&nk>f`ln(ITt`&>7GX>CQTc~RScC*Ms?t44pyj?_I(}S=3QQgMG)p|TY>~Ii zlIt*sFB^OXzaP5rke{_6IjH?Gd*Nb>5Z@9Mr~lC4kMPxSI~ZigyFwdCjD8#+RuuYE zgL$wk+<~tdd>!8i{m$$RY}j-=iMKi$O4|W^%i!Bet?1R8wMe1t{=(od@mGRPZZ;R? zsx~Cn&c0k<)}BVRL5sCdmgnMe*uDIX!QbNVH2ZC*x_8FQaBJ7_#~Zwt%>HPNRr((c z{t^E~?*#6MvJ!OukUTo6=b<7C)oBO*+2CLBU0Uwt$~`Fo%sTPk4E`Pe5ytFD;EuaN z;EshDS8D4tpZ3uy*&NHEs}}!-|8el&QQKe-d8Mxg|BDy6X`S-M@{YM}tO!E^YU{(LJbHIj6sw%8xo zZc<}oq)vDStxAt`$1897rSCjdkb%@2xl9_U3U!F(Pq9OYkq@b;Mk8yKZS{yd?gy@N zSZm~R<&Y$YD5unTBqpoxq7FZLMOtA;jsIXyqHon_xUGnLJ$4f~Ar%6_&a^mUxoVi?uK6g_*V z+~r8$f`Zd8Mk;Y$rS=;+s7`BAmw2a%BpE-S>&0J|_2|c{<3B5J2PoA;)tmn#gxB?Ye&ryP-4cG)!tVT7tK-Ral&th|1 z#|1REH(oi1t1EDGqOEOh;w+rX^GGBLXuE*UwvVB6a{<@sv#o%e=de>y!0z&RpN{X` zd=~Z5Tz>&a)+WwztP>Y7cph(Ro5#@bEMCD8CkN+oFGu$kaKDZ!3m8*UJ|{>x$xjbm zzzI&Bn8(y`qn~J~pT)xkfQ^jzIB>=PwrU%N%~_X}YTtzsBDzHuATd?z$aG+(Gy5 z#9zxTk)IdLSBCS_ec20mG?CCNQRYZO+hNKoB}_u} z)XK#Py+~V}O7uaMYKEqHe8M`Go^0k{=PaI8TPmywa$d}k#&OK!E>BpTH<;> zl~;{MqkvB?UZ07ruPLp+h|fgpAErMlxxP_Dcpj?`wsoi`1^n*QmT!Uuv>}RXBkchK z&g4*oJPYWg<=z}}DEgjd^*MZ=t7}+#U%(e>kNTPa`f`B0^g@eg@g+`qp7q5bVVvSm zT*MlE@UM9eU(!PP1HRL~Kc(PftnUZgS%k)&| zULI;08GARAsZtar)I?ga?gbpAn|Pq%oCfGQ(i1nZk7_i}NtNJG_{M)E+L_pX5p~ zu-PArsN6a)-O4k>%~{!XFl4e@a1Lweu%0a-jOKCp>}%j?skn> z2uhvY1wd#qcsJwx9#;HW7UDTV%oB|5dl}^?>AUywjQf7hK4m@F7TOni(BLsSCPVa~ zi(BL#c?CW4DAvoc1r?3|AgW))&JaDMnRp`23LzFvIIiGWzK32%x_1*>=vRdkY37(k z%wHvr&vAi%(Yp=)YBr_#)CgA5X@iSv{R39%5G$%8rA3ZgY|_Q;{L{svc@zhk55^Ws zY2m%{%4MW>E|&U{*y6HOb`Rx*kq4~ukIn8|5K6L4jm08N9%?^;jiSlBG!IxA>eR L=*qP6mxuok8reaF literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/DateChooserPanel$Listener.class b/eclipse-build/org/rapla/plugin/abstractcalendar/DateChooserPanel$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..187754325a7e7ca5245154fb0aa6ea527219c3c5 GIT binary patch literal 3227 zcmbVPS#T6p6g_V;q{B>;u*)h4h}obKL6i^$0%$N95MmHqurt#n4Kv-br;`Bg`-c05 zsJ~F9UsOS2z!H}#tip0Dw<;~gRhkg@XXG%X>_K$+HJ=$+p@lACjF$Dww#pd87oZRYUps?tmUmW9V|wZ$2XQGecN>kfn^Hw3MVJs zOsDJ6FKhhkRHn7^Q3|Dghn<}@Phmk*A^2>|u4DWX+p+yC6c$yUOMLOgWcxJ}xalLKEI?-u>rd1cmEX>w$Av-SgF{G=G zi%_Xhp7bnHa!%F?<14E|sJeVRZRG8B0#LP%8q_L`NHJo)m8PtTvcjCAvW60EP~bqO z80KQ021B8yP~sWGbX<)23R=76%gv*H2GuFHx)>JVQVk2a8IV1w109QS853kJzs1fl z!I+#R0|%r!P&Owo-GAX}2T-}WxsupQs>95Zc@wT$Z+yk`Y>vanJ3-86{bGlogjjXG|^%^|X3PK8-SwjdJ% zV*9q0HBxTIFU<&_ED zzUldK*x06FtHR_$=qV@YNQ>Nb$}NZz{N+$bhb!qynQo<%l4Q5)@WeMpUz$Ru7Qolh zm6yCIHpcPVqhq_c#=AOGOen5dnJ_zb+$Q$&Ew&d}8#?3}L8(~XzQUCM8h)JKl8f`J z=-x|a-h#5^z+4zxw42A09;KmH6lN6ReHxmmEMk$|)@*j>=6zgF4r`^N=NAvfp(cV< z6?*6Ab_@@T*dC!s3uK%{sDe>c?^y)YY1qY?5nQO?lDBktZjX$4q3{VEPYV7OLU%A2 zt$;__ds@dc!ecCCTzU|(Kd0k)ybul~u_??vWgrznE-rjd$?)7Qk)oGy`mD0$aXK!< zrtm&8S4yP-8y&urG^EXJ*5Z@3EdSbo>6B9mA{Yh@YUD_HZ1V*u%D*^t?v3DT0rw;P zj#bwjM0s@|M(*dY2*&WUls-To#`07A>4k9^&u@kEFd@vKUgH_VX#2eS0Ll+w;vPiz z%km9O>&Hxm#GG)Wsuy#5aY;=tE)NY??nOmzuOZTls|q{U>_z#U!$@rG!`eY1*A|6D z2ZglkMMIdjr5D#X4=it391Yi-Cr0~`ROm-X1VyHdm^vfahccFzZLY5EL$~bL_F{)% zQ4(O02tE%Hfx|@a2)ln9v+*wRdk;%-lw3RF0ybG<+;@ayotM+wS*a~a4+s7kM}dW z7Nzl%tRhN^H9p!jt}$WaUuZr_kDOIQBCs>}19&jxja5aM4X6*n7~rksASUiZc>rOQ z>)IpYAggLJ^iU2RSq1=cQc)5jiV&#kKxAL@^BeAb%bo8imgAU)@A-;!oW=jZ=lqXY zf}a8q#s~7N9{{1AAUw(vrMWVc#8+#0EJhy=#a!WiJV^>qNL^BG*udtRemtJ1wxuR# z?8j3Iy?8eKS;ewn9J;yv%nky$c%YNnyfDDetl}3|_bZ|Pjk~|24kyrnKlm6w!H4pn kMO`EYx<~}Hgj;GH;kXAV7jf5CK7wAu#MwnHY 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 c77sow`mlnnPnPTdE97L3s`(01J|LdFY z0F2>^f{;MYvgb3lRyDOu)vV1Mm5f$&Tw5!-CC$_;WzEhUwXIrp(lo7-=4wS#cM3dr z^?3q>1@`y=C2Of_RrHGMWLnA>4gFGPvWe&cwUh;VH6L?|sv1!(TVUht1?{4iskw%k z@%M8AYCyqxSk5%{l51EM%0hBkDlSchi>+LEc$ z3f2p3@J&zJwsvLKaNHO=(XkFZRH2|h%vKc`1VLME+Y#CNP22>Rpb zZZoe8oR=NiOay~AWv#_k1}-u$Ye66xl#wyYr2>%-C@I(`(B<1cra248wQ39l=!heU zw1SjCk1ycssu;qsK)d1Ut-?qKtxPxfb8(Dfhk^`4>EpCcRlJNbX1t}DZUYZTktbT25?@GrR2Boo|{RQ9TP61l2?(Mj2>2btH!7$z{O;vl93V)ME?WmR0y-XVJVbif8s%`nTl zJ>a7@Q5coOII7@?z=8jZrQ#T-S#IR`@GKEXJwSG?nab9Z#$gl~JIr$uGb(0roO#m9 zWxv0JDM+1@`8=WGb-Y12+7uXkOgZM)?Nch=1j{|Ts9z~afUZ{EcteR>3{NM{ z$nNfs;T+B@c#CxW%=%^QsCXOiumT;+CQ|B=&Uv75T2qi?N?J(E#|)KCR*Jy-fUMVb zr08`d+jc|Xtl4E803m~FJ%OWEU+`>0#R`Pi@lwMUFUr~y*!?d`=+T-aY+Uoly1@1T z%#)JKRFy1~EiA*NmxII@*nk6TW0|I64PhAyfsTT!l@>W%yb-E^H_0}?a-U$EI0dU_ zm-His9F=_!*XY`PH!AbXYiPPs(d{Wya~$1Ka7kd)xARX^I@oQjr$_n?{k$aFcrl0g z<4wUQO$We0EbB zc#+ROR#HDUV=I5a#s&tq;CZgVcOPD$1wmQKL|U4ljARo{4-wzTjCs4;$Z{}%6TQI^yTgi43O~P@$^^dUd48S{4#onM^-T+&~&DbopapSBXI5h&mupx z3Z^<6UPdty_T+A2A{$9W>Nrrxp=>k}y@SmocMxyt=SLEeRlF9$+%hu5iD(`9n;6e3 z3FQuYn=)C22MI-*N+?qNB*i7XXZ4zt8m^y zV39R?m9=6LMInR3WLaUBZ;`jfuLyo<;zh|F9H_B-=v6SFV6^K#U5_Xb3dX&iBsYP3 x7*sH!;Dh*|=;zU0th-Mx%7cQP3iwCy^?&d`tPmW6hv1^dw``KbxQNSW{~P`}+VB7X literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/HTMLDateComponents.class b/eclipse-build/org/rapla/plugin/abstractcalendar/HTMLDateComponents.class new file mode 100644 index 0000000000000000000000000000000000000000..aab6b3474e651ab84fbdeeca4abcd37514ac3d5a GIT binary patch literal 3086 zcmbW3T~iZR7{~vIY_dyS6(UhlP(;K4S<+gK3K(BdD;7irL404x0xKa&!$v{-X4Tg5 zrq{jbj2AlIwl~qKGyMRa-t{Z=EA+Cp|8q8Aka$y=**&k%d7j_%f6nIje}DZAz&CesQb6F?rE$Gk$ z>TcV2>_o=S&LoB>Z#z?-K&a2nx?V~k5bGEd(E4*}CyW4UO#~4V*f{8BopZ(cNvAMs zPi7o}$Y74=jM)WO_RE8sH|s74BnSVGZ@u(v#_^=XBTj~Hxw)*sU~KT6yCYt~&Cc}t zBSp{6B>Ky-R*ospoZgPL8+FtRY<}O~iQ@FMQwXCDwP7@1vyLd^Q>#{;VPXrm5)qvw zqS!#kfR1efTh`ihGihnC2|IK&uLABzU}7g)1oS(0rsxb$3$#~8=_jR{|6w$uRi*G7*O*V0bzI41tDN z6|!LnBuspSk0}EApp}j4Vi1neU`q4u+DLEK+7$*O)K!6A%N`)g!)ZmLn=C~qfCdLXcV`IIqPKV0c@Y{avt=7#LN zx{72SJ0_+vBe0Gl7|1Soc6N$uW98ha%3hu8RmI+`gI2dGl%BKbB}Ux&e8!Qt)9GAc z-u4X4QF24_FN|5t%d+HsRZZ#@30ppKOnR6%@i|C4upn=gV2l!B0ki2}3=;JnftuD9 zxp>jU67F%1;f%TxLu9!SmE+Pgmh3FPF!3e6q9CS~p8{=_A**F;^T3@A_{PKo<&T}_ zWnnDKPN2z;pehG~dc1taRX`O8kK~GlDd)5+MY(0|x2RjP#V(dofS)xG9~mITr_Nr2 zZy`rJU%~i=jT(gcl+(Z_tmD)47x2BFy;^L*Mvic^h|y3j$DY1H-NY+I&UG0jY)Wcf zLB6zG$zYcz`=NUM&!k?j|CKbXH)x#be2wj|uq)D5LVF3FQSCLlOV~HQYVtsNG8li2 zgKK7c%d?@V9yMO$h+0s>@t^69A3>*zBMJkX=`X)1{NKr&whi0R!B56%G$V~2c+625 z1w?b*&gXCch(~Uy;WCeaB9Wrkz;61|#?~H0(M}3`DU6u>dci^` z_VXju%hqvpGtvZxIe(dc-{h|$$*9x!8@I}g(v0scqcTWOlBprj9!zp9fGMtDhrmDB zrK3(nnu&nlin4GX(~wl(i)G(P@Vbw z?F-9iXsu#+gE|89ZQvjo9wNiTWY~jNW?qu(#t|Gqimjv6(J>M^j`M7dlh<|XDNQBK zQA_to>j7tPdgtel>pUOIH#Y1ZH6k&GbE^niU)Zrnn zml+7D3^XC|mhR{}nuLx=OofgH9kZ9oV15>5Q e-`d0@#j3Fwe6a@KiM3sdHM)&VzT=h}eE%Pm@W5RF literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.class b/eclipse-build/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..1f08697e88ebe367c9fcb77095a473c81cd32de4 GIT binary patch literal 5489 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 BmC*nI literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.class b/eclipse-build/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..3ebb1f611a9894a95631f7b47be1d010476ce9a5 GIT binary patch literal 2390 zcmb_eU2_vv7=BK>$%b^HrBGx+L@AXdg$8OZ(tu*pAi>aLTdJ*K*(OW6u-UDf4Mi`w zb99FBH+bQldLd&7e$4m-{85h2IZ2uTc3>QHk#o*_-p}WK&y)Q1_wRoKm_(?fPhipy zD(S%5bglHJTdz1?+FGxLfmI4imTP-uD@b2nx>{V28rizzmhC`?CNS}0yIvcCy}9|~ z{KDGY{Mtf(asK*3E-x@#ykp(7(yrxI(u-l>c$JL6?&@0LZ`H2Z!DYW52#A6}w7Rwt zR$YOJ>Xkcd=aOID^gY`PYw6Aq-gE4&v`QzVBO!3Q3-nG2b;nlb5yuInBr6mf0Hdf^t9sdyXX41?109$6vYx*+a9P5n6Q(7nYD?WK20lcQ^TsMT^aQ^U zy*Ni=;wO%4SkUniqj&k?sugY+Si}-ZAn@xRXH`qgCa*})mkoR@+bR37;BQIMihx8p?U~n|Ch!GMf`!yt z^EK3is7iylkb9}1f|8|QBHGjQPA-Ub9uFUTPk`-~F$js4crX-EqXCcYYU7LK-jaRE zkz6^_b=~>}n2>EDBn8j2gPd#CYBu?gTz#=SRR0YWQucG)f!8_p{hSL8F-hlYM#!3K z-PJymJKGuqFsQ$qrxaKDi4O1i1w)Ux>%%a=<6Hrgz7Aral7gCKWXccltnu`U@^Fn3 zsXLS!e*!b5KgQuy|6?5K`WmJ-m|+Bm==TT)@rLqwpk;@nypx|H%8#jhMsb|0%MU~{Z@*(Sx@{W%&yh#Zy#XVNNi+7DbaAM^Nk~5mArB)g^vZ~!;dQFU* z+Q}x;rgo}{w@hukiRn}mGrxg9m@^SG!pm7RGBnUcA=SX)jjwnxI)|_K5!9NVVTn>jzxGBjl8~8!cS6F>7EQ zC52-HW!S1K4cz9gpPE0SLa!R5J%EEd?4m`AxyxCK((_)p-0AcmN0qx6tv!{!k4>(U LjX$TK8e;zd{fkiC literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/IntervallChooserPanel$Listener.class b/eclipse-build/org/rapla/plugin/abstractcalendar/IntervallChooserPanel$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..3eaefb0c89754c0b875bb27b7d721875005e66d4 GIT binary patch literal 2971 zcmbVOS#uOs7(I6;NhgygiGV1Z#1J(r9T7wbA`n7|CLxd*6{6Ug=_C!E?y;wni2JU8 zLCYr}getd+LRc)ZEG?-*A6&|<{2{(rmgnp4%uL7>D3!|0UB2af=R5b_x$@7&O8_?G zEe#2U-JU;T_-58IjjS_0VY`MomJ56{9i&aiax$#R2FP146I#Hv(S zAI36g1H+o3gRv(a*q*y!qEHb`+PTIKh3$QX`2P!gCxh&?T|3yNu(Rogqco2wly!L- zs|pIWI;xOLA&HxGRAae9vPleT`)t=5n4TK5{9$vM>RXw5YpgMyjzT!Tdv%sW$P#GM-MP-rdS zysn#$yU?UiHDLu&IEBWh=Ay(T!47OIXJou7lP4gu>a0c!+BCE()EBaqw$;&&O$wDv zF%+17z%DaG$oX_&JBCO-jMt&#Zn3POWw)D2Q91YM*n+JJ)zjGw&BT;S*ci90;C^+u z=8+VM-KOI{Y*(lmxBbvJI#CKMmIM$vDhhDjwZuSZQHvBBu1^sg%6ii$`ps-Cam_1%BC>@XBQH64IoM)zF!;hqJ1fv>`Qcoqx%&TkI^PHTH$MFPFnHeHD zSyF_(OH?fcJgLJJ5o)=p9)XuV zhsr2YWGRk?w@7=DniO=`nhj5+Y?0in!xMANw?c}xJd=@SRbCp>9A8Hc1W-Q3>)zoT zRRl!tp9MMe%Qg@C44&37tFX4f`Vuo8CxtVeoaGUU=d(JVlZ_NNVmPw=f{qtuxmN5$ zwOTRM@(`+U3g%$yOWBJ#eQ2Jp*1BR^-bbPNWCr}_AbZF<>V@= zTzGp?&+96Q1j?a7)z!(1$Da~q{I7=2y=5G2;eLYOsg~BWsA)Nex;f4gSi#Q<+5o4q zlAmHvE8L7#{8qRHx5g3PV~!-(wzr%?%^9qI2W4~7aKk({_P1S@dD{gvEAZ1$IET%$ zA1%$}UP+h?6E>id;}4kTLqhzBsXk^mKfzkep%tI<>ijGOQy(Ra!7w#;pp$S`VIy|p ze!}0yI8{hg|BYIW?}EYu*d5_jJ#-chP8Z>AoyVSN+Veg-;?X=F>Tiq2gB;Ie=xwZQ zD?5+J2IAHBc^oUa4(46Oe8IIRbR84dM8UO3Tw4l>3Te*6iV0$5dl5amP)pqNq~{#z zIgi!2$QSl=Y{eHW{}T4&E1u-9aSY!ei*KpI%Xk@A@Gic?DSRJNw~Jkso<@C?(Q%w0 zGmU6~gDFzi$=EJONyce_7p~24EgP;0vE@is@7O_8K793rS?#?wzb;JikgiPMSIx8qlZ@8Y7gyQYiloiEB${nJK5O~RD@sly?yWdzW3e7 zKKA+pM*u8Sr)$VjsES)XVaw=?8sWZZe@`S9HaZhY%jimW8BsIVZCK&@Skkn18PRCX zj(9v_TFpkxjB4;H%*i14^hd%iLT3GW^)>O{zIe=xB{ldJ=4AsVqGcZFj6f!*Q6KqS@^-e60_>!L)`u#&Y#(rh);k7mC?vW{el z@ThuhscX{8B9Y0|+87d(UGWliF{3kTb}OjO?E!@l+BZW(>QLafb-$hqg>j6C> zdz~tp6%CVKp`%4xY6btQNGy^(i?qu;#J5{UuQ?F6b~=WtiBq$?lhqywv3NG8!FGi} z-R>^4Pt29jFjHZE#z138jshz9YA9&{xtOivWXw@m_!d|RwriNDa8kxq)>xJ?C~^ic z7Yl^csS3Ge!S(_uoTfuVzJ@ZISx~Z#A3!M<2-qSWh0tYJp<^Zryl+Kcg*Hm<^{ zWkHXD$JontfdW+FEFEWKHRG|hZB0wtwlz()+v=KX>DBcC-mVo%Yp8Osq{pFF@5ofA zqW}RxUa#YwsAmpHn8{71xpU)oCy3i4i3mf7&Qi8H*e)WRqoVD~FgX-Zb_Y;lW|@-= zje%s?IcqdxMh^oy*q)E=w4j}|wslhlqLm#wBDjz=XxP@I#r$R)!j6)t!EEOoRtFuj z-lG7bh-v6mDDg(f+PKwiTI*O6;?|&!IQkeuj?UX6NoF$#K%p|ts+Xqoj2mp7HmR@| zty%=PbR@vUFM_+&W;@izpgOmdUC?&v7{G4ExY13mg*=+7aTB#Gr>HM;n2$ZgT3WtD zs9YjcE>#GQi|#?A{_iEO=J&aBKlZ)-gtdr540`4SE9ar2Qpx890$yXM}9_lmi% zV$v_Gr_al~@0XKq@wN}>m%8AZa5pl*3<#qsNo}7Ny6iv<5w~rAH~NMrt(dxW;HwLJ7(rx+In1HA0>7ylFf?3 zCv@B-iP_)ZCqAn%sUZ?GoBDe@P0J1udRIf7blMFoA|aDL^d)yh5(+Ck@19upWCSPZ z+w(mHj+2zA`aX-CDW}0A zd0E}acroI5n~hwEFX77??qX)h7~q&%tmAGRVqaw^fpkwpy)q|e%B5I{(Wh{)j{7jg zHwb-hziACB%+1Q4+l?-x+YH-xY)bm0W_2NkF{0sqg;O$Y91Ex80pTMr8Sgd*h4lw@ zJcJ|UjFH~zc3X^^v>V$kpUqgXUBDmF@f9H;Wvb5UtAyjP>G(PxRhYiC|>tx@i_NH0_MlXyxJ&sDPffsSWHOpWr$t%&|Z9X}F`05Q^{%kgtMo)^$b1a-Pp z(+*I%`>Bqf3CbiC z{wAG*C@9?>1n?^Uso@`Vgp5~uB6HNe+Bk(Ibo>kdW+F=Tch(wodN-GjLb=5wbHLY` zncM*)+rkX;g3$qjbHLb88*RMPN}lb>9^+_9dkX*Um23T0(m#wq{foN1~=VfowOmUi48u{^30Mo!VyEOB|Clpe;Znxm`9YKo>f z?o_;0$?BvT2&lPA1|h|I%bCh{0I!M1x+s&bDpIHEs#I}KD(oJ$ZZ}=Q8`W>@3-;R# zbBZ7&7#Gp>^eKhZ+{I2W{FW{25MwcpIQ6W?ZS53hr1P-bBW@VIlY-kC@3*?lbrBgF zW{mqI#$r(jsn*9h7}rFNL_#WkzT4$s9&=eu*R}KvJ z%Bj&_Ihxrkhc$a;i^o+Xy^}E=IVj;bAHU7ODL~FXQYT%tJG5vRvqFb4w__Odhp>>_ zQf`Ao2!(t@DChUZ9id??8N%{V`4B33P}LDiVZ}W-a~NxeP#d}rwYe#*3-NTr5Sr3! zb1_;riY^<4FL2-s2-iFcUr=-f;cW#R#y;{fj4Oxnz9H-n6r{cFJ)ldymiJ4*1E>5q^`OLLSAv_#8e@uX_pC z;tM>JNravGSkF{XlU5!ddp?va?sp$5NAN|(CTgne>0VkM6N`Ml6uvJfi&A)c1kbuyKhDr}-x$G9+*`ibK%^!j{hXA4(a0~ghbVd;9_N2h zSaE_27^L7Norj$a=O`8+Mt6u~1^Q^>i)dC09Z1qF{cPd}uot_rAA?lo9y-v)eEAY8 z`cgK#myzn_?D4L^Q-pek>vPy=8}oEWt!ZPfpp*Rv|0O4Tv4PI<8h6*?OuUYxG|8P< zKr6q7T*U>ep)IJKb(Bu%V?NPTj)s@{$t_Bc@;>{Nx25VReVNzHqnh%GsX5;9lc@)_ zq@Tl8r;Zjb8d3fnY|4Z~z`nbhKZ{*sb3M(0bzP8-Q>+SwuF{W7al$whuOr3l--IHo zUYf^hzABPW5gv0NQbi-GI0uiY>38$ciCe!7aKI+1JHTlseQE~%-Vt_$Iaj>7N(hap znH)&rI}}Q(*^P(Q+zw`6HNPqM47$za@~OUM6(ee44zBd6slM_fw;g>&^x}BPe7hXn zMEP&#uSN$Mez#DYw_-j+vYhJ~3_}T7$I4Zs`l?bv+qOkms6q_Z9AeE>i&Q!3&S9yp zpmlw=l_w&1!s{s3)O1bFrFNBCtiowAWEFknQH;=79o+8GL0fgc5PfSWbrak+Ev1xFpg>B~7S&C-AQf>S0x42TC5n3AIICn^*Bh}Af%*u^qYX4) zt5fwnKkq5~QuY!hu+%lA{6t#K@dPZf1cBC+Gt`?TA&85+AnL6~_y2o4xQJ|bc+Axh z*RUoqJCxawRTL9<1U%E^AukYdrbR-Jos7>81KbtZn{H7dHu*~DW2>Z7ZIc*F69|NzG*z~p$ShMCHfRq%Ss9{M<8{z8 z^vEix5_*ZehZHkX-PwJIaOVT&-xg;U87nee{RK-Dhg8GpWh~QQ;0jhIERIh4gstzs z$JP5}Z&3Eee}mU3m&X2>@;;b%g&2Xa)c+gi@Exo8fi?UrdTjjRne-q=Tqonc>$pMY e;U@Vdc=Wt{+#=s2mA4D*4(hl^9&6(Y`hEjT6V^Wf literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/RaplaBuilder$BuildContext.class b/eclipse-build/org/rapla/plugin/abstractcalendar/RaplaBuilder$BuildContext.class new file mode 100644 index 0000000000000000000000000000000000000000..313e78657f0307ee7aa0cc4dd3e95d45f3bb3435 GIT binary patch literal 4356 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 WT9Y#@`~%Cy>dh2Tjd)%|f&T{*>9A`6 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/RaplaCalendarViewListener.class b/eclipse-build/org/rapla/plugin/abstractcalendar/RaplaCalendarViewListener.class new file mode 100644 index 0000000000000000000000000000000000000000..e98f0d73d6c8813a4b0839928653c2e9cfdde9e8 GIT binary patch literal 12254 zcmd5?d7M<$mHtk5b-!L-FVNj+Ap}GPx@jmyMXgp88jw~t0U@9fi|$8LP+iqlRkOH7 zjaw4;xZ=JIqQ;R#8(SR5iQAZDh)GNwO=dANnQ<@&VU`?f0XY+V%3WSyjwwh$6b@C9`D#ofVYpWo4*>gi1-on+QRx!@#!P-pHz zCX$4|cgGkBC zFG{z$`husuFSdD=g%brQ_y`>i04p?I4Ko-?RhWsBZOpbOk}8~rHVaX~S%=naWLY*&#~I9scxL_UrqgUtfKf@qWD@WSa*1!^}RTfYQ@-IYZA#ojTQzn zb!3ncqU!}G2F4EugCbCo9BSx}&drNsy&gqXn%U=f#k1;-)i%C}HLm-YI~gavC8pGH zDE9}3(*1%9Y+Q&hX)?x=WTNHMatb*NhoB`$J0ro$)jDk>1HNV$F^^?IYtZre`vIo% zxl!R*9Sf%2lmN&^QbADSY!e(C7+zGL{FzNVu|+9jQP9GXG4B(`&}G8)!R0otz?Jj? zYjLMZd^ge^gCZSJbR@exqVhRI1A3K>t8ooEuP3#|2~dw988m1lxy4K{^!Gx3EOvoL zt0L)aHFjFKj;Qo8HljBz+`t^qQ?T)3HD$^yS$8JzqN_iNt3fU51eHac+6RbTyFPCw62b}6~tVdD#!P>nlr zw}ra|NBK@4)L_}T2lujV)H3AJ&zuAsg;-X*M7D-4Q=2as35xz;L##WrD%~%*$HVi; z04er!@%N6yo%%2}R7W+sU7yocXy??!oyu^vcBBOo2<^kv!NP+U9viVd1T@olK4IfY z{1H2N1}V3mS?aDX1V<0z`Jy3Y_^0r+go#uZ^*L!a4igJr*%0fDbvY69jIBjq!eIpd1b=Gb zRlztv0)xldcuiZvvTUj=w!IpU;yX58#~ZA8>{2{Tuqi00Nreg)=g*I^H))5>>5){^Up2OCi)KtA zGJb}?vhZ`#(ooNB{I#ZBNGqHU{aYI!;THrSlanA$5wH2BiYXZ#-hB$*k6&8&JF5f8`5whgoZ_ z+}=yT7EZ7tnEp)TV)66F_nWu4 z4Kx7(8;XbJ%ZZ8HkOPN_az`*~hvypNQ9`zqNjdjYh{uA-1=EIsnQKtNU}7vG6}D7L zm5VW5i>{6*yHZ`3l5I;NoR$lVu9E zSiW@8eBF&5Y#Ke&Y)gwwb2rphaC0NxN&Y;PYrMURDme!2$_O)TiOBIT)|SP%aW7~e zl-|F4MycqTww$PDFUZAzch<$h}o%;vM_Fr>&G z4c*=j2GW0LC>~=Ysrxp0>Y5l_@(e{>+(1bCn?}lI+^`R*IP^O80g1Q>3~n5I08<4v*wUR- zK;xqK;?CCxm>Qa-ExCHo zY3Lx0E%^#5&&Q(%Sq<`58&z_RT&D%?dci3{5cx*Ab;LV83)Bsd_nTK$$c=`Q-Cc=w zUEDiXv0t<0>v9w8TyGyeJ7tIhJCv|$xk_%aTGX)f#>lbv%B6ryG4c&yWHpW<3balexvfk~6Bgl73K;D^I;c|zKS<39#=b%Es z1=LcF2L*;qUESjcf=mCRHv&=O*fOrUdf4zyK0Iq!2J{8)^At%P+IUMIV7B5t?Oq;J zI6O|?E9^|X^ykV`o|Flea7U{zNR3(QM*UcZQ!R!yOqJp>y4nLuR=9 zRnIoPjKa}ewUzR(3?=;81CPV`2|Xa^XD#nn!{(D3ehcwiE$VsI#XBMXU*9rq4@R}L zzKF(_=`Ui;Zr&@wk^CHOo=>OL8I%-39gats_gmceFcwGg8zo>I##63d>71%Vz0snS zBe^llXF6kq|Ldr-mKV_YJTKg7%FWFajcD5);E5JYG^XjxXY#L9pdN|Zn){iN^T-Smqz1C)A&vwV=W!vJEflr?7|H==^Ycu`;VfD)m-e&=;xRd|-()Pqc}BmCUf^s_xsV2RaMU7>Tg*{Q=*p#3ZW%|P zM>Ci6$;v<=7UvCJoHulF-q3}fp_2%_K5U`0=Ms`zv5i-1d@Vw*@ztFcYOCpj?YPtn z&Lbx@Y#UnX49OooUQ2Gqy4#=7#yP zfIjf7y~#4xmbZk<^@(ro(X^w`T8CP7GprlY$Ya|kY{C)P%x#KEE`f6kQ2E)<8NawgE7-{7)<(4)Yrnc*q%PrNs z{{SAOH;y8r+^c%e9~NgEkB9Iu{j1O)jnX9y{sGt)9yx$I3y)G353f9Dyh6QI^9Y^s z_yBea?t@jb6SX1t#d1i*Ei^aiSTqcQM8S7bi8kvw@u^1+Sd z$up8SFya}gWy3W~uUuos)0A)XTZJ);MX&xGmSa7TaV-g5OpC{`Rt!+_7owH?d}#o$ zFt}Bvv#LvH**h^lT;62Q3|A7~;i>`rSs86D56!B+mK!xT!~N*NkM`otHGA-O)K=@G zHBHq!(8wn{@M(*R?ZwF<4#1w4NZ+RqfNQt;U-rerAhVbqPyYI?(J(E zrKvI8KqtJh6G!irx-~5gGOAx1_Q(;@+Hh@Yzl;sr)LXu=y5(Cksb8kPCdc$kt3G@S zQ%Rh(>9S~DUVdG_O!sHww-Z*Yc`wLG{5z#zqFOg9Tf&vOq|>C5UGi)`sUE@HwxA7NGcVa&7!nwE`F&^>u;$B?Fpk9X^yz?NF;9)$0M|h(5 z81~|E{E**1w3?{dO7>w*>WcHX%uIFjYLp|M!6TS%UMkLBXFF|VNTfmsaChlm3Cg8D>0cT^V#_I z;yqa)XVaUP@ic3pbda1M#*=c6Od&-*gHkzH7SXSJ`HKVh>O=n8X0a?`rX9dSSt`rW zfPN}`CNaxfjH4A@* z=a!@!S)U#u7xCT~S)+uJA43XnMeWGrEWBy)2nL_wBn$g2{OkaZuw<>$n_T!g7FcqT zB^S%AgVflw`;~wFKw>9AmIVY6EncmXUHV ziLHK#F#~d6L;d2cZYtXWCUW53Mt?}ZY+l{cFR2E}3`k!I;dYra2x%l*u@fu86^2b- zldGbYd*vEKLeuxiwb80@RfF8Xenh?+t_)XAACQ|%5p`LwDO^p~i`KAo)oAj%Y*)=h z|Ag}7cEOH=yHuaT#MF`>Oia9o_w$LlR+$#xAuL}fSl(c#`6m0_x7d}u&EE~a!%F@= z_5j~!?cc|G_yb&zcbTp~BG7-#RQw5c;iuTm>sL7DEvDrAJoWnkKgY*B3DjQbUP6_= z%_SADausraE~$7=fv3f1zez8xko&QSiBU$q_L+1jr*?13orI-DeUfsQ+|2^A4fEt4 zCK0!AF-z`~9R$k*m?-zl15B!iG2Tn6UHpmhgYpnl=>reaZnv=&)@PV!pm^f}OtG;4 zAT19fe4S$29l)oSTxH2MmOM<9k2*+If;cN23g+8bw~z6X#XR=_D0)Um7}n5Ke^GZi z4b~=p(q4RSAkj)pJQ58}QxXq{_Q<0H@SRK@jj@$xf1y&2HS?0NQF> z#ZqlWds1RWfwr-&ZI#jukxH?(YPGi3-lsk6-P-#Q(De6aW_KqsVD0~pX7`)#c;7pI z?|tukvroP9@NptqsDxBfm@Z8uyK9n>zF4HDFV^2}#A_m3Q|V-+Gu;`9>G5bJS<|t@ zhDtKl$j+LS%&b|}nCR_G#PxVuB`?!#=a{}7-8HR= z{*>Ml@9R&mHd1Llt|ysFQhL&e#MbM{l#z&E-qOUxtC$KK6Y*3!5>Ky>#QJp)IG2CS zxe!)e}kT(H2wEPMv9b<=oY0UR5u& zD>Rx;=P*r3>fNHmWKQc$(<(=;&Ksm&_+mO&qnR`dI*&x7rY-VjIM-TQ6WNijaTqH* z0R)(eR~vD?t-p7xo?I8%8Uw$js}q3B`UotDXS>ra7Gi36{rVjPF_=s3*3)f~UTihr zX)l1uNE>>pM#iG`meOis5umUmodg)6sxVcnG>>V)>xPL&l{A;h6BpvJqeGA}8^eTP z(6;S5eP^1fW_(39ivx_usE;mSB4PJJjcVy4rT|C+{b`e26AQ$=yuiXCZv@}{u7c&(YspauR{Q6#aw2AvoBEcmZT}sO>tF{0&1p}Dy?9eo7co^kkaTf zYGLw2l@=hF=GcaDqGVj)ETK1Qv|6MrHd3bDI`o*{nbxBsW1B{6Xf4J-x)~VFNRG*jgb(7KPa$&vHNP)4gn9-Tea_^%J2pgi^lr4{`UfFh| zMw@6eMnzwGa=X!~+mQ-!e3V#SNjSxhL~>h=DM%J!e!7aTQR!-?P@ebhexs%(-j!H^ zQzenSUZX7(LHulAv$|PAhXlG&K3hPYq^ks%n~^6n{)QTLQ8%J_ERopO-}lTkQbA^adx! z>^(P)12UDaW12ix0VW#sq>tcI-laY1-q^AL^-;f^F58)cPU3c$lepeTJ2kqVZor~Q zUmwnHal2P*_tk9J`@!wr0-s%4liTqojowOcWAddFS?`$$<&5PQA?4;#PC34Bl1?>KK96}8wh3TNiDdOtjVk4AUWUC>4(*4GokF0iwM9Y-YUPaCnC zj^0Qt))G%+BJlQJdcR8V!*+T8&$2+H56}mpCb*&4JIjw5vTQi1^dSgrN@s3|ZB!b7 z>*l*Ii==wc9iV+QQ8>6qqy2O*$RhC)jJ7x|X;XC?*X}Byy>vhrIylC?&b&mWkHD`? zMsg|)(8uV0l?D+=@+uG$rjZeCGt${O0;5Q>q0z_b6P9zD7Fdx;UZ(GqDCA%|3;sNg zENl7b0RVZ{3iDrp4$-GI`V2h?$ACiH6E0S z0a>T?9Tn#rMqgzM{>@!4S~({A{5;cQCr`Fk99*7FPsf?g$s^RtsUT`^B<=JTC=6+c z2|HxPIL~~Y0$vk>#nw()48RLK<{+RyRxM15AYO@gAq8|WIPSJWs1E@TNSS2IC$?Of zjP&&wohdt${HjLJ(AO+gbr?4wKbw>d5Hh>TKuDE*9uD*@J*Uz)5b$%j$c<|BO?njj z?J%P09+~-VjlLs2-X7iP?nz6|`aO-lLf>baG9EKx5oiWlD$5IpZg#`{1SYX~Modq^Q$1gSdRTf6eB{~SlztQNo^gCn-rWzX% znYxn+Bse%5$Cm*@NSyhDMt_t8vSh`Y_U4uCYc6kVx~6f>>NV{`^iLYSi{33v|3#y} z(%-;cO439#mX$f^TFePh|3Uv!>7S!Q&sh#Njs8t9F=?i!^y!f_vST{*r{U<TA}utdlIr_F@6w3Z(pkN}iS_*}vlYrKpv0alHa&76?M65;)ZtY3neJI*ieT9ryg01Ui&9RF zB{PaR@>H+#R_96Aj!OrM5-~l%5so62V4Rd5q!Mso-pt+7)5EmX;j`mW&3k{hp6IQ~ zQC--C<5=Zuas1^3&-(nrrU3L7)3}%6L~>Y|y1-P&W@eXJ+hJt2j>N$l5XB`mPI20i zk)@WW%#183fY0YJc1{-H?YvXv9axYbYmKCPG$0CB6nCd?02uDdrnyZL?B1gBjgnva zx{O#%1cMXvTQ%N9Ps#3Y*Z5|>C2zI`OwIpCvt>{3=lNER-@&`#01`jj1*F0Nux93Z zR&L?#lp_{+EgMHz@P*+GlDz<>5c@VDv&)D_8gi*;;lL= zRgzF44By4?Rrx(Q@N#B!%+UCK{C@aSCyIqBdo#6CD9&xcww>_U&5g*J5?x)eGQtAt zx8STdveTZdbRh|vH2&^@BlwjJTXQllrny(+`}lxmc?Ua^irEK4_Snjb5}@1okj5Y3 zk0QRN6OCYac`_M6C~*TUjUwlu#`jCcB$b)VvPm9)LgPDlk8JvY#-HL(V_a+^1fY7q zDXeusGe4;DJ-o-qhavlwvgC*ygP+5F+6K1s1hb7OBFaG;*eZsRGA77+J8k_Gn!R~* z`LfR{<1(g6jZ1GtC1so3Af`Lq$5AM?>w5@I?ntux{Oq!|2wN#xR%lXbN8u%c=Kz0^ zA5-~DNC|TmA4^Q*FZ1KDqZ~3)q!^Qgntk6N{K58o!GkmC>(iyqX>r zulkzCU(Y71rsUE&C?C&h{7wEA0stTu@76^>4T&UbiDI}-l42{pW8#BwghRz^AkB{= zs99QSM%5ApZ4vJW8vjsslVhhf5jDCDM1H`+)I;-51Ld^rs-|S5yIURu=3r}LyOi46 z`KKEHjDK!n#e4;U^|?gcy!gnC5eeZ7{414znbkpVMB`ucZ=gZ!m5iVQ<+!Anb6V_v zQ1~7HLFM0PL-(jrjsM6mLJ@JZ9-B=`t#r@6;syB6{8yF#VyC3eF^&Jme}|s*>-r-x z@IR`Elf5BI@s$6m@xRPlhkZgVl+KqlKI!bdKsrxr{4&1+!R(ofm{$BRK`|c@te9wC zLln{!u!s5|B(p?TMt?OnrG# z`!lu!Al|L=5(yfxPnn#RfFi{Jy6s!qDBWYsW3B@>I?Tjog(2@9CXP9l=ZhBsPAze~ zQ)-Mw;BzTe0mt+6HHR~u@XmrPNH|Nfi00O)ux^(+fwFv`ya=NiNIPBl^N@nqIx6|l z_Ty!hLV=PJc}0YF8UBi>7$YTUt;Lvv?@3kR&(VacAu2nHc81EU@G;{dj3_i)#zB*4 zJ3jkCaR=7!q##Ot=b={vEtxTg-hgl9Q#9A6ez8s6Uv-2ggfmq2ASPG@z2>4DO#+il z7W_5=!UprH2IEZU(*lbWhai|6tM4dX*ecXAv?xQ1_fgP#SXSCFOic>44$>95;Z*}P z(|Tyl(3=MGbJu6*&dUv7ahR?grmYH{psU)dt?nMzFvVO#)7^HA`Zks(hbTQSLpw^} zjE@Z6_#l{TqZIV=cCaUUnokAzyctioKu5RYCD(4ernn8W?xZW|F4Udxq$s@yE8Yh! z?lr})vINVCe+Sm?0%aH74hj({CrYLC4p4H@J3+mO+^1=#O1Fi(RcwrL+{bM-)sq)? zCo&Gx9pxE%&k5SwR{aD`JVyIA4$<9h(p{aQ4{xXr57T`j?V&n%$o&K@4j-kD)_Dd= ztMitA(rh22LmNY$41G#I9+HnEg=nD{Dpk;u~ zM+qgdhCb6B;4e$6#hF++3JJDNKvKAfT z@`|8)h<***G#t4Vx1=}mie=d*kMA5f1Fn3aD8$gU7RDic!18&J*?VCv#f`g z2Pl+XfV*F~yktVuHOy`gmAq2xttgp(kW@FEz*Vctw4j>dK%MUx7i}Ekk~)9L_c$#K zssmIWKFkv`9IOh5d_k|rHN+uzwAMRF6GNDk;ff6*e;Ln^hD_wr%V9~-1FC8F=R$XO3*3=aTy}PFr z?A=cVWqfH}@h0cbAe{(s?dDV21FQikvl1}qw zG{To7ykEu433lV2=Ecp*$G4+ob{7YDKNlc#FXRl0Lc=I)J;o*c443kAC|-S=gZvAO zzsMmz#nTi&mn$V)p-kfGN;%I^=JUDA0-mWX` z^3gGVfYd3%sAR@{G&$r6 zmj~5ysPoRC8|On%MSxQoT@_mnjQlX@eE{pMP%{<05M0Lvr}4vCX2MbCpuGT2BKf0r z@Gr_qyof)*9|Q;3m-m8y$xj#YhtLw-E#iG>Nh-LA2l#Gq=mMn=qtA=~!ls<6DW{)Y zFJnUl2ndCXx-HZRTc~Q6E!5Pr%ko0d>yD07YraC80 zbxxYBiYYT&(0Xn#= z@YEn3sS2sVf?yz681fGB$7_o!g8nVbf<^nOI_TL)m0@$ZC|D2;Y84s&BxcHkdrPzy zE%%n%f0)bTac*U}j2{YlO>)v{f@}*&eikI9LkJcNIZwp{K_7T5 zfP4q3%wB`!;Lc#-p^5R8(>I({hEg`cza&}=qv>%10N z+D0om29NE9$HwuSm2I?<6ZmP#b@*k-4odU&cwun^{Ov7xuYMEWYrmE5=UeC~@1jTe z9rO(EreDD)|ID}JAl!pP@V)dh_u~Nj08iz;cq_5bM9e|UfLX-w+^ol=W##`cuX*4A z|7c|_{G&AlZ}NcuStfS8kfOpwoBZf+0w2XZA0!Hx(ZUb8JSOe}kWMkNSRgOM%ow2| z;eFP`Vj-oG9}i<~5whCl{4iR@ra#q^e}r18(25&4Gvr9&yHq}ghQtqd6Q2eTrxE8) zQyZTo{O_8Ks?O*65!?ALgx`ukbN*~FZ-RWUsS4{Rh`0PCS4m9c5Lh90j*e zB+yn`JjCC~$Ny5H%pW5U4^j=^kKcZM+~mu;<*mwzw#vTcd8ipl&3C|24bp}0!lKqK z?*h5D;4psjQXWBu<`%8<7x9e53GETE@9b01hY|i>PRJgR6je`$kl!yUx#=FVeOy={ zAooL6NK0SE_@{7SeFpG(2tm!dmsvKMo@0Ev&A8mH+@wqvEBz?9>n3|wT=&gg_sd4O z3A}2f4AP>bNP`}x5pfw(le)8HR9y==uMJkjQ zoVgRydZ33}v(b~EZ=E-c1eMwb$*3OY-!cy9uw1b-)MH274F72#%?P=t?IZtD{>LC8 zHTm~ZJ{58w;gO7@05_PD)w(zCMuH<+m_&aGQJsAz$rxk0d%OXq5uE@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBlock.class b/eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBlock.class new file mode 100644 index 0000000000000000000000000000000000000000..a0cd0c3717ef80625b11c95f474ed89f8f77d3f3 GIT binary patch literal 4885 zcmbtX2X_?L75*M8F=81&h-v}^ECDK*rQ5NHvC0Y-q!rl}l7#_fv^z+HR=bN2zV~K!XAs4hXpiR2EBAi4y?gIG_20*z z0I(hZ(lAG0Th1Pe*hW5MMDm%jAuAg(1`CdDq@0wIF|%pIjwHve>`+1;Y0czPBN{3M zc0My%i^nHOIagr2PnpV%=5tvy>l7j-uv3;f9w|sb7giw(EHo!lX5O)K+1RKtWD2b9 zJZYRVBF4BAvE)jmb?n3m(>Bv;zgb}J=z!!U(Awz(UZ;k2zR11gL2i{jiI#X$pxTFR z%Vlylx56FW@t%R6SWjnEV3EJyk;^*Vu2$R0u9nWu(xHWFDHiXIC1b6UYJplvM3dcz z6K$N&SMx*BM6x@sI3%L`65WU6?E`Jyo!tq68W$#GNHaM$twp3NBa^CPma<4dl>>82B;?OoHqK*vhx@>o*GO_Fv| zCw&|r8yz(59%C?L%FxO2*7h205T^M~hA_co!V0V2Wp0AT# zv#ZE49rF;DiVWyjB^9Y~hOL6YjvHVpu$az_&Pqk=>OKEmEg4C4Q-_ACFyDrB48vmH zAgeY8vpL}iw3Ej(Tg**MV^$_@+JPM9acK@?1fv=<*Jb@{^U{$;j!vhHtrD*+=-y{9 zXpjMAd=Uy7m?)Z`rM^KnIvk7%tO|Ogl{a+A&W&Z$u~aTAaFgej39p=}!XURO!#M8I zFd?u^rj^SM=y);iYfVcdt8$nrabdX9k0TxW#Ue|WlLabAUC);ypZzjYjxa@*D>pj8jhSq z)1!5HF%08Dyh+0wg9%vi*70V%#nrRVN;|^>>jUsECv~uUuwdG!OuM-uCYilW$J-_0 zJQ`@fX$=iKVLX7ie7sA?yYUb!7`K>c^21h&cWqhFe5GZ&;XQbthWGMTmBlY@>Ucjs zK!mhyj4Kg%VFR+MrRG@7ueMi|_K1cLvQ<#rRjp*%Gi`e;@0jWGEoOFC#FrFz7eGLa z(uF=s(90~IVn|?#zgrTXI}4HyLxCmM%at1KAzKN7a~CUdGB;+Y%nnO- zHA`oG?QD_RgSR1;&6;*w#wZj_)~~+_Z1KbJYAs2y#*#&_f-&j2yYh>wTwNFXYcgA4 z9bFLOeSsp3OR;l`=>^B zdTL~!$8nBqlQ`-`cn($*eGO-S!CXFp(=%AxU!8V;(^xl!x*2Tjuc@!7)~C@pglwaVk-}c25r>ImIKkgA@;Hf8Y?tmw1`qMX zVMWact9D7{I4Y<-u(EL)y^S;I>*q`Vc^qw=#KH48?jzRlB*>)#JNPw`qhVc+x=W82 zQW7a0uaalZf77Ls=IA8S7oqWawy}s4MVu@mU&N`-8Qj<3cn(LW@zSo%O`#%Qv6+w8 zJc5e&3?Arj5=Fd0KHge6jdx5TO%6r8Gk!}`D8$v%eUc-w8WEvA9%c|p%k1X&4{$48 zc^ln-J6rr_)L{=#?d7Q!N+0F3Lw-eIKlY)U&$|#))@gL*^>kT@c6*BvB%i=1Ju^f&N)uN~RnPLp_268!7+1Ki z4J$od!My%yk9e3!b4YVDEqCSu&hnF{=^~ajaat_m@eBA;2&Yk5aVB(zr(6q!6-AQT z_bBemT@D`iFfHn4^ic2RHI$yKZJI<~5#N-OH?3Y%#CN!G zhzs<<>NQnWMSR~6kmYnYa5qVh@+0#YVU9D<1_Fky^+X_JWkhL}TKpJ4Q3BTDr+f=l zSK(*)xhKd5j;`&d@r&8E+of33IwbiOetj9qIUJu&k_(Xh2EX-4>J$c0LFHysj07lt zcO{C0vnfsnD1MJWco-Y0qjcol#->ZIl^X^@x&C-1l*DY5ObLZt|3toX@Mq>PFt3I9 V_3>Byovt0>_z#YKl;NMi{{Y*t?C$^o literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.class b/eclipse-build/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.class new file mode 100644 index 0000000000000000000000000000000000000000..a3a06102548f6053e9568702b1a23eaa28ec9f50 GIT binary patch literal 1359 zcmb_c+iuf95IvhXm%1sv(LhKEv`tIWn`wa;f-00!B&3K3f-3R2ah9^wv7_~-sd(ZC z_!oFdC6M?4J_<3mX=|kl=>sp`o!v7tXU@*}*YEE?0qkNog9O7PPaRo`cO7nZo!*gj zE#C6A; zmLnME8Xnbl$dwH2zlVnYAbo}>F>2S=qsEZ%J47(%Jfbd!Nm~i7Mcwi2V}>trEk-4b z>sXGA!24XQ#z%g_t)7;S^@1YThV5#MmhE-Ao-17KTj%e4B1PW{>C`gFGwfW-Jc>}P zBLX5O7H~U|yTFjFR1X8Yn8PCOGECXgi}tu9Kauzc|DoV0!@V5tV~HW_3*FRQX@>dA zmD)oxD>;+{Xquo0Zkr+3iV4V2k0~^&<}r`Jkn$rEGs7H66dEJ~gh^@Su90m>Vd^lm z>GhN?Udo__^RfGACbxqopu%3cu2B09_kBTA^N`{B_~-n0X$-ShdJapVs^~WYBxpy2 zMr(#FgRCq}+U?Ovg4Xo<#u+BRg~%!Tn&D}Yd=_zo?0kg6G-k*mJZ3RRQGj{eq&0~3 znJ_6@OFyvi?hLn{8U>ot=c@qEt literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/abstractcalendar/package.html b/eclipse-build/org/rapla/plugin/abstractcalendar/package.html new file mode 100644 index 0000000..72854e7 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/abstractcalendar/package.html @@ -0,0 +1,8 @@ + +Contains the rapla-specific classes that helps in the creation +of the calendar-like view plugins. +API in this package is likly to change + + + + diff --git a/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarker.class b/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarker.class new file mode 100644 index 0000000000000000000000000000000000000000..97f90ac4de6f314beb2b90757cb92fbac4c81bac GIT binary patch literal 5788 zcmbVQ349dQ8UMdzv$NSu3=Jl_pd})KoNS?py1_sQr{(|>g9KWgY=&jX?#?EiDz-!l`&BW+cN}DrFi;JE8Mevqp3)+)-HRc2*Sl1m+ZW zZr7sPupZtd)pVMPl$qpa0pF(HuGIq7T|2d1S~#vHW8psAGLo@2fxxn8+(;UByFh6} z;{b&_&0#%=3REgk1*!^rI^$Y8t>OYy2`Dk$?$Hvuz=aKsQ}vcZ;CU*_;HQQzBdPaf z5<|MxuMNeyrMk#Bb8my0uG_k+n4rR$wmXDY#sqz7XI!wy3Dbe4@_;ISDhi z8&OA>z#^uqn2xYIIX~0>$h~B>p`@mL)KG35~WkcDy(Kpq1gc~o^es0uDfmCHqtw^ zQ;$lsYbSKZXs)NF!&%qZLgL0g*+yiD{YFAxV_FG~o~=QLf@=jr1+U$v*KdyKNn@XG zDd-ZIQRr{(#{u*Rh_)csV}lHBqrie9Tq(ky0lBA7MZav28~)G*sgjaO9`yT-vFoA6C4Gz`%& zbJAtTV!Fjr&eo!q(xN-`FwcaznG6>?SKN^cyW-3N4O}!CrIi^YKCD{-Y!{f>X=dWX zNxRMou5Ora*98&94hf$z$-C^q(@3zQ7*P>NLcq^T*ORo<>J20(ItA*iadrul-M4PL zY1MgJMV&k?dAKdCTOUiB@|csRZdPH*yaa61)ms4@yA)&u8YM-i1%`^ciR6teRADw8Ff| z8uA|7+1wH_22GkzJin%29_%CKcCHQtW_yi0lR>^nC>fL)bwT4p!D|+eXP?7XRt`O$ z7R(`%N>>iRexol=DEwmTP3>6njOg`aQTy!FxGA z6{@=6ii-Ei;tt3WgA)M>Ra@L;_IOe}A$y?9B<3}pYx)9h&lSqS#sS%QKCI#+(hRD2wVW!h}r(rlAmr8YMQIxw%#uCssLiz5m?Ngfv>&3&rkK75Lx z%U(HolFT0gpJtGStrFrOuEVH`V>nLOohs>N8=CL!9l0jx!sZ=$WjnrK#W+4oGP_me zrfuFcrOmrrhI2y2=VZ|)sgd(gPO`%emt+AD3|U~T zqd_*-XvVTQWc2BhqPYYIlKSqfi4sG?=AlLoSXQkw@5JLP<7RY(1iE^9LGA0Lv;-h133d{;R z)_$tuXZSgpLbo~HS5gjP58c99Jrh(F@b3jV}1y?8505O-RL?QaJT^=>i!2u&%VIqbRgVVdWtuD?#jQd%>(8+(pLCW*?Zj&= z?=9J@Y`X`28QHU@{?ij$o>ZaW3HFITGh;>dHHN%I*Lqm#9G%uenG;;bldqItEHEZ{ z|K@)Iz7+n-6`+;x@~6C7j3RgxGw$O<399)w$ai2iMMIeBtV%V!Epxq=&ptj~XUdH|uLJA`Mgu{Vr zSlq>cBq9gK(Z1yvR&-BwpvPUJH!DjJ@r`2*1=mH&LcUYjHjedMLcWu@uDbgedL#Zr z=m_~ou_>a2%0f!%D6WqLT0(&_Y$?I!Lzou{G>ziMaYVON>&FlaDWlj~o#dZUq{fgg zf!w|4;MoUSj?lx67)A`YX5)_VYZvfR9Y70XU5G}6v6!zbu>@-w^R@hMBjekOHtxCx z2A1PBT)zXI4o=&dTt=G5=|C2z0A7ce;$_5XHfLLjSSfWIcsX7{bQa?#yb`ZsI@fa8 zy$!Es0yk3XcE0mY0u}pdB|!N(cr7&r9JJTKca{z*3i#F5Tm_tjBMM%xV2wg8I7==B zihic>T<4ZsPowTM^$U(~Z*p^mb@WS;B-ql_Jc>6T$6F*PT-y3618SC(b@>p?#~IAV zDarjd`dY$_b12Me?d7x7TG@0QZ|`ny8N<6vP*CjFLodVM;89-bDB>JppQA^m`|u%hrTUPh&=@|(VK{II zVacIS2%N;xNV%j>NI8zrNCx>r<)avrH0pL~#C?=~K;Yonhh6Gcw}zB4oGj&}m8+qp zbQ~BU5}PptH?Xv~U>38v05@V0uZve;2pwc!H*_TU|86qscI@!*Xn!8x{ds)%<4X<% z3>aU=DF$CocqDs#w6fb_Ss88Jj0Y*_=e|w&io>IJvgWIJh#+<|f09w<4v#|coxuW! zHl)ze@~2TnhA6nVnFxOkUuW_jW*{Z_1~)*gpdp3N_BbA4m3~W>^S1?hN|*W$;riAZ z-(uD+QT;wq^@scq;u0dx=b!L90>1r1fcgKG4~I}Mv+_GZN6W;Kf{?rD3f<-tHNMsp zcb~n7+57_wR(40(L)}7+GnfRbkYw*P304a87f8t-XJe&0YH~vE=&ch1)7f%w{)AU9q qQtr2FHkm}yZ;5v3&E`kZNnp8qU8p&=>I_te}n4aamV#^TyjX@wfP z1TIBXb2~KT7R?zmR%m-}(GEiCN?)KW+^~c6O`<3s6GmR3d&_jv(LDm!V)l5k9ojN5 z%3jr^e@ilu{+6kbQ0tu1vg*E1v1REHxhy|0LrIs45&C*)JBFfASXaV!5Cx$uAXWu> z6^XH`7d$tVJE6eE*xi-7ZKz-!FlnM|(su3eQ-NPHF}ZgNeLiO3O-{D^u^Q8B2bf(E zNEW=Z?1sQu9U4xk(>Wd8NU75W9Vely(?uOUIHgXPbo8Pxg$`WNaT+569T{b)w`jX^ zpz(3}o?v`?S(eP~L+P)3epNC{S2B$N zw3p$mD#?6yC4~%f8nOaY$1Fk}V;C1WVOo|9qPku?ev-4Xu&kSwS(Zk@u?d|G$dCL< z+`vr@2Gh`je}tfp3EX0GW!Ywt-irfk7SF6|m1p_*mF+wYcLd&V-PGhC?yhbI_O6bP zaF1o*7$pLCWA40tmh&mx$D{@(_)hEYx7XM43D|Spfec?aZ~n*#9QGoAsC}|4D(2HV zX7HInXTUMY(!PA8z1IzJ-cJcnyP()@q?0&=5dpL;EC#kmYM8|h6RDEEl}&eS(V$KziBL~ zXQ8Ric}F*gTUg>Vz0piWqRLD4c0>?J$Q^-nEa(4cotf=f4oz#bWY(g&pn(%)=*R~o zvaR7efm8n-(E_PuukKrN&Q{ZA^i2=f4W-I?G3#267uas4B*P7_tm8-g#Co-S8NC8l zJgsf{I&uIKbX}i!`5+b?GYDjW5zf>Ou1<9J z^{EjI^!2L&9PJ#x(azx;?Hs*)&l6my(NC>2JT36Mi~C4!Y!?H$@m&n&uJ7V}?rd@w zL%9o`yBN;>hRZJ^%~AfRA`6`ASjAO->$F6DyoWS*wmd%IKW&qoBs$<>?j;6($2D$) zuW&tqzi_*xXfN^MIQR2hL%%}nc#dRp4<9QQ#m8S^DuL%X6Ui#U;XM@gF#kfC#w4at zqWw{xhaw-IU;riztdUd3G}f_*jR<3oNQmPAqdF~e3CfS*>&T;NK1@qkrf-iZIfvvv zSsfaLhHo_7R>%9?HGI2IevFZ9GQ>WknrNsfy;3jHeNX8GBlVbjl8yKSe~yOj_8 F{R{U)ubBV< literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory$2.class b/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory$2.class new file mode 100644 index 0000000000000000000000000000000000000000..9f2458158232597f5a2c9aedae3ed01c57a98afc GIT binary patch literal 3652 zcmbtW?N=Pt8UI~iGn-`+aFZI*RMr%ALCC~t)nsjy5K@T{FeF%vw!Q3LV8ZMS&ddUd zwx%_SFSWL{YU{gw(P-;iY_e!`?3ecVp&$AOv>$p-{SWHb9^2oYSz#cUo`W2A=H5Hc z^W5j<_q_b|vp@a`z;;v()CqKZ{)FYrX-8VqPG!P&Ejc~y*=|@?{7HXG`BwMh$v|{6 zpxnw{Sqwe@XxnxJ4Fb(a;qOFx4 z&kfaFC~!rBccNlj+SuAh(yzJIcI|MNz^QzKZdI-;Bm`Vc$pqPQecDF^8hX5vS_^?o zOc+S()dmx5khqeZso!?h{z`dF`3L2gqXe@3UQs$D(zo@# zcG#c;B+!#kVO6HKZP%_QV(9cC<&S%QS(OA@^ZhF#q*tS*&^}@yN5wSBoE6O41lPVH z=_)6KR%|lxHQKkpzuWUm%I}v)y-JwD7HrZ)*O<5#d150_Vf=~lO`!o3tI&;MPJEKX~+xgNJ8df5pR#(QVDIx(yWEG)N7lG>#>~(jI&bU zrd36ykim_($-vhIZd{FxCT_+p0_!JK7!`xk9@C}59Hh+ct9 z^D7W&DD1#DHOU>+E&-VyuRQI!F+S7S$9VK`qkIjweiH-O&m5B_qPu-Xt_zjXI3HS$ z^L{y|90Lbxu8B+QaOg7$c2{hNP*39^4UJ=v%iu1IXl?J-CMWKQSqSY$jN-6?dj!@k zx{UreaWC#;6$$KPtOBeKeOlIcOneuT#<3eHm&R<)_tj7t`EiLRg*1vJ&5iqBInqRF z?s0*xl{C3Pxtcu%9n{16a@)iaObMhzFTO`$WB$V18O1@2q~QvrhMDz~X-o@T*(2RB zH)E^WoXc+D=cqoNmWw(=uvKTcZz2HmF)fQl6$EY93#cS|S5@K)?TK_8_hnhldj6Dk zK)2S<+eZd7m@_ad(6X3%%WArbqc|pDGQSp}ra@Y>UpLc*bLP&2OL}kYt~9vzeSPf=`r`tZ4Kln@puO>2R1{0Ok}gJ? z^9d6_*2$12=RrGkl=l5kO#Bo-;~||pq=y`4UDC19S#4Pq?5l~4 zj%jtBIF4VK_@(ZxjX@~=aKASsi&GkC&zpDwFEZnTNpH4yuBfJCIi1P8SU4}NxSJ|Y~+JkYsYK}!M)K-3N zjNM!-`ArD|RuXWfly-sP@`=^ttL{1MXHWhQmv*TXejDm1IDLlU_-u%vphAGE=iVeY zd2j_b^UY}4$tFIOT&lwmOvHX&W=@4BJo7D zt738<&dyY4ODbC?(`jTWad0&2@i-ErFZ}@b^R=;xN_}U;M|fbgKKs4l5Ae{=R7>g- z(aHZRPEx{SRs1L>eDY&7wWMn6DxPXdRq^a;Y#7kuI%~qJcvT{Fe7y_ybkRHO&iSYD20`&Yw&6|u zj;l`?%HQKHa=cB6*C6#7P8w)6u*<;c`v0KU!14bQKy?O$fp_%dr6x*!kJNQILrI|I Q4&HH&s|XJ^%m! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory.class b/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerMenuFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..8ea21102e1c6e2a115d2a45bd2ce504dd5d2d95f GIT binary patch literal 6329 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.class b/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.class new file mode 100644 index 0000000000000000000000000000000000000000..e5db1bb1d0bacc068933b3d399919964c7dba2f8 GIT binary patch literal 3420 zcmbVOX?Gh%7QH3OlA?5oBOHSXODB^M%T_GMF$Cfe5@Z4dDe>4D48R;lnV0);hAQ$xP_QEB3SzgICmo2B7J9A!L@lRXI zu1pEUk6VuApAa}OT z8n_$xB=8Fw-s62BlEOX=BycZPUzm=c9AHNA7ypJY{fqziyKs;qBVz_~7#A>PrIL3W zD>Jg`laBqvJ*suk!f@x^dc$>?evF}Jc*4LDOfs5H<>y_yRd+~OZ1{=Hd;<3i9P9+O zys@*Hv*n80@^b;pgp^DH@P!N08hsz83>?Qp0^5il3JUBAP0Pt;KNqeQ zr6a4#qeTfkyp@q4bCWnFFn6j_F{SCKWmEfOO5gXag_f_(;hI&cC?{hsTYk;-Ysy?w zE9Su;6x%`5cTMS->M{xNR~l+8g%ikYyQc+qw+*u;Yh#YsPL(Dlaatg8I6I!5%#LfH z9yjm=&M+s*xIm`Mn+~@D`J{&%A7@<*_8r2DVMmwuvNW$X(b&%%XByWqW)vh%&s)bzc|S zMo=?dE*Cc(XG^*fueZ9(dSVfTs{$tj>Tlk0Mr3E#A)#T}4%o=pPc+Tj z(ZX^9mj#age1>~WHgE+ibf5GEac3D^uhee9j~@7`Bwk|A(mrTgUpDXxUJca+ArQFt zy6SY}-4eiE_^pB0bN~|!U>NIoIiNw{!J9U)m*EgL-PI%72}CEFHFsGb5bqjzTOWK> zUawoeUi!emdwOY*G)}8#*|QqH>*a0PY@X#IoxtyI^1>0`CsOzW{*=HUX={g=0NudH z8`-ZFb?9vQmYoaET{RURbv<+@@fq(XUH2Qa-JC*&bk5dic5rwHD!cKRf^%-mE34C% zmbkMECPWEuIb(Vw_VOT%^6BFPeM8_o$uVyjh+sQsG0qI!!cmcu5q@`#jILql$U1hF z)^O_=82lF(BeML-l=>`rpVJ z%)&bMQOEvb-`6-$iuT99N|d4lI5=C14IndH>I=s4V4N7h=xiyeSLRBwWGG1)N>ZMZ z98;2GN@ix~&W?=y8-uGjq(A+sRUBT&eWgQdIC?CW9g3~uSauyJO6ikpcqIMkDjo}` zPwHuLb9zosf2pS$COyZ|Xg2*T{rM-o2w8cATmZxLD}x;v!L1nO;hANB8-c_aEM7!B zjN>W}vxFv?PDk)}OyVEB8eGHu_y$JIXq7(9YV!_bcFV-<6X>J8?At^kB-8A?P zJRF!|h7g+p-Gc^RpaR|SJ&q#W*M!?v`8?-Z<~_M`4&f znyoyuX}U|<(5A8>ypA^r-Om(#6K@e*=z8b3H(8HxU8i&(^XQ$93Z2!!W3=$`0Nx0N z+VDd6iJydee=F3JgeqJY>O<5Bu2~;%+Y(QIw2I$%@**B6pY7Tm-!$Z7eA3>1lwWOh eH2vw;t@FXwu)w056h-kl{v4?M3%5n^*Y5$Yj$qaR literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.class b/eclipse-build/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..ab16ab57748e76179d94b365b682c2f37a441754 GIT binary patch literal 1921 zcmbVM=~B~B6#i}lO$%|0f*VTRTfxSCD~hEQWo&_=$c*}fxulmG2}$NQ#qm}A<14t# z=;#k0z=v`?$*rU#&Zupty~(-fJIi;L??1kN18^1dI#LXGec7@k4_s~qZl~pV77qg7 z@xm=ZKQ1?gw91L39!r*DO&tRa`(N^HZn@lRS&Qp0g&pchGn`GVZb-f*Uios(`fiQ!Pay!^PjyjEUWS)QMHvQk}pTz$&0 zr{a6D+QDwn!*no}mXP(oB_Mt>p|7~g;1v1psZ~xDi$V;fzwIuUTl#VRL*F50%3t>@#UEi}3HQV<#oK{Ej&>=a2lDAS}HG^}+4&_vg+p4H?DlP_* zwvG#Z_ME~Gqkst=7a2|@tR<1{Bw%0?mq>{>n>(^4#R3Vo0^g(dW{~;a#r-EqV#|?%NYS?l}Gqc_aMY%oW`>x;~!{{Fpd{%gt!7YaI zq(-fdQ&i(y7hY$M+cci9b=+Z?PH6u3=Ik+&MG5zGOfg*V$C82j(U1)+FV?CIS?WC1 zpcMUII+!6%+SHj0clz#T+B1!i+naSB{2Fc|S}n4=2>HCX;nO&s{{zdtYeP{>!>VnH z*9=1qzawoi=S16LtY>0-w`(!lOgKfGMx);#QaBnd99rE+k)@N&&~pmIbeF*%>?O%Q zl3b!Q`eaS^3Hv`{^gX?#aD@Jc=mbVc{U8~Mq#$M5MO~;xX9OO+_!-9&SUMIeh@lj4 z0w-heIGIcQMqtg%y`w{URL~=_HwD#ppr>)B3w=u|XoQ)aFwdIjDe5@%$uGzcV$v*X zUvOE&8w|XkFmIZ->HY&o)$POw+%-$Rk|=B~&h{A6^gKqnp2RqPb42D9oJNKGM%m|- z&u%>A9n*Lar#Fi-W+;P7Y>VYcIE!jG*qd}l#HHBpX4us~M`YUl4w-k6X;VXB#;g5Rpmi%&rL>pB zRa|#)O~C6{9v3$-B{0;GA2t+)OfvUNl|j_*M4G{4pSvR6kj8&)O+M?nVhL}$n87SN zYN#D`X*+C?c}wwDBrutld+f(YihX`nZBg+4MRZ)r<2H&8?g)(Ae*U=N;x6t9t z?EEAz+S=KsbsdCJ%pGo0(ux``9^j$Ca9~I#v?Dcz0ux^8ycTJkO?F>up6qHU!!D5YkRdFAH^;!P1{ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/archiver/ArchiverOption.class b/eclipse-build/org/rapla/plugin/archiver/ArchiverOption.class new file mode 100644 index 0000000000000000000000000000000000000000..e6378a78568d6c9b3e9ff1a532fb96f276696f39 GIT binary patch literal 3855 zcmbVP`F9)D75<(jYZPTtjN+IE9O9Tj64?O<*$H+qC@#>kG`1%h&8RaY zFLVjrfNpeep&N9iJESFYgQ4Z;_J{t^b9(wm@F#G3`n@-@CA&UphUV^=i?~1=F=0fn?EKI%``_QJ^PR*DH9XvgcZE7#Ic9vD~8R z8{-nzSfw;=`2zwizE$$(t@BRN^7B?O<_X-DyKK&zi$<_uyR*i*?3`7&a>iSva^i&T z+TozU{h0-H&BSbT6`6=wc2jzY{X&^JwHJQS8+#?0;0>?AT zGkTA;q z2V_bN9lhw&aDXt^xvErB=trl9!!$iLlsMJOir^>l4!`6_!*PLqn`Y86m%K`7C}(qO zoWe1jkTE++-esnyhGfe6@ev)Ta9UtXV1<#Qz&*9}nG2y2$wp1rWYWn&4cU!QbLO<= zBr!~yj4SeYcuujynwMpg!Wld$tv$n^ z1{~Sd${T1P()sDjRzX%q5*N7WP;Y+{;@1QXB-vU#{66$ATei-eCc^W5#uyU3Yb``lfm14ic z&bl@i3CVKSY(WuU;Mi?@BOpd-%noW0_|6s<59YiDd6@i0$FJm(NK2)X9ZJ#fb^KO} z+UWa`6%>5C9D07%F@s=?w~UQMuXSY&*KX;~6E+h*} zS$m+C+)8LWhB}t5f#__E3aw^8i5uK(^=8)*nW0~fJje+;9i0JXi|r1QXQ(iMDUrUoOdP8Y~x#;Zy!JlM;;Gd zscm%kEaT4Z6>QJ1U`M`X=Q8e+gBYKJUw2=}F3#@GFJsSj?7hY%O?ZIcX>JB|(dd2r z+l&3^#y(2gqHU4koctJ+_t0!y-VZjy5HkeWOs#)+FJpgh1^u*haJ2bt9LmR95^rhw zSSyZ<=i{w7I-YM<7iwuO^;OZaBue;*qc5tM{42`IWbY2*p+^CZQ?OGk>{&iu!5;P z{dl5^kM;DXil|9~ zFglSVrZI)9BieHXnFSr zzTJeA?Je)V3@!dD;;}&ql%QUe*!cV*=Uzdg<=&H0AlceZwpQ_S9cd?d1w2B3$I*@n z^7A73_b7jdJ;oU4F@#GBbvMn^_!{bA{0u)=(2n47{DP?4$>U!#8!?4nN9;Y^El!E| zE`t3Tj1 zZZ31(U&E3}zh1>3>ugLY<95U9#2Sz)mTRkz@+m>b(tqB#w4|0s#U5J=UkqV1r@|1S}_`u@{v^efj`W!9m>M8+f26@AHi4f zDMS+u{_p{ODC3>omL-ZxXtFz?wx!0$Ioxy0nFivju=D6lND3)s>98yQ?J;r z$)&Yt9|>s|8h#>&XK%L_HHVOWIZ6 zlMJcN;;R>{>u*+yg;I&ZC`M!@U)pXZ&yZNM9NV@1Wd<#i-C}52@ya5J4s`0c!q6FE zRvccdrO<_L2E8Kub&AZ;o5}vk+XjZ76m%qrp=i5ey?(eOPx{ZV3$2u31u&QI+12T^1!Fk8Dd2@9WGN z;;4=*p6hdxEc3xJuX1Zom~;(}=bDk5<+;0dr7pQ|lbt}(E}z{>V3c8ibmxMr&V{;j z8&&14AoOm>E!@^I!7v=vA<}UwH-!wcbA@6n1QJy$FOio#uV;gmZ6VYu;5c4@6>%!s6F*OM{t*+|C|K3v)c*W zrL*WpYSafpHb?C~LpG}J-@2^PI}B}f`(cwXjQppI7~5gLPDEZtvSmV{^ z5K;P}`ZeM6Rd?5;mYz5#_p{>}enV(Xv;*;uAzAY3(h|>YHI+ThSqWKlYVa{igRIfh zO3zg_&-5j0rFR>WWND|}46W+dX0R_veTH#Nn;3fOoum~s$_ezKFR+4~X|x+qlU4<8 zo&1V{2o?{FAtV(#Q0!~u$Z#Fq^lrvgV9gl%7;vkIA#^Z^7DBaC=nafCpzkRKjlAck zjI=REssriMCm3(Vv@xljU|Pcmv>ZNHnZpAtQdJ%XJSk+RSB0B H3XgvQEZU+s literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/archiver/ArchiverService$RemoveTask.class b/eclipse-build/org/rapla/plugin/archiver/ArchiverService$RemoveTask.class new file mode 100644 index 0000000000000000000000000000000000000000..f546a6d367a6d850fee833fc3bb5fa7b2a007a79 GIT binary patch literal 3197 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 X`9eQr=xfK^H~5yGvcdc4dl&d0!jWG9 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/autoexport/AutoExportPlugin.class b/eclipse-build/org/rapla/plugin/autoexport/AutoExportPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..4fb083254c0a088c7db496d2eeed98341c460962 GIT binary patch literal 5106 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/autoexport/AutoExportPluginOption.class b/eclipse-build/org/rapla/plugin/autoexport/AutoExportPluginOption.class new file mode 100644 index 0000000000000000000000000000000000000000..363682e9baaf8c7e67ad12568153361190cea0ec GIT binary patch literal 2672 zcmbVNT~ixX7=8{3*$`4b(nzh;HvJ}$c3X;KORc4$*w#QRsc4Fdo8%C-EW2@cQ)sVx zvhNV^+}31m3UA6cDL@Ej;$doaJ*$#Ynb|!TrwJ#->xQ* zEIW=R4SU*@R#o6o;i2)!Sl7KZ)2``v^2@Taa>H4l5QtqhZPULdaC)fF^1I|3t8&e8 zSM<3czr17na^0WE&I=@Nu2-Z=#?#O(aN?O(JBk9)yi=74M9`CjhPZ}4fmilTDS=+3 z0;Pijk)iB-7pR#;Ct?D<1=E(Zjn%Sr?;B-H3Zx27#jxfL*9^|h%c#F>dIDo@^*k@W z1f;`TWl?Rm&%i>UyW&d2m-h@?S^@(@+1((k`-!0FV@Vvr>l%(T;ax>5l>{6Y=>Y52OTzo6s(lP>Aj@W$Sp3r1O5af}P(ip$Pg z#xgxW<1A&uzLnJs36XZyaJ`JVnz?mny5xQ*~)fc>IrFE0D5*5ax{xfkyz zF^3`t)%1$eA}o>!a+Dq<@Bu#5z!|<4bkWOalf*|TamTQUCVkRZZup$Vfqhtg5NwPt zTdsxG2wYbfzI~Nf~NrdZE@Q+VQ zuwE(iMM4LcJy(jR zadxiMspME1*}0My$i-5$uPapI&s3r+l_*n*GLp(1k)QEt1RJRCb$gyf>uqlPcii@487AEcJj6=V?FDsakEN^)*e&pao&zo^ pKS?FWntlW)$7@=T^E*f?lJfVOj<=-{*-0Tn?AB-`u&#J|{4etDp?LrR literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources.class b/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources.class new file mode 100644 index 0000000000000000000000000000000000000000..d1096cb032d94a32b78c97595d3b8dc964998b68 GIT binary patch literal 1240 zcmb7ETTc@~7(GL8OKGJPtcakC7i>Yh-YEdv_qENW_OnAgNgnl zFApRpnE2|CGJZ3=fDnAJNoT(~{myqi+h4!G{{V0c^BD{ys=TRg}h$uPNP@7Pu-g=5u4AoqWK61r`NGZ-z;mE4s9!`S+I zT{}Cr+p%6Xw|Gm=lgC2K5w4Jr7!u{mDnoM7Yx4|-7)DPZWRPbl9FJpQm;nYx7)pml zSKB;j`JyL<=NcGg7+(&XjtIJD%XYZiwtZ82=JS=8bpxjvrv74jnshY48HUPAmz$fO z<9L1HcFY~Y`+;fu+-!xuPi;Ey%|LoSZ`TZ*WytU6*`Tb_z&VCuG(_G$s39;g#W1`n z9A2dm+~08RZEoNK!^jd@l#lA9yegZ4Y4Q!aUZ1>nM8}SLyF|lk5NIBPX4Cc!TwxgO z^Jc*P9ZuJ)4B0olX*TqI5Y$l)DWoZ8UATNH+-`Dz#crzA73&_AziRtJ-D5Dlpm&u; z0@WO@!JvJ~uAueatpBHcX!k=ME*B33QYu$YmdIeh1 zZt%rqL`Q2s(i3}BYd8C_VO3O + + + + Name for the view + Name der Ansicht + Nom de la vue + Nombre de la vista + Naam + + + Show navigation bar + Zeige den Navigationsbalken + Affiche la barre de navigation + Indicar la navegación + Navigatie balk + + + Publish calendar to HTML + Veröffentliche Kalender nach HTML + Publier le calendrier en HTML + Publicar el calendario a HTML + + + Web Server + Web-Server + Serveur Web + Servidor Web + Webový Server + Web Server + + + The following views are currently stored: + Folgende Ansichten sind vorhanden: + Les vues suivantes sont disponibles : + Las vistas siguientes están disponibles : + + + Exported calendars + Exportierte Kalender + Calendriers Exportés + calendarios exportados + Gepubliceerde Planningen + + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_de.class b/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_de.class new file mode 100644 index 0000000000000000000000000000000000000000..6b475e9631832b1a850a8488391ca1916ce1c9a3 GIT binary patch literal 1261 zcmb7EYfsZq7=8}Bm9fDXIFXAMRNO#TMZ67SqC{fCMB~T|VnWWg!&WTqa@q~QnCL(9 zl1O5LiSe61%J`nPfDrs(lb)XQ^nKpT^S1h%$`t@Gdtxo@p6n)AbJDKkC>GOE744$M%Hn zxeUXbn`PhF;&#(`R@)JEZ;>pP>XvDn-UEh6zEEX|E<4J1AH&cYgapzInbUqW3@|{$ zAVcmr?_xu^b!oOe)3G%SF-%p3{P}fzn-a3jdQ0f5+!A&}NZsc3mi}b@X<5TLhKav? zI6nQPtMlY)#j%=-t3R||@V;YdLu}Hs|>w+qUH+O6;i`BhU808o2&TeUN96=h#^kC%cd>XI=eL?*Lh8~FN}>ldv`+hpr77Wl6fl4iGFZhRULy+|LwJWY z-Xn=wpP@>lriSGh^rTM=v6+3$9lMPCU_eO)1~71g3>j|H&n3{JNKZwMen$SI?_8x5 taQpml0XKTYrIv-<5+&cGtY>ETar<=Sl+Vru79m@CzKeT)%=><{(jSCrDIx#> literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_es.class b/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_es.class new file mode 100644 index 0000000000000000000000000000000000000000..ab0956dadd49804037a9e77577cc15d2bd7c1ac6 GIT binary patch literal 1267 zcmb7EYfsZq7=8{LTY(M6KtwKDyx=x;Rm9scCQ39KClW_61QT+$9>*c2UD|H=#YBIK z|3Kvfi3ui#Z~iFbdrk`o!4Ed+Ij2wG=e<7duixK)0GP#m8eI&tp5L^5-g3Cra@tMl zTD%>4;(g2WL+cS8pXlRj5qNFCA%b-gq>*Hp*yJ5%aA+i$G`vs z3=A@i9OYfMMbPkNE0msVV2ELIsanh2VUWq1e$o(B^!4-y{ZBY+|-x0ons|@{bMBVG`@0m4?^?;$6K{rz5x+-0<*xsrO zf0Ny5e5A^hUkw7_vYcObn;fADv&sG0lQzVGKrU(}fRWnj3p01mo zK!i)&r#{ip3X!t343A52zPO@NyOY5!%rT@|F=g!E42IsC7Wq>e1jG30>Mtt|Vu~7; zpwEb5RCSF`Ns?ijZfZ3>{iL(HKIPJT=v_^8?;*3A$oJP)leEwp133lc3FwZ2VFip3 zkcxp(1&k4pj)4gUoF~AD0aF1N3CJCAE-PfZR@*`0D<#o|60OrZu`DIrk0J(8K@Kl4 zh_}eY#SlIqi;w8VjAp3PXsB^H7VY$*p}Vw;>qjnA8jL8J$N&~@kRiiO`o%=ODATUU z$!{op(au#m5w}l=i@3={E{!baRw(%{WnG%t#qE=kGnzdTS;TDR`7ZA1nD=$G${*+{ BEZP77 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_fr.class b/eclipse-build/org/rapla/plugin/autoexport/AutoExportResources_fr.class new file mode 100644 index 0000000000000000000000000000000000000000..d4493c2a10aa4f944d0de05e24cd26236621625f GIT binary patch literal 1261 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 TVP6Z~!sa6!VP6l4C5GZp)ffkJ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.class b/eclipse-build/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..a752dd0d5593e277e248276f74be219cdc6bf92d GIT binary patch literal 1839 zcmbVMe{b7V6g{s=>NGX&7TSyzMpM?6WL@L&Yd=UCBxwqRtW4@CTJ}fv>bz!NT{}2V zt9}AL1AK}Nq)h{f53mn~IL|h9(JG-eQvCd`-@W(T^Ul4m{{G`H03V}cU`*hKAM~w2 z4qRys+)>~0EZg57NIN`KYVW{NhgK`z|H%Co_xGby2C@R@p2!1fxzg)f-|sw8c4%N+ zU@?uj8_0ci=m&dN?6szbcHj&`KM*+I-e@#C?d|5n?X~uL}6gL?E?@-7}Li$uG=XQjt%-`jQiqdqK;`-8>cr=9sb; z>8sWsIklE_mDiJjCdI%~0_jckw@z*P!BGJfTs2T7v*{(YTsa(?SVoD}6YK`%m&b~L zsnxulD0>nXJ~D7!;8LoCl-c78Fxe!Z@R02Fj&1kjTclxs;Cspo1%gwmf1Qt0EN8q7 zUa!Ce??0A_!2JK{NMM|&sSknMXVw(kZ!?tk-aR?^x9Lc5+}8J0DDQf^K1IEB3K=Kc zB%Tv&lU0FgDve|IYwbw0aopz7n%b2kH!R=|zB2ITe@0H+aV8pQvO@LKNV)_tdlEpB zt=cuP#q zjKhD9|Gb`AoVPhXCs3eelDjHb{mW&4hxv>zW0>Nzz!kWFEM_qsS;2!GU5T5;RXgUc zzQFm^Z9Fo@E@pfHZ)1iB$p=b&>YOWFwR5I;;VG9mW9&K?Ws6-i$F3JKm$?2+_!;_? zuNB|@4dzQ+%HUUIpDhy0MIiI?oM|9J4m5TM{=lJ3mO#O-0 uL&AH3_EVutjG;_L;a3Q#Moz9rDNC{Eamo_D!Cl5p63y`STLu`zcmDuDJk|FA literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage$1.class b/eclipse-build/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a3963477c008737db397d72205c520b84a869e34 GIT binary patch literal 1139 zcmbVLTTc@~6#j-5N-xm0Sn-02TD3P_;mKG+ERDCM6(giX-=^EiGBDk3W_Ka|SNfnN zn)n0!QN}Y%12xseu$$dE*KfXa=FHDu-+lmC$DiVN)sJ;UVuS z5$upZ6z+&&F5H(v=?T$jPvQJ0j|QP^NKb~F4BO?4!?X|h5x1jID!WZgm1tDD49S+? z7ilnLbC|_k1_>nbl#4p)_l~agbbE( z-Bf>rAyKY$jeawSTewX+@AuDpqPXYU+r0xqY*aonq@&oC)9TD#P{S?X!PcJ%LIaE<&Sa7tUiQS5% z>I==VUam|Z+tl2@H@9k>LsjJ7c%INL#e+ZuSf!at&^=_9Wd@6+8TwL~CwrQt7U{;H zt=7IEQ>~vM_c;#A(?1gj)6rrR7U@@FJ&Q{ykVZ*Z!ez20Q6%3fV0R2?eaG^L6I|=m zYhSUlSN}xuGcc%&@rKWdLX+gJ7+KhpXD87B4%78PDiWLI$}*MF%=5UV214+~Je%vrSXaO1`=DYnJ^| z0r}8UA+7@wdC_1O9D#P9kvbVsu2uJ^vfLM%OhgjKB|vZ4FmrlQV0R6i9$go-tJ`#* z4$)}99u>Rrd`^3kmksKD@lANtIDtk`cTtFyx=?Pi83LBXmvduc~-W5@ro!?>DCPT*kDW(s4`D zB`4`JrXq`+zzPbuOr9^7z+Qhmiw&?E9X7Xu%QWVa$<(ZToaPKGFL`!Fg@LOi6RRTO zPI}|S6&o76%K5;tX$owsR+r<}a16Z^&)E|iuUj9lS}_hwg^dDl2bvt@O(?LvUKK0g z_`+e~i*OXMwRTjU`BHR8+%yOKNIG@CXgGRNMH!R4hIK2;Td?ZLZ`GerCGSKFNk6UP z8m_aMp~biUAGaMr5Vp{GhIa}MdWxIqg;T}3T5LAFDS1; z?$l%`ZgIbvHhzxGVs|PUoWWlC=!wqY@Enc`e2?}!7#L-Q$vLD2W|2w9xF zMn@yQ!;9${)nAFmW}r!_!7kUzU(kDk4f`5zBi_~4IEQ=y_b}em6mEK`JBNt?dX#Xm ztud_pf!8xP8U>fZyFdK!R6WIcm%=2{xW$ui`2HPE<0sxtvWl0`BBAi$Y{ZXv2k#Qj7+Ucj z-Y0lTjCrdOTKxbw2y7N7@F8vz$jkKl5iK{;!v=hePsop3jOy@V0 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar$1.class b/eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar$1.class new file mode 100644 index 0000000000000000000000000000000000000000..056e48a36fba7b04724f21b913ea810fed5f2823 GIT binary patch literal 2660 zcmb_eYjYD-7=BKhG&Eh>QUpaop#)6QKq#OBMTDl5Hnd!tP_#whG&!^jo87Rx>BT$p z#o-_D3;e1x62K3RpZMTUaz@AJ?50hSFeB>D?Cv>d-|O?<_P0NO{sq8c+>fC{V8n43 zv#zXKGF!E3i>93|IhCp``727@SvJ*5wyS5_!TW5q1t6>CCbuQGxSBd$`v@$BCw4o*|8StGi6!zl}kZgCr#V*PYJlm z7XDW?Xs(6#pXyG{3Pf^FS#?8Tz(5>5di9zC1DoUM#C8L{c%4MaIZfL)W!maOt+Jrp zqFk^PnWh}ZX;v}-+&2y*8eoABTP%7-ZxX}Ar6(b6$6l*AHIKm(bA-I)DneMW9DhPd zf-aCwPTiKvGF$UaE5LUo6&$Q)!<5PEvW+2M`AcE(EB`|29DxAf!Lz*i)Mu(?@XrhaeRQ|F&q=v z+f>_z$Ddp%3mi8GiQS=H5+I0 zpEodtX$m#Hvt`o{)0{pB#$GgVN!LR+rChAayEPTZ42m%n1cuupvEIen)xLo%U{wte z+EH1$v*HG_{0d;(TRuMQ8fE}GS%S|x~ym+@OtH&Wka zKMjDnX5dp?C$e;@X@$VnhJdC%jn5!%8jx6^M$$j0aa)6-Re@&Nhq3{MTg{pn7Fhbf zYN93SRx8#50kl+ha`>1%8Z1XPVTs{#mFLu47Gw`@!;0aKK&oxH+Q~3bflVQVIK)k0 ze>-2pbZT{9<5e|qSL3Ac$BlErD<)r)OMnuS@3+9zY3w=#>A(a#-wd4H)l!DQyzA+E;~8AJMku> z=;AKMT?aPx_v@Jj^bhEX6`X++tB(}@+)a=s!gqgq=n=N04?M!w^v=iF_G3W#2A^?K z@TY+9aqQq~d$8}Pp0~IoCw5|2AcbQilqybBW*5IbNDn>6?q4xDJ@gDW(?4O$6C|D@ zEl|gyA>L2${;6FL(U-~8aWYcJ={m;Kb>tu75~;U7!(@i17xbFsmrq0*tE(rXnH~Hx zpV<+uA zrjzovV;L(%Wu8%3rMxKbK77V!CqAcDy@>pQqcIGM!@r|L^L)Y64tzWq J{a5hK>n}gJ;`aam literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar$2.class b/eclipse-build/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar$2.class new file mode 100644 index 0000000000000000000000000000000000000000..3a43a565ea7b2a5842392c0eba8bef416a963675 GIT binary patch literal 4013 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

X1^@s6yEvDU00006VoOIv0RI60 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 I3RGVGe|y^G2LJ#7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalChangeWatcher.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalChangeWatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..253e965685f5a9c9e176cf8c2d2be12dafd7323d GIT binary patch literal 6466 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 A<^TWy literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalConverter.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..d1c49b01c3b277c559ac9a77e396caff818060e1 GIT binary patch literal 22856 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 z zhI>8XCGm;ym5XU6{I#H5=0NaJKF*Va<6Jqw|6r)4Kwe{R9FRZC+^3}HeowZ!mt*b~ zn0w`aF*lB^J9DdFV%?Gi-cvrPYDD*+h2gIpR45kqtJVE#jo5v)7R0)rCJm`(=%gA@ z>uZ7s=rp`&VVJ_HPP^03eK~7LZGxFr@Ua8x?3z5M3-T?swI+ym>{0EbV@l-lJejKf z0DTV6*!tQ>Rla7CImcB)@JfRHDk?1pRd>HiLg%l*7}RO@(c00*NcVh5??kKXx`XPH zz)5RbdWuc^C* zKNt!3h!EM(503}chX>Wi5FY0ppd~}OEKp2t(AziYSoH#gGY>0Tu3l8%!qWvb zSG}ZOhHa2YW)9hJlWnOLZ__*&yJO#`8J23Ea?-zP{R#Qg-lj>GdVCSKa#1gL#GO|I z6Nz!|oOF)Ff(UQcA(nvCs|gr)mx4QkzbhY5-`!8(TUa8Lii7Hhh-}Q8v_o=Ylx7qT z&TlS8KyxV2@e!Kg>pfZh)a`@7#Kbx3=KzA>`4f}XFWpzhOJVQ>hi~-dL`$Wt!?z)5 zdp~04J76O3!hc_V04DNo_^A)!XzxC1;(PFSI`>kH@1yJR{{8$>!;CIGy|uc4dwo-pzD86hisWJe~Q51 zhak}pQ!#%A|9$mYNc1CSNlv7@#9Pvmw3NYLIFYVR3)H_6)M_kbmU>6MizO-9y?1f^ z1>T5HTUOz+9L5euiVe>}{iR@Z5u!*izF%wOti15y4ZKIzo5g*70c!X~n#fPm41S8{ z^Ox`!Urz$*uNtHs_qEJJdYKNu>x=tZrh_I=v1qBzGklmxl^XXif%If5)%k`G(`bg4 za-ZYAkjETGLTee0ylR5Gi6${6XvV5p37;52+dLTM+K<=ARl$IT9Q7C>8bC8}-<`T~9O7Q!%yb z5Ye&R7AqPQF8vj1}Q7vEkbYAA^x)P6wEaI_l5PmP>Y zauxV{J*%y9Kp&r8m6PE*zW%pV%CAu+zizO0e0`ONb(M#8m5X&Ljn^kY=~ro;|4N!U5>{&4O6@pk4@1sH+{kChH}@s-j;n?bq=CpUNciCMD*-AcFa; zL8a6I=%I3=K20yfbmM4_UanU_<&|8da}jvJB}T172Vt>Zsc0Qs+{}G6T`;LkQ>I_n zWhhfGlxav)#^JZ4wufl~DiTw0%Aitds!;(Sg=#&tYCQ_ox)ho~75a2TAu;Cpgs7}i zYJ5s=1v=>RRG=%WdoIvLrjF9CUQ-hUrc+_5;d^ysOsYj^^ln-qkr%*^oTs}h;!R<_;Dg@KZ)HJGB zCDg2D&}MZkZCA6*YMmV5TyM4KdaFIxT`kt&rsMb{G`P4qSlKwFd{V>@Lb*d~uHFj8 zT}Bh#r_E%!PePw@q~D>rmU_Zc)8|isP+|Mh<>@|1fM|Rr3Mi_2om>5e@dZ<_@7LQ* z1sq`)0v~;jkOrJwpAjg-MKzo9fYW$27a{aKnuCB^Vp>N#E4_79dh4n*YfzYYzTTvyj-RVb=1Bd~m0;0#VtlrGW|w z)|LiM7gP(2f%5r+vV=@%j3HQZS(;fu8Jrr9K~X?eQh}<1I95}!T7>xFM4GJ@(|mOj zEmBL6T%Bwd>1~*=jXSQw?;2T0`aP3}|2@QlquBRyEN^)l6H}2D5CZD6!33_BM}~+dLWF=E>+r zeT9+HX^_m>`n_0o4J6Zf+6c*Xo}7Y`ejEQprk*fjiH*WC#aAk-#^ zcHv#wayjTFmV0=aj%K=z4^$)G+@DgtUd1oB)6nJg(H41&A=#dBV8Z6~-x^FwXRZaXExhc!A2QTm^R* zH8P*oS0V_2f4j!bDfM+}OYZY=>O#m;0$3&uW@E}{_4^^E1GiODGM*EfSxx0Utl zJNoqpmRC$1KNIF-NN;!SgWi{!Zn~I7busvG3HWd+#ON}bt}X`;uJEm}(oBq5uz3^0 z#v1lpv6pRDgOhM+)ptzEQkbkVBHjaDi*UN-`-n}FBN!0Q&^bt^RZHXmM9 X9$r-*US%F$MJ`^f?*-;cfB63Z=P^!( literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalDialogInitializer$1.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalDialogInitializer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e580f7509e72a50b83fa180f8d9f2c1d51eecd88 GIT binary patch literal 3809 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalPlugin.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..1b4b4e91dbb79a85766f601d23b3be1bffe02f63 GIT binary patch literal 4779 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources.xml b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources.xml new file mode 100644 index 0000000..bf91f2d --- /dev/null +++ b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources.xml @@ -0,0 +1,90 @@ + + + + + Export view to iCal file + Exportiere Ansicht in iCal File + Exporte la vue en iCal File + + + Publish calendar to iCal + Veröffentliche Kalender nach iCal + Publier le calendrier en iCal + Publicar el calendario en iCal + + + previous days: + vorhergehende Tage: + les jours précédents: + + + subsequent days: + darauffolgende Tage: + les jours suivants: + + + User interval setting: + Benutzerspezifische Intervalleinstellung: + le paramètre d`intervalle utilisateur spécifique: + + + Successfully created. + Erfolgreich angelegt. + Créé avec succès. + + + Save iCal view + Ansicht als iCal speichern + Enregistrer la vue iCal + + + Export + Exportieren + Exporter + + + Cancel + Abbrechen + Annuler + + + iCal view name: + Name der iCal Ansicht: + Nom de la vue iCal: + + + Available iCal views: + Verfügbare iCal Ansichten: + Les vues iCal disponibles: + + + Available views based on html export: + Verfügbare Ansichten basierend auf HTML Export: + Les vues disponibles à la base d`HTML Export: + + + Delete + Löschen + Effacer + + + No dates available in the current view. + In der aktuellen Ansicht sind keine Termine vorhanden. + Pas de dates disponibles dans la vue en cours. + + + No name is given. + Kein Name gesetzt. + Aucun nom n'est donné. + + + The iCal file has been successfully created. + Die iCal Datei wurde erfolgreich erstellt. + Le fichier iCal a été créé avec succès. + + + use user interval setting + benutzerspezifische Intervalleinstellung verwenden + utiliser le paramètre d`intervalle utilisateur spécifique: + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_de.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_de.class new file mode 100644 index 0000000000000000000000000000000000000000..ca55985a0281414478d4fc97705eede927396864 GIT binary patch literal 2202 zcmbW2+j10D6o&szPLpIph5!M=sfni~Xa*yq21Fs8VuphxMkDIDXJ${Qq3IcScMpdv zpTTGF0Ys{x$`Wt5v3vxd!DpcSSNEPIP-t0ROn1-M>$Ly9_Ub>L{qh@tIrszErf|Gv z{j$~VP?y_b>IYHT+-b>l`QGY)m+m#@}tntF1Q7N_cA5CzF;g`TPDRfXP#mc$-b z*!dEN0gNb=UW`+~r~(Sup>UY>1fi~lrmEAVm9L}P3Cx|inwYyu0Xr3rts2{W`m0~l z)_7;4IH<3)O0TBlz*rMCJe@YZODmTvUcUDE0(L9x+YBwbJQsA2!v3v61B$g7ng06} zhU+@2o6wc9Ut#b}t!7Pq-9!Z(RM=a$Mkl6Gjng_MZl+;)&lw+9*nQqMTcK|ai}fg> z35}o37I1`t8~l?PXZs38tvr1c=W$>L{%L0*0++B3ukk%Gmwt+7M*#>6=yw@M!wfE_KqZAJ)g4P ze~Y`UFn#tv#+@I8!e>SFp`X%JxD{8@+cjfXIt}!IwpR zfdVH^vL0|iov8euDac+K_D!;|G3Umore8kk1}We*4xA`aI5?Hh!fbFpKQvEHuS#*X zBC7aSp}*~1CjQw&VQ4uU%W}*(lk-C{Cym~XEdzU2#wLzXvmVZV&KnVqPraO+1N?Cy z5kKU!yuMf(dxD|0p1vn2uJw#%jX9M~mboS@%vepSK&HOcS9aU4<${0v^e z5I)bM%Vx5Z^9@9qcYY1gH}e>4o9X*An7b5n1KeP8asC?L@XFoCEbrpn`!iO4;yo`t u_Z`mC<-WZezU)%xJ5TFv^y!~D`WX7f%*D)mJhyP(v_&0_ET_q`HU9?s{YJ9@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_es.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_es.class new file mode 100644 index 0000000000000000000000000000000000000000..f183f22e610281a1e5963412a524a899afbefd18 GIT binary patch literal 901 zcmbVKO>fgc5Pe%av6HwTq#-~_iwmVBL8_$+aiA3kA~;!45fmxvA#$8mx|OjbdyV?D z_&8KTf*-(-Ld>q+BC7U+CC`p$=Ixt#<6pnO{{*m)Cl;0%o+atrOM^uec#9~Xi`e65 zizJo%A`Bw$b?Fa+=snMpJPmm^;h6=Kp>rC13cOs3$n!-eFY>SQcouO6J4|B9W0^6u zj*op^90l>*dpAAhp**09!!Q!DkS`gGZg0e34w4zS&|p}<24G>CVeRTYHdYy6;}+$L z&L^t#iR5R}#yZ2+Q9g|*l)5}}DZ}Ggkc!0Ru`6h-8W?UnsG!QQ>Wi4a%|A|g`XQLA zA)0aOcBu;Jh?Z0cN|2paUc|37My6pcBTgG;^I-QM+z)iN%Rf|OKc z*z6XX>IM8O{y}e~ntSNr0bGXaqJ(VRj9{n_^?Kh3HFxKR#qTNku}zv8^bau_o`fUM zqzzc~GSuj6M810Zl^>{&4YJPIXs!&$CKR}bx%nr-(Fcb&p= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_fr.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalResources_fr.class new file mode 100644 index 0000000000000000000000000000000000000000..cab9d7a133f67fcb455b5ffa8fc32a46dc9a04f4 GIT binary patch literal 2199 zcmbW2+j10D6o&sz4l_w6WC#!-;n3iL1Tdo^qK1e<44@1UNsLC+p{Hlhuv49$u@58M z`3ydR7haG%l`5&S3UB7d@)3LnpMmmU-FuQiMK8FR?w+sLVXuF$z51_bzyASX28|r{ zD9kp)Mk#b#zFTVfNy7vs{h-wh;~C?*ereG@FS!049W|5C(@~`!=FqEfblq*cr6e|f zscfRS`~FH2)O@Xw_nJYhgE&$+aQALGHTK=0QMz4S*Is;)7W1BO0ux_S=$V{aRp?!4 z)^rX-3j23)$YEHa_+p$qMih|8K7|upkMZ5AuPbg6H?uk_ZKJ=7DzSbL=doX5x~wCo zo$yjKQL7mknnzCON5^-asvBvicJKPi&9akKK9|Qqg(KU6MV0459#R}<4s08jtSBH1_;#PCRsckJtisL@Kr!X8eD>X{p?FP2s z^peX);HC@SxpO2zw4)}Ey)VMQuTWr^9T`7RICMGjlE4X=H#n`M*r_#xptDKy%L=2d zP`6DpiJ1FgH}wLYr0>=xtka_8UT3o=r-e&hR2Yf4;g#6L+`X*+YxGzQLfzm|3q`j~ zZmBMhkJ%_uQjPSt31jR`bc1?qCyEl&cC#cm6^ z%lS66k&SA(p}Wy}#QZ!ZT_5tyh7u;B6SY{2sT;0@rF_cM@qZbX70$mz-~lLnRzM&6 zDOK47`c|@0)!~YqeJWmVvZYqt(8zxa`{&b9Gl(91S-=;_bKJ!D4X4wE^2>}sHqTH) z#|v9SZftUD_c1p>QJ3718^gAr%m!gPHJ_iD7pGQban%AUxTnxhu~V1v|MpNATux`Q z95xQ*?0n2fPjq9;w4RokiIdc-1@;|Tu2IG$lb6>(IZ;+J9;$JGMAfmbnz&(r9#ne60j15x6gpF;GV zd4jd=^!+K!Tnd>1?lQSJe~oW=zP($%>{9DHN9#TG d=|6M!3EUSm7gF!B%))xp79MJ8PMv0}{|hw;NqGPO literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/Export2iCalServlet.class b/eclipse-build/org/rapla/plugin/export2ical/Export2iCalServlet.class new file mode 100644 index 0000000000000000000000000000000000000000..97056dcdbdca44ec9ab936306506d8248fe0b7ce GIT binary patch literal 9142 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 A8vp8&Z_@Z6 zO4N@g{wU*}X?1G>UrpN1+`0GMGw0qrU%!3$1Yi`m4a67ya@Z*tIcR7hZi(C39Ho6e*}(bBwAxQa0?!XRFa;Rf@0mRRud^q;yU4kLY9O^X6XB~Xw+9m_`~1aTf&;g+F7f~Fw)@s zXFaG7+Dek!Pv>~GJ}}9WzaG&0=BSbCi=_Ld^7YqmM2#)Z&{W3hyALtyP#R8pTcLWD ze&e)jMT$<_Xm^cH)u(eC?aS#yEgz9yj;D{7w$S++U9adQhEw#Lq<^3b9i-!FZ3Q8a zreyD-eGBbOjd-6dak8`y=eE#0oPUdf2&P>hbrZ23f;2UhS#!q_G89IE$YPk_)Jjo~ z(K?6xjzljgsY*1I`+~M@n9J$2Td+QFV{|$99vA6-e}jQ7T${`1-eEldl3e5ZE}fJf u=%?^Odiyd&BZ~n_sqR%HGxU?p5N_b6zMFw56p6$wjlI8DnKX1)U&iPOIT literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/export2ical/RaplaICalExport.class b/eclipse-build/org/rapla/plugin/export2ical/RaplaICalExport.class new file mode 100644 index 0000000000000000000000000000000000000000..6ba5c666a35b375b41697791187b629032e573fd GIT binary patch literal 5144 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 EzeSLT#Q*>R literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersPluginInitializer$1.class b/eclipse-build/org/rapla/plugin/importusers/ImportUsersPluginInitializer$1.class new file mode 100644 index 0000000000000000000000000000000000000000..7ecd80909df4c21554352d8e3b8d740cc4837625 GIT binary patch literal 2523 zcmbtW?^7F96g>|@7Qz+~w1rBgwTOXIR@!P?LR)AGH5h)F0E(^XvOHjEvKx0dfc`^% zuA>xnbo$8;{!!KQHX+%TOdU&RcC&l)-nr-Ad+vSt`^9g60=R}J8kz)BuD5M?W~pEr zr9yezb_}~%a=oDJOV2kl;q!`mUJ8HBICfy01^Wl-4UTJw33Tn6d!|t^oo!=rV^>;% zhPc3m&}!}nhTM}*U`$(q?K)Z852PbKfq1ZE`-30RfA)8f?Z}04aYK5`=0-sZbZ1@5EUcQIt=_A~m20}QQEmzhB(n{3I-~NN8eUDH7w0wf3EY0;jOut7{VeIW4CYPS zNxLk+LwJF+$>F;Dnmv`kd$_1!K;XP0cVPJYHieK^_m#jdP%P5daS87WXhhAqF2P13 zq13S&I?ymE&`}F~)-#K&(h!mwJ`_mSBejmX`iAWm%)G>?^7CE<= zol%7g0YlB^1CLx8NH0cpT*a6`t7%!%57lX&Mph@iR6~q3OG*QqAksq>KCQS$wqusR z*Un&X==d0)keFMN&aADpM`AB0C3VuSaJ_29HXZ#CXmmQ-Y) z*6{$W>v7@61sbB9=N=X<+C5x%3 zA|g`!Oh*>;^@ym3%_#K$9Mx5EsBv8Hw+8A6hsdIiC4A07=Nyg*OA&1&m8PURkFK!3&kt0zQdnhCUQsZM8S)R%?5PrWtSE=S1gg&b*p z?uc!LJ@X%XB1+|+IHgXR*BI1G#t4f3HhIVcfp;QVti{OfXYzq*J()L4;jy5>s!m9w zVZZ{3yj%7xsW=E+ifHP@u{)-c$^&A?u?nuw*)=bN9d}d54s5cu$UBe~fO+YZ*~8WL zIv&n*%A5&gku>#;!{azzFnwS8xX9zLnO6%$SC={k`9GnFR~r(vw)5#0-<2gXa^)B3 zBhS$BG+gtRvW35>-IM6%yUsnz+Jm?G%~auR1w~vZwnm#b@-y^9oIApW=eRtt-hRRd zN4WAFLkm|&MeGk4Yt7x``CoB8hKX2T>@Q6Hj+<+Ju|wQ`hIIP=m{}Lm5FW+vG6qHv+~8Y zYA3$Ix7=Zp!2p_HU|qvy4MQ3x{-L=^gV4B)w_GRTHo2?`5?lO^@x0o`E}v9sRHFI$ E7g%f4wEzGB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersPluginInitializer.class b/eclipse-build/org/rapla/plugin/importusers/ImportUsersPluginInitializer.class new file mode 100644 index 0000000000000000000000000000000000000000..1cb5148bf336b6e6f5b9c8ab922f0ef73614a0ef GIT binary patch literal 6145 zcmbtY34B|19smAw^rh+Rv8>(57$Y0UnsjYgl?m;fj;zD5UaZ?>D}t}dYx=e%ue_vN z2P!I44pH$IJekKlKmj#f84N^4#rsw~@D>FXL`6_nzyJ5rCRtM)A9lR_^WOjeJHNm0 z@AvY+u{)0f=oHHpxCG8MtyI*~#?xAKJUx*zvQZ;5Zd&@vMwd5Uex#@(4e9bO#(_v&r1&k zPHqjCnLz94i=KbLd`4Q$^U>$!AuythXn(7RjPt3}gVHWeMpTShk3Eqz&`;#7qAIH%`h zV@5i8-b6N;*83SmftJ?!hr&C2SjBTRs>9B12h-Exq_a=YPQ& zK_6350@1U~#OZ7O=*58aWKdv3ImtXrNwh`Uy;a2!wh1iKlF5w;$wR$Hj(C;~vZ@#Z zZC^gB?lNu6WP?y_<#GJ&*DV3&$vT{ehn1XOG<66|@?Oz$!B(M{|jW@n3RjsgtE&Mlw~cWcfN+vP)bbRuM)mp(XWbENxKv zX8TJKTZS3ks`HuE?J#gf+fndpfyH)?xi3C2*KGZGEef7oEP4q z;+?W9*AWErUY6}x-ha1>8|8h;e6mH$d+$;4UU|>Qdp#M=NK57KSMdRSkoZsQ*;Iba z1`6RNa8SjE@L>UU)W{}h?G@-R&+B}Do*Ccs_e;Azs^SnnM!U#%cKispXV&7d&?i)U z61O<)(QBqsk{#QN@z%z*#F!psPfwfKXsL`@^4u47wsUy+6iM=U5;<>z(~WNVa2vhf zGSI#;nUtaJ3i)v>Hpf1u)r z_z^+P+wryMkQQgt?YupdF~DRdJz~$NQMu6>RT=l6FrLIkVh?fP$4~Kd1wUh(Eg>Mz zmjD7p#V_y>6%jrY`T%>%67p&pwu{?19{viyQSj?xPEN=S6~D#r=}Q z9i2fWuu3{%8IUB?R?2n4nN7~VyP3D%2}~Wu;g4VPEzqwTtwa*GAFErzS)qk zk1NaOs=?!b0qKyqWI4vOd^w1vSsQu|E6J5^{=foKDS?L?xS;Txhu?hgb9E!{$Q>P# zwkgy_3aFpPB7vLWxjk|RmKJbIB(So8)9%IUzBQ34gs0K&!tFfa##&xi*z(#ay90~( zb{xQ22=d8k=tMi#@d|_-4R{`&&u`R)v-w1DPaR%>b7;Z2yxRyd!{aUmLO~aAxa3

`+QzdaJj*w&cs?gGZ!3&_hLx$Gcy&{5z*%Gt_54KWSdpi*l+^)AC8gLn~Iv6BJY z#r?y!l@UklT+li(iT$*amf&(Mr{op%>I%Gq!4-HVURAVQrua%Hx$f1J(Flmx8sA~O zroU|(R||A`M3>jSuExDiIV2j}Ta?Z&U(o07EZ~h@wLzc9UigDPuf3=X`fBWj8uTgl zqMl;jLNN`&hG6Y9-tGbyb<=p4y-=rd6BqRbyzfTzMS`AS{S*4qmdiE)A)#s zQ=Sax$B*FFoqvko{$JOxbN}? z{RMn!8ejEbPRuuE#mt^NglJd8+~bm#Z%Hi;1$?Jc#{osODD6jYKK2;Td_VBxmYTzO zu>B}6)A*$aw=t}JxCc)%wD;lf_NP+;mopK-rA(@Z1_E^vXX$1nnOL2W8$}o?rfiHL zG_VP~DJ8?yXE~3Vd@|0zmoc>#Uu1H)8hK9kdpYmzqpnG6x&jX{#Sb#UPcp?%;YtzW zyU=NT=WWMTHc$?tNv3!fC|vy>e~>`o>S6qmcGrj(;!k*lKxq(X<5B#XuvjEI@fWVV zXckfY6_3&WrD6#l=So3HxbZhUL0`jon%*u)Ep0$hnt2+Ag5bat{F!ymF z`xjUB^z9(+e44R%3K9Gp|KUp3_f4poVNiT_eP5&CzY1m)4j621GDxNumpV9ztq#zbO(~%Z}<9KddO}}OHP$F$>ro_?`;W-)y YW;OD+{UEow#4>R*Kjj49%TNCKAK;^g0ssI2 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.class b/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.class new file mode 100644 index 0000000000000000000000000000000000000000..c99bd574c6c46234375a0abcc73eac0cc2f86bb1 GIT binary patch literal 889 zcmb7CU2oGc6g^(jHf^&Hx>DHKAY(AvA~g)&*u(>qkdP`sbX2PLlxAM%ktLPm@G|W` z@$oPT34Q=S3UTdZAg1y_q+DNLpW}0V>>oeBeh2Uv4=R{r*iPicm%%g&{ArX;MC^;x zX(CmYa+&%sP5w^jZ+V(zGURCmHpALU@FDOsB_h8sQgylbJc|z_&ftVetaz+ahUURR z-+-eap7^iFCp=U;gxC!u5exNCQ|KC263H1qA)K=kCtKFIHRW;@6 zO(4lnhV^#trm_BS+jlxc-Pv6ici=IUrv+v8-wcM@z})H!GK67e)_wQ1>)0T-EP6ML zj!l+PW|Q$1`WdP;8&a;nZs{9pBa5OtvKkA6kxhYOQCQN2#$fOT%}<1$LyKaA_5$W{ z0}I%qv4a}rdNtR()bL4*?i;1<1y=sh%chu9+#G;gSTp2x+@^|dut%dN+n>?=NMkOY sbL&Pf=i0xyf=yU#;-1mGZ`8Ja0fv#jy#N3J literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.xml b/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.xml new file mode 100644 index 0000000..b556888 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources.xml @@ -0,0 +1,12 @@ + + + + + {0} of {1} errors. Consult log file + {0} von {1} Fehler. Consult Protokolldatei. + {0} sur {1} erreurs. Consultez le fichier journal. + {0} de {1} errores. Consulte el archivo de registro. + {0} z {1} chyb. Konzultovat log souboru. + {0} op {1} fouten. Raadpleeg logbestand. + + diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_cs.class b/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_cs.class new file mode 100644 index 0000000000000000000000000000000000000000..9ca93826439ef6195f65d7b5bbf8615d39bac419 GIT binary patch literal 903 zcmbVKU2D`p6g|_;ey1O9*H!CQQ$OnN3L6#i!4@AZ2x8FU>cY|oNzx%ZHBFXeQn01} z$&ZJEV1Gb=lz3;dtytO@1DUzGbIzQ5&&|p2pT_{6;6WKP3{T@EuoHI@y7nZ@0uk9_ zcM>NuOL>youXX%U#qW64EU49I&j0vHX4C^NH_jYu zb-EXOR!zCwbQAKGVY!pLsz>mz{cGK!D(;Sn+pri)lPP8Cat1?fpa=X)sJ`2mjJ~f1 zfEDtrKz|XV=E*pU44OfiUWO`t4JlSnulNhKQGr%-RA|f%Mg}dkP7@0%(HIPVp!to^ zGicG;pu2!sT*DkzY44&&u{zE5PBm=OqS2$+JHm~>^pZ~I6f+0lCfb_3j9ZjZ1@>uI zWaB%UUun;!b8cPBx}V z)DI4NNwV~UiTieR$bG#{89TldfzU4*a;^4&!P-^k?kdCb6@Vh<8I~^JQ^FzxO1NPd zr`$i1YEr^7!`A8JGv`DF&gqjgXOB-M54+B;3ZhtQXFpV09Vsctp5~%k2E$Doc@!8H zdm`X(;^Pqy-+Lp|Nv)@RPY%3Ln0*#3>?EaEki&|N+bB`_dMc>f=e_@tl=P@hxTXR# z(HgDx)v}c%uJ^r=q-9ubrNSmt_;&)^?SU!ofsOlc7z(otvT{9wq0&!gyeCZG&1 zWzV5OwnldW^SFftY|`3Bg?w|G@?CJa#6{CbzH^Q{f8m8Bm_qC{0e8_%z^k}N5mR87 zRs*)ap#F*0lsd&$6S@>@{lSuu8TJKbn_>!`t#hnhX0{V_BhARrl#6w2B%BWuw$0y3 CrNwpt literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_es.class b/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_es.class new file mode 100644 index 0000000000000000000000000000000000000000..f071005b837286b33678382dcd7bdb49533a168f GIT binary patch literal 915 zcmbVK+iuf95Ix&CclSaX0+bY7T1pb67!cxtRy%LU| zCoT__kl+LOD8#Jof~eXTEO~ZzcFvxeGyC(`w;uo=;a(XF43DJ>T;B z&ZW{x%vJ2ZO#S!9f6HT;D4)k4cwC0X&_3{vJU7uIbO$2VXXnq8Xc}^ciZ3J0BONm| z_xA^Ba_B{Y`+9P~eZ4~&yM8Dlp`S4nI^7Y2wI`>%j5@>W1%NUZ8CK5UQ^7I=D!5`8 zXWai7%AkT(YV7#Ii8JNS@xv2`D;w04E;i2OxeZtY0vKP=I+n~FEMO?!YwrTC6M!q@C_|7<7;-Y7OV(%0;{=!RXFoW1x0&b$6g4c12 zBBsDTtp;p;LGu%>8FhxOr*s+C`hz7QbL>;fHpP^B_fN5Lp4m>(tt=x)Q!X~Km2%!q H*|vWJP2$MA literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_fr.class b/eclipse-build/org/rapla/plugin/importusers/ImportUsersResources_fr.class new file mode 100644 index 0000000000000000000000000000000000000000..b1f8e08e468d8ddad7f44c29a41e58b7db79d480 GIT binary patch literal 913 zcmbVK+iuf95Ix&CclSaX0+bY7E+q+43>D&mRy#`$l*%ySVdiDI}D;&YW~@g+}RiYL~!LysjkWwUz3d4CCKHY_7H^qv?sPr{LB(KL$mGn8pJAm4nQ{0S<<99esqt1a}078$ZxV95k( z{r-2fgc5PjP?j+3}wX$VkKaG{hWNHHM9fmR%-goG3UY9Lb71KK!?>*Cs$z2;K& zKk;#>gaki;ABC7*r$tol1xubC&%U>B_Kko2{{9odBiyTCj^S~f`fkdTkh@8k`$6Oe zhe@2uJQHc=zSQ|UmG6oy&Qnih@1w8+gQ0!EKXEsgLFf*GOrGvP&!cH57%VT2q=;n3 z(A?V_XmH3Q-+etf5T4v3#I_d(Q6Qf&lserJgRv7&MFn++l?w*Tcp9khS<&3qeb-RJs*P)~sCT&^&{dxd{>M);qwWj2bLLp9 z)4kZUY9{0xo|3N&Yn{SXJ%WGj-|CK3bGL2Wg2P}YGs^1a42IfJ5BNo(?%lp*^nEn| ztdnOY`imG{o{Xc+pcz!?WvJ5Eh;sGx%0EyWmnhofQe$B_HYiY>6_!+?F&utF^9!Np z(4yF&vw(SA#R4{I?V?7x+AZ`>HC)o7(WBfu!S%m%Qx^-0T>x+cZB1UoO{%B{`?M;u z@fFR_v=-6@x31+1u5rdCBWK*FgjUU%z56FvKd)?ScB??l*o4I$Y-r89T5aMm$M@}cJm2isZ=XH`=-{Y~K;Tj8#*tIAL`AbC9~&D@?8rnf zuAf~!&9fVAGZU-Kq_&@>P9HMBE!YgaFyG%%9Jul;)z}a8*rTzTeGVYKR z1^Qcx{*=gqb@855@t!pCo)jT3=qw>5e~Y3o2t3+tf5dWIe83u;I-3nPTWlKb2TYtY zamGYLGSes$^`0&XuuHZ>mqIomWgS(yj%B%ly4=LJ+(Jw4;6U!;zHH)Dw$PD#IG6iq zQr*Sk0cc^5GN8*V_RsA4Q38+gFg$3NR}ASR9;is&_bCfVio4`%R4H(PLsY&4MtZgd literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/jndi/JNDIAuthenticationStore.class b/eclipse-build/org/rapla/plugin/jndi/JNDIAuthenticationStore.class new file mode 100644 index 0000000000000000000000000000000000000000..06159a8df2ee376237c794b2de400d291c3cbec1 GIT binary patch literal 17611 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/jndi/JNDIPlugin.class b/eclipse-build/org/rapla/plugin/jndi/JNDIPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..9fcebfef1f59e0e6c02ea44730f3d2bd01a16727 GIT binary patch literal 2819 zcmbtW|5h7S5dLlgY=CWP*U}%@mb4a1fU;VV+NRcq6k2LXkhIZK6)&4hSXg%BWf-Q2nJ&7E&%?#%x2*RQ_=xQy==#2Au} zThU!!wYXlj>J`)0*X^>Y-_75eTkzKkIv9?u^DVAh+^*<_m33iw3c46BMA%iAZ;D5b zyP*fDTcT#TX4P|C26Z8K|MpydIh)HAiws&WGFJ3l)2^f$dPALjW`2g@P}Z?)9=E*` zx9TDRmEl~j%&X*V((%@Wo0R?~Gj;lHd#1rX)3F&2OX+eUzg(PIEX^!39Bl}4g={8w zr%=4dkhpGGrfqsR7~&(T5<^GUDT^MwhJFRd82TdbvKFt^R2;_%2BjjrJaJ?=Hj>)U zpc@RQR47O&c%9)yWF(+CT{o?=aOE*)RGh^iLl0S8;Kl~8kkS4YqoFw6gLBfW^TZ@F z7;g690)`a~wInAvOvOcvkjq;#dWBVn;gKefg9N7Akm$hxMpcYqoT2M_7^MDYY?!Z9 zDS-(}(}av~!7d7SOL7~)n=0PIWkU06RoG>QOYP82&a^~__zqxF#XB z>yet_*sErx?)ufM6DV4xQ>9+a;I@KUhBJ|G5qR$m6?ZTfRFjm6#~xiws-||JMS0Id zt#mg&z`TMS!`Vo;=BH8*G8z(9k(aUUSS;jbda-~-1s}FFj>xO#15^}2_btB0DN=2# zXsH_|>B2`0qx)R&O)ZK|$7=+9mK)Sho+x<0a5K_x&X-96aBXhsK3Z1iJyG-8S&`v= zsNxfRN&)8O@?Ja_f+Uk*v+CH?UKlR6DdK%KOeyQevZV7lAr5e_;hBOJD((Z6TeuYL zy~39i%8~+=x%;nN-0$@NC{P6zhROftdr(&inA9Q(IpNBJoCq>FQK-r`u3&>9b%0sF z@A&EoY*MEaw!GctUO4zdK{br&D_lGkE@Zh(~ zs51;jKG&#Dsjcg+1FA?;q2Lj9#YnZedL^qi5Qc7}(NP!%+urQG@})l2McUL#7_Po@ zcB!`)J(^APyxQoaa$5Nx1oOh(7)b=MHHrfkf8 zl5JpdLJl_?b)-lCo#?8Mqx%A_91fCw>&3lFm~K!dGOA$W0y{B=Ohy jCS*KC?-*^x*gs=+!#8|9*xfT6!!ydB4Dh!Sh420bbocj$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/jndi/internal/JNDIConf.class b/eclipse-build/org/rapla/plugin/jndi/internal/JNDIConf.class new file mode 100644 index 0000000000000000000000000000000000000000..e180341dc2186094cd88a15b63471f47909830db GIT binary patch literal 642 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

Tt4X z#3|x%42k(TRV?5$Y8lQIYw!t$kC67ahmVcSN#_#Bf_o3;j`Jvag?z|PMGB?R_^X@1 z`E=w3(U#UcE-X=Yx@3$CsO*J&(_T~p#yamZg8}pz1@H>_kRd1~ub)dIR&4?=P4y+!xw1$3ZCr8m+)n3>cg$L&C}pXe#xLq zwX|v&=5aeog+om$AZk(}QIiUanp7Cmq=KL(6)rWYz^X}wOp-;#+W1@tuHx_2jQ?w> z%(V#PI%b6HiLM)noExdaO^D%UIJl+6HK~HKDdaIug@kO8J;lzUqE+PFI6sfC0~CX zQ5Q;g)~E|B6ys++#;1|7RG~ghR6W}||1NyDlCr)ym4BZ9rWsfKHC*Zo{Ob$+>plMD zh96TQ2^Y39-c2v?ORBw7X7Zo41U(r1!pmX7m#CGO#e%<9w1Q9Yw~AKy3I1Nu3KYSd zq7_zxe^j)BQ1BH+E3^dvtZ0R@;9p4>wdzn+>~6Ygf|}jKYI85^#C-VB9~* z0C|Ymd6+@_2+qQzCHUD{(0-@veW{_4T@Ljtt25*#SAZ&}%YPIv*DiaE26NkpC^l0Du1db(w8b1 zTJgkx*?ab4AhO&-jbUTTPq?3O75j(dsfcoh+MpW_7`B5YPbTz<(0*Uc(pv5ak8piT=?r}#|RxJ1#MXW6?{Pa1I0a&QG#3BG?O#q-KqUzbyz;VMX{gB8>p z*v2gjHyN7CF%J^z;$R228LU|3J!;Re<#ozjhUtz23pOzXQi^4 z{oao~GjE-d{wi%(1ubI-{k6<6MaIS|8dN_=(Gg|M<9&fMa@Xr$u`#N;ZaAvBTj6NM zy%>JNjl3>KHF$hhjvjh%h`lS>>Y}0bl#))K~a176S_^g AZ2$lO literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/jndi/internal/PasswordEnterUI.class b/eclipse-build/org/rapla/plugin/jndi/internal/PasswordEnterUI.class new file mode 100644 index 0000000000000000000000000000000000000000..7d3ef9f8ca1611d6d01e3421f33c586de051c6dc GIT binary patch literal 2190 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 Gv;PBvhJ*(I literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestOnServer.class b/eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestOnServer.class new file mode 100644 index 0000000000000000000000000000000000000000..3c5a66170ac721a395d8fa4ccb0d7e351a3236e8 GIT binary patch literal 1438 zcma)6TT|0O6#lji4V1`Dyl_z{a%s6mE225B?c> zz`+?EpZ!seC*hJ-!r()@dv?!$=R4myC%^xE{|O+A6%{dtIoB)e9>oP z$eDiLl>N>)aDiRD6p;ILM z1u{co$#N{Y%rKTNgpYPTUJ;*M@8ANQcpb@HW{V-YdSr^Kv|OjAqMc#n+Eq;&vz&77e@-%6Nif{k(1(5!sw`ywBK&ANb2EW9 z4C0}R2MnX3sI{Q<`lhJ3QuuvfnIg|^TX-6VFifO3Hwvr1epfiRV+5lr9x)7uc+tsg z7{fSqgYCKp^(w=7gany}2pc>5!jw4`X@->${N~~`<*~+1>3W}&n8dV-DQb%_hrG>e zH4QVEr81I~>(r49y`*F4b6%S^QvI=pC&-c-#Z{w7Q_`SzlY;Mr+;dAre2$^(U!-;_ zz`Ta%ctJqajW)xF2qA93{&riphFkYcv1a-6)E_w$vwq4*kzjH9wa^zSMk|dZt!-o}WF?`|ZkbMEv?eB}zTwu_ zz_XM7lfh{}y&XUo*>}&p(2X9l$RD@SODGI?g1ctaFBHpnsy<-fVA{E0g3@$2t zO3%azGRM#pKk#%rK4okx)5dnojB$!*3f_kdI*2={_q#DnHBSXB=FU(rS!A(5x6F@( ZMcVn9WRas?oP1JP!pk7nWjc@H)n9TYgZlsg literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestRemoteServiceFactory.class b/eclipse-build/org/rapla/plugin/jndi/internal/RaplaJNDITestRemoteServiceFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..018a04a64f630f5087dabd68b2674a237c452dce GIT binary patch literal 1224 zcmbVL-)|B@5dIdhS5KfywJNO^`b!GfOMEc~(-^BJ8rmkMY0}5-vCwUgTe7#U_+RNu zNo=BzCjL>zxdRF{5~2^cyR-MrH#6VN{`~dz8-Qonun=Q-rF7HLyzOzP?VUBH@0|E` z=}6xQ?Q_rB3x9psdGmf>1ZGdPlo2(d&!sEgan~sQ$wGo*amdo(F0YH8-HgO?aW#fF3?5i7RELs-JfvYT!;sJ*xL ze!qUOe?UK0ox#%1^au1ebvk{|?vf3Vj#Dy|y`1x2pYy!$yMO)j`=0=w!%q?d4Be(x zj$6E<^LRzCl{F*2#5FxWL6=GAT|x`Pj_Z7x$8~O$fowxXsdc(99 zx#WpR5?GwrI%uFsjQ%L8h(s>3YYxW#psZ6p^U|)rvG0yWfO(#ncbYicBJq#Vb zL`vt?s*ESFk0DZ4?MYr*_2 zgojxK2XR=!p>@aO?#VcUXUM>^04O)laI~i(1osFNjZxK2DmW&i2T_K$5f7ElMqN)Z zIu$}6okUC!C1(^=YgxdeU_eF;ank0M3Zc$0&`i4_7}uZ&ETN)cP$qU#`XSqNH^X2! zAwxnagdxh-bDA+rTwgG&w%C6`Mi?Opr`FN3WG+=qLpAKGOY6dtT}kO0Er=uR5{jo~ zY)6PrGNT!4wzf2@T17sq6X=TLV2WFscy|^f2qG!)*+De17qlwFp^RSz%_}GoLYhGq zNOcRKv=SNbs95H*Hm7FZVkOg<*UB}E z+ZwHtlK++vhc!-Y-c%#GijbD@5<|3k7MfwJmciYI;EK0n0yzm;hAv;n52PNij7hvq zLVRwnzBcJ5O$*++Fj!6av56juCM&}ER?(ocmsCR>>s&i7;j#p(`{6BGl<^9vD|J$} zCT(hGvo%{yR?nNJu5yE6Pm=_vqthW=rTP(F%E5S^msAnTYcgKP43VF#r532$FibQt z5Zy8vgcB}f7A4n-(?d5jh_xc$jCu&f-AJvfiokhAlTc&=mV7Rg7Q8cLn5ek@Rgg-(X;ZyZbMzzdnV1(-&67%mVF}+Uj|^6HXluXTYj zUZRP4OTxRRtp_vH**88FYKOnH1@MrVMMyJBKEn@xXKbwI#OxI=o zfFyjvaPl#sI*IzqIiudWC49y(^ncae^I`~>)_NnufujrO=y7Fc*v1m~xE=3Av%_^y5nixPG z0yEcQOnf8IyeB#Ox1t66#5|-AxqV{pIrj+N8QSSN05J_|tkH8TT|2OYc6QR6N&4cK z`UA=pg{@%s3ZDE8-H&io>0Lqp3Z8w4<4rc7U)vm3POc#F5F_`=OaN!-s!%w#Lv{+@8Yt9N3U}#_dGl(dwh;B90>2>OMFEL4&nyBCVB+%4S8utOZVS6B;nxM n!zA`CzH{Nj5Zwa;a<&optB#{R?rz;t0N*=IWcWd7;m3agpPFut literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/mail/MailToUserInterface.class b/eclipse-build/org/rapla/plugin/mail/MailToUserInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..77413a32574df19b4e33d2adb8b08e6f9a5aa1d5 GIT binary patch literal 777 zcmaJI4qLkg?p3p_MGQAoS(nG{s8b8n;L2iPAWrJ@>$H?SzLrs;!b%KyFGgL z)7P1hJ4r6&ArFLx2E)=3Kjv=ClhEBAABiAmX!+g#%Y)wY9gktvo5NA-Hv&dnOMU*wGTz!CoT-jwo}DYNOw(W&U?qr%PMfyqh@V%KLlcyM`@C2c)+kWpZK99mhV&f&K;;l`I|^Z zep<*tyowa1l{1!RQ%P?!l2WIotD&PNLw_BmtMuq-!Jzm#vi8WUj{Obh$XaZE$I_^7 zS^lVDE&HPd>$3j^D<`;avCp`9f;*omw}yN4E|&N@joiQnb=W8)YGd253Ed&PLErmy JAC|F4zX8T+!fXHl literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/mail/internal/MailOption.class b/eclipse-build/org/rapla/plugin/mail/internal/MailOption.class new file mode 100644 index 0000000000000000000000000000000000000000..ac830d4c85da449b72420317360f3c1fc848a66a GIT binary patch literal 4727 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 CO6d*& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.class b/eclipse-build/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..a829f616560d5698ca5db1462ad1476b6ba82d9a GIT binary patch literal 1219 zcmbVL-%k@k5dOBU9G-1aP}G99rJ(&Km-uF?m`L=g#e@P0kIS)?mFsP@x5fHj=?f&1 z=%a~$lyUCb(!VcCzD?EbDPQ=;!VE)o z0wS(cp@*RBNEv2cN?)1{hP85Ya_>mC4D(Ipa&M1o8QLRf${fpp;dLyv|B$Z1 zV7V$Pf%1)UO(~OM!PSBraYZtQH*tx^(vDgc1f)o#5+nZu5cRS#iwDHMCB$LDsDh_x z3JOP32gZhtTqw>G!@Y9z13%@C$Ni4eHd^`}lHS52h8GjHuN5L1hshwl_ajx0RTzNA zCyfG%)WeQ2n`1#%%kiwINMd6d*>G7+V+~J;A`qr6qN*86e;0-(#|p;y!gQI2I!53~ zF@{DA{EszL<1=l;-IEsYjV8)&tG=d3CBvC3O_aLQ>d}*154(UO374er20i5j?KHo% z-y|zVmW?!>Hpr8peWqGFN9Id}oTJr_yg9nNgxh2<4pF#+d9nzP1>7YT>Us3Px# literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.class b/eclipse-build/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.class new file mode 100644 index 0000000000000000000000000000000000000000..b1d1212dcd75c4fe4858a1fa55f836d105189811 GIT binary patch literal 3826 zcma)9`F9)D75<(rX=G{Q1d{-QLIiOVFNqawpu|c8iQ|BSYzI5IHI&k^^dwI*no&nH zPSU+i_m!oTr3=s&%F+eW);TKYwEdyshyDxwTe^I2MwZ5k4Ds=qdGp?Vclqvj?|b^! zfB*V70ORDq>sTTn~0oI2w?R+sL)U2uwq zwd&M84Kab;?d@fwXq05QValo299!BHN(cm=uxdmBu zJh{jZvnU0$x~$ht#}>#Iwv-Jd@&bt?rfqsh1@;a_gv+i`mFFGz+=jpO;DVPQUJ^)6 zUnt6&NBwmT+Xe1wo9Nip5)_C{IVG7wF9vj^p$lv;n6{krt1HqyW2{*8dLTe<$#6~e z-JFbht7cswA8{=T(RHMOA!k6u%mNL$Ar=lBWhJ8cCU{6@Nu%$l6J*g z73duro>4Fz)-eett&hPJoJu7OCv@JZ8O2qZV-76G&b9Mx1#-DiJg?ysjHJ_n_djsjiGM>=zxWN84cZwU` zupTy7RX(kjr{mLjlC~G-3)8AebYeg{J_SR=XIUR@mF;8)4Z7*1jujLYi5%ygUlZ8Z zEm08*^DAd%(aZNiDyPc=w?{05Wi@4)r2fg^BTczg9VX5S^b?xXt}IJe+C|A0HWO_m zo2n(>wbaX`Neev#ZOPKo_}o6ELRQ+!f=Rv;7U_N`p0 zCHA}imTa@b##H`U)R8?OT36JO2(Ki(r9?J0uPISpQ#4*9m&xL>h-Ay9E$PFJ+e%SJ z3iQYeAMIodFQs77Gm7VCjau_Yu)_^5JG0VTbxKo)#h53f>E3kE`X29U+}k{NO(!?+ zdo|yqkTj|!goYQH=b)!>ab~_{S;NcZQLvzHKDpC|TbHd>b>jbA$1m_po;-`wb0?mf zJvLL=3?%c^zMF;a=2LhTztZs9rcTmDP{*(F8-k_oK3z|f$Caixbo>@?GC4fpd=hG~ zi9;*unJ)FG`uE$a{_bG^t_CQEbc`8ph32-0#nsZmqt@}+18xfEJ0avLuNbWkGU{7& ze77i1n(98cd+V$5n8KCU8|p?6;?OvPx*5OcVcAp3T}9h zqaNJIXDXQ8M=krYlixRmQrN|j`b*$u+(Ml!C)~!A@&&wF1(Eab@$nwC^D|k>z zO$n^y+}6bi?#lX_`S^ z!qa$;&)xv&Qy5@yV@%BY(u)*+LXGz!{vYhsFrwkm;Qx5* zN|AgVZ~Uuy4a*w%TdT&gTD+7Vq+ieDr_Gcn=}|vkz)Jy{*6Ec-%@ddLGa~rPOBm(o zK<_$UpNy$dOpW4d#O%M$9A;vfcqXxqw-ob2aBpQ8Abcql2+l0oHHRSvGmeD-tcODr zEwCo=4uex*P2hLN+mQ*D7D z<+4|b;srxw&a_Q;fng|_3&M6BUJ{?BvwxAE0uJ3wYLg+hcxZ^SYf8JKqK#poY1E}7 zgOZg65kna58dS70bmUB1tX50g!r9>476IwXNrPLP+%diLxlwU<%?iVG4Yb;huA?l& zpc>N0PC#ptH0h6_wIb|-M-;p?^j$3qnl7zP7sNe3hWeO;8KD?B}zhRAZu5{`yG^b^DDYq>>_#VeTGFn~c7 zj~M!ce2odvFoa>!geB#EwahTwfPz#_g|+QHVYnF;Nrw3#dBYI}>Z@yFi5sqTj$#3q_3fvX*ULG&FExDE zakwJfU0ERLlMJ2zrfZ`SOlf$5X(EV!Z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/monthview/HTMLMonthViewPage.class b/eclipse-build/org/rapla/plugin/monthview/HTMLMonthViewPage.class new file mode 100644 index 0000000000000000000000000000000000000000..12eb3deef2f944969639d31d6687935e00ebb99b GIT binary patch literal 2412 zcma)8>sAwI6x|;g83@BgMJ%OW(5eXu45dhgSSmzNYJ%3#w9xC2jA63aZ!&2n0+m1HyPV5D`|R@#fB*C6UjSyXqoPY7>9{4`HLA9u zSM7Sqs_12>;_W=O%xC)jjcg_>cX{p}86{JNBCv4C!`QBQu2Jv`hHX}ghN~|H2Qol9 zIF$YZ-M6iZY5GSIfu`XUx&;O^R>fSem$yxK!`QZo@=V5IEqTMW3I8t{2U_#&dS-G&B5UJT>&X zXW4qr^imS!4Gl5GX+JgC&#Up<748PrRP#UpK4gd zXU)d?=>5s$h+gd|_^oMb8c{q;NUK;T;cXa4nrgU<6@gyLrC%}D*V2{ zxv*A(`*>ao_HzvnkP#TNYH5xhUq(u)UapWCj>VRwdtJjrJmTBKjN#fjD4lt&n#VdG zV?#xbG_>X9ez&G1?QASL=BE=-xZ`vFI-{oH)Yqx)L%g3ZOZv#vMPkgJ=zduEM Ak^lez literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/monthview/MonthViewFactory.class b/eclipse-build/org/rapla/plugin/monthview/MonthViewFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..19de9c523533ee596426d850bf7e14ba63589001 GIT binary patch literal 2018 zcmbtUYi|-k6g>mT(k-ou)^}Uq7W!D1{Hm zA^LUd;7p9+m`dkDZ zoG;cG_D`kAy*fsm!WzZ<(%uhJi55L$0H)8lDT#h1v|Y!~s~iN$q&-R&24r-!5K>mIQrF!u{y_UD)Y literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/monthview/MonthViewPlugin.class b/eclipse-build/org/rapla/plugin/monthview/MonthViewPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..f1119dab863377d76333813bae557459afddbca3 GIT binary patch literal 1688 zcmbVN+foxj5IvIwHiRG&E~0W(#DqZB`z_uefLaA=3G#qX!)6Ez%Wm9ku=oH!Lccl&#yBo7nsKVkQJ2O4geNLb0p8Wjv{Re<+c&Z^LFy*)v-IY~K>Q$>=F>QU< zvAwN5Q@zud{n;94FM}No34znwa!=}(v@80HjcsLk8rlUWq9~iL+*R)!cSjGs=2gvb z&8p|P0`2!r+w>j^#Iw0IfkeqEs}$nsOhZFbpnJ)*)${u9hH_WshNT2DOO7F}HR+oE zx?xOsTV_pQdMQFZj(brc={YN&YuXiozHDwO$|JNEljs#l1v$_7Ns~_1b@t4%T2bzv zX(&Rz$+lodnU*M&Bz3nKY|E-Nwvw z%bhrj^BT?x-1d_^LBuqMFf7ntQQoY_yf^Benyt+_j-{k6Fpxd0zyiBW-bge(L# zQK;0-LP=W6E=$)JMZ>s2{(p2|lm_p7KZT39q+x<;Mv9j#S*xWni5_N5g3nnpNn{1u zg5vAM6s9%g1%@M}NXDkxY0RL&L$X|M+FpiNM#FB^v6bx!xJRUVIQb(iCsdwyDbT^o z4r@YS^q8VyWAHSKLE!F*3rL`A#goR)vaJ5;9V#34;Ii`MGkeov1y3F!Mr$*KP0ePw zEs%@qps9XgAt=x=?%e*o+LU$6OW`hx8t(n|K7@Uh#(g|shU#ryS|rflN}z$3TkpUl z%xZWn&=ZwOqgd0JLy51&>Z{ia0=+F4)i}WBj_;^_|Fwvm8(qzoUUBNKp%zX5J?Z=B zO)K~g7zZQp*T#o2!I6&lZmy^RdieF7 zXE^%K@l56uhgR3Y7T0*wwGaIb*Z1TSr_acAW*~8Z!8kr5@j0Iv$&7u)h0JAffLt4V zLh*pmWB@qC`7k4oGU7OiTwuJ5ID-ic(l*S7^9hfIksGMQV3t<`q9eGZ8cZsot?&If2;@bHuHGYdJK3gS+YNuD?}0oFk1(!}b##x1Eaa$URf) zduFX-SbEjAyq$eR9q9Q3!>Z(bF(pl9m8BD#3L_+NziCvmt9!PkEYHMF;OW_DmAvOHWTc;zTZ;6aO@Gob6wXh7wRQQ0whdncB3*g0cZhBqg$8*g!P9x%lg z{R;(66a+#kyR5n)(5E4S9{=eb4H_;*(2fBOy%?lYyy)v*&Kj0ltyQ;`vmv)lMWd`u zS_+a?r`&iM@~bK^)dK4rX~d>jgr1nRZ0oRU*Icq9ilnsUDCw!ZX?qzZS!RKu_;Moq zgWQ)t>Gd{PNu6}bw2%5d4L5Ns!c0ar#4sihG2C?7@amY`-5_xFZ50#fDAiF!|Lc)a^B%G0 z1x=(Cb=}+ysWB4A3;Za zWhGJU#v?q_@C60>nax`9Org!?RH#82RbQ*DYc<18uj-U5bg7~ zR-gfHt;^JiQp!*##50;4e~Bx}$(QI)4j<#)Ujyr_{Ebk9Ujv@^ag9#{fgEL=AxgBw zFm421xK$cne<23n>sWH=7$dpl5pF-nwTaLX-cSCH{-IEakK?NolSi1EctOQ>_@S;7 zIPj3a(}X&MKFo4e&0!RegV4#k)6>vn_?V#hZD8O}@PHt0GVrJL&`u9P7sP9fhPfs} zKD!NYKU4BcHAW~`USaMJ@H=>fm2uv$@cHcUbA*3G;YD)%7+*HQ^##Gx7{n4Y&oE>* x05wu~)&lA)e9cgUta2u(j1Ps3yv8k`qi-m+;ahC+46#SQLy1rRIu<;6{R>-799aMW literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/monthview/SwingMonthCalendar$2.class b/eclipse-build/org/rapla/plugin/monthview/SwingMonthCalendar$2.class new file mode 100644 index 0000000000000000000000000000000000000000..c386406a4e9b71b68c4bb4278576996ff3eee382 GIT binary patch literal 1645 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 CF-q(J literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/notification/NotificationOption.class b/eclipse-build/org/rapla/plugin/notification/NotificationOption.class new file mode 100644 index 0000000000000000000000000000000000000000..9cc8e92f8ab5a91be29b30bcdf63f339f9af2a0b GIT binary patch literal 8621 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/notification/NotificationPlugin.class b/eclipse-build/org/rapla/plugin/notification/NotificationPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..c56dc745aa3fbe3f977e2121e10c49fe2ad981d6 GIT binary patch literal 2383 zcmbVNdsiDp6#oqYHiX5rk%wRrw3H^imQwpNXiY+Bqai^8C{)GGW)c>b-JHz^^{e=| zAHc#nwAFL`0DdTscXpTTQaJ}DkDZ-6_x|QS=KkidzkmM|z!D4zT?~ts-B4_`X{bum zXg73IF)c^0>zeB5mZ_9NlXZ7pLN~*W1NB%{4ApEX<>~>~90|P)Qvp`pR*(3PmVKyr zRx7-v*?QBlY=(i2e5Jg#k<0I`7K(X>L@_|CIJRy!(hTx?aqC&3w3jPpDiwyC`BElZ z%dt2jkz{I{p*v^QxP%)FBX6T-+qzNXb_@v&N_dwc z9%$qYwbha_gkgqQgFEZ0cBnQu!%#96a?cm1V|Wi^5=P0f0K;FD@jh-bNQ6?NBrptK zfbb)X;R8%cn7EKjZ%xLB_=o_GRin+zb%yC=$OSLo>9AKF$T+5C+`%+M@3Nnjp|Gv5 znA(ma$uPVSuI>hJS#4Y6tr+5%kui%of>E1IZq^v)FM|nrm*;vX>}YnrdvTwl3zbFop;| z5rGa+y`6o%#jsQi&fb4J$LT2O&ox8RXoDBY&U-MS!(_tYB3_p5c)Q=^BVK zp5Zy2TsnXmhx)17c6g?hwJd|HCYAk?Qtqa9`|t&d624?e1*z1mqo!qY(`hL`9U0ZO zSu?m&xcAu1y00?U5TzPyl#6)@Wh%oJrutFS2-z2C8bb+R$=CpOxvbe-b-0%whP6vP zO)vr7fu9cs`x58=)ez}RB-gB}drn?Z zS;>CECG3T*7Prey!P6}X-~BHx_spW$qw^2|65cVl&v{;@eho5pRabR-r%yZY35JO) znuZvLw5b^wo?N@IbfZ)p;_EfFdCnPv!QIo#EygMqXq56>cZ)o*{LH`BN;4g{4#6kDTJcOVaMbBYGy#P0ulm(-m_Ew~(T1 z=&`#BLMJ}-_fTkLB=4Ddg(rb|uPgLSWKRKUER!M=Tuo2m;5?1OIFk7EHyXU1J<|zy zH_tTEF@1{9ebZmvJOG8cMCJq!-XIsjFX(W)O_87jVTHqg0OH$yTmS$7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/notification/NotificationResources.class b/eclipse-build/org/rapla/plugin/notification/NotificationResources.class new file mode 100644 index 0000000000000000000000000000000000000000..7bad0eeee2f5696ce6a361b92805ce161d47a677 GIT binary patch literal 1698 zcmbVM>uwuG6#gc5?1}9ru9K!E^fGB_iBs@~mU3}JOPW#&I4Mf1NKru6+B^J8-mv7G5=YRk9JAfN_l*a_a zO&xZf(Cz!K)At8m6*z&8RY$emSn0so9DCW4ksgF?8Rd~>IRC^Qy3Qb0zSB@qJUYBL z2s~dh@U{+O8N?C8+}>Wp8vAb0bsn{z$aZ|2ELPjT3RHZDA+uE7VaTp)Pv%i%n0*N$ zk5dfglYTg67{GCwVaDzEwF=@MMXkA>$1%&WuqhA3*n#NiQ0#rP^6l4kjx!9Ev9nrx zpAwWDXBn=n9Xk^V?j3VQC)7Q1@Y)Fnq3r1)Ie4An;+EZeuMB>HglX$u-l3?=I%8rVzVc#~mq%Uph4tetcqbSF`Yqsmb1X^+}Mdd(KazfN**q=0B0 z3KEp#ZMsuazt@a4hr=*op6@VR8gHqZ?wii4c`|B;%I-OCGTh&w@~p&Ea(MXPf=oU! z)$CKZNl%buNjC~N@I+sRkq#n`TO{jvxMmWLPTr@J@pcwRCm&KZmUGxtou)nrWXM4s zy1eE`S|lezlZ>|FRAtJBER*|*YExkNsDw%6$X7!Ja&ypY$?&n;GQ&`5(B1euZm7(A z3g%XA_ZN`Cy%IhKrwNGn6%EX-#{U>f%D32+@%qu&%`a77K6q1+jK6e4>MMo|OUY>3 zIsW$y->&YM+&(YiQ#@qI^;62is~HT1ZF?yXlqq{*T<($csAgsuizHZvzC#S>jB2#Y z(irFIPn}M%Lwoc4t6X}9!fs~r8A`jE%JlYbmKIu5plpB&0h1{(XMlMEaw%}m01E`< zQ{cP-E)u{~Kp5aM0p$_r4TD@W$cVILkY$66SZ^7mW{|1W&x%2A7^ILQ?;7MigA`Nb z1B2AJw|~LvPgLFn?$BDtG_9vdifL3aL+@pLfz$X36$F^YcbLQXID;QBk6&>Xe~{&$ zWd8yM+_heekkmqncyQ=RpG8bAKgHT{n4AR@N+~hGI_{Gp!zXw^D=Ci}Jq + + + + Notification options + Benachrichtigungs Optionen + Options de notification + Notificaciones + + + Rapla: Allocation change of [{0}] + Rapla: Reservierungsbenachrichtigung [{0}] + Rapla : Changement d'allocation pour [{0}] + Rapla : Cambio de asignación para [{0}] + + + + The following allocation changes have been made: + Die folgenden Belegungsänderungen wurden vorgenommen: + Les changement d'allocation suivants ont été faits: + Se han hecho los siguientes cambios de asignación: + + + + New appointment for [{0}]: + Neuer Termin für [{0}]: + Nouvelle réservation pour [{0}] : + Nueva cita para [{0}] + + + + Appointment changed for [{0}] from: + Termin verändert für [{0}] von: + Changement d''horaire pour [{0}] c''était : + Cambio de cita para [{0}] + + + + Removed appointment for [{0}]: + Termin für [{0}] gelöscht: + Libération de [{0}] le : + Se eliminó la cita para [{0}] + + + to + nach + cela devient : + para + + + Modified by {0} + verändert durch {0} + Modifié par {0} + Modificado por {0} + + + Complete event + Komplette Veranstaltung + Description complète de l'évènement + Descriptción completa del evento + + + + Also notify on modification of own events. + Benachrichtige auch bei Änderungen an eigenen Veranstaltungen. + Je veux être notifié pour les changements faits par moi-même + Quiero ser notificado de los cambios hechos por mí mismo + + + Mail for every allocation change of the listed resources and persons + Mail bei Belegungsänderung von folgenden Ressourcen und Personen + Envoit de Mail à chaque changement d'allocation des resources/personnes listées + Envío de correo a cada cambio de asignación de recursos/personas listado + + + + + + + diff --git a/eclipse-build/org/rapla/plugin/notification/NotificationResources_de.class b/eclipse-build/org/rapla/plugin/notification/NotificationResources_de.class new file mode 100644 index 0000000000000000000000000000000000000000..60b3a66cfc23b14d27588cb38774f369c0ac2695 GIT binary patch literal 1756 zcmbVM-EJF26#gc5?2YXvu9GGuG<3snoPxI$C?yRoP1^EPH>sK`QWTK2-aWCWTF+Xu zYgZLQ;({mO8TtVHNUek@H@QK)01~_l>Y3e5aYA~7CC|=&d%ij6eCM3`0d(v}b87gOE0<~*oDirUJ;%b704$som~#95P^!4cUK_6OTbLF&y+H%g_C3-)sqDS|U$wpa_4#kU zTCs3Spf*bJx*Q%^m=jpc?1!ZHA1R-7JVLdHpyqrfFz67+sO&WgsKcgF8Z+-0d@#`F+mI_wD(ta19Kjm`mE@>skW|CMTLQ~>O(U$> zTuF{dk~T-RNx5EEOO9Ncvs3jf)CJ1D(C1zuzt!e&&T&#Ba{1gVU7MA*@D7*SNaMHS z(1OEtHb+``SK#buyEVeT>AHqbk*8&{xA308wcDJu-6nZVf~FQD3UKIYmnxgv(7r=D z3Kb~}A8>S|zFMiT$ijyL^J_GTw&Y$be4t2M;O@P8h(xwK;CxMx z``?*{NyT@SO_Fuz0vswPsm25ZKCWOK1$NMsiZ%wlHtBnA+e}Zb8G3H8?P_V>GqA9l zj7teQtX1#{ES56vN}jMw&Hp#ZoJYAs@%r;oon5LQKdciG#dloIqb0Dgl#X*U`-kWL za(&x`_eBMt;xmClKcmdQm?2QwN^X{$(qz8yqD!Y?MjwkTTaIrqo@}EX@A5qTMgH@2 zFzoQ&{Qj<1o}#pq8-I$*POdh&wUg(C*9@o{pvJ&>2Fw^>mVrVBoHoEb1H}wDV}Mr} zurk0lz^e>Y4>+$I)%i+XiVEWFkA~yg@D)q?94=8|0!v${BLWAS+v2 zKV$VrPHzlXcwNCHuP0cFNz^gL?^WEwNqmVK6sGYlX7D{u;Spx>7<2fYE&pWuzfi)} zi{yCRhB;&5I^%!#s%jcfp^P`?C341oR$k=SlsWuazw-aw0&j4%w$j$%& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/notification/NotificationResources_es.class b/eclipse-build/org/rapla/plugin/notification/NotificationResources_es.class new file mode 100644 index 0000000000000000000000000000000000000000..82248eacd83305d23fcb9a9901cd1159c8e04f2e GIT binary patch literal 1659 zcmbVMYi}Dx6g?9=_QrM+*Lk!l4V{#ioq}Cj2q6gtnzle|0@Nr{6p%IEojOzP?yPp# zMioNhH}D(yS_!B`C8Y8tLIQpi>YaVGZYf`|{KY8Y;iz>sZ}ZwuqJXJ9`s9ZplcGLR&_C8I@6FICDpgMQ0Q%x6@Tood17i zP79q0nsYGZc5VBg?2VEIfx$ z#w-`0a)7zP7N$(3rHh zk0>{3;UvS#uJ8s*b4UK0wnEj|+6!D6%YG;$8IBXFEWE(5c2!1psDjv5$M=1n*$Hyw zayh1~w1riM8BZv;KhVxy3uhTF^(3d@{7BkIn!7sUks6K^nahaVNh*=aMG)+Z#Pybi zHHKQ^CmJPsT6l?}dCRntZ}BG;Ot7A+{}qO+ryc6Gbov9z$`n*yRX0T zWoY3YhIhXpc|*;qdp!3>B~xglelB^^k0=qsJHE#~6?u9F#I9i)C34+WzT6vm0~vlP z24>_NU2O|@Uxdp1&cM=6GUF8#aJhyZSfpTlq-ZTRyZ>+dXmzSX8Sg&cujOXz`5QJ9 z$@p^-(kL;kHq#wU7WV07-EQrh^sd*ii>nMJYH&h1{of3RN-udGTvw*@)m(Zr0=aYZ zrf8de#Tv<0pw|w=DWe@d6=`M5^rdYec!i$L=dXJ8Au0!j>4&Ht6dH5AgCZStWCj?>m#3N6JAEi`R`;y6&FNKru6dUujcwca(m zYeR*Q_znC59(ZW_1XOAzr1G*ah(CZt|4YT4*-hd^%?pt-yL)`k{W$l|{rlw~e*(CS zl{`imuKK~I8CX5nGJ9@+Q+lT7M{+~jRwRATYz}?g7opz|Y!S9Mf;_SeCm&b?%j`$e zH5)RFc7DIr_Z(L+7`E?4!iz$N>Gk!7Hg+v<(_HC15O#E(EEa87dNR7fkeRQpGGv#0 zN8~ZiF!c&T9!D5T2mKhBWPpLA43k!`=Swf@Qq-E|I0mK|&Nlu2K)9~pLA)J`V4y4G zJ*tJTe}CzRuX)|TF^2Lm+1{c=g@IXy3rqT4`Q%QevgHSs48$ry0)O7NH%; zp6UzNR`H`qa7S>L!Vls{o=`a&IKwd3wWQnb_|8KEZ!lbGh>#~GrDa&I>nAPdVP6g` z>Jq1JajGNU<{MN?NVUAhP}H8nzHXU;3d6#EH7&f(_vtd^a8FqSRfh4d@6bRAr`@4! z&Qk}MH9&Ewc1|5IaFJ#~$>g*n-+;+5VGD}kh=EkHQz~yWoF1Ocny-bZIeVfQc!%MO zJKn&jPLM3iqydkAR)v4l7l+nQ9yn>8jJDYmLFjuPVJ?kyye&clSEwz+vD-;(`sF=_ z*%h5gs3Hy<8F-%tQX>!Ba-;2k>xsYsP5sS#f)7OhJ03rdXpj<;QbSFoyRTDW(h4n9 z*OwQ&@#C%-1H%VJj3P$?8qyQZezzlnFRhNcb>#*%)?Kv%slHP%x2UgK0U6vX;zJm8 z)uJs)H}hKK|1AKjV|-IYOS@NmX1@CBOFkBg=yNNeJ~GVBCu>0OjQ#uKdUaK$cdv+# z@d-nYW9L``Uv~=6%w>^N?j#Q!4{!NVW`ZK8E8;J9^8~*2vR8-4}vQdRKoh zO2y|WtYt=@qqvqSPqfyubkLasB?XiT7)^m`15O8{wU*}wg#oV)Q7oq@65ShXYTILU*CQJc!~`RF~Unf=(>UEdBW{^{jSok_9OLP zwMC?S?e70&G-Pn9+Oqh{^ZeoUTcJD)2}0&roC?7Qn*8yK0GKKg)-3ML~a&rEa0AL>OLV?8jn|Q8Uh|TxQ3*` zE;=aU5wk0LJ*hi{>Qzo-aYhAfrSO{mH*10e<^TWy literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/notification/NotificationService$MailCommand.class b/eclipse-build/org/rapla/plugin/notification/NotificationService$MailCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..06e974b7d402931a47dcac7f88bce6ead382beaa GIT binary patch literal 2528 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 X1|IELve#6qLYOeJLGBgpc#Qu)qh&}8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/AllocationCell.class b/eclipse-build/org/rapla/plugin/occupationview/AllocationCell.class new file mode 100644 index 0000000000000000000000000000000000000000..e1b6a9d753633e0035d53d21974b12530683c940 GIT binary patch literal 473 zcma)2!A`3dHjUF_;FJ*&EmM$qRewPPh;=vE_ql~YG zM7@#C+w8o|o1Hgb-yfd)F)k;k5LbCi;uOMC%sy8~(*)3tv z+i|8J5!{iTDjyZp19%7sm0mxpfzSxBhbo~N>O|e=i-}5~HkR5UZ($;t>H=?@ZuYEK zgv&o)?-Bz0_8)DY#%ipKbvyqv8W!>3jO|o7XyRf|<%`(uK6h%2#&Gxm{@|VK;tdC{ kj2txiZj_TEs?Mh=dC0IbS&3jhEB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/ColumnGroup$1.class b/eclipse-build/org/rapla/plugin/occupationview/ColumnGroup$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3740ed90c5d91a042d406786651b5cbe2d7a6631 GIT binary patch literal 1981 zcmb7ET~i}P6g^D>6XLMTvLDK>AgqWVR=S77-HBm{v~KBD615PHL~!%S*s0$cte zU-iLg`QW2g`I{{DbWc(>5nq^8rMqw6d;0V}x9^{S|N0w%ckseMkH8~8s9S;EaBZvM zHtUXO`L$ZJVMmVdT{!a6D*A5o+$#ruvoSGeAT3ZhvoGwIR(R=nbt|%uU1_b$=XTSL z4%DJ3U3X79nXoD1ZH#Bip*C9(nbG7_JeFqWbsNCDGZq~aa$mjQw}$`9Z&8y&yQuG z?|?bmoMo0sFA+s3paFJN7Vz{DKMkJRPW#;sHhsyiVd*flQ3z4S^dS5}VSddIAq~F;=(M@!_!# zamVqdfrkR4N!&e#BOZI~#b98)`xFG=lgn_ALSomn9*T{N+7Gc`WaH9w%t zS$u>Y1KW&EDtK7gu|2yk0~5P=CeY6;#R07E#mez4Q<5%n(8Me_OMSJCZ~fl z8sl`zt2;fh04IFo=*ikLJ?>B>*EIBSI4kp^@jAF~4 zvf8I>4P9Ts@&@565g_>L=VR{ES;aYM(pGrgtb39^)?8 zCS#QK9$w`r@EV3=6wyb|3~lA97Vgg*!^ZCzEesnijI}VSCxsRs>B(#hj|-_5o)o74 zKxSz1dl=I#EVZy+7~1>=TP=KC_<>LG4=l>!v@|5J4Xj{ezR%l?_Xt_*=!-_=c(bmexE{ we__(V_^tu*4}&ut4LmTgEckH)J=$V(uf~8LoIr9+<2g=o#+m9ZDtG+;1rSsEi~s-t literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/ColumnGroup.class b/eclipse-build/org/rapla/plugin/occupationview/ColumnGroup.class new file mode 100644 index 0000000000000000000000000000000000000000..de11a5fc7a916c62c005054a205a39ac3240aaa4 GIT binary patch literal 3251 zcmb7GZBGn)qZfSw+PIPJQ!o_YFsmym zuu6G4U#YmU;jS@Smp%wo6@?|wPnPSLY#I#4BF28dX|P4)JAgog$9O&yb6drt?Bl1S zPtINOVc7=C3&sbHRL-QkoEWgq@GdqN<$zLdyO#@N+DYuOsH-eHA!8}X_8)OUw^zL-pv^!HqHfv^4$CG}(L<9U|uT*zzf@);PR3p1LN7*6EP|oW@K6UVv zkE0e7@tdf)##18ccZKXelfHxQL}{mSkdMY@$pb+oXF=+E%=(aooW zSdSiTWQUM^R=bu8d|H*;LRweMeB=!x`X2DOUxUyP*U&5@B#=OhM|ps5N&m~qG;l3; z9nttKHa?_NuFMP){3xj$D+)zS*E*vI+9NGm6HxU33J^y3iMWc>Q^ zJagb9$`;-akbgbaC>H}nDZvr`2bHt@N~pXqU&p%|dGZAedOjyON~9n?tdlfdNrlwp zlrpco8$9!Z(LKf)smMcKM#AxXo>(5u##!d@Z6^6#Q8vN_N5Y;EylhChvqyU1#mv?| z%Iy5S%-AyA!=gieR*+#%x)om}t|g0}*W&nd6%SGpOPNX9b0qy^b8`ZdPgt5xtCwILxrfV6!40@Ft{c?HvtC z!J69z+{Zc%{=ZQ{8|-Yn$~1pNI{}U@u^RRXFJ`?nh%~8)^);(PC~an7YG(01XH`W0 zd?*IDQ+&sCe@`A)i2nnY;zx4+iJjsKi~OqcH|E+Y_}d~sW67cnYn4Yno?56p@+&_U az;_=Nq+U&mACjUEAK^Sl+3r?w8_}hh@QI>n<&ejX$M+g>_Lw z7u`D3Z*rR61BzG_ISl7(_j#Y^Jo~=ykDuSZ16ah00w2SI<5qN+S1qnrt$Ib+x?>pi zD))qA9|-fkzHXNa<-91HIoH?~2d1mQ&oH#d54dh|yP_A0d#2$rTv-;j@UjejT6~AW zzv`6C5c&{Q5x^CO!Mw1|&H8@PbhmlYG8snlj=`-R?h3g-J@k9KqQ8| zsV#Eau3X}ikRvh7D!9j>^-$90lxAoQ^Sv!-Lz*T8kw8+x97FPdsU%KC3Tg8GMWK*i z&uucKFPCs3qMcWJeoIrmEA+3qM&%gfXC*@k(hJ=-nSg$;S-X)fj~j0{c=fb5gtnZzYnU&E>>gw7 zLO<(FX_-Kn0kt6NaDb0i)Ou)CXs6T6XbvR4qW@F#afn9w80bfsMz!?<%@NuKF@Qlj zk>Fzr=BIfj(ZCQxe(o3nb~M+(7`3tM4czo$BiTGlHgK0=GxZtqFVH_CLaQZOeLx^} z#EvLNA0%(0Iff~^O573p4Pc7+rZGfU7>0%sEMpW|M4Q?YEq*-2BSI^9g2(h{go)uP mGNez#1R>HC{~5gzh5rN*1>+~OO~p__3M* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/GroupableTableColumnModel.class b/eclipse-build/org/rapla/plugin/occupationview/GroupableTableColumnModel.class new file mode 100644 index 0000000000000000000000000000000000000000..fc524827c7d3a6309289e1e4fa009f6d797a371b GIT binary patch literal 1880 zcmbVN-%}e^7(F*X8d$cF(ue}mT52(Y(rpo{ZCWjaK!bs*v~lcf=6G)XvPD2t|9Xd{CFf4HT zKQc9(Lbe~o)uCZPV5n-l)<$!8%kmX>f#IrGCts7SJNk(qKCsEASpDC|k@KLry&YMp z)CpY9ABz`@FBWQ&{)CP*I7{I~qmF!JkYlnGceWl{^{`mDFE9|ZQDFA9&Y^X&>`G|) zX6X3>Bl$wC8lC;3By~Z@6wV9u+1=>D9V?8nmuf48*Ww|8r*+KWA`1}M-&(5L6}f#$ zhk?sn^AKqQkyW+hHe@g-FmqhNdMKuCciY-$hgR63o1t0%X5DPG`(mh954&L@^1gQv zViQn2(ynVdu7e$sv4iq%BYdoc-5y)BbaEbGF zm|9~qc)o@uWHnsDijJ#T6(}D^J67ZfqDM%3OTu1|jMsF0qO?3PgAGM4$?g$2t6+{c zhgxK_P)qE*j#@e4_4bsc_rCIFm4{<-Z4v_7rq}fA){5=0JI)+=ZC#SC;2Z}($!jKo zF{E*VtBhLpAti4Eeou3c_XnSYTrDwL@H0F81Vhu$aO%q^IQ=VfKdY<}J_i+Emic2C zLKbgwPmgl&7Dl-e{AIk0m*CleHvJ27GcCOR#UYZWewjo+&MTCWD6);h9K56W3rsR1 z;y1@n$*)i1weao%zb7DhNp0Zd9P;Vw@_7&WcK#NlC7+4$A22o^ffRnERKkt7F#9{M z90&=TRG^XAc?w;iqz_^=C%QBz@IK}Vzo4>&RDPAA5#JZ|NnZ8k=%^3BLs}fPxv&3( zsf$l>Lx87l%+5T+65U>Ip?p0xn)(C%qp22dA25Wo`TakC#&}K9G+>d&FCm8#c`ehb zGH-|#a#`i5mH1v$eCHzqUA|>hu}*q94#)=X(2jE~+oyacnLmKf@Ht6KHT-wc|ALmm N%}K^@awmbi{{j$Szfu4I literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/GroupableTableHeader.class b/eclipse-build/org/rapla/plugin/occupationview/GroupableTableHeader.class new file mode 100644 index 0000000000000000000000000000000000000000..c04ccadf2dc9de6718dc006d0a6f7adc2898c0aa GIT binary patch literal 1605 zcmb7^+fEZv6o&uR0;9ul5D^6wRh@fT0_1$PzFq_IZMl~OJv-LQWGY=SA?UGi6vqV3 zB^52_1jBndsQPoePP644@wHu_g?=0tbkpvU3PNg5mFGM!*jB4NU+S4YW=G!j)lzw5 zMTM~wL03K~QgMg6?`DjKvh^;}uPZ)jl!*#;fdOG{WDr8eV)tTTPgQ46Or zCTL&#y;co%I+gyPgta1#aRV8_(EjPQa0V0P_!BGUh?A8&NE+M1Ih+@?7XOr!VB~*5 z3|tgUH&!=w@|bMLOBSYZS#Y=-J#M>Pq(UbOLKad@5W5_?p1nJtZN)UQ2Cg#mT7bQ) z7G`jb>G#!6#8TSz;5qEq2P-dBF{0^p!T5gMRnnNq#4P444CAJ*!d$wb32s@qjXMHk z-6<`_!C3##1XfMRn$E%oXmWWZ!o;HP#bu?n6yqR*iG540j){hCk0Yn}a?#nW^?~^~ zD2GLL$Muw;_g`1oS*;fanf9c+_ikMm``Vn901u*)O%Gk>F`PD@B=aaFu_L{ zdKAalUPBn;ca)`_j!`nzAT<<|Yj<&v2pTnq1wsrF|332cxk#TT65n}+8JKS8t|iVS G@Zc8`Kdu)5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/GroupableTableHeaderUI.class b/eclipse-build/org/rapla/plugin/occupationview/GroupableTableHeaderUI.class new file mode 100644 index 0000000000000000000000000000000000000000..d21f51544650c267c51ae57ebe6eae90c8f42a36 GIT binary patch literal 5844 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 Btp5N2 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationFactory.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..441d8a217af6173b30096bb051d1f365e4240829 GIT binary patch literal 2140 zcmbtVYje{^6g?}O$Z?zpE=ilxkQ55|5u&7&w$v$)s5ZDbu_q4hlrPL8FGfX{G_st8 z|I`m{r-e>C)32T3M=`xCDUxxT2{TM4l6Lo=bI+c8cm4X!U;hC391Rr;!-nJaG>^L$ z*IaAZGi}W=jG@bY)3NtWaiBHhVT~KU`*OPr1RnLfe%by3=@-!tuAg<)EE?19g1zr(Ge z$Y6>gn+Rk`n}%Z_VGp&z0l~C7%@KBD)3i8PAf$nrg7Aef^~9S9)Ds{ zWWM1T-0E=8l;dbJ?LRXI4A(~-I!$dCshe?v*3GR!wERt*n2ICzn zGr}ypNavQYyWHC*+pWr@;@EOPeiS2GjrY#_XSOZYDDi9vWCTJ(8O*uvv< z)~UpkJ>kp5^)AD?Lh*R7Q5R5%>_yqCU*_-?z7ApGA!fMpe;s-fkvzLerngS?B=K+N zki&EabgDN_t*O}$_7%9f=Gwh1?qEyBU54{XJIJ1j0_#D14mY7QluuM0i<05dT{GSG zx$%6PyV0?lAy2l2J#0Ik|3JLR;2r~OGR&ES7F}(Ad+55fB*@iNp-6SkwwO#_p(P3MYcOyO}2U7HZ1_~CTB17MkbeSv2(vys#r<|jEi00;Kl%~;Hd_Z4yno;OI zT`IrAxzcY~c!~4B(u9I#dd?6raDk|oiD-rXfQ1l1X)n@&hnT%onM6SN7N zrl_gEarMXY>e4F|f1zPWKS3Z6Xoa4oFf68>if9RnRa^^_PGJpNu-A2L97}bF*rZ&A zjb|ta8CJs8ID-;rP@)WsegLl%i*)81y`{QTK08jg9?<2&<%o{qix?`UNvK-NXJ6vR zIQ+&4T#ey3@eP4w=2irsFa3_nzsQyH-~Nf)f1o1Ak}Ne+n+g?tlRUpQLOLIjeiy{D wIpVFx;*x#U#)WN-aHL{k_o+!jVXO3(`%+Rr%V(e>EMaW~sl>?dgQy4p0m|I_TmS$7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationOption$ListRenderer.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationOption$ListRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..c404a87ea9f2e4106f5c6eb9b11ddc75debc0802 GIT binary patch literal 1178 zcmb7EOH&g;5dJz3BJ1*yxIPe{AclY}qE=ZI#X~5HP*JK3a^N;>#yGg_uDi34v%g5I z6stT~o;>)YEPFN)QMqI@kQV)Yfi$HG+Kb1vhWDMZmSt2Yq2c=l!?8holdWGWvfXzU zOc{iy1GD(6&s@<|NB-Bbq|X$+oO2$f?A(UMzI%Hv$*Ng zHfC^}P)elUl3lLPIW5`fj52>J>o`yxpsW7sDj z4tIwKi6=dWNfa@}Rw=X2jE|dn%l4du5k47Z>k&uhc(tnYpDKyyH8E*yk*K$3(UI5n~JAFnNTjBiyRK=Yu>9;Alooqkt4; zbTiPEUSc1VAux+O*+mX2n9C?QsA4|Lb+CZDoNwY5c~^v+p;MUymw21QJ^lw7mfUb2 Iv-`;X0%)->HUIzs literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationOption.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationOption.class new file mode 100644 index 0000000000000000000000000000000000000000..ea33612781fb8b4dc6be00cd87fa7171cfcca67a GIT binary patch literal 4211 zcmb7G340UQ6+KU~H9`zagmG#}n~<_d!dT!2LT$5nBZ%0TO2$OE4IRs4dtf}HNFy7k zOWLMuy0>(p`g{XqDQe>;C348aQ*D?{OqXv*)eQe&P-XLx#(GMagCl&m*;6OeazjH zW+St{+|Hr8YlWK6<#a(ab!$>9dGQ>t%ueVfs;w@T^eMfhTLqnabOdx6so@wpHEnCk zn68vu*wQEJ@>E}y8|}@Go*C%PN6{j%^}hv@bF`8(pe+bQk7TmBQCI0^IWtOS??dzG zh`YLp;f~s_?0RD5s^xT3FF1Bd;O0gINX&%YXP=iK^ca@m92D4=2t+bf(q{E}yL8Tr zo%lQYd8a!$CJ-AuU(j9Z%L=x5O!yhIOlwI{psC-U)ME%^tBTj+bqcnVYRPmXDKTtA zLP{hB!inVADhTXUp<<1KT>{A!)1)9Ru)dy319oM?qyrt;Bh7cxqr^aREOI!(+~+Tb zcI=a1?iA=s1ai=4eI+ZWJ%8V*VlCDwAhsJDBCLU~;6Q_KUYf_yg+tPV!vd{|@xX>7 z6KBaHv6pD{so0ELR$%}~6b$}f^?JgsXBBrL%96?s=0;9t`v=b)$qWs~XgQqYG0e%niZyBK$C(I>B#4P$mogdF4H=g1VKk}{VOhX7>t;+V8FKC~HaRl}Yo#-g zVJqt{1Tj>eWs(Inmt|QkH<`+XlCC*=KZo40 zg45h|d?0eT#nX=A6z-MGoZ%LU@p0yj%u`Lp1PZKY;^k=yZ1!Q&=AE>+Hmq6NG}}gU zOo2qFAtQ#g3EhlhT0ohxOUC`SC5bRpoW(gBp4J@?YJu%H!atBBJ|!_sVph6(cN8{D zXm|T=>FRwdN+AAWZE})T6mW8>Lw5&^EhStO6)JVM?^ZA`aG(z0%E;R~WR#sOTPT}l zDTX;LNZ0Nc*c)s$E3-uaqj)(CAeWR>GS+DYH%vT)4OuMzEcYBHrhh!8VXKSvXflO6X7NT2`ZXXO95Lioq0_T#z zo**YHILN$q^cfZFaT75s&)D;;@p*hf!9{`gdaC?yQ!2iQFA3blkOwWNw9s45@U&sk z$VM1QOFzdm$xIAi!PgXgl}hy%?<=YJI=(>w=j2skWJ=n|1o864x@E`zmWprVVXuU} zCbq28`Q1M`CPRBv#dq*sw(h#4wesA513zEwdC-leg6+ZMD!zyBlQ8|hie|D*8=7sc z7*EUezNF$wJjJ$4_PoPgpUgNq8{`dj*rx=ZR*{wGX|rR@$_tCguv}O`JOg;WD4ZMC zihh@l6zthq!;#2bRq-62_j*tbnHE1`y}a|GiQz@Oq~Kb^iROJ%@k9KG6>IqSHg20p zW)%FG*O5AH9uR#M9yqc|Tt`Aaex~B*c$t`J#UdMsz%7j|HfWK{>-eRLU*Xr>&arE( zG&<}fE}8tTir?Y)lr2`gl;i2JG6sog7yhW?Pxv!gU?McK(72;d9qTe@S4su_h#|{y z z~pE^A}!q{?*QXJh&ylyIgZEB50f{;1zzzU#8F&C1`qR6_XJUuSf!}N z*nO;;@HpOw_YoVZ3R7zrK8Ozyd4Y%UVLm1CX}$&DuFID=@Mwy-izBXS)f4bd z3w#70<%(49rnJl&B^Cb|<6N$u3$Umxv8dn^_#_Pod9`P&g|FaqVf0A4Ha~+eSMg1EeM7wM3LXh# zn6uvYcxx4pT|_kA`UsliZB;yxs^SOIqp+L5o7@~5CsS``iQUV5K0|gi=I?~-;cecI zzK3g=&6iQ7huc|xi)15&XJ~5&La$&y!YoIjpa*<(y+Wy_g%B6q54gg>JhUGo#WEZ> zf-0V^;srTmWLI&W<@%G&Rs6JyUtGa&!jQpK@rP^Zk#Sv!Z)kUy>(I6mR6u9ZOtBPa pmJR1n2#}8sP_V_`h8MYTh2!Ek=2!F-j_?Ab}9RGhu=->6dJuv_P literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationPlugin.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..870a921a3e2c26dfda17eb60212fabca06e83654 GIT binary patch literal 2560 zcmbVN>r&fB6#f)#(Kr6KD;l7-%7F=^`&iAS6YWNO+X? zZ(kq@GbCwd`T%{XPR~lhGA%P{Va%@f?73gQ{qwKi{{S$7eFYs1w;Zpbd)&3S?pi^^ zv~|ZY0+;)yWAB;bsa|az7s7i5oeb}7^F6Lx+-~UAjcsB03c4AtC%QI0zAK(O-i{tg zO^K%AnXd1641MMK$zr9vUR+(DDo;-?SC$yq8pGMea;>_&SSqhi&sNF|S|zbk^F7mU z6d2Tn%JQSx`Sns|vQ}eAKQt`UHvKOcQrX-JLubjUiyn}RDiov@Xbk87sizp2R$X`* z^kY!L07GxWQL=cmsp337V8}Ftzrc+h-Vh7}*<71LF}aYz5H2aWNMR*9;!72mafLx4 zE%THPhW=wJ;+QfR#)k^79m{HTr{W`ACk1=l3Pg32VIguAY=>kKzfQqtyAq&LnlC8rO! zRNR(XNc&E7DU0)oiXLQS{x8YnT@`1Lp)yoVTg(T$8^T-S8y00ut2hR?R=8)%b4bh} zh0kPgXQ|r$mf2*Os3e{D-@3Sv2DMCY687*4H9JvU&)GBUq9(jOlaj#jINPQ?Y3q_> z`<%S>3gI<(xv?d5nhMLY^@PoE>`k)~c;P(hB$S*AGWkWSuCQfn^)r~lv;u1Udor3+ zXjJhCGt{WmZ<9U^%tqjg$!5`UEWvGt!4qn?mRsw=*QhA?h9Q?^(QtNM#}>BV)SvBI z8-ZQ7gg$%wzFiDIRm{nHbuLybWd&8Lz&k|EUDs-ppQU34^Y~W9B4~_N!xP*WQGOWa zPVh8$>O7ypGQLwl;BYzdGAU83k}AH(DlzeTy+vDy+JOjhJ{Y_cocq@V6i%R=vZ`U9 zJZ2ao`Fx1f`9@&oOWdM~v zLsNYWNRPm6{f#pjmw^cZBDHic0;1-!WhPy|Y zy{16EgvpZ;PiY2E;7f1|Xu7g%@?u4+kcM(;^S>ifJrxoIqf1{}b^u9&ks>TlS{vj^B#?@E2q2&%Sb_o3d z6Y}EI1KfE*+#R?_tA4yu<|kUSr`6mbx&et!Y0HRr`s>=byEWkn7HPNRY0l!pMivP2V@j!4dQ# zOKT2yF-qt=7WyZi}Aq@V-O{szzQtjqua literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationResources.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationResources.class new file mode 100644 index 0000000000000000000000000000000000000000..1bd5fa550decfe774632c153f0cfdffe0908745b GIT binary patch literal 2438 zcmbW2S#ujj5Xb)`9~#@TEg!KH$4)jUc1)x=2Z!SXa^Mi+#32eMCIPdOM$$N|U9r1z z$jN;}I6eUn@D8DhR8bY4c%b+IJn#v4;1lqWqI-8FL&|x$dpAZh!Bie6C?8wIQ*v0z=_bJIF}$htmt(;~&d(ymD5jf7(jVTV9F`_Zn%BLaz&^gBTc%)C08P6~9X6-wArp`r?x zC3e&5IaRg&%Yj6ewjr-((btzEU~Iqfie~sIw$l0g2O=#8VV%#q;$wkG4NT!f8&q zH7Rk7_S2M+Omn|y1p0N=E~_AGSf;E?5+}%Mq*+vs3h6RV3T!fpiVCF`sNK9CWJBK$ zDzVWiI(cNIik$w_0%L2M@N#T1FVGoV_`c^$JWn;%FkzCZxn+r5!*4}7HHjA<=9iaa zzb{gTBEPP>BC$yA(eV18*l9J^zevZeYPTLtneu#@9PFO5qRdGw(X#6)x9F7|U7~E* z0>ev2UQyAt7F9{Rsz|q5phK;8tpv4S=W5$Zlm+^{8h3P%33XKk6VUu-DYT)TBAcT;oT*py%0F-C zdHD3tc?H{9uzk(4f$cNVwCO|(-c8|cNSZidMN{Ah=KjYJq@L(1tB^X}jJculiM0n^ zN1(#9wokoHbu=E2!f0+b5);qNgA)rJ+ovgfgpX-l)Qri9lSkGXDK+=Fw2Ac>-11ttx38Wh~+nMZS(l8otl7`hTCXcdChw+nP zvWH2hA$ytZXVPWJV@#f4k}_nP$qbWjLk=@}nn{l#N0}UF(rd^plV_Qv4S9~q9Fsmn z&M-O4q~DNpOwKbIFl2$r1tx=ryu{=ZlXZr?!sJyZLx$v;6qyVgQeskJvfhwoCJvJg zhPX^>OhydxnS@L>8nVLVbta>RTw`)0m-_*?zUPX-oAkVe&GhW1;_1NzdNGYOPN5H% z&<_^_q%(-Gunyl~2tQ&Nzmn!3*nqzl~`>x5m b_~gNzQ<3#htYNH47oXvFwCCs1ZeRQZu@OzP literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationResources.xml b/eclipse-build/org/rapla/plugin/occupationview/OccupationResources.xml new file mode 100644 index 0000000..cccc5d6 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/occupationview/OccupationResources.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Occupation + Besetzung + l''Occupation + Ocupación + Obsazenost + Bezetting + Zawód + + + Month + + Monat + + Mois + + ...: + ...: + Maand + + + + First fit + ...: + Premier libre + ...: + ...: + Eerst vrij + + + Best fit + ...: + Mellieur libre + ...: + ...: + Beste vrij + + + Free slot: + Frei: + Libre: + ...: + ...: + Vrij: + + + #Gaps + ...: + #Gaps + ...: + ...: + #Gaps + + + Resource not availabe. + ...: + Resource pas disponible." + ...: + ...: + Materiaal niet beschikbaar. + + + -1 Month + -1 Monate + -1 Mois" + -1 + -1 + -1 Maand + + + +1 Month + +1 Monate + +1 Mois" + +1 + +1 + +1 Maand + + + Remarks + ... + ... + ... + Opmerking + + + Resources/persons + Ressourcen/Personen + Ressources/Personnes + Recursos/personas + Prostředky/osoby + Persoon/Materiaal + + + In + Ein + Entrée + Entrada + Vstupní + In + + + In + Aus + Sortie + Salida + Výstupní + Uit + + + Archive {0} >= {1} days inactive + Archiv {0} >= {1} Tage inaktiv + Archive {0} >= {1} jours inactifs + pArchivo {0} >= {1} día inactivos + Archiv {0} >= {1} dnů neaktivní + Archiveer {0} >= {1} dagen inactief + + + Archive {0} < {1} days inactive + Archiv {0} < {1} Tage inaktiv + Archive {0} < {1} jours inactifs + Archivo {0} < {1} día inactivos + Archiv {0} < {1} dnů neaktivní + Archiveer {0} < {1} dagen inactief + + + Archive + Archiv + Archive + pArchivo + Archiv + Archiveer + + + _endoflive not defined. + _endoflive nicht definiert. + _endoflive pas défini. + _endoflive no se define. + _endoflive není definováno. + _endoflife niet gedefinieerd. + + + Confirm. Archive on {0}. + Bestätigen. Archiv auf {0). + Confirmer. Archives le {0}.) + Confirmar. Archivo de {0}. + Potvrdit. Archivu na {0}. + Bevestig: Archiveer op {0}. + + + Deleted + Gelöscht + Supprimé + Eliminado + vypouští + Geschrapt + + + Starting day of the month + Ab Tag des Monats + A partir du jour du mois + Días a partir del mes + První den v měsíci + Start dag van de maand + Począwszy od dnia miesiąca + + + Day 1 of month + Tag 1 des Monats + Jour 1 du mois + El día 1 del mes + Den 1 měsíce + Dag 1 van maand + Dzień 1 miesiąca + + + Today + Heute + Aujourd'hui + Hoy + Dnes + Vandaag + Dzisiaj + + + Options + Einstellungen + Options + Opciones + Volby + Voorkeur + + + Denied + Gesperrt + Interdit + Denegado + Zamítnuto + Geen toegang + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationResources_cs.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationResources_cs.class new file mode 100644 index 0000000000000000000000000000000000000000..09eba96996901003c551cd22473b8e85300cd136 GIT binary patch literal 1873 zcmbW1TW=dh6vzJ)JN71a66e}BP1{Ylj{xkq{q&&%kG>II|wRP=yyBJnQ+*`JXeFbIu=+fB6-_ zMeHWg!Eo90D>>h)yH>95HY!5qJlk&6tx$M!Pw-E2EA8nT54?tN^I+Q!l87^m?O1zO zt`Q11mlr|UTEEedj>{Pg+mj)eVZbo7wUv*IT}xJSE2SN7hgZpB-gbo);Q~W!a;nG> zU-TTFM2cbX7(o&}44J3>80cewfqwG0Ec_r`vi1!OGW0BQY0jFp-@XYBAKC_n89LX! zX!QhzT9Q04aEc*m`F2(8aRa9r#;->c^WKH~=E61e-t2wTkw@Q|l3Tl>*pr734V)oO zi3j1b2o0Pgui0#N&NMJioX%Vpe$Bu$3~B94?nkoc7!r=P9|&pS1=?&e2pjciWr~Dq z#cPnm8HVoS;X!-xJeiV99WKYvRrdUna2!s4W+@6yZQee^OAO{e&M<%c5nfhKea;K6 zMo%M8l6bcM)E@PJB?b2`|DOoCH6qxvn{u1 z`9jS#Ow31_+>IDMO5+0!>T>;i~0RtudUL zY*t!Smj5ovt5Zd_y>c2h97@KzmW=+lg08#}75%bMCqI3BH^{1*#5i4Aj9LrBNp*Ad zFHU8dq#xxh(2=75YWd5|$N{=HW1R;`Z^j0C3!8BoXw)F1zyN_x4TcmLA&}7EqynP^ zk{XODaF&3ffvLa*flN#DtRl}V(h^N7GOb8U^UuK6nyf2QEEImi#t-x+9eAI{5a2x%U%ma`Z#Ag`7R~W{( z7{Sjtf#1pUPn^PE7{z01o*9g>3F?lQaF#7oW88qrcBm_UiV5~P_3kgwjjbq}N)jrO zW?~>mUuxm#oPLB4pKK=)!KNhLG{81KCPM~`HXCIXvh-Er_>b85p1#eaG_|QHTvHow mYbp7)c8;t&NRybJc?AA+xVREKGzFm&tIVkR7TVYPI9V^jO-SxU_KfeB4ItI#?=v8vE^ zArjl&3WIwnbf8C}@S+_DeF|{UPkZwwPST6sJqLr7T=A;zlv~z`do>EZG;y#`p?xLF z1om@!SvOMc;GjZ>7yC7{&BbAb(ev5DeQ@HTJA2N3F!j)-DeaojyPKMA2S=!|p_6pp zqz+!9p<=N(?K&7EXVMiDZ#j5bA#V+B>hwM(UscGJy?coX9lXwzFUe$rIs&5xB_>JF zHyG$~g>Jpg!&~=j+P~|d#2tEZFvT?Kz&d|Zp|cXj8>U>=H1-yKa_Q^cblz4t@{e?8 z_Q>WPu^4N;97GI(*OHr$wUK!$^nas1le8!Gc29^U8AYKAq0#Kvx@K)xi~o{-`cBmlRX8rIVVeFqW$d zJv^i&)j>cx$?!VuuuymXen`KQ&;2ed^u@ML%QTk?sDHeuDhp*y~8(CYJo5^~h3$3W+QHH}lNNa{|b7t}Xbtmtz zyQtwvyqgg}$yP3~UtV(!c9(NJ2K}#<^^NSJ?j)U2CoFPmy119q3(N zYvaJtf`Whnf_4jr1Pl}8EI1(G5J86pBLYSV91C0lM+pi$I0Tk?UBMIi&0TobY+WYCfuLRN$fS+XkRrjUJ>d?F;vYuJ+8LOxqw{uy_Ew>Y2~aGjH+VOryRm literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationResources_es.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationResources_es.class new file mode 100644 index 0000000000000000000000000000000000000000..d0fc60522b1c4ea44dfadbfc49cd51a0ec91c0e1 GIT binary patch literal 1920 zcmbW1TW=dh6vzLQIPoTN66fBgY1xEZF4S&HDJ4wk$5M*^dJdxb>UlYS+?Svpise3>Mc9Z&l@UJ>Y=o!b#etp=`2 zqfcPu7=<+Y1+vfEu`nnA3qxdYLx)kkChu7o5g1r|@}smDZC81AO+^;Q1iH3^Q|FfVBbIYz+Smx-(P%SyKG4N(uws^K!#3}Qb|SehK?<~ zKvr|P+>&i!nm8q0)?v-Uivs;ETe2F2(!$FE-LAYBY2U)DB)jg%p>*kDjt+bgG|1or zNfo81`QofVpE{zCc;Hl(bJs$i0w-@47AakFWP*5Ipr;&!CGEP3jK3j}p`)YPsl6#+ zx1!<9mXA&BEjAh|RrCT1gesJ#!1WganY==g)U@A-7Hd@2s)e@&I?gUyxJnm(pnNwd zd%8?taaExASrb`Ur}HNFl%t)Tlc# zE(DJBc4VmeY+(0t(&D}7L@9&MU{RaLRZUZIsqp`XkLuD_QSoYfyvAqejvug|NX55h zNc|&ldbT-&$-Mr1Rxi)(aCnCqR8Xbvs~eTc|JI=L6q9YRp*izY$FGST4=bkWqjl2G z5jeqLj^0usAoE37qW$U97un6rjlW3t9FLxyZHxxr-EkoTArn2Z>5 zi^**!qlRoT*=90k$PSYvuW>`}F!{Jxe2D#@sY)IAl%8drq-Q@BbO3W0#1gW&i6QJ` z7(Pbu6-Mz5#_$8i@hc|q2TA@#I)7slPifC)F(qbbk6yqTu|X^J4s3Bq`}0f8h_7jN zeoL$VJM`ip@yM-1gVSsmWbQxNGXB+PX9nMt6yl?_lZqg-6iOd(I@<<4p;p&6e-NOMKQ6Z~i}Mbhokq literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationResources_fr.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationResources_fr.class new file mode 100644 index 0000000000000000000000000000000000000000..daf2fdd71058bc7b98a1480b1a88e25ed97ac87c GIT binary patch literal 2041 zcmbW2OLG)e6vzKJujwR{Wbz=qu@h7hA~OULF$9!XP?(U&U?hUZo|!wD8+y9OegqMz z@)NLdZ93gi@DwRch9-!^m)x+&wu{|zzN*X zpiAMDA8Zx^r|CL{rWui#fIanp&6?`<1>udveD-q4{R2NfM|)Pf9p6b@`T+fE^l zj9Vz0FlwJ)h`p+-6|9QyMcRu(g^Am@i;1x7c$cs|~uK=nvHHWv0OWSpQ}&b>*&w0^^s@=Pk@L2DFyC^rphl zYM>iNcRYGap}*z_WmBzc+Iw4JZ#!*v(+TaW37fuW%C62&TX;tyOX-U4M21PT+aDp3 zS$t_=&Wam>)+N`c>+jO_q6B2Y!g+pE-4D!HKCNHmW|^6>=WGj?`B4qy#o>H|WmC6s zg_j(gw?%-ie86MR*Iw1Hxu(V-TvHg>DOC&0-0#$?g%yQSzbR!L<|EV4Vcpc|%!jnO z(!v%>)M3?kOnyX@a~+c(D~tqb%~!RnBVDzy&H$F;W-~C2XOAu1rj@o#xY5)>NP8AO zWyv$HX}=U!6YgoAY|uo=uv~GP+&Qes!>!kf97IkKG36H6K0`Mg!`tktwrj@ghr(tS zz38J?MdRt~aigq*n+{XO!YcX|$6a#*Bl{HgEhfD+fNr>1Y{6oGMRmh=JYD>MUC-`exW?$af{h^Lloq#o}aB!y8`^lhaS6gdHoS9t{_o6JmK)^C-rYigXTZ1Vp zC1YsG$d~Wm$$9%~nNN9{5}0Dpx;g9=_DJOT*26)O;g4Aax~BLp$3NtDKgGa$ckfeV z*Sp7tOY1#cxTYW{V2q$Q1rq`$3Hnm7N5DRUObQMNI7DEjz!oq~kZbF_D&%z`ZKW9@ zM}@St-Vl-((x2XQT*wI_11UKvcOQu3LQ&xK5;q%5Rb zD*cMu&&*O6>RfBs%XNqe9mXt1uz(z{VH9^T1`p%-1{3%eyYM3>@f&vIPfGqxoqwD=W}Ly-jvv9#;Add`pWSU3nEJ*S+1>lQ=jon%&dFcTe*Xi&Nj%D; zN8z*|)Cz&qYB+^fqg^vz!FSzu%ZZHdb&S4WSnDot>d^g%h}S)6o_VC>*_zEOcN$I`P;(f6jh1|JbfLHSO8PbKJ=2s)a+; zD(f&>Hj#x_6b6^L&~_&*=*VX5Jn~lAaRLVQu0oE&uI?s+7c})^A{KYd!#N2e(7M?0 z8S;BPT!|@Iuq|BRq3V8M9{O~Dk&A0`5B98u%RE@qcQ^L8v?;R?4s zUwak5+AvjK%2kC!8{Kshe@$0(mF1&#P~ict@$}DY*TPzy^oKf%;#7U4FzUCYti!p; zG<8@vRfb!n-;(bKTe=-sxJ?^ugKktGb9c5I)jDe`NSlCJ)RAUQ-KCoq$t0VI_CBSX zZJBVR#oM4m3mXc^h2#z_I5ZwIXDd#N5-w}=X!0q&6Gl!Du^=qe6ef$Zk^+pY zxuTPT9)N<$p&uCrwrV_mz1=M9;FeRC_8VLEU8hlU0we1bW)|aq8$>U>92&6Lb5Y%} zMbE7Mze&I<8LH{%Vz<{Pr)PHV_JL4GH=Kag%*&ik=0Q9>UK|`}XG#)YCx;M}%(POK z{r|1OTPwz+Y1zoh59~a%=45i<2$R;!0mx>M%<-#_!z0TdFB0fE!f)CBA;0G-2G@K0 zpCY&3J2qTg@8g5d6yybr5%i~ELck?g>k;GlrR1Xc=c0aFC|ZJk$zye?#0 zXa~Hd{(iK&t1IGVa#9z3&`UtMsW{g@Gy?AF@bNf8$V(azhMvlq~zb! z`3L*)jPpK^gKCQ7{1gtWWlr)tu+=6f_*a-x-*9+;$N!!0F^H|$qm&LCCn*;c_~zda z`j0(9^La>_7$z#YL;yZo6jb;E0iUcj%<(PCeZQdo6W_^k65XNLU8399)n!Yhx(k%< gp-$%5>=U$K_MD5gCliTOo3gl%FJqq%Vs8)s1(00gDF6Tf literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/OccupationTableModel.class b/eclipse-build/org/rapla/plugin/occupationview/OccupationTableModel.class new file mode 100644 index 0000000000000000000000000000000000000000..b2a731227125e0de4312e40fb5916fa242b1dda5 GIT binary patch literal 5126 zcmb7IYj9j;8Gg>5vzH{>G+nZ7(@h}I29izNg%l$+X=uCI(rt5r+~`G`p6;F`+irHl z?%9^A2xw4I@qVK!mWxCYq-dLPnQ;I`9DgwW(HTKeM`s-U;ScdL!yxhbzHf8(kY-de zv*&!@`EJkqywCf-U;DGSpZy_#4lMZL(Qs|PFc~YDGg&h>lPyhVa(3XhK7yD&6DQsvEr#rZZc+zu~@G)VV1IXWuk_C)X=0u8H90WeyX)Yv_^xZNZ3ah2oB>+4 z+F6hoOAL(2`Cbi1=9=qr8ru6Rl%?|1Gx?mAvx~9Yr?baOxincwa@ua$?BZS(IwdU{ z>JK086V%1BCW#w7cHBzYoEVrWSk`bhZxdL`%v!m$Ss1p>g57J{7L8DAN_Hk26JNNZ z#?GhB)A4+^G)-8(?o2LY_h{JJ`Yr$_lgsyQ8>6Lhdbt`pHU@DSHfhjX+s3M(;mRN) zs1dE!ATCv{Xb_EP65lolu@39~*dRKwAR4ftnyqVsRNFSM zhTjuJrx>o~urj7RV|8C9XAP95k6DE>b)mjIsTnh=D9Ww;(Xgj7MGc)UtN(u`3*rk7 zrka!_a|vNuG9Q@86pHqqj4i8n(2?lX2H^49JX~v5K*De%fS8 z8?u;%PRg9trD#eAVPS%PB#$x$2|uoDz1SkbD>=wo6ZUQjmwae(E-Pdvr<@NNBA&?P z(lT6C2(P07Z*j*9FNcdioRe8&eN$t5{+ex@h{kw|B35$9!jlMtVZPe1NqlB@_KnX|1)tDxVx zxVTu2S$tf`Vw;NWWG-!yiE?C@d)||x>bTh)FsIoMJ8a6_JZu+O+qwey438^V#eAud zvWnv~tYxfTHTWF9;K%1Rw5>?{nB9#2hK zsS^R*Pc3c?;A`ZCb)cBZ1@H|zQnd3WJAiL00~Ke=Kv!1CnngOh{+$-b#n&!B9)3r_ zEkP9tyyB%G-JcR_ztNm21~5l7%>jIeuN}e(-won%JV88?>p{jE)1=$5vey{)tL(gO zX2s58E1F3Z@*sAp{FF>5f#OvDl$gVsO0^7IS=LP}%|yl(qL?J9la#70)x*+Ndon^i z4J+MXwhHy&a%M$w83)2o8>WA3B#MQ57 zKkVwSo$}?G4<(suszFA%Q4iUp;Xy)^B_RbQmxGQaqF5rr&egQ4waaFXz zxPZ23`vtT|8=GFj7S9DvX`IK^(WZG^`;^@8y?kDYDn74*fsJgnpcbvDM;kFj`K6t` z&DetLaUEw}t4?BXJ9|7+BGzQ9i`YD})yE36A(UmXDrC%NZC? z>D^ktHlTMJbGS+G4s?3w&>amMVedR{=->PT;`gI%^Ye%gY?(*m3?j3d77=UDA|$6R zAgOoHVU6BB>(#>E=sfx#Tzp~H(831WH$Axc1bG=2=IRjU9>Q8a_t2>~(xrRp(j;BI zk7nl znWAb|lrhr5;*1n-!2wcK3lj&qTBke?;xI=IlAXZ&*z)35qH9JVuqb+dUSRz=;s?tM z-hyA-rg`2(z{6cw@fD@~?voN7syp0M*W77n+r4_HZw}XoeS#<>eHQ+@TRV;C5I@*d z_jcIO7I1XCH`?HhG>Qr7u+OyjlBX}MasaYt_yTS$))-h$B-7>Mp(j-7S2+tZ{fNF+(E|` z(l|qcu7W}DXmuVhr`z04;k<#>Y(>H z4)ow7(t(<|!IyV?mb1lf2O1ya6U+s|6i}O>-oaD`Tu-vMMmich&Mh@w#;WHqdoc9T z1$^wke-u7a!n;&P$OFtb4^m1G<7zy@#QG?6!5kywF&Fj&4)z1Mw=BK`_=LnRqQeKH zF;HJm3wVPq+p$3J3Cw*>%8p&~TxG{Pwl}xGjCujTv7^a>KD^?`@~n1O9#z=Sv0(jx z_|LOM%rjRmki};h%g;&dQFXq9y$_#ckO;B%Nh<`aebNeDhKm>adTGR`a9`Po^Q2x( zI}}kyjIk~LgkfF$ZR9V;Uk`u#2(vx(>1Xg+4}=TaLtj?y&{tLWjBDuY<)H_byW@E} z_(i(nN9e|naRXkWIX_|Q{;4!cMdTsJq(c(ECgBI*+f-BIsS&y1EM2O^xr1+Efj4qX z=%Gq{st9|9LqB(I>~%KwmN(X@i4~)@WqGvzg8u%cYcF@Sii?Cu6W?+QaflR(LVQH; z)_3SV6r5-TMBwZ+tdbBxIMH-KC`cj!?$$cdnc^Z#3 zG2y0Wb*)L&-X|*+q=%Oy;8(QwRi6ABuNuE5rr$8jzs_sXZ>gc*k@Vm5pZ$Me4E&Mg zzs}_FC)SGBNbX;xU8=SoDRbmu4*H(7%V0HqQpSRhjuI7BXQ{ZZoQNCIjC0hTs;wK~ ze;ZYrroF}ITWDl?^}Y!&%W9bXJhj9RFFyR=Bk`-ytTOXoB@~rXwK5b9-)9&oe?Q5? zMG@*yv~G$vMOcKk8x4lM%&ciJc$?u}<^lLfWreF(8!Hv*3SLcszmcprm?Hj8>i)rs z^iS57e=$+KL89K2DAawd!x2qKIW2oQ2nih9Dd#=?I!6WZGd6~6t!wwgit)Hjew{m(z%j8CsDM z(1#7HUiO(@pj&LGygN+W^i~Pn(lBFz+Z%fYqU}zfjDzm!NT6Ds=IYQfD}e~=bX#k#e!U?j+w^b&N3L0ZqH?4G6`ITt2HbZNL`dq$2GWCAVyvH zIHpZ4$%c|BrN)0pK?2w5xE?nMBwS~tZJc&a$fAI>F{_9hbu=mBSvkil4%sF8IBvu; z4NK|C3jmOQE+-3x`euf&Yvy$sc5|R;rn7dxv);&gj=PVpZNNqiS*CZ{wF`)J+>MSPNTpH| zxW1IMeyNlq6b{-%^|YW%$0poEFH|Y+%gbz^-vF{2woD_SZI;EJpjxR4XdIi-qhl-B zKB|r2DrjCeOoeNikPhF6?HaaC8OxGVC0WM~+%Hf|u(TYCa#~(gs*W58saArQm|ohhwShDh zj*RLk{W=CP$o8+mR&yvBbi$%%T4}#2OCq-$mWDk{<4f2VlCEP2c3@nWF+{=Ri4&GQ zY2xJJYIv9v@j|$C6jVBD99~7asXu|8D5|+KEHE#em8BGH?2TbBr)aApd_>2ic#M7; z`Mk7=+S185{x=0m5%QDAieW#+Eso(SHWl0P9xO9#~#X;{;?^8Cg@D=Yne!IsdZVaW-JX%#(`n@WNvPq&^U^eEhXh(xWUzav5>h>^oN!a^ALXS%!wDKZv3U6F zf!Yl|(ebJ3sXA3`aYi;sb70U*;5bgIO8A`4sv*iIndo+kZceT@RZ-8qU=dxW1anTU zvvZbH;I`8#y+Nl>iTFmKJv?dpT~_aiIcAw$;J4MFd z2lcFNOV{s%vVg_3J;Kd3f-6voDn4m^sz9u!Ms15gO;YWOJ_TsTY*N(lX(eeC-|VI( zXHeU;@C@cOoyENGedf#gn;-!fV*VdQiYJ|Cl2gqB|NTNN3Pg!N5G57xSJP?Cc^8%9 zRMV1CTseyRm8C<&sztFA{>5q3p2m`ei$>Ah8cjuiLCZThk&6C|me$Ht zibbiaF{~75)hM&}2ehZO$ci!CRe@8As*!-Mi1VB#Cx#uKKA1S z9KeU<{0M*Igb!?9MG1eEfK{g#@e-j;;x}qK#4s$tPk4o=2<3l4-q#5DYDzv#t(DYs zn3~^Y?0Zm4-A8EMe$M2hq|m5sGxhf(M!pSrmv+Qy2QVMe_&>N@h<~w0!v`8#G_3j? z4^#0+I2J?}8!298LESkV-xe8!;EfwabbfJsZGeI%A`u((tQprmowU>Bb}f-jSQi)w0caoK{DmlkFd+1aN%gM=c2&| zUkv*j@?_h@G3Y!N=*@5mmq%XSQIsTMOXUx+k8$Na=Ids;HnguFWBF)6wuoM!t;T&G zDSCb<$38Q~x!ycC?e@W6S-zq|VaT5HGp<|QZtDlfr^4`6j517x(!e(@z2hXF6}QqzVq8NCS%zdmDvUQw zTkHp&W8oh1V@ohhHXMUnN8B~#J{Bqx1Vd%mB=Qvkp&B6_|4%j=mQf(y+rr=H9pZhd(755W z7>U9vZu&0Oc{Pm^R#cR)Rd{r!VHIl(srV`n9fs-HX|IQ3ogv|DFs%3R_V3oZPCk`M z!r7#cN5+#kQb+`@ax5v<(^T@$HB4iMA>DKW*AVYa$?jAi`)iUH!qqg} zHunRUR6g8v7)knCduLdPy99Flt!-G2M{K_r{)yAluq&G}6LeeL7k*T9THUsVTeG<5 z2@msxB}rohESr^GOh2$BjT9ux46R-uK`)RlmA^nMeZ}q1v`b(@%EA+}W(%04y+$@t zdIwW9(=B2q_VST5M@UvGU*K-(0@?*0enT#S{gpn!wz4{>T%!1iw4*4uWkxKA36@8W zEryY{B5!dd@(Ug7Ve}FJ`262g6DN=w#5ciFR-pqS5vpfFz>)Uq#hiKWzFdXR6cSAl7xH}GFUn*C7UOeWJ z)apixTX%3Pm4EgZtF~=e45cf6!`*-@-#r^%2`{p-%uq?tIFf^2nm-Acqn|wq_iPeW}E0d_5H5 zIUfdsq1@LV4=#8p%{~P!Qv}1CMU$wusR-Lkj)Sy!YyJ77>->wQ{uB`u*5=a)hW^Q4tlF|+F_bR&6?X$3`tHf#LU`K7B10uXV=V)>qb^50;#x%vi~3xS ztFI_nZ_a3KA|J?5>O+S8+T85=8H3ePLy-f+k^>vJ^2nm-Acqn|wq_iPJsFDQ_;Mhk zQ$7d;L%F9s9-Q$=ntcjdrU-_;d6THNs0iCjj)Sx}YrWZ{YyXSXyEg7HtlYSELoIv} z<*|;t4({PTLoO9PRSav>vZ-&o-et(B9aGSa(B!%(r;OUAL6UiO%KV3GOk~gZRUCQZ zNSbr0%=E%bqe^-7r5|z~N91xaC6z{+ATv$zAHPG&srWwh0yUQDk?NH+{Rj}5|HNtVddrztRHXD@Xp%au)bj9BcT}> zwPnf#tVL?CQDAQp#r+8@RU|$h;9(M_j7PLGs!LSG6XF&q|EILF=zW%`R`EQUUtp7F P3pF&bMJrRA$&{Yoj*R~3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableCellRenderer.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..b39e935492d08c4905b56e8246b8b5853b2f226c GIT binary patch literal 2154 zcmbVNZExFD6n<_R*GcNWjb$US0o@8qTBx%z!brwg$>?xNSJpx`ium9 z+%!YG<=JM-Yj3)~88}Y6Wyfyd@3^vKu6A61bGfUVp7*@Kv15C~lXdBNE7EVuP=-3v z0>^IIJN9ieQZD9VJ=kgmzVu@q!vd%K_Y!yWqbCm$n22QP+TNNBBLeu?x*{MJ1xD+E zAH}vGui0K(YQ(R8LSQ()=|0_l3tlvxNIF<@Xc zhans_FowLqP*E9-H(Xy{Yj17HFo~6x4U*@r*$k2d?kUqM2mxzQ5KqemLp!-C@9EHl1^M(U$?B%uG;RzX7_|z4kz)Vju!;X0f{&85~c() zw&Tbs$(=Pg{rjP}N>-MrP8*oU%K}Gxg`7mU#AJB_l|xzX6?@N*@t#3RN0G&HSiJlB z8<@eYz?e!)(6sN=1Fya1Cv{?}qhB*H2U8$NgQUjiW42SVOMZV&bet8K`|l`Jo90l) z>juu_ja?8cl8v^Lbh$vOSn4B%4eQ3PjLc@RWpf_%nbvf?DKLN7)d!7?zzf1ChYH?O zol+I}^nWD32jC#EsspuH^%;v{zk=cRj+!T`Emb%Cqw<*xH(He*yFfNMh1OZJH|=O4 zaN6uu5%RJ4ILu)fbOdykn_^m^+(+jAGqqPC%7g7X687igOy260LMsC=HVuiT5b!BzFS~xJvqO@Q(Lk tF$o_17x4k9YtUx|Lw~Smb(AMh@ros?Qn-d?u16^Gvx5&QSGZn>_zTS3Vv+y= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableColors$1.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableColors$1.class new file mode 100644 index 0000000000000000000000000000000000000000..88524aa06353953285eaa9b5e112949fab61e38c GIT binary patch literal 1773 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableSortByName.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$AllocatableSortByName.class new file mode 100644 index 0000000000000000000000000000000000000000..0f0c638ee24146178e1a27a36f84a95f838360f9 GIT binary patch literal 1332 zcmb7EU2hUW6g>mT3f)?)P`|M%ZTV`qAU@GFsYDG4X=7;m-oWzs$mZ6__6O3j z+qn#6=w7U ziYVTjXl24tQb{qk4&5QA7Dal{jKsdot<+B84(=Ja%V5pOxQY9CK&)&G@wN^ z=a9#;fkzB0Q}9djG4U8rsNR84T0ab{#m)uL(!>-fs;fNGVKa>aRt>EDqqfO!Ce~17 zNQD&cy9~JyG>TAaGsN5)!`c;@)9!V0k77;q-HhZHT1xFS$!fzy4oeK_uIqb!@k(me zvgamgL)T0BcICj~%J+2BF9JqbnU2ra6;t0PNttcO5njvYm64zDe>y;wKhqZ|XhWx`iyQ6c9@x z!dpU&lPzBtKpe|2thNy&r63RiOJSwz{Wp*f1HH@?# oMw%~Iz9V0y_YCXjfXP*-t4oT*3U-^Q1#2D8Xw`)?nwbXJANp=&k^lez literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$DayOfWeekHeaderRenderer.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$DayOfWeekHeaderRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..c310e65a5f60bfa0316f0862cecaeff0894f7cbc GIT binary patch literal 2124 zcmbVN-BTM?6#w09;D)%AkV0$GVpY_zAZd|SZLlqbLIR;EAHmXUyM#-+ucxoV5_gjhGLcCaWHSz+4^eTIZDJj=9;!t*KCQhtJgO*6D- zUB?ehCn%bBRkRRP`7nmo;GX68ooBdEI40%{8IM|y6j)=cxRxq3mt|TZ$*8@wZBn7;RyRZ`$gHg7^Zntrxf7)KJ!CkZpuDAzP=6ut zsJ?NW#Zw%;44nr@c_$EM;psSsrx{`u)AI%GF?5F@njK{N^Km?j=Q#Qp(#I^Rj_2_L zMKDVx;ro5V43qz(u(z662(!w>smA>}3=A-EpO_W*kAh!p!;46B3^ANg6oj7GgOUDcfRIk7dd1mNpz*Ie0XFrA;GzHGd z#9r6&2Id(~5j8p2v)&`Xrafj`WoJwEb(D}6V^|~=)zaZS8YZ_GUJH$RK zF+|qrIJ&MnqT`WDQ6DS>)NQk7MKQ9yyFNj zYn#3=XtbR^;s-$^fo3I*@(6m+f>v5_wTdMYa-=F5G*a8?4yPT@3t86L-(&;y&Kcx|*-8T<`BUtnhNSM==R$xGZYen7__ zp6TYpHKe+E^c%#xd4hk7cHD$V_eie!Kn5r#84Wnx!K_eg3* z0#{*?#4%3HZeSBJ*mQ1y|3x#dt@TeNXE@kD5D*ZMZ`7<$XZ3Mq-Y_O5)7plNEPeL5-wrsvYXj#03Ba` zj$f-YM#m3+><537qn>*=p$Ux6u$jr;z4v)J&w0*s|NQ&+KLEUieG^>*%RyMNL#OIF zcGas_T;C4L<$BeL+`vC@<)OWH==zn_RxopUSO~$L)Y<2GORJ(MqxofEDQAK1HTqIepGV2y6hoZ^$3C9 zXxFWczbSC5ct+ScI^S`9H~K(eI(=sEOi7?SA8gA$5VeIQ&Lv?WWx>Kl0VAyp28ymP zAJq4^WT9#nfap@06cb zC{BM{;9^|ui(t7-N!d?Wn8X_bCV?&nikAybgxXYXF|LhUCaALhV?gS_;>^4)kYr)* zfsDOV>2|W3?gH;vco*+64PmtmU%=O9F`oA=%z)jyLc^sXbiZL9$D8xqiodVh*3AS& zK8p`cP`ZN}QCq((+{K(gA_~@`kRvB>sa24+ig$AfDAKoG3mb(M$9F1{t$Tn~fj+VvI|$hANt#;g z)W(($ZO0C}yB}M4gf+%d-PNZ8*E@CG>7=HxCsMOU9yH-C;WhQn;{$c4sL?!0CEJjw zNsmJysUWdQigto>y{5mYWkEhfnfJ(UQ{1B+8FX5^L)x769WAnf6V0cz)*{Mv#i?q7 zO)%s2b}COtGqKar|5m?~Ye79M%SBfged4yBQZWUrg73>P?>V)ateJSqcAWA46d3vM ziyx!ZmBA~z3nS=3FTYIvl^7gUSEXKqS7kp>&hu-UmR)=&vlG8yAp0vW{G@Fz@n3nv zsNyo$mRd8y6}-f^zz~Mx2*P5%KJMiw8W@=|ht200$^MMd25w{<$j&6P!-?(&rW%;e z8V%gePCiF+vVl84q9--qz(O{)^c$8Nc$j_0Fa}iW8!DtxN3U^!bH*W3#u0{$uQ6tP zi<`!GxNUroIpYTn?Ma-z35`Iojtvbrj}jj1^78lupK4Gi6SIO3574D|B$HL>(1l&Ne5)xJ I*nNTC;$Ke literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$LinesBorder.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$LinesBorder.class new file mode 100644 index 0000000000000000000000000000000000000000..06a4d7865fc84fa0a23c8d414de2c138be2bacb9 GIT binary patch literal 4172 zcmbtXOH&-z75?tfcX}X=gn+?FfkV1|gj;d^i(akd)Jzx(eRu2?`(EA`wfuZ2&tI7LgPL6o>S}3)LrJyJ=BQWk1G^IV z3T?hqbM5l1Q}gNe#`u_mDk!wpRc7t-vZEQb{3(Tf6|WX7&Mdmcy9|Z~)HsE{x4cEz z>ezmeP-Xl~J$k)fmEr1emv1gM26%QD_Mb#_yZOSbZ;s;(a<;bp8J03MVG^ zh$KCv&$<;i_>#idz@ATUk9TlZ!5H;QP74%zEOet+;nJtKJ1&OzOVuZrm*$^QIRnX2tp;#pESmas7DEmggWQwc^kk6qy~Gb4XwoPXl{49=P$ss|bk zURSYj4s5>6LIc9~fx%5nVTX@M8O~ccfOau8D9fmYF`$*x;yi)1fa$VReh3;WT^fi4oOWGMAS`D#I-WAjx#8D^;N z@ww0bS#?XnB2is*+=az}fqLaqJg>^-y)qrx#k<$+YS^|W=6HEDz=`$t6O`!sipr#L z^pU_P@QUkcqQrq|*o&ksDB`xXFkySf>b+jIUtcEf9EV$5yDF+$ z)Y>Jt<`m^7CoYv{hETEK3A{~#R~7zs3pL@>^Ii~mOCky^EQ?6j1Ur$eTDT_?qwL%! zn3|=QJ0WdXt4@WvUfA>0Y?=34(xhL*nS?Ql*5l!kr*f7IFTG6@e%AM7@?OS$Cio|@z+@hw)M9 z;Yb)sXTw8h?1A=hoH+_I-8k_HzMfpi$!)&)1E5*6MRW=sy6F>rJ&n_$uP@@6$d~#P z(qSDon9Z|i%;DU7cy1jRnoeidaCo>kYh*KXy;(hHl)~*gF20pf*$mY#zx(muMg3}B z{qayeJ(tatj8fxF%qI>O-u?Kma&V%4Q2b=(vPQIK({z?lpN##yP*)c}I`SfC8r$s$ zr^L@elg9+Krm*yrynLb4Nb3wiYeuJT!650=nis!r#i-tgdD4n*!-_tDH*`CGMEVom ziJ$5$eyO|g0qLK0H~yv%hJZg{`vMz{;%;CDHwdrDX7N(kTpM^fEVIaNawn~{fm__k zPq+>zu*pe+PnMrDBhH^@tNdP;4}3Q&ae3{8jG~Vta}n8(cQ?YJI+ZgFT|E-X;}vBf3U|_>w&z9g)kY!4i$?fPoOLWc56+}>wf(Q^&5WzwUQimg1kSi?6RTgBN1u3u~&$A$tyA&jXWY>Z`z*pn2|Hv+q zJ}UM67*7Z)mt(XFFJm?BQu&uk;d}T2)PDf@Ely7W literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$OccupationTableCellRenderer.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$OccupationTableCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..0713da63728338a919075e1a7bc0eec1ce7d8684 GIT binary patch literal 6106 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 Y=|5-kIziv*RboG8AyInw%dB8O0MC-S3jhEB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$PopupTableHandler.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$PopupTableHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..bdece465161676fe33b0c2c71361e5b5b0881424 GIT binary patch literal 10174 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 bJo$$G`%QV2&(TDa@GSfof1l&?TabSOVbB0) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$RowHeaderRenderer.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$RowHeaderRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..a931609ae69f9efa9b433fadf4f1f5fbdbfe98b0 GIT binary patch literal 2056 zcmb7FTXWk)6#mw>BFCeoPMnlmNYfIE?WR#vuB}TTaWS@W5{MH6=DKzkN2wyYlAL7t zCHw&fb%(cXQOGqI5=D1UjDrGTz`#Tbam*N) z#4JNRn`@--7@pAa_~`&C1qPnPQw)7N0gSk4p^W zz6iFu{C-amooqALNa8ZX#fZw~HU)j%^(b8_JcDO-EHcbSJ=(2oaEEt8E(>%+85|~L z*Dw^%TlHsqow`U7EDz_ z3ukMw(rkw1ILPNfzK}$n0V(X_T^$sxv@Dir6&rXD?=vI=w;p&jx5%eqGE}XHrz#&G z82At$h56VKCzOxbK|Z2LH4toK$&eZGKBP{uJCgHEX6ZB+8CZ+v=?M+M3PZ~B>%yi^ z6I8FP$zaG9E_1)+wtJMyiF!a4x52wA!#XS~q-ZZFgF5bwcs=woRd;({Ta+xDsLY(2 z@5@pR*{e8?@QOC~ec|iq(ik}Bz$Hd!J{4G??ugT0LyU%>jwJ2JX|%_XN~h%jReR6? zy+Aif_>OKGDZqetO|MT+5~o{aWcP)AOpdrTvU??ExmWhsbEZU{3oLm$l!J(|*T__6Kfhf1*Oz1>#9oQN>%d z%3Tc`#AOmo*u<9d;%&SWVL3*qOn&J{B&WB(gibVf`e^3AqT@KE`4ovm`wLUr-^#=) zl*l6!8GMXSNFk}gr{EGzyB6AtN(OrnDij%fMmr51y1#^2RR{Z*AY-)Z*w?Yk=t~(> VZwI8rCRhxIaA=j&iNVEv;6Ji6BPaj> literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$countRenderer.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation$countRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..58e71aeb5d152d1503c4e137a2b56b2c460a5ff8 GIT binary patch literal 1845 zcmb7EU31e$6g_L%kz*7R!bck@G-=b+7AYb$EiER2U;}Y5gxbNBv@eRX7=a>rBspRF zYx>gCPo`yBGt$fgi=TA2)2TEi(kDJ|Qp^ zKXRk#^8$0#0g)ED`LgS~@uI+de&F4OhCsR$Y|3E}wSgQC<)C5QfPtd|T3!W=R$X7- zX>V=FFySgNUJV@5vq_TNd(N~XA#i0-5c`WwLZ_SZ&7ziqtybVmKNh%}ul6@%B{{#C z_$<$6dsa6dOD8U_uU9ICuG`*;t-TDz98Tf1j(12|CFNSm278VsfJQt<-sL#FkPXc5?(OyG3Esf#rl!! zJRwXrKa*$486fbffs6P|V3+}2`~qk8H*O=LWp!7Jg@z({$v{z&$=qMAtX)@$77Q%n z3NMdJWIIoqA@Am!fY-BBg=gA$=avyt?uFi99H|&8`(9B@vN;;xyA)0$gCWlJWR@KpQ}0eP24yVL)H-j*cMwY&sIr|E^*$z%VLuP!kgZKW% z%mecejJ`nrCC**aC-h9ZgSiPkJ*Ic)@*S8?$OqNKBp# z?K>RNzQ>gI40-JboY#KDMeQdnYCof_{eoNCuehr{Ptex7hq(*$iyLXgCu*jgvMPnHR@GwbYZ z5^Sv~6^qt4#1^O^iW+Mbiwz6Zb9#FE#dG?t=k#m;3qSPK+V(y($<8JuH2JVI`@G!y z+~;?H_htV2pFjQyKs&Bzh!HwmFKc*a-ZqWAUCdgJ;il8Yyy;u6Gj7QVV{pQ9vIFJ0 zW=BqRX3V@VJq?0TH)f8ThHW}oV_;-VrhN@Hgbl&0IpG^}TspqdnO6Gxtb#8c=@F{j zkugGj-+bW|L1fG$1p@UDYWzc1q4`e2_P%9W$$DybTaM*_hj4$(vZZgdt0y_krgga) zxdMb+bkssmpbBertV9D}s3ke9R=%b~LtOp)x{eh{5LWkDj@(UkwwpHX zVbinJcxFF~uHT9OrR9P~XlD-}mOD`yHPa2IxJ z`1TwEhnsZVjeD3s@`<8pvrE>_AXvfiRPvyP4#FJ~WQ?ZeTe4te+?>f#v|kpaHy(tM zf_S%%d%hb9M5 zxW-b$FjamVA@o$*wa6(^qKR}wbNkf&89c?Lj1GxWPFE^yBV;((T3eEjR=9e;A1XEn z<{i>uVT`bXDcK!3gD_TU>dh3~z}Jd{m*m611Y5@jd{ZIp=x|jns43<%95Zn|!Q`@> zQC9(3(BY#<(Ad&puB(KDOSQAo!Ar9%4%V-kUiy$V&h$KT(@fQA+gy)=ES|tm@RWw1 za>b3}XJHoZaWVs=eb%V#3{UZN{0vWrnYg?*bR^IDe|7 z^f`@>6n&`_r&L~jM#r-_rmB$3eFGmq->GWTb2^TzQk39Rb;tC?m$Vbp|AGcJHZ_v(J`ZUgJI77HS^7_0O-!qw( zdDX+|_>JQD>O9v|f6zD6hle~f&0emO`hw2yZHn^)xa{>ypW|#)&_I68SH%FD3 z&vUY9S!$|a*Q;K3_Q+~eAxGF;5%3Y;!unki6{;y!^doFrP+(Dla%r7qT+o)W>&wm~ z#N>8DbA`smAm{T}21xgt`Jnh~xJ1|*`6{w~F;g`Bp0Fxtqso+JPzK$imzMWgsw-`n zS68;F-R!L%hdcHz+bk3$L!OA*f854hZWaHk`59AfFMn3VRMQL8)u{$K7=sJQD&Do4 zN00Hk;CDmomMf@hy^8wQtyi$Nb;A{`yBzFpeVo>92=$To)j{X>?$P5GrmoL~72o42;y`N$Dkx>1^>Q%xI=_(%ITRw^z z*&*5*MOC|6o2RieC&Rt8_S%McTn!?FI!+4_pW;rJ45r1hOeKi$;YqZ`HmVjQU6k7O$o1@MU@)0sln@0>}NGl zk7*p`nZ{~$r76Vwx0dkh%gTw=PUmo%cFhN z_a@FU*=p$|&NKaDxPa|=i=S1v#NS45;~ggQ7ihvoHAgYr63)?P6!0$I+De@ef&rvLx| literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation.class b/eclipse-build/org/rapla/plugin/occupationview/SwingOccupation.class new file mode 100644 index 0000000000000000000000000000000000000000..832f4497e0561e6b9b453983be21d9ed7d5b9f39 GIT binary patch literal 27231 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$1.class b/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b76c0efd4906b2b063014d41ec72bd9ff6b46e04 GIT binary patch literal 1345 zcmb7DYflqF6g>ll!m>c6h$5h<726^#Me$X{NJUcvgh(aw&7lnK=ys;=gX+K1L?O|{ zAK;HN-r1ICjDaTGy^p|3&0hqEYDL!XluNZm@TKNH2!3K9j(Lub-k1=!xRq3Z@h~M(jQD-5Tr`ma`WU#<6 zmp*TCp_tiVh!ym<=mxR2VWG!DI|gjnNHTP!o1gSAOC?sr+LrK2e9ILK1IwEF-{90H z`K@5gw81cYP9CWowb7H}N~_N`9r`o}RyYyKQKZPwR}n!;YquopCGja>aMH`~`7U>O zBXGnn-HNk9^M6#3L z(Vrb1+sB2k+`}DuW)p+&_Az%F j^y4wmv>MxNd=T84QnkYz;&k^%e$Ksron literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$2.class b/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$2.class new file mode 100644 index 0000000000000000000000000000000000000000..e2e47dc4dbdd6897267e5ee12496cc8be600db4d GIT binary patch literal 1344 zcmb7DT~8B16g@**3(G<)MHB%=t=JY}p^9Hcj8rr=g%GKYyg8JiUER(!yIZOcKKPF` zQAjlL2l%6mceVuzF$S7!_kQd>bMBdYfB*UM3qTf6qUd3mQ*PCAdBfpW!)aD+X{k!3 z+2Fpd`i5jhemVuX8D!WHyR0!|YL2Mb#Th3h8@Rg*!rSbJu#M@t(S_YArW? zUrC0zCtRC5W#M`R{JQXrfxToH$SdjjT>541G)07X=^tY_=htj6IY<18M@OB8V2)}R zZE5>U3=65V7Uv7;GDA48wnZO^wFv|L20|DzVIsj0Nwq(T6>TZjn)NN=miU$<7>0_9 z`Y&^8ll)FFtlMD7o{>i~OKtQgxm5CFT{S(@f#r`y<|$HO7_17vq?A*#8zu39fa2&K{mU3JIA-GlI^feh~H0lBXSq!7$dB)}nUH&oND zi08JRk;L(3n$?Fg#8za*Q662#s_<)STO&PYSni(Q9hcWdOS$jcyG3i`(|zZ<=BnDX zt$b$zS80BooE~MfAf<5g4);9aVUlJ#L<`n~%ZT6{dC|b@jmPz%ldZER1}HN~)*AU? z9m!08M=Ucwv5)g#$?w51{TuYAWhJB*E|4|ZsUE>a@-)sRj0WGBblwHAxG~pEyE&~$TETh$pHQWa#l<; literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$Listener.class b/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..8c14ac20cbba09fea2b7dc2443fe0e5fb1fdeff2 GIT binary patch literal 3802 zcmbVOTXPi075>g@myvcyAWO1>k!-}pSXWjNBwQ8~gb=obBrYpNgcZZEJCX)=XO-Dm z31e`AZHS34I0lmhJAQ-;PoWBgom9nn@`E3eKah7<`4_m#v7N7HW;F}J7*bo(boc2# zm+yS%bbtQsU;hrE7awVe2sRa*>7--K=8WWQt~71g$wDSmnl)UjV9#0Rd~(dno9P*A z%H3z!W^V1URdh|;bTmW-b;pf4BbhVo>EzyH$IXnZVTs^LZ`GK0ljfXhyUD(cQWhSp z7W9NxGll$Y!REeVGGpXSJ8L+}U50D+&rq!yo{9@vmEx1h;=DzJzV5qs36{7sR&i|) zEewYy9wx99&u+79%iS*6(DtZ@+s6gb{zBHQf#5M63FvWDp+QG28U^Y%nT!0W_XbAGo7h|lQ*-1m2JcK&B}nv zP^x{r1}%6>!;^ybkA|C$m1rdsase-j1Gb8VCgpIPN>}SxgSCQcBa<&=63;+vS~aACF@jwrhA+u;Tk^qT^@S zA*i7%=|aiLP*-EwnTj6ZLAFyzKXwV?vyM5pv*fx8ug5)r%LP2-FMHc}>v#^&6Jg6{ zUh?E*+B!x3GN@u3(y<4_EF&XJUd7r52Yteh>e%ZUvCWgNuT7$^n0O zx!U8HQR%iw;RjRko}=nqZ=5YIrz5Y>Nt9-lFKSy+L0`}@i(ir>Mb~fwzO_G0l_=Of zCKPqJN`pqM{9Mf8kcN4|GY@vvD>nZ`3trN33NMFUheda=5~hc`5h}8z0!#({!OO;= z?V8i3!_qs0Uuk%ST|Z1!Ak^_|oTU$z?T#C{lA=&s`=B8C1AyEEy1JQcbAG^Pu4Rb& zI3ZIUR{{PT9dF zF9r>~v+L^AmCa{SjDNLQO6f9=HX_0w5bx-`jk=CIsK3cs1dsFo67GTYpowE$jS0h# zu$*7P6IkJEkW-!w;6}$S)ZIe!RYY&9VbyIktMA8H^$DI9jCT7QIv0>!z)$!|`3rs5 zP#?$!A`2M2jxC{Zq(T_=ge{?P-!&}l{u|O0cW{s@yB9D%avgPBqe^j<_MeD;S{??* zyB08Ulb$DVfj`i973mP_8Po>EWg`-@84a=(t&-x6_$;=`cI=TIn22#z%N`G{jULK30^-Zyw%OBvh?-1Ok*s9APA|Fi6(2{cvhyGtnzS8A^(z>mhQsgm2TV#kw z3t1y;7HRP+iwH7GTI?k)4v-dOSS1IsPR2=%2~y)Q`s4)+%8NK8M=&Wzd8K9GNET4W+W1;SFHF}T~6s}G?MrVk*~3TC+Vk?!Mq)P=HVY?p6Vf%pPloapWwF< zlymMchHSWvi~iEZt9VR}CT`(k{d-4)bu}v=y@il2*+5P{Tv9E{FWjeC7m%~4mDkWF zucKGa@d0-pN97F`>je+JCf~U-dMq~;w|M0igM5u0oLs^0gJ{ljdz1#+l^5maHPYq# zOzWz7v5Sn4sui{z&l|sCHmS0gx9H8=XqI=_LN3y)cRepUe5H$CwBrx>BTd%wW>MuI cA=hd=&#E}SN(UnN03Y(JUL$;!;ZMMS0b`BY`~Uy| literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel.class b/eclipse-build/org/rapla/plugin/occupationview/TimeShiftPanel.class new file mode 100644 index 0000000000000000000000000000000000000000..1d3803f191905336ae133b9f03a2e6172fed8f2b GIT binary patch literal 10556 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 AO#lD@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/images/archive.gif b/eclipse-build/org/rapla/plugin/occupationview/images/archive.gif new file mode 100644 index 0000000000000000000000000000000000000000..51e703b1b9c671baa2be0f6525edb3b69403370d GIT binary patch literal 216 zcmZ?wbhEHb6krfwIKsg2wj(b5!P~sjn^4pBFDXFJ7TPNb)}zFdzZN zpDc_F4AKlbATf}g46LCK)cR5~=VfGBty!EmMJ+qTijl!k<;;`cOWYDXbj&=28jDUI znIPA;;-J&oD09KqYe6rnb~B%5E3$|=yh9IPet+`%NBf)uy^D@aTzY)-fot23+}wNe?!6a3?!Wl{^8L@x-+q7i^6T4= z-|xTt{`%w3m+!w{e)y^6oc`w1&#ymzfB*UW_T`1Uw{+DM*j4A-RTtQ`mDw~G+te4@ z*5unwsB@ZCZ$6>YvZvf?POsI-Q$@u?XdkPBeycH`o4c<(-&a13Rs-Gz p^76d@d4oif5*H>MU5T+@im_^v zw``QSd7ZwMvdp5p(@=n__51(&{r~9j_4NDy_x%6u^7Z!o|LpSh`ThU={{Qv-|M>m? z_x=C-{{Qy<|NsC0A^8LW0018VEC2ui01yBW000Gm;3tk`X+Do(pr)8Mgb)zTT0U^W z?HoWqBm<#9IH-g~!w8q*Bn*q1fs<(fKMz8r<6!JkoDSh?xL`1m9m0T!L@LTpc|+%{ z6&U&@o~2NBDm#AzS2%uu4h|L`78F(^LK+$zDjF6V1aU4f5IhhQKQ{(25)w2vEhs81 JEv+RX06QZIfSmvU literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/inout.gif b/eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/inout.gif new file mode 100644 index 0000000000000000000000000000000000000000..02aec9fdc6958f1912a4897fd8ca24e4b7cee8cf GIT binary patch literal 308 zcmZ?wbhEHb6k*_IC}3dFVE_UUyY4y*RO-zh9IM~wDQ$K$E$iu^> zqobpuqQcG1$-~1bEiLu?_wN@kUa+t*IXgQ(di3z|<3}DIZk(L#zkdD7%gZS&%wMoz z{*on&_4IUp{rdU$@82Ike!P77667|b0b8U)LxP8nRJUAH(a9Vm)-%n;nxRSyP8~^F z6=Sd_;7DqqqKp8Cu~cAW%!La_m6WGDvwn3=pXjsg3qJ>YI!jZ!YDs~&W^@dr-`SJ62+pK*(^ACOa@_X{KW3$$r zUbOlAiXE5N?74dH#gDtszu$lH{mGl3&)@xg`{~!`Z@=#VMPB~6_u~7*S3h2T`1$R} z?`Q9Re)#(P)3@JWfBgRb^LKTLe^s%6bxA;7sb4jaQ5?`-<SgGr(Stle^Db26xs$JRFC#dDB*55Co=Bh3>wUSTWRatZn Xzo>?*s*-}@%2f)gDn1*X9T}_vyYRdz literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/trash.gif b/eclipse-build/org/rapla/plugin/occupationview/images/eclipse-icons/trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9c8a2b1e48f7b07874f4c8f6ce0ad9b8be66985 GIT binary patch literal 615 zcmd6kKX21O96+zBX{xrN0a_^%2%PdKDJfu=(q5Xj1d=9Bp^yMW$5bMc*{rG(-fB4l zome;_A>F{>@g$ZTe-g{Fpkur7MvwUbEG$6sEqLS8+g`iV!qwyRD35-;MB0perhEzk zlU^jc1o{+wCWA!H9?Yd&paXuKEo03Gay1y z&`g?;%Sb2&svJ-|phU<-nLxOVDGZs9;cK&4WpAhpn`)G6pxn34GV ze^C6h+&CE=pAKHzZ{M8y_A7s2w>yVjRQzpCA#{e;(3r_Al>Hi=#j*9y8V=F)%(;aN zb93|742rXhcelLfU2kV|F&m>?ZYi^Td8u$Q_c?Z}yYAkeyIXY$?mWZ27r5QH_pNz= zyFGl+Tqn-Medmj_-*iZ2yHl-H{Z9;Z@*7?pYg$a&3+pI z-R7>D232!g0OBT#o&^o_xYKiPn>;swX;3wNE%{QYY&;TBJ~~?pW)f_f3n8z34&bay z!bz}Y07lxwmx@hoLA=Cg19%H;0FT?pS+Z_(*OWxe3I5#tY~*f1O(@U+lJejjDn%}Y z1Rzq9;a=60bo#brqnGm za_M}eBx4~dYDFj{5=Erc%5UX5hW9Gl?3cFz7*_7iJ=;u@7PZ~EoGN@N`ReD@r)4bw z!@a60i8vW44)Hj|11_tP@&Le>66MO3rC$kPQD92{#9Ro;qc|i5Qq;><+8F0(>{0-3 z`^;ITaz(AEiI`#KE)i;O_t$}23&26pFmC(IIS3jCpzrzsM4nAl5;4Tdg(Y94B!w)o zy7Jtw1ki2n8h}>&*f|IqW+R!ecY03w=*$^ukCFB=Fn!lg#*#3rf});7rsn|EJ3S{= zyxEurRWk{;O#0zjAYgl5&`=X`uH>+W6c6{RW>YIh+9woH(2A0XE&J0Jc#@a+wAL*9 zY+TFNNJ%0jpeSft>RPM-#polCNJ;!mp7Y1GI#BQQoK#{LkJqMFjFaByVg78a?S^nk z(vq;cVA&6ETnpkeBJQ;R$km2iUQiQO1<_vSh@i6F-|6H_4mrIbLh&dLld?-9rBJRU z6cFCX)^Y;4$oj1ah1Gnp#v`YzUGIMZP(C_y`mRq&#C$@8FXPPhlq-4u#cuAO)ZBl? z^-eES#6J@;O3SZYnGyA!0RS>bENIJtg0}yJZvl`zOFU$qm^+5UUw$wTzkQO8$FGMB zP6q(|^y_o#egQRAe0umDC#@FUC}hX=@ptL~ls|vq05esv90>(in$sMB)2|!mN&gi9 z_bc1{ICwSp^7!=-fRk1$n>%0N-YPjxfsKXC-kUo-JKrBW_bS^ajKgg1#r{+N9-i{e z{y|oaa|Iu|@Me0scDuH7Ro*O8qbdbkrrX>#^-j;prGx+v8z0a0_r>vFYl+V!*fNVM z*=;sVZUA{>(cVYeBNUQxQss9JU>3;J_`hQHFT;YJ)nwH$Z~y=R07*qoM6N<$g5JH~ AGXMYp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/occupationview/images/table.png b/eclipse-build/org/rapla/plugin/occupationview/images/table.png new file mode 100644 index 0000000000000000000000000000000000000000..fe33429ec7bf1dc30fcde54816f477ddd1568912 GIT binary patch literal 997 zcmVpK=2`#%19C}3 zK~zY`#h1@ZD_0c9KQq1zFGI--2rYsVN{T<2NT%veP#0Oa6w$vyL~!S_|3MLS>#~b3 zf(pWWb>YUvC6EC%_jHlmaVC@0$);Wya&yl2-h1x%d(PZD@X~$) z(C&ls?QM)gltM(ceY!8w9wVLc zBK&^+H$NYI=f8aYt7kC7=|4M@fJoccQk{-~h@d(SrL;O0;B+lg(o`=lF7^y2u1vOVhl6n(=UdP703tF~t5tHj zTx^*%KCVpJY?e}~^dgh%x}Hv??xqtmZW|OIN#IN-Q`OOT%cK)h%Vb#=kB^TL+BY{h z|MP6>CsX8X8Xg}0LsQr-lLo&glYX;mUtF2A&6g>iPT%T8`oF6wlEA<}*=)9_OgbUs zR+Gl}xKw@f-A<5rW#$CXL1>&tX+=J`x=xbHdK(A#A{= zAT|oDlh*h$2~#T+6x@T&0zuk5pyg=M#z=If-ew52DOiKG)Q~hReV~||(47%&!lXzz zX{R-FOmhrLmp2_g*F!dhC^{wEJ_RjMnxW!g5C{Hu zHVt_hr!X0b)|yn$@Ze}F(KFuLm+T2q`w<04af}uebT=_&n3?XPl`(Z6{Y{aT;77-# z*na)k2a6({x|LkZ%PiO_b zz2It&t7lqp5|0M)h(PqNbt!mEx)3m|Nn0A1P;d%N$tD_iuBbb+0_|nn{3@K((ppAW zy|aEhQ#AFslsm294Ep@^qgixmYmFES&TtLApvuE|3m!**5J`b;Rk^W3vw{H(GEZqs zN~hda%}XkQ8`YUutJ+7s=o+SaN^|x2a{5wL4p$^IvzC@K((Y_tSG{5~*kioQdJWU1 z!O_*l?3~7qRApN{h;s~0P5R1KAR!u7FoIEmwRA`B^=fI?mH=UsiAhgk>$2q-@(AGYW>+00WVWK8K~imK+<%F+62Y7bM#m zP1biIglECdMzhuYN3v4=B9TJ= zUcY8(>^DTK39oR94cLx5CB{6z;BHH7_0=fW;U)e*5q{fNWsUlmj#K~2xpNT%~M7} z;8<13-~CGjM{r#s$LUoiz0{Ds*NMfUC!kdO!tu0vwXJLy%`A#G>HF6TzQMPgooo)n z>~ws^`ETdT@bY>}RRSQeWmz?yt(?)R(6C)}(mER(Z)jWX^=ZFMA+*z~dOi&Z@O_Na zmcNjN?5!NDT-)S}1lIsh*P)f%>q+h7DnHF(Q9}4P-1`fOI&9%@h%3-Z_I7Obc0p#2 zeeT~!IzVcNR3eV@;(G2Z#P-f%XKVqxFU+Ci7WVLOlz;c$LRaip>@VSPtb_-`@p(L4 z2mbBm(<_9S$Jqw-lY8hwY!0ced5qOz4o}{~c|r?P`tq z-#?Hq;i}wOz%}0cdk6XW4GePT~6{B{ZNmhj<{+ug(lET0CZX)8MD zdJMa;mq>MSX79r=_OmgnY)S`Ez(Lm7A$*F%xQQe9i7y$qam<6O-G>C9@Kk;l@EJZQ zWG8VQU*JoESSM!;cVrxnl9G{VAx>YFaN{qW|Cyv8iAL|}xTjX}*~)4KzQgxr6)IP$ VqCtAOT=-;_a6?7-2k(lT{{o={KTrSw literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory$1.class b/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1c703f88875a57479cbe8ed788f0b5d37c145f62 GIT binary patch literal 3972 zcmbtXS#uOs6#i~9lb*~pNeqZK;D!;CQ5->WnSdITK}WM-7TlH2D=iGC?`<-*o{P_1* z-vC&Ry&7r++8sBaa?N7FOce{|yk)1H(NQZWi>_sRmYq-a`L7!)uRYQ(uQzj^<4&}! z(hw17+G38Ise-9ghquU_r=d>Z1b@}s=B4Dgw7pbE&a)i5+bVg|maagZx7jMSoX!2a z|91fG0*&Klp~aOY>5iLf1A)^+{Qh z)V?E5uB;4u%`qv^++77?z$09F>ea2aY|FbyV0UXMt|J6G4AFckg?2blEgb#9akgy~ zh;%w5vK|5pb!dnw=~x~0h%4zh9SP`4GIT6JLmahOs-qFh1ZrEAd1JR_%ii+XuyhB_ z;ewBclQRn&P1jQImBolUc7b)FP>&FdmR0KL$UvU<2I-DE?wA}AIH@&A>p;e36#LrS zHfm@QXsJ?d7N8QTZ004oF`7|ynMmMNtk7{fS_Ptc>1FACQEOWWwSeaB8j=F%&f}82 zlCEtQQUlglu^_V}YSU3mx^cAOOdTt678$}Vu9Oo#j@dZQ#%c|#1dgeaDN8qb>FPKK z=L%?KURm~y3M_8ThNG&ewJRUz={O%32*f-mpyGikR0x_t8f!HW(bMM0qf#{??&w$t zk~zkh`?mRYyp+hyVLHT$Y){}4T&kgi{5gb*j!qS(Mt`b^;>h4K4eR%7DnY0^F89$Y zNIUOsR-UiWaiua&&{%C}(?J3~=+n?UZ$6_t4`U?NwPE9+IIb1NzLF< zD3IBnVs(2A0|JO+2v=)h8C+OR^ay#a;~HE`Xw4jB@H=DQ(X@;TGs>P-NOh}1lst~> zaifMC<^`vtnw&bEn*>%=Dl6|hH)D$ii>=}?syeo!Akd&%i|MJ5yB#~v?hyvU z&*Ts=*g6~qgDUNeJ)-ixMTZMgYbM{-0ux7*@0|3UUbMQJvo{sXJj)9z0EF)P_JiAE z7?etFrW43cUw( zJcx&?=$#{A9SwTnmNj>o4%tqpV|%=2NY_X3n1)B$7plZLoRyBp@dR`7r>ONLQk6bF zdX=IH(3=69*OY+Z)wyiGyG)?Q;*}(_Jgd;;qpqn)nSGFV^jz%lJ2D|uDymg7I9kuN zyw?BP@OW}FW~yT|hEdBc&34bj%uv2cN?E_h4%GkMrQ{qV3BfZTIo98F^ zl>H^=N*}#kxES(fE2XA%#b0@=H|Ox^H^xeF?swNIW6yC4TP-i>p2}0!lVeO>&)U55 z{mvpwIGMv>Ek992nwr$a2sAaTdC`AzTJ)cs75Q7EhMz_>QTrH5m-9W!=aS?ZlW0z! zIf+Hdm6KSUG$NBYKKUh&3rDzE-b~XSb^P0;Wezq>m0-0 z;AHeB2JsfI!`s+|cTmK8xE=3fJ3hdD_z;icBR07Y@hr)>8=qniKBLxNOyP5Uk1y~O zCh;@he#Mvg9sBS%rbPq3@{e(cqJ?Oz9HWwU;7K0jLi~xR@H7v7DgMAS)T(7%zj2S} zm_-V|;CZe^8QZsb0WYGC5q?c-G%%}8B-qQ$C&nnBV{W@BZKtnS`E5NTyoH}#B-9?* z%(8($Xud}`bKOHU-XJoHTEWVjl;7gY8btpg9CaFmhPV02Xt;#`f!JS2YIv9OUs$f; dy|BQLKcI09q4|i<2=A|t360`1yEdQv`xiT0eoO!W literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory.class b/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingMenuFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..745f2d75a75cfca9a85706cd164e76617ff12a18 GIT binary patch literal 9596 zcmbta33y!9b^edGH_MY`OUN)lurS`Vd1B*LG6q?e>>*klNw$$8z16=R2tUcxEV;2%3X~v4}C6j3v^s#89xu z>TY(rT}C3)5sswIgf(`5L9*E5Z)CI#=|6_FU`G&S_sr;CQ|8eBE2;n&lnzP0?!sM>u&98 z_rNdEiKS;tZ(F-PQZDfJ^|$u+Z)oi&K&3!y@7`c{W($0ogh`BPawBN$%rjD04qI~2 zij=4s$&8S{P-4(b2`X)RGwE17*cBcngtsp?lnAFYNkgz=^6c8_%uOFzM;v8qV~JRL zo#5KVF7gJG;SpoEncQhhTd`p5Nw-)K;n8qp*a%W~aWfIjLq^QRU~DLp45wop=aPJ{ zrEV)_(Y}W&SCc6X9}&#UOCyiOQf>}VP|{{b4Ihe8t0RDm1q;rC%(|@_E)mSO^lQm$ zQ#dtDnfWje3lyS-#Jo6Ex77>5VjVS@<3T+|oE3S~XgEFGwA7DAEYZ*;Sfz;l0G#Ux z;-j>oAtT*39E(QcrrEoX?61_ZO0BLWi5nb? z>!$YoSc4V~%{0Wk94SK`YjK&Ncr-(kUhUq;_PG`pd(KGR^dS!}pC;~Q9<)vyywroX zX@ko>XrDH?!i$XvY1l;e3z=45I-E>rM%xp+Vo5Wh981TQ@X!)^dpg_w=tQ@ME?b0 zwP34`ZMaHM!37QjUGxabe{o$%sc5^7t8opf*=g+UGpLf;Su~d6bBK7Z#q}Dlo1{rj z=m=v6%_f#M=(J{1FlW-*kTXsMQ4DI}u2p$c$j<5*!Z3xHV1N*ulf__#Rfls8H;}!l z)~BeC>li_T+>pH~f;_$LXrRz_3!Nh>A50{bUo%Wz;+SMsiZ0u8qI}&}1)tHe3%kjF z+O)@~67N7OAK9zpCfv+`OENpnp&^5^Y9gm+3JP%xE@*?(k!}^7J5>bhGYknv(u3P6 z`%r=rH5RQ+8gYiuT}CZ!pmvcDw_u-Q?M^|B+uK~s+=Bf&?#4Z|g7E05kzkZ*Dg-)B z6wdxF9vl!9En1>B%lPpC9@OwjLETyNr{hzKz)~ZbG?P9&go7F$p5#iAY_?7XEyE1; zY+)kP@fjQv_$k+pSlsAHnj?aXrfAS{iAAw=7Ky;E$Rk;aDQrIy!3dtYa4)Kf}){x&DF8?WD=Y z!(^f?!MV)5AWd@8vaudn7p}5v{aDy%C<2QE+s>-SW(_ZyxY^Eo*b zj~hebIBhm<TUC90?^NyTn5Ji^oK`8^#Sp|@Q1`~`S~qX*VY92f zyWdBx?emD2P9CE}F0l^HEK0<$i!MBWYBbmoX9NwWP5OI+som^4Gt;aP- zeiv_7$yek;T|OcgIixRLP13W~lIZnU6H#8L%a9_l2|dX>UR1FZD@Kc+3k3Q_3^$p!q&AxzlSd+!XMSLQ!dYD03h6 zvK~tPo{$x~tdvzei-e=m)`&Xtcg9j_BcbZ%d5)2Wcc+8KE)o%(3_*L-WX&WsPPrav zvlB$lMQLUXtl7LFxWGmI)TBbQ8RQ{1Wkl_;s1jjbFFBD|k<|&DL{I$;gKhC}Dis^Fs=gMdsLvIag6M}r zaF!QdyaAFPu70U zTIZ5Uv`;ZQ z8;I0~C87!M4P4i<1wnO*szTE~Gqd1lJ9j%^solY-NE*^**b2HN$+~=^Om5({mh3zm z!^*Q);HF6vx`2HZXx&MyXO(D#6F!NHsmrK3TIoCNG3)ZoBMef-dySMwc#bGan2Nsn zN=dtQ*&}=HBclb{nzEywVDpT&o2SurqH-kQrrL?4Br4)^7pmFi#07Oc$-9_(!t_m6 z-stU+L=4Vt=-)Uqu|e zmLaZL>P3Ti&$aNLXTbyrU4#obQo@-FaStDp8`lfNLXqv$4Vr*-yTIT|3E(w$zM~wv(C?Qm!Bnx(h8>}=? zngc6UV5M2G^=`1TKv@o~Oo5eU!8W+Tw1Aca(-fFygEhQ>jtP9M2(MyevnSx0z{ds6 zUe(ybCl8+@a{^4c6Zixt^ustB&?i85dKIx|znTvCC$Li?h&7kj_)4FJx5iiYIcz!x zb0FXil#k=aF{GQzZP-A$z42khn=9(au;&DV6t2gbD+85dcybKSjN$VI5m(!Y0~KR9Y~fK9e@*b@sg2a!kpZ=< zB4!*f9L3S+`S9AnlCBfuGAf^!FY@ZKnCt>?^1TOqF)GD!n$HT}39iIkerq{CAFDaq z%qN}}tmk(FTOnM=Cx*)r!4-({yA!P#eY-yzZ7dVdZvi&yR z!T0cey6wC8IbO#P;3GF*!Vfv;Cr^*!57{aw2Xpa9_+wO%_9c|VkJ#GJ0PthBDoJ+* zXMe)qKP8DTK|e*&muL_Tof;Z73LC$|LVl!+uVry%O7hrkX=aW+o7D_^ ze@0pH0E0irU+|YWiW*6}k1I|#PT;447x3m7{{Bg5FW_H}G*rDihW~Injj!UZZib`( zp%0f>Gr!t)7?sVX$MEZcs#D`4uN1E=wVYjwgf?)Zxy;JZ z_%UfDpaci%10_uXZCsX)$?`y1O=-Z}x4%@>)|L<77AQMH_M0fkRkGS~)gH_Ivq=c7P6gA06`m+VDv_;)Cetb4-ekxf>7j;p!pWP6vH} zPc4t(5T52^#xa`cxA;Ad$MI9T$XgW6&$#9tykaS7&=!AANhhV5ZmE=bQr604RN4Z( zF6-oS(%FR9B6(jgn^KFaVf zM_DyZe-275D}7JH8yeoyWD^}hR{Kxk5_qS~aNzTcOsjnUL$*EDe+lG<#oO=_y{R9mcf*Z;iH$MiM9+lfh=6 zH2a&FdL&lFBoWZRDe)&zTOZJ0mH3z>o`APnZaho|BsC_PW1dA;(VJb{th`f&i|nBU8?na6wCJ+V_#?d`~ijd zLku#e#Q43D@g&Juax=fTGLjr1{6Pv*MLk<>hjMB=Bsa;;RGWv7dACr)Mcn0Xxm9kX zbk602J~&>{D*rQXNa%Dr*`y4=UT^c>#v zh*v4{S(Kf^N8wY-l3opKG`UKX`!#uh1sfYG7Ok*D%H(NH9<%_Q0LF045GbdJ)`~wf z0T)@;5z}ZY5rm9(bEnnN$(H7|{P6EY{ zKuepn0a|EF=|)$&LJM|-!_vK_bf=Gf=yUtfr#|xaKle)3m1OfJvA_7vnVBgxbH@DDE>0$r)hVkD!c<7y-w&n@c7NNQn0k7?JO!U);Hv(<4LLf|`pP6Q+@Znnxg1s%A+h)T9;{@QzPR9~>WR7YL3ltH;zxT;+*V z1`k{86Q~|cC9{T_G-lLzPV=Ek;EMTFESJ!dMoU^XmRh(oZ==J9ofYDaO>w6W@2e1Z zZi>5nsI3rpZHl{ncz=bsTVSW<|NTP;h6nB%nfBpo0nqP)lN0ojE?#9`?sz1-A_ID8 zT03qG>sowXUeT^fcT3jvuVhV!O4jtivsX{*M!&#K4I{-sFJ#n&wvx&miA>7OGK>b# z>}#A6@EhHZCkDhjv;Q}dc1PBbXE9yfT=Bv2<4R(U5s8WEOSEdtJl z#+ei_3O-;_oeHkAsBQ%xw5Z(*>TxXtJ)$SIv0P$K%S@|taZSP_6;tCg zYDSmqJkwEmo8bLzySE9OKvgWGsfLzEZCyiSX+lkYpN!9df_{9+ zi$S_v5+75=kNpUHG0dZ9hdldgS%&=ayvaZE$MeR2Ey9a2fm@1+iKPfyhS}Mn#u<6el!9s8C9or_8J42JH4RpksVhdr;*F|Fby3R@ z89v<2{ewJ2%gFsv1s}mIbEwYG3pCnx4i>!Wv(@bQ+_Dyv2=g<`_bRv#_X{Z8JD5tJ zm{79@leo(=QoxLaq*V+>i*kP>R0VU05v%llFcr@wl1#I!;b7y87ZMC5ksVRzw73t8 z0)e4?Z>X2Op}xJ>k9p`aG|K{4=5Ju{F!I*yLeBOuyGN2lrzFx9mO6TU$e4QU6Nafr z;#h@VC-sh-dObdzH1$Y4SfSTNy@yP_Jw7~a>XA5Aq1R2lM|t!1aC@5%A1BpGO2D1A z+Gp)nFl5t;$$C%HQFm59sWEm=!h$F^WbqWh&}akxdjgD=;>s?iRwTZkQ1BU9*&gml z=!Rr{R>6~!wUf!3$Y={%MoY%zq3!mLM0a#U*Rm1%wxBQOGOBDr5!(i0M|OzMEBFGw zNN3Y_Tdg){FTxbJOXw}>@p*b9Flf1=rq$Sz7Gd9t^Xy`^m->`{$k;TCj?y_VzAVr$ zi}Lc#`0*TciSVx}_&T0vsundvJ_iD|`KD6x1WNsHD)^QJu#fRI-$BXzj)L#v1u_fQ z6xe$ycPzgg`$SS(vA6>J%xGW!HHnx&Ld_h}GG=i~vwQ{1S$yrvS)G+EzIo+ZeD?h8 z$80S!Lsj@GUh(2(f!!CMoRa%1Si?GF$y}I_5g6U7SzJO;O3e3356>%j6&uzeW)=l* z-tv%&F-XGYH3hFr40wqF3oa}`d3k|bFWarsz)G`aNs_FxBuQ3Tk|e7vNs`4R)iIz$ zS~ix^(?%*Y7+15|G0r7k{O*#+PHU?4<1M`H#UD5!6vJfNRq)3`Imsi6!OaX0vv_0rjm5rb2yTqdRs>rx}M)tKBWz2x)5 z2F!nMR3QW}e57~qp?AQ~wPIUWbA5$v9pE}>Ti0-XrEOiu^;NcYh*mjhnL`A}Ec44D z%lvZ0GQS+K_?4ZOgB*Rhkt-KhyKpn9PtsEdzqd6tuj7`c4KzmA(fkTpi)34o>?o35 zMY8858gO6_|6a%I%KvJ((To7XbgqTRw4xmm>_sPTrL@jE5WVQ*ibqp&8y#}VNvhmI z#}KdU=8S!;X`O9q1N-UU(5U-09Edsto(tZnvlh2cMqRZyI2m=Dw8x~qwKzN(^-0cD z)D@_*RH;N&ZlEe@s*CuyzN?qa;8kMS&gG$}d+_V;dNawya~k*A))A)-c%| z4$iFM!%a;uqje4U$WP$LHGDL@f%#}~VI51sBb0}wAeh)*GbJ^T<~7@b+3huRQgbD* z*%3Ukz2*Z_^J96-!Xv2kP8F$l`Xyx5y9iH95 zbJ3uG9bXwWvA2e=uHhTa;Wd2QlvGnP)5XdKOp6x)g}Cpl#@0`@gq_$T5Q9Q zNx5mS1}~EGkoyu|$j7dm`(*4^n}h!I_=y9-(0TmKfl*$lm65y99IUqU$H;GE+{h2u z`MqZBWY8$7DUq0g3o&Ap)RjogsD&7=3&n8FFi3QVZSY}UZI!`$gm1uUmgA%B=cm!Y zptP|F_7MEN{0^`T4lziRg#I+Yvn+sloI@N>FpTFI)F<%}p0b5-bu)ykcmr=T5CNv* z=RDCt>vyw!eGK6MA^J;FE?V4$Uy*XtmLI<+<>8*+u;eW$xA7~>$`kzU8h&4FAyNx? t##RUg7z@7Uf6DLP&95v3XYkMETc5R6fOFGnC;p1Rag)H`xy^xh{tv64y7T}5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingPlugin.class b/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..f3dfb9fadc1d03f96af8f2e23a1911c64a220351 GIT binary patch literal 2360 zcmbVN?NSq07=BIyYzQ0FR1mNftVjtTS)q#B&{~Kt=iEW10K4XwA* zpS^;rGpOxMFQ6CI>3en;HnGfT$t1fu@5giAuk)P0|M}xD01Mbx5M#JyyA93dj>$F0 zY&8r^v+H$37mjOKo?$h#lD{m6%d&5ypo`(+Q+~uXlS`ZGQ=xkbdKe}myt>N|#m}~T zpaotJL{oPS$Fp6A)YfXHw7r#I-CHXZR~gd92(9ALW{n(!S}ty{7dH3u#pOzcA+e;J zhGlqPFvO=aI}BZUyCxL$GhBJwd!=QVHQ^?45oraN7%oH>d6PGrDn7tvhGau{Wv(Ca zhF}<&%Cv!AU!9MDi&V zEh8In%Z9L8Yg{Kzex~3DhI>)r-sgz5xij?YCr5=gd&gNKvLS0aBednY`%TwK#Ut|G z;LZt=NILhgs14!qf>pQaV0TdJ2`#p@Eo51`RSv{6x)LfrGp-qunT9)gBf!qedjQvn z(&F^%MvQI&B09QNhb6<&yPKX#^pRGj)h5}=&*Yy-Jx;S@TsX$SYg~PWYv~)u_~aNf zFOijsn=di{oGfGbl%D;*-xx+QjvKg&TfPQ_O0*baYxHI$@1A~z+mUOJFAQANzyNn} zmkf#BF+xun*c`p3b3A?TcX|c82Cmor-2&J6scQ~Pq3dsyqs(f3HvM`04erPBE4rS~ zyufPuA?5J`S^B<4@eRt|m`U%Xzw@Q@v!P%&{e8PYMjrQ*9zhTNpQiX`=w6w_1T@^n zP2#QvKcw+s+b|>w06${S&te@vfm0GyAB&|(sG}CfyGZXCDPrvHOc#CF!9aTo8-t)8 L%JS5u7aIQpz<_>| literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingResources.xml b/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingResources.xml new file mode 100644 index 0000000..266d5a1 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/officeprinting/OfficePrintingResources.xml @@ -0,0 +1,9 @@ + + + + + My reservations + Meine Reservierungen + mes réservations + + diff --git a/eclipse-build/org/rapla/plugin/officeprinting/UnoContact.class b/eclipse-build/org/rapla/plugin/officeprinting/UnoContact.class new file mode 100644 index 0000000000000000000000000000000000000000..ac164f751631631497f92097304987793b3a5ae8 GIT binary patch literal 9198 zcmbVR349dSdH+A{F{{;Ztq`!bf#ue{7~2A`2nK`zVI3F=A;1Q&RwHT6YG;|<1>q}+ zois@kr=f0~;52cZCO}#zv0Wouc5o6Waa^~tLz7-^8~48N)9C^Izc;g|)}ZDGntk(* z?|tY0``(+^FTeOQfDK|?LzO_IX^n-gXetp6rxMw*crt8`j>cm~%8Dm5@#I)|f70wQ zlbL8NqrojO|DNcHXgCq&NZ;^1Ml2&xyQ8mTe@|!cz`()1oktJs>l*0XClKf^%}bt z(zK3+?OEY&HCfUeF=N>YBbn(+j+$wKdG^NHOgs_piKaNCx<5XajApWyA#h9S=;oPR z&g|Jj8s5$EWIVG);63&K5AI4gYi}47i2d~IXUVMG#ob|!7=E}=r(-@A3ApMT2CE^k zM28wIj$E~Ju$`tgA+WlBrp_y9ZqGHR&00Zz%D-C28mtxYj~SUAM*3LBObINnZ|IJh z6XA3=8K$FJw%>(^oC)nUs7IrQ2D+Vc@0^$EXhJi!Oj-hKiy5_}q`jd?M5jwbYe_uW zQ6gDeuj58WD10Q>*SCLPcNtA5o{DKYU2^r!I&MLmfSxd;BRibn5Qx@aRk9-f99lDb z%5X*t`K#dku#V$_Uj4c}8Q=&r-=(r7ADYQg` zXvQQEEGk*s<@A%lcI?p5K~F7E&W-Bm#7+i4(wOA#3v(2T5UX7(X}69p?4gn@gV+}{ zcE*jwh(KqVlFCJ#sgs#K4TF-wZXG@7CBBVE)4hrphTtK&^~JdAy6>TifioM zFeq0K=-97T#}a1R$gTF{01j#xqFa}^ukz0hIdjm+n4OaZ_DtMN>NteMw(Iv8>2!3A zQD3Sm#|LU~7mjK;BG52vOxAHXq5>YnvZN6ki=$ztYYmKB=1GY&L`OejQVQCkr9_ID zOh7~_E8J`LXJg}?2}1&YUK~G0<+?F}`jU0ZdItzrDPv?HYB8FMmc-?fdzfuXmJA!w zWSU9uSkgS1+-sRB!^)h>ucE)?vQ01Z5j7aiFt-h7GX}BIH<`zgrB{tLPR)@KSXMf< z+~Wu;3?%`<-PV>)eHY^rcEhC;ucbe(Xe?cE70q#SOX=jR>x}c~^s|0A#$>E=i3W;u zeTmjpcF&`%hWi9=D49^E6+a%pdo?^Lu(D(tUsB<5BSEW$x0_}rouTn{ybteZ6)>FZ zkZ4*4W!a<|E+CmKco?z-nuqa04Ie1qrs8ZJKZ6eu@91UyhIN89R8KU?$YKaImv3i_ z)00hP;vG5o+{qHlv`)4A@DYI(WFg7w$`}b{%uqCBWs^ykP$9cG3$?bk%Ebf`~p5H5R6$y zG-GtBk}hT(h-bzf%?VUY)+M&8sKiQn(vMH!jD}B_JB=i;KWXmEvQV8cbUcpF2+Td6 zHLO!zw4XIfSQpq>tdx#KG@WiQg6wzC&OUsWP~8ztuFHgMIcbIwyH05BHA9RkX&{1W zb0}$sEMvmV7&-f-Z3mdJ9U#OSHlC0ew?bO&2?>yoRO3nfl7=somH?;H8Dm1n7x5*= zJpq(PwYiO(;k~jXCx9B!38t`f__BuctiB6nb{?j5{4#!pm7Pj3D)t5}rHmzxGRmk) z4|ih6O8BxLq}p!*pFB6J$Zt7M7DlS$LsiY)^;+XCS{f`j;*|?@3I56`U<|U z;|*DP_%fzFU&9Xs7)(Vax1COMxmTSOHT8GoB!n z{yDr%m}w&wRh768f5`%b-q3=-*6}y^Tk6<2o{c8BaY@q2!Ra9%{+@G2Nh}if;U8&m zyB$_U{#nPr;9rZ2Z!1m2*)%I_R5l8nHku z)J2`(O-7(tSv^rEOlHYd)601ovJ%i-BtNVX0xCVVAYFhH8k@2uD5|RbOL20rUU9`$`={%lGdrZr4jKN5*R%D!W zjcPlh)=uUPk#}GENhwUdo1YV?7EI%1+}rI73oVm;sHIS8+#gRP7^! zcRy<}=cOXYGo6j==Z>1$q|K|;hbA_c0S>S77Jvb9?mUARDnD$~}G>)UnF zEqchc@<)g3wX@-YM+?zMQhRyGN&Cbd1hg9^#eQ83NQxd+e)ZDiYNqU`%K(2Eq)#ZT8k{4he)ypGfDX~gL1m)^CvzEM# zlF4QsPd5@dSd6vG{EQX6|8ep1-i7PnftPO@->Tr_A8&P4n|HeGpR3yQ*hi$n0*>1~ z0n~Ej7~dtGd5zCwVPn$;EN*PRfZ#Lia^ZSD190=XlF!ws<~8YDti=uN3E9iA6wCNV z0%}{KT5{tmEN5HirgBW@UlrRSGM-~#rDQ<-gv?9UryHlRs<*Kv;A?Dr4#B2rtgFH| z(K3bb6mE*Ro2Ri+U>a0z#Cr}agWhRu6LLnx(-?FIJK(Pn@H(qJje^&(`dt^ z*hos7aGrOnFK~r4!6;Qu#pO*fO>0U|kbMbd0uP?U1d=q>a_okQ6gg?9+K+RdhkMM2 zg*5vfRILnKkE&Ldt@EmNf~|rfC0%LAliXt~v?~Zh(;zgoXsFjPso`E4b33r?3YNfK zJS1lw7|;;o-zfj$3&<&N-T9Pmu$DY}NOix0pxzg7e{ah)9unwjeiiGa$pRmq#?Mxv zIq-1~e8Po@J1`k^zktWSiOKGBSgPjy;xs;2MT^esZFv@-pTb#Ac&h1XZsNuc?Ba;+ z)wU_NP?Xy^vYqPapfYzbJUUT_o%GXP^wiz-`CT+p7mc%rvUXAV-R$Y($X-70KtKOU zQ*0pxGVhq8ioH_pa@RZXG@ju;UTnj&_*L%T#29)G7dWw3n6Mr-A7(_y@Xc|2EOw=UTvPjYg71*UJ-GN zh{tsiZ$`XorJO-9ULAvRODAh-b zbkUaAMO$7MZH_KLe*Z}6!j;#BH?IpluZyOcx@fqTF8Be=(Zw*iuA()UK8rsN{KXXh z>J0Rzz~2S_VG95Bv~2vFY;b}d<#YK9JVJp#P7{4Xi9(;01oEOR#ea}(p-kg~SjZ+n zs&LYOa+;fO2UMQClRc7HAn=auiSP6@yQcA9RSa&KcMGZVG0yuWL*i5Pk58*D?Nk}a zZy8WX%nVOmT!svDmU;vjdru$N$B6B5g^NEV4>Fsdt>xzl83IgyZe||A5B4$^riIr| zhz~F#gwD2BD;5MbHFZJ67xYaFF0B=dr$taD)JS!6uv)2ZPkwND%d}V_GvUUFU*f2Y z#agk3!N~mkTCG^erwq$l(ZFZWKP8&@%OF*7D|hA>&&RL4_ZdnupmJdjXphjZfX~tQ zKTA)0g3$MQ%Jl?6_DL2FUm(bSk-l+`7Cy_UJx?J0GU4|;Zs)z_0G=WweT8uJ6yx`+ z)X3LxAK~;d{(gpQzeEs~;G42Fl-KWBN59mX2-CRI;Ah2p<(<467B`9w)M_10i<^W5 zw`KUSxJ9&ayb;I6MpD(t%ZS({Zl#58$6gWPST*`bqp{!y$H=+>$#R7J!;C_eUA>>y-K4s#Q30BrWXKF>eZQ%Bv=4ruCqAZ4JwkfeK z;&w|Aq_tfy;mw23iyi%JZs6br(J5O&_XV*_)<0rT71UgB&|8@6m2-RLT-DmECevp7 zWTspd@fIw;pB4{#r^JCG>q?t$MHZ7R&+V| z+({gDasC71E?UCPolc4)?DLR*qd2Ni_Fmf25_fZ4Ce!5-WhdcvEFyTZ`nIx*gjg}O zoTn@vv1}U<#AV?Oeyr|oIvCMjZu7d@Jm;_`sMUEk$Z&g3bkhBaHuGeA7mLnb=A93C zM4hM3`{b3kS_+u6Oj+~$r1%CF@zk{vKOmG|Vu|+#%eNmXq3w(s$qOA3QHmf7w}=>~ z09E|ANyON4k;W1+A`A*G#aa*d6{59IiDe5!w_<7VHft_QOy!ge(ZR$h*HwwJ{{v-- Be02Z- literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/package.html b/eclipse-build/org/rapla/plugin/package.html new file mode 100644 index 0000000..b80ccc3 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/package.html @@ -0,0 +1,9 @@ + +This is the base package of the GUI-client. Communication through the backend +is done through the modules of org.rapla.facade package. +The gui-client is normally started through the RaplaClientService. +You can also plug-in your own components into the gui. + + + + diff --git a/eclipse-build/org/rapla/plugin/periodcopy/CopyDialog.class b/eclipse-build/org/rapla/plugin/periodcopy/CopyDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..05ed52a9acfbaa15a405fed0fe511e8b8fb52e9b GIT binary patch literal 3184 zcma)8X?GJ<7=CV-OgfBGLlJRfQ6MdWp%fGdmfEx^m_kjV5UbW{GA#qsOq@(g>+!hn z`@Zk{zF|`px6dAbjK4sA?o8S&EgqATxp(gSyvu#p{PFiszXI5fIRy;@8y$B-ca6Ml z=y|(1VdeC^=~_-UE`g3wE097<%gN8L&t6-DB z$|d8apk1J~a_zuXVQdx#=_DRm8DN!uDyG}tHtTwFn#W>kBy z&m1?3wl`nEG{m%39EUE$ezS&Ka4YY?tNRpz%YzHgSAGp2Ga-!I1Xjz2G&*0kqvjN? zDU6Q0&ZKnAn1&3p0xdK@@EAMWQf^%AS(y*x8YW~o6xwuz^`XMTDFr8~w)$SZj+-^z z{YJ)f+!+lvCYd@J*EBq{e=_gQ1a!8*=mCC$vYx-xn9r*Rkhn}(M?)UB(`G82=dANY zEmQlj0!C$1C5)N*&RbxInQ@Aq?l*&^zgJKcXc*}W{mynTKcSws^5(a{%A1}Y!A6CP zyJZ30BM^#?jP%KT+ll)$+>ZwW69b_Fmz3RVoc8qKY{1AF6Q;{Z$*Ors!^3!lnZ#@L z=VXIoT$-Xc$v8en7jKJgi*1i}O7Txt&a*h4j?Lkw5=QviRr}iA5g9GP zD8VFccdHtFf53?na`NOXTxp}1ZVdgbq#N5Xl}b0YVLFv=Zo?fZn%$}dggdJU1ciK% z;xmN(eJhWqQoQ3`CEQEdiN+Ehlsfq9jyzhzx+C&5ZJNWgk>|^&q;y7Jtbx2- zhP+yVbVXjTfxKCUyuEPxZkm!3b9g`U5zi_y9B0^p7!&16#&83!=HThYCJZ3TIkW|% z*vb~KV;bAotvc}n{||qJE_{z2_>-OKA9RTZ>=G*Wh*gM-E&MaF2iJ%}bc%qPeyk000H5Gf>SQ+HGkne*vBVmDfiIag0$<^4K4s$RTxIGt)9|iuxCxRj1AuxG9AmUnKu@fWhK}+*vyar7L}b{&2|-vg33)yAz*9f!(W?ldZ}iyzH$D49_Y@>t?WK zGk|L)ufFK<1?~1IyTEJu6&YEkqJ6gIcr}5;39q%LZHAubtk|J>C3=6Syy>SI$dVOE zfm~ukcWC0R+_+0Qs(V%G5QfAy<)>sh(ydzloO(^${tGs-oEG@|!w! z7_;N7!Cous&70DH>iKn96*!cOa5Ud+-x<})#r#4F$8l1}34x)m-DltwOio5khV#<$NN;WHE24v5oDDDV)Q3 z9bXF^>Fy$7Y+w>ZAr;7Q##Mk404?_*&T`7YG`=B5$y7pF7dVj1#~>vpzo_F93)yi= zxa`oDfm!wH7TJUtlTA`6VMfOlrqeO)UaWYi3|z&xtUH6aB?IZNTAO6T3bf%PWO~L{ut#A{Gj8eK;i#KY2X&- zJ29RS_;n{S7T;)}?TnOo*}Znfxayl|E3jiOOW_Xg>fpfc+cp!*!oWS;XUJ@^$e2_R zPuSbXsJ6R-hXx+uaXdkDY#h>h!*dxCiDk3z)NpR;BPgF3_z4!7KUnhCX4WgRq1uEk z&>rWgQ@8Xng+?>pIVQiLqav_By1lmBb1E#q#+Dd;A31Pb)!oz{cTwhj72iQ^jS)Y^ zgCKD9!+;C)DCQVSOj{=hCOaQmm6bWG5%Hi7kKjhpcO@^*`FwOGUbPjI?%#f=pHdq+ z>@#k~@d93`b241=ss?h%3m9dWS9i&=f)%w-5d4wBmXoJ*b#IlH~bFlI0^w zj*lc6p8sz2@H>e8+uW-GE+s`pF+1J)*HWw{C zXyL~fbblW6SimBoQXwBzFfri)4ojN)lekNZ`&>QXh&+Ug$5ATNak%YN7&xksJZ%6q zJmt5CyPsf*t6uIu3meN!@g5Fh1rAG6rA0xu7KeFogSI{R8NS*>J`E6ZHAr2VQhgNO{QL)6f7Xux literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit$1.class b/eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit$1.class new file mode 100644 index 0000000000000000000000000000000000000000..2d38cdc3cab7f95c1291889cf466c113f478c9b7 GIT binary patch literal 4673 zcmb7H`&%5<8GaA!GRrc_5-_GC3Fbl+2w}zAi;GDm3$Ytnf)HtmwmR$%%YHAtepP$1)n1a+Y|u0|ZEb9AYx^hkfAE(+efreCXJ*-*g{24&%pA^q=bZ0* zzxTVGH~#y|s{n4rKNQpn^w_yfG^fvJ_2_)IkTI?3ypc2QbjqH8C>rNu)SXROrqj`< zARy3uN?*{US>4J+k58R4QjUTKfnDybzUV}a1;cWp11ZO}tzk3o7?zO}XmDoCe8(+3 zaQK~{*e}qypl3U>`jn9sXc?{?J?`X8D?@>XJ51_!SYV)YGdr){s%t_Z5VzAtBLpHU z6olkxn~Fw+!>C8AiY8nqP~Ry`WxO+;4ZO_#hIV z?~W84$F`*J66-19(#ezS58-Zsu$i*0-ZB-EDn@XeN6{Avei1lOORXw65_5XSkixX= z9*ip(6WCMRFTUedoWQ-FP2NEz`&U4AH|&}S;X^deluCLmy9bjhPU1eQPB?}vnM@e| zfzFc>kT!fo#Ygdg$H8&CkV_fy8QadwB&*e6)RcY1UUF%utC*4tx6<@MBkz=!NnWQ_ z7?`facAvnopGg~)hJL?0ruCGbHlj>jtRqP#)NFqvW^hV@DbQApTU^f?R$9-wVk%}4 zrln)YhliwAb1E#@6|HU+7~7OqwYXa;Azt6`#PPv_^(g$(n>?%&iK+lKmd5KBeL@ ze40g!>W&#?(}KQIz~wS8x0Mf)b)8zY<1;Egizg~BVs5NTK^qdsR}*9|sp3Pw@8dd1 zRO=gH~5 ziNvd06A7ej|Ja?#H2+N%-;xbfQ(p3a#2(dCvvU4BD!z;Fl``52U#+yUquETe<-lK0#0rANCN*@MHD{~Nc;V?76TuUwfFKvxQ>Jbp&dU} z@iV+2uq8iZFAgoGjCmPn?2G+ns66jEK3d&VNLKz_ptX|9%JM|aSYS7@(@TA;9pd$h zEJ}sE5!dr9w0^VyFGaX$$}PW4ldUzn0yZIOx3?tlKD27mk_9jCRxXw%fgS5`o+qZ6 zHC>q|?^aTZ*LL3lYZEWK=irCfo#%tqSCOn%x z&q6QfvzAL!R{p7z)ZXrG;nKG3KkB}P)gd*T)aTtBgo10#Pp+qHI#a;~f%`Z1;;8Q$ zS5>WRJG~-Kjly1=anzJuTx<2EuvePY$<48 zRDRvU(IM2iGm-8C7qPXw=OUWBFQMf;Kh3os9lJEkKs4CLZZG!yJJaQ3SuoA9&hp)aft+Z_}8t0-@lK3fdIBuHbeBr`_Lzf*A$R0sq0Ig5cX+Rp*IH z`4=P2A)fFjkHgr{x8!$FI^Y}!UJx|6lU@MGaHz+h-EVK;FMJ1Br~Zn+bJRk4xm^C7 H@m~J}O*>QE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit.class b/eclipse-build/org/rapla/plugin/periodcopy/CopyPluginInit.class new file mode 100644 index 0000000000000000000000000000000000000000..4419ba5f5723ee07945a787210a1e58602e98c64 GIT binary patch literal 6493 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 TMKYIIE!OZ`-lBT>%|EXKP}C3Z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy.properties b/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy.properties new file mode 100644 index 0000000..cc59882 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy.properties @@ -0,0 +1,2 @@ +copy_events=copy events +copy_selected_events_from=copy selected events from \ No newline at end of file diff --git a/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopyPlugin.class b/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopyPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..2fc6b3e1379eb073219c6fa0a3a38c2ab67f13fe GIT binary patch literal 2193 zcmbVNjZzy`7(F)uHY7`Fw}uvLEwvOAezH<6Z4Fu>4K+0+krcF4#hc9~-Ll!;*=*20 zgfHMz*mj1tI^zTQP>$c-4Q!CiFas0z?tb4r=YD^C_Mdcy>MB7QZ;& zo*tqeh>qczuJ3pZYOTEauvFP8lvnC?2CW>C)qT&jTX}}DjbgpJxlt(Ytd+_|hQzXA znYQVF$q>(Ew-|;BPE#at4(An&GmJ+Z1&en&DlR}{P+G#TP$UfRWwIyF83j31C`c%n zV7L^Kgn_JfO{*z9dCX-MlX#yYNsKja?C}K%=sifkWpP_xDXNcoJm~6bp=z$ zN*Erd;v?LkkoURO71dpanM_~AVVUy-l1L(rn<{4TF~i7muSn^BY_F=>tpu_Rsa(`j ziJen1j|IYV*A;e?VPO!qFO*}op={I8ReU1Lo$#H|DGPf`#V8WgnzCt&O1Iq*-ecad zsBBuAUy$nrGP#~KZ3!LfZ#VS4$%&0TIh6FSYf<=A?(&2a2pv(@#uZ<3ur(NkVlm!?w@ zwoIy-!dF;Tu)=Uhrf~*F6$Lz?8KZ$)@#(#2bbYbXS#=ysaGPObK$o_&+oM>+*9smo zWTWyKPTO^CVf!8Z*S6K@+D%L7rNz7UYH+KfBpWrfQ7so0d_%1}1!}fks}EnI$0QzM zT}1^|>Vn}3?u)QK4C@0T&7Qf=DSV5%f(?eNQIt`OjykF0F*a!vZ#Iu?wQwBB(5nZ7 zHz2qZvz{MdIb&CYIr)y-NBCTzxj9lcYR#d#K4F-R5<5BgkrJ0k4;e;{!`WrHcFJ(m zOHR9KXc_LExd9~3b)OV)ox6wcv(&`k3W7(Go?VJBZUfib5clgom3@G|HFup7?Wz#H*8Xh46Va-O(I2Jm7XfJPyWql>;Pl0 zaq%ytpUC@52e|SUAHKn~mN~%e0dlXg_>y+U@F`u-1-Q$^HHn)fY@Y=l5GyHDk6Wje zk$rgf4Q@x!k-!*2)Nljt;4W=sQXJ_j16!a~g5%n~KWGV04WU|4C&6 T+KJG6L>mLA63a?7BnrlV_t8R8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy_de.properties b/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy_de.properties new file mode 100644 index 0000000..ea29945 --- /dev/null +++ b/eclipse-build/org/rapla/plugin/periodcopy/PeriodCopy_de.properties @@ -0,0 +1,2 @@ +copy_events=Kopiere Veranstaltungen +copy_selected_events_from=Ausgewhlte Veranstaltungen kopieren von: \ No newline at end of file diff --git a/eclipse-build/org/rapla/plugin/periodview/HTMLPeriodViewPage$1.class b/eclipse-build/org/rapla/plugin/periodview/HTMLPeriodViewPage$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5348127fb8b5d73d35fb61115d3dd7715d5a8771 GIT binary patch literal 1701 zcmb7E*-{fh6g?dR17TQ1kWB?8Lc%sAfFQwz&4Mx@CCGz5btYY5U^0`MX;6N}571Yv zQY?J1c=i+g7E8T7gbHgJQZ?!B+xMQko!dYEeE$I;i3JTIh7s4x86Gd#+$h*PImU* zSlP*EgtyK!wqR&VyOh!f_bhcT3d1S|hU7J4h$bk72A}7}OrhXfj?7cZ7+%MgP61t2 z%URnsw^Q-5HC39obhM(4q0+ZqNddojTZVbiw3&=AJ#I?Xebx7<+N|ZdZO`+)H9|{8 z(1F_;IvEyAZM-V@@-TJW!Ci)GOA3!m*P{et@$?qo<;IS*Y-6b?Pt~Fu_ch$3_FTNx z(Ss=U+7a)mxXmXBHg|Hy%gmNAWlBRYL*M_y4r;C;#xPb=E>e{jD|AA5T^P#>3W<3D}fRbENKbf$hvt>19(a`$aYwV0h$?Yllv<{Vno=I)BO;`hrhqrKG{}4`Rom%8X_+S>M(*fBq)a@@iu{ejA4l6 z4>1wMGj{B=7>~*&L7FPYNsN+ih){+xPWlyu(?V8b2-6+NN9Z@|G<0{-)guywFohJY WVNBx*W@y($vJT8*o@5G=e*XXtyVfQE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodview/HTMLPeriodViewPage.class b/eclipse-build/org/rapla/plugin/periodview/HTMLPeriodViewPage.class new file mode 100644 index 0000000000000000000000000000000000000000..9692c5d5109cca874e26c4975736635ea4f85971 GIT binary patch literal 3904 zcmb7H`+F4C8GcVPyOV4N0uqReC?HyrY-9y*B`YWdBB7fIB&H=^+R5%A8JXSL&dfrv z7klxpt+qxhR(fx-t!=fn!Qk`Q{-k}{f1>|LOW!jy%bq2Hhw||3oXdB8zsvdZ&;MTh z1i&s_G|?uo!}DkJzFl+ee9f)TI@Nql`i@sV<;c_dLz830Bhhw>+ava@G+_t~E#t9g zg3z~1Vaax7wQT$OeaV56Fq|AJeu4D;PSpwb3heJIHsze~?TS3@`6u(olr6(vHI(yV zL8F+hJNbsBF|RD$LjRON=HPru)aLx$??$oTh9?S{?W+`@v25QV#aav$i1INfwftxj^ z@F>J{Va08UmSQfLxRHJ~vAiBPZ`+wc zFE%PjZxXmmkM8xbGn^UFRSUOZGhLdMVZ)z?;{Xe6ZE;CQA|WYsVJo(oxRrvM)~`Tl z;WpeZu$o$!7;e2R57=iI+qKm2q^aV*{g#i1Lw%xvd3)D>5i1A_zNimx)~ho0}%DNNVA3 z+#}FQ7#a$CS`bJiDiH3o@OkVeF+FJzuh*SOX#1y>{(^=3u}7ebq9>h-oM!R~Y-kbQ zIFB%Xz`}#rM+S;-TnO~)3L3}6sFSHOY~cWU1X2~%4!SUcLna;)xT)#19{H%2ER5o? zfJLh&Lfa1yuxyxYEoP}RVmN}Lg)v2)QCU(gt8;byu!SS)xLXO4DsD2mQ|Wum!UQJc zxW%0_Dd8=xakEQyS>`ngDxAWXOngybQ`7zv%jhf|$24iEdtBPS48mB*i05k#9nfKm z{Lzvv+Uvc6UBL+*8RW}e#pVkTOJr089<%T`o)GAuzN2;NpAlHmljx4F)?EeNS1@D3 zUda=U&O%9{m!4!f#dCh)3kw=MH`RIlU6 z<1U;;#e_=_nkrUy-9lBFrksvI&7cO~#8(;DW^+(NEd&T@2nkhk3bgn2A6AM^Svajk zqCQT21i!c+KKTtAbZ;ucu9%x={Mx8oZYzNu(4s%ylV$4%|>Q!H@b_4fAGZp62! z-K){$%^JU6C5=YPLX>)A?A8)!f^Ct33seCKtkG^Fps9jG0E;Zpii7fE^OJhGMbp1L z%PF1>GcK(-8(Uw_mBU7^Rg72ZKAM(9=ZJ+CMstDCY5lnDi3gs*le*r&IZ{}|G zbe*;EHhxS@onV*`HYX~+4E0KtDbCEA&fpw=YT_p=jcwPo*uu~7^SEQ_MqJtXicS!+ ze1C~woA^~rva1^lzrlG4zv!6NB2;mA7*)`!{qI9T%RRus`kCux6 zcl=bQDwFk42{!08Ed0?bQ?0^Worn<2On7y_Bu5-IVD`4wrJ9X*s6=Jij8?1CA9n2^ zkO6aoq365~7+i5$MH|dy*MSUIqr6uX=0I-n0=honvJI>Fo8cF1CTa9xHCJ0=GIV1N zcVxg?+(4mfwGKU`Hn1KWctWw_U)*)_?jIkc_xQjCWQzlf*fch{ge?N&xjPo|xg1Zp zzf)il_a>Vmwb?uHA@(ofApcY_;^h~(OvTG_F4N>ZI%Hb!3gtu#xAF zF5%0HF>9>Z`4P%Psq@&K?f4WMvK>o!Qi=DnY5pvnMRzuRnPz=*O-9nymA+ioSj2oT zn_9%zbMMoa_6V05+{kr~-VG6#0)5_tjo3@19^g2%kH7nI7{hpkEl7LH#I=moqv#?7WB zyd~I@*5wxQ&Junha296!c^Jmt!J8Y)MZB9ET*P}C#2aZeVAF{b6RJ#DC4oJ`;b|^{ zW+2v^K$9Za?-N4Khy1(r&jh8796k6Df2D=W(R*S12fIw1GqLcXxI|!$$Y-?|%K3#$ zq|(pYq8o$Raz0LI4Dzdzy)FHo`i)W{9i6z5O;&uH*wls#5!FXn;#ZAAz5Mdu{{S{_ BF1`Q& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodview/PeriodViewFactory.class b/eclipse-build/org/rapla/plugin/periodview/PeriodViewFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..cc3d3a647443257e89a663daad7e06f1cc866038 GIT binary patch literal 2036 zcmbtUYflqF6g|_{ZrPTHRqzQ2iqayi?^h9pTBH$>SW}~4%(xxu%67NeZUO(5CMre} zznb`?jCXdo-CBf@(4^a$={@J3duH$b{pZI|05`CxAi^+hJ5|l$b(3p#vspDPtu7qH zu521&OI!1nWm+zB-L;*M3StbSA!MEFydtz05}&tgb=wk_t02yBCJd@J4XuNNA-Ps~ zQGEX7ZMj%@#gJb9z&E*Oa;vJ9T*t7gIfmZ6Z8cnOxn*uPMFL5NxG#($X6Uxn!fk7f zErMu8IwM?s*02nBj$vYQIaILj@S51NosE`K%N5&hE>mVu3){M=y9T9GkY*U)7u60V z1$nz7R75eDLLd4W`j-t$tTt=!g!7WWGlf)V>)b4J$B_HrFy_8D8Vp*8v_qIqWhqph zluY_Mu=|una&$*5`5O#Dh%PY%sQ&<)5tWd3H?oFoaZ;!kcBa`G5j8bi( ze|t;wF#b!`LaG?Sm~?TRA%Ap{bfd>=QZU1Cm*7@LzaEB!s2Hw)S?mo%pYPey%avu{ zGV`cvIvr~WXVVmJomWM}e+k!U`BYfK;nY~1rHg{g}%xcI|wg&s1$DF5yRBJy4$j3crayp zOD@+pR(L(=>ppU2MOe*}?YPgx#{}{WtU$x1WH%jMEE;km428EBOw$=T_%KGLM(KMD z5uAa71g(2$LPwy|lN_L@LT5B+=xl&?G1?u+30lq3NrZmm*{L0z{7kC|hUlq!rz6BU zic_>7@}qE?GRRLHXK{{L7|vsu{`;4;M7S75C3i9Mdg|)%4laD6txp{%5HR7 zZ8D%GC@$iXmo!PSm%Re7U~*5YC1QvYpSp_-rP{$%cc!eD>4G2C&ZM?8sX-=cA84da z+A{5x21L_pH=X9urMx1d0Ug7&HuO44lm#l;wE7L#yWzJw;7S{Q8+U@tYXN*P`vrG@ zA(c(v|Bl>O+?9Jt7WM9@&nxEv-D{4#f7n4f7?3{pV%Y%k&bP&dbuDxYoA2NV>v}>g H5fuIcW_#{m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodview/PeriodViewPlugin.class b/eclipse-build/org/rapla/plugin/periodview/PeriodViewPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..d6f44de5964b5d656499af255b587a88953a654e GIT binary patch literal 1792 zcmbVMe^1+16g>|U9D)aJ2I%zJvA#B}JhD3+d^pEP{JW>~9XO2U~ zC)j7$K1I7pt-4A30Q*o?&$F|btw^nil=q&m-?{gm<9qKvFaG=+z{hBr7!z0x!mb_4 zo+s^|H|V;)-BY0(bdFs0$li{RyF6~k?@WvfoO>vbr0q$+YyY_SP&tu_34x{5&weNm z)uSLhuoKjV>N}y^i-J(#d~>T-Z#D1N@7~{NZq|Nk-4PINf$X~DxxO3S6fjEVU4ijN z&{2~Rc*}x`tiVjm_0`tka8HGIFonCVSf8Xs6LK(TV6O=wx%ez^;CtxaH)9*~-eH2YB z2wc}Z&*0I*B0dn9>#C?0k@(&qQnh|P2s|ZyfkNq33EJg$7E1#23|Wb*sL~y{m4@_` z-;tpf#l*6}+M7wgDIHeHaSkP1HBqLXspt()_WKrAP#|ZfxWyvNVohKoDcC94_{hXH zflFzyRLPOx7EAvVUXq>8$hMt)H5v|kfv@~XAUuWbtNc%~oKbv!PJu~&@1!gQ7G6^~ zB+lEc2Z0-Bt|7M9P9&X!+p_m>Q&HNaZEvec-tzYY7V+{aVw`M^eQ4Tlpjft=SGg6Y?vQR^v4AsvA=`n%1lL-u?mD?sZI8o9P8J21e z4Q%S(|CYU9YHMMQ19hwiMtXPH!veXTU=TWL)72wo?*9|7q7m#1y5K*B9`fSk#9z<0Pszr#SYJbq6HWBB1E${@p7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodview/SwingPeriodCalendar$1.class b/eclipse-build/org/rapla/plugin/periodview/SwingPeriodCalendar$1.class new file mode 100644 index 0000000000000000000000000000000000000000..292ba0dcaf74edeefb2f1a2638cb742ddedbf546 GIT binary patch literal 3032 zcmd5;+iw(A9R5zb?R0miyOpxo6`=@Kw&gMuq(T=2Yzu5{YoSHf_*bF;&*1dmr@`YU)=2O{LVSQ>-W2y z`T6f}e*kb8Z)s={=ylvV!!?U}(^h@yQ7Ns6O;X*6<@wTe#+q_S1D7b0y2D_&@68WIjD|!(23%4Nt*h3=cSkqGLV*w z*CpS|8-u1VH?1>Mb^fsmEZ>rzk#h`ZUSjO=Y?>YI{h>S)Ajxnac?@r81c^dq$=0xJv5Fs;5Vk$Z+{+ zOvfvM2yH5mF6ej~7X?24UsfjL5eR21<4#~}tygOOBOrUaR#Lxx7!5TAE1F9Qr8BLYC}$PR~A{`obj~V$f;Nj zIB>mM-K^hfo$$@< z!l+pcMy>`jmrHcRaMDny3f8NPy;K(#;Mjq=1(6NN&>Y%9I{Kq!5ezl}LgJ1;j7r}c+`GT!~XW)IJ zXKcPa4CGDElOA@lYZ^HKMO&M?IY~9}r=f+=Pi{q5;l0rHzLuUIi)o2ia7LC`t}mX5e~P`ya7!Y-iox&D zc_kTM#d*4Q2g75*zR!c3EkfB$(CVnNnV{9tMEo<*g9nQChkEuY3=>Vs=A@QrS;e@* zvN6DNk!S$NiDN%@;so~NBxm_4Ql~M5GZ^CleGLQ5$sn%rnZr5UzQNy@e{7#7i#$(Q}_d~2YLIVjD9t5Ym~Xf+%O|} zm9nZn)+m2D$lw|^Tn;k5Mm8RqyXzDJgO z5k_>I5lkVA$uAeS o28WNd;D-hE7diz0`ovCp{3azE;8LrqZJ%hZkWzPtijbdw0EFm2rvLx| literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodview/SwingPeriodCalendar.class b/eclipse-build/org/rapla/plugin/periodview/SwingPeriodCalendar.class new file mode 100644 index 0000000000000000000000000000000000000000..5241a61860681810e36ee249af67940ed42339de GIT binary patch literal 4865 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 C(cGQ@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/AppointmentSelection.class b/eclipse-build/org/rapla/plugin/periodwizard/AppointmentSelection.class new file mode 100644 index 0000000000000000000000000000000000000000..524b3d51b2f69a09c0cc1fbd40d7cfd04192e3cb GIT binary patch literal 4616 zcmbtX`*Rc575=U*Teh@-<6s9nsUaAQAHXI~N>fa6jWNMQHq-`FNJD!qUE2$?R@s#- zLlcs;P10BTe$sc+mcHA}6fr3?o&MZ^qW?grzjvn7_Pcl2+C>=R5E$vM?w-eY&iT%{ z*MI--U;YYU7=KKnL15VR7Hv-!^U^Nn%ZpCIE-KG)a~0=`^m6uCvFJL5(y}U)W>sEg zOO9JeA|Wsq=`EHWn=;BP$h@s`PRaI^ue=qhh3&CryglZ5^0M9@5!hNMc}f;kp4&!z)%Gh+VbMNeb}8K)gdngp6QN`TPRUWe zopYBZ!#rieq;xulR$$LPRA!>Ew3kCp!6_XU*xet~S@7hts<_@IdqyX9++|``OCtkw z0;!4BtSaiH_(?oKbP>2Zt(u@fV%*KC6dJMB!X|7^qEq0(b&`}q2exUEE`i4Wfw@)) zJZzx}%}IPfpk1rno~RTa!8R?n!$J}*N$h0)<6=kL)r`FCmP;u-ie1|FZh>w6L5XCg zWb5FVO684A4$NtDdo1*0K%muEr9hP+VhX|Dlq|?aDrp^oAq#so=vJA_O{>a`TOlzr zv^rg0o>$&!IiFX=pK-G?KPNp${|+}3r6tD~crup$jdGavYw(wEXGmQU)=DR^xu7aB z`U>=hF&Um7l_fP2#zF>D#OXU%STeG3Qg5HMa0(ye??t6MynixG zKpeg%&#Z;hng}URt;oESV_Nn0oQ1P`JL#z+$wm`Reo1;<+hU0{Nv980AlwE=rz!S! zEs;!bQ!yAF6Zb)yJCa3vn`TQgdud7*Lr!*hYS~>;WBGh6v%XH=yoIa|q$QhI(xZT8 zzp}7^MN*8(F$2T!oZ0JTm7{XjQ8N%CX&hWi;-bLzcM-La2ie|AFKZ5JG%_R(Eoz*u z?)0L-WPGe`luz+S2yNrS2g_m+!nnI!bPF8F0^K2*Yon?5ZbTP<#X<$EtSg6u zz+h~YL~$VKxbI0=nx8zmE-pl`JLnlX5vd0UdAhI zrofxPL+eLj2F7Q#Fd=W|0F9kCCiJMp^+#Dul0#LG^w%w;|;c&%x0DE?|Mw&Y#j84+5GN37&&=d;Mw=@L}q19 z*;8)LS#YxE2F2%cUXjrPKeF&+{DkKtnhgN52)=7sB0`l?e0`0vGNJ^m|~ez^^U*M$@OBVdG0Y zadiizX5F%vRmU8CHR+1cvUW$_uP;)Zc9R8OkH+)T_Z4p{Z81?ZYp{b=ZRB-4!4L0h z{D!`anUy_gR(3Mi&6MN?5DnPEUkUzdLpz_|qFw{n@xh^+cyRC*I?mn1LpRXP$4B_s za|7E4|BUUo@aQ?cCT^m)ioU@r2J1g>(@X>Q@q5^~JV4Wr(aqy{nD>}HcnU*Y_w)E4 z#t07J5TAH6;r}D-?)}v344}ZKp8hvZ-C;r%`rdE{^nWw-CQ4l(uI?&6IDH*G``*Ea z1^$N7gNd$06=TiSX+oIjiW?6fgT*gZaj@X?%6m&oX_Am?=dGag*i;)IX>yg4x8d!s6}=GAICYy zMf5n&rv_S`!?XAVeRVQt&v8FNOP%41L+ z4bdjP;x(M#8qpGkG^hG+Vf37)N$wpi3EV^>qmw#R#q(8^&uYAUzI-+!PCGThgtXIL z4;}8Ivxpe|A)NLwEt(iF;Kk7E>-4F;4o5z&hAuv1d{uFxOs9(E6y+cYG$ zVjkOh=jufcgHWX6LJZ4rt(3ziA;Ki25u%rHcvT5O*<5v%n>46D@gZoCX0z!SdsZM2 z+7qnjtK89fJRC;UJUDa%uSHo(nK+k8em91wxrV4&pWd_~@OgY;JzHO_xAi=2d3Uj; z=Lm1*`V;M1& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/PeriodReservationWizard.class b/eclipse-build/org/rapla/plugin/periodwizard/PeriodReservationWizard.class new file mode 100644 index 0000000000000000000000000000000000000000..18a090d055fa6a0006ee3a01c80b8319f8a827ec GIT binary patch literal 1488 zcmah}ZBtS~6n>USkWh=1vNT^(0#vS=W{J~>2pea}98jA+*$OLeUGAmJBHFL2KHyBv z^aJ`)O=s^lL6Mp}vv<$g^Y%RF?Ed=w{U?A$tOej>Shk(A;qa=-jjCBMOUtMVN7|)^ z{LGz_vE>SRQ4`J)SJJlLy7~b83}Y?Va$OpE9pu%{M#ipGZA(}xfSyjH%aIs*)}$rX zbB5`7t`+gX;T6%aosVAJjBP1#tkQ{HhEVpnD5|=cS^zf~CcAo_8#4Gac1eVA4gFyR z5bVWGL;|?QFyHd-PJoAc%Oxm`+Zbf%%V!I3cJi6*-ugx^%Mi(Z;78mrxm7j_%8^z% z9Rfo%j61kX$2Flchte#)s9PmdY!W(#p?Ig0MmUg@me{OU_Jy;}_f4{lgpMAj8GN-0(bwkQg>{DOHN_pp@cyh~-cZJQqtk5>^dw}sDXbEA zUK8bJ`yma5R8rK8(uu_@vZzj~!g%TJw`ou94PcUC_TN46x=|3H>cT2gQyHehm`037 zqf9J&qe9AfqOGtl&_b9%zg`kyjA5LR+6_xM41->4E&`?FiU!3n+7`MKGtHaEMo8Ms z{)?U=SUUs7kZSY1s;d`Cpk@Y@?adw4PRKi^F^FY`nA5s|siGse5_=7)4);ppfY(h$ zg1+~f)0Hru;u%9Par!rK?5ct7Oht_-*mb8U)}6e_wLul$LK8XkzFqDSQ~FwVxb;2NYtA%*Sz$q^ReB`xqgKTro-( zj6P~Jon1^&rDVE*=nqW1OE&TF6pvQ@!~U7sxhCS5Gfh#nX$&FeW?J$*&of1l#0=%p zHOykpts{yQ463q^^3G$yg|>*tWToLPkd3wvBqK{rJo!Rf4_J?@PPl2pp2=AnhE>-p F{Rgk0jxhiL literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/PeriodWizardPlugin.class b/eclipse-build/org/rapla/plugin/periodwizard/PeriodWizardPlugin.class new file mode 100644 index 0000000000000000000000000000000000000000..af1e88dbb83ed2fbd59c607fb3208aad2d756fdc GIT binary patch literal 2298 zcmbVNeN!7n9DbGn7s6rMSU_rNsRbmw3oT9^n6P{Mdw<(!|NiHXzW~f(PeBL6tnJh_hc`^FHOyAs zu(XD747>K+_=P()tt<~u z*IE)y-7y-j?J)GM*_L6}gcCyo*A%?Z z5Dz7CCT})X^kaY_Ru^uW>-)Se82TrYZQ%vvbPONhx`H7JEVL0YReXpW3<_B(Q4tuf zoih<+7{g7BD7ba5mOf9#ZG1!q4!PM9tGf*26Kx^*^-i}(b!IY-Q59ntXXsuGs?y)C z8we&hqnIGaDZj64qG`7rT{L5eV^YNwrpW+rG=x=Sn7PP6TRgtapte+)I8rJ!uL4om z_L)6kxT``z)T{k<@A!#|9z?yb`zm7SrDhZjOO#p%RpG4js!4TA6m6ZGo7^$Hvn0k4 z!KYq|ebi}p&uB8t6~n3fe-oUJg2v@$&Jo-dBb2>x4!LXCR&&I#M*N8 zFV$KvmawdV?#2Tzxl347@fcsy^wJP!T)I=$mMb#NtZkcuTMPpiG<7?<-Gi@CRPZ%J zGAycYA2e)BSZ-7M>ATP@}ltWrbXp=um7%r^Z39b+ir z8x?D)(8bqfU;O$otXvRj^3rwg#Ri@zAe_HPRPQF4e=7p+4cLebMWmY{d`4}TVNeo~? zazWM!)dC+H?TqMMlP~cwRPUBVUq$r=kj5ejG7oWS^#Yus-BXSvKKq?E-?OiJLwfU7 zBWJ3Q@I|2dtE>aCFrCO8Vg5C85&VYE7gI+lBubRg5oYQ43gy>W@4{4KJMo>Q-kX*L zFVu+4bbu@YBNWhWdJ*nm9HT@Zlm16!1s4MUuwWA6h4#dCNYqPK)IG7w2%a{CV{pP+_Vs&r45kcG$^8yHL=I`lJ$-?I~zAe zRDFg%L4WiCdXb7$iT(=~k#G7@%?t8PsXbL`d0z`%$v?Iqk7TGKU6$c63@|wLRBVfUWIR8=;)N!C zc`FJkzGUE(RbXUbLI#sho~&45Uj()M!_B9%Y;K@Lq3nBsXO(T_oM-Vx2aYf}BDGf94OA&U zY^ka+cn98O@C|>Uc#MYJ!Y*I+r3fXrUbv~t_WM@dE7$psig-%|h8x8rl&dPukXdTO{>6}V+Bg^{I} zXX>Sjtcu7t_zxw=fs+i5J(hCI-{Eo_!{cN$iOzx345l)c5-nF$Dp{%=IK$x3%}Rye z?C|HnSqA5NDR*Q_NOa`DIm}H)li#=KI}DEZP;ZJr`tuH4U~HThLZeksTUxd!#K5(z zMZVDSSr!ZVIf zl|;EuiN>5Y;tcijcQvECs#Q73I~mB9;~a6AICo&?HKZ*#aFO+W-zF^%Xe&@HOnE0M zVK;4eJuEvc3-VkMJ6u)m*A`X{7XcO{;>K&p^hMTIPgaUjXe@dv*{YVikJIh^zR+9N z1D1jvAe>r5>QDvLT$*NbjT>$sB^_*W7E0_=*F0#>U!3oTd#cArsS{8crIVMj)M8 z^M;~1yMK{jb@Q!lPqtjXY`LH6nr~CYNjzC?A~N1>DQIaTjai7(ghjUPp-XPNHJwCu zDy`Ke7B1C5S>CzS1Rxc@?m~~*8!5ZD8ye_tJW+~pF z=^_lL+u3jxU_bS&{g_I7*u5olmX82~J2@DHA-o4yyg)vP8k># z|0m#3!LBc(&<~&H;1h6gg`xYKL4M_b?Ni9*SWTMc_QrH{dZzczG!ja)ibFCmNau9C zRoNBnQF7*Z{kk!;PEkF|!9!SOFoa!iRZi@$!C~2|Z-K*ikcS`O8vF{^;SZGf3vR&QP=J3>?-h)~$JQE=jwKcojT#Jp0S0GZ zz`c&UAq&PTxmW<*t)L)-`|tptm?d!WlavR3hTA{lXB=v*J7(R*x&v)ptfEAB5vBW3 fXK41~3;4X-bIxiXjU^Iol!YR!S)X56Z|na7@+iI1 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/WizardResources.xml b/eclipse-build/org/rapla/plugin/periodwizard/WizardResources.xml new file mode 100644 index 0000000..e7c9b5d --- /dev/null +++ b/eclipse-build/org/rapla/plugin/periodwizard/WizardResources.xml @@ -0,0 +1,267 @@ + + + + + + Weekly event in a period + Wöchentliche Veranstaltung in einem Zeitraum + Évènement hebdomadaire pendant toute une période + Evento semanal durante todo un periodo + Activiteit (Periode wekelijks) + + + + Wizard for regular events + Assistent zum Anlegen einer regelmäßigen Veranstaltung + Assistant de création d'évènement hebdomadaire + Asistente de creación de eventos semanales + Assistent: Activiteit (Periode) + + + + No periods found. Please enter the periods which you want to use for planning first. You'll need to login as admin for this. + + + Keine Zeiträume gefunden. Bitte geben Sie zuerst die Zeiträume ein, für die Sie planen möchten. Sie müssen sich hierfür als admin einloggen. + + Pas de période. Commencez par définir des périodes dans l'année. Vous avez besoin de vous connecter comme 'admin' pour le faire + No existen periodos. Comience por definir los periodos del año que se usarán en las planificaciones. Para ello, necesitará conectarse como usuario admin. + Geen periode gevonden. Eerst een periode toevoegen. Contacteer de systeem beheerder. + + + + You have to mark at least one resource or person + to search for a free appointment! + + + Sie müssen mindestens eine Ressource oder Person + für die Sie den freien Termin suchen markieren! + + Vous devez au moins sélectionner une resource ou personne pour laquelle (ou lesquelles) vous voulez rechercher un crénau possible + ¡Debe seleccionar al menos un recurso o persona para el cual (o los cuales) desea buscar una cita disponible! + Tenminste één middel of persoon selecteren! + + + + Create a regular event:
+
+ 1. Select a period.
+
+ 2. Choose a event-type.
+
+ 3. Enter the event information.
+
+ 4. Proceed to the appointments-menu.
+
+ + Anlegen einer regelmäßigen Veranstaltung:
+
+ 1. Zeitraum in dem die Reservierung stattfindet auswählen.
+
+ 2. Veranstaltungstyp auswählen.
+
+ 3. Eingabe der Veranstaltungsdaten.
+
+ 4. Weiter zur Termineingabe.
+
+ + Création d'évènement hebdomadaire
+
+ 1. Choisissez la période de l'année.
+
+ 2. Choisissez le type de l'évènement.
+
+ 3. Entrez les informations concernant l'évènement.
+
+ 4. Passez à la fenêtre de définition des crénaux.
+
+ + Creación de eventos semanales:
+
+ 1. Seleccione el periodo del año.
+
+ 2. Escoja el tipo de evento.
+
+ 3. Introduzca la información del evento.
+
+ 4. Pase a la ventana de creación de citas.
+
+ + Plannen van een activiteit:
+
+ 1. Kies een periode.
+
+ 2. Kies een type activiteit.
+
+ 3. Geef de activiteit een label.
+
+ 4. Volgende.
+
+
+ + + Enter known appointments:
+ Fill in the day of the week and the time of the appointments.
+
+ Search for free appointments:
+ Mark the resource or persons for which you are searching a free appointment in + the left table and press "Search free appointment".
+
+ Selecting resources and persons:
+ Mark the persons and resources you want in the left table. + Double-click to add them to the right table and to assign them + to all entered appointments. If you want to assign a + resource or person to a particular appointment, click in the + right column next to the corresponding entry in the right table. +
+ + Eingabe von bekannten Terminen:
+ Geben Sie den Wochentag und die Uhrzeit der Termine ein.
+
+ Suche nach freien Terminen:
+ Markieren Sie die Ressourcen oder Personen für die Sie einen freien Termin suchen + in der linken Tabelle und drücken Sie auf "Freien Termin suchen".
+
+ Auswählen von Ressourcen und Personen:
+ Markieren Sie die gewünschten Personen und Ressourcen in der linken Tabelle. + Mit einen Doppelklick werden die Einträge in die rechte Tabelle übernommen und + allen eingegebenen Termine zugewiesen. Wenn Sie eine + Ressource oder Person nur einem bestimmten Termin zuweisen wollen, klicken Sie + in die rechte Spalte neben dem entsprechenden Eintrag in der rechten Tabelle. +
+ + Indiquer les crénaux que vous connaissez :
+ Indiquez le jour de la semaine et l'heure de début et de fin du crénau.
+
+ Chercher des crénaux libres :
+ Sélectionnez dans la table de gauche + les ressources et personnes pour lesquelles vous + voulez rechercher un crénau libre. + Puis cliquez sur "Chercher un crénau libre".
+
+ Selectionner les ressources et personnes :
+ Sélectionnez dans la table de gauche + les ressources et personnes puis cliquez sur "Insérer" + Elle seront assignées pour tous les crénaux. + Pour assigner une ressource ou personne à des crénaux + particuliers, cliquez sur le bouton à coté de la ressource + ou personne dans la table de droite. +
+ + Introduzca las citas que conoce:
+ Indique el día de la semana y la hora de inicio y de fin de la cita.
+
+ Búsqueda de citas disponibles:
+ Seleccione en la tabla de la izquierda + los recursos y las personas para los cuales + desee buscar una cita disponible + y pulse sobre "Buscar una cita disponible".
+
+ Seleccione los recursos y las personas:
+ Seleccione en la tabla de la izquierda + los recursos y las personas y pulse el botón "Añadir". + Se añadirán para todas las citas. + Para asignar un recurso o persona a una cita + particular, pulse sobre el botón que aparece a continuación + del recurso o persona en la tabla de la derecha. +
+ + 1. Plan een activiteit:
+ Geef de dag van de week en tijd.
+ of
+ zoek een vrije plaats; selecteer de middelen in de linkerlijst en Zoek.
+
2. Selecteer de middelen:
+ Selecteer de middelen in de linkerlijst en Voeg toe.

+ Als je een middel enkel aan één activiteit + wil toewijzen selecteer deze in de rechterlijst naast de naam.
+
3. Sla op. +
+
+ + + Search for appointments:
+ Select with your mouse a free appointment in the wee kview. + Click "Add Appointment" to create the appointment + and return to the previous menu. +
+
+ There you can assign the resource or person to the appointment. +
+ + Terminsuche:
+ Wählen Sie mit der Maus ein freies Zeitfenster in der Wochenansicht aus. + Drücken Sie "Termin hinzufügen", um den Termin anzulegen und zum + vorherigen Menü zurückzukehren.
+
+ Sie können dort die gewünschte Ressource oder Person dem Termin zuweisen. +
+ + Chercher des crénaux :
+ Sélectionnez avec la souris un crénau libre + dans la semaine. + Cliquez sur "Ajouter crénaux" pour + ajouter le crénaux et revenir sur la fenêtre précédente. +
+ Ainsi vous pouvez assigner la ressource ou la personne + aux crénaux en cliquant sur 'insérer' +
+ + Búsqueda de citas :
+ Seleccione con el ratón una cita disponible durante la semana. + Pulse "Añadir cita" para añadir la cita + y volver a la ventana previa. +
+
+ Allí podrá asignar recursos o personas a la cita. +
+ + Zoek:

+ Selecteer met de muis de tijd in het weekoverzicht.;
+
+ Toevoegen om te bevestigen. +
+
+ + Search for a free appointment + Freien Termin suchen + Chercher un crénau libre + Buscar una cita disponible + Zoek + + + Appointment Menu + Termineingabe + Création des crénaux + Creación de citas + Volgende + + + + Add Appointment + Termin hinzufügen + Ajouter un crénau + Añadir cita + Toevoegen + + + Enter appointments: + Eingabe der Termine: + Ajouter des crénaux : + Introducción de citas : + Toevoegen activiteiten: + + + Select resources and persons: + Auswählen von Ressourcen und Personen: + Sélection des ressources et personnes : + Selección de recursos y personas : + Toewijzingen: + + + {0}: {1} + {0}: {1} + {0}: {1} + {0}: {1} + {0}: {1} + +
diff --git a/eclipse-build/org/rapla/plugin/periodwizard/WizardResources_de.class b/eclipse-build/org/rapla/plugin/periodwizard/WizardResources_de.class new file mode 100644 index 0000000000000000000000000000000000000000..bbb5da5c0799bdc96600288dff59e83c6b3174f2 GIT binary patch literal 3488 zcmb7G+inwA6x}D+$qmwQzm-F1Aql}Ifffj9+JpdYNhrjSh*HU#*vIye@fqvPOsobW z^&6_b_az_Div&^?`r?`e}DPQuS7ISE8Wy4 z=z?d8X=7JhJ6&Y3xRGL5Hz@3k41Y0kwxza8iF-tvUa87IXWn_ZHxB7{0&DJ?Nuf7%E5wbX_;}9 z+z6HN1DVHd(|O2`%R+6-L@)Rp7}gLe*Pi7{;3gFbmup+T57c*ZC0TNmi9~GImv$bm zN~m$YVv&zqbVSe@qkLu7?ZEMLDrb}(sBF~9E;u;bfkrB1(dlH7M&I1o}Bgr9IpxF9GvD1kuQpj zw!a&!*PU7Sv|Lqdw&n(}ca+}E^sPpFpl9TY7uBI%l<1*|+Xp4H0q>f-lJnV;&rHbW zt8H{h!6@eqRu^rvhJ4`!H(Zj#cyeip@nYm%^s2{gxT7_>k^nU;mp)t7aXlD`S+$0z z` zj!fEMChE!}S`yO{4@sA!1mUTJe!?7EQ99;~jcpr4tn+w>5tjDjbI5Ssq7-s!SM)<7;G@NACGIbjU@E z(n6eTbVwX*R5!abw-S$wc;qK#zlbryLB@6GMPUU}|H4M`I@?=bNi; zI5yclhKI*xi1F3nUfP(@@x0{H+Q7?o&y?_q=V`g9bZv_V1efwgxTZ>Io>YBKMl+LH zU8_CQoX)&w;tyR@-MuD*%y!~kJz>n}grKn&bKY0B$(6F`K(+H*a}i(gR&8a`2Z9c_ z&=fdLm_qp08ht6|YqLC0F?t}3;*?x?CoyuduU@N`N(nRsf^N7#pa z|_f&z*<=QU~BG4{AhS`NK(eU6@zJtXKxKXp=$UUQqAD_Rbg7|FC^%Pv&6aK666XaQ;hT{$TTA}j0_~mCydNxGC$M&kD#E9ZsIyegSZZWu01qLdufV> z=r--6uV_DMIzZo$q;Dxrn{=6;(G~iQuF@Yk^(S4UzaaOLdg)fAjY&tL#Y96w;E$+t z>^Xh5ZLTW1Ab#yW7)pQTrAtskVPRSvQs$S h2AQt0bIFnO$&N*|=?|jVp{rQt$iD;B= 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$Handler.class b/eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$Handler.class new file mode 100644 index 0000000000000000000000000000000000000000..f21ac87c27385c32b99375481699b20ca02ef68f GIT binary patch literal 3979 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationInfo.class b/eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..7bab5f4a695647e61a81e4273aeef2dfd03e308b GIT binary patch literal 5641 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 XSBZIIKA%yp8rVvY;hNtS&A`6^&xRnj literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationWeekview.class b/eclipse-build/org/rapla/plugin/periodwizard/WizardSequence$ReservationWeekview.class new file mode 100644 index 0000000000000000000000000000000000000000..0b2f1ad72630d3e30bccb901e37df4bb477e3e6b GIT binary patch literal 7280 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/ReservationTableModel.class b/eclipse-build/org/rapla/plugin/tableview/ReservationTableModel.class new file mode 100644 index 0000000000000000000000000000000000000000..1129aad4669a0e822d4015482f28f03fb1b199fe GIT binary patch literal 2910 zcmb7GTXWM!7(Ht{kz*?tl3+q^+!F9D7(z+`6K)Q)h9tBE(gJO%Vkg9~oev^B&8jyy8fjVFcX zhUKjJ3kq}Qs?oB&_C$d`F1HMO*=#fkai=^dAg&8^mt3dm8IHGX*e$bzWaLi>=#6&3 zra=1se4CuNwar4A)2^tdggkFKmUltmQu=+&|ACZQCV>)_OCX9t9evm<5KU*6 zHS80Z+*O8M5ZJFHfuwAW=+MzETVpzU(5vA9wN`oC2J5lpHCUE74l%G})XXG~U{b?` zK&Bn-KLpTm6vqU*)=bZb6F3^^5QZXjSl@>CplWz#9646jHk#gp%0tpK zs|hln(s3LGfx)Kfm0Y`3bIMg&;#G@g5lFH2?SyWwJTfa@Q7YLxZ#m{-tF~e`l+$Fz zWto=^I*k?$24mhsi!jrnI_=KgEWB1xe7JldOv0Ce?|Vr(J?b@lCW$A*mI?hQK z46a%YpYfdG86{sGI?r5}#$-*YekjsqPavBvXF^Hsyepy&cY|B5EYM>$OQvmKty-Q` zNuVQLE@$pBmY=LZQpR#ON^Z+x82Xc|x|cko@_50h2dZ|jT27T?4Uc>YayGq7DuGSZ zu9QoQNu*HLaUD0PCnI03*Imo;YJT3?bY`cmADT>{1>DrIxZ_R=Ezt1^J{5>7Uo#Q< zC;c9~1eS0|!)@x;K20QV9n1KPqOF*#Zi500gpUT5nAEgG)lcBqF4f^SHR^TNdq*3E zlAsBbHJ(njR!s(_Q9>t_qQRF*Y5n2QmQu!6pS9z1Jr0pwlpmuQ zhS7me_B8e)i1W_Vmv_jsS3P<1@)_rxKJ4MWpS>TsD#quP>`M$}qpy&9j-hPsIfk?O z=NRpLh4H)5eE-2M9FAb=ZYL@sFvgz;p|S#-~(nSa2g*5e6R6MgtHQo;}A)oX~*qR zN{lh1adhE;ij(qZZ^ucXNLA=I;?D+{#Q;;w{(_;A=}p4>iAXtt!yzDT8%V_BGG66!Z@lh4*GAmF(LtmjCX}-5w0&`E zKi@3X&auK%DunJY2|`@ua_ZMjIq2U2_jksT|HGVN`92ny7Yoq~KVdRAHhnIZe}g^y zV_O_V{snG*k7UqW_%15Oa<6~*`_H`8$0u-D+3X|-a}U{ma$##u#b z#*c^3ahGc~j@`q3vgtwrU*JpfNiv16s6dqKhw%Vk(;kw13bA+S(O_s;5^s^xu<#c& zsnZH7K|W8pURrq8FW=(mQ+D|CjU}}OMtL3Mm7n6I;Vo1n*qr(m4>zZ_@JO)TPHLFG z0}G>(&IC(aU}>o4ffwHq zu#0aI>QQN5AYIihH3L$zkj1RA&Rei>CW{mo(P4oNzH!w&ftURbK_MUDv%xZ5gvtswHQ> zWc?d)$Y-cz@c}-};EKS)|K79k5k3|;O{@pn3y6|0jzSrjWRHOaKCy5W*95Ym9&G;O zJ6{~4j$KR63`$tape#^2@grKej%9%hp`v2?GNxLR+SU0KzQFqHDz|ssor=lAwy=sd ziXqZrtU`g6i8!wAbalYWMMG&1ee49bk@%DL4cyG&Q-SMaCU3rH;TAq)p*kjcCupfd zimK?8oGiXTC4(;oR>$#PX|H4XSh$T1HWZ&};(U|ORc7P~S|sGfo{H?2?nt)ngg5z= zaM!|D*yMvt*HuwexFK-wZCYd!tKIW#CwQ#4r5o$;hsrFf*vf!izA)zZA14dj_?E>P zYg^#zNJWWu?;ku>?y+)aXDflrW5vDF1EfWDj!G^Zf!S~@4uNYYtP>|xBbM&7y6lcR zINQ*@&{f->&kW}OJpflsZ*dlE1+K3n_FY}YPjt%+iiSXSvbc{!*--->KC}1CXyq7; z+1Qndv`n?C(pN!ChKcwq$xO1GAW&h|mrkqh{taJG;W=-n zU=S~o0N57n3e2E_Jat}Vq6WP@L>QqH3-{msX-?q* TzUMbh#qXg>%ZxBXhQGf7;jrKu literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/SwingTableView$2.class b/eclipse-build/org/rapla/plugin/tableview/SwingTableView$2.class new file mode 100644 index 0000000000000000000000000000000000000000..a3a701115b9b130bcaab20fe7ed7a851f89c1543 GIT binary patch literal 1198 zcmb7EU2hUW6g>mjwR9`k`q}z{6%{CDDo-XDU)Gw~KuxUSp%3b?jIix?mh286@eldj zL~G)MKfoVlyt5#niCRgP-FtV=y=Trnv){gd`3j(lhZYhHn?cy&q3HR7_xygxQ(TLd zF9)6+^8KNwIlpEdx4TlN8A;@RBaLR zr$S4oOBh-AA}y5+85VTci}Kql=(hBXV<8H#5X%*MLe-$K7A*^K(=TYlULnOm@U0 zGj+Z@eOEK6J2p0Om!ylj!Ek5f%AWQD#ZWH9sIecW`Pw)shMLdH6q^?AF>K7ZzYE2& z90uVLe`yRjh0{FbKr`?;h0h`pLqd)i@^i31wV-({?`z>6HAHVR*7SbR4_*1p^CiRT zuimd1X~-Zu%JqYY^l3=l4cf*%oWYr&FGKxsMBwK-0mzQ>)($!L%z{n~+XpZ#3X zxo~_DMKVH;e43=|99TAM>`G@gLDwSElwG2yM--b(y0rNTcIh)NoWyG`nq2(GpbxM@ zu}v70UBxB3GhD`%NtO51B}uvU(nr{*xcULB4f9wY$2U%qJBh&-!Sl4#lwU!L{$Eq( z4N-ZEHMHV3xpApU8!C$Xcn~+rpnxKgDiMypJG&P08CtwaVFG1r(LF^rt6-a+%nl7- G`uzaiX*)0g literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/SwingTableView$PopupTableHandler.class b/eclipse-build/org/rapla/plugin/tableview/SwingTableView$PopupTableHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..3a1b981c86279179c9c241935fa38882466b1356 GIT binary patch literal 4574 zcmb7HYj_-08Gg@ZlgVyoOPUhsHc+5VAW73~t;OmtC?zx`kfd!=5<jHyEE(T zBx&mfR1{PclhUX_Bbgs1c3$}wWtfD1`!<^)(F(JOMy!UEZZEK$xN88ibbGl zz)2eEQNy)lsD;I#bX?%Z3pc+!KMW+4JLt@*#0hL{A6O|@yJgxE9itj96IfG{*y~uf z7sh&Q&=3`fmR?k(S#8zPf-4yKlp377z&s#C1V-NPSU?jWL3xR7_l3uPr8W`3wA`NH^d_Nfx!W|gX zzq)aOkbzdcj=V_XW7BqfAD9x^mAq$W5`JvU*ELKDY+l)zDzT!5dRWXg+p%e<3^$BP z+#W(&LYd*HsaDWakQ!viPit@lx~c`(Kuy;+(y^qI$vAebxM7##eHb=AA$iF$HCmb6 zRqIj?x{4~SHdr*EJW|BA;pv#ctUx4rkPXc&RpYwKYE&IlmhfR5)o_I4vaFc>#qumO z7fU%A!?I%)TP(U2!)h}1Rq2nR7azt|S5gm`>F&40#vE}ww zjZkseeN)F1c#{4|;oXOmW>!`gDO1Rls{7J+T^kSWbi4xh-RljJF@kl5@8E-?mM+Cv6Z(&gQi~da|DtK8mlClK!AThxO2-Z{F#S-f=>Zl!rwZ|01u*(zq+~)V=bEa1W5;9Ltr1}bQ-u~ z5zXUU^0=JWmGiiIu=6Csd2AjM@!-}|=wR}WLEl<)3f%$3gNxWcE+rPQBO3HY-`_Ql z8{)Om+O2tfXc0Z*^Vl7)TSV`8Q{Oypi)&F$3O4oSF__0bdH*u@FW|1zxFcR4t&eKa zT5$>=4Pq=>7uE8Z7+b{Tc+Dx&wO-VT5S}6$ zGPje6^7kR;_F)#_qx^Py3~hKE-5d{ncoIXD9K&}ofv1thG0w;D;sHE^NAN6HzK<91 z9E;>QS@{F}9Y4gs@I3yFpWwfEfmU7=4R}ek;AMr~y@*JBirDe)+tkd~Aav?FMzq(9 zAoV{(-&*h=e2+GQ^x_QdJV(BaQO|MOsiQZ?Y3q6N=WY(qAK}O3(bG5tiV@6 z5vFH1<0YIx1N~^^?w?ZMNygiTns?Bxp;<$xhF9LjKM>R)G_3d6y>DqjeUKlPA zG(uV}Jc0U7{(nt!)X(D@#qK;kB6YE#;=N2UI#P_6(fjdA4{E@m1>U$g{fpH98uh<^ zq56MT(*IAIlqJ{avuyJq{XZRi7V)lPO>FD(YvMG{4oRT}yvcg`b%41(2bJ3RiFJL6 zN*n1MaGFq@!3LaVlHcUpx3H5i+{z{=%Xf$GLn$SFg_P9eCIx(eyEfqu_#?gDSp``O j0`F2?2`1upR>AZ?DhuFGR35;e@fZG=lY*lPe+B*z)vx(q literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/SwingTableView.class b/eclipse-build/org/rapla/plugin/tableview/SwingTableView.class new file mode 100644 index 0000000000000000000000000000000000000000..557a4aa469e9ee331e72a75b6b32f2b0df4106ac GIT binary patch literal 7758 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/TableViewFactory.class b/eclipse-build/org/rapla/plugin/tableview/TableViewFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..3f2ce6a0b5ae4a2478ddc9c6541e93ab74289914 GIT binary patch literal 2010 zcmbtUYi|=r6g}5=yw1i6;1V8%BtUuC&SQZ>c^E1kX(&=Gc|AM6=iGD7JU)GX_W{6FtQtrWX8oXL1)}2$tK;@s zj%S79sVg@fxn*srQG-XT!Vdl5g@FuVrVn@~Y|)g~V}-8z?T+tBFEo%Poa`61dX6=~ zK`=L#mTN12HP%-CAQWo2MHup!)@%wdc$qE!(xj_rH9 zux+cm#RzMS=NOi~<9JTENVrg}_4_{yL|bn8!Sh|6UMRQ2N~yt0R<>=~2_5ccpg=gc zFDfZy1y#Q(O{6iI#{>=$4%Hk_KJ2xh%0LIE)cLk>8zOL2fbnD|{M+dg<_DzxZ{Tdo zU~ft=s~bS>V~WMtffS*vt6Ws-1p7O}7+_Y*RTZxEnj%LN-AM$Nb0W2$O$1Qn@+rw=m}vWO6$SKdMyge zJ*b+&thzGTbY<8PE!mAW-yXSd|;WJ*=S3K z%Jo{4aI{$ZuY+iC$wNLqCJ0ya_!-wCSaebe7mIsQ`x2>B+VAw$*&Sv6n|b6hp2Kaz zob`=RoVLzWui`?-Ynix%MFV#Ur}`+hi{rvIU7yEw+~eDBU%`nURUTg`VVy}BQSzsnanR0(vM?~%IS3v9XSxRNlLtXh0)E~pz0XW3$!zavQDBn;$u zJj(ZQ3MN0v4*JC>A26kY}zSZ%1f_W48Rl<1i*zV6S63U4!qZO)ME4FI~tAu9p z<+mkPj?z?W5yom>M^1t;WnvPU4APi3kwt-!E|yyA&8!In6TG5syK-aD+m^oekx;06 zZQ-kj(0^fGK)ePqFmVq}3#n}DP zBqlE5G9!z2TlRGs)?dNUQX-ihU-aam=kHlts>!qkk|hz|Ht`PT3FZs=cSXQ$Qh1TV zAg~=v#j06cL(#x>!lgKYQ-MvCP$uMdJijLbwYl!OUBY}Zv?azo#V0~mAB0dN;mZG} zL740-<3r{7;~a!D`n4+kDOFj*dj{SmEXGNls7m5c=!RM6{&P&cj}HiEcWk$#3m@_? zCrdQ4lTQkr;v&>VKVW=&$CjNemQgkEG2v>gZUm-@6;;dW2&VR!XM$|nJuYa@VccXO z8wWb>DRcv zeaS;Dm*`&pWZ*KN`ZWK}AjMxGo{~U5ujZ(J0?$#C-=5{COr}b&1iA9>$d?zM zVCGj2rEre_3mD`7M-26l0lq~J-{Cw*&THr?T)=Dm!~mKm#jvmAVg$a&Yt-%w<=>Ed zhBxYre`US0aD=NVY~1*TUnNPtXPrN=svntHXp(ZcJtCQ4k_r|ycm_9cQ}0f}!XoF8 zQbR5xUg9e;`UDftJj1P+X;In~|(iBx|x<`4jXM4~}ah a4WN{#v8DAk(A3v&(BiB577?HPhrmBLk3aAL literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/TableViewPage.class b/eclipse-build/org/rapla/plugin/tableview/TableViewPage.class new file mode 100644 index 0000000000000000000000000000000000000000..e427107a15f0fb25c95dadba4b38bafc91edf629 GIT binary patch literal 5550 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tableview/images/table.png b/eclipse-build/org/rapla/plugin/tableview/images/table.png new file mode 100644 index 0000000000000000000000000000000000000000..fe33429ec7bf1dc30fcde54816f477ddd1568912 GIT binary patch literal 997 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tests/MailPluginTest.class b/eclipse-build/org/rapla/plugin/tests/MailPluginTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6b39d34547bfc4ed7b56f84f5218a5a5cbef43fd GIT binary patch literal 2438 zcmb7F`BxKH6#gCrCL|-+AXsfxu&7B8M{VoUxDue%24dMP(rrjyl993 zVd`4L^s9!YdEE6}ZBjSP8&WV!dj&CueWB_McUDa9iK9{7vT36-IzU|4+0uP_}_<{Av`X#puQez(LMo?%ve73Z53Jx>u4IKo`jQWOI z=1v!ea8$t&a`5DosW^r{3URtv7*8OBVFg)+-H)49aU3I*-4)&Rd9lK9G@6v+(rsSy za+&RUN?;H@ahzmens`60;(5G4$<-STZj~8EqINcuyUk83s+?f#jEb{3$IwlT&3Lw> zSNW98&mLm!aoluc5HG37i5qdx4m>1r5tkKEZ4HF%>`b$YE4V64)n4`~&s*Z&0dI?n zE&`fY(Sgn`jEhW6FdT^Zk}a^MAL4k0V$vL5w>>@*G>ouvU4?>p90jVinqB8k98>gK z_A3=vBe>04?p$>oeU@7@`;B9@m{Q`;H}G zl~k0mSMpl5eNXg6MTIUzF)^qV7?kOduvUZCX?ke}b%|r?X3!2|pv~HIG>(c^FpLtY zVOfj>lg42BzZ)qt9|tj`%=og5dfO$L z`6Tt_!7khpC2^N#P#9s!t~YFp#-pprD21nMB2p>^uHZf5JXD^vOUpumI~_Fh>C^sq z0w3aI1s`oDP!65hn#1+7icj#V7*!_c6k9BPJu{!cDn3{7h3JbUb&{|aM9lD&im&kv z!!F$=TD>XToAONxd&?l+?0GSW1z?7A5vu=BzG%Y6g#{55Lx03d7$)f?W^CUn@d;T> zy#jCeKXyX&J#{+GVL=A{sPhCbqIcvj$zrtMC$0W2y#Q8r4bNn=O&oZL!G-&H zZXM}0oJeU+oFeIqv@~&k0~gxxCx#wiG@?7!(tUZ0()a^h%l?XMsaI2zO%yjU(~g_j zb=-V_H$(JU8R-#1lqMt@WNAH#VVt57UZiynBdFj6>d<6#f(=63iY_LGYm1)|TE$s= z>g}It3CQV`qSKM9?T@Zf|8Aq>O3O&MK)!(`2I7T>aJyx?&d}62OZ1(K*zIoFWvK38 z_Z|f(5`F$5Y72tpHQX)?6E*de-Nd`(ZFB=Z!+or@I9{FHgZJ0*!SNK-uq>Nr7jxG~hR|!mB!Wjr0wcx14-?z9&VGW}j-{E@-nc)XX(2xHD6x>au literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/tests/NotificationPluginTest.class b/eclipse-build/org/rapla/plugin/tests/NotificationPluginTest.class new file mode 100644 index 0000000000000000000000000000000000000000..109cd200fc320875e54f4c0fd939ddbed94819a4 GIT binary patch literal 6044 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/weekview/HTMLDayViewPage.class b/eclipse-build/org/rapla/plugin/weekview/HTMLDayViewPage.class new file mode 100644 index 0000000000000000000000000000000000000000..9ad6a2de19ff7481f56d0e3b3c55af787df6055f GIT binary patch literal 2149 zcma)7TUQ%Z7~Llq2EtHifojB-OK-UVV_RF5RBE|YV#B2k2Epr)oQ8o(CTlV&t!^s>Z&Qdyg!+Z!E1Z=N8N-1)kT;veXa}NWB`qL2er_&~?kITHdU{Tq4)u zJ#@{A+;`kPS z?syg3xU*gNT(jt@x+-!;>GHacVVu?QhQRfXps%!}`0YZ+An>M+b2!iV%F=5Gx9S&4 zVEkBo!L(YCOfSYTp<$c?bOLw*P{##a6gWjMEU?`uNj4{IbebM^%}1uu@GRTNOOJU8 zT-I>~34tD~-s)k2a3Z;-Aw^0Dzhu^T$cZ6|N!21#O;|yhFm$|ytG>r(t2P^j9dqGW zPABT?gP7HI+|cm0z-T9{7eaO1#5?qIyt)EskLA@CHq*n%-qSIIA%SQ`O-C?dHq~kU|VE%`sPg*9Zm+H4jVoR-~ZnY=<8NBg-ConiU+!tY|Mqx$+ z>|oW}^C8eHgZHyMz#9oTjWaZ=PJAp zb%2rO$s>#ktnhs4TdX}ra`O;rb)7!KHG!E(Jd*ka?;e429NFxYLhwZ=g`Wz8#Ym2GQ&QU@fA$wJjCZV ziu5F2l{{SD46UP7m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/weekview/HTMLWeekViewPage$1.class b/eclipse-build/org/rapla/plugin/weekview/HTMLWeekViewPage$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4024210dea4687898b336f775e901b2aa983af8d GIT binary patch literal 1259 zcmb7EZBNrs6n-w7bkr(yGVxv10oxdq7hk}ls3_57s1Y(l{B+k{N3m;{_Kukt|C1&< zj7EQeKgxJ+H!_4pp-J0&PS10m^V(m(zx@O-i~Ab-7z%z+H3MFExmkA`RmU@%LcHB} zMALk-zFK@mLWzVIyecv?8sZFdU4-q|>b@sD8JaeCg;(K0gxr)h_b)g@zua`f%rp@e zyZHYxT7+A4JV)MRFtbMi=1L6lWxpZ@z;N8aG4$(*;e-JVCmCW{WiVKDJn^hiD~n*A zmtDb-D*BX2i3g67JIc5Uonh(-{FxaFJy{h})vwL)(r+>hWpl+XzRgXSdsTBy298&? zG@M}=-miYxaNLRr5;)7ivO3Z@uY$k8kj@_Tkt-!|iBeY0({Tk?HH3=ODETZPdUR#;IGpUZ*i&m^>7=lcSYDj=>mtKV7JBDGJRGIpuW1KmkJx z3F)^((lA9;?H1~Jc}v(*rw&gWn87Uhh{ETAd_;bzoxA03NXIpm&eCxMw=~?`t+*8L zq`4}>kOq9k4{BT*xQ%&AfR=ZRq1 z%LHYqY&6BJ&dVb;yJ$7JxifjgzF8aaTy7zg%F?5SeEbI{H)8n~%(btW`$+bE iP(1w+c6<*=-b6x}x#QR0X&rW7az!cZqRF+&)Nff7stE_R?X4TVl9_9YRKC0CL&(CItc zmp=BT5ABOtDQoou`X~K}mhLObwG5!oV(9H`<|OW|M~q70H^W2jy{2L*IUec zX45wFO}n*dIr&v7msc#gn!kCsQohH@JSTU|MX5s*xcHL2x!?z$Sqo~WEuFgQ<)`8W zF3YoEl zTg`1WT}L{BpYH?@i@Ovw?4C*~=Yo#6nPZp7*QI#$R2qA*Pf@vFAfK%2>s(pFG?=1+ zcX5!ZEXtsh$L*-70*8B2Niq>BtD2=|=ot7L)hHz&Nrz$A96Ry_v)@Mc1}vO$nDIs0>aR zm_R;)H|MVUccgdIZFvHz%vebQI%V*}o{8f27-*SN6ymIbb1KAkW_XWxDXzg>oJS< zh(;~*K;6gz)jJ{;o_$jdCfVbSNx98H;9$c071gBOkW7|wTY_CxM0J(It8uMm*>y=K zPxnYE7UxT?D{Mfq50#L@Edw`E(ox~P>dIj=_ZyzuYEIcU`$wR9hhJr94CLavQu=KJ zckoeMWYy@xHp6~%qzBpy%^@h4D&L1M|2iFi0JA4%poz@;G7|W!zU6 z_kqAjQl0UBB&*L1e2yj_(W8OsK2rPbZk>WsA}>s8wg{Aov( zf?_YjG2kkLeKeSpzH6^YzBZ3+tClc(h_4KIV20ai7K))$MuEv>i`%R#^!S8NmA=r? z;mL%u--IYic|g6dN<{*f-@toQ5i-=Uf}AX(VD-1MPt=wxW;1^3R0}CNygv;-8&z`4 zr?$#=RFgB7dLKuUS5`gj6RIo%M#*ucSF}yvmp%?t@+tnK0cafYsYM_3cs77EMK2#z{4r_@`zzfeD5DtQ z_!tJ+*N2hiF*)qR3BD#1m_(j!^<)TfJUTLlILK~&4MhSPrtNi1GujA_V+J=uaBL}D z>1E@u7nCKZR5)guo6E&PyGx{yOKN58Mg5_ z#~d2jTpP_WkyOa(yWw$@EW|l7b)MiaV2bc(a1poo1Sp=PBr0(dTiE#mw3vjlU%@IN zPhv0DuuiB?Xnzjc-#D$~p^oxZ@th=SIz%)VYEXVotK?cA*SLePNnKQ}9KWiPef__v g-wVW;e6hl-AGw z564e_@ryGK40guxv;V=rVtwu=X_ngBaTs>*J$vps&w0*sPyYP-x8DI=gQX!Pka65v z&NUjAk!x73nrY|urQCaL%Kcnv-?VEB#?yjfNxN#e8X^MOH~6pfboYQj?6zr}-mE|& zwbVPf?HYBt@3?!phbnQwu|4_3%LhDaEi>1Rvg}l)mETO41>%cODzf33j@{I7LSXW> zF<&?eL<$TLM;N+}C}IKwOQtPXTJzTuj+UY*V^%X zk@^auRL&nm{8DqB{3dTz-SO^!Lbw% zoFI7xIEhC(zQk9gk;h6q&i;yHFV-90(@qHTrBoD2`Sa&SK&=1c8gMKOR65t~h4hnw zSi#11g)h)AgF+q%5KdMYGt8I*X9D(ayZBL<{4bKrl4n%*mW@VdstvL+MVor7a|)Eq z@7POD5IV+7PRp&xyQUh5iI->p71a_ zeu(~GxDMeYpK-o{bM&9UDXubYKMY`yJD$K0PBV^LQQ*FJ9}+mrToECFF1a~od zH8O`7&HRe7KagC?9AIL3>IfGFR-Pfdafs;^+HyyDpEo8l8lmIOBaoK^+zDTg{)EXy zbTl%k9pIB6Fg*PX_cs#JLo6TRvk=z5kBUTeuN*AiE;%W>lHM^{xo+s5CiTt}7T`fFA dfr365`v3q0kdquh%02lg9?3mk5#l)Z(j=PEZ0ta4K*QVq0f z%fKwn2_ysM+tQg;eqej<`Kbv3kr&vQ^V}emZa6EQn(81n{SgA4;Z-{rc!n6KTOJ<@ zGD}B`(iy18P@N-eMVhcMSB{eQg; z&I-hHUPX05pw~nK8}!{46DBq$5JR7dZfv7aYEH{;nzmhay0%bKeo>YjMWtzvNtl%+ zndj!ixF%7+YD4r;`~&+L`-TDOdhV?SuNE)`Vve+yeMOpP94|bjB#9MBr>3vTMQPPS z+le^L4n_}dT8#?G=avg3t3%jr;t4#Nz+OCMU_fB#5%OwcAD$LiFUw^WL}gKUw4@BS zQE)|;8Gv=Rruh4 z_j6;i=?)4Q^C~Rb3rtunHJDG}FrG8;tiaxu+qRlnVYcXbPGI7B91-ZUgBiJ?CNzSM zR6ajAmp~RT7&t1>r=70m-^3V>HJqRH+)$ur8M#~vE&YfYI)R*lakgXxeEEfm2}}wk zm~neiHMDzEQ_aAarKq08izZHCif#fGE(xf$;31YG-?Nv6+3JcF!_iA zIb-5wUFlu4a;7S8)KmiJP&6iq%WBu-V zK>b=8ZY0C7&fygkuYw)Wty9N56zytJ-6V+v57Kv}o`0dwF&GhZ$;4}Toy;<%77BsQ zO#>}|nx8B#n~*5cBjxY&xV5R!?jRZ+dfu@||J#pbaiy9Bwm+ylSx4mtB~1%0K+I;? zh*^)As507}Gp3o4ycT4&IdTkNm1?$Ai3*(2#Ne55u%O4;4HG^%kGk}hDcYf)TU+i2 zH7!fZ$*xCDpno~9T6#p5O1@gOWytNJXULL?n_vfYF)IzK1@^5)&uY*H-Xd46Sk9EL zsdA_b^BoiK>IOF>qtXxcW=P_>Rrj80d}dJkGV!HX&DvX3fohq7;O_EQgW9TyyhtX_!;4 ztNffJgFpq?MLuKPl4s`Nl@U#x=lS#eafMl;;Zjl7I+%{1n$v~B>ravPc77))!QTkH9zs9w`l54^ejewEn%IGzkrnQnrq#b_vy<;i>7l#W zRY?Dgo_pBy3sM4gj12Mr9uAG|yp2tnOdX@~I*!+IGF?ahHY`eS{sXBDpPttD6hAu} zZ{A%P?a1`=&BaWAM;&iuex#QeG|mwnC1-Xgju6i%cH=09If=74hU5IpbL18=jydFT z8Iw^gV-1umv6N6og)wyE5)`g5s-2X~@HzZ`hw=U>PG%hvz^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/plugin/weekview/SwingWeekCalendar.class b/eclipse-build/org/rapla/plugin/weekview/SwingWeekCalendar.class new file mode 100644 index 0000000000000000000000000000000000000000..63c324a535ebe322f86e29fb6592163293cf6d45 GIT binary patch literal 5542 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/RemoteService.class b/eclipse-build/org/rapla/server/RemoteService.class new file mode 100644 index 0000000000000000000000000000000000000000..0253449c3b858572e6254b409edea9b4f5fe4fb8 GIT binary patch literal 334 zcmY+Ay-veG5QJv~>Ys0obA+3VhfOYx!It^(S81YkdTgo{TCbBPR!x);n__tRNa)`!GOnWaWv#GF zINz-G5=_DGKD_Daa?N#6VUKXqj+Bn~$sgl@aM~J?7g0}4sCn(mtkgFl&=pofJyCn;V_*1CxPzk~$9-Q= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/RemoteServiceCaller.class b/eclipse-build/org/rapla/server/RemoteServiceCaller.class new file mode 100644 index 0000000000000000000000000000000000000000..6d4bf8d1075ad25dbe58f9b3c704810459980272 GIT binary patch literal 537 zcmZ`$O;5r=5PgHy0-|6=KJ;chz(JdM#dsljs*r#oCZ3kE*6PwF+k*ZrW8%SsKfoVl zoDw4kaFf~DH#2WCZ}#i^;}gI+j%;KIC)xzA5mP1HSem&sZeLDxA_ojYU$%u((%7&F zrAILrt`bq;_C}A=PY71O=XD5u!~?W+Xzs^Ww{C66z?nQ6n5L+uj@2@~q91+fR4=SIDG+ zo*7?Wh3Vk6HA_EB7sN7ofBavBda9aV8DwFz5ps-9*{3Jx&^z*PD7`Ysz~MX39;k9@ X1^bI=`i*5AFr~uSVqayeFLH-J<1>d+ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/RemoteSession.class b/eclipse-build/org/rapla/server/RemoteSession.class new file mode 100644 index 0000000000000000000000000000000000000000..3b2efdc0581bc4095b73c4149181660fae3cd719 GIT binary patch literal 404 zcmZ8d!A=4(6r3Wmf{M!3#Dnnw2W{fjlQDWCF@bpTR@X-0e+P6Rf!w8 zw9Ry8-n{wx{`drNjb4F4|*=PWyvlZJl|^P?Y)eMxb-QDyd35AQspcIIpRb zpyu@M!m2EFEm4&!rzCkN>z%Bn_LnFB z=sD!rFG5KV#*#p9qn4}ONK1hC<}QIIx3r5EKez+zG2YH7-yKE{aJYqZam4@JET0XW F`~de@Y?}Z8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/RemoteStorage.class b/eclipse-build/org/rapla/server/RemoteStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..195f826fdac5b9157a30eb2128208bf15ab77705 GIT binary patch literal 2223 zcmaJ?>2lj-6g_GdtEsxVE#2rsx+N?%En6X_)F?_~>exY2T-+3bB7d>fIFga%l(4UF zz)SFx=?tBLp%1_l@CdvF4Cnjg5NCn>$d%4rb?>>?zyJNq69CuoeGYpxoQ>jUA@(|L zuaJm%O~eITtVXGD(kS+tB8Nc@haPxqUZL%U%|dnQf$&oegLbuSX~>s1RZbcQVRJ%* zQJi;YtcqJQi!N=>mH#8ftVml?gAPZ`Vr9{sDORSf#kr#6+^yP^8V>G2_D@^xqHQ_V zdE2xcTF7_DvTK&T=$2-g>rl^vSkWz2D>OPPAz6)Er>{A0JEa;e^~sVmS9Hx84TnwJ zVx^0vNoh7!vTO}QFMxqakNoQ#55X{ifdz!XUk+ zVPI^$##Wh8LyX`gPUmonMQ?V@Y zzm7LF?2Fosjet6C5(ve^4M3J~%fN{Azs+{AzqUxCZtROh>fSc6PwL3D{nR;%{BE!+ zq;krDA(fox!OW3rFAbtF(eV!Hk)&Rn>L_!_B5X*Pih=#oWsX}x7mJ-w*KOf<<0M#P zb4jW_fwFWB9FUgehTaI0j+go^9q-9dYpD!%&%i-xaGx{tW5M~A8gi1$frxc{pkc3C zSa-dniv7^QA!)wEy4q1Q2xW|hfx{A9=I6yim79H{RJIJ{rSbu5^;^PU$y7DLTBA@$ zn@(ggbM_$V6dE`pojN3IES4Fxr6bmGJhQY#CrScdjrBgC)WA{bY+^YGMWwsCBx2WF zYLn&pa^!pMnimK1y$4>|g$cXSOT&ouu`fDmAUS-ZVRUmLmSd8c6kaLV@~r)9sP^%m zhLgJ_Suht&xvTk&-Rq`7yHF02l;??S%#mO3xhc&gXEKphw)x&$+kV%J{kgK+IkAh` z=ve=a%r0+XzSCe9YmHNwkhQUZ&5x9HNCS~%-zb@|5x4J5v-S~3F@7pgJ>PQLugXI- ztZ}jf{5?3p1I6pYr;~DRmE`Uz$sJOX`=TUQLrL;oNwQfB zf>K63hNqbSIH0XCEB~}3dF^MMc!aaR;(R?nI`kVZ)(7&Jo%&#Y%z2DwAK|Lfy!aT` zAK?}C{MvAz)$2}uC_j;zzNyr2Dbu2QHr2DGo~L`kOEUPK%wtw*s)Jd;cQepY;Cv6f zn}Kx&F7&|nGjLIX-Y!-9N+SjsSbarPy$3z_mCSurfl&|qCNOQf{-j^PLpJ_n zz7JBa6S;;@w;?z1**4@hKHr8+;)`v_46E20c@AG~Lu&YX8*(4t^do%!R@M65KX=dx A_y7O^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/RemoteStorageCallback.class b/eclipse-build/org/rapla/server/RemoteStorageCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..7f4bc7e8a76c83e7cb3cf6781d955ed7471596e1 GIT binary patch literal 426 zcmZutO-}+b5PgHl!is_`;>Xd0frD=172}2AX#)u;_wG_Ri)BknA@OG!6AvEz0sbiC z6iqPEChhc1XI|f%kI%Pv09QEnP#~OZlZHmjl?WHotfUEta;B{uS#3lryF#g0B#$17 zg!)vhM5sibhJ$!26H6!#2T_j@M4P9PHCdi^2<7WUWqD?A2wSc8n2Wo5B7N*&*F%+1 z+w^pmSS+g8Lyh32()Ptn5*n@cU)~A``&DeC#0*iE%l>i}OLHe;#VtXk6QRb!WDfr% zOS!h$!xQ1G75%dN?J&HbPlT1dmCS9&sq{yBX%cyxIlj|>r*Y|&^Z#s&M@cwwa`;w2 s86Iy!h0z5^w<-a>!hb>inLz;opFT&R$)$%lSZCdQ8;l%XbDcT*0y67ktpET3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/RestartServer.class b/eclipse-build/org/rapla/server/RestartServer.class new file mode 100644 index 0000000000000000000000000000000000000000..7c35e8231c297ee87c63e4445208c9f63836d64d GIT binary patch literal 443 zcmZWlO;5r=5PgHyLIuH!A9(QK2@cxCtHuk#Qv*qBxG!~W7E4RE3;MT=i3bn<0DqKm zmKf2vo7ven-)}xX-`)XS;Mhfla8l?r&|;p6pp<$kbr8wY2yNmOa^VnKQ?V35Ch{~G zO{Ow21ScAW1A-r}U9r(BPcI48t0YsoGS`HSZg0%N{o+n~*ha%eozPt8^fOVGb?l%? za8qf9VkQagZts8H8VI{}Y+{QmgesTA#cU$=t(at-;)g{dva!(0;%{R^|E5Cl22Y8c z8&%|`i$lWcn)|)x&X0wD2qL?SpFmEEi-k_)jas$&vz&8FgvVi?yir2OPRG9rs&H8d sHAZKw?Wy_n3hxE2X9gAc{Ccc`Hiz!`u~YH#^Jh zY@66x9zs#7;0r4#zM)l7DblptDuSX_@CgEn;D@61QxSRizz5X-&g^C<$tLyl`|M+P z=H7G8J?B5qyN|wk=s^JUg{mMRFvGHY61JXA>xrCUZ!zq|DkGV@d$o~s z6odrgWy)2gOdF2ex@6l* z)25Me7P}Ortxj7>J0O>+DXmktP5EA23^^OkoWLxfeuKu0K!}Qj zGJ0=WNxv2XRXM|1lNAWoNsS_HeMuwhm{umI;ADY`u30X};Eq&ynue1wIRb%GHJpZ8 za`qTbtCew#K8LQWtM}>FZS(l8mc2RAA-!3oYEf{yz~u4)9x#{W&2-AJ!n~bE>Qa{p75lqK; z6=w;EgnXW_;cT2k-|E?{kx2y;suqb@lZJC~p1=u2Y?Wi#4CUpne@DWpg|~nbS+X^hlVgBDpm_HSRL683{sM7|RnG+c$ZGj8as)uv1$=E>43Rw-1?T2FZR zCopp*B&{Knn2{B#TUy`g?x6QMsMy3)Hd?)gts>3GRKB}ACnGhZ!2&%Jb*$Eny1mf0 zr6Qra`gN^RLt8@*grX{K^_UrEN`*jM*IK_;#TIhemenh{`ZV<89bRxP>Sx}Y$<_T? z>V0tqc7KwxteK8!2oCW@PIvx1!hXCFtmO2Ra}8}AVqr>9bF z*W~qdt|Ko4YIX(0eEC_b8J+U*T^int_c2Z!tLVq`=to}-{O>K3Uc61i`|$zx1BTtg zv}`htEdQ+eSJ(Y-Qb$q7>ebCm!gmDS+=dTn_%Lo~5YcTNhHNda&jjj6@s=mXM@lif zafgDB3e2qJkr50U?!?CgPLy3_NT3MJ8|6@6oDOASaNNbnaP-XvBjc0!w1Q8uP*>7p zR2dpRBV$5kckGlcL&EYo4R_-n50-`5tYv1LUiwvFNikB&wZn^(@_Xe>E23W(<-)dC z!{_k@9>aJXa!f;A#efWO+cteoS_|PLGv$R2(3CFQBvib!GP!`+_%ZlmrdRiQo}@N5Qv; z3^%Jc+SXQ?Vj7O%yY#z^Lp?7C$jPP7;7&nJ-K)^|q1W0%MJJAk z!un1XPZDkySLw>9HT(=eXD6q5zHH60UHWQ(z}``+Ofl4aAu>GBhrjM5$#~wF;aMqzilOVZ?53BllgaZd4Zp?<#R^Je2@0K&2Rf@Sfn9Yl=yd3<+T7j^eSsuDk_qjCJL|ngI zp3dhecAQ%omg!md{-%hku@k(UUYv?oxd>7$QJhjLX1)vXnR2$}9f2lr7M1@wv-2|~ zr*3{j&dcsQCrxOi8^^Z`5#V2-x?#=%oUo5i0Zia$#9cj^GN$50zMte#A%=;3BRwXe zhB89(`p3N~Tnq6%?n>Q5KEag@4F@o_pDl zTo7OtpRpg8_-GduX)hf@)V3c>8V=&J{a9I6b{0(oZ=WHWAI9mJ$?vmxZ(P8qrTkul zI;`iQEe(-|Q?a5UA$bGiiiDz(-*PV)TXi45JRGXsrA8lXu*fPXc7)}jwM2%(0@Dto z^U8(?u%v*u2@GKUBwVdeLYIC3sdl+H$6f1@@5>}z%#3XwKyLxp1aXDCkS}0s0LvQ- z*e1{%iicv?$8IR##vtT&JXF9f0tMU}KyZF@m3P($Nm(7QF5n})$y^`%cmbaXB3>;w z=gckOvq3WK32-G|RlpYmo+Ofg#d|E^tE_8Mn}OKDA=(r$O!OgFv`=ueLaEBA;$vSs zhzIvzL9-fHo5R7T$R5S7#CLu@V(gg$rM+p z`430v8vCh>k7uq#NQo;nnR*ow5<*CQT#%lsk|3#4-MCu7Gcw+GH>+hw{8BoC=X3LU zX3+e2n1}wR2sIZ8(4Ym8c%(TRY|^9!(UJvPJSr`S#-q{#O+8{sELXNMXLsQu z+{OF+Jy^(*tQCjY(jUX6c#70V8S<~;GW;9uq6#a-1m3BqphKL@tMaK>Bc`KM%wSN? z#afZTdeOx97F;DR#?_(?x>yQBbg;8*;C*!yHj5lDt2>YpxATg6H?9!_u*DJN#pAqg zK7&5-EN_|5Gelp&c5xIt#7n&Ay@DIW>wJF$HwFUO8BlO@K*KG88te*8#jS2OJtQkh zU|KPorm+aUgg-Oe=8Bi`GM@riBA&o2c$L_!6pzuSzc9hG;$Hj}e`9^wMtq*c-@ee4p_ALAp|AI=J=MsxI5T@nzcoWAEp93-i*6kI7k`>yw)0Lvq zLPG?oL729AQX;g_lMznD<_s1uIOB{R137n>8C=E?wl2c{o%E&MaZr73WkQXSAXihSwWGK7+ zk&3K`HGzh!qzOfjO7eZ2Ci211SUsoaNm69>T-z5JS~8aUF)I}WPL{7Nxy>}Oq!VQX z@^{_#tw5!{d@-~}C&Md&!gUnuMB5vIm0G>WpQDkI;vkQ)H`4#bw%{NqE cImuy{_kbgC#`II{WvKhKeHH>29cIYU5AmRT&j0`b literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/ShutdownListener.class b/eclipse-build/org/rapla/server/ShutdownListener.class new file mode 100644 index 0000000000000000000000000000000000000000..6a0c71e8379f525b9216c7b862355f835fa7dd01 GIT binary patch literal 198 zcmZ9GF$%&k7=>T7wpte*Jb+tW40r`W5Cn&UgIjEWYD!E>n%28HcmNM2CZLP!_a5(i zulM5#V1sFb0mIVRid)er!CSIDS)N}zSDL#%$kvf2n;>GC)uI<%30?8yrKZ9$%-e5q zuced1QOPjORwrNnC0lcA6ggsuvU5n%+;p~}om8GJ{!Qy3i5dKke+Ue`c!U_?K!UL+ J43of-egJdCGe-ab literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/ShutdownService.class b/eclipse-build/org/rapla/server/ShutdownService.class new file mode 100644 index 0000000000000000000000000000000000000000..2d21eb6d2a52459b1d123958d66aadd665408384 GIT binary patch literal 813 zcmaJt<^t|<^$*|$gfwaXSRpPZ!r)jvyP-wTjLk8QM z;rL2MNuOfoeh^1Vq@FS4okoX}57LmzUT0YUFRqC)z0Rg|4cz#P=Wl!yE0ifH-297gN@!hhKkde$I?h!77Un#;6;gOjs`s;k9aSpC$^UcJnnEAX?yCd{)6RPJ-X82 zhd>NflqQ*h219)|z!OOnXbA7!w%+!iM1~a}hL=nCqD+ZINQNC}eydlr_H@mvq+O52 z)fkcS(~%6si%9oTxr|TGYFE#y$f)-`U1JV4Jxcnk=|PY#kX%HG;@8M}MPB`FeTCJv zmlnQZxtq6bzgw^?{%2G#uxhhUSi3;|Bc89N00fb0Tk ThddAQhzy3uT9fa|BzN~0%goJS literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/RemoteSessionImpl.class b/eclipse-build/org/rapla/server/internal/RemoteSessionImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..3a0a43267706bcc293c9944b7bb1b95107af8c0a GIT binary patch literal 3400 zcmb7GX;Tze6g_WP8isbm9SsbK2*c9GT`?LZ5+y7Oios}-c6bae&Ge+F$0eKD_dWRy z`DCh$B@km(%%@nDf06%TrE*?(57RSXX^Nt|=k>kk-h1xWfB*aY9{_gYCk-)yPRC6f zu9>w>BPZRf(lxA%C*6!`8>4d8@#L7yVApwKC~mfz@tk+`Ve04$$G35BSzDu`puGhOejrTi8Hw0_viSl$tV1MLx%qS=rdGJ4(XT^i>= z$GAZJ#PyWSdgM5#VZA_0k-IXWML~heK4((KQGrc5)?l;1_NQ>5V_d@)fi*tgQ6A%H zz%vS{QJ|u|W4smu2_3bFtEUzntFXEjt!UG*U7)$>U~YN7bnHM4og5t*JW+=ZbZSTv zv8Y!TSfArFq@xSneoCF0JTuCKvDjy9UE3i@#@~qC<-Yrm@mR^u< zf$sK>|4|)v*o*xd_6c-6bxG+sfP(@nX|!+JvL_3ck1iX+Q^WeP_3EgD&JrB7GIBUS zds(_?&C9mmI!?;8$4%E#zr({yZ`#T+=14(4v9np=S}I5a^BvJ#K2a2pr)-PeKJ2$} zT!mdwZw<)~I_fb1DpUPB`tX9l3focn9^?37ud7--rDFguu@;G2Rt90tmnnld%b;Jw zu)xOhfpR?0lt{N0r&S4`5l9wGG33VY)WVSR9qBhytnM3ejNzPyvz$rgusX(Zp3HIB zVEu9hGG2p=9599wd{xJ5c%5BgX0tLgsfsz$0wH3Qj^HQ^ zxmQ74){z1=Ydj}-DX@-7Di5c(28^Ml&&=%b5>r-YG7<2h7-C`)Q;wS$b!?f4V;v^y zNT#LZ3T8N(Q?4{USwf${@#sh@&>Y<m) zS_siqxfBc@N|1i_Ltt}+&QcH!U$J)|V}i5Q${ovl(@JN`k}PL#DmGAEuE->FN&d$C zN{Vc13UXJ+$DF*IlKqyNoEr++Tl~1`Q6!?7%vSKfihock;T38T`ge|D|ISt8-?z^WAZ*4CKj-D4o%7CIW#9b?_k?Kw8!u#TIbM{ zOfFz&*FEfsVGf6WrCtn&d2K*7uZ=|7L~Bi0j|8^U&)wLD=lCW`i?o3wILf@>Ipe)yS*z&fr~1RVDA@&}}{h=BoX}HXm9K1VU(`rZrDWl^1ZLTsgUn zGVmh0moW4Xqf*{W`q0!lkCQ`Pf1#@Dc5)tr_c1ha2P3~>bOA5dzcP5h&SLeq`gGQ!6SB_s4EeBgjE`@KEg4LBND1h zm#}shH_BN%ybNoCz4-PL)_x{y6$Cy^n%)`ge25kIadV>n{RMpZfbsTp-or->y(>!3 zr=|2n$Y^AhgEdpds;OngtYw-Tndlarz#;VeUL^v1AqiEaMs)^1^ZEBVzMzMTp|902 z_DF5nFZup!d=rL#gm+bKb;@VvxbjxTE&dGh5!Bp3gn+uxl!9g1stNfmE-YfjXc4GR zcFy5Ou~Xvy=?Eh^?L%z{q!v?G9eOR;ncs(424xCe(EJNQqg`+|;!#xyBk+SS_2Yl< Col6b? literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/RemoteStorageImpl.class b/eclipse-build/org/rapla/server/internal/RemoteStorageImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..cb51723168bcbb42dad208c97f4a0de56fcd76b9 GIT binary patch literal 16702 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 Q*Q$P&(4MDBIOK)@1umT)`Tzg` literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/ServerServiceImpl$1.class b/eclipse-build/org/rapla/server/internal/ServerServiceImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..cc68d9f72c53321c56976024249dbc44f9b9472d GIT binary patch literal 1155 zcmb7D?M@Rx6g|^c*470oC@Ov-R_#Z0!Cxjd{;+|hN&N^I691S?mti}&ooQybh%ewD zd>BnMB%1gDK9up!WU)#C!zR0X@7;6Hocpmqe|`G_;2~-rat!yii2}n1F%J@9c7zF} zN`+B84%VG-pE4Bf{vfU_dnhoJxA_haVy>d#MR!|-sfP)M`WVrgWnB|}or;WPm4~S| z?-?f2o=hrBbbMzl?fCPXl=xUGnLc4ys-7ydw!u(n=}l1t!=w)nXG_Rq+D8#(hJ4im zraMxJ=fi$im{+_T3x=7F4tc!6jkJCiELiaj!D$3kmP!0 zHEZK19RS>Hh`O}08;U_n=)}VnhQ(1^w+!!#ciOxS+(7;SJzQmIjBtm?pB+I1)FhYh}ZOLe8xSdcy zDI>3GH_vY?B}^;k2{i!=w4-^t&w!Q7c2((r&Cy*%iK6GodPKgBl-rb?jeT7EM1dSERJ(PCeMWJNAxd$Nu{M_yo|vrjHU~H?{59imn!MCT&mJSeaZ}BXoS#uidT^dEV*j zYQsmFF#8~SA}(^J<7?HC_F80*gwgz7Wz~IVYz;wq#Er+wsQiSmUmL1(`-V_%rgw4- zgz*R?7!BcJB7%=ef>(1FrdrC#%c67ZWZr5?m}#Yn&^N*=R}a9l6HkbT5m0Tgc+VCl z#5@*#ED&~vm^{J~0zx2?L}q>C!mG5fi9AzI=E6Vs_nhrK(Wyyvnkm!1kokRj7h&Cv zTX80y_N2+1S_)Hi3DLPR(l)ioGMQnEUGn(hsZw!PaaQ8xBVc@tvqP>O64rNKd3!_j z+`lvBu>J{QggU5j9dVCCr!m8ke*`86EC(FjSx|pL_>Q?h9P|XA>@SXBz~Nz;yGmHW QD#tQAx`qwT!T}$rKOfhm`2YX_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/ServerServiceImpl.class b/eclipse-build/org/rapla/server/internal/ServerServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..90fc69e788a4dd6121441050e46d0a6cadf107a9 GIT binary patch literal 17395 zcmcIs34B!5)j#LX@+OnVmH-+R926mB6%nclE+GUAl7IxkfQm!rK}Lp|I17tfm%6mp ztyZl|U23)B)+!Vd$0%A`acyg>wY6$(tA145uY13$Rr&tszBe;(k^ybM-={V2z5DKR z?m7RnzB_&HlSg(E(GhC5L5it1kzCuD4EM#tjVUX+!Adqp<7q1y562q2^t1ep_E_!f z`(g%pnQ96H)+EF0t&NG~y26;&L_8gi#;v5?-_JC)&_9(a0L1@HZ9!ad;#=sVa&pWW8j8jE5Z^K=JvEz4-ucZBk}I+{dP>! z>Pw`e*!bpURx$;;n0Ns=(-X78@l4<11mKc?um&UG(|d0W%5){TUJI)(@YvidXx62Drsvp=>Vz<&~&D9TS)aW$fTTR z&`g7lWD4z-I)@o1&7#jigt0_oT?Rs#Qf*5m7LKolx+J6VwawF9O^a5aY4xO=4LTYi zE9^j!AOtm=G=?e+I)-UK{nj8-^`&MSwjYO8%`(MOlTIc8FOW{y zlrfF1E2!lmWBQyh`#;cslUC6gSbeRPZtaBtnL0{t z;Xj8b4x29YMoh8@a*`#NiO`0KtOP2ZrU3O~SYJ4mf^Ucf=uEIdOur?( ziJ3HtMh9^hHz`5DdQkRc+XSY`;AsJmLsU6uIm#$0*i98-S5^?`vKJQ+pbRWmV}Lf| zQX`aXHmQt)LdiKMolBo*IxHNC$Qs&#ElwsjL?ad&952xxPo=~09&rFASnmQ)4$QC| z=L?+|Fik4#DMzO`6VRJ;Q3ibhyDxNe40qlc+qT>GsuwdI``HCO*IEN31JxF)b-6Gm8OozKg`>A7_ zr!A9x-z&OxA0nT9>x^SMN@-Dm9)PU{)sA_$S6&PW81x-D-{SqmtaKkW1qspmcBkrI%Jl|bF;vq;;lj7 zW17CNjpW?%ka@ljN0D?qwLwq81iL1&LE9Kvom`)jCY*@OV9?V{N4mNKxcQws_U?qG z9Sb|Gc&2R=(hCV(b*LJoT{I;?&oPb1a2KL-!wq_2SW=XG*En?QcsjW`KtDqG0oRaB zuhNWNwK1CRUA56#t=q~GXT50BPsEjqg|$%=pqD^_?tWY!Hgt?jBtd$fekLmS%BOl7 z2ZEw$yXY4ty-L3Xwxe;N8#zM5P<_qsV~ND!MWTSV2IzH!i^DczOE^HkDnW4W-LIKO z*c!D8$e&I63;mU8e^_?M&=zO5Ag)Lf4z5e~)mF2O{%+Dg=zp-ybfUF4 zoNP%Z!<`TWtbAlHOBg+$SdOLHI)>!M(*v zYmJq(5YQlwYIhST32!vVgY7lvWL9@K!NFtb?%ClS{y

G(Qw1{tl$rB~{9WCN(+W?`r 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/SessionExpiredException.class b/eclipse-build/org/rapla/server/internal/SessionExpiredException.class new file mode 100644 index 0000000000000000000000000000000000000000..57306ef885947228d38fa5db9754b1d46b12c967 GIT binary patch literal 489 zcma)2%T5A85UgH#m<0q;Ffm^A3C<%!*jbF-SvBIP*ggi=smxCwp(2V}MP0V3&h5n+fi4N9R%{ZdjO(gs!dVHE z9wOvUwb8CgsO^RiYN~=rnPJdzR-0jCuS>|Z;sN_u!b%Z73WRc~4PQ-0J+?Qh7crq4 z#(l9=Vl4QZ%(#1<5Kh8H>VGcV5L3r9mkR%iMDRQD#P<1Ir`B74eAr<+h;5Jrmp!qG zEOK(^1$kJOmk6OCwJ1zeI8W}}{=o}M&-0$LRDaGEWwwNh;QCh=R#6os{aC~LT&pI? GL;Vw)-Fh7W literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/ShutdownRemoteServiceFactory$1.class b/eclipse-build/org/rapla/server/internal/ShutdownRemoteServiceFactory$1.class new file mode 100644 index 0000000000000000000000000000000000000000..e53b61d3a408cfd59488af58f5e362a0521bc9e3 GIT binary patch literal 1770 zcmbVMZBx`%7(JH_gk93IV5Qm?M5Vf{)`+&05^Gx!D|TTii*$x>m*u*|W)mj4i}v^Q z7qnw-?T1c3_eXU+H_5sS>j%foWRm;b=RR-eocrJZfBysE7Itk62`oi%%Z=qxAl*d8 z$0~OHP^&nUf!jFj=!58KxUJfeRt@g@O?6*3brkc_M_sh(7d_xtq*h8*qKA^d4i}@k3wV74RzW8f1P~z*>zCR1pI2Ij}KWLIL9r ziYN;dD#l^F=7(yt)81F{j@%EFz+^3I%3xQoKAW}>BHz? zRR#g$RcgHvH+1ZWEibclv>&(|@+e>Wkz4QRqmHJNl5NkFURrzBR7cv6!o6i@1P`Hf9B8dpUAG zb!n6n$iXFC78q?jc(ik`{?n$wg~6F+e8~pkmGCL9+PESxJrKO#(Ln|CgiXdRfwPtM z`N7eR;Tk@(ah-6dt#pUz;09bCZ7D5qrGMrbt-bzOxyi=D2?1p2lyDng*!Wyvq6gec z6a`9#4i@pHfPE~3j;cQvxZ0m7N4GyyevT8kjjtRmgCueGvtYX>NJ`SZBEH5qHmHTg zfdRdhoE&_M?@09|S9}f?88ZmYDLB0`Lci+Z9@YqIH-Ny@8(P~-N!d>6y-EHVDfNbw z_fJU@KuT%+6wldf)FC`mnf)~3iA6X2mP`_I`+%d4Rib6gQ(}*LXhfZuSD0^9e6ice ziMuJk-foz(Si)M^45Eah%c$s}fgS3jNr`E7;-J9F8}6a5OOjB8B+&poU5E5;HR!H~ zp^8@ncAyf>@?I+N9fl~E&Gp2Kdx&olC0fV$x5Txvl&aVMfK&Yw@BfziOc-0bV@`jB zNv<89G1fEqfL}@kQ}pUgB1ukXeHUIzs literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/internal/ShutdownRemoteServiceFactory.class b/eclipse-build/org/rapla/server/internal/ShutdownRemoteServiceFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..df374e9e4c7e1bc98b7f0af987065a5b0d89edef GIT binary patch literal 1275 zcmb7DZBNrs7(KU})Q$?s7%IMP2)Y)fg2tFs{osNL$s%zxOZ<3OuA|Vk%WVhvuhhgC zH8FnnM;V`P-PW<0V3Xe4=k`43c{}&_pYJ~bY~!&Ch2cpcTbASRsyQzG_s8bLvH8P5uL~l z{7}Uu24fUty4MiTkgWv!B8LnXbZEHDkSQAt4S5t)EHM;ER7nTV{(pHbrmaPT+`FiaRWE0elG})x*dkQAQs3bgFPkb z^K~uOsv3%3Wh94xm)5VHgk2B1lCGs253)2+-dF>YE4vx%jzQn`eIY9z4=D^vB#aEb z7wAQ-4_X!a){vupmaHsUI_Bu>4IvfU3+7kMn;W08_zhPT{6hW-^mpmHzJ^CXb=1LivlcK;)}C@9i8LoUEdic}kt XYOwH-{wvt(;kWUK_8gsJSDP37K><0qnlmec#uc zUU}K-Q{kaL_3^3~z3KDx|8#l3naM(usu#&D-}&Bi&U@Z-zWL*yU+)3v#19I50_~3dE(AmeGuKFe@G8)daJ=ViBNZQ{Z`0})Sducw$8}2}mUs}pYZXs8#@wbPP3AgF)D6x) zmxf|I=OitCu8s84W26oHfWYO*!_6NU2>p&3<2g&S4H7^P#i#DJL4n|r*`%J4i&+IL z7+#Uvvgiti0)akrR1dvh;GH|-PHU9qX6;i>`DGyEPE z`$7G+XrrTrc+Xnqv@xpl#Z<;j>uIWaOBHUaur(MYIZvuMh(iK(td!droC&PeBWs|$ z7Ka6z^35KWOmJF+v$kg0`e;2`aa6@I94Dtnddw79RV6&B`cQ)W_vfZYbnCp^`wa;* zsig)r%aG6B%YZ#$WI0JndeCFPf=I6ha&pQ3O*)Mxu=j!4xmMMilRRNeD&N z7AixRD_E&KGje{(Ip%1$LImYjoCC5;&#QPE&X;ifp_!W9VNAf~`E6T)$MXRF9zntW@SjGkut z?WOIJ&$)z#MIO5)#H@U>GiK@-0?l9PEIpVh4?Bb${6 zY>BJ0Jh=EF!Wz`(y|Y!S@WxoBUcOZEi7cYP*DA)bTHbxD;w>3}aKOx2N&ToHzhMf~ zv1A~1NPe-NTm0~$1`4l`r!oHn^1$L1@=WHx1P);t?UwT?z^4YRm1fEV2cm;(Rv5%vD=7ykK6j&Z)4YO>{&p!AJIAVHuNpv zh!3|2=fes9Z$K^ox6(m`&O7KZj?FxUc3?Yt`Tcm3cPD8Pbwj`@B>2Q&oS=nscN+af z+rj2OgR=});3=HrzYP8mSA4t%qrYHnYz_k#ioS!+N*C$aDYFR4`24@&${e)&(0}GDm!Kui@<9hsbxpkh15ynh%mV3= zHR>VB6AAzRo9Ku&cP`+Xz)ghvCG~ePHPm3v<2f$OAv=ee_60oe#|@uoj@|q5-@k4V zE6AF!!pkI47H1vx0vx4oj&bD_S5BjmBzN+;o0Jp_)8oZdgD$*^F(N70iP!KtvuH#! z-oOoFzDcwY0)Hc@Ko=(!yxi<#*p#xD#_xQpp;50)E!V(z$j4@A#O~nJRF{dskCqMVLI5`E%ayrGF*2#)~TqsS9`N#^3qVU|B>LoQ5g_`m^$s;4q ztK3*aX|$IM!YJ8X<8AiIK|#V7x9=`O$PTFRZ#odJ==1(%sGqWOJWcT#KCb{9;u|?Z zLebbfzF;-JiZ;*Tn__AWjtsLT&1N6uI9R3~H(_^Mf!vViMhZgGEIIqmiS+yb0EX&{ AzyJUM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/server/package.html b/eclipse-build/org/rapla/server/package.html new file mode 100644 index 0000000..50f122d --- /dev/null +++ b/eclipse-build/org/rapla/server/package.html @@ -0,0 +1,15 @@ + +

+The server synchronizes and bundles the client requests and +maintains a single storage for all its clients. It also +provides the basic services for the server side plugins. +For instance the notification plugin notifies sends email on a reservation change. +

+

+The server is also responsible for enforcing +the access policies. +

+ + + + diff --git a/eclipse-build/org/rapla/servletpages/DefaultHTMLMenuEntry.class b/eclipse-build/org/rapla/servletpages/DefaultHTMLMenuEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..d92406ff289b762459d46a7bf2dac1f5ed34437d GIT binary patch literal 1460 zcma)6=~5Fx5dJ0vHiQ*0fPkPvlq2C-iFlC^mD?(=0t$3!A^WoSRizS z`H5gitX4d2OV6~6S%#Qp+8@^geN)b~O_^sH8LhRfm85pb^SpB);%GptjyT#F8b(vQ z&0x5zLqkk)9Xgs3V`y77ZLwZD*%#gp-?xH%oC3FYxo4_-Ss0Z^rq3|3dP{xv+C*jO z#jsqVN@sAx3eK)tY;1?Eo_B01&SW;IrlLKP(lu6yl+Cupr;_mh!_0Rb+ZS2YiumGL zLAcT+frfsnJ7~7)81FZ(H5wi=JXDHG>~hF!n-&ZpsbP>|_+P`?B*W-B9^(l^b5Y0- zo+$+lyn8ei&Wplt(xA(VtcGDyR-<69WLgKpi(!ooRXwI*BvDRZrdq&1+iqRUFxm3 z7n5qz7^Ed^psx`T`VG-m5{24Hq7jnE(Lz+G+aBE;=xj@0;!b+(9PR1xb0oe7hMhzc zh!Sllnji-qXhkQwNHP#U!##AAX*}COZ4@APD(|d^M6RGw~gd z7-piq(VrOFON?A1mHvjr1;!Iki4fne_zaN?OkdztC9BpTdJo0v!xZ|1jHW}c*BNCn hi#%na{=;wZmNHP>JIvAB7}A)>0%gLmNb(4l{sKAoeS-i1 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.class b/eclipse-build/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.class new file mode 100644 index 0000000000000000000000000000000000000000..bfd43eddf1ada36c7a45e597b3f3d54f8b48b945 GIT binary patch literal 1963 zcmb7EZBrXn6n<_9SqK|Sfl%?KBGr;WVYOCN02BP;VZfi_ zAMkT$)DAl1__^QvJNyN{Ja;!C5KPr!*zBHj?sJ}V&U5b5KY#uez)gH@D+4ZVg-Ci%OOSis!q@)`-p1b8at}+l87u!;9T_lvAFW2lQ5?D=_sxG76YH zqo*nLWCdyw^iflNRw+{9qUS1kq;g^6miIuZnzhPDBdjRDsY?$3U&Df$#}2V#f#mX0 zS=JQA92m$p=jeFW+UBXpz?8sM-I7-BM#|F|-MeWMGq9+S!17T<^h0dg&}C%WK~2CN{81gabR+ z2r06+l$=qHgu&^w&Ad%G4D};%2u!qvUYtavA~w~R(NF~1g?aH%LsJ~PS7#5?|2Q&% zn4=pUInNJBpj+Q(#{#L6vddqu+qK4hkSuw1zbx-L`oYP+12J^N;2ZSi z!{0u>#bDCI6zJ#k5-oSbZ(v~Z3IBh=;Qc2U{t@ZNVe}O~`x&91aSZT8KVIOM8R8CL z6fg2i;3d4=z*}ODn2wnI0qLm|yb{B13o9A=hR9_JZV8#o&G8eS)o&@!NJf=CJe zW-uAD{hcff+KL+e1UCe}L;Ugd3EmW#i$}&;zIK0)iP7#8%nAGkV=gfoAH4k&?v5s= zZZLQ?4jMkx2F4T!^4BxXu?xE1Np=flXR@{w>q=uhWMz@lELq(qs}AZ=jLK<*l0 KKBqB;Fa8FyPX3z! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/HTMLMenuExtensionPoint.class b/eclipse-build/org/rapla/servletpages/HTMLMenuExtensionPoint.class new file mode 100644 index 0000000000000000000000000000000000000000..029629f2dae77b84e546c4ec1b38a303723fb214 GIT binary patch literal 214 zcmZ{eIS#@w6h!BL_~n-P4pExvh2ulBF;v^0XP)G>7f}-Gw;p& z^Lzo=U>ajUSX);LCu=Q5!>-fpYguw5j@K;B*tENcXVWNaa;uDwF(S+>*-4?LDaGkt zap4J(GGQG`vP}N~&%GlL>;oHi(p$G(-3YUbZC$~8rJ1n!ZB2S%L?8^qbAZB$F`~X9 I4mrT&3md&Y0RR91 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/RaplaAppletPageGenerator.class b/eclipse-build/org/rapla/servletpages/RaplaAppletPageGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..1ba289454ca4db078c17eb2b59f7ddf473aac574 GIT binary patch literal 3231 zcma)9`(G1R7XMxdObn@yC@S^QacmKgWWZ``31J(RiZ(n7h_be8C*dX;9cQL9H;8?1 zTl=){x4(7wm;SW-+5MqV>$ZQu{lheV-T;#5m1e9$3N)G{hLTUbf~f)3Mx&IbOWX zOF}~{L-&JBtun&UI%vDL7-DGd>YibUo%H5-0?lYkLPMNkOTl*eSnX<&2hS8yQ zSF)TLE3oBzof#8VJ7nlDJjnGrS!5X=sc=!Si=o_gJF9FjP03c#+P?A>}1$^A2FqTqE;^RAc1zY#nHjQ z%r@-7J`H;r_C6?(B=+MmhBgX+l3UJ%C8`XaD)?2=trM_@0}RP~F+OKIgt?A`67$Cy z+SfBO6Gtb*rfa-da%}F31iH|pp_@U!k9oU%EjhGtFJ4rPCiND_z9t0FyX1=1TG z)vFWs)$_N2O!=K6mFB_H>`sy*RChg|=Z$Qu`EZWrp1i2-f{mXBDk5>YlX)NPgmSPvT1$t;T?%rL4|t%bJs* zO10^8h8k!}SfwkYmLK(^1_E})Tu>=$I86mtQNx4F8NlEx05?o(P0Cdvd~<{z^?sb> zuhe)bvJVvtsU$<5?WPKTfnlF)VzVl)I$6C`wStg~+?lEI^zq}zo=Nw&VG8FoOj9SV z?!89u%4`xdvSl`tnP@<`V*0wzrI`y!%;JyKGE{Zv16%NbVb{HLriz=O(NW*X#_^&Y zg(K6Wg`ouggqJm3S}{ach$dl4f0{3~9XF0rq&S>EH53Pdx=+^!g)JOD6b)`&O|?N& z@#3g343daryI1td;X=*`#dYe(D(Aw`s{t?Pj5%JmYL3X1!qCtKWs@@^%;Y;cp;Ole z%@O7Ciu8VB{M0OMTxB?=lkNP(L}7SZFVQ5=88jO*(YH!w)UsU_jS=n1n#&m(L$@5e z;^qwbPGNCFgGWfMEz=V<+nM7*9Ir6+kelf5nms3~IpfK`J_?@Om8z(}SV5^uU7j-% zaB(mJ29d;8Y?H6^vVpHLr2o$bj{MRQU8i!7?9uvlYAA|;vVN1nh+-L>$WP`+^|Acu zaL%avH}si&;T*lk@n`CP3Ew*m1C8=B+e;F$WsP-#BmEmRc^;rIQCzl>F{Q`%8D7{x zL!R!kG>ucoF41)KTyr5UBT7pa7un0cou21GNISXy%+XB0H2WdL;YPDzDX@JZznPcq zilD}&!p96#k%B(v>1WBj9@c!{3xrw6`Al1^tUScD}u} zqviM5++UICO&ynv8?7wj{pId|dKWS95Ax9*MVLVwty7f9c8X^Q-FVt@5IfP0UFgGZ z`~e*}gGVtzyo=ZyWip~-tY<>eVuC8bVVt5*jI8GH98ME> zoj8UOvf7HXQ>3g&RguezI1#x6cQ)lOA?P{0gm4kH)B-&g@v0Jf?Y__( zD}~-#DfG6IeOHn96!}1rj}*D7$ft^YPUL=}%n3ER9f1H4Mg8ncRk_lt&LP(Jih_+#5*aCNlVns_zyZ){p4NPxLe5?`) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/RaplaIndexPageGenerator.class b/eclipse-build/org/rapla/servletpages/RaplaIndexPageGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..7b42a0af33a242b316ca3f56d88ac149d9299cd5 GIT binary patch literal 2932 zcmb7GTUQfT6#h;~m;g~JR%yIOD#|q@q7?~Hl%mptAUCbGmmxVxMkX_HW`fYWy}$Jb z^apgU_Q|f+E_mqbbKm=SYQMQaLeOQKwPyC5bN1e6U%#Ed{@MBiz^q?1E}* zWkXXPX|Ea5Eo%kosPo>|l$n$3b6j7SrnEKJvK2%HPF7{|T2{-+fP2C!l`T`6u7XB^ z?kdw>#k+J0L`%}F2=q?>XPJyZreNBSS-RG>7QBqZ3JwXRo~wDn z^6g2W9k0*@!?IQ@Wq~tY)AzMCO*J&Lpf0$!ZWc1#HCwYQ_hr`2G(q4<0t(^+2c~sX z-mH{Xq`j!E7*e2Z+RAFivS#bvI^2x9McolNR}-RIo1d3w##hM(wlYvP!gY}f{ULjz z5Y&kDaw|{{JX+tbDs>^Ku5AI|x$0@rb<64vzCyNn`Jf^lH}gU^hb8Ao=2yXKfrEY& zbxWO^-N~VXGXf{PgX(qREjv7MbO{{yDn%{2B_or{7B$E#moHzE$Bg? zf?g(Tx30aW2R0?pkF>yks_~sR-NlVEBXj6kxnB0vpG#l>=LMPy(!Fi#uCxW(yTUr4 zQ**3~@E{Y%1+N7>YsZ@L8io{Hs`0;uHG#{X9ZK1gHq1DftavIlQj}V5ERIouu@rwJ zhHkE=<|n5|I~;ezkWNubw3skHArlaPyHE%o3m#6ZIK#Q-^)m=lKuZGCml zJr7utyu#~50!Xk~x?DEORZyBjZeM?}FF zoZ!1T_WI-pLcv$8n0jkD*B7jcot4*g&(vej`QwuI1}&y69*&s6S3creC!Jz<$FKbfFxBO;ru^}V_Y2$1aTZE zxS|T2M2d=qS5e_bjij%l)4NLi&1*eVw))%7ZlXJa{!OR?!_j24ZSV;$k_-oABp_n} z87Jv^f~#%UHgO|@;YKcQicQQ%&~_);xQV+B7>@mjreP)7I2=nxld(YXgMh3ABo~mp zPqtZ#T=o2lWN#mhxgSL`>fdDeHw6M_K*}VK>DxG#aEHNbU=+aqZs$8izfPf*UboZR z6ZE$eXVHf)407O&^Xm@BC8h({c3-{BIz#}Izt82cH+_yrkk zV#JU0JtmG(+lliQ<80FsZ_k12XJHE!tkI@c{Dg;CXQY?7+Mxaz@4Od&jdT4GpGMje x#mD%B#qlZiWDt2u6BPwQ!Dk8{Dd*z7Dbvk>g1 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/RaplaPageGenerator.class b/eclipse-build/org/rapla/servletpages/RaplaPageGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..cfdc7b9d4014e10821e06503342df65f2a301a17 GIT binary patch literal 364 zcma)&KWhR(5XIk|$*nOO0x9gQwaG$S%aDH{C<^xLFqnWf%T(LLNdWAE>_1bKW zE=`r|>1xecBy{sV!3|At!%4%`zjk`Dx4pMjSG{G z*%-m7&Sq?wy=>M-24jR=)eGe1Q@bJ6t!VhkEyAYo>q2?D?t|(0!HWpx>i+ z$!DI{DGWD$NBhY3UIhFS6<+C>^e}rCa2=CB#B$3VFNW3hJ zbF?}0VIa*h@4R8c+3aG{+3I52+3q6$%D90!-shML*yYZB<~TqWhnT?;<{5Q*^H{(l hSIm^?YL$GVY$Tc1PBGgOR|b}`!qMV05LQt@<{N`NtQr6S literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/RaplaResourcePageGenerator.class b/eclipse-build/org/rapla/servletpages/RaplaResourcePageGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..f2a5890cb80b18915820898f838e06a01e1abfbe GIT binary patch literal 2611 zcmb7F`%@EF6#i}qYzQkLDm0=JMdc-=zFJDGZJ{ExD3q6__O*m-SPi?&?u|m<{ga%r zQ0h#lzd6&t$?5dFyBiXD*gBc)?mhS3bH4MP*WdsA@h5;Q_|-r{;Iiu%bH3%3tXv@d z$0eyet0;rqtQO76z%Ba)IYZHH=}6yFu5TbI(E8ANY~@OpQ_M{-Ka>S!ph2MTb;@2* zBGBZ=%I{d7K+9C9u&nG-j)J^E!wuW9)lGrA-o8bFMa#GKIu<6?svQVioqC-E2eLt= zW-+2Bq)EW*4Sm_D@R^&7cpY;cB{x)l&+e*HUT%Vq_}HvmFU#P691A?x31nWAlfJc4 zke;$BFwiM*EF{KubCc7%J1Lwdi;lG>o6v=`2C@Pd^tmd~L!g*Ahwji#HDmcyprkKw zF>*7?fjQ;dPBGsXMKMf^Sk#0I=rM4S7yipwswji@4CVIvk9cu!#Djg#zrCG`w2-#S7VH6)Lg?b3?$Q+QvX zd(3irRQ7@GtYj+{mVIKY)vQ{T5m7y9jNk)ZMwj*1Mx0 zjl@>K>dJAvvWhlB7+;$B3SYCKFx=B+wY$k8if>ixD6Zt%V}$W7mJL_}*=qO;?i!0& zIx5J8oo{k_fep|^0SrS^!SyyH1Z+)1aZvU^i+rW<6=S+57=@_c2%HHI?Soh8M?C6B zJx8Et&(T9V0+TSsw-5Akf68D(>PeM`j)W_54FmPCoUTla|jWu13Q((AvKZv;R4om$uRR8;(BZUINGX zY~~4|4N0zA_&&~+8R~1r3AA&?3d37Go#A(qtCL!@=-{_O$@-pssLWt52*}JoI-<~`7xs!kX{o^kHxA3!pHU`TVB}>?WYg-`~doGuO zUE-m&u0Cx@TUNt0`tXQ*T-eeV24W1oJNBM!xwcobR`WZ&APsafOuWn02`3DlmFLdP ztj935a%@%bD}nEEPli^l;^wPf(dE`MsVzpYSu)Exo+B3+M#dZLwuN2cFMYAAvwq-v zlGkK*VvC`BsaD{DbbK!~@ZO0WTU))+XNW!Ui@Y1{=rz%W_Ziy9C$o2J=?AF z)oq5+@dkT+G}(!UPuh%JCU8xGN;3>Jn$-6vw&J+KkW|f)iJBu5^}{+3{i-PNP&pVi zF@|wE6FUgFS7exO<>^%Lda0ruCQVG?CPQ5MIx<85c#C{{kiiEAEQZu^x3oS#6EnC) zNx8niTMe2jas;m-sd|yR!0@371967)D~`vXR4aKdHtoF2)v5Re+ugE-qt^A0FBHZ}^nMH$i!)~x}Nx>?ffsi!JjOCZSBcA~!jW7M6OY=3 z5?doC);F?oe6FU2%4(q-Utrb1lLib8swUP{JR?xnt{2C8WXSE}LL8e6xl}6WI^J$- zeQ9Mr9m;)|hh@%XI#m{Ydp=#{+jiBJnL-$*Q<74hPe%n&Yw|!dXoNgSN4k6=B2h}6 z0~e_<8m`xJmfnlwYsw;Lm38EAR2F%^xKBR5qZUxb%aB<}qpTZ0;70?`PfmpWQ1Xfi z8+nEvD$$zo11{wL*&L|TA`T+)U@lmwCn&0(N3$)JvjR$jrc0OOZTlI8u7?I)*@S}~ zN^{#66Ux)P`eb>PHbRS|WF3|E>OwyEn$Rp`!U7;92} z8wF_c2(H_Xp_x^ujp~G;i@>iE-T@7+sq?7#>a6NVMK{n!G%_DLYLE=S?OM$!8(gC) z)K0$+`aumNdbZJf7rIII&?-hN6X)oyKw51i$0lFl{N&W1NId%${jYKH6;g@o2N*fP z#382J@HYm2$L(JtS9j=njzWOucMN?PML#~G)u48TyO^aFImJE9Q7DEiat)#9RcIEc z(4C}Jn@)Uui2H4rKEy+YxmYrm`0M~HB)-&QLyNDpc&f!S5{YkLj`y^a7k@RBqX?gfqG4elD@enF@S8wA3rDm6${)xQ9gu}79M@^+W@lhHBllWrS+ F`VYsFl7IjJ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/servletpages/package.html b/eclipse-build/org/rapla/servletpages/package.html new file mode 100644 index 0000000..73b469a --- /dev/null +++ b/eclipse-build/org/rapla/servletpages/package.html @@ -0,0 +1,5 @@ + +

Contains the default pages served by the rapla server servlet

+ + + diff --git a/eclipse-build/org/rapla/storage/AuthenticationStore.class b/eclipse-build/org/rapla/storage/AuthenticationStore.class new file mode 100644 index 0000000000000000000000000000000000000000..adbee1c398c0196b302961b3f87c0e34cf8664d6 GIT binary patch literal 620 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/ImportExportManager.class b/eclipse-build/org/rapla/storage/ImportExportManager.class new file mode 100644 index 0000000000000000000000000000000000000000..59bf2e08ed1142906dcb8ac732a70394e1f4471e GIT binary patch literal 480 zcmZut!A=4(5Pbva!is_`D(cO|1P;21SB)2fiOC8H817}Mo8q!1-9`B=W8%SsAK*tB zr(h&Tn{=l0Ix0i5H=L5^^uP2?LfjfJ0P+K5Q{Hx|Q@lWjA|42%Z2b)u zM|vrV;I`+XoMuWVse^sO@k;%@;h|63Jor89#!n*)8R?}N%ZBr6a6n-vXE3kx`Nt&4z8Unha*&AjV*^D!2jXKWMw=3MitIIC#F3#{%>O;T5 z9ILSpji38XP1Ct61}4c4>^A!wLA7iL{}QQDh19S`w{q5F*c3ZK-S81!Y!5>CP7t}9%O()I-DUxD@Xs1>49fW8{KNgt+Dfn;?bO=rF!lFojE{@FK* z({IE#X6RxzdPpAdF{WQnp974&uzkAoGa(b!6GT4;xCX{ zJjN3O(1j^H#Rx&jQjK}cQ@m#sFO0x13~ETIW-O2*faiEY?-22Gk(!`tW%T%;KSym= Ac>n+a literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/LocalCache$2.class b/eclipse-build/org/rapla/storage/LocalCache$2.class new file mode 100644 index 0000000000000000000000000000000000000000..17c2b2ba9efe0e55579afc73c976baaf5733c6a2 GIT binary patch literal 1041 zcmaJ=-*3`T6#fpdbzVn?Q_t)?5KLFJ5LPLzO<@sIH7XwF_LFoCSE6t{7 z38x{fo-EWfBnbNx8_VktJXgA5U=BmuG3`+Lg8j@R8HBQPI2H+uVb2ZkRYTz~m=hW5*v5{5XDAYut|x@BUYwa0Q&sbKIvS`hC`Qu}m{1TA zn$CiwaLrRE-q5$?TRZAsdNQ}W5e91xT+8tS+wHbw*z-CD_9IFwoZcJ9If&|GOYW|5 z=(^HxI3fsSfILr9oNowaGSN8kF2||2WzY&+~u)%?eW!*coM(r`2!hY|K7@rXdN4ivKWTikl7bRRc4psu^S<}J`R4uj_3b-=J?xs$7>b_Xw|zczxE+L^&-=n| zdR^|+dG}c48@;+W7;>M}kqLt#bHd+o+u?5C-tU}*s?K0`b_mO*}( zVWT;ZrAC>Lr7OcH44Z}dsl`JEqwe)Y0t_h&Caxr*BW)pp41-=!3F)SEMQb$Z2>%W5 zID%m*y3--|rSiu?L$$|Hp3C@`1k|b7jRc{ZTZQJoV$^0M#fFI+4Ec!w!VP68MR2M2 zfjD}mVy6pO#Z3#hu+9+ci?GonX$!^Kq9!&Ns&h(8Hx$0h9lI?DLq{}viu6bdKZz`I z7B+E*L??B-<#R2K|Z!*zvUcX$wpz(j>%eRAp9aaDk+fklpHM5h%4%VgB3(A;aZ z5=c^XfvhU|Dv~UfKfx+}!Qy$8bCvcuaC4j4PZIK1Q)x`2wq7 zvBq$LY-@YUd1UN-#_ctOw)cqXXP4dwnA%4e#u>qND9V+nR0}EW(-geI7G9%>gQ$h- zADVFsM2Ne{M{U(`k1UN)72GF`PS_j@WEq487NP${(L|QM^iz6Hlqjm9jBWZWDHwKO G1HS==v-`sU literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/LocalCache.class b/eclipse-build/org/rapla/storage/LocalCache.class new file mode 100644 index 0000000000000000000000000000000000000000..3b4efbf3b8652788c488334352a12a4dc5bdb72b GIT binary patch literal 12834 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/RaplaSecurityException.class b/eclipse-build/org/rapla/storage/RaplaSecurityException.class new file mode 100644 index 0000000000000000000000000000000000000000..0cbeabdf6d6df55b992c4d92e984cac1fb23237e GIT binary patch literal 766 zcmaKp%Q6E&6o&sZB17CSaY+!D4WUexEoI|UMWrl+>|3;G#U&(^p2^$wzH&Tlw!CVKkOTiLfF~%;(OJ_6c-M7~0cOY(-=%BCN|^c5n|7(mN_r zc9)P{E!~I*5riVD1!ZegRNG#w5K?>kQfAPD;X!0DKo}{hNS@U1E~GgV7ojAKmvoh{ z6nrt)Ni$`yRZJ+B+SdQixXpK2*|3iH%Y-n~>34Q*^rO3s6`k9(bITI??biz)sDskZ zvr#7~8MJG(g`RWh9Kn+fLZ+dIKQVIXMVfb?D-V6#Wex^- z9pug~_dMRy#q}2qJvTEWyk?qRcQ%hvuBTcljA5KB&SL_T%y6u1H`dfo)&jE%f3RjS so3L^T>xey_zh7M6ctQRrY?%dCny|%I>|4xF#P}%Y8S61{fk7S$pB1s5qyPW_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/ReferenceNotFoundException.class b/eclipse-build/org/rapla/storage/ReferenceNotFoundException.class new file mode 100644 index 0000000000000000000000000000000000000000..6a89cf095cd4540042ac59df887d28438b7bbf46 GIT binary patch literal 778 zcmaixTQe&`5Xb+$B1>@GPKe+LPlU2n=aur}Qbnaaxa56Ai)GEI*$Meto>Y180emQ> zCkaWplzo_~?(P2duXkTwpPm8yM=3-=STnXBS#_JJD0RlFI!8x*!IpK64~^S14Sl}b ztnsajjSi6^EOk3Bth(WQW3QtlPxz=KjHPU2l~mcL(s#PQL!bk~$hOg`Q`%Kk(%^pa z@DCBPo3W1F79qb}xl(s3N|dfg$IiyOzOhmzWVX#Y=g@~g!^mNXFj|Q)-d>ka>=q&NIK*5DLAHCzsaT`+=hA{ieNNo-pX% zU&vBDlx{tt+zaX~`)z3(J?GIyLcmQz?$|VJjrU@|`ohouY~3$_MUc43r$!O|$jTi` z6ktHI!orZ8!;;yOTp)M0y!wcdhgQv~oVixEAiXmflX$9Kg>g(sB=wlYUtxGw{yWyx zXV#ps=6_%nWJ;S=?6CI5)BA_z)wM^=eukAqV6g=&waY%l!j71<%D5TPCj1jnfQ2`b CGot_i literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/StorageOperator.class b/eclipse-build/org/rapla/storage/StorageOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..2fec35e8656587308a05a169c21d7a264cc0235c GIT binary patch literal 2297 zcmb_d-%}Jv5biPP$%%j$5;6WZCb?5_BPMD*M9GR(R!$%s@(`Ye-QgVFo4J~uBjL|V zr790T_y_n$S@~ve;nroj$^%p#v(r8Eb${JG-5)=_|3F0Zv|OPRjIL|b2@LNgJV>oJ zyd#44U|sDA!|_?6F-FsG`7RFZZmSXAi@ovqLWqp9JYFyU!BL6bDasL~O3g?9y`nR??e?l>_zH$f-q6cAcc ziIskLTbK>Lo#0BXr6ZnfawFY76ILRvly|qf{8uD;R%(@2=scqvL*hFIHviP-U9j!~ zad42)`TAimwn9hfj7-A;w1_>)Kj6L*J4U2$7*%7L4lRpV+Wn~gUT+Nz3uUF1A`O<^ z$6m8c^*R-%*(lRwml&Nz*w%zeWoo%XW*&{QF$$_eHyGVI(!UjLU+BJya{-!kMI)9} zye_(W7g^Y-Z;kMEl&@c$6{RwhBHlLU2y@&QT>D4Q~ss574gq>$0=QnW06-W3njLY4sGO5N!g&6U(x zX_7n?qe+)-RGKhCMb7ZcQHD#BiNf5Gojx8n*aSH!xHSdvbpgM2y%y-d9gRK+uxIrg z$!Qk%SqAd7$J?@_xa}L1iakE$g|gy_b(c#OwXq^@ z3zy!#V}=|>Fh|A{oJJ1YeRS^-N$F^_$LK2BX-OsQAArM?(Hk^(v4&=hPKcIv?PvyD z;h+bei?|94*JgPfX9MJQFNOoI-i307ekYGu7&f1uZMqJ7(fF2f1ekk2X!!4nqvGJD zpR_vWpkCXbB*QvoG@JHO0mi0Fc+$J#mBy^nZg!zVv~}M^;)QfGWhS$}KMU`=cZ}(S zj*l72=z<$Y_?o5DRKbtYICgVb-QReP{Y%wt#PEZa1t5}I{;b?=t^inrnXZ+Q# zuph(Kuf1dzUwO#|`UYx*<%IM(@!OupP_j`4?W*U^h*KlaTbXtE%*~pvUQQ3 T`u#In^6Rhe9PWnR+VlSa7m0+z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/StorageUpdateListener.class b/eclipse-build/org/rapla/storage/StorageUpdateListener.class new file mode 100644 index 0000000000000000000000000000000000000000..cc018662d7889ebccd99dba6647e7d5011a7650f GIT binary patch literal 304 zcmZvYK~KU!5QX1@Qbi#o-n@FSUfjehSK&lLQiAujj7@9ZZDzN~Z{xrZ;71v!Ee8|1 z>})dg-h6M4Kl=lK7mOnG6doOCnoU(2?So^JkzRFmU2RODMeYMx;s_TClfrC`E{)Cf z^1YxmD2!eE@!j-B;UQl9x9qwJ`MM0#r#FS0x^nS3A?s)amrRw@WsX3`2Eh+4uIod(J)Y+?&7u{rwLB*HH{1AaKR9^9fro z74$^ev1~nWB-Tqg-7yy48bv3BW`T=4`dd9w(2M!R>gJA-u zHw#7xtpb<)`1yiWG~@?nDXX}QVV6y-xW4#6Kr9KIpSOx-M=v@Vy-+b)$V~nd0&TXj zYrQqnhQo|0m9pZPg~VgMyuGZKW*Ct+^F`gM*v!6MA2I80)$pE4`Ngt0(=m;5wdyrv zYeDYq%_Nz-Rf^$)pLdD4rI!V|YoO+ATi;8WWrs)ZG}@m%JEW!{t1!U|1zXGsbk^4) z&|w=Tt89|wo~NilaMmoEPEw#L63qxS&s#Yoj3)GJ=)>U@I%%pIh?-b5KNl%#GGESoOGpBvTVo5RYN78HsTyG8BK0I|5wZ-|)FzU??!gOS(o5<2C$xtNeQL5RaHTAbY9-MEn?H_!Ni< zLQE3k`l%2Ci&!F%>yEG0oz_YbJt@VF22u#5PE8U&ndDZ(B+J!eUy+f#*dEI0)p&rF zzt9?sA7V|4*`%!Fig}mp@1dJhUE0OH?4GKaJ)W4))G5(TJ=YrodH3Z5WljPu5a=O+ z9-S5FIbL|z_Y>=p7eDb)MMp?3kNt_3v3I^-i0^L;shnGDKYJS#x&zCkutE#3(w9$Y zrKhB`rYK!?F{-ss;H5HB2d9~|Q~*+iHU$2`BiF3o zlJ2$cll`QF5wV tW=<+2gCNA^JF08oS-NHQ^S002ltEUN$j literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/UpdateResult$Add.class b/eclipse-build/org/rapla/storage/UpdateResult$Add.class new file mode 100644 index 0000000000000000000000000000000000000000..8c7c70ab379c5d5ecc7fbd21437b0152638a49d6 GIT binary patch literal 749 zcmaJ;ZEG4q5Ps&)czU_Um!xU>W@-?krt~0R69Pd96hxs-EJDAmy4VYsJK0;~-)f454@}ZiOF;XzX_f*K(*GWC_)E=f9sIp9(&ju|1Th`4MMm1ZLcd^OV zPw_bl_Dbbl6NN=g+<02ybh80Dv*dO z^`Rfok3t>q=AjLt>cfu5<2h%JkN4N@kDmbEVBd!)u%DPgWaLoED7A@^1B$*4`_j^9 zN=M4>HBY1-kdLCk>Z!btk>Y*S?w(T5`X~u(-$&3Ml94t}v_PddGKREen7~?Vmgk*7 zNz*txEhVa-C+}k&+YbV7>vsYFQ)zSrip``?6%?=%Un0m^x{ z8K8nift6OQ>3DS3CG%Bw6* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/UpdateResult$Remove.class b/eclipse-build/org/rapla/storage/UpdateResult$Remove.class new file mode 100644 index 0000000000000000000000000000000000000000..19cfc5214e5211ab06af8eb751372451f148e58b GIT binary patch literal 624 zcmaJ-O;5r=5Pe$;wY7pE_^k`-UNv4wNKA+%sN9#bVo7PqcHwtvqA~H{5Aa7B zr!5DS;9+O>?Y?>QW5qh~4CEN9%LF$goO;&Y?#P1WNP)E336q_zzRd5?FHgyI_?X3$NRpB8-*_Sdt7=koUHqR-wOC)1e&q%Qjw6c%qAjST2`5J|r@BN|?)N*h*O2*r6O-W7x$$ F%x@T{i+TV6 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/UpdateResult.class b/eclipse-build/org/rapla/storage/UpdateResult.class new file mode 100644 index 0000000000000000000000000000000000000000..84a24c7064bb25497540c23c4e47b8b2c0021d30 GIT binary patch literal 2421 zcmah~TUQ%Z7~O{iCWHx>NGVV*;ZlJFnqE*^LW>lkO-(?dQ1Mb7!Wf1Q6V}Y6tNs-I z1HS577DU!k-(1UI;G-}83zoXiOfpGXseRy_$vNL`?{9yHKmPgo7XUX=QqUwYRI-a{ zTRSqfwBwd+t*EEBj`lQH-_V`1=_&{dbRKBWwX~^O#q|2_fnIP0!evLd1^RL|cinOg z*U+8x7Oye_(bAD_YpzkU9EQkwG0LuCrgMhl^1fxkunhN}z`*2dqfBix)pBW1k0OMa zidM7>geIr96?6)`Rg1Y~+uGMMa1y$X_fCVh}~L}g^9g95`f2D7HA7d3O! zCC4i-3i^>`D1u>u%R#I}L9-^@#IByO%BC5`07fMC(F-{?UE8pV%+ZE%yshA>Kzof6 z$%cvvOp-AcdcoIkWM=9Uf!3f=l95`a6%&CNi!D6MYeyA^l%np+CJS7doT{Vgq5?W; zx1k@Fp6h-nvf4$5T8W#wn^AB>;A%}qjkq57qeR)vTPkMp4vS{&su)M>iC;D~$H`pG zLIu)cd7m1t7Ng+yn-lvUq=4Q_?6xO=M*+J(`i7cm?)wF8CH{&3FE#7Rktx|3+0jK6 z?_o(GVpL8AdS0O~u#RAvV-)1^D0o#vZCJqr1*`0EjsB{?iigN@&@BB0N4vY4qh7~R ze1N=y9H*!z5HF94H7T*E;bbkx)vSUpbA71dBWwsL`-&8`lVLS|L%k@z)luq|K$| z3Do2nI(AOb^%C)9>Lt2=;6)R9xW*CYI>5D`@8ux6F@(!J>G7S>i$4Bh7%!P%@P1sW zq$pHU^rwDD>ngzEB)FwZF3F~+Flb$R-OJpGtLlJQfX zr)cNrG-fIZ)7%9wnwg^edw%#BTD-#vFP`cfRN@I-gLIOF+@Q5|R+91S$GCaXJyqwf z1n%!Pa-VD9o^I%Vr;+=71NU1E-6_>d@qd!WW)`29Hyjd6c_TRr|ybzKCzdK3F2AJb|o87rX_!%TPDPt@kg?oHx z7x}e-RowRqo%M?ex|YW#9<$UamMOe#GM!-4o=}n@`p5Axdm8q7+JVqHdKIjkBdTD$ zkH>t)D=2@Wxs>DL8FnbwPcL9hrjGF$5%x~AenR{WPfzisz$psU8qYj%e^1wNje3Kz z%Jl){+t!0Dwf+dhe8gtC-$mZTBdcTD0MB9tPlTL&g(C3`kc)jHlX$>MA&MRad*_G{ fOE(P+9yj3t&$#!~Y@V1*&f^^SL+;nPTWI|cNVyA4 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbfile/FileOperator.class b/eclipse-build/org/rapla/storage/dbfile/FileOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..3293daa99026147e754dfaf3302307cdeea19f59 GIT binary patch literal 9991 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 +Serialization of the reservation-data in an XML file + + + diff --git a/eclipse-build/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.class b/eclipse-build/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.class new file mode 100644 index 0000000000000000000000000000000000000000..df6f97093bf0a9d3f6e84e4a5f861dbaff535eed GIT binary patch literal 3285 zcma)8>suRD9)3?U$s}RaN~IO6Ew!ye3LSgHmAF-ev|U`N4m~zryEH+4syO1R++RBs1sy&hP%d=bU`^^Os)( z*oXI2Lq4|6zLHa&xjgVxkkfl?KUz~+YG zm^7CQ14hLZNVqk9f!(==R^9!8QJgU*Z8IN+t2@sK#P75m%ReO0)|s0%77X1soM}Dp zdzLeu=^7VM2HcXFLKH0;R3rqh$yts$Qk|bPy@K>9(3*3LhCOb0mYmmwia%pj1P(UI z<~NIFUW#MP2d>v8#hgoQis=d5+9c;DRh$$^WzQDPvTwOgMa3q8je%Rs)rUq`R#aTi z7S|Uf2t!V}>a!Q7F`vR_w8+O64L9N@CP-;XAllhAB*oh_bYQzctZ2Iu5X#xSm_&7N z?Y)mu%i*j&%#qR81YzCOpq@G@ahD|uCLfukkrbGm*C>}whs^0&?W?}w z*7>THlaVe88jgdkO89Q5FA-=Gz6F26Nfi?U9gW(XH&Md__%oBTU3acpUQ=L`q-r%M z3EU|SF~nsyWKG^!FjW`=H~(tH75oz@l77;vr{WcZGp}S$8CBcgb9UaAu1yV75{V6k zY`$>%@Mvx@J9c`ce>j`Kj6gClk-CyUvl?2lQI2d4^Ki%{^3e4Bf>$NYmClo0<1HjZ zS;JrC233o$;}EwbDyXU;*>*KjHXYycEwiGR+S*;hB7{Y-VJ@a~dATUqfPtZR2s++j(Wf8k$w#vh@MiwwWl;Ec$yCkE?i$fCpq- zv##L@JV_+DJ%dX_U{jqJf#y(6PCrlMSryOl%x?IpuWEP>&$B`&*n+=gRtctyjj_=kX&9VrYI zCQkQ{jrEiCH$HF$JDK8Z8vccU3tTPF1GC>LjhXZA0?AV7yprja)|y2OYZy=9zdX=_ zP^FFq)2k5Bj_?MnbWC~fyxgRgW7r*%#BWFvzbOG+cNApEOS9Ou z))I!iTlI=&XwWWS^~=Bh&ti{c0=6@Dl>bo#f85r=lbZzzN|Kx%LWCb6p5A>4sZTkI zK;ttNNVn0Z16OgrDb&K%xP~+8V*{?G4>ArLxpp083TJK7tN4g9Q88hNB!0#g6`T1LKcQWS9}rtc z3sNeCik{#bEK-@+CYKo~zHW`G`Z5tou3KRooo4*(WdlMkqywf9`^(rr(JC(C;3xDR z@*ysxusyP9$rmB-d5-G1-yv~Fi6u$Bbovr9>GUH0cp3c@7cuY!?!AOu>+m8*7m;7W zi3q;I;OBU-!MIJd1)HyMC&!Rw`v%#X!$CwX^jd4P!0DCPapv$)jddB?Nv?m;I+;s{ zflIZ((_!GH`H5(E{v!TP=|2_7IIaI-ar7-~`#phQmsN)(O$YmAh_m}hfulqt$LBCkU<5Ws z@d%FLUB2HZ6=m-`!U}7hh~fg?3J7>P46gwe445$d!<~!%#|cIzz|XQa0)XKAG`xB>eTXjdqX0dI;lC^%?3d z?~Sjx8}T@BeI>&<=(R@-<{+608wDIWD5Atr@xoXPm-8{r)|w1eFPZRY#AT>)UNqG# zOd0O?Z1ay>X)`nC^GtkaErxO+RDR1aW7S&i-StbTGdQ^iUF|P}?I%k)5!zvf%l$^* z=!v)jqpLv?IDkdbpf_1S@sLoTutC|n?tH@j$odXNJF7P6PZP(48*3KIs1PDPPH;*Z jCaO5gwYrq`oIG#p%M?)mpaZe8>>Xa7s|gRmO3Dp(|}P71Xx(uId5J4u63|330XB-1pTcrH+; zo$Gy-HBz^=MzyJ8jXSm5Aj~r2Qg&reSwIz=gj!@ZIqYX%g4<4px~uHQSnAQm9a(nl zfLLbxIs9U+`K+*Yh7$ikdH?qds?Yo?!R6DC`@_YK~yM=z*9ac0hE>j7&Sm#yb8?@EC?_RtBi$;i9;M^$F08QRwaj KDB)Mu(bgAs9jDX) literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbrm/Connector.class b/eclipse-build/org/rapla/storage/dbrm/Connector.class new file mode 100644 index 0000000000000000000000000000000000000000..4d15fca58f6b66787b6a35e6b67bcc51e46e4c17 GIT binary patch literal 399 zcmZXQF;BxV5QX1`G=>7D(6S?@bioo6QpO6TN}x(qVt0cZr6hLbIKXdX;0N%d5EoIB zfyK7IdwzHKzP>*`0bJu;ARt^=mr19pLdn`&r!p;{*RGUvYm82r2!w?3R=p}&D3i(M zddr+3GVK>;V+qrEcHh@m-sL7s2!q-y$HKjM_Cy%ozNfnKxiz)GAz{-0=qiLTRYgI# ziT@k^lE&wSd{9-gYnfZQFjeEZt5#(qaPnu}R+gQ$z$xLf-*w|uso$)7k&o@}osLJ~ z7%HB3WgD03yS&hZQJ2P5J9b3iwKzl|> literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbrm/HTTPConnector.class b/eclipse-build/org/rapla/storage/dbrm/HTTPConnector.class new file mode 100644 index 0000000000000000000000000000000000000000..e645388d25fdd25bff896e325694b84269aa3876 GIT binary patch literal 6777 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 aH`1ePvN-*|5l)}US?kI;JyXsS%l-$9ap39z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbrm/RaplaStorePage.class b/eclipse-build/org/rapla/storage/dbrm/RaplaStorePage.class new file mode 100644 index 0000000000000000000000000000000000000000..6adf5d7881063c95086cb1b8afcdf64833c9008e GIT binary patch literal 1554 zcma)6+foxj5IqwTHiShqTqBBMfobB-U^=g6pdsd;s8R9v&XjS$t-)@t?hG-hJJ?OE0LYwiDHnUQ&x)Sg>O6MPTa*k4MSAP ziFtB?@$H}MLLRc%0BbS^{Yujb>Nnkjh*fMo{_YQlDB2U$i^^0n#eYiM^>dy zvKUgBmrXk(PYXJp;u*EK<$2sGF{G{ve2LCRNXq;LO@v`mdMPaFNF&1#6|Mrt(EFFM zCb(ooV>Fs6)P-=Jr12lO=s<#>m!tHZadWP01yWEkD0g+?gS`V7q_AiZ==~LR4hM}R#yLG?F*KPSy^jv(g zW~D=nfS9F!gkHQ5?exmf+Cg6??Tq%w^eJNB0<}(Sdm!vW7oBx=0k_aiU-bUr4mpVj zw?gPaU*PBzVX^{NXW|2ANQAHyPMzTa!%`#>iI1INA`$t4)W^7ain&Di1W)46X*t1S zpo%Z6?ImshUZ)hALqCd!E)`td14xi}%G)MQB3qP9qb zVcNkIQZ@|CI53f6FpBy@w(f`GdeCbL+2E}}Fy!lz$Ac!9zOKh$Qa8*{n(XO9g&H>G zAhfZ7B@>GbI}^?6U>O#J#XV0bRj4x9chNw4;@sD*&HeRvUmHs!oP}NxDL?F7iMSiJ z9c<|N93|vX$P4m)(5Lb;427%(Tq&WjO_mt+p)8lvzEGB+Wx^snO<9#{jo9VASK8j- zJdf^VH8wh7#Ct%FYKJ%)okgA^b&1Sa<%ps_v&t{9-!cDR)52s9_vy11LJ~}%m4rY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbrm/RemoteOperator$ServerStub.class b/eclipse-build/org/rapla/storage/dbrm/RemoteOperator$ServerStub.class new file mode 100644 index 0000000000000000000000000000000000000000..d01a819844e419532847ce64abf9f1f2ae169536 GIT binary patch literal 10384 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 Ca$Pb2 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbrm/RemoteOperator.class b/eclipse-build/org/rapla/storage/dbrm/RemoteOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..119c3cff3522113ac235be8e102cae550aa8598c GIT binary patch literal 15902 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/AllocationStorage.class b/eclipse-build/org/rapla/storage/dbsql/AllocationStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..6e775c607ae39a820e6a35b09094ea9c839a01b5 GIT binary patch literal 4616 zcmb7H`+F4C8GdKaZf27m5K|(oC3Y2%Y!=w66m25Z5EflrlCT?M163TdlVo5sv(8Qk zv9`8V+iELbt5~a6rDE|4Vjxf=z1cqfp}*CCp#Mc5Eq%}IW@jNwNS`OqX3m*&zRUZ) z-(~*s-?K9SZpGhJ1Qf(=XC&$9#e$wJxwfN^7|Hy;(nE!0SD|1J>8@#8x$?e>pn}y` zI-asz)19mwRnTy!X_@Y3UTDksSB4#Z%$Ts91Iet^*lk;`amekA4=89#9U3x-!3Zg60g-Eez<6Dc6QZUy(>ViAT;5aE)7Vv zl}(kg?sJTy?il%;tGmXSVY!_(lDITo(ku`?P(PrROd_zHt2ZI!p+nK3`rwIyf z)Nm74Qt61{rt@T5EvWMePODgb3EQfN^Y)l-TFI_r(Kant8XLhXtkKYhI3r9&S)*h) z2R-Uajq!TERHW1#?TjFSbt=}*tG4EXhV@7?wA5J16&Xo}ue~k4XC9q3hdrIQXiUc2 z6lkM*sq)SsR6FZJHS2vjIiRk>R{42Vg>;r<)xbt@JHD;r4h7d& zLpz5f8ahDwHIx`y%Vmt)(&_ksyt+xlW_(A%BIA%TH0~O^ih1%%foO}TnY1N$jK^2Z zM?Z@7teaGDb3G{MSWH6}>Ats;YYKHmYW5VYsVAxqRP@C-Nd5EQsG$P2Yq}p2a-eOY z44|F+rJerm`L))vNBZpFlRhtE1`i$Bp%=Y^qT*f^xq10qBThy}KgcjGI7tU&ir=T< zyV%8m<&A>j8ggs5hCSYvX)zNCW3XWBv~F2V$su~<1vh8N>L0;g=qes$Rjksj`d-66 z3{kwSATlJuwsf4;fp%_~hsrDshGXfhNak3vV5IYsPQ#|*G_qKXXc&b_QT>B`DFrvw zqlMR?`X`Gm&j)HZS%BC0fp;05repj%qq+j<7-nnG?c&Cbk48Z06YRkA; z$Qw==hZL;rw#N(km}R@MVbjXTYEmaQVY;I+GaqZhI3AW*e4kan)}?ZjWh~{1A87a? z9%alZ!mt?l6^z-O##qta8ODzlw8n;QC+3bCu?nL(2*f0M>exi?I5dltECV6Os%kN0qiLGW3R&+11`~H}JyKmkIt6GoiG9^h zRpSbAw~UD{e}{wm$wn5ZDGjG_hV7k$D9eIxHs^bbg^pBX9-gJos;c)X&7QuC-?ycRzVI5Xg~leS3$1A zXyQ{3*8%>&u07El37yBHLD76oZZOzIg=I)3}-KCKL@#qn!^8VxxKt zcSRdo)LT2k(NHujk9S*`^Ht_n!#ze4n8XE-?p_az-!!+(>dw*P2TGVL6 z%$pZyr0K#ly#tH+_%uS|Fe2g^EEUh9RXm54;(4@-7jTDo5uM^Cq{PeEA&y``yn_4r zepI~bxjI}nyy~inyU;~f=?u1@n@)zZMd5-EX6L|gEZf@B7^O?mvF?m zli@iP?YIp)2!5EW<>=*aBl;+D4T2Z35@8jJirZCe;J;NW5-N65;g?vZBKsfQ7@+!o zD)4a*6KRR>-Q1J$jI<}FFd%;h{U9!uWDu_riPzC2-lz#=r0QM7^GOEsd$_+w!E7M^ zO^+I>;EM!9^FRQb5)2;yZ*D(_{NPCpuQ-kUQyB9id<^S4LhVy{=p4oenW!L zY5vg^e$px*p5Vh2em0F?1aP8Chl-?UTW2L@I~quahG{$(AQiOo^NRtLAC3gjp+?o2 z;DhJMs&G^l(Xin941PlbsWZ`FP7>@b1vAm`%u!q`uSLVtct_wEmdKUhO>cdIz%G%W zXgFSB&vrBuv$qfyZ)1sg2W!N;h>PRs6YpWC_yD`bhp@y)cvyUl$HYk-7N6jVIEAC) zQ@k&xa8{hg-^DckCC+(x7s(N#SH=4aypIp4HH?3H912kX=lIZL(<<6fX46hQQF)5< z+wmiO%qZ-}BNc{O91$g(8gQ69CvcJsJHpSJPxut}c(o3pi;`R(ul6b&KXj;a^}sDd7q(8T=0;Hm4#K2h*y{wBK|U)B+36ubpd?-KWcCIDgXcg literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/AppointmentExceptionStorage.class b/eclipse-build/org/rapla/storage/dbsql/AppointmentExceptionStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..d473116a7b6e321ee5b71d0c173f7dcf9ebd2ee2 GIT binary patch literal 3660 zcma)8X>c278Gb&mue zb+wKiu5y(7zRG=+E8LI{W7lNp@QX4GP=<4uVTNH~hGX~x{4Fidw~|+iEqC%q+VA_` z^Ld~5{l1^R@PlUn9K=&PngkBH-b~7~N<}MG_Fd1Kk*UH|`O#wPc&X&tjz1?IKeL#Z zCEs?Pv5JI_h`{cR6f=%*`j_n_#LSnF{GVNJ&a>4a3rbdr94SeL9+ z(Q;-|W4>oQGcjxt*j%rW9f+Zgd!gdw!0}ur4h`)FqUaDfeFJF>u62}tc>R{j^`=4F zkwf!yQ_{;>Q$;DzHt6Q9;<)A6YF*uo__KCd;BXy)H(ac=fS#|wODyXwY)}G$=z?ea z3?-AO1g+RG;>nWb$-?-s#vT|9%NB>g z%MI+nPCA{DezqWxtcUld3}Ut=NS-3?z^gFz9GhmZasA00MU; zl8rK{+6V>Ht?0!*9eV|K*7&&AWhic7KT-ml=qt>Y1-vDZtP)|~w~MI(Vwu+Q3RXSD zCuh&evTx0m;y8rEI_@MHgTqk6z!BWVqSCe!7SIyO({UWY-HM@o?1jYXygy?7N{v`p+BpG8PyvlZ172Kq5Tw0IPTByd|ITjNBy&nhc-Ck>p!eau=e z%KW@9A1oD^U=UxHQI-8Uy6CFuuM3A%Z4My4EU>3hRaQw~;}^YIwLzr_B99Ri53E9=E|Ktn z;T^zXH7f5`1NtKdK8lY~*(wymxvR!*CDw3+2G`QZ1$r8^LMC{=47vVEciySD67e_- zuWR41**FH8@`M70mbfiE*7NweRR zRet8fh8tcJ)O%BP-a$2^Q^)K8wiJ&gcqyxNO#r=vR=sh659w%^mu|B^+GFEBj)-k=s|0 z*3cX6jIH1}KURk5Px~!SXure#+V3&Sy>r?hg4`adL>lIH9$B1bZj2uHV~|-zF@ZD0PD3lk zFpLpq*G`!SFv_!?NOL#G{P*B4JQ!fyM{DCaOEey$opxw1V4KjfOGoejuvy21=%tNU z|O%)NE43sT*K7FQz&#TV|ED_3Fgoh1!&I_+-oRLw9PMLp=$}RZF}Pq z-n4|buHYR_xVoegX#uHUIdlXr; zKO(063EkSCVQPQDG3~FoSNj`IX@AF{_76;I|HQ2JuK>bP>NDUFLK~mJCj+Zi09+HT zYXNW?A6PxrFB9AGDSVnhoZ^#Lff>Ohi}4wJmJlf5wnKZ7VQD%D-Z{P;bUg7qOal2l z62y`&K8Md&F;txI4p{Eekm`eEFWGmr=ll3V0MnNV6Bl14NNwNXkAjS7J&kYGh`(7W iYX2sY{)2?}-yl1)Vl2!q8PGyC*sf}J0^g%MBKd!C$=yEy literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/AppointmentStorage.class b/eclipse-build/org/rapla/storage/dbsql/AppointmentStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..2953ee27ee763f02316ab0563c8bf2f1a06429c5 GIT binary patch literal 5937 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 LHL1GPkbb`bZ>=-c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/CategoryStorage.class b/eclipse-build/org/rapla/storage/dbsql/CategoryStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..cbae985e0f348249f40579366f5894b827f8969e GIT binary patch literal 6456 zcma)A3w%@c75+|}XcQ^+); z34!a(a5S7)DVSf|Hn!OgGc;)Ij+wg}t&P^kq6uS9qPea|;PLP2HHH%5STwFd7tA~E ztn5I6V{NR@D8fWc(oiaxF*b)rgcCF?>%NXMOy-R4;3mIdc8*cmp;_mf-6*H$Yg@Yg zXKm~ZYM3f0wS13+qWz6s2{Rn+ccW5J5NLH{hM;IuOQ*l1`vUcImO#%;yhJWR5c74ou|P0z640I44?AEvMmKLe zwyCa1L#<%aSa8>e;sXq@2Q~02TYQ4T+Pa=12pV)a;nL7JZbG+d7@VMCv7l}&2qz?B z^tuG5%z$PO0@$G8>~X~3xP7P5o6ymQb}HPsC>e?nt@5-h z7R~G-&2?MV{u^~{!Z}n2_qX7t<5Rft7}M<5=3+{?OGh`(C7>MK!89RQkQ>_c$n@k~ zN~@hV>)3)I;pOB&A0wDcr>u8*APlIjx9K=f;iT-e6PSkg2&%`JeEcQU?icC^VSC2U z{(i%xP|^U0hC;mqMk5nvBo=KP<3%K<#x=HCUj(2JJ2cQ~OFkzxNk=~h1QWvXR%3gz z-yc;(rtg&MRt-Cuo!^O<;~! zk-c8W4R{|7B{MdvgHTYFms%MNo9hB<-urdjgqvvs=WS_k6D-X;%Q|r~lF2b54Wi=a z2XuT;L8VsOVC+>+d`QQK@e$jJ415*ioX7;h^7*4WZpX(2CB`13H<>Wb9qMDAv3L^T zff!E=5~7**?)lRZceezvmzq4e)WmhoSd8n=$~Qg>7J=>?0r< zBdemZMAeR1GTK)aj#k;*D_(v{$AcCx4bzN~7cRSt54{7F88@1J;%(?qSi>VM0BB&R z5hAd{EPc&rh=+D~a42E~`jo|V@0`gG`m88`9VD>oP-T z@^E5AdC^w(P8wI{vZ=XPW=oYOybI>Q#tvQP$~?~HwZOW$2r92kU(W1DHjW08w_5-iU{ zklZ|zl|?31j@@{8tjls;n&nJ}D%97PNgMB8m65g8vQn2-7P|(>E(@rF@EEto;Ylty zt!Oft*wo9=+{TRko~~HZ>^0Vf)pfGOI+J(-Tc`l$nI4EndEbhJhzm;rrv)^ssIWr5 zv?<_!UZeR5bwA~&i#=`>vB$$-4*n`e37>9es~X+r^*w?KWm8IBPoW}MST?OI=qQ`s z6?B%(>K4|zw> z+EL#yg7tU8@o@dqn7G_g>0oO|3Z2~3S^qeCnp~BR6t)Tri1XD?jr|v-&?~qTv()o` zgo9MiS1H;gL&T>9;h_}))itC!( z{2sxL%Zq&0mbVB}xU~>It?Mm;DeMwOt^=X9dDl?$~#&L&_Zu2kt)l zx(Z|211Ws50EPRwl#QiV`76ty$r&h?X5zVmSgyo$S&jL!hOePk@`a`!D`cI8&rj_x1eiyR7wiy6Ki2k880xC zElQHpy}nV5wkws5Aay5-N!}+(o&)s{WzDzcayDNmZQ$$1HcXQa%gic!g{+y=@eC$& zKNrpW8otgQQ~=zNBbcT!pbk8XZ>BBDmC*FL(J$sR|BmBB>9eR!QbZrJnmR+sh&9*H7ul2!6iYUFojma=#u1 zbHZV!hu>$LD&3UqA1b-}pOjWd@K>dqe|S~P|9sSnTEEEqDC#TS`*Ac_u8oSM#8HUN zzLXRR$vT_8%T%vrT6qy|vj+^L)b2`87*kd!;em9rwCG}9@8(<9bNQ;Y2lcXkbYM{!|VS%;{uip(FctvG@O8V(=f44sD}>xP{07c-AiZnBnb>MTeoyiziS zwachXwSVwkb4vJTxosF7g!~jHPpNCKPYFws4t_0E+0;t5%rOlIQSNORk<(O@v(m|? zVN76TThqTPolK!}26JjkRxo-;9~_Iy8kEwO-6)bh)aNCbDVH)Tm!VEB$0B(zn&nEY zmaEVzSEEC&VT7(@?zHOG^u`@M3*`Z0c!gQJp4S$DFrH@Ni_!+NUQbf WX9`gVTmkDCr<~;~;>%|1-~Ryv=A}RY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/DBOperator.class b/eclipse-build/org/rapla/storage/dbsql/DBOperator.class new file mode 100644 index 0000000000000000000000000000000000000000..c435387ee521ab978c63187eaef0376ae530b363 GIT binary patch literal 16147 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/DynamicTypeStorage.class b/eclipse-build/org/rapla/storage/dbsql/DynamicTypeStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..e8422977d7409fee3ecbad540eaba9de7feab6b2 GIT binary patch literal 1933 zcma)7+jiST6y0MfmXj!LV%ii!6WY>?Z>gG6t}d4nJ4KD-q?YT%@X)2$Q&&ZnjHJ-y zBlsA22!yrh;+anZ7H~#N6cxv5Uu2DRX77FWJ|q9}&#x~4+{TuI6hp!FdYWerY*X_C z*E4%u>u&qs*;-}KG5c1hxi{cO^g@BmkQ-Is5EzMShV)&_v4YPSuH|aSyPkMvpFelK zZ?$m8vg-tVHz?;@3=`Ge4j%-T>-Y-B8Lo`n6&Etd%WjvCL&X^dQ!n+yoxln#?rYts zm4I4Fwx!}MrU{_g-l#GxBs9i5-yMAv?Uw$mMC^*M3{mlH{)NIq~X-42# zPA`L5hLm2(;7x{%sC&FxZD%k??NzEPdR=eo>-7mpxTsRMBEHx z&pj(31=U=nRm|Lm#|NgzyGCFJyiX~V6G(9=M_L;ENmWF=N5iAw2E+N#2LWU}ti>ZT z0fxMa0*XZ1Y~q8Mg#`fzc+B^oQMxQkDTn((*QY7BQy z>@1w)_3dZ8Lnmz*OAvpq;tSj(rF@rnb^`ur(4`O*Yqc;!wUkYH=JRjxCLvY`Z3L>RNGqJ}l{k&HR=ky4K{Jg(PI zFhn4%tJuIpI<^DP?Qq`@?cEw}ulV+rhrP`wtT>w7-M$@t{Rp$c%`W#uQyxW5lW~$p zih=fs<2rQINuc5GcpbiCi32?qMosg7Q&i#-H6qdH9(1L-L>eh5w32C+!35oXO}{Dn zT__ZP!en+P{TtqBOWE^ATh3lE+GE+bjGyuLk5rMu0$tAtJn2s;(qEXD{>D4>Y&Jq5 zw#&34EL_36#317;t{pN8=Ie)?KhPVQ>XwRf=@;YBYWb;_Y9JK=JUrZ9tH2p8l%PHh#3Abc9lvIcaVo6K*63ZlsNKrwR#7vXe z72KzGWPAnv1eu%kPM9}SD5m%EV68v~mG)6j$Ozq#6)19sWQ>Q@m!eHE^$Z#?h*}}P On|MS-3@w69Ve>!cH2l*5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/EntityStorage.class b/eclipse-build/org/rapla/storage/dbsql/EntityStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..f854c6d5b143b3f6e125d897cc468d3193267930 GIT binary patch literal 11736 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/PermissionStorage.class b/eclipse-build/org/rapla/storage/dbsql/PermissionStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..d7563785bfde6415b2c72a4cce834083e37f739a GIT binary patch literal 5667 zcma)A33yc175?vgGxOd|UP2rQFbQbHg(QQ3L=$7`QWuK*zErGrt=4L-R;{fp{qLKVWUzc6^K##P=bm%! zIsbpoy*#+*_B#O_D{3?-0`-YxZ)4KzkC~0BbRuc?T8)uasdHkDORZ#IG?j`b;-SpE z28X~A`x6hu)6w+Ctf)YR8H*))%(S^GW-T%M1;(|VZLTvL2h!14BPW^!TyvxGX!=Bf znRRUit*et}pS3=bT-(?wooY$M)7FM`)2P+;-2$G#h90XwO$SpN$^@qES4mz_z|oS3 zSUM`Wd}*L_NiY-&cC>4#6sWZQi<$A>#!xyLjrZ#C3Y2vQLLJLGTLLSCtvV(MXv;!@ zPWxq|fWEM^W7$&sZL)yT+|m*Vg;ur&x&v)Gs=0beuzh87Yj<;dOF+jIInlhLFmW)w z2z51gcCBn}?xH{~H3r&S?KclpOf#V2FoDGf9H1iin@-Qftaz%v+YRQ>fD}X>JmDL$VwUvzfS1#+6ZT~YsVK$l!%*8x%iGCK?$W+wV)t_D}7Fjg~*`_j_gk}vV3mje|c4OoX%ts4BNP`QL zi2>5~kh=O(mRgvS-b8YvZ6IJ^0TwdnT(&G_B?W3quaY0_6+r`waZ1Jz)0<2adR$Vd z5Utd2OD-|cE+t*m9f(KdewG?I6`ca*oLUl%H%Hc)@g51@oCX{5ZHaiVt)a`nvb?yt zAuC>n&(*O%&{U5MQLQEfwN!=xT&OL z)!9}L^-QV@7I8B(+eFQBcRdCo;BI8nn|pe!RI1HdXT=26x_aWT7f}ss__p%drf$fpfsb$rMUq+uULg)*>xy z&;Sc(-D2tBa;!J70UKHExS_mWfyuc&Nyg>pNk+NmJOf{p{*_xBte%0iwX8ovn^c-g z_c0z*K8y4$nnk@t;K)*V920t$AWzatB?gi`mgKkyQcr)rrIAF_50FA!8|9BHN?IPn zAzF6!X2>(Ol&g8_aQg!`TYRO&Y_3oh(+_Y4~X|p7Y-g{2W^{)xl<{qb^t< z)bI;|g9-%U7pvDwdT=9tCDHtA+N2zj`CI%>!%f7cEu1@>7}$!N8DDaNNzb}v$23dT zY^5rm(r^nKONlUK@j+r*$+%g3tP1w^$2{1ELFv5?z1~c<55zJBBXSPoEEbu)M8B3 zck8&=jVrN3hW$AM&r9f4ux=I=c3INX^7~E$FXGQkJHHpVweiKa?5-wvvkiYS@N!;0 z&vBXhR}H*|*IA*n#oVs^cGt-Qci$2%tGwM9Y&YIA@Hf28Rzf#e3?x%?9^{(^St&hu z$H2Q%RQ5;qW@awQk-&sPInNW7Rk5=(CPV`UfI$M-@LBa2vTrGPv>|JT5$*hRkbh|6PUVY9re#M$3@ zA!*XEhXF5?pbSRl4@6@TE2*=cz-SG$1-b&Y3pzWN)OxU6C7tyD)Gl8X=nT{r z-GFN6*{+V0+IeM~!YaC79nuZ2A;yad1XDVZagG7r=aiOrS%`^-m?U_Mnv^{w%s10L zYl=?)0u9+cNca}TdW;8zCjk?(d;fx{yw{Z5wSf14qh(4^%lNCj0}K9m6SAMoF?1+! z^Uc989vB>5z*#9dx54i%uhj3rxUlLyC=_;h$A`jBZ&fJl@=gkcHLoue*1a{MaHY#T zl~2ukNN5O$Hq5vchi~P21xNB(A$2MDVwQ3rnw0x7opZGr{is7d-)IR9@Y|lvwS80Q z%?uos^~}Y;M`wIf9rV0{n^->MHXL(e!;C@9oN+g14`YtN9EUo~xkb$KIjWq;&T;u% z!{9}GjwT1K9O!behy%AAv~l2(gANYL;de|OMz;!|z8yZFemBmbp;_gAXH~g9 zzXgWhDYRjH!2zEpWwgAEt4M~R&B##kDgkQHvR{2=+u`-=zOq5A&a2dO;>LE2_gA`n zM&WBY-*cbc+fnVW)JCv2>~jyIZwRSjtW&WC6`U58XJ(9gY%$#y^NbeLb7KBsoGY+= zlT%bVeU3Y?+p|NaO|{c@1&(0acEG7T0FUw@s+5ONqdbgh$|LYAk7B0s80IODV}bGn zI+Q1|LU{^jDNn;voU)3v+^RYQC`B0%FEcQyn@@6S8~FxJ`}CW$Kn*_A_LPQ`G+e3SDh+Y_U$4ft2)$b0g(HMM!Cm92 z@$97=u6@^0vA_>;d=Wc5&L8 zk7Bne@H=hkSxzGE_kuC<`5c3|+k4*#?hoILKUO)1@X#P0^^+{rI?FXm?&*x&GgYpv z9JwXsG*Vp~#It@q^RDOCd3}x%^oFbS3y1KhLA*c)WhC6ACEOW_m&l%ByrQrs$mNX8-wO;{4WA?vboRHYDvP12;%FAI<5ee4R$VMI zI##M~tWiBUUo~)%T8_)q3S6m$KWbpoDHCt{~M39qY@@sV1My=sln z)hWWK9&G3F+)P$-c@)+72i{{Ib>YQ7iAM!fv76j@-)8rR_<$&;CpuK<_>Pm3^X9T;$-n~OYG~6N_ zgF+uK3_hm}ii$yT&~2h>6u#9%;Z&!gUOmi?OQz8@)lJq11wt@O{6FF9 F{{j3E<#qr7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/PreferenceStorage.class b/eclipse-build/org/rapla/storage/dbsql/PreferenceStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..46d356d410d850969369f344c92a060bc6b4f86f GIT binary patch literal 5041 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 EA5SGo(EtDd literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/RaplaDBException.class b/eclipse-build/org/rapla/storage/dbsql/RaplaDBException.class new file mode 100644 index 0000000000000000000000000000000000000000..4a2e85eaea9831750eb0c364fdc2345580e358de GIT binary patch literal 760 zcmaKp%T60H6o&sZ4VgATxiydmS|}?Bs3Ubt#iCp!P}BvN?496-fnf|D2l857A$8FQ z=tEWgoeU%jlv&vF@$b*y8UOkF>oKE!(MTtt=(Xq2}+TL1k2nsvqOqcKqZzoW~xL~Rtr}}&6s;TXX zY9?ARTQ@CUsdzEhd9mQm<4jPi53FDAaf^33-F2S##6(aT_B%PZ=FVS6MenxY-O7SD z?qP!s4N(Sp8V!T;MxTxL(Muj(6$H8~C>@)QZR!2kw_P56rO#d)pCB~i&qWnuC~^+D z3hv03j7RZ-*nq%~1O-_B2i^~w AhyVZp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/RaplaSQL.class b/eclipse-build/org/rapla/storage/dbsql/RaplaSQL.class new file mode 100644 index 0000000000000000000000000000000000000000..3b940621bf1c3fd786a1492d0cc4033e6682445e GIT binary patch literal 4558 zcma)9`+F4C8Gg@Z$t0VJ#7GQxmjIG%NVY|6F`?KbL`xeYCIJk!wv*jS7?|uVvy(s+ zytFFbTH2~8SZ%czdb1UUq${n`duuPY_CIL zZ5z3X^j%|z%#0^cE#1um-wmjjQ=Vm~2dskE&3CplF=4s_?E`XqBX495nrUufJGu0@ zYfPF)9rtkB_eu{aXSr;R5tm z4a)`Et{GMWE3sO`DuJbC4*P7QP|&dkYX!6k(;Fls0?S(4d@2>s!=7v9Cc5j8M2m)X z^D?ynT0n`8_1K`ucMebG1#WJ=a=YjWekQvmw3~HksL{|$?#m3$FNi+FGbbE(X4o&2 z1U4Zh`D+*0cn$e#+gFDUq&0L3Tvw)9GOXhx_$aerWU~TI(WrwE+YV^BMIg0UXggdEIF zE9Xs`IWJt)j}$9)z{;6}Qh;Cve_+#fjZNqDptOuB!*IwVC&qY<8BPqfZ?s&m17z_wrz4JOC@RL z)aRH{Fze8adv$yc_fdYV+_VpSMaMI9{IIwmn9P+u^;GCLZGqjj<6O0MVi zWDZAkxKeRzEkzZXmk_7`QU>W=U9)+ouFv)>}}C z0_zqn&j231>xVrfb9lFr4=TIXH7A{ESr;{USYXXg(>7IF4co4e+75hC$CvOZxh`1u zGZ~D2msGpQb)3W#0=i9=D@7-;s&!YO!{Mb_ddZAFg=aK8&6JljDn+v7q2tRkt2KGo zoVJ{)g3Qh-9bZ+fW@Vr}Qv2elasKEhn|0Lh;17+JN8g%@?4 zmU~zGoCxfw+$a&6DJYg_nT2qo7&6EErEP}oREuxm6%8-XE1Yme)>m?mN}lfVcmulCHPvv2DoK?(Nf}Ak1-z@{GJeVM zjeOqB@uu&nbkkokvIIe@Eq<-zH*#jG@f=?;6VOqV{Hp5W98;+_t|UZYi8PY?ZP#AR zDygM}aG3d%EVDne9v3SB-&bbtuR7kBnTr>UX&#!a6lHXK&b7np?z_X1w{N|A$BU;^ zW{?9R6^0{xjDsl$Qa&}x>5ZQn|2U8EO&y=&^wV)2AX@1ar{zLw4og#)&^S7WWf#$u zYHw_w#fl08b-?ifDB|67O#*i9s##!?Jo9roZBUcUVp!hQ_n zFh+0!dvOZ;@G32D;U4Vbij2Jo+7>?K=aomoPRBZbA)hQtVMxmduZn{um#iD#_v50x}3w_ z5KeCZXDv41IXutE+EKp{&N>ZG-N-FZSA_F&0H-sW3K{x>R21=o3SDI)68c)zZV#~C zj`Qdf9Pl0_gohZ=abEq8M8fV2!|n{iPSDHGLi3ej*E0(;>@zsa5M?Jvi|OC&`6aYj zZ{j5e`>Mb!&YeO0duW`vOW%m$JpB}|4=zC; zy@U&+jk9z38NJ`0#XGb3)f|5NZdiMrDws#ve2<|4kMo!9N&bd?0v(Hj#`!;Exr^ z_)kEF?UV6dMKU@olhGU@<1$_=;x7?C-oJJ}o+Tg8k&owz8DwFa{eoVfmlAQOtXJHdQlpp!V8S`!*)}F@*Bo*qc@~p6Ydvn9GV0@o z-B;h?I+ooRIW}>rrc)radnjrqT`OUyG!zM}%H=pNaMn;D*qG=sLzsmU9U4jn_RS>W znWZ!b0&{f~pirQ+)w0d@f&OmOIb?Ll$>F@#MAV3P8jdBu{l%agvr+=Jd6ZnggydR_ zdOQ+w-m!6zGhDNdu8h~tO2`~0AfZ1N!C^rK$|qr3V0P57r7C!Sbv{{RYq!7qxEXaL zHAjoE0xLCCQ8l@OOlGTN6;=!AeWsfgsz6nBO&+ST=cE`TA*{uE4eJD!PUT

8M7H zKtR&Fa_Y2|%bKH9unINI1f~q{LnNh^oiZJFXFM)2tGcFBL%qNPMXhYRjsvY(#Ys)v zsIygX7AS}s(b%|d%2Zp4qfzb?;AU*quw@LuiFP_}!L0(tq^~g%kCS|Mg20yPuzC_0 zaIJWK?i_;(M09M&4pQO46R517+*o#BA>$rtYZcfub-;`!CaO+`+o@w08a)9Vb}ZL) zniGyd^VI&lV&&B*!^%*jU#Fo(pdw?lYoNE+ zbj+TN)n42otq8H)=YfuV?=_tvwBt?<`vunIWH@y`Iu76$nGXlw)svAQcNCg!?4U`vn&H z8L8oWDCQ&v<>*l9G@)BZ6g`B%!h87&EM~KgpD5lQ1=Wj~hQ18Jc>~?E&|%>?r;D5L z#yqPvi8t1fO;(<%QOo{pXORzAT~2d*hHazYib{24xLr3hkx+aob;o4RRd{g5DTYJ0 zqZ3E^I$3b>KFK2ERceqCMM4OTHZ-7wJNkq+5O7+r_X|z9q>`4Bw zoJ@TOO{2$jRC_<5<3T*+4_vkUzw}!+!XtQ0!=nOa;}xOfaarjgneGqa5j?5mDLhSK z$4$G>jj0*hqTv~Vh2xLz8nEKbe>R?@+8Ygfy;~Je7(G=XoW>cc+84-lzH0p^gY1*j zcuB|0c!hzCWYV;$-MW0!DW{Vkl%$=8>W?#WT)m;=O}ypl-^0w-A9Gnv;J?LA4!Csl z4&Kx7F0YpBObTVI<9&RBFklhiOt~>maYWQ^8>6T$4)R7o)qGq!tpE||rKIhEZDC-%lB73v= zUKRY|<4FAmYd0GK%;8s%J0a-&FUJ21__w5XLtSNX1jV)CizqwKl>p|+b>-&^o;-(Q ze2H?dZSqcFJ{Isx+EienidCYb1=QLiRI0NjSd1l%0xZQcTFI!p=v`TDxP;|=j9oxk z8f(7hju*91dHYI5tMDxIqSa!9+7F|SdlF9}|8DdVH885gT~FSKdH1Eyo9pEw4h%RQ$zqZ5`<8WElA=d{Vzip4pJ<`Rz`6# zz(Sp3w516AOUDHogoYIw+BGz3ys`LoqKMXm7@9!EpFAriLn_i3ZVz8YX*i9C(|DpR zbQVh_(ovl5n)mDoo~Ol&X}mgu*RIs2@p_ox-##n}2`WM;I1(bM*vPk4Bum9|Y8Ci} z0Dq;ne&g;{?*5J)_yc=zO~Ln6*fIvbr<)dhNbLo9x)C4YW5VCzgAOXtB?$hF3Jsqu OY*jD?K4Y{1&i)7NZ@~co literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/ReservationStorage.class b/eclipse-build/org/rapla/storage/dbsql/ReservationStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..652e231d7f07b473a31c3bd13f3af0dc41951faf GIT binary patch literal 6177 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 U)iPfO zB|$(MtJ51}1a|s^M}gMxEulroZ0;qR0=;sj6ncoOp2VKO#l~{#^fSF$_oPO}3DulH zGbKZTN{5c8aBK6NjagsdtRGkE8-87!QTKX90)u|MF`+zUAtPTsIHKvWVDIHhl;xfr zzZ5MOsSdmyt-blFv0b`^?lQx){hP>T;T-||Ip+vS4rmt<*OIFUH8jv-)~;BcdkrQX b?4yYD0NsDnhg;au7IyrXvC;|q*3kO_ggR%{ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/UserGroupStorage.class b/eclipse-build/org/rapla/storage/dbsql/UserGroupStorage.class new file mode 100644 index 0000000000000000000000000000000000000000..7496e10d055e5794678497cf1b54dce8637a4d31 GIT binary patch literal 2961 zcmb7GYg1EK6kR9WkdRyzQM3qXYSAV{p;~J#5n3JrV-YX`EVV7YBnP}2l6Z4b==)*c zk3Z1Pw9d4(?R2KqI-qsx__=?g|DZpicAcA$WF#|@&WXIVhOF#DE>YO_Koi)v-tB0{HtnV2Re{>$ zX2!I8Xb>DOo6K6qyu6&XE_B9K!2WE;mWy^IG%4VVE+%EpHnW+$2Xz8_*R?8L6wvy! zDd~kSP#^Cd8}6N+NJQh)L-EmxF%LF#_q=h*=u8`#xz2=bnVC5+>IFQ`t=NDU4FdlD z-tp+rXnblqHsC`Iw(D@CQQ+i5;2wU^edO%gEtTAsVKXB~7UpN9HEztLr9i`QHff|M z4a-#P;-+SwGxGxN6^w0Mk_eMY7Dyyx6=v%YO~&%ZC58`GW+zqYOqnm$KQ3nrz$HmX-l=$remM8WoD=#n`cgdC4v1F2sa2S;J$2` zHep7C1wK{eF-ztQOQsUGVas`%M;^{wXi|X+>o|ae^gJi+Sn7We5c8l@U}ss4CE%(* z{5XUsJvc0|t3=TnpgNA=DbkQ<=nVOA2V=3&q#qr4TE{UwBTz?FPOGu{fnextwaogN z_FUFlig>`Xw^aeOs+Cgt6uNF5J$P1NlU$U^1zS$!QgkFx6AZ2b)5yvg6uCK{OUqbFm3r2c zRvk+V(QNP8l5>WlT5r?+%<)d)WHB-cSfMOO2VsBQW8w*keC(l8mW{cL8ZWIK~{~N zX{}ilv%vPUZc5x&)PG57##R7^S>_l75;}Jen zYDPa8gmul~4IOXdEvn1N#e5Sw6jKN=Tn+!V0NLi4LoHnJaHVnOg^#~RxOVY-M|-%z@BR~; zrfM3tB&M{6t%((EyUr6AcJR}uZfRekQTrM@)%}7M9zhdVYP}21^h&PK$}<&3McZAB zGsNF2j=w#;jDY%htn7TV0;zoixArZ3+SQ5x{!#!x_TzE7*APUgN`QZOqJj<`xP|tf z1NYF;rG>TD+jyb|P1vDS-9||i z(mqB}oyP^@+O*&qufp@F1Lo382JCQalhZqjsb)Ak?rl-@U^&6eQMb3ilizWeU--S6Ic{^Y+O zd<0-S{w=}7aC_0p#Voy)*JEY7Xz4j4mYpr1%*Uq7hNZa@37jE(HN`1$_`p)hsB1GQ zIjdMHHJ6dp)s6}u``UEl4E~*F!L+~3a7Vc9*qo)$8w*A2M9lHFr&zF!MLRw;!w^U= zW{i?;77Jwwy$rXtoUJ+4RAk_Lidmxv>(MWvk72NN#wggPZ5m}Ke+4%nNZJR|lSzhK z+5&2-HM5V)xRIinN=&8_N2j&ql!Ofo{m1oFdMvLOaxu-e%tB7aO$;7&RL0E=vd|k( zj3s4kq}60X(+*Bd(cUfO)Rk{$@Fm9*YD&g!43erPM#t3g0KC|uK*Aji$F2jYYe$}1 z8)W=}PSMbeggdW6gSE8`U@L}1h;k1Yq6&QQ2k32B!CipG-hH}){BH_M~OY$ca02yn9u-tf?23DgaPYe}=aV&=1kC1W2$pIV^S zwu$eX1<;!V7=6@ceC7awjQTr;(&r_;Ze4WZhH!-4k|b#0`+A@=As0L6+D0kNkW0CV(^1+w_?-%9XsW z8RDDRi}QF%!UYM__l*QO~3Cj>}Zjuqn(--G?R`SYF22>nT8d>8+cP# z`W}t#t{vI>I8#3f$3IZ;L;Q#uM6?<~xM~(PsOMV-^VuKU45?A(u!l z7${`FRPZYylS$?bB*(C#;CJ|tP$dih$Bd#o6t^gH>g;aS7Cn?rlpV4#>JwS;*`3VXefSK~ zbqwtARobFiK>?)TfVk%gGol3TjIUQf!Y8Y4POg|PS6Z=RWsJS1`0TH9ic25My97nC znE>$8y_V5`x@pj_m)`020S|g;#c36QLT^tyGGKQk`VQ6wKh^L55Cds%a8OJ0U`R{* zf}hsX{@`b{v=rQ=rRCtQ+A?mBtYB+8x{UC9h(sdqB2vY+x5=6ZpQYao?58t!ALVxkJIh8Yi{eB1j-*YGtjqCR)GhKv^!Y;Ic(Cxmio zgh%}$?#QDODV<_)7cwnqthtMRKdl}XJ|+GZxYspW!($8wMbcg;>FokeUV)FF!VP=@ zF}{cqzJz`JA}xSjv#rC{O*GHKZr?Ke+6myBrpj_B;-jTVE`Ulu`8t3vEvmx0`ceZLKnm@ z&`yBPor@AOFM6;m67^MaaXb>0=rO`0QCU2F(SE4` z#$|kWL=H(II`RFGG+f1xX~C=bDLu&OFGA9QzlvW+qV#)lq$gU#Zy8=kZzLp#da9^K zLge#<7RY<)PZ01kkolA7<4<9bKaEZN8EogzBF@iZKR<^F{v4+H^LUWIfDC^T$N70! z`~pt%mvDx^g0uXh1N@wuWfS;w_z1rz;AK34kMRdWrjI_Qe +Serialization of the reservation-data in a SQL-DBMS. + + diff --git a/eclipse-build/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.class b/eclipse-build/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.class new file mode 100644 index 0000000000000000000000000000000000000000..e7f3deb6f770eb5b06fbfe2613d2de8e99bca8e6 GIT binary patch literal 8034 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 IYvlf)0!0XNPXGV_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/dbsql/tests/SQLOperatorTest.class b/eclipse-build/org/rapla/storage/dbsql/tests/SQLOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..83f16ff395d98ddce4b70534e862726cfdab52d2 GIT binary patch literal 7612 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 QxK`l$3H0thyvP6hKdEa1)&Kwi literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/impl/EntityStore.class b/eclipse-build/org/rapla/storage/impl/EntityStore.class new file mode 100644 index 0000000000000000000000000000000000000000..7e68a161a9a62cb6070462388cb128c409b57df6 GIT binary patch literal 5355 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 cYTW{DLf~)M3a +Provides classes and interfaces for serialization and deserialization of the entities. + + + diff --git a/eclipse-build/org/rapla/storage/tests/AbstractOperatorTest.class b/eclipse-build/org/rapla/storage/tests/AbstractOperatorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..ee8705ae13cd32da17101e2e26ca3d23667b8e89 GIT binary patch literal 8427 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�xli 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/CategoryReader.class b/eclipse-build/org/rapla/storage/xml/CategoryReader.class new file mode 100644 index 0000000000000000000000000000000000000000..19ca6494f68b6abbbdd43b8b1225bfdb72bab26b GIT binary patch literal 6005 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/CategoryWriter.class b/eclipse-build/org/rapla/storage/xml/CategoryWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..415fef1fdc034cd45795b4132bb04f55eb749953 GIT binary patch literal 2673 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 E0n<#9RsaA1 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/DynAttReader.class b/eclipse-build/org/rapla/storage/xml/DynAttReader.class new file mode 100644 index 0000000000000000000000000000000000000000..098ecea667e56dfdabdb191efb82719a0a61bf78 GIT binary patch literal 3142 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/DynamicTypeWriter.class b/eclipse-build/org/rapla/storage/xml/DynamicTypeWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..beb8a7f344a095286bcdb0fe4f1b6be5b805e087 GIT binary patch literal 5729 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 XbT$^Z!BpDH47Qa?G(JL+A*KBfrI8u_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/Namespaces.class b/eclipse-build/org/rapla/storage/xml/Namespaces.class new file mode 100644 index 0000000000000000000000000000000000000000..dedd825bb79d57bd340d2847157f45d434670651 GIT binary patch literal 806 zcmaJ<+iuf95Ix&m?4*~pY3U6pr3ISu5Cd;qgk*(q5yq)vDXKxb9QEa{r>S2z!N+)FvqYPCj%?tqljCniW5E%*4Z$! zTs{=(hzBAykY`vvjuomwXro>U<=~r|r5e-}c|N+)Q0%IQXxc zOBpM!!dNm?T>C@QJF*+i6T98Ey9{f`$JbTEd=W&U4Ao19T`8H)N&N}1TF1pPQDf#LoFRyT zTy^4rM;)Go8c)fxmo?;ds83X`2B5B+TVxb4M{`ra7QID62BA5agv&E{p77!fULw3a zgI5TXE7H;k;Re>}yFut{77uWY3v70Cg$rzVb5+yp=Bu|nTBpRkCU%G@Oo=5;>=IF& v5-Xb6^Stl4_bqeyfYzNX`a1d8pl1^`a`6<~cuV=;lfQ%Pr1n(Hc87leqkg)P literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/PeriodReader.class b/eclipse-build/org/rapla/storage/xml/PeriodReader.class new file mode 100644 index 0000000000000000000000000000000000000000..42ef823f1e397886032489381e9bb27566bffadf GIT binary patch literal 3375 zcmbtW>2ljt7(F+!~&Ud7KT^az}&ctzba zs*a)iLB%tQQeP=M`i%7KiZv?@OL{3JwzQjEbti(LZYR)p#dhsrT;OzOdgInLeRetgnH;^kqF1sL*o?0Phi)y?aCXq z@}l(SjYUTa3`|!{!&xvqTkWI6L{PGQfm5;2wn{lCkTUCWGN>3}Q&f#y1a?-viYa}6 z%8_O11_HM-(~pcNhVB?{QJ)Ju+b!l^=tLDxwZJ!4bk^3h7i)p^S*{fJ3k=3z&rRHI z)}FApepYi~V>;C;R_G{hKi z`J`Q8X}%;qGG^lcx?JdoPHwv7y7Kjk#u2+9u&pSAdiMp!>pnUJ9E&%iO1Aw-Rqk~S z7x4z!$rNtT)utvjzzpV+DraDLfr=)l;R@bjG*!d%<)jf1$Qj*CfZYAaZ7r}JU76*S z)3-Ieg9(9tI-OHj3cM77Hw?4%nP*F-Ybnf>hN}wGN6eHu61b+JfcI%)SnP531q-fZ zLQ_@stA;6W&lc2lw*}7B95wRwnj|0Bp9v!f$m7AScp{+3X1htWt;tJW*ue^z%h!!+ zLu#1dWW}thsaL8)5v9l0PDkgQVI^A&8s;$1&P9?zWhl6Q;MGhegq(&BjcL!ge%E~s zcW{^eu!}C$n__pTWK%9wt;mwhgM6V-xBN)M1AIvGM_%(K!!t~dr>|l%G<>Yy4uq7M z@#K=d!W^rNO}(}>EGjoU{AIgZl~#TJ)SIFPsR)^F=%35pUV5Pnw#sQ)LkTuzot4cy zhVR=;p^OWh@5mWzmGrR9V6`gsxP4UaiUtQ|k|<0qRBV?+(F;#QRjJT+kDs~dTwrge z#cXIa6i}Z6e|K3 z;$9j9{~Q+z|E0n|qwI4++Zz0hhObl`cX2lJCEKyC8Ls6>Qh799^M(W~37eFTEE@{};x55mKhj){^Q4E* zzTuH|Z2yg`9_--%ba*;Q%n){RzrSvUUA#&C^%Q>Tze8VuH8OBu z4MV@+;po88a54V}j^A6y$;-*%q2y3v4QK8|3qFR25(8svIKPJ1xKX<|x$9lS}GkIg!l*M?g=F|gsO6$A+TA_+Z*NV z3$Nx+7~1eXF_aXpTFZ8p&Xl{<@W|*o?sbDxXWHNyMwlSHe|Y53;dMOhhNlue5C2Iw zJf*4)-x|Kz4Ng64gSXUfsT-Qo)rO8GKYDH*kGkQhRh|0fcEeD{B8++}q9ljc@wgj= zQq}=d`!(c%8nSj)P<>*Vt+sROv+n3;-O*okLsOh$==vbH^yKSq$x@G^WLq%bZ;7Gx Jk6|T#`VV5#_^to| literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/PeriodWriter.class b/eclipse-build/org/rapla/storage/xml/PeriodWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..1d44454204e54554658742bdd3f7876d2ff36e28 GIT binary patch literal 2249 zcma)7>sAw27~LmCa^Zjy(Y6YR0umU&J2P+L!Y28 z(BE}+rI#OF{oQxz8+5hZXL1`NuGK%2IcL7h{`UU9FMs~?+wTBo@iK;pz%|D$>8?>N z8@lH^u2C}e<4RfIFkQYa}^ZUkgL$@4#b-h(y0s?PKyn{;ueMQ4J^H#-NaomdG z3(SS!6r4)cv6;Zr4}GhwZ&EX(Y`s(kKRDqx--AI6$1o%?(pKekXcAX2A`mZ`{-$rZ z%$Z70W&@l-78Q9uiE9{(VN~FDJKq1tBQcKa)P6UpN=2k7>CPmLtYyP4>6<v%ce8}LeFULE9fu;aqBr4i{iI1=(&}I14Y2p;Tbxy;6lUs2t3!L$kxN$tBx2aeZ zSe5t$k2p+)vg4V{WwXLU0w%iBYE(t_BlWq&7xaKFR z8eF<;s5iGy5Ia18O)n0Eg@YLONqD>Kn_nf$;QET%T(q4X)aXd%??_bfEt_r6@N$7E zwcb`ddJ?|kQHHyLOVLu{LZjMD$QJJ9!YCZ98P&$RO>R1eZoyo!)I#nL|E1hifN_;+ zy7*rNMES-=jtF9nQyfXYE$}A7-)=4QGkSjHTLis)CWG5c^tp^ao-fv|a2DryqCNVN zV$7)OF@94~RrCv}$NhzQqrA&%KjE#+uedBw!_~FMX@ZV5XgMu)qXu2e)No5Z-qlif zX?suEE^4U$^ti87=i$4NpkY_A7iE$u06S%gXOyn)S3boN2)7#|RGboUo2mRfznJffy{wi(_6y@Zvw&@+iar literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/PreferenceReader.class b/eclipse-build/org/rapla/storage/xml/PreferenceReader.class new file mode 100644 index 0000000000000000000000000000000000000000..f879109dc31d8b72e8e183783c3e0c28a07868da GIT binary patch literal 5626 zcmb7I33n6M8NGuoOO}Vla#$Q7B`%9C8;bxT#ZF0VV-lyvc7!oFv?YTywgs{zX2xLX zl5Xijx1@V$)4ioz+7Mznfi_JyXwo%Z(YuqasC z+~PseUG5BH6|M_nHE}QLa5q)F0&5fmsbxT$q>5|isBi-jMibTs@k#|tN*bI!73;8` z3XaJY2ggX4W{(SlhYsrrtJCXMQDp;~RkR?gpyp;5m8D);_h8FN2yF@$wx_cREuEp0 zyR}>x4QN*p!zM~=xtyL!D%j{J?QzCY=mJYr8n9W#7P)@N$~v31P;jG)0BSITftk%uX2zeT))% zdq%gMRiXDD6~ov|Ht9#Fv@}ti!^HxR?+RfbaZYNM7D6b9yGV*sw2EL{T^$Nz6t9&a z)(dK{R}n&O2zN6osbn1vAsIwM!7}gdN|#rmgV`2h;=0vkPU01kryR^MZB3|1;V>&7 zgWAW;iTj4Mz@4~0)+-hEgi~|<0^u>^LM3L>DkhPklQc7+9~Vm_ZB=u2QwlcE3xo(2%4-yBnmEwK#_9Ada&(`$SmiuHpnvk`2S7 zL%j;F^JGzx2zIUypUCMfHwxaU;!SunO&GeFO&_DrJAHjFNqKPfiD(g+QM^UPThZr0 zJt*xggts%kbi_Cj!o6%bNAwfo!@E?x8}DIfC2<^;3U)YN_+V1mzUz{(_q{5@QZ(OB zqjoD0TOSl#_bC|qKlERfMai5GsrWEH!W-wNEYj0Bp-0Y*N<;np*t>TmT6mynJdt_j^UCSiXxE$dRiaXEWKE8PkPOH_3d;{GJRYR{i^Q#R_}Mlzc|@#O_g44 z=Cp*qH%?~O+Wp&sH*nN>R%@2UQoG{iQj%@okkL`Vb0ik-u{i9oAGBo1e>5*h?WzhCVvff2#Oh3g>R{N7!NU-T>`O>7y6wHBinr#RL<@46^EUV zs+d8ZS*sR?>KZ>7y=OV~unO_awtuSPX)&|VJd)!0m}CWEgOiI4>=wqVsXpE>#EDv#eF|8#Ks|91i1rYn0KOPso&HKiO~WCudFj$!cgnISTXH zz;jDbPdyR-O4!i?+_<)~GUr?)j?L@s3UGpX+T^ z%berbiC&6P5W8?2)hW0gef(GMv%^(d6K$Qr9VLBXTegMzq8?o}MO`&AncKShv72WL zt`3M+ht4{*}j(eZ}Q0_wTrb7Rs59Tuo!mMXVLE=p&eFtjXgIPvTe}_ng5Z zdzAwGMeA>~t#64&Dg2H+-Z_I)_WS!7%nuM#p6k==?7xRL(}vJE%!PcOD(fROGdWCw8z z4&zp2(T#f$gXm{=*sR8UK!m0u)VkwF)7wtrh4%f(o97h}F^OS+_?5eUi3^}Lz{k6Ag3CrVlAK+FHL;vV-Y!xmQt!v?}&*Su(J+bq6U zNt}JJOuU(XRntHy+PZ4>EPhl;o}KYZ@;|O5&(>KcKiB=AR1#-@Efb%E-OnpYvkAL+ zuX8CFh|c1fN+RsfJ|e%FPg!q-*it<{K3g8&KUS80zOwY6DoL~BdZg{zJeOO4t#ny7 SSwBAh^JQgt`rkG)|MNe5|AONH literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/PreferenceWriter.class b/eclipse-build/org/rapla/storage/xml/PreferenceWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..e7350d002bc85cac821551c022d92d97e93c0055 GIT binary patch literal 3049 zcmai0X>$}+6g@AQq$iVxz_5<&5FnW>Ba19aSYwbt7ED4|RJ1ec3>_xjV|RxnqNu2d zxZ!Txw<HFHsc!w zB?22PJC(4tOj=7gu4QW}JuyC#P8_lIA>G!^q<+jcT-{a>5~wb2+apgO@9gj`1uBm9 zwD-03bnZJM5bYS&&T5IYW~LIou5Fm9W`S@^GHsZKyIY{NrnX-o)M^dt3MvJb%rxIW zYNQ8sJAyf=QZQGbs$kKY)*MI0Jj@q}q;&U)mOR4?2rR0p4aChYH%G7lixeyrm|yUb z+f=a_O9T{p>C#5%V&OCwxzrHstTz z;`*A7f;NV1A~KWItOh>_Hfwgx%l{bu_6k8=g3F^c> zZ8!qKVD}O&rB>pMFv{%7k>y?GMu)Nj631g%gHbvq=dbiZOY{9)QOO` z11cVpN>VJUp-)T6wRRPUq?54Wv=4Th>4`8p2#hf(H@j4HgLPU);kQ#hTZ>-V1Aw!ktLUlEv&I=bB)#z}cUY3N_! zQ5BEjlz{3H*st3Tc@bDQ`%U^K0#B&W5N7yf+H$Dpl!Bzd&LZKb6Hl?|wy6bMrPDr= zNk=dMUBwVmY$CELU|K3Nc+v+`#-n7WHKNbE{=}h@0+#oHQD9E5%Tde`<&6ggpH3T?1yDa%u@g;< zV0rVAA_zptgXQItPd(CWjoL~5fFUors8C(L92#ZiU=0Z?A7SZpq^g32X*Je?jMa_4p`<9j^XyE?{zkwC}EJvfaDt&V#as7V& z4)NC}&+~4sNZayw-F0l4>0vdqS>t(F>|5ahY@;>pu^l_;B_sjKc`fI6v+q~@&K-qz zx9X;_OW-5ij7M9uXp3iYa1zz==;3%>7M)o+*{4!CC~g4W4_At|GVg=e@OyV>Op*#-~!bIaXqT| zPO}&_gsPVR8VdJtQ17+Z0a@SP%nL)=XhK8N6)CwvzO+htl`!7hBj zruZ@T;3`jE!#+%r{GWOLCfe`^hoz*mhr%GVc`|O{4ZKM*YM99tyhR!g;v(M0JA68d zVZ2MaN*P(hdw8G3T*Xqx`H55{ qxszt*=gX%ePM&sW@!3oT9b&470}86hCtZOr@Fg7!e8tcu`1*fNx*~}H literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaCalendarSettingsReader.class b/eclipse-build/org/rapla/storage/xml/RaplaCalendarSettingsReader.class new file mode 100644 index 0000000000000000000000000000000000000000..f5002502f52608ca621a4c84d26d3de85a4c8e5f GIT binary patch literal 5325 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 F?=LYwYd-)0 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaConfigurationWriter.class b/eclipse-build/org/rapla/storage/xml/RaplaConfigurationWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..6b14af30691bf8f20599389b1fdf74090a368ed6 GIT binary patch literal 4316 zcmbVP`F9i775<*Jj5K-aI-c06jEnWP!bI%(UCThYmhWb}ZV=}f1_67igEI*D{@ z$WAzxt-&j>@&Cvi>gg`*6!7m%q!P|9flYPYvl3&rIboen+b2pk9Ba~Ps~;55_e{pD zj53zh5ENK{SEhXu&g_gvU+n9BbGg2jwCICaCbUpCI?MBp}vcg zUS~X!71&w^?Op=VCQy-`Aht5OySO9}I<11%H*(yHIRYEX!(gSHgp;tcg(wuZFbEn} z3M@Zvo-(6}bhN9lm=4=1H(Qryl;;{ZCMyfkX-T%oXJ>iIyPa8 zhRp)27lB^dCsBub0U5U(H&wl)h`@@v`h_SI$_9x>G!eL&$yljTfu_aaE|4wyOi%`* z5?htYfRio+M2A3U!9C{49{lGX%0(&_Vdi5+-YAV_?Lnhj!lN@TkfoE3c+JFazUu`n0M5 zrcyz8Orl-6D`UxY)++j|p_401^sK~I^21^N1=ik`A4SSD+AjTO;<|k?fw{qSX)`yX zEJ|xqpkt{iDFJ6jD*GKXcB043xQ#+XH(7o+@)n#3GMK#*eb^^Zl_GbuB!$(V%Vg3v z>wdF~N_Ew&IT;0td;p^jKrt#X>PPm=FB7y=Q+pF z%o%w&fM>afR7qudXbs`B63^jtEZk8mmNac^2I7`QATEqX{bA+%^Aay8-!)=XzAKPl zka!6%(^S$*#hr1Nt1kL4NqiY!;bu1doYlt~niGu~pbKpU@HGKJ&;s9(_@-*UnmTI+ z%($BSw#0dShjvVdmGR)*9#En}mc^?ee^26q3TuFn2Ne)C`2&fI_#umolbz!{<83RY z&J!|viG||!r5{WDMAdGjv=eyu$B zxhJ2R`HjRSH4`pZG%N61iPw}a%@s(dRL=7f(`ru7q%);nqFIGAo2L&WXtOOX+IeRq zshUa~d98LAi+}kdrO%wP>O~hZr?O3%jF4Y85*%|7EtjR>y;XTXU9ZahGr!qhd zCyQ^FJ1U~3EVV8@M;hMLaD(CKPv`8IwKt)zy$>xsC<|BfW(6MW7@P>cy&ev zwBlC)I!C)WQ^B`C(lCwCC5|dk$*1nluA$6Y+{f>ggW4?njt9d6UHot|_fb zdo|mq()$lu^zz-)@HSTUM6SXZ4nH`Jhc07n9vkzBc&ydmVEFSm)2bQTbyOOfTK>d&bQu2dm^+HnhMUUIFqLYrO5=iw@VF98QJH$5 z8=|?-(_EnV4jTUJ2r20o&qFr?t-&eODkX;hb$pSE!(XLhBT&%Z8jKjhJiZ=j%Hvy& z;tIaYJm`jg1CLSP_o+8zgsxpc1EKuLvqMgyD$-zts$~n)a88P9$>oc8{^M%dO-tPO z$`n@d^|Oef=kZH-N;b)gsgc}pC|K0L|M2(x<}hj51XqGxdoui`1Zju_tN)#M#m_$T7{H%{Qc zNZ}UJqJp=A5VE2QIZ=aCqL$r%Jep(#7n}$ z%Pzy*rx=@I7)QLdl3`>JZ674Zq&SQ#c!Pef5C?D-Z_>xrXu|Jtjg_=tRO2lo^kG<3 z;tw48>BD>YBS#wlU%{XF3=sbX{F$R55g)-{IMRuEJFepfLShqYTz%55soki$jWrsM zYIsMiy9wCMuQ_{<};@1^)Iw+WwDe literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaEntityComparator.class b/eclipse-build/org/rapla/storage/xml/RaplaEntityComparator.class new file mode 100644 index 0000000000000000000000000000000000000000..e8edc525afd9135a3951f96178de7e207e89603b GIT binary patch literal 2002 zcma)6ZBHCk6n^gP%k0YlMJi>0wqOhFE(>E@Un(FKx3paaia@C-YKCQ4rd?)mb{6H6 zF`6`fs4@P78e?L@7mb$CCZ?Zi;*V0FJG+IA?5fGk&AI2EbMNz<``q)#pO1b6a1kG= zPy~iuuV{GYcF8o#zU!Gq%lLGwWGqO}wBy_UZqD7>Ha(MzD#8LM?wC8KQ8JyPadYjC zRq$0r1x^Ouif@;Uqj-Us>#bX!?Gy#tW{yH;&Fyi4=!EUq{-i)Cm0lJI=iGHGfe>0W z#F0?ZCeVJAbHgleGB1Hvw8SCsoCX!KI8LHd#q$C^M?@@%+qTL^&h)LK>+Nbdg)W}3 zv@$;}aAu}KXh3*rciS3Q(f#b;fMwp{CYG0gj$VoEG&f4+)5}SmMZbzZftDkbM5y5f zoFl32iZ5_ERi#~5ukqua^l?`l1CrRFK&AoO^VHAuQu zw!AooWkgnBph3jCyJgyrF;yzL1=BazO5AZ&#v20J2Jr>g*|3WhioAn<1vjnX8m?1a%oP}HfUJR*q;&Hd-oo2_k+$P6o23eQ@!93& zdz;lT7c6b^iOEMOptu)gRRdkuOINP&QWcNOeNE9;sj`-eCxd+kD?Y6-y8-Qvx_xVp zi?MQ%F)fR}S-8t*6x^bURe|1SC6$sFNG!S)uV7uXr4qV>a{aS$jY=ZuXV(bvkMM_V z9vl_gY&IN|fav6!Lhqx@KD5kZw65&q#II-%O=NyS`_Jfj41J~NOCk2rbAU4;+^+i1 zH}MZO@pJ2j`;0X4zu3fo>6rhgfYU1+MdwGo)W>$Mu)V@#Z@-wr>)?!(n^&xKPF%I7&66V6Q>34`IL0m$Q z{T|p1Pv|P`@ZRu4%w+ioIm#YUg&?^vkT=+dBRIz@oM#0F$aD}{43SBSHOL@`5zNBC zdu&y!xCEP-cged##-EVw=eU9|82L3LzrppOKC4ycwfe9IxQThzMOyFBQh4Hhp1w#N zN!-H{Em{B1aEq0X5W^0ZX+?=-1Gn)mRX9P<3auECfHxHViwDM42o<5=n^eK?{ovD8 S-X6MIlSz%oe!v6;AN~#LXX3&D literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaErrorHandler.class b/eclipse-build/org/rapla/storage/xml/RaplaErrorHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..468a8fd0e46bef7300d85f1a4b3886f901de30e3 GIT binary patch literal 1541 zcmb7DTTc@~6#iy=Sy+~f$ju8{5TqAjRTPCH-h%O=sIdn1acGBSVcBh_i}15FQHYx8 zn-BgPj3z#qsAskp3&j9wIy>jgeBb%bWxoFY@Cm?G+|i*ijQP^GBrmz#DhIygwy?I= zUF)gx%uDIZhukZ=Lh6VzbglAN+;X{RTaTAkMIq1;XBbcv3RLD>)?Q2t!?-%-C0lI6(2(;cQhmsWC=Fwcup|K5J{#M8KU?7 zqA(Car-?S0tzbA|q7?>1XU_4&qmA_?A)l$34Ba`uz}-bI9c5RY(O|_XGo(TlM<@_! zXcu7;l#T6pHp4{n7%3>#F`+8XFkAuFYMQ_M;t7{!F~3z1rNHsMth#K}&9aWO``SQ| z`Y}VRs3957hnoIRO~lJQ;BMGR27QxDkFwD*%+UX@|M@_Y_uhu%7KLoV2nBgwxjBVYV~P?u@_d>YP_<~!2fVPhz)RtX8JNMW4w{?6 z#s}2YY!kPXE`!RnAj)NWp=9L!4OtKm95ueZ;bT=erzBh&?g>?KB&fy_Xox|l9n|pC z8mB)!2=cVkZkEo~nUUT>N1DAu*Bi1lbko{FXkZsnd?V~GPLic?bQ?YBr7uGt`m0QH zgwn_tPiOY97@_w&srV5x^i^(E8I&HSi_vcYr|9f7aYV^F6Y86yonqB8pVb=bijxoc z*}$gN*)$B|9G%mcAB*kRA#8~Q*j7oW(l(lYi>@z7sLw|Xz3jfQL%z&5lH0hnjmz(G zO@k_Hq@k>Tpi>qjj5P!vt*0?sP2*;WVk49fJr!D2&!*|C;>IY%^lREQl!fUHe6c!T LtX`J6@c!+;SJ6`i literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaInput.class b/eclipse-build/org/rapla/storage/xml/RaplaInput.class new file mode 100644 index 0000000000000000000000000000000000000000..e7f89cdd135783b2473befe11f0684efc99761bf GIT binary patch literal 9580 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaMapWriter.class b/eclipse-build/org/rapla/storage/xml/RaplaMapWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..06b87ceeac597649b9cb78265cdb92ce043ec092 GIT binary patch literal 3042 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 K{y|Y8{PX_}_Q%!$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaXMLReader.class b/eclipse-build/org/rapla/storage/xml/RaplaXMLReader.class new file mode 100644 index 0000000000000000000000000000000000000000..dc760c4a3db49fc4c5edd4ff8d0861c85eef4eeb GIT binary patch literal 11759 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 TC`r{b^I`{me-Q;y!O#64q(mzb literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RaplaXMLWriter.class b/eclipse-build/org/rapla/storage/xml/RaplaXMLWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..7c062a18e3c10ee886f7433035fcdb403f0de32b GIT binary patch literal 9955 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/RemoveReader.class b/eclipse-build/org/rapla/storage/xml/RemoveReader.class new file mode 100644 index 0000000000000000000000000000000000000000..c5fa42cdb77da4c4d4010d9342307725ad9fc590 GIT binary patch literal 2550 zcma)6TUQ%Z7~Ll%3=KoMSRiQeQVWDY8*R1PrlJ_AMFUcx6s@;IavDa$B+i^v{1g5b zeUYUPKKkHqa=F|m6T*ZEQ&-l?%$)P>@3!~%{r&GBe*(CL?<^z)uGPJ2-jj`*%=^0T z$*Rg9AJy_(>Ztx)Z7Eq%o`s~q^$Y9_a&Ns9SPJytcU(s=3Cv_mXNYH>JW@Z_y~F&L zu`kwLt&VkJepev9dR$fw?bKc0!lkZ!&Y?Pn0?A^%qSEMtZ6k$#f#H(ls*UE+zVdeD zeoYCCmFi_#+m)VUzT1aMec<@4C6wAlMHd9Da*!vJ3IWb#by|zS<%U-;E8kzOsUziT zfk)ZW_wu>S*Q8s`Z)?wStA+n{Vj5>i@a1uSSrfS5)XHbOEKCSw!q?l&d!4=vAR~}+ zDxP{ah?jBI!Ycw3Ve2zzHm32az(7^$U0G|gVY5B5osXuQhQRAK-oQ1I?X^@QFxLYc zg&MkTmrC#(vaB9&tr?ag9TK=yGt_O+kmdXkJd;vuGM8x)(W5s438x}3w5?_Na9uW9 zgj-k?7&#w-QGKOX>gA@P$;gDdr|Uqlr@q_gY`W3eTQ+XsroeccV^X>1`r2!jjdG2} zZ5wZ!p1kB#U5*ho_vFAKYo=66Df_gzwift$&&E4=S75a5t9T$iS=P$)jh}lq-Z!^n zzLuWeB$v)H>uE5ex&FXL!Gsy|51mFsRaRZ?=%1Ka4+es8%QlwqAqVYLo-X@zw}*L@ zis(t;a@EGiD3Z)pj;#qWdhg2y*K0N&;1hvCkL#mzdnMabO?_Cm@hLtNm@Ly?D=KYGOD98FTe4G#?Sjq4E!So})zYXE7!E%7A5XMb+t1cSfwErB8ar(35(#9ZbN zmdRmbS$Z0z&v~AukmKn9 z#6Os{urRW0MwVz(@hq{Oit}d`_qV)rchiRV#BhlD)?L{g zX$l_5EnJ;G!JRlfXa7a`yK#6fhX}qq{rhonZi)!Jt9Kv8p}76aFtM$=J-Iqab3L4ibwCnqaVkixeG$*U~anlyBAk1 U$G=@{7v`%AF|_`s)roKa11<{!QUCw| literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/ReservationReader.class b/eclipse-build/org/rapla/storage/xml/ReservationReader.class new file mode 100644 index 0000000000000000000000000000000000000000..5ac146169059ff2adc48020b89f08a5538df78dc GIT binary patch literal 8869 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/TestWriter.class b/eclipse-build/org/rapla/storage/xml/TestWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..2adbf44829d587de143d92698ccbbba181fdb4b2 GIT binary patch literal 265 zcmYL^&1%9x6ot=CYo=A(3NGDoMMhXmsRe{CT!6`T%_>abi)I zALrb|cmGa5zW{o8RR{=eE2$Q<&5bUc6_c_)u5&%%!p$UeEDDc=#?tJK&dny((R|6V zBh(IMe5Ka=_ob3qJ=i4)3ori9`yW$6b$E<<>oU736rKsqYxgUh{=WdgTS@Xfl wN{>prThFhJ?M`C;%yK5Y-A%jYYDgeF_y+;<;uVCRm8TE^o>28v_Y~me3~Fmf(EtDd literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/TransformerFilter.class b/eclipse-build/org/rapla/storage/xml/TransformerFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..8642d3223b57ab0b4fc1503a5497abcc8e1e77ca GIT binary patch literal 2003 zcma)6Yf~Fl7=8{U*%Fpkpas$!sjUzKbZfm-38H`?Xt)T7;B}U83fnHb@$3fq3+jyb zv8_7J_{q9z%WgAP%biA9c+LCJ0vVEyE!~`w{;6Ut|JI1E8i&A;U%1pijncgbe z0?q!BDmC)A%x!`LrASb1JtvSDwj9eJ5x9~$7Tvcj5F2;bWfF~O)}cWcXw392H$mW} zjyMtmr}CB~XG>daQZ1QlwiIZ~y9Lu;HkB3J4<2LwrsWCr<^LxI3^iUfl}CH$GojKU z71K_!bvzB70__0_hUFU5bCECc-=I=(RRrsVl)rfR3XL#6ahOL=}0mvC9b!vg7} zbPMiQ(RFCpGfKW?8>5~lm9OIp9ud$S*PkufENO40E{1J78^+w)Em`n$VWlcBi@vg) z4JNLkmldy9@StCqUWKA0de9skSsnd2&AKtxDhdP9ppL6B1ayj`90ktS@*YV-=a2rk z^9AXZZ1Qj|a4zt;jwkS>Kr7iDcO9QBOqtHQEtSB<2UxC^=K>o~>3AALEHwj+^tx-q zdqAykIf-G6Xn01TyBUGb50zKOF~cS9fwMDU+Ne#_+s`ae>S+j-w9L zF@Z@Ifb>Lf0-a9%0OsIc_Mzz@jcI+2Rrvvo~ZmFOrl?uCL`3iiU8y5tD7 zEc#~Q_KaB!SC57jW>-D>Ro$=QHQK2bMwx4P<8YVM($6-mv;h}!5XC~U&pB`NR#DpA zg;#@;AMX;C~G#csB7i$$JBTli6K<`+q>o{Sb4C=gCm>J;d-nu^-?e zzI9a4Xhj=u)C;W&T5HE?%FggD!QT${2JMSk+R*s6oh{?+%s|`4ACcZe&+0BRvxEI* z^bHP_F|dbge7QapOT~zLtc)Ak@6j@tij|T34#Pw7RJ@GQp+qY28(LF|U(t0BO{v5$ z=-Q8-Iu4#X_V>`Wnu_n@h5h@C%izooa}*j8Ejw(%lfqPIBSK^`+?pdAIwVvc@$ zFwf7+WcJjR@Yx{=_++8eVVvgNzEi JNqhs|`UmhA88ZL? literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/UserReader.class b/eclipse-build/org/rapla/storage/xml/UserReader.class new file mode 100644 index 0000000000000000000000000000000000000000..bafef0f776887ec74e18891769abb2cd22769d91 GIT binary patch literal 4734 zcmbtYSy)`<8Ge5TmQZKia5el{IH=4g9Vn@MelQLnJGI@PG~ofsbS zDHZDTWK-BZv_!5muH{a%xwYYphY8P zQePX{8*j5RmU~cPSCDDSHfQxiS$ih#nb()4;(52HeL|sWU_PO9u9eL=VXRfSZpqFS zTxCK!)t61`CWNrwz#24#5v7MqjJ0fR!Un8g1BFcn!iY5SbftkUXjNEeCX;>BRytXB zyff%TP-?$U>y#;07im3T)(u%1eKbEisqJxdGOZP&L)nCxo-l1oJ{K?R-D%6Ar>mg4 z6ldZYPWV_YCtra~2~UM9a&|VM9cLh|XBlRNd)kIhn`g{;+RUWlW3FvwQa$hKM$nY3 zbIkd8uS>?sysI6$8OHSrTY}GHy(h}CiC`B^op#+^cihk6E+?C}6MBjqx+|ky|F#Kx z&>lvc!upl=8Hk~SnWX3PW|}x{3c7IjP?iy^=`q9WZbg4kj;@^QdS1Q3gZLnpRq# zM-1E}&k;Tk$Ylg$B(|L1G}WoPrb z2rM40Bs*y{W-uE@T48grx|WL1Kn7Xb&PYy}={(i%4k|36Td8pk=D_Ys$F35|{%9#D zcAx3$RMuWF;37|u#!rq6C|n)rPGwTBdyg;VbdP}Wkb!wD5I0*p+4LFO(_a<0C9X=- zg2_~@l?Xn>DxJ{_qT>-s-$xY={tqb|lvxBtM191-NAWQqze9q(!oI5b)xd~;@5Lt! zJdP(Qi1VT-Xh&7YOUN>5A~-AAQXZI&SoEZUPvbKjJV}3?=yKbBI4G~wd8A$|2TvuY z@9Cy`ig{zqkiv9wWnzk#8o;6RPbF@vKUo`M@QM1;Wv2r<`9PlQh zy!_I@IqBAh$LMV)8CM<(2F}a;ZMM0?7Vi~W+NxG-2rnC0#ILxVB}ngT?ieGc?dbBN zp>Rtuz~%d%_GRf;!PgVUt4z0G`d841xvv>`1;6H+5Y$p`u{GJ*BtrPT@W0OWMrV>0 z@Le+S2OJWzE4cxWc?;5AmMo0xWXSm2beAkfxR!k)#4iVR{NcXB-;lkPzt{1F%P(J= z`Kg|t3|zs}DV~LTYpi1t>te59!$}@CUO-DMb{;JSY(B@=I&9_dC~1MKDft=>!X0R( zzN>h%*_VKA*v?OsMVf1x_2t^bDS&{=Fv` z5x;=_qJDpCeE~OhHuOjY7~8dkHzAIP)6j zx*MLyCK2{<0Uz!T$6CV$Jl5UN+HeVm2yJaB;NzXqPkNHpdzf}~?iIg2CBTL}U>_x1 zKsy5zV~9Gj5nY5Z&QCYsChWrizwJ%nMx^-Z5!{TkTtUBtTk$mZ*(BCkIzhfN#z%jf{N&m!gyn_??m+VGN0SRJG5<_vD@q@_I zXYo0PQ0_j@6O)9er+8w5@$?0Jk?9b_8CvpXro>r(ExM1djd+6;DLl=)w-|8$be{`?>Bw1)Zs literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/UserWriter.class b/eclipse-build/org/rapla/storage/xml/UserWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..3c44b026960ca294e8244b61fb57ac65270171e2 GIT binary patch literal 3990 zcma)9TX+=Z8Gip{li6$rqbr975jUu0Gs&{WBBWWwVw&LEoFp+|pxDV~vKiQ&S!ZT} z(1WzKReL^a(H_KB>A9HNMQDrkgss#b?csTPRj+&9i$1pW{b!FM8`_I3GyigmU?@K zhl-K{&D%}O^mYi`8Xc-?%sP73IAS}8;=X*pZF$B~FVQtA5E?j|GIE}2Tdsl@fep)Q zRRjeB{q~FzLL*caO=uQq8!|0pB%hr&oC$q8V+e$Y?3A9F)E!g4mktBooaxd>O=$H~ zP6#x(*~OB}Bq7j}b4<&VcnRECo3>$jre_+ik7Z)2Yf`~#f$I)tQF zCluVih`5!Q%SGR9%nryJ&9`C;wyEgFTWOqGNCX$hUji+J1ny9Phd~Te*mQT!WKBy-jH(#M7_pCbO@*)<6AH!!uDz00D((ZDQ#q_>^2X?_ zq~6pr)!eJ%eoWD4Dr38BH1d?jC#AFfD&C0$Y!HUC%dzu0_Fg2~wXddXm6G)9o{_el z`9u)!B5=i4NJ}M2nQ0X%8FtWglQW}MWHQ8S^1y zURuhi$iiYjlw%&#JsRFz*Kj51Ww6Pqcu-=~=3_IEF|y2;5J?ufDm>%`uA!qbreQdS zl`@D>vaTyRUJ_mPkW1OtteMU`x*VeM8dHfD9KpPTqXIouvQ`jZR!_w-yqlz(xPNS5 zagSAW{W&r*pED8?v-hfaA08@VR=fxXZO+2Mx`|X(YqKf0ki2<(iOQYAE`C3Irm zXf@lSUm48@RXmIj6@g7!GmLr2IBaBmS|&p{jz?5HipMD6ve9b=0@0)#ipTL$6(7UL z*%$s$tU6(J>JwpEEK5`NlPW$XXSrHS1VSuFtU!Ccvib!lbxbRj$mCHLg}rUc@WL zJw0`3SkL*FxPm7Xd{y9vDj_PYEJw_MkI2oXIAbLzo>Or>RuUrHzxz0b>gC`QuQZqy zd{aQH<7B|UFh*=|(9T;kl^a~P^tV-f2j6ABZ0YfQ&Ty&$_3$#RV~l%)ykj%*vSc!w z%WwpqW(txUv0_O>SilPkzAq5{e~qa40SdIjP|CJ_@?JUV>(7+33fp@DFRC~zM`Bn` zDo#T-clo;<`=!B6ayzzN<1AEJi`*d2GZaVeivD`z%9>nI@e|n-t#ZF9&Bh>p#+!9} zM=TbR{C6YvY{Z*0BJRBF8QDlIwnJ+ELd8XYGx9xTtQOui9Nr21O2sR%5U{w#O2I#<_@lg@lsVlU;Tg9_ zlRqnqUAjn>gbt0{c_(EInsQHVlX(`qVv}@)4kp;h^&H%6*`a7g0~Edm_!dNnPdj+h zz<-;y?lWk8o=*)}!QYU7+CiNSxQ6emi&ALAwS1#Iu0xnsxPoFOze%go`l_N`@lX0_ z=Gp67cufKAT6Y0A%AXD`d`tIPY!oP9uasE_sZ7-_V9h5z)0iPz$x^`Rt0YBYtq6GNY4f6ClJ=c zGg^C70kf1pg*Gj0^7RZ371iyB17cMmcK+n$m;HDOaQXu6fr|`p0f!5C&jlRsYie(z zu@4mR;r6EXKmi}|Q~QL(tkK8J!8$%~WZs=F4_UBNhh$fpKA{|Hkhe>L3p(UZCK zYT+Lj@RAn(X#qc%-WTw40lyqNh3ho(@z)$n=p<2|<;(8{p1k}IU!jIE8`v$tJ~C!M z(^b literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/WrongVersionException.class b/eclipse-build/org/rapla/storage/xml/WrongVersionException.class new file mode 100644 index 0000000000000000000000000000000000000000..5a1f0fc3bc0ea5c2b9cb1ad81adb5dc90afca994 GIT binary patch literal 754 zcmb7C-%k@k5dNmLT&)L%axG914@H4Ca*3}PA3#ksjW1{ok4w8b*Brae-j?uZVZx6@ z68`}IDC6Aq0*U3td)S-VnfbnNX7=}=pT7XS!j^{;p=)d$SusjPlsaQYETglNB>HNN zj{DN4%IJ4z137YRcqkK=zKc^4B|^v1ZGfMGL*K824N-d zBP?Wvw}QhO>Ii)Jn9Hn|k7cYdtr(4@9ui*OM?0mYVA{(d+CCm(jZk%F(gh*d-kB=l z+!+K9KzQP#hKGcDPigsSd~z)9XK|d!Y$9gBqZB+)_KVB1`=(MB*87ir@gQrlbVc{< z9GbBm$oDE^Y2Ulz-E5i&S>FsVs)RNwm}Sq)y(*t9I=3ks9!KWc>!ZxMK)Z8;`cY%? z8cW?PG_SCFjmMqtCDwoBH6fq#IdXsiO{}7Y4Zdqls__)h*khcWg`W^Mu~u+I{3ni8 cIu}?!XQRY2k&6QZWib9Ep@1Pg&$C|q1tw^%+5i9m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/convert0_4to0_5.xsl b/eclipse-build/org/rapla/storage/xml/convert0_4to0_5.xsl new file mode 100644 index 0000000..9a6d3de --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/convert0_4to0_5.xsl @@ -0,0 +1,232 @@ + + + + + + + 0.5 + + + + + + + + default resource + Standard Ressource + + {name} + + + name + Name + + + + + + + person + Person + + {surname} {forename} + + + + title + Titel + + + + + surname + Nachname + + + + forename + Vorname + + + + + + + default reservation + Standard Reservierung + + {name} + + + eventname + Veranstaltungsname + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {surname} {forename} + + + title + Titel + + + + surname + Nachname + + + + forename + Vorname + + + + + + + {name} + + + name + Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/storage/xml/convert0_5to0_6.xsl b/eclipse-build/org/rapla/storage/xml/convert0_5to0_6.xsl new file mode 100644 index 0000000..069ba31 --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/convert0_5to0_6.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + allocate + + + + + \ No newline at end of file diff --git a/eclipse-build/org/rapla/storage/xml/convert0_6to0_7.xsl b/eclipse-build/org/rapla/storage/xml/convert0_6to0_7.xsl new file mode 100644 index 0000000..b0d8d30 --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/convert0_6to0_7.xsl @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Benutzergruppen + user-groups + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/org/rapla/storage/xml/convert0_7to0_8.xsl b/eclipse-build/org/rapla/storage/xml/convert0_7to0_8.xsl new file mode 100644 index 0000000..8338856 --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/convert0_7to0_8.xsl @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Benutzergruppen + user-groups + + + + + + + + + diff --git a/eclipse-build/org/rapla/storage/xml/convert0_8to0_9.xsl b/eclipse-build/org/rapla/storage/xml/convert0_8to0_9.xsl new file mode 100644 index 0000000..bde9fad --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/convert0_8to0_9.xsl @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + register resources + Ressourcen eintragen + Enregistrer des ressources + + + + + modify preferences + Einstellungen bearbeiten + Modifier la préférence + + + + + + + + diff --git a/eclipse-build/org/rapla/storage/xml/convert0_9to1_0.xsl b/eclipse-build/org/rapla/storage/xml/convert0_9to1_0.xsl new file mode 100644 index 0000000..a868bd6 --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/convert0_9to1_0.xsl @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/org/rapla/storage/xml/rapla.rng b/eclipse-build/org/rapla/storage/xml/rapla.rng new file mode 100644 index 0000000..af3982d --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/rapla.rng @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/org/rapla/storage/xml/relax.rng b/eclipse-build/org/rapla/storage/xml/relax.rng new file mode 100644 index 0000000..220d29a --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/relax.rng @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +choice +interleave + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/org/rapla/storage/xml/tests/ConverterTest.class b/eclipse-build/org/rapla/storage/xml/tests/ConverterTest.class new file mode 100644 index 0000000000000000000000000000000000000000..c4715e0ce2934e54101c4b1d73c62e6a231feb71 GIT binary patch literal 874 zcmaiy&2G~`6ot$@ElJZBXbR!ic0`PjSOrx=QHv@?EGTrtYMM;VAjb}#N!8b4 zLxDvffQLfdaicnj3S@cY`!nA?b38wP{kQ<|9HD~>Ly+Zhl=ErABc-#P$09nLB#{~PwOniQv5Th~7Mm#yI6~)3B6J3gBN- z7-~xB_fv+dZ)CZ9XCpDyGE0?%b%tiSwzWT!S(l7FEed{~%4WT~Z4(KwrMnMMoEeWUV`hsSur;Blqs3haHJ@q{Qf|KOl- z?J%3=Be5@w-}c8n=@|pjAx4$%8EB<#uxWKD+C_yPzz)0TSo%U=6}YszMYc(u>!?$_ zaoGhAHz=ZhtYDQG7TI`{Y7NR+6gLZMmm+4~5@-ejTLsL!EY4wcMXy1;CaBrb3L6{e l*s6tJar--V7%slyVToNSPPI*X+N5-60pGg9`-G_=_zhHa!czbM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/storage/xml/tests/version-0.5.xml b/eclipse-build/org/rapla/storage/xml/tests/version-0.5.xml new file mode 100644 index 0000000..2524dcd --- /dev/null +++ b/eclipse-build/org/rapla/storage/xml/tests/version-0.5.xml @@ -0,0 +1,348 @@ + + + + Kategorien + categories + + Verwaltungseinheit + Administrative entity + + Paedagogik + + + MathNat + + Informatik + + Abteilung 3 + + + + + + Veranstaltungen + + Studienabschnitt + + Grundstudium + + + Hauptstudium + + + + Bereich + + Theoretisch + + + Praktisch + + + Theo/Prak + + + + + Raum + + Raumtyp + + Hörsaal + + + Seminarraum + + + + + Gebäude + Building + + Komplex + + AVZ III + + + Hauptgebäude + + + + + + + + + Raum + room + + {name} + + + Name + name + + + + Plätze + seats + + + + Sonstiges + misc. + + + + Tafel + blackboard + + + + + gehört zu + belongs to + + + + + + + + Raumtyp + + + + + + + + + + + + Dozent + lecturer + + {surname}, {forename} + + + Titel + title + + + + Nachname + surname + + + + Vorname + forename + + + + email + email + + + + + arbeitet für + works for + + + + + + + + + + + + + Vorlesungen + lecture + + {name} + + + Name + name + + + + Studiengang/Institut + + + + + + + Studienabschnitt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + category[key='hoersaal'] + + + + + + + + + + + + + + + + + category[key='grundstudium'] + + + + + + + + + + + + + + + + + A207 + 80 + Baemer + Doppeltafel + category[key='MathNat']/category[key='Informatik']/category[key='a3'] + category[key='hoersaal'] + + + + + H A + 220 + Overheadprojektor + Doppeltafel + category[key='MathNat'] + category[key='hoersaal'] + + + + + + + + + + + + + + + + + Dipl. IDB (*) + category[key='MathNat']/category[key='Informatik']/category[key='a3'] + category[key='haupstudium'] + + + + + + + + + + + + + + + + + + Online-Algorithmen + category[key='MathNat']/category[key='Informatik']/category[key='a3'] + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/test.xconf b/eclipse-build/test.xconf new file mode 100644 index 0000000..34586b0 --- /dev/null +++ b/eclipse-build/test.xconf @@ -0,0 +1,109 @@ + + + + + DE + + de + en + + 8-18 + 1,7 + + + + + + + local-facade + + + + file + + + + sql + + + + xxx + + + + file + homer + duffs + + + + file + + + + sql + + + + remote + + + + remote-2 + + + + web + + + + utf-8 + test.xml + + + + + org.hsqldb.jdbcDriver + jdbc:hsqldb:${context-root}/rapla-hsqldb + sa + + true + + + + + + + + + file + sql + + + + http://localhost:8051/ + + + + http://localhost:8051/ + + + + http://localhost:8051/ + + + + + + diff --git a/eclipse-build/test.xlog b/eclipse-build/test.xlog new file mode 100644 index 0000000..dd12cea --- /dev/null +++ b/eclipse-build/test.xlog @@ -0,0 +1,74 @@ + + + + + + + + + + + + System.out + + %7.7{priority} %1.13{time:HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + + + ${context-root}/testing.log + + %5.5{priority} %17.17{time:dd/MM HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + true + + 1m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-build/testdefault.xml b/eclipse-build/testdefault.xml new file mode 100644 index 0000000..120bf75 --- /dev/null +++ b/eclipse-build/testdefault.xml @@ -0,0 +1,256 @@ + + + + + Abteilung + department + + channel-6 + + + elementary-springfield + + + springfield powerplant + + + test department + + + + Benutzergruppen + user-groups + + my-group + + + Ressourcen eintragen + register resources + Enregistrer des ressources + + + Einstellungen bearbeiten + modify preferences + Modifier la préférence + + + + + + + + Raum + room + + resource + {name} + + + Name + name + + + + Anzahl der Plätze + number of seats + + + + gehört zu + belongs to + + category[key='department'] + + + + + + + Dozent + lecturer + + person + {surname} {forename} + + + Titel + title + + + + Nachname + surname + + + + Vorname + forename + + + + + + + + Veranstaltung + event + + reservation + {name} + + + Name + name + + + + gehört zu + belongs to + + category[key='department'] + + + Beschreibung + description + + 5 + additional-view + + + + + + + + + + + + + + + + + + + + + + + + org.rapla.MockMailer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + erwin + 10 + category[key='elementary-springfield'] + + + + + + Room A66 + 30 + category[key='springfield-powerplant'] + + + + + + Mr. + Burns + Monty + + + + + + Simpson + Homer + + + + + + + + + + + + + + + + bowling + with all my friends + + + + + + + + + + + + + Reservation 2 + + + + + + + + + + + + power planting + new demands for energy + + + + + + + + + + + + + + diff --git a/generated-src/META-INF/rapla-plugin.list b/generated-src/META-INF/rapla-plugin.list new file mode 100644 index 0000000..0250fb2 --- /dev/null +++ b/generated-src/META-INF/rapla-plugin.list @@ -0,0 +1,16 @@ +org.rapla.plugin.weekview.WeekViewPlugin +org.rapla.plugin.tableview.TableViewPlugin +org.rapla.plugin.periodwizard.PeriodWizardPlugin +org.rapla.plugin.periodview.PeriodViewPlugin +org.rapla.plugin.periodcopy.PeriodCopyPlugin +org.rapla.plugin.occupationview.OccupationPlugin +org.rapla.plugin.notification.NotificationPlugin +org.rapla.plugin.monthview.MonthViewPlugin +org.rapla.plugin.mail.MailPlugin +org.rapla.plugin.jndi.JNDIPlugin +org.rapla.plugin.importusers.ImportUsersPlugin +org.rapla.plugin.export2ical.Export2iCalPlugin +org.rapla.plugin.compactweekview.CompactWeekViewPlugin +org.rapla.plugin.autoexport.AutoExportPlugin +org.rapla.plugin.archiver.ArchiverPlugin +org.rapla.plugin.appointmentmarker.AppointmentMarkerPlugin diff --git a/generated-src/org/rapla/MyResources.java b/generated-src/org/rapla/MyResources.java new file mode 100644 index 0000000..610b90f --- /dev/null +++ b/generated-src/org/rapla/MyResources.java @@ -0,0 +1,17 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class MyResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "rapla.welcome","Hello {0}, enjoy yourself!"} + , { "{$i18nbundle_parent$}","org.rapla.RaplaResources"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources.java b/generated-src/org/rapla/RaplaResources.java new file mode 100644 index 0000000..0cd0ec7 --- /dev/null +++ b/generated-src/org/rapla/RaplaResources.java @@ -0,0 +1,501 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Abort"} + , { "add","Add"} + , { "additional-view","Additional Information"} + , { "admin","Administrator"} + , { "admin.login","You have adminstrator privileges!"} + , { "administration","Administration"} + , { "all-day","all-day"} + , { "all_filtered","All filtered objects."} + , { "all_users","All users"} + , { "allocatable_in_timeframe","Allocatable in the given timeframe"} + , { "allocation_view","Allocation of {0}"} + , { "alteration","Alteration"} + , { "and","and"} + , { "apply","Apply"} + , { "appointment","Appointment"} + , { "appointment.convert","Convert to single events"} + , { "appointment.day_x","on day x"} + , { "appointment.days","Day(s)"} + , { "appointment.exception.days","Exception days:"} + , { "appointment.exception.general","Exceptions:"} + , { "appointment.exceptions","Exceptions"} + , { "appointment.format.exceptions","{0} Exceptions:"} + , { "appointment.hours","Hour(s)"} + , { "appointment.minutes","Min."} + , { "appointment.next_day","Next day"} + , { "appointment.no_exceptions","No exceptions:"} + , { "appointment.rule","Rule:"} + , { "appointment.same_day","Same day"} + , { "appointment_list","Appointment List"} + , { "appointments","Appointments"} + , { "attribute","Attribute"} + , { "attributes","Attributes"} + , { "available","Available"} + , { "back","Go back"} + , { "bind_with_person","bind with person"} + , { "calendar","Calendar"} + , { "calendar_settings","Calendar settings"} + , { "calendarname","Calendar name: "} + , { "calendarweek.abbreviation","cw {0,date,w}"} + , { "cancel","Cancel"} + , { "categories","Categories"} + , { "category","Category"} + , { "change","Change"} + , { "change.format","Change {0}"} + , { "change_appointment","Change appointment"} + , { "changes","Changes"} + , { "choose_language","Choose your language:"} + , { "choose_root_category","Choose root category:"} + , { "class","Class"} + , { "classification","Classification"} + , { "close","Close"} + , { "color","Color"} + , { "complete_time","Complete time"} + , { "confirm","Confirm"} + , { "confirm-close.ok","Discard changes"} + , { "confirm-close.question","You have not saved your changes."} + , { "confirm-close.title","Changes not saved!"} + , { "confirm.dialog.question","Save this Information?"} + , { "confirm.dialog.title","Confirm {0}"} + , { "conflict.appointment1","When?"} + , { "conflict.appointment2","conflicting allocation"} + , { "conflict.reservation1","Which event?"} + , { "conflict.reservation2","Other event?"} + , { "conflict.resource","What/who?"} + , { "conflict.user","User?"} + , { "conflictUC","Conflicts ({0,number,integer})"} + , { "conflicts","Conflicts"} + , { "connection","Connection with server"} + , { "constraints","Constraints"} + , { "continue","Continue"} + , { "copy","Copy"} + , { "copy_appointment.format","Do you want to copy the series or just the appointment on {0}?"} + , { "copy_to_clipboard","Copy to Clipboard"} + , { "create","Create"} + , { "created_at","Created at"} + , { "customized","Customized"} + , { "daily","Daily"} + , { "database","Database"} + , { "date","Date"} + , { "day","Day"} + , { "days","Days"} + , { "default","Default"} + , { "defaultselection","Default Selection"} + , { "delete","Delete"} + , { "delete.abort","No, don't delete it!"} + , { "delete.format","Delete {0}"} + , { "delete.ok","Yes, delete it!"} + , { "delete.question","You will delete the following objects: "} + , { "delete.title","Delete?"} + , { "delete_appointment.format","Do you want to delete the series or just the appointment on {0}?"} + , { "delete_selection","Delete Selection"} + , { "destination","Destination"} + , { "display_exceptions","Display exceptions in calendar"} + , { "duration","Duration"} + , { "dynamictype","Type"} + , { "dynamictype.annotation.nameformat","Displayed name format"} + , { "dynamictype.annotation.nameformat.description","Enclose the key names in {} to insert attributes, e.g. {myKey}"} + , { "dynamictype.name","Type name"} + , { "edit","Edit"} + , { "edit-view","Edit View"} + , { "edit.format","Edit {0}"} + , { "edit_advanced","Show advanced settings"} + , { "edit_reservation.format","Edit event: {0}"} + , { "edit_reservations","Edit own"} + , { "elementkey","Element key"} + , { "email","Email"} + , { "end_date","End date"} + , { "end_time","End time"} + , { "error","Error"} + , { "error.cant_delete_your_account","You can''t delete [{0}], because you are currently using this account!"} + , { "error.connect","Connection to [{0}] failed! Maybe the host is down and you could try later!"} + , { "error.connection_closed","No or closed connection to [{0}]. Please restart Rapla."} + , { "error.dependencies","Dependencies exist for these objects"} + , { "error.invalid_key","\"{0}\" is not a valid key!" + + " Note: You can only use a combination of max. 50 letters, digits or one of the" + + " following characters {1}. The key must start with {2} or a letter! Example: room_size" + + " "} + , { "error.login","Login failed!"} + , { "error.new_version","The object {0} couldn''t be modified. It was recently modified by someone else." + + " There was a newer version in the storage."} + , { "error.no_appointment","An event has to consist of at least one appointment!"} + , { "error.no_entry_for","You need to provide an entry for: {0}"} + , { "error.no_key","You need to provide a key: {0}"} + , { "error.no_name","Je moet een naam opgeven!"} + , { "error.no_reservation_name","You have to enter a title for your event!"} + , { "error.no_rollback","Error! Database update failed. Because" + + " your database doesn't support transactions, that could lead to" + + " serious failures. Please contact your administrator" + + " immediately!"} + , { "error.not_unique","The name \"{0}\" is already" + + " taken. Please choose a different name!"} + , { "error.one_type_requiered","At least one type is requiered."} + , { "error.passwords_dont_match","The passwords don't match!"} + , { "error.reference_not_stored","Error! Referenced object [{0}] not found in store. It was probably recently removed."} + , { "error.rollback","Database update failed. All changes were canceled."} + , { "error.wrong_password","Wrong password!"} + , { "every_appointment","Every appointment"} + , { "everytime","Every time"} + , { "exception","Exception"} + , { "exchange_allocatables","Change allocation"} + , { "exclamation.format","{0} !"} + , { "exclude_days","Exclude days"} + , { "exit","Exit"} + , { "exit.abort","Continue Rapla >>"} + , { "exit.ok","Quit Rapla"} + , { "exit.question","Do you really want to quit Rapla?"} + , { "exit.title","Quit Rapla?"} + , { "expected_columns","Expected columns"} + , { "expected_rows","Expected rows"} + , { "export","Export"} + , { "file","File"} + , { "filter","Filter"} + , { "filter.contains","contains"} + , { "filter.earlier_than","is earlier than"} + , { "filter.equals","equals"} + , { "filter.greater_or_equals","greater than or equal"} + , { "filter.is_greater_than","is greater than"} + , { "filter.is_smaller_than","is smaller than"} + , { "filter.later_than","is later than"} + , { "filter.not_equals","is not equal to"} + , { "filter.smaller_or_equals","smaller than or equal"} + , { "filter_allocatable","Resources and persons"} + , { "filter_reservation.all","From all users"} + , { "filter_reservation.own","Own events"} + , { "filter_restrictions","Restrict view of {0}"} + , { "filtername","Filter name"} + , { "fixed_date","Fixed Date"} + , { "for","for"} + , { "forename","First name"} + , { "format.repeat_from","from {0}"} + , { "format.repeat_n_times","Repeat {0} times"} + , { "format.repeat_until","until {0}"} + , { "goto_date","Go to Date"} + , { "group","Group"} + , { "groups","Groups"} + , { "help","Help"} + , { "hierarchy","Hierarchy"} + , { "holdbackconflicts","Hold back conflicts"} + , { "hour","Hour"} + , { "hours","Hours"} + , { "icon.abort","gui/images/choice_no.png"} + , { "icon.allocatable_available","gui/images/eclipse-icons/green.gif"} + , { "icon.allocatable_not_always_available","gui/images/eclipse-icons/yellow.gif"} + , { "icon.allocatable_taken","gui/images/eclipse-icons/conflict.gif"} + , { "icon.arrow_left","gui/images/eclipse-icons/arrow_left.gif"} + , { "icon.arrow_right","gui/images/eclipse-icons/arrow_right.gif"} + , { "icon.big_folder","gui/images/eclipse-icons/big_folder.gif"} + , { "icon.big_folder_categories","gui/images/eclipse-icons/big_folder_categories.gif"} + , { "icon.big_folder_conflicts","gui/images/eclipse-icons/big_folder_conflicts.gif"} + , { "icon.big_folder_events","gui/images/eclipse-icons/big_folder_events.gif"} + , { "icon.big_folder_events_filtered","gui/images/eclipse-icons/big_folder_events_filtered.gif"} + , { "icon.big_folder_filtered","gui/images/eclipse-icons/big_folder_filtered.gif"} + , { "icon.big_folder_periods","gui/images/eclipse-icons/big_folder_periods.gif"} + , { "icon.big_folder_resources","gui/images/eclipse-icons/big_folder_resources.gif"} + , { "icon.big_folder_resources_filtered","gui/images/eclipse-icons/big_folder_resources_filtered.gif"} + , { "icon.big_folder_users","gui/images/eclipse-icons/big_folder_users.gif"} + , { "icon.calendar","gui/images/calendar_small.png"} + , { "icon.cancel","gui/images/choice_no.png"} + , { "icon.category","gui/images/categories.png"} + , { "icon.checked","gui/images/eclipse-icons/checked.gif"} + , { "icon.clock","gui/images/eclipse-icons/clock.gif"} + , { "icon.close","gui/images/choice_no.png"} + , { "icon.confirm","gui/images/choice_yes.png"} + , { "icon.copy","gui/images/eclipse-icons/copy.gif"} + , { "icon.delete","gui/images/eclipse-icons/trash.gif"} + , { "icon.edit","gui/images/eclipse-icons/edit.gif"} + , { "icon.edit_window_small","gui/images/edit_window_small.png"} + , { "icon.empty","gui/images/eclipse-icons/blank.gif"} + , { "icon.error","gui/images/error.png"} + , { "icon.exceptionBackground","gui/images/exception.png"} + , { "icon.export","gui/images/eclipse-icons/export.gif"} + , { "icon.filter","gui/images/eclipse-icons/filter.gif"} + , { "icon.folder","gui/images/eclipse-icons/folder_open.gif"} + , { "icon.help","gui/images/eclipse-icons/help.gif"} + , { "icon.import","gui/images/eclipse-icons/import.gif"} + , { "icon.info","gui/images/info.png"} + , { "icon.info_small","gui/images/eclipse-icons/info.gif"} + , { "icon.language-select","gui/images/un_flag.png"} + , { "icon.list","gui/images/list.png"} + , { "icon.mail","gui/images/mail.png"} + , { "icon.new","gui/images/eclipse-icons/new.gif"} + , { "icon.new_repeating","gui/images/new_repeating.gif"} + , { "icon.no_perm","gui/images/eclipse-icons/no_perm.gif"} + , { "icon.options","gui/images/option_small.png"} + , { "icon.paste","gui/images/eclipse-icons/paste.gif"} + , { "icon.paste_new","gui/images/paste_new.gif"} + , { "icon.period","gui/images/period.png"} + , { "icon.print","gui/images/eclipse-icons/print.gif"} + , { "icon.question","gui/images/info.png"} + , { "icon.radio","gui/images/eclipse-icons/radio.gif"} + , { "icon.rapla","gui/images/tafel.png"} + , { "icon.rapla_small","gui/images/rapla_small.png"} + , { "icon.refresh","gui/images/refresh.png"} + , { "icon.remove","gui/images/eclipse-icons/trash.gif"} + , { "icon.repeating","gui/images/eclipse-icons/refresh.gif"} + , { "icon.resources","gui/images/resources.png"} + , { "icon.restart","gui/images/eclipse-icons/update.gif"} + , { "icon.save","gui/images/eclipse-icons/save.gif"} + , { "icon.single","gui/images/single.png"} + , { "icon.tree","gui/images/tree.png"} + , { "icon.tree.default","gui/images/eclipse-icons/green.gif"} + , { "icon.tree.minus","gui/images/eclipse-icons/tree_minus.gif"} + , { "icon.tree.person_not_always_available","gui/images/persons_yellow.png"} + , { "icon.tree.persons","gui/images/persons.png"} + , { "icon.tree.plus","gui/images/eclipse-icons/tree_plus.gif"} + , { "icon.unchecked","gui/images/eclipse-icons/unchecked.gif"} + , { "icon.user","gui/images/users.png"} + , { "icon.warning","gui/images/error.png"} + , { "import","Import"} + , { "in_period.format","in period {0}"} + , { "including_date","Include date: {0}"} + , { "info","About Rapla..."} + , { "info.text","" + + " Rapla version 1.4.3-beta" + + "
" + + " (C) Copyright 2000-2011 Rapla Team" + + "

Rapla homepage: http://rapla.org" + + "

" + + "

Post your feature requests, questions or bug reports" + + " to our developers mailing list:
" + + " rapla-developers@lists.sourceforge.net" + + "

" + + "

Build-Time: 2011-10-05 13:41

" + + "

Signature: {0}

" + + "

Java version {1}

" + + " "} + , { "info.title","" + + " Rapla version 1.4.3-beta" + + " "} + , { "insert","Insert"} + , { "interval","Interval"} + , { "interval.format","Every {0} {1}"} + , { "keep","Keep"} + , { "key","Key"} + , { "language","Language"} + , { "last_changed","Last changed"} + , { "last_changed_by","Last changed by"} + , { "legend","Legend"} + , { "level","Level"} + , { "license.text","" + + " Rapla version 1.4.3-beta (C) Copyright 2000-2011 Rapla Team" + + "

" + + " Rapla comes with NO\u00a0WARRANTY!!" + + " This is free software, you are welcome to redistribute it under certain" + + " conditions.

" + + " "} + , { "licensedialog.title","The GNU-license"} + , { "list.format","{0}: {1}"} + , { "load","Load"} + , { "login","Login"} + , { "logindialog.title","Rapla Login"} + , { "logout","Logout"} + , { "main-view","Main View"} + , { "minute","Minute"} + , { "minutes","Minutes"} + , { "month","Month"} + , { "monthly","Monthly"} + , { "months","Months"} + , { "move","Move"} + , { "move_appointment.format","Do you want to move the series or just the appointment on {0}?"} + , { "name","Name"} + , { "never","Never"} + , { "new","New"} + , { "new_appointment","New appointment"} + , { "new_category","New category"} + , { "new_password","New password"} + , { "new_reservation","New Event..."} + , { "new_reservation.format","New Event: {0}"} + , { "new_rule","New rule for"} + , { "new_sub-category","New sub-category"} + , { "no","No"} + , { "no-view","invisible"} + , { "no_classification","No classification"} + , { "no_repeating","No repeating"} + , { "not_selected.help","Not currently selected.
Unselect \"Only Own Reservations\" or change your filter settings. "} + , { "not_visible","Not visible"} + , { "not_visible.help","Not visible.
Access to the reservation info is restricted."} + , { "nothing_selected","Nothing selected"} + , { "occupation","Occupation"} + , { "ok","OK"} + , { "old_password","Old password"} + , { "only_own_reservations","Only Own Reservations"} + , { "open","Open"} + , { "options","Options"} + , { "or","or"} + , { "password","Password"} + , { "password_verification","Password verification"} + , { "paste","Paste"} + , { "paste_as","Paste As"} + , { "period","Period"} + , { "period.format.end","End of {0}"} + , { "period.format.start","Start of {0}"} + , { "period.format.week","{0}.week {1}"} + , { "period.not_set","Select period"} + , { "period_view","Period"} + , { "periods","Periods"} + , { "permission.access","Access"} + , { "permission.admin","administrator rights"} + , { "permission.allocate","can allocate"} + , { "permission.allocate-conflicts","can allocate & create conflicts"} + , { "permission.denied","Denied"} + , { "permission.read","can read"} + , { "permissions","Permissions"} + , { "person","Person"} + , { "person_type","Person type"} + , { "person_types","Person Types"} + , { "persons","Persons"} + , { "preferences","Preferences"} + , { "print","Print"} + , { "print_to_file","Print to File"} + , { "publish","Publish"} + , { "question","Question"} + , { "rapla.build","2011-10-05 13:41"} + , { "rapla.name","Rapla"} + , { "rapla.title","Rapla, smart resource and event planning"} + , { "rapla.version","1.4.3-beta"} + , { "rapla.welcome","Hello {0}, enjoy planning!"} + , { "refresh","Refresh"} + , { "reload_data","Load data"} + , { "remove","Remove"} + , { "repeat","Repeat"} + , { "repeating","Repeating"} + , { "repeating.end_date","until"} + , { "repeating.forever","Repeats forever"} + , { "repeating.interval.post","."} + , { "repeating.interval.pre","every"} + , { "repeating.n_times","x times"} + , { "repeating.start_date","from the"} + , { "report","Report"} + , { "reservation","Event"} + , { "reservation.allocations","Allocations:"} + , { "reservation.appointments","Appointments:"} + , { "reservation.create_without_wizard","Event"} + , { "reservation.name","Event name"} + , { "reservation.owner","Reserved by"} + , { "reservation_type","Event Type:"} + , { "reservations","Events"} + , { "reservations_from_all_users","Events from all users"} + , { "reset","Reset"} + , { "resource","Resource"} + , { "resource.owner","Registered by"} + , { "resource_type","Resource type"} + , { "resource_types","Resource types"} + , { "resources","Resources"} + , { "resources_persons","Resources and persons"} + , { "restart_client","Restart Rapla client"} + , { "restart_options","You need to restart Rapla/Rapla-server when you change the options!"} + , { "restart_server","Restart Server"} + , { "root","Root"} + , { "rows_per_hour","Rows per hour"} + , { "save","Save"} + , { "search","Search"} + , { "second","Second"} + , { "seconds","Seconds"} + , { "select","Select"} + , { "selectable","Selectable"} + , { "selectable_on","Selectable on"} + , { "selected","Selected"} + , { "selected_on","Selected on"} + , { "selection","Selection"} + , { "selection_resource","Resource selection"} + , { "serie","Series"} + , { "server","Server"} + , { "server_status","" + + " Server Status" + + " "} + , { "show_as","Show As"} + , { "show_conflicts","Display conflicts"} + , { "show_holidays","Display holidays"} + , { "show_tips","Display mouse-over tips"} + , { "single_appointment","Single appointment"} + , { "source","Source"} + , { "start_date","Start"} + , { "start_rapla_with_applet","" + + " Start Rapla (with Java Plugin)" + + " "} + , { "start_rapla_with_webstart","" + + " Start Rapla (with java webstart)" + + " "} + , { "start_time","Start time"} + , { "surname","Name"} + , { "switch_back","switch back"} + , { "switch_to","Switch to"} + , { "table","Table"} + , { "time_at","at"} + , { "time_until","until"} + , { "today","Today"} + , { "total_occurances","Total occurances"} + , { "translation","Translation"} + , { "translation.format","Translations for \"{0}\":"} + , { "type","Type"} + , { "type.boolean","Yes|No"} + , { "type.date","Date"} + , { "type.int","Integer"} + , { "type.rapla:category","Category"} + , { "type.string","Text"} + , { "types","Types"} + , { "user","User"} + , { "username","Username"} + , { "users","Users"} + , { "view","View"} + , { "view_holidays","View Holidays"} + , { "warning","Warning"} + , { "warning.conflict","WARNING: Conflicts found!"} + , { "warning.duplicated_appointments","WARNING: The same appointment exists multiple times [{0}]!"} + , { "warning.experienced_users_only","These settings should only be changed by experienced users!"} + , { "warning.max-one-eventtype","Only 1 event type is allowed. Adjust the filter!"} + , { "warning.no_allocatables_selected","You have not selected any resources/persons!"} + , { "warning.no_conflict_permission","You have no permissions to create conflicts for [{0}]!"} + , { "warning.no_reserve_permission","You have no permissions to reserve/change [{0}] an appointment [{1}]!"} + , { "warning.period_shorter_than_week","Period is shorter than 1 week!"} + , { "warning.readonly_storage","Data is only modified in memory. Changes will be lost for future sessions."} + , { "warning.reservation.delete","The event you are editing has been deleted."} + , { "warning.reservation.update","The event you are editing has been changed." + + " The data displayed in this window will be refreshed."} + , { "warning.update","The object \"{0}\" you are editing has been changed outside the window." + + " The current editing will be aborted."} + , { "webinfo.text","" + + "

More information:

" + + "

" + + " Java-Webstart is included in all Java versions since 1.4.0." + + " To run Rapla, you need Java 1.4 or above, which you can download from" + + " java.sun.com." + + "

" + + "

" + + " Check out rapla.sourceforge.net for more information." + + "

" + + " "} + , { "week","Week"} + , { "week_compact","Short week"} + , { "weekday","Day of week"} + , { "weekly","Weekly"} + , { "weeks","Weeks"} + , { "weekview.print.choose_export","Choose your save method!"} + , { "weekview.print.dialog_title","Print Preview"} + , { "weekview.print.format_button","Printer Preferences"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","Title"} + , { "width","Width"} + , { "with","with"} + , { "x_days_advance","x Days in advance"} + , { "year","Year"} + , { "yearly","Yearly"} + , { "years","Years"} + , { "yes","Yes"} + , { "zero_appointment","No appointment"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources_cs.java b/generated-src/org/rapla/RaplaResources_cs.java new file mode 100644 index 0000000..529c43e --- /dev/null +++ b/generated-src/org/rapla/RaplaResources_cs.java @@ -0,0 +1,370 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources_cs extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Ukon\u010dit"} + , { "add","P\u0159idat"} + , { "additional-view","Dopl\u0148uj\u00edc\u00ed informace"} + , { "admin","Administr\u00e1tor"} + , { "admin.login","M\u00e1te administr\u00e1torsk\u00e1 pr\u00e1va!"} + , { "administration","Administrace"} + , { "all-day","24h"} + , { "all_filtered","V\u0161echny filtrovan\u00e9 objekty."} + , { "all_users","V\u0161ichni u\u017eivatel\u00e9"} + , { "allocatable_in_timeframe","V\u00fdb\u011br dan\u00fd do \u010dasov\u00e9ho r\u00e1mce"} + , { "allocation_view","Um\u00edst\u011bn\u00ed {0}"} + , { "alteration","Zm\u011bna"} + , { "and","a"} + , { "apply","Pou\u017e\u00edt"} + , { "appointment","Rezervace"} + , { "appointment.convert","Prev\u00e9st na jednor\u00e1zov\u00e9 akce"} + , { "appointment.day_x","Za den x"} + , { "appointment.days","Den"} + , { "appointment.exception.days","Vyj\u00edme\u010dn\u00e9 dny:"} + , { "appointment.exception.general","Vyj\u00edmka:"} + , { "appointment.exceptions","Vyj\u00edmka"} + , { "appointment.format.exceptions","{0} Vyj\u00edmka:"} + , { "appointment.hours","Hodina"} + , { "appointment.minutes","Min."} + , { "appointment.next_day","Dal\u0161\u00ed den"} + , { "appointment.no_exceptions","Bez vyj\u00edmky"} + , { "appointment.rule","Pravidlo:"} + , { "appointment.same_day","Stejn\u00fd den"} + , { "appointment_list","Seznam rezervac\u00ed"} + , { "appointments","Rezervace"} + , { "attribute","Vlastnost"} + , { "attributes","Potvrdit"} + , { "available","Dostupn\u00fd"} + , { "back","Zp\u011bt"} + , { "calendar","Kalend\u00e1\u0159"} + , { "calendar_settings","nastaven\u00ed pohledu"} + , { "calendarname","N\u00e1zev kalend\u00e1\u0159e: "} + , { "calendarweek.abbreviation","T{0,date,w}"} + , { "cancel","Zru\u0161it"} + , { "categories","Seznam kategori\u00ed"} + , { "category","Kategorie"} + , { "change","Zm\u011bnit"} + , { "change.format","Zm\u011bnit {0}"} + , { "change_appointment","Zm\u011bna rezervace"} + , { "changes","Zm\u011bny"} + , { "choose_language","Zvolte v\u00e1\u0161 jazyk:"} + , { "choose_root_category","Vyber hlavn\u00ed kategorii:"} + , { "class","T\u0159\u00edda"} + , { "classification","Hodnocen\u00ed"} + , { "close","Zav\u0159\u00edt"} + , { "color","Barva"} + , { "complete_time","Celkov\u00fd \u010das"} + , { "confirm","Potvrdit"} + , { "confirm-close.ok","Ignoruj zm\u011bny"} + , { "confirm-close.question","Neulo\u017eil(a) jste zm\u011bny!"} + , { "confirm-close.title","Zm\u011bny neulo\u017eeny!"} + , { "confirm.dialog.question","Ulo\u017eit tyto informace?"} + , { "confirm.dialog.title","Potvrdit"} + , { "conflict.appointment1","Kdy\u017e"} + , { "conflict.appointment2","Konfiktn\u00ed rozvrh"} + , { "conflict.reservation1","\u010c\u00ed je to ud\u00e1lost?"} + , { "conflict.reservation2","Dal\u0161\u00ed ud\u00e1lost?"} + , { "conflict.resource","U\u017eivatel?"} + , { "conflict.user","U\u017eivatel?"} + , { "conflictUC","Konflikt ({0,number,integer})"} + , { "conflicts","Konflikt"} + , { "constraints","Omezen\u00ed"} + , { "continue","Pokra\u010dovat"} + , { "copy","Kopie"} + , { "copy_appointment.format","Chcete kop\u00edrovat celou s\u00e9rii nebo pouze jeden term\u00edn {0}?"} + , { "copy_to_clipboard","Kop\u00edrovat do schr\u00e1nky"} + , { "create","Vytvo\u0159it"} + , { "created_at","Vytvo\u0159eno"} + , { "customized","P\u0159izp\u016fsoben\u00fd"} + , { "daily","Po dnech"} + , { "database","Datab\u00e1ze"} + , { "date","Datum"} + , { "day","Den"} + , { "days","Dny"} + , { "default","V\u00fdchoz\u00ed"} + , { "defaultselection","V\u00fdb\u011br v\u00fdchoz\u00ed"} + , { "delete","Smazat"} + , { "delete.abort","Ne, ned\u011blej to!!"} + , { "delete.format","Odstranit {0}"} + , { "delete.ok","Ano, sma\u017e to!!"} + , { "delete.question","Bude\u0161 mazat n\u00e1sleduj\u00edc\u00ed objekt"} + , { "delete.title","Smazat?"} + , { "delete_appointment.format","Chcete smazat celou s\u00e9rii nebo pouze vybran\u00fd term\u00edn {0}?"} + , { "delete_selection","Smazat v\u00fdb\u011br"} + , { "destination","C\u00edl"} + , { "display_exceptions","Zobrazit vyj\u00edmky v kalend\u00e1\u0159i"} + , { "duration","Trv\u00e1n\u00ed"} + , { "dynamictype","Typ"} + , { "dynamictype.annotation.nameformat","Zobrazovan\u00fd form\u00e1t jm\u00e9na"} + , { "dynamictype.annotation.nameformat.description","Uzav\u0159en\u00e9 kl\u00ed\u010dov\u00e9 jm\u00e9no v {} k vlo\u017een\u00ed vlastnosti, nap\u0159. {jm\u00e9no}"} + , { "dynamictype.name","Jm\u00e9no typu"} + , { "edit","Upravit"} + , { "edit-view","Upravit pohled"} + , { "edit.format","Upravit {0}"} + , { "edit_advanced","Zobraz pokro\u010dil\u00e9 nastaven\u00ed"} + , { "edit_reservation.format","Upravit ud\u00e1lost: {0}"} + , { "edit_reservations","Zm\u011b\u0148 majitele"} + , { "elementkey","Kl\u00ed\u010d elementu"} + , { "email","e-mail"} + , { "end_date","Konec"} + , { "end_time","\u010cas ukon\u010den\u00ed"} + , { "error","Chyba"} + , { "error.cant_delete_your_account","Nem\u016f\u017eete smazat [{0}], proto\u017ee v\u00fdb\u011br vyu\u017e\u00edv\u00e1 tento \u00fa\u010det!"} + , { "error.connect","P\u0159ipojen\u00ed k [{0}] je \u0161patn\u00e9! Mo\u017en\u00e1 je vypnut\u00fd server. Zkuste to pozd\u011bji."} + , { "error.connection_closed","Neexistuje nebo nefunguje spojen\u00ed [{0}]. Pros\u00edm restartujte rezerva\u010dn\u00ed syst\u00e9m"} + , { "error.dependencies","Z\u00e1vislosti existuj\u00ed pro jin\u00fd objekt"} + , { "error.invalid_key","\"{0}\" je neplatn\u00fd kl\u00ed\u010d!
" + + " Note: M\u016f\u017eete pou\u017e\u00edt pouze v kombinaci s Max. 50 p\u00edsmen, \u010d\u00edslice nebo jeden z" + + " tyto znaky {1}. Kl\u00ed\u010d mus\u00ed za\u010d\u00ednat {2} nebo dopis! Nap\u0159.: mistnost_velikost" + + " "} + , { "error.login","\u0160patn\u00fd login!"} + , { "error.new_version","Objekt {0} nemohl b\u00fdt upraven. Byl upraven ned\u00e1vno n\u011bk\u00fdm ji\u00fdm."} + , { "error.no_entry_for","Nutn\u00e9 poskytnout p\u0159\u00edstup pro:"} + , { "error.no_key","Nutn\u00e9 poskytnout kl\u00ed\u010d:"} + , { "error.no_name","Nutn\u00e9 poskytnout jm\u00e9no"} + , { "error.no_reservation_name","Vlo\u017eit nadpis ud\u00e1losti!"} + , { "error.no_rollback","Chyba! Datab\u00e1ze se neobnovila. Proto\u017ee datab\u00e1ze nepodporuje transakci, chyba by se mohla opakovat, informujte administr\u00e1tora"} + , { "error.not_unique","Jm\u00e9no \"{0}\" je vyu\u017e\u00edv\u00e1no. Vyber jin\u00e9!"} + , { "error.one_type_requiered","Je po\u017eadov\u00e1n alespo\u0148 jeden typ."} + , { "error.passwords_dont_match","Heslo neodpov\u00edd\u00e1"} + , { "error.reference_not_stored","Chyba! Zm\u00edn\u011bn\u00fd objekt [{0}] se nenal\u00e9z\u00e1 v datab\u00e1zi. Pravd\u011bpodobn\u011b byl odstran\u011bn."} + , { "error.rollback","Datab\u00e1ze se neobnovila. V\u0161echny zm\u011bny zru\u0161eny."} + , { "error.wrong_password","\u0160patn\u00e9 heslo!"} + , { "every_appointment","V\u0161echny ujedn\u00e1n\u00ed"} + , { "everytime","poka\u017ed\u00e9"} + , { "exception","Vyj\u00edmka"} + , { "exchange_allocatables","Vym\u011bn\u011bn\u00fd rozvr\u017een\u00ed"} + , { "exclamation.format","{0} !"} + , { "exit","Odej\u00edt"} + , { "exit.abort","Pokra\u010duj v pl\u00e1nov\u00e1n\u00ed"} + , { "exit.ok","Ukon\u010dit syst\u00e9m Rapla"} + , { "exit.question","Opravdu chcete ukon\u010dit pl\u00e1nov\u00e1n\u00ed ?"} + , { "exit.title","Ukon\u010dit Rapla?"} + , { "expected_rows","O\u010dek\u00e1van\u00e1 \u0159adka"} + , { "export","Export"} + , { "file","Soubor"} + , { "filter.contains","Obsahuje"} + , { "filter.earlier_than","Je d\u0159\u00edve, ne\u017e"} + , { "filter.equals","Je stejn\u00fd, jako"} + , { "filter.greater_or_equals","je v\u011bt\u0161\u00ed nebo rovno"} + , { "filter.is_greater_than","Je v\u011bt\u0161\u00ed, ne\u017e"} + , { "filter.is_smaller_than","Je men\u0161\u00ed, ne\u017e"} + , { "filter.later_than","Je pozd\u011bji, ne\u017e"} + , { "filter.not_equals","nen\u00ed rovno"} + , { "filter.smaller_or_equals","Je men\u0161\u00ed nebo rovno"} + , { "filter_allocatable","Prost\u0159edky a osoby"} + , { "filter_reservation.all","Od ka\u017ed\u00e9ho u\u017eivatele"} + , { "filter_reservation.own","Moje ud\u00e1losti"} + , { "filter_restrictions","Pohled omezen\u00fd {0}"} + , { "filtername","N\u00e1zev filtru"} + , { "fixed_date","Pevn\u00fd datum"} + , { "for","Pro"} + , { "forename","Prvn\u00ed jm\u00e9no"} + , { "format.repeat_from","Z {0}"} + , { "format.repeat_n_times","Opakuj {0} kr\u00e1t"} + , { "format.repeat_until","Dokud {0}"} + , { "goto_date","J\u00edt na datum"} + , { "group","Skupina"} + , { "groups","Skupiny"} + , { "help","Pomoc"} + , { "hierarchy","Hierarchie"} + , { "holdbackconflicts","N\u00e1vrat p\u0159ed konflikt"} + , { "import","Import"} + , { "in_period.format","V period\u011b {0}"} + , { "including_date","v\u010detn\u011b data: {0}"} + , { "info","Informace"} + , { "insert","Vlo\u017eit"} + , { "interval","Interval"} + , { "interval.format","Ka\u017ed\u00fd {0} {1}"} + , { "keep","Podr\u017eet"} + , { "key","Kl\u00ed\u010d"} + , { "language","Jazyk"} + , { "last_changed","Naposledy zm\u011bn\u011bno"} + , { "last_changed_by","Naposledy zm\u011bnil u\u017eivatel: "} + , { "legend","Legenda"} + , { "level","\u00darove\u0148"} + , { "license.text","" + + " Rapla Verze 1.4.3-beta (C) Copyright 2000-2011 Rapla Team" + + "

Na syst\u00e9m Rapla nen\u00ed poskytov\u00e1na \u017d\u00c1DN\u00c1\u00a0Z\u00c1RUKA!!" + + " Rapla Toto je voln\u00fd software a je mo\u017en\u00e9 jej roz\u0161i\u0159ovat pouze za ur\u010dit\u00fdch " + + " podm\u00ednek.

" + + " "} + , { "licensedialog.title","GNU Licence"} + , { "list.format","{0}: {1}"} + , { "load","Nahr\u00e1t"} + , { "login","Login"} + , { "logindialog.title","P\u0159ihl\u00e1\u0161en\u00ed k rezerva\u010dn\u00edmu syst\u00e9mu"} + , { "logout","Odhl\u00e1sit"} + , { "main-view","Hlavn\u00ed pohled"} + , { "month","M\u011bs\u00edc"} + , { "months","M\u011bs\u00edce"} + , { "move","P\u0159esunout"} + , { "move_appointment.format","Chcete p\u0159esunout \u0159adu nebo pouze term\u00edn {0}?"} + , { "name","Jm\u00e9no"} + , { "never","Nikdy"} + , { "new","Nov\u00fd"} + , { "new_appointment","Nov\u00e1 rezervace"} + , { "new_category","Nov\u00e1 kategorie"} + , { "new_password","Nov\u00e9 heslo"} + , { "new_reservation","Nov\u00e1 ud\u00e1lost"} + , { "new_reservation.format","Nov\u00e1 ud\u00e1lost: {0}"} + , { "new_rule","Nov\u00e9 pravidlo pro "} + , { "new_sub-category","Nov\u00e1 podkategorie"} + , { "no","Ne"} + , { "no-view","Skryt\u00fd"} + , { "no_classification","Neklasifikov\u00e1no"} + , { "no_repeating","Bez opakov\u00e1n\u00ed"} + , { "not_selected.help","Polo\u017eka nen\u00ed v t\u00e9to chv\u00edli vybr\u00e1na.
Odstra\u0148te volbu \"Moje rezervace\", nebo zm\u011b\u0148te nastaven\u00ed va\u0161eho filtru."} + , { "not_visible","neviditen\u011b"} + , { "not_visible.help","Skryt\u00e1 polo\u017eka.
P\u0159\u00edstup k rezerva\u010dn\u00edm informac\u00edm je zak\u00e1z\u00e1n."} + , { "nothing_selected","Nen\u00ed vybr\u00e1na \u017e\u00e1dn\u00e1 polo\u017eka"} + , { "occupation","Obsazenost"} + , { "ok","Budi\u017e"} + , { "old_password","Star\u00e9 heslo"} + , { "only_own_reservations","Moje rezervace"} + , { "open","Otev\u0159\u00edt"} + , { "options","Volby"} + , { "or","nebo"} + , { "password","Heslo"} + , { "password_verification","Heslo ov\u011b\u0159eno"} + , { "paste","Vlo\u017eit"} + , { "paste_as","Vlo\u017eit v\u0161e"} + , { "period","Perioda"} + , { "period.format.end","Konec {0}"} + , { "period.format.start","Za\u010d\u00e1tek {0}"} + , { "period.format.week","{0}.t\u00fdden {1}"} + , { "period.not_set","Ozna\u010d periodu"} + , { "period_view","Perioda"} + , { "periods","Periody"} + , { "permission.access","P\u0159\u00edstupn\u00fd"} + , { "permission.admin","Administr\u00e1torsk\u00e9 pr\u00e1va"} + , { "permission.allocate","m\u016f\u017ee alokovat"} + , { "permission.allocate-conflicts","m\u016f\u017ee alokovat & vytv\u00e1\u0159et konflikty"} + , { "permission.denied","Zam\u00edtnuto"} + , { "permission.read","m\u016f\u017ee \u010d\u00edst"} + , { "permissions","P\u0159\u00edstupov\u00e1 pr\u00e1va"} + , { "person","Osoba"} + , { "person_type","Druh osoby"} + , { "person_types","Druh osob"} + , { "persons","Osoby"} + , { "preferences","P\u0159edvolby"} + , { "print","Tisknout"} + , { "print_to_file","Tisk do souboru"} + , { "publish","publikovat"} + , { "question","Ot\u00e1zka"} + , { "rapla.name","Rapla"} + , { "rapla.title","Rapla, chytr\u00e9 pl\u00e1nov\u00e1n\u00ed prost\u0159edk\u016f a ud\u00e1lost\u00ed"} + , { "rapla.welcome","Dobr\u00fd den, p\u0159ejeme p\u0159\u00edjemn\u00e9 pl\u00e1nov\u00e1n\u00ed! P\u0159ihl\u00e1\u0161en u\u017eivatel: {0}"} + , { "refresh","Obnovit"} + , { "reload_data","Znovu na\u010d\u00edst data"} + , { "remove","Odstranit"} + , { "repeat","Opakuj"} + , { "repeating","Opakov\u00e1n\u00ed"} + , { "repeating.end_date","Dokud"} + , { "repeating.forever","Nem\u00e1 konec"} + , { "repeating.interval.post","."} + , { "repeating.interval.pre","Poka\u017ed\u00e9"} + , { "repeating.n_times","x kr\u00e1t"} + , { "repeating.start_date","z"} + , { "report","Report"} + , { "reservation","Ud\u00e1lost"} + , { "reservation.allocations","Rozvr\u017een\u00ed:"} + , { "reservation.appointments","Sjednan\u00fd:"} + , { "reservation.create_without_wizard","Ud\u00e1lost"} + , { "reservation.name","N\u00e1zev ud\u00e1losti"} + , { "reservation.owner","Rezervace od"} + , { "reservation_type","Druh ud\u00e1losti"} + , { "reservations","Ud\u00e1losti"} + , { "reservations_from_all_users","Rezervace v\u0161ech u\u017eivatel\u016f"} + , { "reset","Reset"} + , { "resource","Prost\u0159edek"} + , { "resource.owner","Registrovan\u00fd od"} + , { "resource_type","Typ prost\u0159edku"} + , { "resource_types","Typy prost\u0159edk\u016f"} + , { "resources","Prost\u0159edky"} + , { "resources_persons","Prost\u0159edky a osoby"} + , { "restart_client","Restart klienta"} + , { "restart_options","..."} + , { "restart_server","Restart serveru"} + , { "root","root"} + , { "rows_per_hour","Po\u010det \u0159\u00e1dk\u016f na hodinu"} + , { "save","Ulo\u017eit"} + , { "search","Hledat"} + , { "select","Vybrat"} + , { "selectable","Ozna\u010diteln\u00fd"} + , { "selectable_on","Ozna\u010diteln\u00fd v"} + , { "selected","Vybr\u00e1no"} + , { "selected_on","Ozna\u010den\u00fd v"} + , { "selection","V\u00fdb\u011br"} + , { "selection_resource","Ozna\u010den\u00e9 prost\u0159edky"} + , { "serie","S\u00e9rie"} + , { "server","Server"} + , { "show_as","Uka\u017e v\u0161e"} + , { "show_conflicts","Zobrazit vyj\u00edmky"} + , { "show_tips","Zobrazit vyj\u00edmky v mouse-over"} + , { "single_appointment","Jeden term\u00edn"} + , { "source","Zdroj"} + , { "start_date","Po\u010d\u00e1te\u010dn\u00ed datum"} + , { "start_time","Po\u010d\u00e1te\u010dn\u00ed \u010das"} + , { "surname","Jm\u00e9no"} + , { "switch_back","P\u0159epni zp\u011bt"} + , { "switch_to","P\u0159epni k"} + , { "table","tabule"} + , { "time_at","v"} + , { "time_until","do"} + , { "today","Dnes"} + , { "total_occurances","celkem z\u00e1znam\u016f"} + , { "translation","p\u0159eklad"} + , { "translation.format","P\u0159eklady pro \"{0}\":"} + , { "type","Typ"} + , { "type.boolean","Ano|Ne"} + , { "type.date","Datum"} + , { "type.int","\u010c\u00edslo"} + , { "type.rapla:category","Kategorie"} + , { "type.string","Text"} + , { "types","Typy"} + , { "user","U\u017eivatel"} + , { "username","U\u017eivatelsk\u00e9 jm\u00e9no"} + , { "users","U\u017eivatel\u00e9"} + , { "view","Pohled"} + , { "warning","Varov\u00e1n\u00ed!"} + , { "warning.conflict","POZOR: Nalezen konflikt !"} + , { "warning.duplicated_appointments","POZOR: Stejn\u00e9 ujedn\u00e1n\u00ed existuje ve v\u00edce \u010dasech [{0}]!"} + , { "warning.experienced_users_only","Tato nastaven\u00ed by m\u011bla b\u00fdt m\u011bn\u011bna zku\u0161en\u00fdmi u\u017eivateli!"} + , { "warning.max-one-eventtype","Pouze 1 typ ud\u00e1losti je povoleno. Nastavte. filtr!"} + , { "warning.no_allocatables_selected","Nejsou ozna\u010deny \u017e\u00e1dn\u00e9 prost\u0159edky/osoby!"} + , { "warning.no_conflict_permission","Nem\u00e1te pov\u011b\u0159en\u00ed vytvo\u0159it konflikt pro [{0}] !"} + , { "warning.no_reserve_permission","Nem\u00e1te pov\u011b\u0159en\u00ed rezervovat/m\u011bnit [{0}] v ujedn\u00e1n\u00ed vaci [{1}]!"} + , { "warning.period_shorter_than_week","Nem\u00e1te pov\u011b\u0159en\u00ed rezervovat/m\u011bnit [{0}] v ujedn\u00e1n\u00ed vaci [{1}]! "} + , { "warning.readonly_storage","Data jsou zm\u011bn\u011bny pouze v pam\u011bti. Zm\u011bny budou ztraceny pro dal\u0161\u00ed pou\u017eit\u00ed."} + , { "warning.reservation.delete","Editovan\u00e1 polo\u017eka bude smaz\u00e1na."} + , { "warning.reservation.update","Editovan\u00e1 polo\u017eka bude zm\u011bn\u011bna. Zobrazen\u00e9 informace budou obnoveny."} + , { "warning.update","Objekt \"{0}\" kter\u00fd je editov\u00e1n bude zm\u011bn\u011bn mimo okno. Sou\u010dasn\u00e1 editace bude p\u0159eru\u0161ena."} + , { "week","T\u00fdden"} + , { "week_compact","Cel\u00fd t\u00fdden"} + , { "weekday","Den v t\u00fddnu"} + , { "weekly","T\u00fddn\u011b"} + , { "weeks","T\u00fddny"} + , { "weekview.print.choose_export","Vyberte zp\u016fsob ukl\u00e1d\u00e1n\u00ed!"} + , { "weekview.print.dialog_title","N\u00e1hled p\u0159ed tiskem"} + , { "weekview.print.format_button","Vlastnosti tisk\u00e1rny"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","Titul"} + , { "width","\u0161\u00ed\u0159ka"} + , { "with","s"} + , { "x_days_advance","x dn\u00ed p\u0159edem"} + , { "year",".."} + , { "years",".."} + , { "yes","ano"} + , { "zero_appointment","Nesjedn\u00e1no"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources_de.java b/generated-src/org/rapla/RaplaResources_de.java new file mode 100644 index 0000000..f88edab --- /dev/null +++ b/generated-src/org/rapla/RaplaResources_de.java @@ -0,0 +1,435 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Abbrechen"} + , { "add","Hinzuf\u00fcgen"} + , { "additional-view","zus\u00e4tzliche Informationen"} + , { "admin","Administrator"} + , { "admin.login","Sie haben Administrationsrechte!"} + , { "administration","Administration"} + , { "all-day","ganzt\u00e4gig"} + , { "all_filtered","Alle gefilterten Objekte."} + , { "all_users","alle Benutzer"} + , { "allocatable_in_timeframe","Belegbar in folgendem Zeitraum"} + , { "allocation_view","Belegungen von {0}"} + , { "alteration","\u00c4nderung"} + , { "and","und"} + , { "apply","\u00dcbernehmen"} + , { "appointment","Termin"} + , { "appointment.convert","In Einzeltermine umwandeln"} + , { "appointment.day_x","am Tag x"} + , { "appointment.days","Tag(e)"} + , { "appointment.exception.days","Ausgenommene Tage:"} + , { "appointment.exception.general","Ausnahmen:"} + , { "appointment.exceptions","Ausnahmen"} + , { "appointment.format.exceptions","{0} Exceptions:"} + , { "appointment.hours","Std."} + , { "appointment.minutes","Min."} + , { "appointment.next_day","am n\u00e4chsten Tag"} + , { "appointment.no_exceptions","Keine Ausnahmen:"} + , { "appointment.rule","Regel:"} + , { "appointment.same_day","am selben Tag"} + , { "appointment_list","Terminliste"} + , { "appointments","Termine"} + , { "attribute","Attribut"} + , { "attributes","Attribute"} + , { "available","vorhanden"} + , { "back","Zur\u00fcck"} + , { "bind_with_person","Mit Person verbinden"} + , { "calendar","Kalender"} + , { "calendar_settings","Kalendareinstellungen"} + , { "calendarname","Kalender Namen: "} + , { "calendarweek.abbreviation","KW {0,date,w}"} + , { "cancel","Abbrechen"} + , { "categories","Kategorien"} + , { "category","Kategorie"} + , { "change","\u00c4ndern"} + , { "change.format","{0} \u00e4ndern"} + , { "change_appointment","Termin \u00e4ndern"} + , { "changes","\u00c4nderungen"} + , { "choose_language","W\u00e4hlen Sie Ihre Sprache:"} + , { "choose_root_category","Wurzelkategorie ausw\u00e4hlen"} + , { "class","Klasse"} + , { "classification","Klassifizierung"} + , { "close","Schlie\u00dfen"} + , { "color","Farbe"} + , { "complete_time","gesamte Zeit"} + , { "confirm","Best\u00e4tigen"} + , { "confirm-close.ok","\u00c4nderungen verwerfen"} + , { "confirm-close.question","Sie haben die vorgenommenen \u00c4nderungen noch" + + " nicht gespeichert."} + , { "confirm-close.title","\u00c4nderungen noch nicht gespeichert!"} + , { "confirm.dialog.question","Diese Informationen speichern?"} + , { "confirm.dialog.title","{0} best\u00e4tigen"} + , { "conflict.appointment1","Wann?"} + , { "conflict.appointment2","Konflikt-Termin"} + , { "conflict.reservation1","Welche Veranstaltung?"} + , { "conflict.reservation2","Andere Veranstaltung?"} + , { "conflict.resource","Was/Wer?"} + , { "conflict.user","Mit Wem?"} + , { "conflictUC","Konflikte ({0,number,integer})"} + , { "conflicts","Konflikte"} + , { "connection","Verbindung mit dem Server"} + , { "constraints","Einschr\u00e4nkungen"} + , { "continue","Weiter"} + , { "copy","Kopieren"} + , { "copy_appointment.format","Wollen Sie die ganze Serie oder nur den Termin am {0} kopieren?"} + , { "copy_to_clipboard","In die Zwischenablage"} + , { "create","Erstellen"} + , { "created_at","erstellt am"} + , { "customized","benutzerdefiniert"} + , { "daily","t\u00e4glich"} + , { "database","Datenbasis"} + , { "date","Datum"} + , { "day","Tag"} + , { "days","Tage"} + , { "default","Standard"} + , { "defaultselection","Standardauswahl"} + , { "delete","L\u00f6schen"} + , { "delete.abort","NICHT ausf\u00fchren!!"} + , { "delete.format","{0} l\u00f6schen"} + , { "delete.ok","L\u00f6schen!!"} + , { "delete.question","Sie l\u00f6schen die folgenden Objekte: "} + , { "delete.title","L\u00f6schen?"} + , { "delete_appointment.format","Wollen Sie die ganze Serie oder nur den Termin am {0} l\u00f6schen?"} + , { "delete_selection","Auswahl l\u00f6schen"} + , { "destination","Ziel"} + , { "display_exceptions","Zeige Ausnahmen im Kalender"} + , { "duration","Zeitdauer"} + , { "dynamictype","Typ"} + , { "dynamictype.annotation.nameformat","Anzeigeformatierung"} + , { "dynamictype.annotation.nameformat.description","Umklammern sie die Schl\u00fcsselnamen mit {} um Attribute einzuf\u00fcgen, Bsp. {name}"} + , { "dynamictype.name","Name des Typs"} + , { "edit","Bearbeiten"} + , { "edit-view","Bearbeitungsansicht"} + , { "edit.format","{0} bearbeiten"} + , { "edit_advanced","zeige Profi-Einstellungen"} + , { "edit_reservation.format","Veranstaltung bearbeiten: {0}"} + , { "edit_reservations","eigene bearbeiten"} + , { "elementkey","Elementschl\u00fcssel"} + , { "email","Email"} + , { "end_date","Ende"} + , { "end_time","Endzeit"} + , { "error","Fehler"} + , { "error.cant_delete_your_account","Sie k\u00f6nnen [{0}] nicht l\u00f6schen, weil Sie diesen Account benutzen!"} + , { "error.connect","Verbindung mit [{0}] fehlgeschlagen! Vielleicht ist der Rechner nicht erreichbar. Versuchen Sie es zu einen sp\u00e4teren Zeitpunkt erneut!"} + , { "error.connection_closed","Keine oder unterbrochene Verbindung zu [{0}]. Bitte starten Sie Rapla erneut."} + , { "error.dependencies","F\u00fcr folgende Objekte bestehen noch Abh\u00e4ngigkeiten"} + , { "error.invalid_key","\"{0}\" ist kein g\u00fcltiger Schl\u00fcssel!" + + " Note: Sie k\u00f6nnen nur eine Kombination von max. 50 Buchstaben, Ziffern oder einer der" + + " Folgende Zeichen {1}. Der Schl\u00fcssel muss mit {2} oder einem Buchstaben beginnen! Beispiel: Anzahl_Pl\u00e4tze" + + " "} + , { "error.login","Fehlerhafter Login!"} + , { "error.new_version","Das Objekt {0} konnte nicht ver\u00e4ndert werden. Es wurde k\u00fcrzlich ver\u00e4ndert, denn" + + " es gibt schon eine neuere Version. "} + , { "error.no_appointment","Eine Veranstaltung muss aus mindestens einem Termin bestehen!"} + , { "error.no_entry_for","Sie m\u00fcssen einen Namen angeben f\u00fcr: {0}"} + , { "error.no_key","Sie m\u00fcssen einen Schl\u00fcssel angeben: {0}"} + , { "error.no_name","Sie m\u00fcssen einen Namen angeben!"} + , { "error.no_reservation_name","Sie m\u00fcssen einen Titel f\u00fcr Ihre Veranstaltung angeben!"} + , { "error.no_rollback","Achtung! W\u00e4hrend der Speicherung in der" + + " Datenbank ist ein Fehler aufgetreten. Da die verwendete" + + " Datenbank keine Transaktionen unterst\u00fctzt kann dies zu" + + " schwerwiegenden Fehlern in der Applikation fhren. Bitte setzten" + + " Sie sich umgehend mit dem zust\u00e4ndigen Adminstrator in Verbindung!" + + " "} + , { "error.not_unique","Der Name \"{0}\" ist schon" + + " vergeben. Bitte w\u00e4hlen Sie einen Anderen!"} + , { "error.one_type_requiered","Es muss mindestens ein Typ vorhanden sein!"} + , { "error.passwords_dont_match","Die Passw\u00f6rter stimmen nicht \u00fcberein!"} + , { "error.reference_not_stored","Achtung! Referenziertes Object [{0}] konnte nicht gefunden werden. Es wurde wahrscheinlich k\u00fcrzlich von jemand gel\u00f6scht."} + , { "error.rollback","W\u00e4hrend der Speicherung in der Datenbank" + + " ist ein Fehler aufgetreten. Alle \u00c4nderungen wurden r\u00fcckg\u00e4ngig" + + " gemacht!"} + , { "error.wrong_password","Falsches Passwort!"} + , { "every_appointment","allen Terminen"} + , { "everytime","immer"} + , { "exception","Ausnahme-Fehler"} + , { "exchange_allocatables","Belegung \u00e4ndern"} + , { "exclamation.format","{0} !"} + , { "exclude_days","Tage ausschlie\u00dfen"} + , { "exit","Beenden"} + , { "exit.abort","Weiter planen >>"} + , { "exit.ok","Rapla beenden?"} + , { "exit.question","Wollen Sie Rapla beenden?"} + , { "exit.title","Rapla beenden?"} + , { "expected_columns","Spaltenbreite"} + , { "expected_rows","Zeilenanzahl"} + , { "export","Export"} + , { "file","Datei"} + , { "filter","Filter"} + , { "filter.contains","enth\u00e4lt"} + , { "filter.earlier_than","ist fr\u00fcher als"} + , { "filter.equals","ist gleich"} + , { "filter.greater_or_equals","ist gr\u00f6\u00dfer gleich"} + , { "filter.is_greater_than","ist gr\u00f6\u00dfer als"} + , { "filter.is_smaller_than","ist kleiner als"} + , { "filter.later_than","ist sp\u00e4ter als"} + , { "filter.not_equals","ist ungleich"} + , { "filter.smaller_or_equals","ist kleiner gleich"} + , { "filter_allocatable","Ressourcen und Personen"} + , { "filter_reservation.all","Von allen Benutzern"} + , { "filter_reservation.own","Eigene Veranstaltungen"} + , { "filter_restrictions","Anzeige von {0} einschr\u00e4nken"} + , { "filtername","Filtername"} + , { "fixed_date","festes Datum"} + , { "for","f\u00fcr"} + , { "forename","Vorname"} + , { "format.repeat_from","ab dem {0}"} + , { "format.repeat_n_times","wiederhole {0} Mal"} + , { "format.repeat_until","bis zum {0}"} + , { "goto_date","Datum anzeigen"} + , { "group","Gruppe"} + , { "groups","Gruppen"} + , { "help","Hilfe"} + , { "hierarchy","Hierarchie"} + , { "holdbackconflicts","Unterdr\u00fccke Konflikte"} + , { "hour","Std."} + , { "hours","Std."} + , { "import","Import"} + , { "in_period.format","im Zeitraum {0}"} + , { "including_date","mit Datum: {0}"} + , { "info","Info"} + , { "info.text","" + + " Rapla Version 1.4.3-beta" + + "
" + + " (C) Copyright 2000-2011 Rapla Team" + + "

Rapla-Webseite: http://rapla.org" + + "

" + + "

Schicken Sie Ihre Anfordungen, Fragen oder Fehlerreports" + + " an die Entwickler- Mailingliste:
" + + " rapla-developers@lists.sourceforge.net" + + "

" + + "

Version vom: 2011-10-05 13:41

" + + "

Signatur: {0}

" + + "

Java Version {1}

" + + " "} + , { "info.title","" + + " Rapla Version 1.4.3-beta" + + " "} + , { "insert","Einf\u00fcgen"} + , { "interval","Zeitraum"} + , { "interval.format","Alle {0} {1}"} + , { "keep","Beibehalten"} + , { "key","Schl\u00fcssel"} + , { "language","Sprache"} + , { "last_changed","zuletzt ge\u00e4ndert am"} + , { "last_changed_by","zuletzt ge\u00e4ndert von"} + , { "legend","Legende"} + , { "level","Level"} + , { "license.text","" + + " Rapla Version 1.4.3-beta (C) Copyright 2000-2011 Rapla Team" + + "

F\u00fcr Rapla besteht KEINE\u00a0GARANTIE!!" + + " Rapla ist freie Software, die Sie unter bestimmten" + + " Bedingungen weitergeben d\u00fcrfen.

" + + " "} + , { "licensedialog.title","Die GNU-Lizenz"} + , { "list.format","{0}: {1}"} + , { "load","Laden"} + , { "login","Login"} + , { "logindialog.title","Rapla Login"} + , { "logout","Logout"} + , { "main-view","Hauptansicht"} + , { "minute","Minute"} + , { "minutes","Minute"} + , { "month","Monat"} + , { "monthly","monatlich"} + , { "months","Monate"} + , { "move","Verschieben"} + , { "move_appointment.format","Wollen Sie die ganze Serie oder nur den Termin am {0} verschieben?"} + , { "name","Name"} + , { "never","nie"} + , { "new","Neu"} + , { "new_appointment","neuer Termin"} + , { "new_category","Neue Kategorie"} + , { "new_password","Neues Passwort"} + , { "new_reservation","neue Veranstaltung"} + , { "new_reservation.format","Neue Veranstaltung: {0}"} + , { "new_rule","neue Regel f\u00fcr"} + , { "new_sub-category","Neue Unter-Kategorie"} + , { "no","Nein"} + , { "no-view","nicht sichtbar"} + , { "no_classification","keine Klassifizierung"} + , { "no_repeating","Einzeltermin"} + , { "not_selected.help","Nicht ausgew\u00e4hlt.
Schalten Sie \"nur eigene Reservierungen\" aus oder \u00e4ndern Sie die Filtereinstellungen. "} + , { "not_visible","nicht sichtbar"} + , { "not_visible.help","Nicht sichtbar.
Der Zugriff auf die Reservierungsinformation ist eingeschr\u00e4nkt."} + , { "nothing_selected","Nichts ausgew\u00e4hlt"} + , { "occupation","Besetzung"} + , { "ok","OK"} + , { "old_password","Altes Passwort"} + , { "only_own_reservations","Nur eigene Reservierungen"} + , { "open","offen"} + , { "options","Einstellungen"} + , { "or","oder"} + , { "password","Passwort"} + , { "password_verification","Passwort Verifikation"} + , { "paste","Einf\u00fcgen"} + , { "paste_as","Einf\u00fcgen als"} + , { "period","Zeitraum"} + , { "period.format.end","Ende {0}"} + , { "period.format.start","Start {0}"} + , { "period.format.week","{0}.Wo {1}"} + , { "period.not_set","Zeitraum ausw\u00e4hlen"} + , { "period_view","Zeitraum"} + , { "periods","Zeitr\u00e4ume"} + , { "permission.access","Zugriff"} + , { "permission.admin","Administrationsrechte"} + , { "permission.allocate","darf belegen"} + , { "permission.allocate-conflicts","darf belegen & Konflikte erzeugen"} + , { "permission.denied","gesperrt"} + , { "permission.read","darf lesen"} + , { "permissions","Zugriffsrechte"} + , { "person","Person"} + , { "person_type","Personentyp"} + , { "person_types","Personentypen"} + , { "persons","Personen"} + , { "preferences","Einstellungen"} + , { "print","Drucken"} + , { "print_to_file","In Datei drucken"} + , { "publish","Ver\u00f6ffentlichen"} + , { "question","Frage"} + , { "rapla.name","Rapla"} + , { "rapla.title","Rapla, der clevere Ressourcen- und Veranstaltungsplaner"} + , { "rapla.welcome","Hallo {0}, viel Spa\u00df beim Planen!"} + , { "refresh","Aktualisieren"} + , { "reload_data","Daten neu laden"} + , { "remove","Entfernen"} + , { "repeat","wiederhole"} + , { "repeating","Wiederholung"} + , { "repeating.end_date","bis zum"} + , { "repeating.forever","Kein Ende"} + , { "repeating.interval.post","."} + , { "repeating.interval.pre","Jeden"} + , { "repeating.n_times","x Mal"} + , { "repeating.start_date","ab dem"} + , { "report","Report"} + , { "reservation","Veranstaltung"} + , { "reservation.allocations","Belegungen:"} + , { "reservation.appointments","Termine:"} + , { "reservation.create_without_wizard","Veranstaltung"} + , { "reservation.name","Veranstaltungsname"} + , { "reservation.owner","reserviert von"} + , { "reservation_type","Veranstaltungstyp"} + , { "reservations","Veranstaltungen"} + , { "reservations_from_all_users","Veranstaltungen von allen Benutzern"} + , { "reset","Reset"} + , { "resource","Ressource"} + , { "resource.owner","Eingetragen von"} + , { "resource_type","Ressourcentyp"} + , { "resource_types","Ressourcentypen"} + , { "resources","Ressourcen"} + , { "resources_persons","Ressourcen und Personen"} + , { "restart_client","Rapla neu starten"} + , { "restart_options","..."} + , { "restart_server","Server neu starten"} + , { "root","Wurzel"} + , { "rows_per_hour","Zeilen pro Stunden"} + , { "save","Speichern"} + , { "search","Suche"} + , { "second","Sekunde"} + , { "seconds","Sekunden"} + , { "select","ausw\u00e4hlen"} + , { "selectable","ausw\u00e4hlbar"} + , { "selectable_on","ausw\u00e4hlbar an"} + , { "selected","ausgew\u00e4hlt"} + , { "selected_on","ausgew\u00e4hlt an"} + , { "selection","Auswahl"} + , { "selection_resource","Ressourcenauswahl"} + , { "serie","Serie"} + , { "server","Server"} + , { "server_status","" + + " Status des Servers" + + " "} + , { "show_as","Anzeigen als"} + , { "show_conflicts","Zeige Konflikte"} + , { "show_tips","Zeige mouse-over"} + , { "single_appointment","einzelner Termin"} + , { "source","Quelle"} + , { "start_date","Beginn"} + , { "start_rapla_with_applet","" + + " Rapla starten (mit Java Plugin)" + + " "} + , { "start_rapla_with_webstart","" + + " Rapla starten (mit Java Webstart)" + + " "} + , { "start_time","Startzeit"} + , { "surname","Nachname"} + , { "switch_back","wechsle zur\u00fcck"} + , { "switch_to","wechsle zu"} + , { "table","Tabelle"} + , { "time_at","um"} + , { "time_until","bis"} + , { "today","Heute"} + , { "total_occurances","Gesamtanzahl Termine"} + , { "translation","\u00dcbersetzung"} + , { "translation.format","\u00dcbersetzungen von \"{0}\":"} + , { "type","Typ"} + , { "type.boolean","Ja|Nein"} + , { "type.date","Datum"} + , { "type.int","Ganze Zahl"} + , { "type.rapla:category","Kategorie"} + , { "type.string","Text"} + , { "types","Typen"} + , { "user","Benutzer"} + , { "username","Benutzername"} + , { "users","Benutzer"} + , { "view","Anzeige"} + , { "warning","Warnung"} + , { "warning.conflict","WARNUNG: Konflikte gefunden!"} + , { "warning.duplicated_appointments","WARNUNG: Den gleichen Termin gibt es mehrmals [{0}]!"} + , { "warning.experienced_users_only","Diese Einstellungen sollten nur von erfahrenen Benutzern ver\u00e4ndert werden!"} + , { "warning.max-one-eventtype","Nur 1 Veranstaltungstyp ist erlaubt. Passen Sie den Filter!"} + , { "warning.no_allocatables_selected","Sie haben keine Ressourcen/Personen ausgew\u00e4hlt!"} + , { "warning.no_conflict_permission","Sie haben keine Zugriffsrechte um Konflikte f\u00fcr [{0}] zu erzeugen!"} + , { "warning.no_reserve_permission","Sie haben keine Zugriffsrechte um [{0}] an dem Termin [{1}] zu reservieren/\u00e4ndern!"} + , { "warning.period_shorter_than_week","Der Zeitraum is k\u00fcrzer als eine Woche!"} + , { "warning.readonly_storage","Ihre \u00c4nderungen wurden nicht gesichert und gehen beim Beenden der Sitzung verloren!"} + , { "warning.reservation.delete","Die Veranstaltung die gerade bearbeitet" + + " wird, wurde gel\u00f6scht."} + , { "warning.reservation.update","Die Veranstaltung, die gerade bearbeitet" + + " wird, wurde ge\u00e4ndert. Das Bearbeitungsfenster wird aktualisiert."} + , { "warning.update","Das Objekt \"{0}\", das gerade bearbeitet" + + " wird, wurde ge\u00e4ndert. Der aktuelle Editiervorgang wird abgebrochen." + + " "} + , { "webinfo.text","" + + "

Mehr Informationen:

" + + "

" + + " Java Webstart ist in allen Java Version seit 1.4.0 enthalten." + + " Um Rapla zu starten brauchen Sie Java 1.4 oder eine neuere Version. Diese k\u00f6nnen Sie herunterladen von" + + " java.sun.com." + + "

" + + "

" + + " Besuchen Sie auch rapla.sourceforge.net f\u00fcr mehr Informationen \u00fcber Rapla." + + "

" + + " "} + , { "week","Woche"} + , { "week_compact","kompakte Woche"} + , { "weekday","Wochentag"} + , { "weekly","w\u00f6chentlich"} + , { "weeks","Wochen"} + , { "weekview.print.choose_export","W\u00e4hlen Sie die Speichermethode!"} + , { "weekview.print.dialog_title","Druck Voransicht"} + , { "weekview.print.format_button","Drucker-Einstellungen"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","\u00dcberschrift"} + , { "width","Breite"} + , { "with","mit"} + , { "x_days_advance","x Tage im Voraus"} + , { "year","Jaar"} + , { "yearly","j\u00e4hrlich"} + , { "years","Jare"} + , { "yes","Ja"} + , { "zero_appointment","keinem Termin"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources_es.java b/generated-src/org/rapla/RaplaResources_es.java new file mode 100644 index 0000000..8be2953 --- /dev/null +++ b/generated-src/org/rapla/RaplaResources_es.java @@ -0,0 +1,421 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Anular"} + , { "add","A\u00f1adir"} + , { "additional-view","Informaci\u00f3n complementaria"} + , { "admin","Administrador"} + , { "admin.login","\u00a1Dispone de derechos de administrador!"} + , { "administration","Administraci\u00f3n"} + , { "all-day","24h"} + , { "all_filtered","Todos los objetos filtrados."} + , { "all_users","Todos los usuarios"} + , { "allocatable_in_timeframe","Puede ser asignado en el periodo"} + , { "allocation_view","Asignaci\u00f3n de {0}"} + , { "alteration","Modificaci\u00f3n"} + , { "and","y"} + , { "apply","Aplicar"} + , { "appointment","Reserva"} + , { "appointment.convert","Convertir a los eventos individuales"} + , { "appointment.day_x","el d\u00eda x"} + , { "appointment.days","D\u00eda(s)"} + , { "appointment.exception.days","D\u00edas de excepciones"} + , { "appointment.exception.general","Excepciones :"} + , { "appointment.exceptions","Excepciones"} + , { "appointment.format.exceptions","{0} Excepciones :"} + , { "appointment.hours","Hora(s)"} + , { "appointment.minutes","min."} + , { "appointment.next_day","d\u00eda siguiente"} + , { "appointment.no_exceptions","Sin excepciones"} + , { "appointment.rule","Regla :"} + , { "appointment.same_day","mismo d\u00eda"} + , { "appointment_list","Lista de citas"} + , { "appointments","Citas"} + , { "attribute","Atributo"} + , { "attributes","Atributos"} + , { "available","Disponible"} + , { "back","Volver"} + , { "bind_with_person","connectar con persona"} + , { "calendar","Calendario"} + , { "calendar_settings","la configuraci\u00f3n del calendario"} + , { "calendarname","Calendario nombre: "} + , { "calendarweek.abbreviation","se {0,date,w}"} + , { "cancel","Cancelar"} + , { "categories","Categor\u00edas"} + , { "category","Categor\u00eda"} + , { "change","Modificar"} + , { "change.format","Modificar {0}"} + , { "change_appointment","Modificar la reserva"} + , { "changes","Modificaciones"} + , { "choose_language","Escoja su idioma :"} + , { "choose_root_category","Seleccionar la categor\u00eda ra\u00edz"} + , { "class","Clase"} + , { "classification","Clasificaci\u00f3n"} + , { "close","Cerrar"} + , { "color","Color"} + , { "complete_time","Periodo total"} + , { "confirm","Confirmar"} + , { "confirm-close.ok","Anular las modificaciones"} + , { "confirm-close.question","\u00a1No ha guardado las modificaciones!"} + , { "confirm-close.title","\u00a1Modificaciones no guardadas!"} + , { "confirm.dialog.question","\u00bfGuardar esta informaci\u00f3n?"} + , { "confirm.dialog.title","Confirmar {0}"} + , { "conflict.appointment1","\u00bfCu\u00e1ndo?"} + , { "conflict.appointment2","Conflicto de asignaci\u00f3n"} + , { "conflict.reservation1","\u00bfQu\u00e9 evento?"} + , { "conflict.reservation2","\u00bfOtro evento?"} + , { "conflict.resource","\u00bfQu\u00e9/Qui\u00e9n?"} + , { "conflict.user","\u00bfCon qui\u00e9n?"} + , { "conflictUC","Conflictos ({0,number,integer})"} + , { "conflicts","Conflictos"} + , { "connection","conexi\u00f3n a servidor"} + , { "constraints","Restricciones"} + , { "continue","Continuar"} + , { "copy","Copiar"} + , { "copy_appointment.format","\u00bfDesea copiar toda la serie o s\u00f3lo la reserva del {0}?"} + , { "copy_to_clipboard","Copiar al portapapeles"} + , { "create","Crear"} + , { "created_at","Creado el"} + , { "customized","Espec\u00edfico"} + , { "daily","A diario"} + , { "database","Base de datos"} + , { "date","Fecha"} + , { "day","D\u00eda"} + , { "days","d\u00edas"} + , { "default","Est\u00e1ndar"} + , { "defaultselection","Selecci\u00f3n por defecto"} + , { "delete","Borrar"} + , { "delete.abort","\u00a1No, no lo hagas!"} + , { "delete.format","Eliminar {0}"} + , { "delete.ok","S\u00ed, borrar"} + , { "delete.title","\u00bfBorrar?"} + , { "delete_appointment.format","\u00bfDesea eliminar toda la serie o s\u00f3lo la reserva del {0}?"} + , { "delete_selection","Borrar la selecci\u00f3n"} + , { "destination","Destino"} + , { "display_exceptions","Mostrar las excepciones en el calendario"} + , { "duration","Duraci\u00f3n"} + , { "dynamictype","Tipo"} + , { "dynamictype.annotation.nameformat","Formato de nombre visualizado"} + , { "dynamictype.annotation.nameformat.description","Meta la clave entre {} para insertar los atributos, por ejemplo {miClave}"} + , { "dynamictype.name","Nombre de tipo"} + , { "edit","Editar"} + , { "edit-view","Vista de modificaci\u00f3n"} + , { "edit.format","Modificar {0}"} + , { "edit_advanced","Mostrar par\u00e1metros para usuarios experimentados"} + , { "edit_reservation.format","Modificar el evento : {0}"} + , { "edit_reservations","modificar las propias"} + , { "elementkey","Clave de elemento"} + , { "email","Email"} + , { "end_date","Fin"} + , { "end_time","Hora final"} + , { "error","Error"} + , { "error.cant_delete_your_account","\u00a1No puede borrar [{0}], porque est\u00e1 usando esa cuenta en estos momentos!"} + , { "error.connect","\u00a1La conexi\u00f3n a [{0}] ha fallado! El servidor puede no estar disponible. Int\u00e9ntelo m\u00e1s tarde."} + , { "error.connection_closed","Sin conexi\u00f3n a [{0}]. Por favor, reinicie Rapla."} + , { "error.dependencies","Existen dependencias para estos objetos"} + , { "error.invalid_key","\u00a1\"{0}\" no es una clave v\u00e1lida!" + + " Nota : S\u00f3lo se puede utilizar una combinaci\u00f3n de max. 50 letras, d\u00edgitos o uno de los" + + " siguientes caracteres {1}. La clave debe comenzar con {2} o una carta! Ejemplo: N\u00famero_de_plazas" + + " "} + , { "error.login","\u00a1Error al acceder al sistema!"} + , { "error.new_version","El objeto {0} no ha podido ser modificado. Ha sido modificado recientemente por otra persona." + + " Existe en memoria una versi\u00f3n m\u00e1s reciente del mismo. "} + , { "error.no_appointment","\u00a1Un evento ha de tener al menos una cita!"} + , { "error.no_entry_for","Debe dar un nombre para : {0}"} + , { "error.no_key","Debe dar una clave para : {0}"} + , { "error.no_name","\u00a1Debe dar un nombre!"} + , { "error.no_reservation_name","\u00a1Debe introducir un t\u00edtulo para su evento!"} + , { "error.no_rollback","\u00a1Atenci\u00f3n! La actualizaci\u00f3n de la base de datos ha fallado. Puesto" + + " que su base de datos no soporta transacciones, esto puedo ocasionar errores serios. Por favor, contacte" + + " con su administrador inmediatamente!"} + , { "error.not_unique","\u00a1El nombre \"{0}\" ya est\u00e1 en uso. Por favor, escoja un nombre diferente!"} + , { "error.one_type_requiered","\u00a1Al menos un tipo debe estar disponible!"} + , { "error.passwords_dont_match","\u00a1Las palabras de paso no coinciden!"} + , { "error.reference_not_stored","\u00a1Atenci\u00f3n! No se pudo encontrar el objeto referenciado [{0}]. Probablemente se elimin\u00f3 recientemente."} + , { "error.rollback","La actualizaci\u00f3n de la base de datos ha fallado." + + " Se han cancelado todas las modificaciones"} + , { "error.wrong_password","\u00a1Palabra de paso incorrecta!"} + , { "every_appointment","Todas las citas"} + , { "everytime","Siempre"} + , { "exception","Excepci\u00f3n"} + , { "exchange_allocatables","Modificar la asignaci\u00f3n"} + , { "exclamation.format","{0} !"} + , { "exit","Salir"} + , { "exit.abort","Continuar Rapla >>"} + , { "exit.ok","\u00bfAbandonar Rapla?"} + , { "exit.question","\u00bfDesea realmente abandonar Rapla?"} + , { "exit.title","\u00bfAbandonar Rapla?"} + , { "expected_columns","N\u00famero de columnas"} + , { "expected_rows","N\u00famero de l\u00edneas"} + , { "export","Exportar"} + , { "file","Fichero"} + , { "filter","Filtro"} + , { "filter.contains","contiene"} + , { "filter.earlier_than","es anterior a las"} + , { "filter.equals","es igual a"} + , { "filter.greater_or_equals","es mayor o igual que"} + , { "filter.is_greater_than","es mayor que"} + , { "filter.is_smaller_than","es menor que"} + , { "filter.later_than","es posterior a las"} + , { "filter.not_equals","es desigual"} + , { "filter.smaller_or_equals","es menor o igual que"} + , { "filter_allocatable","Recursos y personas"} + , { "filter_reservation.all","De todos los usuarios"} + , { "filter_reservation.own","Sus propios eventos"} + , { "filter_restrictions","Limitar la vista de {0}"} + , { "filtername","Nombre del filtro"} + , { "fixed_date","Fecha fija"} + , { "for","para"} + , { "forename","Nombre"} + , { "format.repeat_from","a partir de {0}"} + , { "format.repeat_n_times","repite {0} veces"} + , { "format.repeat_until","hasta {0}"} + , { "goto_date","Ir a la fecha"} + , { "group","Grupo"} + , { "groups","Grupos"} + , { "help","Ayuda"} + , { "hierarchy","Jerarqu\u00eda"} + , { "holdbackconflicts","No tener en cuenta los conflictos"} + , { "hour","Hora"} + , { "hours","Horas"} + , { "import","Importar"} + , { "in_period.format","dentro del periodo {0}"} + , { "including_date","incluyendo la fecha: {0} "} + , { "info","Info"} + , { "info.text","" + + " Rapla Version 1.4.3-beta" + + "
" + + " (C) Copyright 2000-2011 Rapla Team" + + "

P\u00e1gina de Rapla: http://rapla.org" + + "

" + + "

Env\u00eda tus propuestas de cambios, preguntas, o errores encontrados" + + " a la lista de correo de nuestros desarrolladores:
" + + " rapla-developers@lists.sourceforge.net" + + "

" + + "

Version : 2011-10-05 13:41

" + + "

Firma: {0}

" + + "

Version Java {1}

" + + " "} + , { "info.title","" + + " Rapla Version 1.4.3-beta" + + " "} + , { "insert","Insertar"} + , { "interval","Intervalo"} + , { "interval.format","Cada {0} {1}"} + , { "keep","Conservar"} + , { "key","Clave"} + , { "language","Idioma"} + , { "last_changed","\u00daltima modificaci\u00f3n el"} + , { "last_changed_by","\u00daltima modificaci\u00f3n"} + , { "legend","Leyenda"} + , { "level","Nivel"} + , { "license.text","" + + " Rapla Version 1.4.3-beta (C) Copyright 2000-2011 Rapla Team" + + "

\u00a1\u00a1Rapla viene SIN\u00a0GARANT\u00cdA!!" + + " Rapla es software libre, as\u00ed que puede usarlo y distribuirlo bajo las siguientes condiciones.

" + + " "} + , { "licensedialog.title","La licencia GNU"} + , { "list.format","{0} : {1}"} + , { "load","Cargar"} + , { "login","Acceso"} + , { "logindialog.title","Acceso a Rapla"} + , { "logout","Salir"} + , { "main-view","Vista principal"} + , { "minute","Hora"} + , { "minutes","Horas"} + , { "month","Mes"} + , { "monthly","mensual"} + , { "months","Meses"} + , { "move","Mover"} + , { "move_appointment.format","\u00bfDesea desplazar toda la seria o s\u00f3lo la reserva del {0}?"} + , { "name","Nombre"} + , { "never","Nunca"} + , { "new","Nuevo"} + , { "new_appointment","Nueva cita"} + , { "new_category","Nueva categor\u00eda"} + , { "new_password","Nueva palabra de paso"} + , { "new_reservation","nuevo evento"} + , { "new_reservation.format","Nuevo evento : {0}"} + , { "new_rule","Nueva regla para"} + , { "new_sub-category","Nueva sub-categor\u00eda"} + , { "no","No"} + , { "no-view","Invisible"} + , { "no_classification","Sin clasificaci\u00f3n"} + , { "no_repeating","\u00danica"} + , { "not_selected.help","Actualmente no seleccionado.
Desmarca \"S\u00f3lo mis reservas\" o cambia las configuraciones de los filtros."} + , { "not_visible","no visible"} + , { "not_visible.help","No visible.
El acceso a la informaci\u00f3n de la reserva est\u00e1 restringido."} + , { "nothing_selected","Nada seleccionado"} + , { "occupation","Ocupaci\u00f3n"} + , { "ok","OK"} + , { "old_password","Antig\u00fca palabra de paso"} + , { "only_own_reservations","S\u00f3lo mis reservas"} + , { "open","Abrir"} + , { "options","Opciones"} + , { "or","o"} + , { "password","Palabra de paso"} + , { "password_verification","Verificaci\u00f3n de palabra de paso"} + , { "paste","Pegar"} + , { "paste_as","Pegar como"} + , { "period","Periodo"} + , { "period.format.end","Fin de {0}"} + , { "period.format.start","Inicio de {0}"} + , { "period.format.week","{0}.Sem. {1}"} + , { "period.not_set","Seleccionar el periodo"} + , { "period_view","Periodo"} + , { "periods","Periodos"} + , { "permission.access","Acceso"} + , { "permission.admin","Derechos de administrador"} + , { "permission.allocate","Puede asignar"} + , { "permission.allocate-conflicts","Puede asignar y crear conflictos"} + , { "permission.denied","Denegado"} + , { "permission.read","Puede leer"} + , { "permissions","Permisos"} + , { "person","Persona"} + , { "person_type","Tipo de persona"} + , { "person_types","Tipos de personas"} + , { "persons","Personas"} + , { "preferences","Preferencias"} + , { "print","Imprimir"} + , { "print_to_file","Imprimir en Fichero"} + , { "publish","Publicar"} + , { "question","Pregunta"} + , { "rapla.name","Rapla"} + , { "rapla.title","Rapla, el planificador inteligente"} + , { "rapla.welcome","Hola {0}, \u00a1disfruta planificando!"} + , { "refresh","Actualizar"} + , { "reload_data","Recargar los datos"} + , { "remove","Eliminar"} + , { "repeat","repite"} + , { "repeating","Repetir"} + , { "repeating.end_date","hasta"} + , { "repeating.forever","indefinido"} + , { "repeating.interval.post","."} + , { "repeating.interval.pre","Cada"} + , { "repeating.n_times","x veces"} + , { "repeating.start_date","a partir de"} + , { "report","Informe"} + , { "reservation","Evento"} + , { "reservation.allocations","Asignaciones : "} + , { "reservation.appointments","Citas: "} + , { "reservation.create_without_wizard","Evento"} + , { "reservation.name","Nombre del evento"} + , { "reservation.owner","Reservado por"} + , { "reservation_type","Tipo de evento"} + , { "reservations","Eventos"} + , { "reservations_from_all_users","Eventos de todos los usuarios"} + , { "reset","Restablecer"} + , { "resource","Recurso"} + , { "resource.owner","Registrado por"} + , { "resource_type","Tipo de recurso"} + , { "resource_types","Tipos de recursos"} + , { "resources","Recursos"} + , { "resources_persons","Recursos y personas"} + , { "restart_client","Reiniciar el cliente Rapla"} + , { "restart_options","..."} + , { "restart_server","Reiniciar el servidor"} + , { "root","Ra\u00edz"} + , { "rows_per_hour","L\u00edneas por hora"} + , { "save","Guardar"} + , { "search","Buscar"} + , { "second","secundo"} + , { "seconds","secundos"} + , { "select","Seleccionar"} + , { "selectable","Seleccionable"} + , { "selectable_on","Seleccionable en"} + , { "selected","Seleccionado"} + , { "selected_on","Seleccionado en"} + , { "selection","Selecci\u00f3n"} + , { "selection_resource","Selecci\u00f3n de recursos"} + , { "serie","Serie"} + , { "server","Servidor"} + , { "show_as","Mostrar como"} + , { "show_conflicts","Mostrar las conflictos"} + , { "show_tips","Mostrar las tips mouse-over"} + , { "single_appointment","Reserva \u00fanica"} + , { "source","Fuente"} + , { "start_date","Inicio"} + , { "start_rapla_with_applet","" + + " iniciar Rapla (con Java-Plugin)" + + " "} + , { "start_rapla_with_webstart","" + + " iniciar Rapla (con java webstart)" + + " "} + , { "start_time","Hora de inicio"} + , { "surname","Apellidos"} + , { "switch_back","Volver a ser administrador"} + , { "switch_to","Cambiar a"} + , { "table","Tabla"} + , { "time_at","a las"} + , { "time_until","hasta"} + , { "today","Hoy"} + , { "total_occurances","N\u00famero de apariciones"} + , { "translation","Traducci\u00f3n"} + , { "translation.format","Traducci\u00f3n de \"{0}\":"} + , { "type","Tipo"} + , { "type.boolean","S\u00ed|No"} + , { "type.date","Fecha"} + , { "type.int","N\u00famero entero"} + , { "type.rapla:category","Categor\u00eda"} + , { "type.string","Texto"} + , { "types","Tipos"} + , { "user","Usuario"} + , { "username","Nombre de usuario"} + , { "users","Usuarios"} + , { "view","Ver"} + , { "warning","Atenci\u00f3n"} + , { "warning.conflict","\u00a1ATENCI\u00d3N : Se han encontrado conflictos!"} + , { "warning.duplicated_appointments","\u00a1ATENCI\u00d3N : La misma reserva existe en m\u00faltiples ocasiones [{0}]!"} + , { "warning.experienced_users_only","\u00a1Estos par\u00e1metros est\u00e1n reservados s\u00f3lo para usuarios experimentados!"} + , { "warning.max-one-eventtype","S\u00f3lo un tipo de evento se permite. Ajuste el filtro!"} + , { "warning.no_allocatables_selected","\u00a1No ha seleccionado ning\u00fan(a) recurso/persona"} + , { "warning.no_conflict_permission","\u00a1No tiene permisos suficientes para crear conflictos para [{0}]!"} + , { "warning.no_reserve_permission","\u00a1No tiene permisos suficientes para efectuar/modificar [{0}] la reserva [{1}]!"} + , { "warning.period_shorter_than_week","\u00a1El periodo es inferior a una semana!"} + , { "warning.readonly_storage","\u00a1Los datos se han modificado s\u00f3lo en memoria. Las modificaciones se perder\u00e1n para las sesiones siguientes!"} + , { "warning.reservation.delete","El evento que est\u00e1 editando ha sido eliminado"} + , { "warning.reservation.update","El evento que est\u00e1 editando ha sido modificado." + + " La informaci\u00f3n que aparece en esta ventana ser\u00e1 actualizada."} + , { "warning.update","El objeto \"{0}\" que est\u00e1 editando ha sido modificado fuera de la ventana" + + " La edici\u00f3n actual va a ser interrumpida."} + , { "webinfo.text","" + + "

M\u00e1s informaci\u00f3n:

" + + "

" + + " Java-Webstart se incluye en todas las versiones de Java desde la 1.4.0." + + " Para ejecutar Rapla, se necesita Java 1.4 o superior. Se lo puede descargar de" + + " java.sun.com." + + "

" + + "

" + + " Para m\u00e1s informaci\u00f3n, visite rapla.sourceforge.net." + + "

" + + " "} + , { "week","Semana"} + , { "week_compact","Semana corta"} + , { "weekday","D\u00eda de la semana"} + , { "weekly","Semanal"} + , { "weeks","semanas"} + , { "weekview.print.choose_export","Escojer el m\u00e9todo de almacenamiento"} + , { "weekview.print.dialog_title","Imprimir la previsualizaci\u00f3n"} + , { "weekview.print.format_button","Preferencias de impresi\u00f3n"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","T\u00edtulo"} + , { "width","Ancho"} + , { "with","con"} + , { "x_days_advance","x d\u00edas de antelaci\u00f3n"} + , { "year",".."} + , { "yearly","anual"} + , { "years",".."} + , { "yes","S\u00ed"} + , { "zero_appointment","Ninguna cita"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources_fr.java b/generated-src/org/rapla/RaplaResources_fr.java new file mode 100644 index 0000000..946b9ee --- /dev/null +++ b/generated-src/org/rapla/RaplaResources_fr.java @@ -0,0 +1,424 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Annuler"} + , { "add","Ins\u00e9rer"} + , { "additional-view","Informations compl\u00e9mentaires"} + , { "admin","Administrateur"} + , { "admin.login","Vous disposez des droits d'administrateur !"} + , { "administration","Administration"} + , { "all-day","24h"} + , { "all_filtered","Tous les objets filtr\u00e9s."} + , { "all_users","Tous les utilisateurs"} + , { "allocatable_in_timeframe","Peut \u00eatre allou\u00e9 pendant la p\u00e9riode"} + , { "allocation_view","Allocation de {0}"} + , { "alteration","Modification"} + , { "and","et"} + , { "apply","Valider"} + , { "appointment","R\u00e9servation"} + , { "appointment.convert","Convertir des \u00e9v\u00e9nements uniques"} + , { "appointment.day_x","le jour x"} + , { "appointment.days","Jour(s)"} + , { "appointment.exception.days","Jours d'exceptions"} + , { "appointment.exception.general","Exceptions :"} + , { "appointment.exceptions","Exceptions"} + , { "appointment.format.exceptions","{0} Exceptions :"} + , { "appointment.hours","Heure(s)"} + , { "appointment.minutes","min."} + , { "appointment.next_day","jour suivant"} + , { "appointment.no_exceptions","Sans exception"} + , { "appointment.rule","R\u00e8gle :"} + , { "appointment.same_day","m\u00eame jour"} + , { "appointment_list","Liste des r\u00e9servations"} + , { "appointments","R\u00e9servations"} + , { "attribute","Attribut"} + , { "attributes","Attributs"} + , { "available","Disponible"} + , { "back","Retour"} + , { "bind_with_person","connecter personne"} + , { "calendar","Calendrier"} + , { "calendar_settings","L'Affichage"} + , { "calendarname","Nom du calendrier: "} + , { "calendarweek.abbreviation","S{0,date,w}"} + , { "cancel","Annuler"} + , { "categories","Cat\u00e9gories"} + , { "category","Cat\u00e9gorie"} + , { "change","Modifier"} + , { "change.format","Modifier {0}"} + , { "change_appointment","Modifier la r\u00e9servation"} + , { "changes","Modifications"} + , { "choose_language","Choisissez votre langue :"} + , { "choose_root_category","S\u00e9lectionner la cat\u00e9gorie racine"} + , { "class","Classe"} + , { "classification","Classification"} + , { "close","Fermer"} + , { "color","Couleur"} + , { "complete_time","P\u00e9riode totale"} + , { "confirm","Confirmer"} + , { "confirm-close.ok","Annuler les modifications"} + , { "confirm-close.question","Vous n'avez pas sauvegard\u00e9 les modifications!"} + , { "confirm-close.title","Modifications non sauvegard\u00e9es !"} + , { "confirm.dialog.question","Sauvegarder cette information ?"} + , { "confirm.dialog.title","Confirmer {0}"} + , { "conflict.appointment1","Quand ?"} + , { "conflict.appointment2","Conflit d'allocation"} + , { "conflict.reservation1","Quel \u00e9v\u00e8nement ?"} + , { "conflict.reservation2","Autre \u00e9v\u00e8nement ?"} + , { "conflict.resource","Quoi/Qui ?"} + , { "conflict.user","Avec qui ?"} + , { "conflictUC","Conflits ({0,number,integer})"} + , { "conflicts","Conflits"} + , { "connection","connexion au serveur"} + , { "constraints","Contraintes"} + , { "continue","Suivant"} + , { "copy","Copier"} + , { "copy_appointment.format","Voulez-vous copier toute la s\u00e9rie de r\u00e9servations ou seulement celle-ci {0}?"} + , { "copy_to_clipboard","Copier vers le presse papier"} + , { "create","Fermer"} + , { "created_at","Cr\u00e9\u00e9 le"} + , { "customized","Sp\u00e9cifique"} + , { "daily","Quotidien"} + , { "database","Base de donn\u00e9es"} + , { "date","Date"} + , { "day","Jour"} + , { "days","Jours"} + , { "default","Standard"} + , { "defaultselection","S\u00e9lection par d\u00e9faut"} + , { "delete","Effacer"} + , { "delete.abort","Annuler la commande"} + , { "delete.format","Effacer {0}"} + , { "delete.ok","Oui, effacer"} + , { "delete.question","Vous allez effacer les objets suivants :"} + , { "delete.title","Effacer"} + , { "delete_appointment.format","Voulez-vous effacer toute la s\u00e9rie de r\u00e9servations ou seulement celle-ci {0}?"} + , { "delete_selection","Effacer la s\u00e9lection"} + , { "destination","destination"} + , { "display_exceptions","Afficher les exceptions dans le calendrier"} + , { "duration","Dur\u00e9e"} + , { "dynamictype","Type"} + , { "dynamictype.annotation.nameformat","Mettre en forme l'affichage"} + , { "dynamictype.annotation.nameformat.description","Mettez la cl\u00e9 entre {} pour ins\u00e9rer des attributs, par ex. {macl\u00e9}"} + , { "dynamictype.name","Nom du type"} + , { "edit","Modifier"} + , { "edit-view","\u00c9cran de modification"} + , { "edit.format","Modifier {0}"} + , { "edit_advanced","Affiche param\u00e9trage pour utilisateurs exp\u00e9riment\u00e9s"} + , { "edit_reservation.format","Modifier l\"\u00e9v\u00e8nement: {0}"} + , { "edit_reservations","modifier les siennes"} + , { "elementkey","Cl\u00e9 d'\u00e9l\u00e9ment"} + , { "email","Email"} + , { "end_date","Fin"} + , { "end_time","Heure de fin"} + , { "error","Erreur"} + , { "error.cant_delete_your_account","Vous ne pouvez effacer [{0}], parce que vous utilisez actuellement ce compte !"} + , { "error.connect","La connexion vers [{0}] a \u00e9chou\u00e9 ! Le serveur n''est peut \u00eatre pas disponible. Essayez plus tard."} + , { "error.connection_closed","Pas ou plus de connexion vers [{0}]. Red\u00e9marrer Rapla."} + , { "error.dependencies","Des d\u00e9pendences existent pour ces objets"} + , { "error.invalid_key","\"{0}\" n''est pas une cl\u00e9 valide!" + + " Note: Vous ne pouvez utiliser une combinaison de max. 50 lettres, chiffres ou l'une des" + + " caract\u00e8res suivants {1}. La cl\u00e9 doit commencer par {2} ou une lettre! Exemple: Nombre_de_places" + + " "} + , { "error.login","Erreur dans le Login !"} + , { "error.new_version","L''objet {0} n''a pu \u00eatre modifi\u00e9. Il \u00e9tait en cours de modification par quelqu''un d''autre." + + " Une autre version existe. "} + , { "error.no_appointment","Un \u00e9v\u00e8nement est constitu\u00e9 d'au moins une r\u00e9servation !"} + , { "error.no_entry_for","Vous devez donner un nom pour : {0}"} + , { "error.no_key","Vous devez donner une cl\u00e9 pour : {0}"} + , { "error.no_name","Vous devez donner un nom !"} + , { "error.no_reservation_name","Vous devez donner un titre \u00e0 cet \u00e9v\u00e8nement !"} + , { "error.no_rollback","Attention ! Une erreur est survenue pendant l'actualisation de la base de donn\u00e9es. Votre base de donn\u00e9es refuse cette transaction. Pr\u00e9venez imm\u00e9diatement votre administrateur !"} + , { "error.not_unique","Le nom \"{0}\" est d\u00e9j\u00e0 existant. Choisissez en un autre !"} + , { "error.one_type_requiered","Au moins un type doit \u00eatre disponible !"} + , { "error.passwords_dont_match","Les mots de passe ne sont pas concordants !"} + , { "error.reference_not_stored","Attention! L''objet r\u00e9f\u00e9renc\u00e9 [{0}] n''a pu \u00eatre trouv\u00e9. A probablement \u00e9t\u00e9 effac\u00e9 r\u00e9cemment."} + , { "error.rollback","L'actualisation de la base de donn\u00e9es a \u00e9chou\u00e9." + + " Toutes les modifications sont perdues"} + , { "error.wrong_password","Mauvais mot de passe !"} + , { "every_appointment","Toutes les r\u00e9servations"} + , { "everytime","Toujours"} + , { "exception","Exception"} + , { "exchange_allocatables","Modifier l\"allocation"} + , { "exclamation.format","{0} !"} + , { "exclude_days","exclure les jours"} + , { "exit","Quitter"} + , { "exit.abort","Continuer Rapla >>"} + , { "exit.ok","Quitter Rapla ?"} + , { "exit.question","Souhaitez vous r\u00e9ellement quitter Rapla ?"} + , { "exit.title","Quitter Rapla ?"} + , { "expected_columns","Nombre de colonnes"} + , { "expected_rows","Nombre de lignes"} + , { "export","Export"} + , { "file","Fichier"} + , { "filter","Filtre"} + , { "filter.contains","contient"} + , { "filter.earlier_than","est avant le"} + , { "filter.equals","est \u00e9gal \u00e0"} + , { "filter.greater_or_equals","est sup\u00e9rieur ou \u00e9gal \u00e0"} + , { "filter.is_greater_than","est sup\u00e9rieur \u00e0"} + , { "filter.is_smaller_than","est plus petit que"} + , { "filter.later_than","est apr\u00e8s le"} + , { "filter.not_equals","est in\u00e9gaux"} + , { "filter.smaller_or_equals","est plus petit ou \u00e9gal que"} + , { "filter_allocatable","Ressources et personnes"} + , { "filter_reservation.all","De tous les utilisateurs"} + , { "filter_reservation.own","Vos propres \u00e9v\u00e8nements"} + , { "filter_restrictions","Limiter l''affichage de {0}"} + , { "filtername","Nom du filtre"} + , { "fixed_date","Date fixe"} + , { "for","pour"} + , { "forename","Pr\u00e9nom"} + , { "format.repeat_from","\u00e0 partir du {0}"} + , { "format.repeat_n_times","r\u00e9p\u00e8te {0} fois"} + , { "format.repeat_until","jusqu`\u00e0 {0}"} + , { "goto_date","Atteindre la date"} + , { "group","Groupe"} + , { "groups","Groupes"} + , { "help","Aide"} + , { "hierarchy","Hi\u00e9rarchie"} + , { "holdbackconflicts","Ne pas tenir compte des conflits"} + , { "hour","Heure"} + , { "hours","Heures"} + , { "import","Import"} + , { "in_period.format","dans la p\u00e9riode {0}"} + , { "including_date","y compris la date: {0}"} + , { "info","Information"} + , { "info.text","" + + " Rapla Version 1.4.3-beta" + + "
" + + " (C) Copyright 2000-2011 Rapla Team" + + "

Rapla-Webseite: http://rapla.org" + + "

" + + "

Envoyer vos propositions d\"\u00e9volutions, questions, ou erreurs trouv\u00e9es" + + " \u00e0 la Mailingliste d\u00e9veloppeurs :
" + + " rapla-developers@lists.sourceforge.net" + + "

" + + "

Version : 2011-10-05 13:41

" + + "

Signature: {0}

" + + "

Version Java {1}

" + + " "} + , { "info.title","" + + " Rapla Version 1.4.3-beta" + + " "} + , { "insert","Ins\u00e9rer"} + , { "interval","Interval"} + , { "interval.format","Tous/toutes les {0} {1}"} + , { "keep","Conserver"} + , { "key","Cl\u00e9"} + , { "language","Langue"} + , { "last_changed","Derni\u00e8re modification le"} + , { "last_changed_by","Derni\u00e8re modification"} + , { "legend","L\u00e9gende"} + , { "level","Niveau"} + , { "license.text","" + + " Rapla Version 1.4.3-beta (C) Copyright 2000-2011 Rapla Team" + + "

Rapla est SANS\u00a0GARANTIE!!" + + " Rapla est un logiciel libre, que vous pouvez utiliser et distribuer suivant ces conditions.

" + + " "} + , { "licensedialog.title","La licence GNU"} + , { "list.format","{0} : {1}"} + , { "load","Charger"} + , { "login","Login"} + , { "logindialog.title","Login Rapla"} + , { "logout","Quitter"} + , { "main-view","\u00c9cran principal"} + , { "minute","Minute"} + , { "minutes","Minutes"} + , { "month","Mois"} + , { "monthly","mensuel"} + , { "months","Mois"} + , { "move","D\u00e9placer"} + , { "move_appointment.format","Voulez-vous d\u00e9placer toute la s\u00e9rie de r\u00e9servations ou seulement celle-ci {0}?"} + , { "name","Nom"} + , { "never","Jamais"} + , { "new","Nouveau"} + , { "new_appointment","Nouvelle r\u00e9servation"} + , { "new_category","Nouvelle cat\u00e9gorie"} + , { "new_password","Nouveau mot de passe"} + , { "new_reservation","nouvel \u00e9v\u00e8nement"} + , { "new_reservation.format","Nouvel \u00e9v\u00e8nement : {0}"} + , { "new_rule","Nouvelle r\u00e8gle pour"} + , { "new_sub-category","Nouvelle sous-cat\u00e9gorie"} + , { "no","Non"} + , { "no-view","invisible"} + , { "no_classification","Pas de classification"} + , { "no_repeating","Unique"} + , { "not_selected.help","Actuellement non s\u00e9lectionn\u00e9.
D\u00e9-s\u00e9lectionnez \"Seulement mes r\u00e9servations\" ou changez vos r\u00e9glages du filtre."} + , { "not_visible","non visible"} + , { "not_visible.help","Non visible.
L'acc\u00e8s aux d\u00e9tails de la r\u00e9servation est restreint."} + , { "nothing_selected","Rien de s\u00e9lectionn\u00e9"} + , { "occupation","l''Occupation"} + , { "ok","OK"} + , { "old_password","Ancien mot de passe"} + , { "only_own_reservations","Seulement mes r\u00e9servations"} + , { "open","Ouvrir"} + , { "options","Options"} + , { "or","ou"} + , { "password","Mot de passe"} + , { "password_verification","V\u00e9rification du mot de passe"} + , { "paste","Coller"} + , { "paste_as","Coller"} + , { "period","P\u00e9riode"} + , { "period.format.end","Fin {0}"} + , { "period.format.start","D\u00e9but {0}"} + , { "period.format.week","{0}.Sem. {1}"} + , { "period.not_set","S\u00e9lectionner la p\u00e9riode"} + , { "period_view","P\u00e9riode"} + , { "periods","P\u00e9riodes"} + , { "permission.access","Acc\u00e8s"} + , { "permission.admin","Droits d'administrateur"} + , { "permission.allocate","peut allouer"} + , { "permission.allocate-conflicts","Peut allouer & Cr\u00e9er des conflits"} + , { "permission.denied","Interdit"} + , { "permission.read","peut lire"} + , { "permissions","Permissions"} + , { "person","Personne"} + , { "person_type","Type de personne"} + , { "person_types","Types de personne"} + , { "persons","Personnes"} + , { "preferences","pr\u00e9f\u00e9rence"} + , { "print","Imprimer"} + , { "print_to_file","Imprimer en Fichier"} + , { "publish","Publier"} + , { "question","Question"} + , { "rapla.name","Rapla"} + , { "rapla.title","Rapla, le planificateur intelligent"} + , { "rapla.welcome","Bonjour {0}, amusez vous en planifiant !"} + , { "refresh","Actualiser"} + , { "reload_data","Recharger les donn\u00e9es"} + , { "remove","Effacer"} + , { "repeat","r\u00e9p\u00e8te"} + , { "repeating","R\u00e9p\u00e9ter"} + , { "repeating.end_date","jusqu'\u00e0"} + , { "repeating.forever","Ind\u00e9fini"} + , { "repeating.interval.post","."} + , { "repeating.interval.pre","Chaque"} + , { "repeating.n_times","x fois"} + , { "repeating.start_date","\u00e0 partir de"} + , { "report","Rapport"} + , { "reservation","\u00c9v\u00e8nement"} + , { "reservation.allocations","Allocation :"} + , { "reservation.appointments","\u00c9v\u00e8nement :"} + , { "reservation.create_without_wizard","\u00c9v\u00e8nement"} + , { "reservation.name","Nom de l'\u00e9v\u00e8nement"} + , { "reservation.owner","r\u00e9serv\u00e9 par"} + , { "reservation_type","Type d'\u00e9v\u00e8nement"} + , { "reservations","\u00c9v\u00e8nements"} + , { "reservations_from_all_users","Ev\u00e8nement de tous les utilisateurs"} + , { "reset","R\u00e9initialisation"} + , { "resource","Ressource"} + , { "resource.owner","Enregistr\u00e9 par"} + , { "resource_type","Type de ressources"} + , { "resource_types","Types de ressources"} + , { "resources","Ressources"} + , { "resources_persons","Ressources et Personnes"} + , { "restart_client","Red\u00e9marrer Rapla"} + , { "restart_options","..."} + , { "restart_server","Red\u00e9marrer Serveur"} + , { "root","Racine"} + , { "rows_per_hour","Lignes par heure"} + , { "save","Sauvegarder"} + , { "search","Rechercher"} + , { "second","Seconde"} + , { "seconds","Secondes"} + , { "select","S\u00e9lectionner"} + , { "selectable","S\u00e9lectionnable le"} + , { "selectable_on","Possible le"} + , { "selected","S\u00e9lectionn\u00e9"} + , { "selected_on","S\u00e9lectionn\u00e9 le"} + , { "selection","S\u00e9lection"} + , { "selection_resource","S\u00e9lection des ressources"} + , { "serie","S\u00e9rie"} + , { "server","Serveur"} + , { "server_status","" + + " Etat du Serveur" + + " "} + , { "show_as","Afficher"} + , { "show_conflicts","Afficher conflits"} + , { "show_tips","Afficher mouse-over tips dans"} + , { "single_appointment","r\u00e9servation unique"} + , { "source","source"} + , { "start_date","D\u00e9but"} + , { "start_rapla_with_applet","" + + " D\u00e9marrer Rapla (avec le Plugin Java)" + + " "} + , { "start_rapla_with_webstart","" + + " D\u00e9marrer Rapla (avec java webstart)" + + " "} + , { "start_time","Heure de d\u00e9but"} + , { "surname","Nom"} + , { "switch_back","revenir vers"} + , { "switch_to","Changer pour"} + , { "table","Table"} + , { "time_at","\u00e0"} + , { "time_until","jusqu'\u00e0"} + , { "today","Aujourd'hui"} + , { "total_occurances","Nombre d'occurrences"} + , { "translation","Traduction"} + , { "translation.format","Traduction de \"{0}\":"} + , { "type","Type"} + , { "type.boolean","Oui|Non"} + , { "type.date","Date"} + , { "type.int","Nombre entier"} + , { "type.rapla:category","Cat\u00e9gorie"} + , { "type.string","Texte"} + , { "types","Types"} + , { "user","Utilisateur"} + , { "username","Profil utilisateur"} + , { "users","Utilisateurs"} + , { "view","Affichage"} + , { "warning","Attention"} + , { "warning.conflict","ATTENTION : Conflits trouv\u00e9s !"} + , { "warning.duplicated_appointments","ATTENTION : La m\u00eame r\u00e9servation existe plusieurs fois [{0}]!"} + , { "warning.experienced_users_only","Ce param\u00e9trage est r\u00e9serv\u00e9 aux utilisateurs exp\u00e9riment\u00e9s !"} + , { "warning.max-one-eventtype","Seulement 1 type d'\u00e9v\u00e9nement est autoris\u00e9. R\u00e9glez le filtre!"} + , { "warning.no_allocatables_selected","Vous n'avez pas s\u00e9lectionn\u00e9 de ressource/personne !"} + , { "warning.no_conflict_permission","Vous ne disposez pas des droits suffisants pour cr\u00e9er des conflits pour [{0}] !"} + , { "warning.no_reserve_permission","Vous ne disposez pas des droits suffisants pour effectuer/modifier [{0}] la r\u00e9servation [{1}] "} + , { "warning.period_shorter_than_week","La p\u00e9riode est inf\u00e9rieure \u00e0 une semaine !"} + , { "warning.readonly_storage","Modifi\u00e9 uniquement en m\u00e9moire. La modification sera perdue pour les sessions suivantes !"} + , { "warning.reservation.delete","L'\u00e9v\u00e8nement que vous \u00e9ditez vient d'\u00eatre effac\u00e9"} + , { "warning.reservation.update","L'\u00e9v\u00e8nement que vous \u00e9ditez a \u00e9t\u00e9 modifi\u00e9." + + " Les informations affich\u00e9es dans la fen\u00eatre vont \u00eatre rafraichies."} + , { "warning.update","L''objet \"{0}\" que vous \u00e9ditez a \u00e9t\u00e9 modifi\u00e9 hors de la fen\u00eatre." + + " Cette \u00e9dition va \u00eatre interrompue."} + , { "webinfo.text","" + + "

Plus d'informations:

" + + "

" + + " Java-Webstart est inclus dans toutes les versions de Java depuis la 1.4.0." + + " Pour lancer Rapla, vous avez besoin de Java 1.4 ou sup\u00e9rieur que vous pouvez t\u00e9l\u00e9charger depuis" + + " java.sun.com." + + "

" + + "

" + + " Consultez rapla.sourceforge.net pour de plus amples informations." + + "

" + + " "} + , { "week","Semaines"} + , { "week_compact","Semaine courte"} + , { "weekday","Jour de la semaine"} + , { "weekly","Hebdomadaire"} + , { "weeks","Semaines"} + , { "weekview.print.choose_export","Choisissez la m\u00e9thode de sauvegarde!"} + , { "weekview.print.dialog_title","Imprimer la pr\u00e9visualisation"} + , { "weekview.print.format_button","Pr\u00e9f\u00e9rence d'Impression"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","Titre"} + , { "width","Largeur"} + , { "with","avec"} + , { "x_days_advance","x jours en avance"} + , { "year","Ann\u00e9e"} + , { "yearly","annuel"} + , { "years","Ann\u00e9e"} + , { "yes","Oui"} + , { "zero_appointment","Pas de r\u00e9servation"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources_nl.java b/generated-src/org/rapla/RaplaResources_nl.java new file mode 100644 index 0000000..4fd3ab3 --- /dev/null +++ b/generated-src/org/rapla/RaplaResources_nl.java @@ -0,0 +1,403 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources_nl extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Annuleren"} + , { "add","Toevoegen"} + , { "additional-view","Extra gegevens"} + , { "admin","Beheerder"} + , { "admin.login","Beheerder"} + , { "administration","Systeem beheer"} + , { "all-day","24u"} + , { "all_filtered","alle gefilterde objecten."} + , { "all_users","Alle gebruikers"} + , { "allocatable_in_timeframe","Beschikbaarheid"} + , { "allocation_view","Toewijzing van {0}"} + , { "alteration","Wijziging"} + , { "and","en"} + , { "apply","OK"} + , { "appointment","Reservatie"} + , { "appointment.convert","Converteren naar \u00e9\u00e9nmalige evenementen"} + , { "appointment.day_x","op dag x"} + , { "appointment.days","dag(en)"} + , { "appointment.exception.days","Uitgezonderd:"} + , { "appointment.exception.general","Uitgezonderd:"} + , { "appointment.exceptions","Uitgezonderd"} + , { "appointment.format.exceptions","{0} Uitgezonderd: "} + , { "appointment.hours","uur"} + , { "appointment.minutes","min."} + , { "appointment.next_day","volgende dag"} + , { "appointment.no_exceptions","Geen uitzonderingen:"} + , { "appointment.rule","Regel: "} + , { "appointment.same_day","zelfde dag"} + , { "appointment_list","Lijst reservaties"} + , { "appointments","Reservaties"} + , { "attribute","Kenmerk"} + , { "attributes","Kenmerken"} + , { "available","Beschikbaar"} + , { "back","Sluit"} + , { "bind_with_person","Verbinding met persoon"} + , { "calendar","Kalender"} + , { "calendar_settings","Overzicht opslaan"} + , { "calendarname","Kalender naam: "} + , { "calendarweek.abbreviation","WK{0,date,w}"} + , { "cancel","Annuleren"} + , { "categories","Klassement"} + , { "category","Klassement"} + , { "change","Wijzig"} + , { "change.format","Wijzig {0}"} + , { "change_appointment","Wijzig afspraak"} + , { "changes","Wijzigingen"} + , { "choose_language","Taalkeuze:"} + , { "class","Klasse"} + , { "classification","Klassificatie"} + , { "close","Sluit"} + , { "color","Kleur"} + , { "complete_time","volledige duur"} + , { "confirm","Bevestig"} + , { "confirm-close.ok","Wijzigingen negeren"} + , { "confirm-close.question","De wijzigingen werden niet geregisteerd!"} + , { "confirm-close.title","Wijzigingen"} + , { "confirm.dialog.question","Bevestig deze informatie?"} + , { "confirm.dialog.title","Bevestig {0}"} + , { "conflict.appointment1","Wanneer?"} + , { "conflict.appointment2","Toewijzings conflict"} + , { "conflict.reservation1","Welk evenement?"} + , { "conflict.reservation2","Ander evenement?"} + , { "conflict.resource","Wat/Wie?"} + , { "conflict.user","Gebruiker?"} + , { "conflictUC","Conflict ({0,number,integer})"} + , { "conflicts","Conflict"} + , { "connection","Verbinding met de Server"} + , { "constraints","Beperkingen"} + , { "continue","Verder"} + , { "copy","Kopieer"} + , { "copy_appointment.format","Wil je de reeks of enkel de boeking op {0} kopieren?"} + , { "copy_to_clipboard","Kopie\u00ebr naar plakbord"} + , { "create","Aanmaken"} + , { "created_at","Aangemaakt op"} + , { "customized","Aangepast door Gebruiker"} + , { "daily","Dagelijks"} + , { "database","Databank"} + , { "date","Datum"} + , { "day","Dag"} + , { "days","Dagen"} + , { "default","Standaard"} + , { "defaultselection","Standaard Selectie"} + , { "delete","Verwijderen"} + , { "delete.abort","Annuleren"} + , { "delete.format","Verwijder: {0}"} + , { "delete.ok","OK"} + , { "delete.question","Volgende onderdelen worden verwijderd: "} + , { "delete.title","Verwijderen?"} + , { "delete_appointment.format","De volledige reeks of \u00e9\u00e9nmalig de afspraak op {0} verwijderen?"} + , { "delete_selection","Verwijder selectie"} + , { "destination","Naar"} + , { "display_exceptions","Uitzonderingen"} + , { "duration","Tijdsduur"} + , { "dynamictype","Folder"} + , { "dynamictype.annotation.nameformat","Titel formaat"} + , { "dynamictype.annotation.nameformat.description","Sleutels tussen {...} plaatsen; bvb. {mijnSleutel}"} + , { "dynamictype.name","Naam type"} + , { "edit","Bewerk"} + , { "edit-view","Toon als"} + , { "edit.format","Bewerk: {0}"} + , { "edit_advanced","Toon speciale instellingen"} + , { "edit_reservation.format","Bewerk evenement: {0}"} + , { "edit_reservations","bewerk eigen"} + , { "elementkey","Elementsleutel"} + , { "email","Email"} + , { "end_date","Stop datum"} + , { "end_time","tot"} + , { "error","Fout"} + , { "error.cant_delete_your_account","Je kan [{0}] niet verwijderen,omdat je deze momenteel in gebruik hebt!"} + , { "error.connect","Verbinding met [{0}] is verbroken, de server is niet beschikbaar, contacteer de Rapla beheerder of probeer later!"} + , { "error.connection_closed","Geen of een gesloten connectie naar [{0}]. Rapla herstarten a.u.b."} + , { "error.dependencies","Afhankelijk van"} + , { "error.invalid_key","\"{0}\" is een ongeldige sleutel!" + + " Nota: Maximaal 50 letters, cijfers of {1} beginnend met {2} of een letter!" + + " "} + , { "error.login","Aanmelding geweigerd!"} + , { "error.new_version","{0} versie {1} is recentelijk gewijzigd, versie {2} is beschikbaar. Probeer later."} + , { "error.no_appointment","Evenement zonder reservaties!"} + , { "error.no_entry_for","Je moet de gegevens opgeven voor: {0}"} + , { "error.no_key","Een sleutel is verplicht: {0}"} + , { "error.no_reservation_name","Een titel opgeven!"} + , { "error.no_rollback","Fout! Databank wijziging. Databank ondersteund geen transacties." + + " Dit kan tot serieuze fouten leiden.Neem onmiddelijk contact met de Rapla beheerder!"} + , { "error.not_unique","De naam \"{0}\" is reeds in gebruik. Kies een andere naam!"} + , { "error.one_type_requiered","Minimaal 1 soort is nodig."} + , { "error.passwords_dont_match","De paswoorden verschillen!"} + , { "error.reference_not_stored","Fout! Gevraagd object [{0}] niet gevonden. Waarschijnlijk recentelijk verwijderd."} + , { "error.rollback","Databank wijziging. Wijzigingen werden geannuleerd."} + , { "error.wrong_password","Verkeerd paswoord!"} + , { "every_appointment","Alle afspraken in lijst"} + , { "everytime","onbeperkt"} + , { "exception","Uitzondering"} + , { "exchange_allocatables","Wijzig toewijzing"} + , { "exclamation.format","{0} !"} + , { "exclude_days","Uitgezonderd dagen:"} + , { "exit","Sluiten"} + , { "exit.abort","Terug"} + , { "exit.ok","Planning be\u00ebindigen"} + , { "exit.question","Planning be\u00ebindigen?"} + , { "exit.title","Rapla be\u00ebindigen"} + , { "expected_columns","Aantal kolommen."} + , { "expected_rows","Aantal rijen"} + , { "export","Publiceer"} + , { "file","Bestand"} + , { "filter","Filter"} + , { "filter.contains","bevat"} + , { "filter.earlier_than","vroeger dan"} + , { "filter.equals","gelijk aan"} + , { "filter.greater_or_equals","groter dan of gelijk"} + , { "filter.is_greater_than","groter dan"} + , { "filter.is_smaller_than","kleiner dan"} + , { "filter.later_than","later dan"} + , { "filter.not_equals","ongelijk"} + , { "filter.smaller_or_equals","kleiner dan of gelijk"} + , { "filter_allocatable","Personen & Materialen"} + , { "filter_reservation.all","voor alle gebruikers"} + , { "filter_restrictions","beperk beeld van {0}"} + , { "filtername","Filter naam"} + , { "fixed_date","Vaste datum"} + , { "for","voor"} + , { "forename","Voornaam"} + , { "format.repeat_from","van {0}"} + , { "format.repeat_n_times","{0}X"} + , { "format.repeat_until","tot en met {0}"} + , { "goto_date","Ga naar datum"} + , { "group","Groep"} + , { "groups","Groepen"} + , { "help","Help"} + , { "hierarchy","Hierarchie"} + , { "holdbackconflicts","Conflicten onderdrukken"} + , { "hour","Uur"} + , { "hours","Uren"} + , { "import","Importeer"} + , { "in_period.format","in periode {0}"} + , { "including_date","met vaste datum = {0}"} + , { "info","Informatie"} + , { "info.text","" + + " (C) Copyright 2000-2011 Rapla Team
" + + "

Rapla versie 1.4.3-beta
" + + " Gebouwd op: 2011-10-05 13:41
" + + " Ondertekend: {0}
" + + " Java versie: {1}

" + + "

Rapla homepage: http://rapla.org
" + + " Support: http://lists.sourceforge.net/lists/listinfo/rapla-developers" + + " "} + , { "info.title","" + + " Rapla versie 1.4.3-beta" + + " "} + , { "insert","Toevoegen"} + , { "interval","Interval"} + , { "interval.format","Elke {0} {1}"} + , { "keep","Bewaar"} + , { "key","Sleutel"} + , { "language","Taal"} + , { "last_changed","Gewijzigd op"} + , { "last_changed_by","Laatst gewijzigd door"} + , { "legend","Legende"} + , { "level","Niveau"} + , { "license.text","" + + " Rapla versie 1.4.3-beta : 2011-10-05 13:41
" + + " (C) Copyright 2000-2011 Rapla Team" + + "

Rapla wordt geleverd ZONDER\u00a0GARANTIE.

" + + " Deze software kan enkel onder bepaalde voorwaarden vrij worden verspreid." + + " "} + , { "licensedialog.title","GNU Licentie"} + , { "list.format","{0}: {1}"} + , { "load","Laad"} + , { "login","Aanmelden"} + , { "logindialog.title","Rapla Aanmelden"} + , { "logout","Afmelden"} + , { "main-view","Basis gegevens"} + , { "minute","Minuut"} + , { "minutes","Minuten"} + , { "month","Maand"} + , { "monthly","Maandelijks"} + , { "months","Maanden"} + , { "move","Verplaats"} + , { "move_appointment.format","De volledige reeks of \u00e9\u00e9nmalig de afspraak op {0} verplaatsen?"} + , { "name","Naam"} + , { "never","nooit"} + , { "new","Nieuw"} + , { "new_appointment","Nieuwe afspraak"} + , { "new_category","Nieuw klassement"} + , { "new_password","Nieuw paswoord"} + , { "new_reservation","Nieuw evenement"} + , { "new_reservation.format","Nieuw evenement {0}"} + , { "new_rule","Nieuwe regel"} + , { "new_sub-category","Nieuw onderklassement"} + , { "no","Nee"} + , { "no-view","Onzichtbaar"} + , { "no_classification","Geen Classificatie"} + , { "no_repeating","E\u00e9nmalig"} + , { "not_selected.help","\"\"Enkel eigen reservaties\" afvinken\" of wijzig de filter instellingen.\". "} + , { "not_visible","onzichtbaar"} + , { "not_visible.help","Gewijgerd.
Toegang tot de boekings informatie is beperkt."} + , { "nothing_selected","Geen selectie"} + , { "occupation","Bezetting"} + , { "ok","OK"} + , { "old_password","Oud paswoord"} + , { "only_own_reservations","Enkel eigen reservaties"} + , { "open","Onbepaald"} + , { "options","Opties"} + , { "or","of"} + , { "password","Paswoord"} + , { "password_verification","Paswoord controle"} + , { "paste","Plakken"} + , { "paste_as","Plakken als"} + , { "period","Periode"} + , { "period.format.end","Einde van {0}"} + , { "period.format.start","Start van {0}"} + , { "period.format.week","Week {0} van {1}"} + , { "period.not_set","Kies periode"} + , { "period_view","Periode"} + , { "periods","Periode"} + , { "permission.access","Toegang"} + , { "permission.admin","Beheer"} + , { "permission.allocate","Toewijzen"} + , { "permission.allocate-conflicts","Toewijzen met conflicten"} + , { "permission.denied","Geen toegang"} + , { "permission.read","Lezen"} + , { "permissions","Toegang"} + , { "person","Persoon"} + , { "person_type","Type: Persoon"} + , { "person_types","Type: Personen"} + , { "persons","Personen"} + , { "preferences","Voorkeur"} + , { "print","Afdrukken"} + , { "print_to_file","Afdrukken naar Bestand"} + , { "publish","Publiceer"} + , { "question","Vraag"} + , { "rapla.title","Rapla, Smart Planning"} + , { "rapla.welcome","Online: {0}"} + , { "refresh","Actualiseren"} + , { "reload_data","herladen gegevens"} + , { "remove","Verwijderen"} + , { "repeat","herhaal"} + , { "repeating","Herhaling:"} + , { "repeating.end_date","tot en met"} + , { "repeating.forever","tot oneindig"} + , { "repeating.interval.post","-(ste/de)"} + , { "repeating.interval.pre","Elke"} + , { "repeating.n_times","x-Maal"} + , { "repeating.start_date","van"} + , { "report","Rapport"} + , { "reservation","Evenement"} + , { "reservation.allocations","Bezetting: "} + , { "reservation.appointments","Lijst afspraken:"} + , { "reservation.create_without_wizard","Evenement"} + , { "reservation.name","Evenement naam"} + , { "reservation.owner","Aangemaakt door"} + , { "reservation_type","Type Evenement"} + , { "reservations","Evenementen"} + , { "reservations_from_all_users","Evenementen van alle gebruikers"} + , { "reset","Terugzetten"} + , { "resource","Middel"} + , { "resource.owner","Geregistreerd door"} + , { "resource_type","Type: Middel"} + , { "resource_types","Middel type"} + , { "resources","Middelen"} + , { "resources_persons","Middelen&Personen"} + , { "restart_client","Herstart gebruiker"} + , { "restart_options","Om de wijzigingen te activeren moet je Rapla herstarten!"} + , { "restart_server","Herstart Rapla server"} + , { "root","Oorsprong"} + , { "rows_per_hour","Tijdsdelen per uur:"} + , { "save","Opslaan"} + , { "search","Opzoeken"} + , { "second","Seconde"} + , { "seconds","Seconden"} + , { "select","Selecteer"} + , { "selectable","Beschikbaarheid"} + , { "selectable_on","Voor:"} + , { "selected","Actief"} + , { "selected_on","Door:"} + , { "selection","Selecteer voorkeur"} + , { "selection_resource","Keuze middel"} + , { "serie","reeks"} + , { "server","Server"} + , { "show_as","Type"} + , { "show_conflicts","Conflicten"} + , { "show_tips","Tips"} + , { "single_appointment","\u00e9\u00e9nmalig"} + , { "source","Van"} + , { "start_date","Start datum"} + , { "start_rapla_with_applet","" + + " Start Rapla planning (Applet)" + + " "} + , { "start_rapla_with_webstart","" + + " Rapla Smart Planning" + + " "} + , { "start_time","van"} + , { "surname","Naam"} + , { "switch_back","Aanmelden als vorige gebruiker"} + , { "switch_to","Aanmelden als"} + , { "table","Tabel"} + , { "time_at","van"} + , { "time_until","tot"} + , { "today","Vandaag"} + , { "total_occurances","Totaal aantal"} + , { "translation","Vertaling"} + , { "translation.format","Vertaling voor \"{0}\":"} + , { "type","Type"} + , { "type.boolean","Ja|Neen"} + , { "type.date","Datum"} + , { "type.int","Getal"} + , { "type.rapla:category","Klassement"} + , { "type.string","Tekst"} + , { "types","Types"} + , { "user","Gebruiker"} + , { "username","Gebruiker"} + , { "users","Gebruikers"} + , { "view","Overzicht"} + , { "warning","Waarschuwing"} + , { "warning.conflict","WAARSCHUWING: Conflict gevonden!"} + , { "warning.duplicated_appointments","WAARSCHUWING: Dezelfde afspraak bestaat meerdere keren: [{0}]!"} + , { "warning.experienced_users_only","Deze instelling kan enkel gewijzigd worden door een super gebruiker!"} + , { "warning.max-one-eventtype","Enkel 1 type evenement is toegestaan. Pas de filter aan!"} + , { "warning.no_allocatables_selected","Evenement zonder Personen & Materialen!"} + , { "warning.no_conflict_permission","Aanmaken van conflicten voor [{0}], is niet toegestaan!"} + , { "warning.no_reserve_permission","Plannen of wijzigen van [{0}] in reservatie [{1}] is niet toegestaan!"} + , { "warning.period_shorter_than_week","Periode minder dan 1 week!"} + , { "warning.readonly_storage","Wijzigingen enkel in het geheugen. Gegevens worden niet opgeslagen."} + , { "warning.reservation.delete","Het evenement dat je bewerkt, werd verwijderd."} + , { "warning.reservation.update","Het evenement dat je wil wijzigen is gewijzigd." + + " De gegevens worden terug opgehaald."} + , { "warning.update","Het object \"{0}\" dat je bewerkt, werd gewijzigd. Bewerken wordt onderbroken."} + , { "webinfo.text","" + + "

Meer informatie:

" + + " rapla.sourceforge.net" + + " "} + , { "week","Week"} + , { "week_compact","Week (Compact)"} + , { "weekday","Weekdag"} + , { "weekly","Wekelijks"} + , { "weeks","Weken"} + , { "weekview.print.choose_export","Kies opslag methode!"} + , { "weekview.print.dialog_title","Afdrukvoorbeeld"} + , { "weekview.print.format_button","Printer voorkeur"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","Titel"} + , { "width","Breedte"} + , { "with","met"} + , { "x_days_advance","x dagen op voorhand"} + , { "year","Jaar"} + , { "yearly","Jaarlijks"} + , { "years","Jaren"} + , { "yes","Ja"} + , { "zero_appointment","Geen afspraak"} + }; +} diff --git a/generated-src/org/rapla/RaplaResources_pl.java b/generated-src/org/rapla/RaplaResources_pl.java new file mode 100644 index 0000000..04ad8e8 --- /dev/null +++ b/generated-src/org/rapla/RaplaResources_pl.java @@ -0,0 +1,383 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class RaplaResources_pl extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "abort","Anuluj"} + , { "add","Dodaj"} + , { "additional-view","Dodatkowe informacje"} + , { "admin","Administrator"} + , { "admin.login","Masz uprawnienia administratora."} + , { "administration","Administracja"} + , { "all-day","24h"} + , { "all_filtered","Wszystkie filtrowane obiekty."} + , { "all_users","Wszyscy"} + , { "allocatable_in_timeframe","Dost\u0119pne w okresie"} + , { "allocation_view","Przyporz\u0105dkowanie {0}"} + , { "alteration","Zmiana"} + , { "and","i"} + , { "apply","Zastosuj"} + , { "appointment","Termin"} + , { "appointment.convert","Przekszta\u0142\u0107 w wydarzenia jednorazowe"} + , { "appointment.day_x","dnia x"} + , { "appointment.days","Dzie\u0144(dni)"} + , { "appointment.exception.days","Wy\u0142\u0105czone dni:"} + , { "appointment.exception.general","Wyj\u0105tki:"} + , { "appointment.exceptions","Wyj\u0105tki"} + , { "appointment.format.exceptions","{0} Wyj\u0105tki:"} + , { "appointment.hours","Godzina(-y)"} + , { "appointment.minutes","min."} + , { "appointment.next_day","Nast\u0119pny dzie\u0144"} + , { "appointment.no_exceptions","Bez wyj\u0105tk\u00f3w:"} + , { "appointment.rule","Regu\u0142a:"} + , { "appointment.same_day","Ten sam dzie\u0144"} + , { "appointment_list","Lista termin\u00f3w"} + , { "appointments","Terminy"} + , { "attribute","Atrybut"} + , { "attributes","Atrybuty"} + , { "available","Dost\u0119pne"} + , { "back","Wstecz"} + , { "calendar","Kalendarz"} + , { "calendar_settings","ustawienia Kalendarz"} + , { "calendarname","Nazwa kalendarza:"} + , { "calendarweek.abbreviation","T{0,date,w}"} + , { "cancel","Anuluj"} + , { "categories","Kategorie"} + , { "category","Kategoria"} + , { "change","Zmie\u0144"} + , { "change.format","Zmie\u0144 {0}"} + , { "change_appointment","Edytuj termin"} + , { "changes","Zmiany"} + , { "choose_language","Wybierz j\u0119zyk:"} + , { "choose_root_category","Wybierz kategori\u0119 g\u0142\u00f3wn\u0105 (root):"} + , { "class","Klasa"} + , { "classification","Klasyfikacja"} + , { "close","Zamknij"} + , { "color","Kolor"} + , { "complete_time","Ca\u0142kowity czas"} + , { "confirm","Akceptuj"} + , { "confirm-close.ok","Ignoruj zmiany"} + , { "confirm-close.question","Nie zapisano zmian."} + , { "confirm-close.title","Nie zapisano zmian!"} + , { "confirm.dialog.question","Zapisa\u0107 te informacje?"} + , { "confirm.dialog.title","Potwierd\u017a {0}"} + , { "conflict.appointment1","Kiedy?"} + , { "conflict.appointment2","Konflikt przydzia\u0142u"} + , { "conflict.reservation1","Kt\u00f3re wydarzenie?"} + , { "conflict.reservation2","Inne wydarzenie?"} + , { "conflict.resource","Kto/co?"} + , { "conflict.user","U\u017cytkownik?"} + , { "conflictUC","Konflikty ({0,number,integer})"} + , { "conflicts","Konflikty"} + , { "connection","Po\u0142\u0105czenie z serwerem"} + , { "constraints","Ograniczenia"} + , { "continue","Kontynuuj"} + , { "copy","Kopiuj"} + , { "copy_appointment.format","Skopiowa\u0107 ca\u0142\u0105 seri\u0119, czy tylko wybrany termin {0}?"} + , { "copy_to_clipboard","Kopiuj do schowka"} + , { "create","Utw\u00f3rz"} + , { "created_at","Stworzono"} + , { "customized","Dostosowany"} + , { "daily","Codziennie"} + , { "database","Baza danych"} + , { "date","Data"} + , { "day","Dzie\u0144"} + , { "days","Dni"} + , { "default","Domy\u015blne"} + , { "delete","Usu\u0144"} + , { "delete.abort","Anulowa\u0107"} + , { "delete.format","Usu\u0144 {0}"} + , { "delete.ok","Tak, usu\u0144!"} + , { "delete.question","Nast\u0119puj\u0105ce elementy zostan\u0105 usuni\u0119te:"} + , { "delete.title","Usun\u0105\u0107?"} + , { "delete_appointment.format","Usun\u0105\u0107 ca\u0142\u0105 seri\u0119, czy tylko wybrany termin {0}?"} + , { "delete_selection","Usu\u0144"} + , { "destination","Miejsce docelowe"} + , { "display_exceptions","Poka\u017c wyj\u0105tki"} + , { "duration","Czas trwania"} + , { "dynamictype","Typ"} + , { "dynamictype.annotation.nameformat","Format wy\u015bwietlania"} + , { "dynamictype.annotation.nameformat.description","Nazwy klucza powinny znajdowa\u0107 si\u0119 w {} np. {klucz}."} + , { "dynamictype.name","Nazwa typu"} + , { "edit","Edytuj"} + , { "edit-view","Widok edycji"} + , { "edit.format","Edytuj {0}"} + , { "edit_advanced","Poka\u017c zaawansowane ustawienia"} + , { "edit_reservation.format","Edytuj wydarzenie: {0}"} + , { "edit_reservations","Edytuj swoje"} + , { "elementkey","Klucz"} + , { "email","E-mail"} + , { "end_date","Data zako\u0144czenia"} + , { "end_time","Czas zako\u0144czenia"} + , { "error","B\u0142\u0105d"} + , { "error.cant_delete_your_account","Nie mo\u017cesz usun\u0105\u0107 [{0}], poniewa\u017c obecnie u\u017cywasz tego konta!"} + , { "error.connect","Nie uda\u0142o si\u0119 po\u0142\u0105czy\u0107 z {0}! By\u0107 mo\u017ce host jest wy\u0142\u0105czony. Spr\u00f3buj ponownie p\u00f3\u017aniej."} + , { "error.connection_closed","Brak lub utracone po\u0142\u0105czenie z {0}. Uruchom ponownie Rapla."} + , { "error.dependencies","Istniej\u0105 zale\u017cno\u015bci dla tego obiektu"} + , { "error.invalid_key","\"{0}\" jest nieprawid\u0142owym kluczem!" + + " Mo\u017cesz u\u017cy\u0107 tylko liter, cyfr oraz jednego z tych znak\u00f3w {0}. Klucz musi zaczyna\u0107 si\u0119 od litery." + + " "} + , { "error.login","B\u0142\u0105d logowania"} + , { "error.new_version","Nie mo\u017cna zmodyfikowa\u0107 {0}. Obiekt zosta\u0142 niedawno zmieniony przez inn\u0105 osob\u0119. Istnieje nowsza wersja obiektu w pami\u0119ci."} + , { "error.no_appointment","Wydarzenie musi mie\u0107 cho\u0107 jeden termin."} + , { "error.no_entry_for","Musisz co\u015b wpisa\u0107 w: {0}"} + , { "error.no_key","Musisz poda\u0107 klucz: {0}"} + , { "error.no_name","Musisz wpisa\u0107 nazw\u0119!"} + , { "error.no_reservation_name","Podaj nazw\u0119 dla wydarzenia!"} + , { "error.no_rollback","B\u0142\u0105d! Aktualizacja bazy nie powiod\u0142a si\u0119. Twoja baza nie obs\u0142uguje transakcji, co mo\u017ce prowadzi\u0107 do powa\u017cnych b\u0142\u0119d\u00f3w. Skontaktuj si\u0119 ze swoim administratorem."} + , { "error.not_unique","Nazwa \"{0}\" jest ju\u017c zaj\u0119ta. Wybierz inn\u0105."} + , { "error.one_type_requiered","Przynajmniej jeden typ jest wymagany."} + , { "error.passwords_dont_match","Has\u0142a nie zgadzaj\u0105 si\u0119."} + , { "error.reference_not_stored","Nie mo\u017cna znale\u017a\u0107 obiektu [{0}]. Prawdopodobnie zosta\u0142 niedawno usuni\u0119ty."} + , { "error.rollback","B\u0142\u0105d aktualizacji bazy. Wszystkie zmiany zosta\u0142y utracone."} + , { "error.wrong_password","B\u0142\u0119dne has\u0142o!"} + , { "every_appointment","Ka\u017cdy termin"} + , { "everytime","Zawsze"} + , { "exception","Wyj\u0105tek"} + , { "exchange_allocatables","Zmie\u0144 przydzia\u0142"} + , { "exclamation.format","{0} !"} + , { "exclude_days","Wy\u0142\u0105cz dni:"} + , { "exit","Wyj\u015bcie"} + , { "exit.abort","Wr\u00f3\u0107 do Rapla"} + , { "exit.ok","Wyjd\u017a"} + , { "exit.question","Czy na pewno chcesz zako\u0144czy\u0107 Rapla?"} + , { "exit.title","Zako\u0144czy\u0107 Rapla?"} + , { "expected_columns","Liczba kolumn"} + , { "expected_rows","Liczba wierszy"} + , { "export","Eksportuj"} + , { "file","Plik"} + , { "filter","Filtr"} + , { "filter.contains","zawiera"} + , { "filter.earlier_than","przed"} + , { "filter.equals","dok\u0142adnie"} + , { "filter.greater_or_equals","wi\u0119ksze ni\u017c lub r\u00f3wna"} + , { "filter.is_greater_than","wi\u0119ksze ni\u017c"} + , { "filter.is_smaller_than","mniejsze ni\u017c"} + , { "filter.later_than","po"} + , { "filter.not_equals","nier\u00f3wny"} + , { "filter.smaller_or_equals","mniejsze ni\u017c lub r\u00f3wna"} + , { "filter_allocatable","Zasoby i osoby"} + , { "filter_reservation.all","Od wszystkich"} + , { "filter_reservation.own","Moje wydarzenia"} + , { "filter_restrictions","Ogranicz widok {0}"} + , { "filtername","Nazwa filtra"} + , { "fixed_date","Ustalona data"} + , { "for","dla / na"} + , { "forename","Imi\u0119"} + , { "format.repeat_from","od {0}"} + , { "format.repeat_n_times","Powt\u00f3rz {0} razy"} + , { "format.repeat_until","do {0}"} + , { "goto_date","Id\u017a do daty"} + , { "group","Grupa"} + , { "groups","Grupy"} + , { "help","Pomoc"} + , { "hierarchy","Hierarchia"} + , { "holdbackconflicts","Ignoruj konflikty"} + , { "hour","Godzina"} + , { "hours","Godziny"} + , { "in_period.format","w okresie {0}"} + , { "including_date","w tym dniu: {0}"} + , { "info","O Rapla"} + , { "info.text","" + + " Rapla - wersja 1.4.3-beta" + + "
" + + " (C) Copyright 2000-2011 Rapla Team" + + "

strona Rapla: http://rapla.org" + + "

" + + "

Pytania, sugestie, feedback:
" + + " rapla-developers@lists.sourceforge.net" + + "

" + + "

Build-Time: 2011-10-05 13:41

" + + "

Podpis: {0}

" + + "

Java - wersja {1}

" + + " "} + , { "insert","Wstaw"} + , { "interval","Interwa\u0142"} + , { "interval.format","Co {0} {1}"} + , { "keep","Zachowaj"} + , { "key","Klucz"} + , { "language","J\u0119zyk"} + , { "last_changed","Ostatnia zmiana"} + , { "last_changed_by","Zmienione przez"} + , { "legend","Legenda"} + , { "level","Poziom"} + , { "licensedialog.title","Licencja GNU"} + , { "list.format","{0}: {1}"} + , { "load","Wczytaj"} + , { "login","Logowanie"} + , { "logout","Wyloguj"} + , { "main-view","Widok g\u0142\u00f3wny"} + , { "month","Miesi\u0105c"} + , { "monthly","Co miesi\u0105c"} + , { "months","Miesi\u0105ce"} + , { "move","Przenie\u015b"} + , { "move_appointment.format","Przenie\u015b\u0107 ca\u0142\u0105 seri\u0119, czy tylko wybrany termin {0}?"} + , { "name","Nazwa"} + , { "never","Nigdy"} + , { "new","Nowy"} + , { "new_appointment","Nowy termin"} + , { "new_category","Nowa kategoria"} + , { "new_password","Nowe has\u0142o"} + , { "new_reservation","Nowe wydarzenie"} + , { "new_reservation.format","Nowe wydarzenie: {0}"} + , { "new_rule","Nowa regu\u0142a dla"} + , { "new_sub-category","Nowa podkategoria"} + , { "no","Nie"} + , { "no-view","niewidoczny"} + , { "no_classification","Brak klasyfikacji"} + , { "no_repeating","Jednorazowe"} + , { "not_selected.help","Nie wybrano.
Odznacz opcj\u0119 \"Poka\u017c tylko moje rezerwacje\" lub zmie\u0144 ustawienia filtru."} + , { "not_visible","Ukryty"} + , { "not_visible.help","Ukryty.
Dost\u0119p do informacji o rezerwacji jest zastrze\u017cony."} + , { "nothing_selected","Nic nie wybrano"} + , { "occupation","Zaw\u00f3d"} + , { "ok","OK"} + , { "old_password","Stare has\u0142o"} + , { "only_own_reservations","Tylko moje rezerwacje"} + , { "open","Otw\u00f3rz"} + , { "options","Opcje"} + , { "or","lub"} + , { "password","Has\u0142o"} + , { "password_verification","Weryfikacja has\u0142a"} + , { "paste","Wklej"} + , { "paste_as","Wklej jako"} + , { "period","Okres"} + , { "period.format.end","Koniec {0}"} + , { "period.format.start","Pocz\u0105tek {0}"} + , { "period.format.week","{0} tyg. {1}"} + , { "period.not_set","Wybierz okres"} + , { "period_view","Okres"} + , { "periods","Okresy"} + , { "permission.access","Dost\u0119pne"} + , { "permission.admin","Uprawnienia administratora"} + , { "permission.allocate","mo\u017ce przydziela\u0107"} + , { "permission.allocate-conflicts","mo\u017ce przydziela\u0107 i tworzy\u0107 konflikty"} + , { "permission.denied","Zastrze\u017cone"} + , { "permission.read","mo\u017ce odczyta\u0107"} + , { "permissions","Uprawnienia"} + , { "person","Osoba"} + , { "person_type","Typ osoby"} + , { "person_types","Typy os\u00f3b"} + , { "persons","Osoby"} + , { "preferences","Preferencje"} + , { "print","Drukuj"} + , { "print_to_file","Drukuj do pliku"} + , { "publish","Publikuj"} + , { "question","Pytanie"} + , { "rapla.name","Rapla"} + , { "rapla.title","Rapla, inteligentne planowanie"} + , { "rapla.welcome","Witaj {0}."} + , { "refresh","Od\u015bwie\u017c"} + , { "reload_data","Od\u015bwie\u017c dane"} + , { "remove","Usu\u0144"} + , { "repeat","Powt\u00f3rz"} + , { "repeating","Powtarzaj\u0105ce si\u0119:"} + , { "repeating.end_date","do"} + , { "repeating.forever","Bez ko\u0144ca"} + , { "repeating.interval.post","."} + , { "repeating.interval.pre","Ka\u017cdy"} + , { "repeating.n_times","x razy"} + , { "repeating.start_date","od"} + , { "report","Raport"} + , { "reservation","Wydarzenie"} + , { "reservation.allocations","Przydzia\u0142 zasob\u00f3w:"} + , { "reservation.appointments","Terminy:"} + , { "reservation.create_without_wizard","Wydarzenie"} + , { "reservation.name","Nazwa wydarzenia"} + , { "reservation.owner","Rezerwacja przez"} + , { "reservation_type","Wydarzenia"} + , { "reservations","Wydarzenia"} + , { "reservations_from_all_users","Rezerwacje wszystkich"} + , { "reset","Resetuj"} + , { "resource","Zas\u00f3b"} + , { "resource.owner","Zarejestrowany przez"} + , { "resource_type","Rodzaj zasobu"} + , { "resource_types","Rodzaje zasob\u00f3w"} + , { "resources","Zasoby"} + , { "resources_persons","Zasoby i osoby"} + , { "restart_client","Restart Rapla"} + , { "restart_options","Zmiany zostan\u0105 wprowadzone po restarcie Rapla"} + , { "restart_server","Restart serwera"} + , { "rows_per_hour","Podzia\u0142ka godzin"} + , { "save","Zapisz"} + , { "search","Szukaj"} + , { "second","Sekunda"} + , { "seconds","Sekundy"} + , { "select","Zaznacz"} + , { "selectable","Dost\u0119pne"} + , { "selectable_on","Dost\u0119pne w"} + , { "selected","Wybrane"} + , { "selected_on","Wybrane na"} + , { "selection","Zaznaczenie"} + , { "selection_resource","Zaznaczenie zasobu"} + , { "serie","Serie"} + , { "server","Serwer"} + , { "show_as","Wy\u015bwietlaj jako"} + , { "show_conflicts","Poka\u017c konflikty"} + , { "show_tips","Pokazuj podpowiedzi"} + , { "single_appointment","Jeden termin"} + , { "source","\u0179r\u00f3d\u0142o"} + , { "start_date","Data rozpocz\u0119cia"} + , { "start_time","Czas rozpocz\u0119cia"} + , { "surname","Nazwisko"} + , { "switch_back","Wr\u00f3\u0107"} + , { "switch_to","Prze\u0142\u0105cz na"} + , { "table","Tabela"} + , { "time_at","o"} + , { "time_until","do"} + , { "today","Dzi\u015b"} + , { "total_occurances","Suma wyst\u0105pie\u0144"} + , { "translation","T\u0142umaczenie"} + , { "translation.format","T\u0142umaczenia na \"(0)\":"} + , { "type","Typ"} + , { "type.boolean","Tak|Nie"} + , { "type.date","Data"} + , { "type.int","Liczba"} + , { "type.rapla:category","Kategoria"} + , { "type.string","Tekst"} + , { "types","Typy"} + , { "user","U\u017cytkownik"} + , { "username","Nazwa u\u017cytkownika"} + , { "users","U\u017cytkownicy"} + , { "view","Widok"} + , { "warning","Uwaga"} + , { "warning.conflict","UWAGA: Wykryto konflikt!"} + , { "warning.duplicated_appointments","UWAGA: Ten sam termin wyst\u0119puje kilkakrotnie [{0}]!"} + , { "warning.experienced_users_only","Nie kombinuj, chyba, \u017ce wiesz, co robisz ;)"} + , { "warning.max-one-eventtype","Tylko 1 zdarzenie typu jest dozwolone. Ustaw filtr!"} + , { "warning.no_allocatables_selected","Nie wybrano \u017cadnych zasob\u00f3w/os\u00f3b!"} + , { "warning.no_conflict_permission","Nie masz uprawnie\u0144 do tworzenia konflikt\u00f3w w [{0}]!"} + , { "warning.no_reserve_permission","Nie masz uprawnie\u0144 do zmiany/ustalenia [{0}] terminu [{1}]! "} + , { "warning.period_shorter_than_week","Okres kr\u00f3tszy ni\u017c tydzie\u0144."} + , { "warning.readonly_storage","Dane zmienione tylko w pami\u0119ci. Zmiany zostan\u0105 utracone."} + , { "warning.reservation.delete","Edytowane wydarzenie zosta\u0142o usuni\u0119te."} + , { "warning.reservation.update","Edytowane wydarzenie zosta\u0142o zmienione." + + " Dane w tym oknie zostan\u0105 zaktualizowane."} + , { "week","Tydzie\u0144"} + , { "week_compact","Tydzie\u0144 (skr\u00f3cony)"} + , { "weekday","Dzie\u0144 tygodnia"} + , { "weekly","Co tydzie\u0144"} + , { "weeks","Tygodnie"} + , { "weekview.print.choose_export","Wybierz metod\u0119 zapisu!"} + , { "weekview.print.dialog_title","Podgl\u0105d wydruku"} + , { "weekview.print.format_button","Ustawienia drukarki"} + , { "weekview.print.postscript","Postscript"} + , { "weekview.print.title_textfield","Tytu\u0142"} + , { "width","Szeroko\u015b\u0107"} + , { "with","z"} + , { "x_days_advance","x dni wcze\u015bniej"} + , { "year","Rok"} + , { "yearly","Co rok"} + , { "years","Lata"} + , { "yes","Tak"} + , { "zero_appointment","Brak rezerwacji"} + }; +} diff --git a/generated-src/org/rapla/plugin/autoexport/AutoExportResources.java b/generated-src/org/rapla/plugin/autoexport/AutoExportResources.java new file mode 100644 index 0000000..584ccef --- /dev/null +++ b/generated-src/org/rapla/plugin/autoexport/AutoExportResources.java @@ -0,0 +1,21 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.autoexport; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class AutoExportResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "autoexport.description","Publish calendar to HTML"} + , { "autoexport.option.description","The following views are currently stored:"} + , { "calendar_list","Exported calendars"} + , { "file.enter_name","Name for the view"} + , { "show_navigation","Show navigation bar"} + , { "webserver","Web Server"} + }; +} diff --git a/generated-src/org/rapla/plugin/autoexport/AutoExportResources_de.java b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_de.java new file mode 100644 index 0000000..1f127fd --- /dev/null +++ b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_de.java @@ -0,0 +1,21 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.autoexport; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class AutoExportResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "autoexport.description","Ver\u00f6ffentliche Kalender nach HTML"} + , { "autoexport.option.description","Folgende Ansichten sind vorhanden:"} + , { "calendar_list","Exportierte Kalender"} + , { "file.enter_name","Name der Ansicht"} + , { "show_navigation","Zeige den Navigationsbalken"} + , { "webserver","Web-Server"} + }; +} diff --git a/generated-src/org/rapla/plugin/autoexport/AutoExportResources_es.java b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_es.java new file mode 100644 index 0000000..ed62dbc --- /dev/null +++ b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_es.java @@ -0,0 +1,21 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.autoexport; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class AutoExportResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "autoexport.description","Publicar el calendario a HTML"} + , { "autoexport.option.description","Las vistas siguientes est\u00e1n disponibles :"} + , { "calendar_list","calendarios exportados"} + , { "file.enter_name","Nombre de la vista"} + , { "show_navigation","Indicar la navegaci\u00f3n"} + , { "webserver","Webov\u00fd Server"} + }; +} diff --git a/generated-src/org/rapla/plugin/autoexport/AutoExportResources_fr.java b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_fr.java new file mode 100644 index 0000000..04ffb4e --- /dev/null +++ b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_fr.java @@ -0,0 +1,21 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.autoexport; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class AutoExportResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "autoexport.description","Publier le calendrier en HTML"} + , { "autoexport.option.description","Les vues suivantes sont disponibles :"} + , { "calendar_list","Calendriers Export\u00e9s"} + , { "file.enter_name","Nom de la vue"} + , { "show_navigation","Affiche la barre de navigation"} + , { "webserver","Serveur Web"} + }; +} diff --git a/generated-src/org/rapla/plugin/autoexport/AutoExportResources_nl.java b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_nl.java new file mode 100644 index 0000000..7a31714 --- /dev/null +++ b/generated-src/org/rapla/plugin/autoexport/AutoExportResources_nl.java @@ -0,0 +1,19 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.autoexport; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class AutoExportResources_nl extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "calendar_list","Gepubliceerde Planningen"} + , { "file.enter_name","Naam"} + , { "show_navigation","Navigatie balk"} + , { "webserver","Web Server"} + }; +} diff --git a/generated-src/org/rapla/plugin/export2ical/Export2iCalResources.java b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources.java new file mode 100644 index 0000000..e96c4ae --- /dev/null +++ b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources.java @@ -0,0 +1,32 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.export2ical; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class Export2iCalResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "available_autoexport_views_text","Available views based on html export:"} + , { "available_ical_views_text","Available iCal views:"} + , { "cancel_text","Cancel"} + , { "created_succesfully_text","Successfully created."} + , { "delete_text","Delete"} + , { "export_file_succesfull_text","The iCal file has been successfully created."} + , { "export_file_text","Export view to iCal file"} + , { "export_ical_text","Publish calendar to iCal"} + , { "export_text","Export"} + , { "ical_view_name_text","iCal view name:"} + , { "no_dates_text","No dates available in the current view."} + , { "no_name_text","No name is given."} + , { "previous_days_text","previous days:"} + , { "save_title_text","Save iCal view"} + , { "subsequent_days_text","subsequent days:"} + , { "use_user_interval_setting_text","use user interval setting"} + , { "user_interval_setting_text","User interval setting:"} + }; +} diff --git a/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_de.java b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_de.java new file mode 100644 index 0000000..ebc74b5 --- /dev/null +++ b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_de.java @@ -0,0 +1,32 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.export2ical; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class Export2iCalResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "available_autoexport_views_text","Verf\u00fcgbare Ansichten basierend auf HTML Export:"} + , { "available_ical_views_text","Verf\u00fcgbare iCal Ansichten:"} + , { "cancel_text","Abbrechen"} + , { "created_succesfully_text","Erfolgreich angelegt."} + , { "delete_text","L\u00f6schen"} + , { "export_file_succesfull_text","Die iCal Datei wurde erfolgreich erstellt."} + , { "export_file_text","Exportiere Ansicht in iCal File"} + , { "export_ical_text","Ver\u00f6ffentliche Kalender nach iCal"} + , { "export_text","Exportieren"} + , { "ical_view_name_text","Name der iCal Ansicht:"} + , { "no_dates_text","In der aktuellen Ansicht sind keine Termine vorhanden."} + , { "no_name_text","Kein Name gesetzt."} + , { "previous_days_text","vorhergehende Tage:"} + , { "save_title_text","Ansicht als iCal speichern"} + , { "subsequent_days_text","darauffolgende Tage:"} + , { "use_user_interval_setting_text","benutzerspezifische Intervalleinstellung verwenden"} + , { "user_interval_setting_text","Benutzerspezifische Intervalleinstellung:"} + }; +} diff --git a/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_es.java b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_es.java new file mode 100644 index 0000000..81ec6ae --- /dev/null +++ b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_es.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.export2ical; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class Export2iCalResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "export_ical_text","Publicar el calendario en iCal"} + }; +} diff --git a/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_fr.java b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_fr.java new file mode 100644 index 0000000..816aead --- /dev/null +++ b/generated-src/org/rapla/plugin/export2ical/Export2iCalResources_fr.java @@ -0,0 +1,32 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.export2ical; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class Export2iCalResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "available_autoexport_views_text","Les vues disponibles \u00e0 la base d`HTML Export:"} + , { "available_ical_views_text","Les vues iCal disponibles:"} + , { "cancel_text","Annuler"} + , { "created_succesfully_text","Cr\u00e9\u00e9 avec succ\u00e8s."} + , { "delete_text","Effacer"} + , { "export_file_succesfull_text","Le fichier iCal a \u00e9t\u00e9 cr\u00e9\u00e9 avec succ\u00e8s."} + , { "export_file_text","Exporte la vue en iCal File"} + , { "export_ical_text","Publier le calendrier en iCal"} + , { "export_text","Exporter"} + , { "ical_view_name_text","Nom de la vue iCal:"} + , { "no_dates_text","Pas de dates disponibles dans la vue en cours."} + , { "no_name_text","Aucun nom n'est donn\u00e9."} + , { "previous_days_text","les jours pr\u00e9c\u00e9dents:"} + , { "save_title_text","Enregistrer la vue iCal"} + , { "subsequent_days_text","les jours suivants:"} + , { "use_user_interval_setting_text","utiliser le param\u00e8tre d`intervalle utilisateur sp\u00e9cifique:"} + , { "user_interval_setting_text","le param\u00e8tre d`intervalle utilisateur sp\u00e9cifique:"} + }; +} diff --git a/generated-src/org/rapla/plugin/importusers/ImportUsersResources.java b/generated-src/org/rapla/plugin/importusers/ImportUsersResources.java new file mode 100644 index 0000000..1b59b82 --- /dev/null +++ b/generated-src/org/rapla/plugin/importusers/ImportUsersResources.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.importusers; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class ImportUsersResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "checklog","{0} of {1} errors. Consult log file"} + }; +} diff --git a/generated-src/org/rapla/plugin/importusers/ImportUsersResources_cs.java b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_cs.java new file mode 100644 index 0000000..1990237 --- /dev/null +++ b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_cs.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.importusers; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class ImportUsersResources_cs extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "checklog","{0} z {1} chyb. Konzultovat log souboru."} + }; +} diff --git a/generated-src/org/rapla/plugin/importusers/ImportUsersResources_de.java b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_de.java new file mode 100644 index 0000000..989e6f2 --- /dev/null +++ b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_de.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.importusers; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class ImportUsersResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "checklog","{0} von {1} Fehler. Consult Protokolldatei."} + }; +} diff --git a/generated-src/org/rapla/plugin/importusers/ImportUsersResources_es.java b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_es.java new file mode 100644 index 0000000..883a056 --- /dev/null +++ b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_es.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.importusers; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class ImportUsersResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "checklog","{0} de {1} errores. Consulte el archivo de registro."} + }; +} diff --git a/generated-src/org/rapla/plugin/importusers/ImportUsersResources_fr.java b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_fr.java new file mode 100644 index 0000000..a0bb512 --- /dev/null +++ b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_fr.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.importusers; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class ImportUsersResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "checklog","{0} sur {1} erreurs. Consultez le fichier journal."} + }; +} diff --git a/generated-src/org/rapla/plugin/importusers/ImportUsersResources_nl.java b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_nl.java new file mode 100644 index 0000000..168733f --- /dev/null +++ b/generated-src/org/rapla/plugin/importusers/ImportUsersResources_nl.java @@ -0,0 +1,16 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.importusers; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class ImportUsersResources_nl extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "checklog","{0} op {1} fouten. Raadpleeg logbestand."} + }; +} diff --git a/generated-src/org/rapla/plugin/notification/NotificationResources.java b/generated-src/org/rapla/plugin/notification/NotificationResources.java new file mode 100644 index 0000000..8eea9a3 --- /dev/null +++ b/generated-src/org/rapla/plugin/notification/NotificationResources.java @@ -0,0 +1,26 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.notification; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class NotificationResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "appointment.add","New appointment for [{0}]:"} + , { "appointment.change","Appointment changed for [{0}] from:"} + , { "appointment.remove","Removed appointment for [{0}]:"} + , { "complete_reservation","Complete event"} + , { "mail_body","The following allocation changes have been made:"} + , { "mail_subject","Rapla: Allocation change of [{0}]"} + , { "modified_by","Modified by {0}"} + , { "moved_to","to"} + , { "notification.option.description","Mail for every allocation change of the listed resources and persons"} + , { "notification_options","Notification options"} + , { "notify_if_owner","Also notify on modification of own events."} + }; +} diff --git a/generated-src/org/rapla/plugin/notification/NotificationResources_de.java b/generated-src/org/rapla/plugin/notification/NotificationResources_de.java new file mode 100644 index 0000000..a6f367b --- /dev/null +++ b/generated-src/org/rapla/plugin/notification/NotificationResources_de.java @@ -0,0 +1,26 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.notification; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class NotificationResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "appointment.add","Neuer Termin f\u00fcr [{0}]:"} + , { "appointment.change","Termin ver\u00e4ndert f\u00fcr [{0}] von:"} + , { "appointment.remove","Termin f\u00fcr [{0}] gel\u00f6scht:"} + , { "complete_reservation","Komplette Veranstaltung"} + , { "mail_body","Die folgenden Belegungs\u00e4nderungen wurden vorgenommen:"} + , { "mail_subject","Rapla: Reservierungsbenachrichtigung [{0}]"} + , { "modified_by","ver\u00e4ndert durch {0}"} + , { "moved_to","nach"} + , { "notification.option.description","Mail bei Belegungs\u00e4nderung von folgenden Ressourcen und Personen"} + , { "notification_options","Benachrichtigungs Optionen"} + , { "notify_if_owner","Benachrichtige auch bei \u00c4nderungen an eigenen Veranstaltungen."} + }; +} diff --git a/generated-src/org/rapla/plugin/notification/NotificationResources_es.java b/generated-src/org/rapla/plugin/notification/NotificationResources_es.java new file mode 100644 index 0000000..b64bff5 --- /dev/null +++ b/generated-src/org/rapla/plugin/notification/NotificationResources_es.java @@ -0,0 +1,25 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.notification; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class NotificationResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "appointment.add","Nueva cita para [{0}]"} + , { "appointment.change","Cambio de cita para [{0}]"} + , { "complete_reservation","Descriptci\u00f3n completa del evento"} + , { "mail_body","Se han hecho los siguientes cambios de asignaci\u00f3n:"} + , { "mail_subject","Rapla : Cambio de asignaci\u00f3n para [{0}]"} + , { "modified_by","Modificado por {0}"} + , { "moved_to","para"} + , { "notification.option.description","Env\u00edo de correo a cada cambio de asignaci\u00f3n de recursos/personas listado"} + , { "notification_options","Notificaciones"} + , { "notify_if_owner","Quiero ser notificado de los cambios hechos por m\u00ed mismo"} + }; +} diff --git a/generated-src/org/rapla/plugin/notification/NotificationResources_fr.java b/generated-src/org/rapla/plugin/notification/NotificationResources_fr.java new file mode 100644 index 0000000..fea6536 --- /dev/null +++ b/generated-src/org/rapla/plugin/notification/NotificationResources_fr.java @@ -0,0 +1,26 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.notification; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class NotificationResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "appointment.add","Nouvelle r\u00e9servation pour [{0}] :"} + , { "appointment.change","Changement d''horaire pour [{0}] c''\u00e9tait :"} + , { "appointment.remove","Se elimin\u00f3 la cita para [{0}]"} + , { "complete_reservation","Description compl\u00e8te de l'\u00e9v\u00e8nement"} + , { "mail_body","Les changement d'allocation suivants ont \u00e9t\u00e9 faits:"} + , { "mail_subject","Rapla : Changement d'allocation pour [{0}]"} + , { "modified_by","Modifi\u00e9 par {0}"} + , { "moved_to","cela devient :"} + , { "notification.option.description","Envoit de Mail \u00e0 chaque changement d'allocation des resources/personnes list\u00e9es"} + , { "notification_options","Options de notification"} + , { "notify_if_owner","Je veux \u00eatre notifi\u00e9 pour les changements faits par moi-m\u00eame"} + }; +} diff --git a/generated-src/org/rapla/plugin/occupationview/OccupationResources.java b/generated-src/org/rapla/plugin/occupationview/OccupationResources.java new file mode 100644 index 0000000..9543712 --- /dev/null +++ b/generated-src/org/rapla/plugin/occupationview/OccupationResources.java @@ -0,0 +1,43 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.occupationview; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class OccupationResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "FirstDay","Day 1 of month"} + , { "ToDay","Today"} + , { "archive","Archive {0} >= {1} days inactive"} + , { "bestFit","Best fit"} + , { "confirm","Confirm"} + , { "daysin","In"} + , { "daysout","In"} + , { "event_check","Remarks"} + , { "firstFit","First fit"} + , { "forbidden","Resource not availabe."} + , { "forcearchive","Archive {0} < {1} days inactive"} + , { "freeSlot","Free slot: "} + , { "horizon","Month +"} + , { "icon.archive","images/archive.gif"} + , { "icon.delete","images/eclipse-icons/trash.gif"} + , { "icon.edit","images/eclipse-icons/edit.gif"} + , { "icon.error","images/error.png"} + , { "icon.help","images/eclipse-icons/help.gif"} + , { "icon.new","images/eclipse-icons/new.gif"} + , { "minus1month","-1 Month"} + , { "noendoflife","_endoflive not defined."} + , { "occupation","Occupation"} + , { "options.timeshift","Options"} + , { "plus1month","+1 Month"} + , { "resourcedeleted","Deleted"} + , { "resources_persons","Resources/persons"} + , { "slotGaps","#Gaps"} + , { "startday","Start day of the Month"} + }; +} diff --git a/generated-src/org/rapla/plugin/occupationview/OccupationResources_cs.java b/generated-src/org/rapla/plugin/occupationview/OccupationResources_cs.java new file mode 100644 index 0000000..abfd1ef --- /dev/null +++ b/generated-src/org/rapla/plugin/occupationview/OccupationResources_cs.java @@ -0,0 +1,36 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.occupationview; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class OccupationResources_cs extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "FirstDay","Den 1 m\u011bs\u00edc"} + , { "ToDay","Dnes"} + , { "archive","Archiv {0} >= {1} dn\u016f neaktivn\u00ed"} + , { "bestFit","...: "} + , { "confirm","Archiv nyn\u00ed"} + , { "daysin","Vstupn\u00ed"} + , { "daysout","V\u00fdstupn\u00ed"} + , { "firstFit","...: "} + , { "forbidden","...: "} + , { "forcearchive","Archiv {0} < {1} dn\u016f neaktivn\u00ed"} + , { "freeSlot","...: "} + , { "horizon","...: "} + , { "minus1month","-1"} + , { "noendoflife","Archiv nyn\u00ed"} + , { "occupation","Obsazenost"} + , { "options.timeshift","Volby"} + , { "plus1month","+1"} + , { "resourcedeleted","vypou\u0161t\u00ed"} + , { "resources_persons","Prost\u0159edky/osoby"} + , { "slotGaps","...: "} + , { "startday","Ending Reason"} + }; +} diff --git a/generated-src/org/rapla/plugin/occupationview/OccupationResources_de.java b/generated-src/org/rapla/plugin/occupationview/OccupationResources_de.java new file mode 100644 index 0000000..a8121e9 --- /dev/null +++ b/generated-src/org/rapla/plugin/occupationview/OccupationResources_de.java @@ -0,0 +1,37 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.occupationview; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class OccupationResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "FirstDay","Tag 1 des Monats"} + , { "ToDay","Heute"} + , { "archive","Archiv {0} >= {1} Tage inaktiv"} + , { "bestFit","...: "} + , { "confirm","Archiv jetzt"} + , { "daysin","Ein"} + , { "daysout","Aus"} + , { "event_check","..."} + , { "firstFit","...: "} + , { "forbidden","...: "} + , { "forcearchive","Archiv {0} < {1} Tage inaktiv"} + , { "freeSlot","Frei: "} + , { "horizon","Monat +"} + , { "minus1month","-1 Monate"} + , { "noendoflife","Archiv jetzt"} + , { "occupation","Belegung"} + , { "options.timeshift","Einstellungen"} + , { "plus1month","+1 Monate"} + , { "resourcedeleted","Gel\u00f6scht"} + , { "resources_persons","Ressourcen/Personen"} + , { "slotGaps","...: "} + , { "startday","Ending Reason"} + }; +} diff --git a/generated-src/org/rapla/plugin/occupationview/OccupationResources_es.java b/generated-src/org/rapla/plugin/occupationview/OccupationResources_es.java new file mode 100644 index 0000000..8233ac4 --- /dev/null +++ b/generated-src/org/rapla/plugin/occupationview/OccupationResources_es.java @@ -0,0 +1,37 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.occupationview; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class OccupationResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "FirstDay","D\u00eda 1 del mes"} + , { "ToDay","Hoy"} + , { "archive","pArchivo {0} >= {1} d\u00eda inactivos"} + , { "bestFit","...: "} + , { "confirm","Archivo ahora"} + , { "daysin","Entrada"} + , { "daysout","Salida"} + , { "event_check","..."} + , { "firstFit","...: "} + , { "forbidden","...: "} + , { "forcearchive","Archivo {0} < {1} d\u00eda inactivos"} + , { "freeSlot","...: "} + , { "horizon","...: "} + , { "minus1month","-1"} + , { "noendoflife","Archivo ahora"} + , { "occupation","Ocupaci\u00f3n"} + , { "options.timeshift","Opciones"} + , { "plus1month","+1"} + , { "resourcedeleted","Eliminado"} + , { "resources_persons","Recursos/personas"} + , { "slotGaps","...: "} + , { "startday","Ending Reason"} + }; +} diff --git a/generated-src/org/rapla/plugin/occupationview/OccupationResources_fr.java b/generated-src/org/rapla/plugin/occupationview/OccupationResources_fr.java new file mode 100644 index 0000000..ba746bd --- /dev/null +++ b/generated-src/org/rapla/plugin/occupationview/OccupationResources_fr.java @@ -0,0 +1,37 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.occupationview; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class OccupationResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "FirstDay","Jour 1 du mois"} + , { "ToDay","Aujourd'hui"} + , { "archive","Archive {0} >= {1} jours inactifs"} + , { "bestFit","Mellieur libre"} + , { "confirm","Archive maintenant"} + , { "daysin","Entr\u00e9e"} + , { "daysout","Sortie"} + , { "event_check","..."} + , { "firstFit","Premier libre"} + , { "forbidden","Resource pas disponible.\""} + , { "forcearchive","Archive {0} < {1} jours inactifs"} + , { "freeSlot","Libre:"} + , { "horizon","Mois + "} + , { "minus1month","-1 Mois\""} + , { "noendoflife","Archive maintenant"} + , { "occupation","Occupation"} + , { "options.timeshift","Options"} + , { "plus1month","+1 Mois\""} + , { "resourcedeleted","Supprim\u00e9"} + , { "resources_persons","Ressources/Personnes"} + , { "slotGaps","#Gaps"} + , { "startday","Raison de fin"} + }; +} diff --git a/generated-src/org/rapla/plugin/occupationview/OccupationResources_nl.java b/generated-src/org/rapla/plugin/occupationview/OccupationResources_nl.java new file mode 100644 index 0000000..b3dd345 --- /dev/null +++ b/generated-src/org/rapla/plugin/occupationview/OccupationResources_nl.java @@ -0,0 +1,37 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.occupationview; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class OccupationResources_nl extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "FirstDay","Dag 1 van maand"} + , { "ToDay","Vandaag"} + , { "archive","Archiveer {0} >= {1} dagen inactief"} + , { "bestFit","Beste vrij"} + , { "confirm","Bevestig."} + , { "daysin","In"} + , { "daysout","Uit"} + , { "event_check","Opmerking"} + , { "firstFit","Eerst vrij"} + , { "forbidden","Middel niet beschikbaar."} + , { "forcearchive","Archiveer {0} < {1} dagen inactief"} + , { "freeSlot","Vrij: "} + , { "horizon","Maand +"} + , { "minus1month","-1 Maand"} + , { "noendoflife","_endoflife niet gedefinieerd."} + , { "occupation","Bezetting"} + , { "options.timeshift","Voorkeur"} + , { "plus1month","+1 Maand"} + , { "resourcedeleted","Geschrapt"} + , { "resources_persons","Persoon/Middel"} + , { "slotGaps","#Gaps"} + , { "startday","Start dag van de maand"} + }; +} diff --git a/generated-src/org/rapla/plugin/periodwizard/WizardResources.java b/generated-src/org/rapla/plugin/periodwizard/WizardResources.java new file mode 100644 index 0000000..8be2130 --- /dev/null +++ b/generated-src/org/rapla/plugin/periodwizard/WizardResources.java @@ -0,0 +1,65 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.periodwizard; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class WizardResources extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "enter_appointments","Enter appointments:"} + , { "error.no_period_found","" + + " No periods found. Please enter the periods which you want to use for planning first. You'll need to login as admin for this." + + " "} + , { "reservation.create_with_default_wizard","Weekly event in a period"} + , { "reservation_wizard.add_appointment","Add Appointment"} + , { "reservation_wizard.appointment_menu","Appointment Menu"} + , { "reservation_wizard.panel1","" + + " Create a regular event:
" + + "
" + + " 1. Select a period.
" + + "
" + + " 2. Choose a event-type.
" + + "
" + + " 3. Enter the event information.
" + + "
" + + " 4. Proceed to the appointments-menu.
" + + " "} + , { "reservation_wizard.panel2","" + + " Enter known appointments:
" + + " Fill in the day of the week and the time of the appointments.
" + + "
" + + " Search for free appointments:
" + + " Mark the resource or persons for which you are searching a free appointment in" + + " the left table and press \"Search free appointment\".
" + + "
" + + " Selecting resources and persons:
" + + " Mark the persons and resources you want in the left table." + + " Double-click to add them to the right table and to assign them" + + " to all entered appointments. If you want to assign a" + + " resource or person to a particular appointment, click in the" + + " right column next to the corresponding entry in the right table." + + " "} + , { "reservation_wizard.panel3","" + + " Search for appointments:
" + + " Select with your mouse a free appointment in the wee kview." + + " Click \"Add Appointment\" to create the appointment" + + " and return to the previous menu." + + "
" + + "
" + + " There you can assign the resource or person to the appointment." + + " "} + , { "reservation_wizard.search_free_appointment","Search for a free appointment"} + , { "reservation_wizard.title","Wizard for regular events"} + , { "reservation_wizard.weekview","{0}: {1}"} + , { "select_persons_and_resources","Select resources and persons:"} + , { "warning.need_resource_or_person","" + + " You have to mark at least one resource or person" + + " to search for a free appointment!" + + " "} + }; +} diff --git a/generated-src/org/rapla/plugin/periodwizard/WizardResources_de.java b/generated-src/org/rapla/plugin/periodwizard/WizardResources_de.java new file mode 100644 index 0000000..07113b8 --- /dev/null +++ b/generated-src/org/rapla/plugin/periodwizard/WizardResources_de.java @@ -0,0 +1,64 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.periodwizard; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class WizardResources_de extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "enter_appointments","Eingabe der Termine:"} + , { "error.no_period_found","" + + " Keine Zeitr\u00e4ume gefunden. Bitte geben Sie zuerst die Zeitr\u00e4ume ein, f\u00fcr die Sie planen m\u00f6chten. Sie m\u00fcssen sich hierf\u00fcr als admin einloggen." + + " "} + , { "reservation.create_with_default_wizard","W\u00f6chentliche Veranstaltung in einem Zeitraum"} + , { "reservation_wizard.add_appointment","Termin hinzuf\u00fcgen"} + , { "reservation_wizard.appointment_menu","Termineingabe"} + , { "reservation_wizard.panel1","" + + " Anlegen einer regelm\u00e4\u00dfigen Veranstaltung:
" + + "
" + + " 1. Zeitraum in dem die Reservierung stattfindet ausw\u00e4hlen.
" + + "
" + + " 2. Veranstaltungstyp ausw\u00e4hlen.
" + + "
" + + " 3. Eingabe der Veranstaltungsdaten.
" + + "
" + + " 4. Weiter zur Termineingabe.
" + + " "} + , { "reservation_wizard.panel2","" + + " Eingabe von bekannten Terminen:
" + + " Geben Sie den Wochentag und die Uhrzeit der Termine ein.
" + + "
" + + " Suche nach freien Terminen:
" + + " Markieren Sie die Ressourcen oder Personen f\u00fcr die Sie einen freien Termin suchen" + + " in der linken Tabelle und dr\u00fccken Sie auf \"Freien Termin suchen\".
" + + "
" + + " Ausw\u00e4hlen von Ressourcen und Personen:
" + + " Markieren Sie die gew\u00fcnschten Personen und Ressourcen in der linken Tabelle." + + " Mit einen Doppelklick werden die Eintr\u00e4ge in die rechte Tabelle \u00fcbernommen und" + + " allen eingegebenen Termine zugewiesen. Wenn Sie eine" + + " Ressource oder Person nur einem bestimmten Termin zuweisen wollen, klicken Sie" + + " in die rechte Spalte neben dem entsprechenden Eintrag in der rechten Tabelle." + + " "} + , { "reservation_wizard.panel3","" + + " Terminsuche:
" + + " W\u00e4hlen Sie mit der Maus ein freies Zeitfenster in der Wochenansicht aus." + + " Dr\u00fccken Sie \"Termin hinzuf\u00fcgen\", um den Termin anzulegen und zum" + + " vorherigen Men\u00fc zur\u00fcckzukehren.
" + + "
" + + " Sie k\u00f6nnen dort die gew\u00fcnschte Ressource oder Person dem Termin zuweisen." + + " "} + , { "reservation_wizard.search_free_appointment","Freien Termin suchen"} + , { "reservation_wizard.title","Assistent zum Anlegen einer regelm\u00e4\u00dfigen Veranstaltung"} + , { "reservation_wizard.weekview","{0}: {1}"} + , { "select_persons_and_resources","Ausw\u00e4hlen von Ressourcen und Personen:"} + , { "warning.need_resource_or_person","" + + " Sie m\u00fcssen mindestens eine Ressource oder Person" + + " f\u00fcr die Sie den freien Termin suchen markieren!" + + " "} + }; +} diff --git a/generated-src/org/rapla/plugin/periodwizard/WizardResources_es.java b/generated-src/org/rapla/plugin/periodwizard/WizardResources_es.java new file mode 100644 index 0000000..b28d1f8 --- /dev/null +++ b/generated-src/org/rapla/plugin/periodwizard/WizardResources_es.java @@ -0,0 +1,63 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.periodwizard; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class WizardResources_es extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "enter_appointments","Introducci\u00f3n de citas :"} + , { "error.no_period_found","No existen periodos. Comience por definir los periodos del a\u00f1o que se usar\u00e1n en las planificaciones. Para ello, necesitar\u00e1 conectarse como usuario admin."} + , { "reservation.create_with_default_wizard","Evento semanal durante todo un periodo"} + , { "reservation_wizard.add_appointment","A\u00f1adir cita"} + , { "reservation_wizard.appointment_menu","Creaci\u00f3n de citas"} + , { "reservation_wizard.panel1","" + + " Creaci\u00f3n de eventos semanales:
" + + "
" + + " 1. Seleccione el periodo del a\u00f1o.
" + + "
" + + " 2. Escoja el tipo de evento.
" + + "
" + + " 3. Introduzca la informaci\u00f3n del evento.
" + + "
" + + " 4. Pase a la ventana de creaci\u00f3n de citas.
" + + " "} + , { "reservation_wizard.panel2","" + + " Introduzca las citas que conoce:
" + + " Indique el d\u00eda de la semana y la hora de inicio y de fin de la cita.
" + + "
" + + " B\u00fasqueda de citas disponibles:
" + + " Seleccione en la tabla de la izquierda" + + " los recursos y las personas para los cuales" + + " desee buscar una cita disponible" + + " y pulse sobre \"Buscar una cita disponible\".
" + + "
" + + " Seleccione los recursos y las personas:
" + + " Seleccione en la tabla de la izquierda" + + " los recursos y las personas y pulse el bot\u00f3n \"A\u00f1adir\"." + + " Se a\u00f1adir\u00e1n para todas las citas." + + " Para asignar un recurso o persona a una cita" + + " particular, pulse sobre el bot\u00f3n que aparece a continuaci\u00f3n" + + " del recurso o persona en la tabla de la derecha." + + " "} + , { "reservation_wizard.panel3","" + + " B\u00fasqueda de citas :
" + + " Seleccione con el rat\u00f3n una cita disponible durante la semana." + + " Pulse \"A\u00f1adir cita\" para a\u00f1adir la cita" + + " y volver a la ventana previa." + + "
" + + "
" + + " All\u00ed podr\u00e1 asignar recursos o personas a la cita." + + " "} + , { "reservation_wizard.search_free_appointment","Buscar una cita disponible"} + , { "reservation_wizard.title","Asistente de creaci\u00f3n de eventos semanales"} + , { "reservation_wizard.weekview","{0}: {1}"} + , { "select_persons_and_resources","Selecci\u00f3n de recursos y personas :"} + , { "warning.need_resource_or_person","\u00a1Debe seleccionar al menos un recurso o persona para el cual (o los cuales) desea buscar una cita disponible!"} + }; +} diff --git a/generated-src/org/rapla/plugin/periodwizard/WizardResources_fr.java b/generated-src/org/rapla/plugin/periodwizard/WizardResources_fr.java new file mode 100644 index 0000000..68a0414 --- /dev/null +++ b/generated-src/org/rapla/plugin/periodwizard/WizardResources_fr.java @@ -0,0 +1,64 @@ +/******************************************* + * Autogenerated file. Please do not edit. * + * Edit the *Resources.xml file. * + *******************************************/ + +package org.rapla.plugin.periodwizard; +import java.util.ListResourceBundle; +import java.util.ResourceBundle; + +public class WizardResources_fr extends ListResourceBundle { + public Object[][] getContents() { return contents; } + public void setParent(ResourceBundle parent) { super.setParent(parent); } + static final Object[][] contents = { {"",""} + , { "enter_appointments","Ajouter des cr\u00e9naux :"} + , { "error.no_period_found","Pas de p\u00e9riode. Commencez par d\u00e9finir des p\u00e9riodes dans l'ann\u00e9e. Vous avez besoin de vous connecter comme 'admin' pour le faire"} + , { "reservation.create_with_default_wizard","\u00c9v\u00e8nement hebdomadaire pendant toute une p\u00e9riode"} + , { "reservation_wizard.add_appointment","Ajouter un cr\u00e9nau"} + , { "reservation_wizard.appointment_menu","Cr\u00e9ation des cr\u00e9naux"} + , { "reservation_wizard.panel1","" + + " Cr\u00e9ation d'\u00e9v\u00e8nement hebdomadaire
" + + "
" + + " 1. Choisissez la p\u00e9riode de l'ann\u00e9e.
" + + "
" + + " 2. Choisissez le type de l'\u00e9v\u00e8nement.
" + + "
" + + " 3. Entrez les informations concernant l'\u00e9v\u00e8nement.
" + + "
" + + " 4. Passez \u00e0 la fen\u00eatre de d\u00e9finition des cr\u00e9naux.
" + + " "} + , { "reservation_wizard.panel2","" + + " Indiquer les cr\u00e9naux que vous connaissez :
" + + " Indiquez le jour de la semaine et l'heure de d\u00e9but et de fin du cr\u00e9nau.
" + + "
" + + " Chercher des cr\u00e9naux libres :
" + + " S\u00e9lectionnez dans la table de gauche" + + " les ressources et personnes pour lesquelles vous" + + " voulez rechercher un cr\u00e9nau libre." + + " Puis cliquez sur \"Chercher un cr\u00e9nau libre\".
" + + "
" + + " Selectionner les ressources et personnes :
" + + " S\u00e9lectionnez dans la table de gauche" + + " les ressources et personnes puis cliquez sur \"Ins\u00e9rer\"" + + " Elle seront assign\u00e9es pour tous les cr\u00e9naux." + + " Pour assigner une ressource ou personne \u00e0 des cr\u00e9naux" + + " particuliers, cliquez sur le bouton \u00e0 cot\u00e9 de la ressource" + + " ou personne dans la table de droite." + + " "} + , { "reservation_wizard.panel3","" + + " Chercher des cr\u00e9naux :
" + + " S\u00e9lectionnez avec la souris un cr\u00e9nau libre" + + " dans la semaine." + + " Cliquez sur \"Ajouter cr\u00e9naux\" pour" + + " ajouter le cr\u00e9naux et revenir sur la fen\u00eatre pr\u00e9c\u00e9dente." + + "
" + + " Ainsi vous pouvez assigner la ressource ou la personne" + + " aux cr\u00e9naux en cliquant sur 'ins\u00e9rer'" + + " "} + , { "reservation_wizard.search_free_appointment","Chercher un cr\u00e9nau libre"} + , { "reservation_wizard.title","Assistant de cr\u00e9ation d'\u00e9v\u00e8nement hebdomadaire"} + , { "reservation_wizard.weekview","{0}: {1}"} + , { "select_persons_and_resources","S\u00e9lection des ressources et personnes :"} + , { "warning.need_resource_or_person","Vous devez au moins s\u00e9lectionner une resource ou personne pour laquelle (ou lesquelles) vous voulez rechercher un cr\u00e9nau possible"} + }; +} diff --git a/jetty/jetty.xml b/jetty/jetty.xml new file mode 100644 index 0000000..1f700d3 --- /dev/null +++ b/jetty/jetty.xml @@ -0,0 +1,104 @@ + + + + + + + + + + org.mortbay.jetty.Request.maxFormContentSize + 64000000 + + + + + + + + 5 + 6 + 50 + + + + + + + + + + + + + + + 30000 + 2 + 8443 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /webapp + / + /jetty/webdefault.xml + /webapp + + + + + + + true + + true + + diff --git a/jetty/webdefault.xml b/jetty/webdefault.xml new file mode 100644 index 0000000..425c348 --- /dev/null +++ b/jetty/webdefault.xml @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + Default web.xml file. + This file is applied to a Web application before it's own WEB_INF/web.xml file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.mortbay.jetty.servlet.DefaultServlet + + acceptRanges + true + + + dirAllowed + true + + + redirectWelcome + false + + + maxCacheSize + 2000000 + + + maxCachedFileSize + 254000 + + + maxCachedFiles + 1000 + + + gzip + false + + + useFileMappedBuffer + false + + 0 + + + default / + + + + + + + + 30 + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + + + arISO-8859-6 + beISO-8859-5 + bgISO-8859-5 + caISO-8859-1 + csISO-8859-2 + daISO-8859-1 + deISO-8859-1 + elISO-8859-7 + enISO-8859-1 + esISO-8859-1 + etISO-8859-1 + fiISO-8859-1 + frISO-8859-1 + hrISO-8859-2 + huISO-8859-2 + isISO-8859-1 + itISO-8859-1 + iwISO-8859-8 + jaShift_JIS + koEUC-KR + ltISO-8859-2 + lvISO-8859-2 + mkISO-8859-5 + nlISO-8859-1 + noISO-8859-1 + plISO-8859-2 + ptISO-8859-1 + roISO-8859-2 + ruISO-8859-5 + shISO-8859-5 + skISO-8859-2 + slISO-8859-2 + sqISO-8859-2 + srISO-8859-5 + svISO-8859-1 + trISO-8859-9 + ukISO-8859-5 + zhGB2312 + zh_TWBig5 + + + + + + diff --git a/legal/COPYING b/legal/COPYING new file mode 100644 index 0000000..32d0e60 --- /dev/null +++ b/legal/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/legal/LIBRARIES-FAQ b/legal/LIBRARIES-FAQ new file mode 100644 index 0000000..cb04016 --- /dev/null +++ b/legal/LIBRARIES-FAQ @@ -0,0 +1,21 @@ +The Rapla project uses the following Libraries from other free-software-projects: + +Library:------------------from:-------------------Get the source from:----------- + +ant.jar Apache Software Found. ant.apache.org +optional.jar + +avalon-framework-4.2.0.jar Apache Software Found. avalon.apache.org +avalon-loggin.jar Apache Software Found. avalon.apache.org + +aelfred-saxon.jar Michal Kay saxon.sf.net + +junit.jar - www.junit.org + +org.mortbay.jetty.jar Mort Bay Consulting. http://jetty.mortbay.org/jetty/index.html +javax.servlet.jar Sun API + +Most icons were taken from the eclipse project (www.eclipse.org) +Some icons were taken from +- ximian evolution www.ximian.org +- http://wm-icons.sourceforge.net/ diff --git a/legal/LICENCE.iCal4j b/legal/LICENCE.iCal4j new file mode 100644 index 0000000..99602f9 --- /dev/null +++ b/legal/LICENCE.iCal4j @@ -0,0 +1,33 @@ +================== + iCal4j - License +================== + +Copyright (c) 2011, Ben Fortuna +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + o Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + + o Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + + o Neither the name of Ben Fortuna nor the names of any other contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/legal/LICENSE.apache b/legal/LICENSE.apache new file mode 100644 index 0000000..032be14 --- /dev/null +++ b/legal/LICENSE.apache @@ -0,0 +1,48 @@ +/* + * ============================================================================ + * The Apache Software License, Version 1.1 + * ============================================================================ + * + * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modifica- + * tion, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The end-user documentation included with the redistribution, if any, must + * include the following acknowledgment: "This product includes software + * developed by the Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, if + * and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Ant" and "Apache Software Foundation" must not be used to + * endorse or promote products derived from this software without prior + * written permission. For written permission, please contact + * apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", nor may + * "Apache" appear in their name, without prior written permission of the + * Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- + * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * This software consists of voluntary contributions made by many individuals + * on behalf of the Apache Software Foundation. For more information on the + * Apache Software Foundation, please see . + * + */ diff --git a/legal/LICENSE.eclipse-icons b/legal/LICENSE.eclipse-icons new file mode 100644 index 0000000..c9990a7 --- /dev/null +++ b/legal/LICENSE.eclipse-icons @@ -0,0 +1,213 @@ +Common Public License Version 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + + a) in the case of the initial Contributor, the initial code and +documentation distributed under this Agreement, and + + b) in the case of each subsequent Contributor: + + i) changes to the Program, and + + ii) additions to the Program; + + where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + + a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to +reproduce, prepare derivative works of, publicly display, publicly perform, +distribute and sublicense the Contribution of such Contributor, if any, and such +derivative works, in source code and object code form. + + b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed +Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. +This patent license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + + c) Recipient understands that although each Contributor grants the licenses +to its Contributions set forth herein, no assurances are provided by any +Contributor that the Program does not infringe the patent or other intellectual +property rights of any other entity. Each Contributor disclaims any liability to +Recipient for claims brought by any other entity based on infringement of +intellectual property rights or otherwise. As a condition to exercising the +rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. +For example, if a third party patent license is required to allow Recipient to +distribute the Program, it is Recipient's responsibility to acquire that license +before distributing the Program. + + d) Each Contributor represents that to its knowledge it has sufficient +copyright rights in its Contribution, if any, to grant the copyright license set +forth in this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its +own license agreement, provided that: + + a) it complies with the terms and conditions of this Agreement; and + + b) its license agreement: + + i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title and +non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + + ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and consequential +damages, such as lost profits; + + iii) states that any provisions which differ from this Agreement are offered +by that Contributor alone and not by any other party; and + + iv) states that source code for the Program is available from such +Contributor, and informs licensees how to obtain it in a reasonable manner on or +through a medium customarily used for software exchange. + +When the Program is made available in source code form: + + a) it must be made available under this Agreement; and + + b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if +a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product +offering. The obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In order +to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to +control, and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may participate in +any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such +Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its exercise of +rights under this Agreement, including but not limited to the risks and costs of +program errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with respect to +a patent applicable to software (including a cross-claim or counterclaim in a +lawsuit), then any patent licenses granted by that Contributor to such Recipient +under this Agreement shall terminate as of the date such litigation is filed. In +addition, if Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted under +Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +IBM is the initial Agreement Steward. IBM may assign the responsibility to serve +as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the Agreement +under which it was received. In addition, after a new version of the Agreement +is published, Contributor may elect to distribute the Program (including its +Contributions) under the new version. Except as expressly stated in Sections +2(a) and 2(b) above, Recipient receives no rights or licenses to the +intellectual property of any Contributor under this Agreement, whether +expressly, by implication, estoppel or otherwise. All rights in the Program not +expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. diff --git a/legal/LICENSE.jetty b/legal/LICENSE.jetty new file mode 100644 index 0000000..bd9463b --- /dev/null +++ b/legal/LICENSE.jetty @@ -0,0 +1,133 @@ +Jetty License +$Revision: 584 $ +Preamble: + +The intent of this document is to state the conditions under which the Jetty +Package may be copied, such that the Copyright Holder maintains some semblance +of control over the development of the package, while giving the users of the +package the right to use, distribute and make reasonable modifications to the +Package in accordance with the goals and ideals of the Open Source concept as +described at http://www.opensource.org. + +It is the intent of this license to allow commercial usage of the Jetty package, +so long as the source code is distributed or suitable visible credit given or +other arrangements made with the copyright holders. + +Definitions: + + * "Jetty" refers to the collection of Java classes that are distributed as a +HTTP server with servlet capabilities and associated utilities. + + * "Package" refers to the collection of files distributed by the Copyright +Holder, and derivatives of that collection of files created through textual +modification. + + * "Standard Version" refers to such a Package if it has not been modified, +or has been modified in accordance with the wishes of the Copyright Holder. + + * "Copyright Holder" is whoever is named in the copyright or copyrights for +the package. + Mort Bay Consulting Pty. Ltd. (Australia) is the "Copyright Holder" for +the Jetty package. + + * "You" is you, if you're thinking about copying or distributing this +Package. + + * "Reasonable copying fee" is whatever you can justify on the basis of media +cost, duplication charges, time of people involved, and so on. (You will not be +required to justify it to the Copyright Holder, but only to the computing +community at large as a market that must bear the fee.) + + * "Freely Available" means that no fee is charged for the item itself, +though there may be fees involved in handling the item. It also means that +recipients of the item may redistribute it under the same conditions they +received it. + +0. The Jetty Package is Copyright (c) Mort Bay Consulting Pty. Ltd. (Australia) +and others. Individual files in this package may contain additional copyright +notices. The javax.servlet packages are copyright Sun Microsystems Inc. + +1. The Standard Version of the Jetty package is available from +http://jetty.mortbay.org. + +2. You may make and distribute verbatim copies of the source form of the +Standard Version of this Package without restriction, provided that you include +this license and all of the original copyright notices and associated +disclaimers. + +3. You may make and distribute verbatim copies of the compiled form of the +Standard Version of this Package without restriction, provided that you include +this license. + +4. You may apply bug fixes, portability fixes and other modifications derived +from the Public Domain or from the Copyright Holder. A Package modified in such +a way shall still be considered the Standard Version. + +5. You may otherwise modify your copy of this Package in any way, provided that +you insert a prominent notice in each changed file stating how and when you +changed that file, and provided that you do at least ONE of the following: + + a) Place your modifications in the Public Domain or otherwise make them +Freely Available, such as by posting said modifications to Usenet or an +equivalent medium, or placing the modifications on a major archive site such as +ftp.uu.net, or by allowing the Copyright Holder to include your modifications in +the Standard Version of the Package. + + b) Use the modified Package only within your corporation or organization. + + c) Rename any non-standard classes so the names do not conflict with +standard classes, which must also be provided, and provide a separate manual +page for each non-standard class that clearly documents how it differs from the +Standard Version. + + d) Make other arrangements with the Copyright Holder. + +6. You may distribute modifications or subsets of this Package in source code or +compiled form, provided that you do at least ONE of the following: + + a) Distribute this license and all original copyright messages, together +with instructions (in the about dialog, manual page or equivalent) on where to +get the complete Standard Version. + + b) Accompany the distribution with the machine-readable source of the +Package with your modifications. The modified package must include this license +and all of the original copyright notices and associated disclaimers, together +with instructions on where to get the complete Standard Version. + + c) Make other arrangements with the Copyright Holder. + +7. You may charge a reasonable copying fee for any distribution of this Package. +You may charge any fee you choose for support of this Package. You may not +charge a fee for this Package itself. However, you may distribute this Package +in aggregate with other (possibly commercial) programs as part of a larger +(possibly commercial) software distribution provided that you meet the other +distribution requirements of this license. + +8. Input to or the output produced from the programs of this Package do not +automatically fall under the copyright of this Package, but belong to whomever +generated them, and may be sold commercially, and may be aggregated with this +Package. + +9. Any program subroutines supplied by you and linked into this Package shall +not be considered part of this Package. + +10. The name of the Copyright Holder may not be used to endorse or promote +products derived from this software without specific prior written permission. + +11. This license may change with each release of a Standard Version of the +Package. You may choose to use the license associated with version you are using +or the license of the latest Standard Version. + +12. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +13. If any superior law implies a warranty, the sole remedy under such shall be +, at the Copyright Holders option either a) return of any price paid or b) use +or reasonable endeavours to repair or replace the software. + +14. This license shall be read under the laws of Australia. + +The End +This license was derived from the Artistic license published on +http://www.opensource.com \ No newline at end of file diff --git a/lib/ant-junit.jar b/lib/ant-junit.jar new file mode 100644 index 0000000000000000000000000000000000000000..1a2d293140ba23efeccf1ca0c4335a1ec9a7ff77 GIT binary patch literal 73665 zcmb@u1$3iJ(k19Jl$k9vGc#kEnVFfHnVFfHnVFfHnVF&ND%)ik_jJ!c{d#t0_wBBZ zq)+E4GL?$Bndjb!kmMvmK%s#Caa)tRqyO(O{`Ca;b(I!Y;-?Xp5uua&ml*`m>X#Xj zK~l-u*V}d9fPhf`-AtNaMqET#QHfSsBsjKTW{@5x^!A5}Vs)ZoV1wECp zW~}H2b$&zn0P@!_%g7(a`1Vhqz8_a0a#akG-XlpwizC$9`O7J!iPqrzK_$6Q`y16w z9g+|M$=li?AJv*YC{%wms-~sgNgcxo?0by*Su=USTIVDxMa}FD*>QNH{&dl^t%HQ4 zjoAWL)*Z>Z5ix6*-$U_XeI#}B{(x>nbl@&kT+t74en)5jgHqgo-u-jnX#76bT>?;Q z+jFF`Ly+&j$E0j1T3{j^ zf3<-AmxaEazM+}%|G^OPuZB*xwpNb+2XnyxmASr+)4vUw{g1`s{_lo3={s5)8Jqn3 z$Ibo6ShD}yv9@+j=C(HaR{yquh5wj@=KuL57S1;2|NdQ;{$nbJzdMzi9%(ea($WF);F!~ysix;mLBoID2bhYoAxdqT+4In{Yo zxPkbFxahsN>XU(a2rY94p?j(wd;>113fR$7GYQV`wDPMJbZ>Gwm?TU2q@umy>+H=D z9G87_Q#urkN)cT1^2;%8=B#>mDg)f_wN5M~SQ!mWLd zwgyo)AK3ky2PSMo+Qsj`b;(yHcnY47YEHA-c2%r;z51_zhLlUuV+AMyQHVAUYKP*ia~Laba^2kpQhimqyz9x-sh$GM1L`xC>3;j!^ZWht^Y(pL6W8-%sSpVDz!$S-2#ct#2a3ur(5*|H zd#6gDWQTCaX6a64tLVTQv%;=1MANQv%(K%$;>xMl? z|NRz){1z$JRn)FE#M7=8s7-dz)2=t<_ks7p{Rae`1$wj~A~$}C4}JhV)FyoRXeg1J z+@K(P)jlJ3JkPd(A$m10oEBtc=KAU5FyO(tSJx?tC3YtOa{?Y{he0+JpW5 zvk+)*)SeKgdXal)oPQ>k_*#h7+N8}Unt7|49Z`1U+|6;0&PvO+)tI#u8?4Y9j)JR)(>NWw z^3jR|;RbFk_S#W_3wG8@r+Gunt))?uKRas)?^agxo_Ek*dX%QGcA})J=p3{Kv`WIo z`IIaqwUm*4lqRL2i_xNX$)dTFdI>~EHhqz}TqY=)}mU)1J9Se_o(jiEKpoFXHDj|@1-)n92k?zSjPqbEFM zyV{GBm3iLiskzXd>%3`Ea~aU!q8M>!Cr!&*b28RdU2a1YfTT3w>D+~EBuI2LE=|z^ zsq5L;3T+=flqrvsv-s&SC6WFiU<1n%x=Z`OG?9$J2zB&CuF_&YeF;^L5&&;mNIY>H zKLiiOuV6ZVWXG^{AIlUWlGfO$N~sbmz~EJq3CS^*IAUjT$?GD;e)&X2*{ zAEopuI4pfmkI99uJ&^#m>FYbYY;=K!0#n9d+zuG0s|y8dLwGGqmB{2B)KwrbSEXJq zJ%oIVc+f06SmpEy+`V|l$yvJhNa_VLc!DSB9WKzJrE|GFsk{By>D5e`Zb?yt{EG9=pM9BRre-4fD zg|hHqNJ0OT8smE?KG6j#RL0DiiaVoxkB9R)tVo!l>8us)42Ai5%Sc|JG&iwPb8Ql! zd0PRkto@S`HQ35pzKn2dsviT-vqcn&DVf1FIf|m~Xgy0}>y{~JJ`5lqL#~EErRjSL z>spGgJCb1rIf-hfU$HesJp4_gq#foiN&8PZ*|R?+^nY$t>9>=t26SPzzG|xL z+_uBca7GxDsbVWG2ybLH@RCQJ7V|i1Tn_JYPxEMQsbQCxHg`o#QMLyr_YMS2e%gQr+@UazHipbAz&*hSgqUqV6RzD}9R%kc9SA7;;%zrY~?l zkwbE{mkP4@TJV@C(Fpp?&QK1fFRo6+w4WEU7rL2M{|b;drRF`E6H0REIwcYVwP*13 z4PdB0 z!5_~2?y+CN)r{gwilfEP2AQ=aB|}|sX&R+YXwRpi9>`_`*s>oRqIb%YB#}rFM;&z7 zJlZab`c@HA7^S<#?43H3VA-%guk${Q4LHh~Q&t&LJVV2aNmNzGx~Nx<6sj)6od@aF z(t##RK6zD;yAf1~E@Oz4XcFw?DfXffK3nNQ*&Be^69}wQ{NT3m=VKS$5&Nv2Iixtk z%c(A93^c%zIo|P4n1dpIx-tADSBYvcrnM9#OwV$tZ)YYxJGwTp>k4sUsx*B`;h5qb z5Ej+PCQUkeHlg)}R`#J1wLN^kZfXl$Z%>r(jNI6v!%-hVk2ly83-ZPV;3L$I$Xw(F z)Xc=az}V}cyko-xj9H0mR{RHXtA|yr@Q=q$vanAW`M?y1T=t-6V`_ zb53n(JbeI3Q|3N}+Gz9?a2A{&N>p=c+dClS1m+gYfRBIER~ad+nix$>IBdfvYl8(p z+Z)_6D6D1|=#26_huRfWzC9`QqM(bg zG%rt9|AtPf9u~7NED8nY+!UpSHM|LTujv4)Lnq$*t@21kt}a2tOlW!WuS8BGSosz5 zi=AB6D4gIf1m`<4#{kFl$gIlBrUL_0Ebg8 zBWXfG%}sg=&|q<(t9>}K7TND>k^VIo-qsumsDopa25PO`D#r6U@{I|hL6Pkw1;sMYSBNe zO#?sj7&kU|LaYgx0YP6ts(RjQh8_@6NG!`Z#g=jSYqY3=&7|K7$DMGIG;ck{{3txM zhf#-v49~Vq1$wbfzketR3>uA^I&VU5vdsJde5S>!REO?2BQVp}OKmsP)SG3N{(kI* zZm|<7&e9p2l%GBln8z61c2YotRH4X=c@o9UoE2Fm(8Mpuv~HiMfNC7UKUpkF@Q=;qF7vU)=Eef?^@vF|0-g}Dqh zOqV$l_X%m`lL=ppG|!i>Yv*?L<@-?{Q!H;6@@^APpJaFCw|Mx^MhCPy{BVf__pBTzwLPhTh#|4NT={avI9=sOxK z89V+<{}rofDsHMEd>la!G#D6=%@s8vBs8&<@LMksThq$nx3$aV`Ogh()_Yq;jwOgD zFfE3D6!I1^k))fOzOIFSl*zb~5MT+zEV`tv^LWnOwC?Iu?br7D{sHMD{Kb-VU*`8y z%~am>9yW56I;YO9;vhZbe$Fy*xYf$WVr_smbGP2D#z1tqCcr>d?IWf8rX!~E2Zvl< zFq^Z!#^V+%jc!K|RfYn8&2<~y_@I?-r%Y~*uaew4J4$VkK4hoi)pL!x>kSn-td*q4 z&YWc7Sk4{fM5N&N9&-%OhI203;4+%?mslx6d8l0J(Xz~xqSA0ydyF;*2v-@#-F%*3 zeNEE7;`}X~y`tQ!S*Y{bYxLIb9A_*=om7}9M^iG2YMuiu>oK&BKC8qku58$?hG9Ks zF2(y?F~=AKzhHIU=rkLyF=Texa5U9M_Wc|%DhCofh0-gZigfwrOE11Hj`bp~_)RI0 z-OEsy&r^ni!76i&l7)Cky}Mdr$Q*fjA+itzah)%^kCMsi%WgoCR^G;hmY=_uxn>rK z-hesyB1T2!2vsWc<)j2GU-Vu|Vt3e#=QO?JYs)0$>%I62P@t0)bjn1o7HRRclVzE9 zA@k{0&6HZ31Z!q%l}4mGjB9K2wVQB94JEf6!fcfoeQ!z`m8>62ch>69ih-g%Ya262 z7)FWwZ6`iztVK9>B+EbgCvD~a8}HIRuqS2D>OBbVMcRIvdQAI!F6tAz>RfE~2!S!t zEAv%ZXSgvW&ww$;HPd@l83PsUZ2kA1EmR*iHc`AJM(sYvLYUo3rg;J zbfOs%u*}O?XX$4?taAYJEujR}@mEN7&Tp+2w)sm9qGNSqD-NP#_Y}H{G4vw>)$cL) z@2%w6{Dz&+(80!b(MO}?aanK*sO0A13OW!A+60y{NZP}&TBUqH;1~CaB7n2`_*n`X zgv>A&44cg*c!gF2HZdR6AP`CfY9ah(eHDb;RjuI~k~b*OHvp_u9t&fj19xCCx}B3>F@YF+pUnkO>SCsjgo=s0)NRs) zNkNHkwuBL(cu}r|5lQx#P(qk2L!e^Vl!%Z@U|O^9ez_QA^-t#|NYa% z$3;mtPCu$F!>gKEHOK&icO3>%MQ+K5ivbV-R6x`Mfea znx4#LGo9|VGyNIy)ye!e7t{-02L=f^{Fa2jKgt!CG>~LM`Qseqn_6A*xmbKk49*glw5fo`x7brH_L9U;lJdTuXrsO2JQ-x*_r7ltwDG9<-e&s0uEXlPCt-gGYG)U;a% z=Jg|Xm@~Y0c28wh_j?{wGUJt)%yh6icbtR$M1 z(oaqyq3r5Es4bb=Ak?Q3e)LzG&*v8X-66)!{-rQ32NZub&`+ zx&s8|u~=J^3*PDwkUShn=Z;lw4noWYklQW7BzO#HRAxjWi|Ta>G;R@P?pM$J8FC|M zvFJ}LXyD$8TMle|%V^7q;(`JS7$=`V+KCI<^VA5nSi?{g#`!*t+W3@eXdO=buLf#f zjh!Y}CLGy?OS(n`h-lDMv{+I8yiC@@u=W7~6L0?JNZzoU_5%FN zZ+i=Muxw^)5vZ_>ZaRaV_K^{Zm_2@I%v&L7EMADZ3wBgHg?c|V2W$98<3iA3V0A|* zz?^M;Kv}wiQkA`g2dUWe_nWA1r>}_vnJ{OdnpE#G6_pj4FMn6Od@R_(=_=dn48ru3 z>^pmD53=1!!|o2WvUq{-F5mIQ_s}h15x)N@!i#t$iuZ})hvkdM-~*hS624>i&fQ7A zNetE&-?AH9nLTD}4 zqwqM$`USBK^GUPRr$e}EHvw(niCoEpYTCP+S4kSCO$O^}Sym{Qp7mm9NmUB-H1IE*Kdup@< zwezgaeGJxW5OtyK8k8{j#Y_rHdcCfzn}c_SbeROlPWrvmKEKV;c7_}%j~I(>$8$u9 z@)g?=BP;u}1OEOV^3Vo7*YLfxUG@E&wz(8-7p*M-dX6-L!zd~bY7wEi6z2<3C$$pu z9gDlrG^XO5OS|b3fVAR@SJb(4v?(g)?JykNiLT~w(-}JVg5>SK#GXWltIAt1U3N%mdiJfUSwMWhh4Q_t;%pDliR=2>a6tViI;wq;`&gdOI z_2!MO1L)Tj>dCxU`zkA#SBbzLm=wv;2et21Vjs*GW%7p>ODN11P?(|0#Tu|F@sWxG z6BUJMaN&5fL~94;Fi7jl{IdRq+D5o_7|w7n;){;RWrH{{*W%2E5d>awon49bu4o)> zScU9EvFo1C*X{_h3ZD>ghv>L{;@oEs98(ZPXdJxW>^VQ306BY(HnErIL~EB1>Y+(k ziwF}J}$=Ag+BRrvWMkXps zU{nCVR8L~K4-6I?G@|_YU9;#0vVwgZNf0^R;V`|`HjznG zhyKh$ZnQRnI+_S2!*G|K$CE8YoxLN*A(5PAT*fvW;hYJ2z?Qv+964lu@yMyl8e+eM z?4my%l0K2$D#B{-q8NLj7irtLRui`!(Y_hkdV+sL`>R;d*pc?}{h}9-NI*bRf16%7 zm>Zi&D1Q~%6pS66t(^W@x^gmh_*aob^^Y&MGT?J(`ew$2tLVHX99FNBxw#~BG(e!g zDT(<@#T1E43vBLzkaaeWvu36no3xl02S62YM*@U|<%ckb!D$kt^Ca$*p`Jm(pbrk& ze1Fo-#hz}ZZ(Aiq7r&=@Io$I6&iTm`>p9b&nELti4H`(}E|z}7jyXzp@0Y}uAD7!R zF?_DV-8p>#`@~Q-)D2W2Qm+1i4KDBG(W#rWEX3~+d%PRfyB`qnA@xwB18xwxr_1*U zJ$*xiQrt)bXz6auL3HmnHg6;+pa!k$(39^htb7A&T@OTCXW6=-S z=}Y3_4Zk-^@s{qngOvi_)ba+VIDnhG!J7p&xUEP2ILfe|!f>Y4NLv9QG7?bBC>*Yu z7eX3$CAd0-VIqn*+oKFq4dR?O&}kaVXd@+&&5uY$oGKTaNST3kE+aTz^~rWr9R>n^ zA#To-z49Ov(wd4eiSPi18V8Qg>!=g!0yh^#Hr8cqSgdx)_IAxlo&A%$%>`ZSL!08G zX5>r+Ca)H&m=||Sb}=Lq@wB^3STI)`Gz_F-xk}RO4>R_MaHer(FDSTdOtPEI&C;Ly zvCkt~HO+aJ9g%6ki!y7TYEF||ZcwUfEy?i=TO3L5VQKH0OZ3Ydr__~?9=U7gXd+v2 zrX50@HZi8;lfYV7wbIZQzNMsU0JlUsY!3%O1aZNUIk{U=Jwt96+Yn1$DZ+Rs*b4WV z#-b$V4Q>9?q9idSe_S}ayrDaoct+iFIi#uUHP<-2FW~bLZCFY<#kb@>9J8WH zzgk*I&l0xKO!22?a50-=B;)Wd!e!7UkCXwkQA4$wzk%Cap>c`3o=belA$cuv9ic=Z zBes};5JaUaOqG;patZxFP83;6)kvPjXujzN5 zOi_eBEI$+M4M0=M>W`%Cm@hmKd8}9q)bVFI#*B-Qxk6RbF7amAkX3fd7Zm1lVQiNj zrgf6zHzw!MwBo5$&oI=0@+mnueFi(0dl4#TuU~Dj(I|{^`q59PJhfjHp}Su^;J!40 z;q}3&v;VHEsLw3i9n|=;$L1C+uz-?$pTgC9oPAMpCg&j#dx1e?c`3g0i6i)i>zfxQ zV$GAkrwpjwj|HBF_9+OAF(GE5!f^JKblSIPDt;085I&V;O@TlGh-IdZu~j}Ji|#vP z%iVu}Rennkb;(k+XPTjKYdmt1xX7GnXmAvDwH>7egwmH220}s!9m~*&B8FLrG#TpU z`T7xVrcN3aVDGGu567TEPOqdRR8x*Hlnn683~PE(_{!h2&QLyAM)dCAcCFLRy?mO# z80~m@JjP-#AuCyP(RPK>`d8CM&gV#)CXn1$(0nE+1c^A8ZswVo+x2U2)VaT~xjwxy z9rNsIHImr0*TzP+uQE0+`NhcDQvTLSwj|S}y%Ekg!uR%G(l49Bnji#kwn}+z`?1K? zQ2g8%R7UKY!7&)G3(EtX%JTRI@4|AdQb~rC0^9N}?_$`K zIB`B&-c(9sLAr#)WS^Mcd_0sXZY+&;wp?lkSMxzz<;_l0@y0N)AkDZYN}jwu___NIm$IHU?}prA&EqlheYOQ*Lz|E;l(nY%53S7-CbF$fs1&Ftgx)!_-X z>BYIj&4ZZ-zz@W7F7A@#dOs5VAc5X8)2TTB2011ulB|C%{ysA--Q zkz-{W920R)B65;Bxr;#9?c& z?hyHuwL$9{zt)ft^5V|ZwsbNic2OmI>Dz1`9I_fbNTyzb6{@Bkm2!Hs^+JR)JAUmlfv0nAv# zX{n!+Cs)XmM^+gF{pNf=K4IlQf6TGPfZG$Pk96lTqP920KO9yJ2R}2PeR@NpIb%fH zCF5e(!gQeKg3fsKZ4XVqNkr-IwxYYFPZf=^3^ZeTp_kjMDN>nDqI+D%2u3E!V6w$>M|qtHel#_B77{%qh9jqlEPI zTCm|EdoA+O^_X-lPWZ!7brHK8Zcy7sexX(cQhgI7Qz78f=7OR z$1?g|ue*LeaUOBW>H=A$nfBAHBd=Z8o9>s__d{GifRa*~ngmg_!BLD!9KU#R8H(^I z3bty#o_Ieb7#SeTKn$AfO6wQ*hoAn3OZD`vBM}VsW|@Mv8+V=7DYxK)Lq@@9UkyVM zty&B~%Ses-voc@7G){H9L~m?`TC^%SJLJyhAw)XaYnr89`!ok|Tv&kJM4h`YG5yp6 zvvX`BiSB>7(bJ#Z2hrwROL6lWvKf8XZrvofpjXwAU4z9ry*oU@biXgPj{3W{GpB5$ zfGEq4yvX4gRd58cTTjU-jY2gfacygzaRtj-|2t@rif2g}M!D>^o!~5rYPHzSBWPhS zQnSTaew99yIxOZd%d}AfSZFmP@{f%o7FQx>O`;tJ&cWhOoJ@k>r$8``zC77(&==$j z&2s!){-8X>={9nN3$m3$PuL~nrxcp8y+94Gv}v^0`1!dz{*Saa>_2$n)8B|5;2|Fw z{JHyKlutse(~2SNo#M>SP=zy@fNzJ5`r1|1R$2+-NoKtIx7a^`((_}BxaZg?Qg4Oc zHtWSb>3qEszZ>E}i^cm&gn47$Vo12f7*EU|2v><>F-AYuojH{;DcA?DoN4p>#v0+h zK>k7*+?17Lb*;bsnPwir?zj5L)J;&;59*;GKXoUMdZ#5mhu{Uvw&!|&wFS6*K``ER#m{ky-U%pIM?t?jJ- zRn1eB{;K97cxM*b8^X{u9anmxkjEX(@$|t4p#Y1eY@Gn9VIwSz?2uwzZI9^)?z7pG zrxM!#$oi_})muWMu;a74nVA0SPH!!|Z@ta!1zO{u4Gxr~-DuOwpn|L6TywD7?uP~6 zgt`7BLG{NkfBiZbraC{IWKbfnX^U#1ekv#2ULc*xKU@eYLMqul+iJah0;7wE5R9_b zhf|jPu{mX(9?_ll+yy<&YG7DPNO8QHL3}2-Wh>&%nfkY*&4~&I4H7Sv7^E-rhPRD! z!@K3QCroyDlm8MjS9Q_rl9qZpqm|RU&hq|scGxKCF-bgx)VwIY2ZAWnjWRT=JxR}XZm!7hmD}zK0@{SQilcI7ywIw&>M#yMNAa_wqSbk-{4%+;kzKS3 z$rTrEjMc7Qp&@)ZLbeyF+ZQYw@2^lAc^))E`bWPqG7u2w|I4lSFZ8HdIw`3FK4zwj zZn$mmVWsrkSWtqv(+LqI74iv!Ff&C-zJcN$GdhZYw=pSUa`lsw(8R1a!{e=BRoe_f zRis*4TIusss9coos$HeVge{Ts3OY<8L_Ga{R^Nd27oz+pYTH zdIRhSc+P}p5u+4)+552ok8IBOOTQNz?ztY7$Kfy!-tx{b>$)`s3hpKUfZzS24jcDj zU!R-MR1}5#LX^Sd{TV8T^0@-bnhjk~=^h4{H?I=mdB6S3TMu?l@*uodS)U`)>rW`1 zxQkanmfT%|-v(yv+4OwU`cgK1n^nZ{qfuafv4V$0za%iPyPo0_{Zo-jjGbt=Dvy(4!OhGw&oQca^!>N-Fga*25~F`IxUKe+QT z4kH$;JPwsfuq0&zYu>d~;64Z=dX$-{iA-8MKiZl`bE-_9jD8S*Dx{_iF+PrboV-!! zS{DE(e6UR*UfoHsFF9&mwJFalT;>G-)QPO25SyOj+-}j{$#q%yni+zhNBm^RnO?9s z1Xt6+k~m;yKNvlU8_iJcIj|7kB%Ei&X_y_dg)03f3F6md~@nOJihKKO@HlKf-xAQJRoO!$8%l#ZbK|QN}HbvOU*X z9R^BTZr(J`Z4XVLj?tK3DtKwtEVQgmR`P}fP`qp+aHq)?bDgJ~zY*d#SLchKS0qo2y7br6Isjm=9b?O(0m*<+O6362d58rbV^!%nH&jN2iq-2 zk#3U1boW$%RQj*ZRG7-PC|8uONr&<1fC#FGx!U79T%W=NN*}7a=L`b*d#>>Z&o=^5 zvrr#D^qo;WFdH1%JJP{9E|$XWB`I%ev8k3Vq_w!6Zp~kf>eBVz8HmwI69LpLo=6_n z@QARKS%!@5NeoL*%HWKGzi(o-M+y!~3>N?YP3W-Dx+%^DsU|GwAEt45BUhR9aC zCPSm!w07gg9q`7V^Xq8j`5c?5?$Ql`9R(#-t3T8gcM4oB_0I|2@ntjD2%ve8%&{$< zji=jd$`W1cC7O{rZyOpeuNptBR&Vt5X!@=XnLG7oXeTGtk|YaBUf<29#iT(TLcN8X zu1~Q>%-Aw7_8`4w_Rpg;%8%PTvRc`*mePljCl&OBbtX%x3@a$6BOpuL_T7 z>fJ>NtR*b6TjCbXr!aX4Itiz-I+GjlM+UsC5e{7y_J`&c|3Eu9x;$9ZyLRww9AoHM>1SPMwSTjmyYb)buBoy{}Y1-_V zkk2`JKi6DVWa?WcL@(LEzf4lLo@)qai=8p(L@BQ-hq*M8?0T&emux?!-Op=4A0Ij(!I2p_J$p!$MMtcHf2G;m- zfwY1&OBlleFF(El20fmPu+BRqx}ncHV3-#;v_UkhZo2Cg$PgkK zq#VSVuKAqY)%e(%uHieXUC+_H{8K?iSHK>q4vaD7l4lI$n_BeaJ4pibD4}-sj9yJ# zqojl4G(I`oDM!_Y89~qs;pH4!F&bK()Yc59G0<^;08pf1eqe2Cqy-PZ>Re)fHSmKx zr7^WjfhyuRlD!+e7d@c(3kfO+j4c!Mo4gK^=9>%rN)w9p=jWg;?USTV7NqG1mRe(Q2@SU;QIHUDZhIp!@ z=^3+($T@}+yt7KzrXIOJVCV><6WRT~os3SpW$6ORGWmGFL9qKP7G;rcsJ>WuN7Po< z9_G4%d=efTW+BRC0c^66NxU}U4+7L8B@1wE8|`5uS+!6#?_$=*e>>x-2K7JjY60Ny zhTrIQTVos8jaYdD(;0n58snMLjo-=+!nL#N^M(W=hz6{*}2tv1I2K zXe)8DhOSj=D234UMy~b6eWWUXHw0}DHIG=3K*iIvvU3|SIchk#g)5-C6L}4t7ReqY z9q3giu(l z3F8tV{0JeR6Ra{(e|ki^+wfU0#0v_-asqIZ{M;^xt7WpJLe)WcC1e8v;P(W>mywgv z(dIa$oRxonvOKx+^m225Q|s44MIE7zGL7#G3Ld9cNNb?CCXgMo;>C>pzD9NsZYMnAB=!On_luDcpoFh=A=cxPB}oLTw||Jyq2$BV zR9tW)bRcqWB-WG(d!?@ZF6ekDE(Ze(@V>cxt+}1V8h98`uP3c7wkvieh?!tfhJ=os zRzTsjsZ1$0Ur&PdDkMCDag$xe;(VwGT6X<~Hb;j>F4I0ZpIa1kRUh*f!D$yo;9cEa zjV=y{QwOQ(>p<>O2xg4W6!g_&v%_V3IEBRe@varL<5CDYxXX(Pzc@4-lUf%6Gh6(U zz@2J^v?e*T!htmUxWIGvm7H~Y*oC2^pDxT4jZtksA#lpiER4o|^Z`n^&v_3Uq7Y1I z#fy{bV%P<)n-Be9hts>G!Z!vwcj?<8>q7|PKoU7nEUf)&tiK@>hXsAby6Y?5BL8<| z{a-aCVJl;6V;d)8C3ibxekUgfa|355<9`*F6r^Rb7!bT=SUbfbbR`8O`QqZ(fkL0b zlL!ewkqEDi<%`P5$Qb(fnu%)B=6#oQ;wb0w=5&MD@l6Ebm=C`5PAyJl{^mA(*&X~6 zY8z^`L;_R;7J%CdH{D^4pjbp+hM>*~^4?LoosAntP;eJ=3{I%d(odaeto_Z?OZ86spWAcdY$LU9KK5Ie`m6MKJYfFo-6YWs)o<RZ6K^X%sT!z{Cvf+ASoHC_@&??OfiPn?)aY z3Is+9qU^9I1gRENmvFgi%%nJ7SYVNAIMsM9M(rO{o#}E_NUFrOAwvD^HUzvnzYU_l zhP;dZME4mS2#DxQND2Ob4f(%t|v9&JDMIqf{n^1Qi-{_J^G1hVf!6#-U(_1iA-vWc9AitOvJ`E$9f6;l%`q48)Dm&lc?Nn%<=!Y1%d5 zx#p}Ftxr*Z=*|gfw^o=c2XYVm+Z(-~Daleao$0d8;#6@djbbuByb+^CjjAGyAPaGj zf)bFSsAq) zbI-w7gGj+!UU+Ia!MJQDftiFLD+g!%T%E;~R&jO0tU|vEx@Cun*{#ag&8f`OtIPIL z?N;yi+FHHQZ#g{p#Y$5c#qqSn2ouDrVpFHQ+TH+%$uYg(KNgS>f-ctUJj_ zo;{v04p?AHm@F1FvQ!)oCz?$D2+2}x6eUPTy7Qkgoi09ZdxAf0X$g!|mbX_;30>$%*uH0Po#V+P=dw;JVC0Ekiwsz@g2SqIe_2$a@I~iwixl zgHf;>%W$%G-3+NkiC*xlK@)3IH8{&>OPyBsBB+&-X_yE?xVwoKR+g@e!rpnS6FjRR zPGyMn_YD$>wBjjBHCM8MkfhWdXgAvsf%Nbe7P^ZjMC`c=t+H4{$paQDTBgxs9-AKk zqjjHSev7scc}ugqscifiQ3TjcX9Sv^WM9T1noH}Db(Ot+WVP)dck3E^6-BxZ#*jFp z2HDdE%D^RG=`NT=Mo;A9|JalJ$ zT_Cy%H%LCXy{4#Cdyx_5v$ISd!41RW<|i1#2y#Yw~Z*%m5NF;5B#d&XKEu*H5f$NyY4ZswPib3qCWh-C$!H*|!gKnHA6E+TFgDo}bTN zGJLc>eOIeptcAF)Hi{P&w~+@_`>GAtRn868CZa6Y+Y&!zZLl=2De z6-XpwH|oXLIm=&{y6X=;{qD(|O#3h%J~V6fxSw2Fj_E&bR=eO}v41k?d6JRb7D^fP zGPFQZxO`VWmBaa&9e8W3*&S;Q%G+{lDxf;|!12atMj9rCg?Vo!MA!Khefd0-r} zh67Drrhi>43Z+RONUn4>LcJ5r5kh`l(A+C#*^8sZZk_v_m}8|Sf!d`Gmt@5dP&f31RGK{i&Vzl# zrF@b{#!ckB#HElq5zal#Bddz|Sn zby7n%YV&l$W)H0esmhQAb^o|qp(Pf{ZFNSRT`D-p;<Wt*x9R518b}xvZ=mVlwRf zVQS(H#}TkY?2M^8K>e0H%0*~x^{_@Wb=@7bB9kkYkZ5MO>W0B(fQHCLI8uoq-W~9r z&8l&(rpK>a+3Z*L2?yr+FzC(^aBd+9d(p$T`4=^gbdHoWwFZ{I9p9~O02?_P~A zBXDoQM{W5}EW)>x)JxZ`ch8$okoXU=BtC}xPpRJb;MIp(H*{a3i{0=)@Pwa<_HSr9 zgT2acQwptkB9yC?2roz@OUDet+w52F=05+U{aJ!NxP_W@F86+DZy=eBzJ4o#gNolBFluYo;#^OM%iPaEyh-*h^2`^* zf~Jg%yHjta-rk-*-~7H|i_Asq(FJ&avzDEh2Y5&XkfP9Ejjl`=Ym`62k*H_7m&1rF z_;3uTr@9DlU?z_X(`OtFvuqalxOouead=48gL;9218bO->}IfWFA&dB#`)>+>6Cer zG$&sw3BW1qw4BqYa=Q<_CGx)JF&UpEh+ChKtnb7TomLrwg~QSg*Uz}=)GE1#^BOU? z(5ecZeHSMBX8Ni7QB~+O}bRnmx@-IZw7GGn`xuYL_a7_}unr=OojnzL+asJBmlxQ|<55Izu z`X%Ie|1Q(}?*UQz`lAS9hJWd}#95oKqRU8cwDcBwVv5`c8s-L&Ilp!rK?G%fn1nE* z7_rhpn|;f8$&5|2PM{kZEw&s<+};cbkZd42mpmMzT^LQRtBZ*b*KXDO`|s0QAQw9} zAwMiYl08%3E7Ao4_ZCzgq8`(a!2GKaN^5RCw6Mx6GgZm&S@xkZF7u=ajC8?d0`Sk1J7Oa- z`cJkA5hrnHkxMD+BBScX;7c$|=O8d=ZYgKw#~Ekds4vI!$otsq${E-BLTm^&xdGO@ ze}Wc78zj_9>ZKU&d<}w6Qc306W0wPvWYU#@UP!C{1WT`fgmR3;1|UjzDSjU`)=F32 zmwwjW>n?vOW&dd%b9afStToK?kZRW*raKsHko*xb5X<*h_=rmP0e$<@h5vxh-!69k zPxySPL`&(flIK5BRIH$Fi^Pw@1JZdFkfd@I`rkNv$L36rBD~^3b*MxGF*t5yw{_kmJHa(qCpw|ylL9`eMa~0OXVX$8o zvsK5Yz3s|iqhA-|;x=#FfU0%mGuWFrRd{w)ktkFiE9G2jBtv>@&yWObb2XatW*xqF zI*xPlORMuci}-~tE@0buOwA22q@fN9!q^HzjgTNIFJik5`zJmBo%iyVis{K`aiNfi z;=CjxM!z_E7*i>tjNqON!$rxu+~V|(`X)BGG#SP?7R@tbbQJWC|9MFTQtEyVm$GQU z+f$@oHguyj%EYAlzLk%3nLizS5^;FS*rtxhezr3zur{HLF(W`x7l5nGK1U*@!LU!j zfu;6+NggZpTt1$@pc~ck9+fyv<~|`H!1kUoxU>-5InQDbsvg4{QTQ%Rr&9)sQ;WXQxDu1pL3Vp$sLx+{r0ewScI`NEqM?KDPklS?fw%R)yi8}mw_7G!TCHt^ z11_#+U|g<5jz`VH>kieTECbTf1^zZ)`gUqKRn5IjqE9{x(KgW{wq|EX9NmQ0+^m^e z*PgfMyIwHN^WrNl9gY|?(sAc&7kM}{;BTV+ooK?TQ=sb7`?$y$mkoIB>XrT5sirfl zSE^kJptHT2>^MT>U^tIR0NC&>MVa~7j_K5fw_y%!jtR=ol=_ zng9g>7>pDKBVsl*mg`4Mvd8g#ij9NDp~PGd9n}X*Vrm`b4U+3lNG`em@QMF*hQDlw zc+MKg@iu03-4rK|co*nFg5NnEGm^^tcx11zF4WVrt`2n>?v!gQGn2xaMvG7nTaspz z@|g{XkakzDUreK~(&FOQ^I}ajhfiap8aO7P6iWg%^An6-i#pba6x z+;L@sADW{0q<|?sCn!noC^_yx0`3T4Pi#^rxPyC`nz(;xPnW$_7zyv^h1!9$2HhZOHzwk>%`)0cHU9PG{RXTk)}~av@qVh zv7p~fG$<`tawSk8%d4b!JmU(nfsrYJPw0g4)GNHk<;9-M|3}@0PcV>8KyW0->__Ci zk1Vr z{WsX%-$jZMww?5@7)4J|Vg$BIRG%n(`zsw1S)l_#2vcg64Q_!5#K5er)k~{r^4Qnzp`mS^kZ; zqkrQ~_P@V+lwECY4V^syZ`)IO`afdno1?{;vdvaw{a&96O+qOw05p}PsD(xWO))^4 zY|t{%1_g7J;klzM7KE|y52#K=Fc@N=FtJ&pf~u-K6yfnp=9`(=wtjE#57=Da7fXr5 z@Q5m8Bti{$+qJ>?zYP^m{7src(dH-+D~=S~O*1NfxB~?~Bc_UGjG*=$7xFor2EB0%j%1d)%Z za)SO4X*~?%FrEaKV(S(DpdV6Vz@?HHu5r}?iB~beTtS`-aORG7N?q{INtNoCgj8S< zoS%J%C4?HA_dz6#?*Y@c0uF5lkjW&BZ~8IJynF)+0w!Fsu&5#Y`LJG7@4yqXc65Zh zOX746-ZoQ?&NgjbMbU_L)ACHwv!QJ7TLIm_hxKC0jz_O3R50T8hR8{1ckj#0fSn6z zykwIyMb8lb_u({MhS-{-`^U1f_%EWQ|3`cMkK}6hf%Z{Ze)?&jG@(dL1%d_+VW*Oo z5DK(0(qJQ!hy$Xa3%rPv85ko&Wktns2j|qeP!p`)PqAv=9{>{>X4hzTE!WnqXlZt> z>|IgY&`SMz*?ci$!KSGCx}bd7a!+-h;rr-*foJ@@Jw+8!sfc}t7fZjSiajOscW8|6HquZCcEi_iplBh2#YCjaMs#!WJ}P# zCY@-Kwqt*i!?SrW$0(bO+hvrzxtrq7%!}m4>E6g3j;nyA->AiK2N#L2AYBpIX zzCCN;cZP0!2&!YVw+|ER6DQ7pn1aZ|raCE0@CMau^E8$w-r{}8(YkqEZ2AjU!rb!= z_^qtm^ALgH1q(CQTv36)|MBv0Us7*VS;sqqCub&McFcV1p4)G2Tr^bsdf#)_`HuG5 zuV0$@jRcbsTZ#96b?RuxVRBNZYd^mB{(+srZ*us8_ZFUE`*5GWmP@7QD!%t1)t&cV z*RSU!<)-uKX6qi5QI|^Kalz{?K6Pbnm=F#S`&rodN_;ObH#xfbWzO(DFic7CM$LN3 z+WNUEy($dMv`5qWIUvmmV5F<)b$j+aOqF{udn?fXCKUKNMwg%L^*&Ue3G??j6u{nD zje5h4{lx73+#vlKoVD+MZ27F!_B)B+VV(7_vuuL){q+r{NWCxQk@QGqYRsCYye^if zLy#QMKLHOm5hRv;hE6_lp{V)U)JDEh=)_wAsaEQ>K6jK{k*a;qb9kWo zox@8ro4gb7wvxG$V3*BJLifR?XQNmvve`1*F zv;yZ^kra=iyIRaiaqK{xd_4loprJV2tea(tjCMeQ| zJ-`~ZjU(O~wcU+t72#x^tVY&J0;Zglw_9%+Q2w^YyT%CK7DvCGSF+$e(Kpg272 zxT!WR3U918=7G_^Y*edN5EEKZS!~xlMJrZ@x_K^A3y{p7S{ZpRlyj_9zAN~IGv~%^ zwo^UPSiwSfNGjSc#Obp712b??vDjr*4CAR%*tl!8e5h!6LSB?{Fi|Qut3+QB5gDc} z+HDkKb(E@V*Suc1;xSBzef;vDzbuL;(RU&;dwpDpXR>hS7(CmUv(SwJ^MqV)_N5GV zH!aC=5_i+8TfOclJn}-w_{$EQ(>J1nOIo+!zWo$*wt(SiJtUZ`=c#Ox_xwIMP;XCB zog&3m6@&!LpI!MG)vujm-X~gH_d;zI`hE(gwWMXkZJxBXj1=p$?R)vjOMUP|sGdwkzDfAlp5X9dFypg+sq|3|Cy6GRT4cXR) zKO;R;b&}~gP_XN8?`#j~D{98@cX1{teYCgcI0ziH7>R)*7%T4+v}hFrt1nTzZeiN>%!D>5>XVCbXqG%tQ!_c)@RTk*c`NY)XrK%|oURtnc4-QyI;&^XLHutPq4RgJ`CQZyb7l`!Ftzd6kmP_;Kf>0g{!1qzM_Q}Ftnk0?V^FyvaYT7B)`-rvq)Bm&$1)`Z#{ZD#`w`#(B(B7mCr}?6=4k zS&cAecFQebpYuTH-zgBS@6=W81;zQx&z1);;#bCWSQxo%YazCu^0fms+u7ygcdN_G zRnbGPebshgBW=1+IK8z9E*d^D^xaUuU;s9~ltJO*kQv$_&AWoxd472e*H9qiE=G78 zQPm@trJYqEuox;`=CNmR)&C5T;SXLcfMw*EN50vsw_xbCCWD;9SmTK-VrXG=wlnLm zcNqj#tK?i$u=NvgHOK^EO|eAF-_wSdLI*SygmLI~jl07HaiNWT(T%TXcWgomo~@BL zEB4&ZlsBB@+zDv_Ry3xNfvEVWxi?Zol(@WYB%|VNSpzd^-b|!P zWY&4r#3VcuV{~*0IxQ@UK>2wB^m^wa;?*n8n=}q5LUX}>8(<1kxG0y|_YLySu{4yS zhEhR8*mQ`SDfZ?7vrw-CV9@Akiqs`u1QCc8Fe_QD%y9}HP79~m9LfH;OdzhvMU35s zJJTafK^Zp9N_;Zcxv)<6h0h79P^HA32&B`%lcB7>41=X{K34S)(oqOuVmIoX zWw=U)C}LA@XhrjB`_0FV%)(C%}U!1$C=RvS@D{R4lL24v^g{T?*DD>mqv}*e?cQ^NJ zZ<8-U(r9UYI&6q%JIt*diTO0AXOAQ77E#1668vJ(E zs)nn&>JUxu{bajL=NboVkwD`J+THAh6}LgHVfIbzN}@ZW6`)O%BeMO4-s|Guht!Ln%{RWuj?L$GH%s z%xefhtgYoVWG6+lu-ffAn#x4Cir%eG{W5c!;flzSw4JG=6VIg0#8AgqK|8pDOo)<8 zXx4cy-f0oP&(#tAgh3_fmvyO7oO?a!6eKzquqzuMK^xWp1VSd6+jDJ z0-c5r(3Bj7GRJF^K-^~aI0t=}gq*^FjeR)T50ZsP@Q^GYIV~S;9KUSjb;UB=a7^)U zueaz7a$Xa$<3>FL42Ye6#ntTK)Qg3HlJS@`6dH9?<)puC)UaUL*FG!P#j=Pf|Pdm0Q8hdWf5*i4!bc zGBXIz;x6j2v2Ve58yHX;z#TJ~z2l@~{o6U8`Og;CbAw4K6KRx9IfvctT^IZiN&3|z z+35Rmm=nnuR3J2+{9<=8HR+vp>ei-J+7Ui$XBEG_L;yQm$p3(Pj#%7b)AGx ztC@59-0-=fIg;;HTGvg=Gs&Eq0=orK*xH=Oy6Uil+l&zRo3+l(TqDW9X$YEz$oGw; z<>JLP&dtx&1W^%AvnEhpB6#RrGuLgxAr(-yu^tC?yo0T^+glV3z*|}OrH3J;xB7z^ zLEP%~bS%dIIK`9a^clEPV!DT$(>n%en1}1`gG+BkTUN+^;X$PFqaH2$jBhl~6b6E{ zCH>MB^b9DzR(#Pq$2`Yq?U+@1snplnN588e_p2nRTf(^OAm9Eat3zGWuoU!*vc{lc z2KhwmocO6OFC4NZ5nT2hSvm`nYu|^V#;k6&KtWqoW-i~dU(OyrB*B#1%1_zCR(P8Ri^hPGmz3CNLgEa>*vHh81q*yc<=z zmx^tOBvWC=z&wb5KaD??hB}hyy6*3-D$PeNX&uTHXq<-BMuI3RX-puqJ|wAV_qs!w zJEG?;Q%mAMpVhL>w67F-6NEMm=6wZ=h#W09aOv@WWBl6%L-~iUFdH`Oe;>51LcQQ- zm^M{#>ki30K-x7J>X#1Ap{1`>ifEAN*d?tbWNB`)hS+zTY*r@R^_RONYYSCIRj*@Y6v!F`u5}fP7+zPx~&h6;z4Q~{b1+& z`0eBAxm#n~r9snQttnpF!;DgY&$h+(a2b6&HxCSZHL2;ljW$tSAm0k(w$9?2zYn%@?POL#)wa0r5j`kB zVJpA3lb23dro0P%vA+dkfc6CAOct7eFAV^Rw{ovAT{bQK)TjK&e&O%YZxM%T`e~*d0iDxP!qnR!02WMVq>*Mn7gXi&rz%1n362OhH#7!7EPpqx@|4yWK0Umz8$vz&cb z!Gjda9TSJc&D8R4mzv^-znxFoXnV-))}#goEEk&{oGO|p+V@;{#o90RF8TxlM+Sko zkAg3#Y#;uvS)lIq04!bLhd&F3_6C-OpHbI{)$yoDdnp8YkXrk~d}9kiPe?HWb6p^O zOADdDn%))45(!3{_qv+qKU`rBS4ipjP>||M2D;@!JjpgVfkl7l7UkU|BAXQC-e8$t^F^X_B9`KgFl;OLfs&EC8G3hcX|br{vU_L*b-k zoRD8@nPDsEp6QJ8lwyDznpaw!6+X#G&k6wwWBa#-2uk;~yw)+|!vym_u($|y$9pUg ztS9U7?7T}O1yi`Bv!Z>iR#6>ndg=Mp2VYOV?A>>!z?htSiZRPZ>3p+l#MG`|IYmkW zg-$y26?yAIKFm~AX0kn-iZL5#PA#OZ`xYV}xuhA7LqNx&=BdY4ZPnmHUj#Zf+%L#) zTR%J>dQPy(T|PhTO@Gv)1{LP@sbx~IOk^GVS5wZk4yqIo661I@vr zoK){+Yo;S$2BRjLBF>=6*cMP-YJxQV#?3P%SBKg=Tkj3}3~Uo$4*WpmB9b(`~< z2)i3%7~wKAuju$=5UZVLc6sAPLRWiS%Q&y>y11S(B`sS7vL^H_uZyzb>L1*&kr&z- z%&HQVC&IWHr(yI;-I8w=->0>6Z3!}$An_G+M&oeT z5G`*VajB;4F7^EcHrtc=5!H?Y3AU^($ms8GdxrPf9(oyONX;yD7>i<;qN^xwrBmP= zMQnpF$iHbp$|0s!wJd8@7GQ~CCl499u2|#pw>+C)k#@^v3aKoc{Tbu1y!&&8R4j|M zdRr%{DT{9!9Jh9ESg{oS_R5-e5N|Q_b?su_(Mqt*X^E1?e2(FYfB8cDpuQ*gbeI-& zHi|b1x-%~kxCThjvlRahs_PWCF0{F1#mpZ-E~c&noVl8~8(jkI8?MaW)cSpv|28_b zTCZfy*i+bG^7+m#+$nrv z^?qAnJNw|yx%LrGcS&(DGIW=D-O;IRt#fQ#R%uk<#Z9s)V!HH1?Fe|W3*NA9y-DL9 zw~8nQ?QlR~v>GGGCW+-T>P<;-p)urVw}$2v`pWc7oF$xbdGVBb(QkQ__|{`5x%=dowP$2$wUk+D|`%2^^_MzSR8r7K`Tn)4*M5ISOk?|r3bPo=oAR&7kJ z4~(#f?}~_-hyGdnh||43xCx0$yl*8EnuTe(jqnPzLcnznn$$*`=H7m6>CHT$I;_<_ zvxib4l_GaiN<_JI%?xj1bL!I(NSlpq==3oi*!f!NXE#Y3;z_`{>hPIk;m;1Z=DRsy z%DFGh!259int|9JzkJqC=i7>>9CpE>(Hf>9nV=jm^(>S8?(5^7bW7cX0 za(umdQf7Q71vtUZ@k$VQg*lxWo=18C+p=3k+WdxY62@<0z#;M@z6Kr8aSHz!W|RyF zgM3a#tJGG?fjBk)HPHz4i6`L+QFI9aQfdiG4kO%ju}-|WuOcJT8)RQ{n#ImEPGqZ6Et)mjaGLT$ zG`n5UQ6sw@W-Oqt0#BnmqHlJyI%#xvTbsHU)dpcMF)fN*CO^l>3guJ}danD|I|ArC z^PLBP<)bJ88z}v03lI$pUqy)$p|ICC0rv6{IN(>ln<2P;Cb`Rky2~;wM`}QvbBU3~ zh`z}UGyQoPyg| zp6fP9jesvR$#4g9T%^6;r{drq7~I*RxgNPs4)oFNiMr1TWQB?q0CO7~C=R@vNAruI zD=37{wlr`vpBYdD=FbdR!Y?%JB%L-Thdj{TC#L!yRDpUhI|S$G1G`t`aH9Ij-#2y8 z0C}R_U$z6|;B{4%H&m5(@2psbOZ21FbMM3N-@Uu+-@WA|5hFELNuz1SO#G*6h+8>3 zz*%X;L@oQeaxkVcp|9N-u90a*_NA0CUw|=Q3^^mcCmm#O#SzW|pH5XYa)nX!T?%D; zodchE_P5xIk^`F>R2+7GH~G5?uYc|HfnNLGc|+>32hS9~U*<7O_g4(ATVCq?CK%0& zYmr2f)Fzgg!-_R};rftAA) zm&NY)|22ugo2~)AG3X!mY@IRxGOUi_G9R?fus;SslDDTd>40$K$r~SrvkB%Tk==$v z2gtK&gJHbx5MyV?c!{(8F;HXQu#n}UH&Hugh?w6m*d#CE-Aq}F8$HO1ribQ#36B~qRU^zkPPFiY~OCyQR~ISh%I z3(5B+>r{*-JV)eciMXfCO?;HKOn6mdVz3O{c#m@j`-J#jnZ-1U$`|3qN$4Qud%Nf-MGl6KauT#{OCl59~i%#6bazNew21RnANC1 zYQ!VCJ+PV#uiFW@;ficx)fU>#kr2s4&H>AA40R(b(^%E6^=xxaBNPo0QtM|^mbPqI zNHa9<=*h1-5*D*L$Ih;Csl(1QBD!o;`jmOunIKnPay@cEt_fWPKHbRcEyxI0W&o9K zA>|`8fYP?y;t~GtO|}aCP04{N?%NTc3gb<&n5Tfpr}W^YmvArNc*iYLd0~;)JfPOXKX(saDxU>6NN}#At{v+d%07UOQYB&brzg;?)?h17QJk{?+Ot{RI{ab6}9_Z2S@mn!;G|iijHV1KBQvE zNr1Oe$n0RlV;$X==o|Lib;71KF<0(2QEWOlKy0;N!o+)Mg9V>_`oAMvpA5%LYkm(E{0cXIX2`VGUEb_YYKhm`Iu;FMed&G#^O z2n$gZWCycxPXEuh)gztXIBnIdN_kO;Qp#ND$dv9QBn=BqmLTDxMB#wl?SVk z=q+q|zq!TnJ1M>C5L_h6qv{^8=q?Gehe34V#C4tyWxx*!8^2Yb=5{Tv?xH^XocES2~m;J~Oq1 z50CSVoH|9BO);K>XHUqNr-Fy|Gf52vM;<=anUFOx$~OZ)<4HdL?L_|W_~Tcd_F01! zl-x-8N6i|HH{QMvyePWHpnIlW7V}>e81+MWW^%*xzk{7ty;{fIKUi}9ejXebY$9;A zImu(yy(MtQ~xOpuTBz|Z``ArV$joPqz{-sXae1Xpem$7eI)aG%Y+qiA+)z&&( zxOzm`pXtQ1WKO>sKJ{h2eqnwGs=}KSJl&Iu;y>I{kK(79eKvKU!(wMHg};ocy+G`$ zx%|wkho1j-^o<#ty)z9$zrn_u+ZOYqw~a$Q!0fESQj9Eu&j6Xeie` znlr9|Z&7walQK&`E)-*>mldX(tcCC+j$WI{G(DnME}22@@7N7pZ4i&qS$bCU(Pl zMMs#X{QYHTbJLTWG8J;OMb;C~-2mC*(@Io-a5zoBZV|AS=2bV%n8F9ljatW$(5>(= zR=;nOPWv#&p-Gp}ZOZ@bu{g{dL@GTa{4XQ%Eb3w%Q1l^5XoYD6Ii0hefH)^Eq4Qq& z%wU@gdiZN1#b2b$po_Z#t^JlrSzAIp4V$k+B)H!xtkF;-oP&P?yC?cvE9-+CZjUPl z)}v_;x$q})e#hw1eTJx)Mskg@!r3yc<2QopMZ!#Q2&GfQUPE72GkiW=qX9HIVFuR_ zEH}@&VIO;8(E9@@#6KotJZ?Fq_n?1E{3x%o8}&JjQ)Oj&=sWb2;_94%E1!h~zcFq~ zo?#mA&|Kcz3GU4G6WhY^X-jW3_ox8@7nPX)j(V^;kFT@-1i&7&XF93!S_1HTmD@M3 zkB~|_bzRnr2VEkqOnbP=+W&|v*k9IN{iQEy{nOg`>|a{r3v1ztWbF@S?T=+0%A>sT z+~(FVps~h!{6l8=z0&__OLJTr@P=*Rhmn>GdVCV__NUu`VH@}Ohr;lCrvFoy=9u&M zo2-E!Y}yXQv3tPV7oSne=YQ(}?y$fW!_-HT>f%QF@&L{DPNJ%!j=}>TMnXU=& zA#;l%J}Ro(JVJbTQxO@3)9os#KVN&H?&JOgQli1sb%H?>895e-d+3<EAHWWK3-4g6VJYSTa<&v# z>Mx9C!L=T^TpkLD7UB-GzeteSVb~l`LBJl}(ubWsIP;C!okm7sUsP#ndrT%4spy0W zxsLknl)kC6ji^ezl1mSND!4cu>nHAi$kBzra}&gU#XQfQ+m0BKuD`_&mUfWOdrH#J zaVwN|7D%4(=~Z_YCAH>os!!>vEwkO`A+Aa~n^Uh>H6OcXO4MBu-xXd8W_veZ~QBVgNY%m9vbz1oY zH#@Reo|1|N@%1N=F$>eE5Z&QCx`GBeg`<8stuTm{WF=i_O4fDF+_V3Ptp(f?F?HT% z?PWd7VCTvE>Y%BWTS`E-+r~K`7D_`n!eEqX)(+(XXZn9SOOB&<%y3_nQ?F5oxfbvT z%d0**9?mZ>39l;HcgKaCi?YEy4L+h|l*DqHM7JtZ%IQ;NCSnNkS#;5*CK4y>v8~+d z&MS;X%<3Rfz7lFXjOkxy-NCyBoEFo_%_!M2miCz0Ibu#st<^mz$}`H}s|Ml2_#Co$ ztf|W;FXG`1#J7O3#mNt&V!_=+Of3LnD5I!{h27G6^3R1(+{ z33B10R)Ck}8YPzNNfhlqif3Yx{E8EASfHkRq|%I!OZ3fCSHwdt#Y@ zvDijnHlq&Xv2p3dn%suMg}gL2GQzXxEzlOBOdpB8V9j?iR}A3KlzQT36U>zsKYvJ^ zai&2jQsX*#(`mFV`5i*Uy$+-#U7nf+tUbpD481sS;T-Up9xm|^8Q=6nDImQz@q>9OkK-P0zkW^4(3V>?ZH%odKZSN^YuPPTuB_l4V-3 z<^g~hCoxw@@PD_eRnCf<=FO$j8^0?a$~=n>w}i6Ym*8otSDmIK0P9Cf7cM`kb6$yo z483r7H7L!R7Zjc%m>%|Kb614!{C0Ch199YT$&a|I#gg+2#ZMA*!SrOBA0m+XgGMxM zr4^h-d4{JdT>dDmuozk%D>k>Roe#;ZVad~053lx4rD}D#@?_j3A|N=)RH7yzT6$JW zU67j(``GC6=bA~UBGlAy8Ja=YQbi+;LtFh_vC?=PJO*-^Edqg+Uob|MhM03VktXq^t-UjL3v+bJY0z*JhHT8%6zPkb?G)BxCedL6SfSk#S z%Dmc_#|Xi!CIDj<`dmkd8$+<>Ve9~q+n|G~K)4D33^nIS>0&PI)kIo`TqtSnuK$YE zNu3|BnWR4LNFc%TPPxEo++2H3KzZ+wBZ!r)Vrnivwi^ukG)w0Nt~w9WiEY+ggzMQ! zpcGuiLb zOahu&2FaOJsMi}mLasZ&Oo%v+3Qq-0!YW^7L8^Z3q7C2wVbIBCYp%H3PrHZ^Vit;J zC_rR+xyvItA8f@X&o(-A7M0_zb(sTIq1aifTrU0A(eH};6}2`ODOkMkuT#=P~%P zaP`mCE2tB<74~6#bHj`z(Fu3zLc8dOgiU&9(2`OxtB3ij9H_Q&iOkHiPGUkrh7LB9 zKKK2&NVkoIPbk$9j55S9PN9ii2EEp>l}SeFZhMN;Ft$gIWct3PYmf)T?8%wM9c|kY z%R1fYu5UEs< zW0U|A5HUtVWPof%txc_@gSB9pnJ_byE(yK~E~4m&2|lbVB6x?V9pm+Q3q5n^|GMT+ z#Q$OjkR1HI5!&;z{j%-uy-mKj^Zj|I4g`Bw9RhY~#YRdwW*o>B*cRv!cnFS-ap)+B z0Oh1GObidOftTMM$Km}`I(&`Y@2!THi&~qLDl%w@hum2R>?t_Ni>G{NZxwoCQuUn-qr!9Z zWZKXb1Mr+w&1<49J7;BC>oUH_V#ObIYg6>xN=EjgagNC*EiKPuyfJMkuQo}KNoCeO zkJ?JCXW6y_kM}6Zj9A_1M$4Rwub-Ovoa0|SV|g|$7Is@7bHkMr%kni_!W~n1Ye3jI zlgH*JJr5!Ut#T)jj}XhNSb+45#MMEC)MnK z>E*sLBj}pD&W)x$wpNCL?=nbvdVB zke3o_6aj`7j!RywRrDjY&Gpw$1O--ix9CmBrO}(z-wy1cE3`QR1SHySBj^%XY;}%1M$#G0jgFe< ze~?K2Y;~u4y{_w~Zu~c$88_a>)~jFZQ*Yr5Zht)~ZSCUzXkogn2@%&EFwiZ}2fhI? zpqwaEPBo(00oy1h)kLuI3-uCl!+}jCqN4*+^1~Z|?fy<0xpNQ1Ai(x0HGb(`Kn$Xz z*r<3~?Y=R7?yfR^F0^;<;L;s09wwRQeKcHemL6qp?Y|LpN0tW^1Fv?raNWByO;eyb zvBcVez9SP6`ufiKrdZ=gZ$6r15B_Ba1Hbp|TJRU$`;vv@K?Nrt-&BW@Sr5zx1CY^9 z_WN0OM*X-3M%;C`Co*cZla}74AY_)N@mPvEZN@5^vU%FZ@BjXlz2hU!uWziJ7J{VuIfUN~9+E+6A0aU<~%&Cou|!Cr zA~%o9W8roNt2Z%r0kfL_Zlj#tg4-_KXZ1h*Y&R^ zCzvA@5-K<{E1)M%>5`Avz$N(lmpK&ac-WWSij8O?afByNxEeXFKvg6-iz#H=RNw`u z!C9aPf_YKfv9$3o73$N-N_`Iz)rB{}qqU<(BgON~!z3TJ90UNhg>^+jC$b;)!QVf9 z;{vUokFEzy3tplNUaDeF7_|x+-@u{QFkrd~{b>z`u|66Y%pcGe{$oAy2k{S#{or$) zkND)nmrL0#g3H?gWg1(2%gW*GoV&gdy>^o+nrr5)(fKDKbHFQ9GprUyRDmBFs(U=Q zWPiDJZ)$ARiQ=GtJB~x}N#W)Epv+T!!hi)l%4$URX~~zD+`O(woK{KWtb1XoX`TTh z!M$(eXN=TBPzY_A{T{#*Em~a>n|szbaW+$E8@)d=XY`fZGi&&rg>s)Zi3GheU^D<#U7Ep0Iz+CC8V(h#zjV!P|c~rA7&6liTD(h~%Szto^2V3PXvKoWX z`QA?iNPs?|jT@>w{mXJe4PF1KUV!#=7!A&WlIWN-?Pk%9FIM@W@E~z97mHc@dBBWRF|xDsh=L**jRb{66i*&Z4vbs3PV7kxIxdrzUZ=4dq1D{n zvaD66R!u)|MH@(FK%=Bx%%EGPYg4UeTTSm;seNHiyYsX8!h$^@Qts2c11WIbxuJR8 zZr(k3K*;Y97bdj?Bd|5azCic1sH#^bbRAR?OzQuq53mm9e~#MLJzt zWO=KcwEAiZRhxXQ!^mfHTUzX$(|_{u#)`+{k=-Bd2jh^~p8~{=+qErUXyZh`01NvB z4`H8VUzxkXMKUGIYRTIQ8!o#r1Q+vR*-)2xtBmXp^=W3=@(R?Tnqdp#6Tp_s{wgGp zJ%jo7X4FHL81hiO&?!SCV19cPXxW)-c8e}_E@gN?W694rz0Bes{aBN{jR|%d389}V z3HvI&pu;$wTKpDq`>7gaf4gW@^K>8G@M1mCFRS<6f%KP{?mB6kv&*M3*M865>rIVu z=lEy?{G%1FXHXvg)0WYHbXV68kjewTmc8(im3o6>vh(z?+~qK>ywi4XKj+v`;Af0Z+O!G>3*lnXK1&V72CD)c(%5p(s*A~M)RRC z-h%{9vI?QuO@l!Ll-aYA7IV2uOH-B7*z8`VTBqHnn1GtX-JtC8)$x6k>%?+XgvW%a`}vLc1mcS=m!8Gl#ohNV-D zrMUiY;OwK#YuL=q%VRP)zi`B*3_{r`WIK@2 zZJjPLAJn;S!M^v~HqNW9dl^N=G2V}Eoujw9oB|KnKS$G0A$^+7o5<6j&fWT7WTXpc z)r^o!{C35ysk+hVDc`j^g-WW4d8q?{20QsT-Gx$Xz`*R8lB}bF6s2BdZxfn+o%{dc z>>YzN0itBlp0;gc+P1r=ZQHhOYudKWuWj45ZQFSB?%jPac7NQ6y%8s({#R60WSz{D zNj}hJ>bEqeFRl>u2FQ2sB*V4@_6l5CsQ8c`0AC$!d@oA-fn4W9ipep?Ui8adrkZ;y zRxKcf7Qu?ICoyGh=`WGGVzoBeTx(5&Ynp418AkWwRC&;;gI^7)lpl3cpQJ>J*b8)L ztm=;#%B!rsVw3>OX`wYx88*zfX?`MCS^Inb>)G=le@ZoR*`fo6#D7HHt}mZM6x=aV z_#-6A#xkJ)@wjqL5|TQe%&U}taWRSIJKAU9aMa z``mgIr*{Q9K?JF5h(ep&ZjQK(dZs<**t8D1$u(!!+!p-8kVe(mrvR)aVUbcn2j`zN z3_Ume{`qnYNApR^rF}{LeyibSb<`@flO^`|LhdLU8Zezyp7+?_5tbhm^>Vz23a|J- z#2!<7X(}s~L(gJM_XLUm7Z z9dd$&g_^o&k^A8*;=$PL>x{VI+xU^qBQBlNB_I=wq!pIoiHupRF&(;LPBPMdF&=n( z%SO22$nYQ%{0exkjTC1@t-Kb#8K?d7ouqqdJGDt~72;xh~n(ZiB?lQg{9lt{Vd%+R3UKl@`TEuQo~@EApEaA>o3S(b)5ijX7*={e``irtBNj zq?~)UO95)(4_N8_rL;fqr=rxz-G2^lU>+hsBbu*V*K<{N>1hObjKw z0x`sffM1GAoO-*FCq+BkYq$s^FnnT z711wSZnt1v+Q2$K?0@{`&K?-IuU8}&1E8pcG0UEO&IgXz0HN(9ut43~*5snVZ1DYQ zvg4!+ztD;riGh$g&(aKAnnd-9tI}?;JaMwvdc?k~%8wB@nvgi=w3^3hb9cU}8dfDw zeq0gZHjGa32@rax)C|{WIFoo!W|Y5^IYR;{@V+cG*KjWRx80TFraJUZJwlMk~Ut* zq%UWICa$O3Wm1fctaBZXGbjxHb@4?s)dM99$wX zEVKdCxmMp3L`+5K)Td-T5k9hHy!1teRXM}Jvb7v|K1!ZM1Z2L9+c7+?sT>5Ut`et)W!+Xr zX~pioNt(>_21{!9HFVN;Pu!>U+SR#FZxmt3+a$*B0(Tz7T>&r*LM4F^h*oX$zo;#ab^%5(qg zuSfF?2B1Lsp5RNz2trf}&pfAL-BM<@m*mUDc)rgnNPNf=W-aWlsP?TYA5T7HF*?dF zvJ5CU?K>%hHZZr((6^~rD*(vN>Xt+#Mnsfk6izcNX%neYPVrcnLOwh!0Vg(ajwq{C ztSg&MMAIrq3b&x+ScaEdy0?!V@ieIAet;Ey=k(?z!)SQo20LkJlR|F_@grt5m1vfv zFi&x%e-0cX(}jc~I($XP5Z=shNG5F86m3g1duE&WkZzQDbvgBjkeA{w`%Tf6OC~Jt zYuOLS*h>)T6(D(1Hj>WS_4TFHHb3iOQ43Ndky1H8pCNOPCIypZ=Ff)wT|iU~r>#Q% zSCEy5n7QWUCGu>>EUuxPMGQ9c2E7QYIAp%kIrCbtYDH`8yF!B4?gZ-RK5S{3;4A9~ z`igb9FRcvTd8~)D&4X#CsQ9@JHN3u-j_s4a;(K?W;$4x*mFzi8(NcQ#FSfM=$}}6; z)Gh*@6ts+PxYy^ayCr%@@*@Sne}A>}ZJN@;wKR`|q*dDA8+x?Il}5$lCG$8t`S z#hSI+%z_F9z&MMMpw~H(QNKlqHi(M)=9rBdUM@@XF(uBJG!`aIJUSyRw7=pBcrE~) zLr$WwfRHvjU3p4lwht2Spwk>+nnY6d+L3Q8Fs|NZK2UW^!V08^~*N5d^tD=%)XO$fOv$C|&@m2>&@>fL1_jZnugJD%qxV!T_@%% zEm-sri_MnD@HlFovW4V(1--LfoVTn{|Ix^FaX5l%Y7xp$i;ye()8vFjS&K5qC8pMS zKWnfO!+F)*@(1ifdAb0sa$lD8L?_o+`Z!TK4O7`BBr)pZVzdtCF{!^3TJ7HN&e=4W zL}q!}WUBdB-Z9INO$2xB=_z@EgyRL>;>^1c3`TKFNH_=v<8zM6>9Ea|ESkhP7#C@W zFN7@lkH|Y(eXdTCPhCc5#_-&fGsZuK77=RR&HUEs4het9+zZ3E@A#{3lv`=k%>X~@ zM0+eUvR)7BkZ0%4TS4%!TX2!J=Vu zap>F*Im?&A?!Skcay{1ol^DTfHxrA73N!h})dgjzG{CP~0Cio~`=&@Q&n>hoIj2Bx zoId`P7jC}FtG{ZVmor7`CD@^b?1ef^8wZO}Jjo<+Vn+YZ6S+IV*gzm+mW`b(@}%T{ zmLsI3oN-3J#19v*g&H9V+!=&8({Uon7tT9C=p8GQzZ@addMD1TUg)B6fxAk32mxyo>Q?lb=Rso^@ zb2224?)Gg+lZc|g!+cagc@%eK?P+v{`N}Xu-KnBn^Bw-8g+7=kRi(I=!5)phK*rC= z8Gkm)bX44`aTvCNX)#h(b zH9cc&i!lTqX7b*d4!?d(Jm3!MC?87sDIjS}L{ z*&{-Rh~0v=XV`R!n+0VT1h-GB;Uk}p_>Yj7p6R2#SMI=(TXB09cpjNuN4^kh#)@Ml4=B0gBiut3o{*U% zWOxV4mRpO>VWl@qzMz{!rYwD60^mu5ULL5lQlJN%ULKgVRG9GA;B4V2)u~WW5 ze;o%G9TVfe0>ryyTdv$;8C*O6SJ--_gxqjzhfv1$1wm|q0T8MjH^p`yJ05D~Et(p| z``J!DE5W?3TH4yLri^}1PQ)X&~Ky@j=#k(*pE^c$ab8+(G6NI*#kv}bXaQi z%8pd;?X{paNy3-K3t0W1ZK9vE8?!#Zk2^uK?7&a7}^lGVa)S`o^)v|^Q*YA=E#b<72Zd`A@z>fYryfd7TF`o1b z^3SII$o%wW=<8OE^cK8V?ml6Q&FaeR%h%o(zE46=ZDj-oHtopJrF0uxV#H_aSa{?b zKJby^-LU(=;PidS5KM9NjQde1XZL=>>31I)F_?X>@a%w3wtzg~5rk`u$>G8uXV(4` zua;M@WwQtf-csOYVI*~cTo-^S7gOxg@%>qfXzp-VW)kIJ5c3TFo!kin4VpT=Q;g)z zZumjR1t(iZ-uX!f_1ZB8+SMZ(U8Q1wK56z{gSj#sEkj}fiBb;uy8tXzzO@shF z=`d}h+HCMLXPhr4J+f8P5WU@%9T(6|QdIi$_?F(ul5Rt?H#sylIU}a?5<^2;aeZ-e{4;BS9KT|?iKOO&OT9PfM z=bZfZJR5=csEPm(3tXKC;&f4J&16gZ&@m~gq?u4jnL6UkZmbDoV*_=(*X$?<@UX{i zh{WGd;zzK7GIf-9dCTj|BiLBZK5U_06u9fh;X5l3GngNi1%5{Pd-1y@rN5biTjM~n z(9u!vY|d@WOwX)KY=2(jHF6NNRWmx0r!$RH{>ezTv&_#+IB(lS6Mqjh^=$xT_gNq-R8bO_Sl%4g{XZPo2fP$rJ# z0uhnMyV(15?yLe{TA7@}J8QnbGfs14clf73 z@8RPS+V4-zL(duSHv;uH;<0_O7zIYGf^AL}lY7R!J?XntQmj=nK~_d5{@4n5@`Q~g zVoN1YOl4oE2Hf6+3ZGtK=zX*$=8fWjM+@|=0Bb_7JlLleYlNP1;hPO>3cvh8vLZ^7 zn2d6WCBrnnvPp%wN|_<6UUC^Yt4wyO>2w7t|gab--mc(8jNiYJmksCxC zW2YugxMPlpAC9k%@9-E7jGd3sk1D^hVrL0i@xsrXc)(uYfvfd=m7RFj6L+bck&ScPW6Rz^%n82G`C%8|-FOH|b(OWhu)@0O@I!eXy98C}#)LiCH zTBzxOxUPI|uALGOTnc!Cn3Oq>D$-dbrwTkQ;c;C_X-7Uwmp+qPo$+&zTW21!?ltq( zeHBWP+gLE5zF0Pgc}}m+yhC|BMsK!c>*qr<<4~E7&dXSyx)5bCHwMYFFDu5k@vVVPQ(_Y11V-k=~U5TDM1c z9_lXjc)x^X?)!4qk(u*-pT9N|iseFJ;^ilOe09m7L=ym?nPuD}?|J5W-3BHA?|$;4 z@FE|N*y45OEqXl4z<-w%QegLSu|U|G^#{Hi)^sRR8uaV0goEx~@v|X+izo)_lCZ`7 zrZ~8rBgr;S@(S!A%CETrk2cg4mr96bHAw=4&omIYAObMh`hxs!iXX02rBc08u3($f zpb|wprB}vl6t)Q+ycG7#pCX@`N1iAK)9z~!Ao{~>pyVWAz~ik%Ix`R+Q66_P;JK*` z=7or5mUpS#>5m`E_ImVUaq=m%N~<_uLn;*LWj-=$q0{(~nY7m}#sncv_=)TAMA|MS zLb4PRcP~;~8EL`rUZ`TJ$+z65B2t*W*+>85)tlc6a}t+`3L)aWbDE!t6G(ETgD6|F ziE^7aIt}e^-_-&d*Wj&`q4iOA!6T~!0;L;ye;>)Br~|>Drn4 z7|J!HFti@q=1jlKBZg+hpCa&f`(kK?|5_|EMnhfkf=DYc9-n>T6=%xQdT(24Wq-1z zyAl`w0%!-9+s1Q&6WwmP!0z*`I^NP~Np)?FtLC7O^EyLjB)FCu z)L*q-|I=`)$}!6vZ%w<*+MnCRZSe7EbMH>O|0$z zlY1#vu~9-%!{lWTw@#n~MnWtnw(R{qTh#Q_ov>yDX3jpl zIVGUbLo%CfF0|=cP5&;Fo!Npz{0$)BN^f(!ahiE>oPM}GuIcgffFp!sjv(8dXDBnE zhydb?B>uZcLEH-1lLgJjoV)cvEo`kckRE7le{P8nXtEHCq3~ zc6cr-u|QKA!A;Bi(7EF@Xlmr0)oI%g!X0sSo;;AkOTA6jq=Ru@T+n2d8~Na%pY=wy zGqs2ws4@^3SyAV4bzulGJ7*CaA>l!vt$^GA+c_jS!v3ndyU&e1%-D2VbHL5BJQrPU z31)GW@Jv1HAahovQspwS-RP_>&yZ{M9%uA^>eKPXPoC4JYCUp-Mmk`jL6=#{(@1tc z?WWZwk*P-dJs}pPq}iCWegVrVe{sQXWPevg=`lZ8Ze)|QdZ|#bZ7$Zi{}ttSj@stl zPyVJy!1ct%mt;Fs=eU8BP`Er+L;VUC^G{8#q}~L6$+er^ZY4{^=fKgXyEnE=*P1KY z^=E*Y4;1laeHW`^c0lFj*XfYTHPY|6$Lt}n64?1?p>qUt{{4OYemnaZE2>xMcpqWE z5wDJPJW#h=abv{~^Qi1&nFYQK3!BVmnmQ7x+8em{k7ox{1b|-w|K1RuHe%@KD{|MZ26%B2!3Ql%I&ywyl?bm*sL>=jD3|88bUv*ZUL8 zP|iEtJzi&uUo&sOuI|9DxDj%_@KNROdFr&{4;>iZ!?Q%_NrY3s$tdNdnpSn~9@{-C zp<__yqy|+Ck$-0w`1_11#DOqL{|p6!a#vnL`?h0BXJ_V-z$C=Rz_rTPfO5%4P9lv< z(uc$pGzXm%yH9|XHr>x;7qqmwP?SQea8=XlXq5*vgH3@BRk-8>0Ly^u#->c0E6W#= z3%~2kbm@ff+*elb&5!H0lkXRrAKsVgftno`1pl@Qo?y01=)Hqh;=d}b^SvrWueDO( zxpBvd^WKsfayYNjkVJOZ4d8qj{RXX?;49)zHbA)udoZojy%->`ijWI;M~K~l7e^PN zK(F) zF$DV5e`Ooa*23OEJKlWFZ_*BM!+B5i^8VVy=?`z6>1`Qm{t!xwg&6FE2y%ynD0+*5 z?ZMe!c`**s`Nf0V|8fTs;3xb@0Jj^)4K#z} z-q#xm4o`(TZlpG3As+7N;5=D8cRJzuWsKnjC-gTB>!Eed-29p&z@VUq?v*NDz%|w~X zck+ZY+uE$^S&10F#0O*MOme>Zg`h)pc{Wnzt_L1BuEdi~HX>m!_ESFRzNj;ZM^(v% z<~@PT+bn2d#bWE_>-rZ0IQg{MFgpb$*+KNw>7&ruQ^czOtg;0haP8Z%E%V!O%#-?h zxkJ^_Dt0TgN)EPtPIxn7$xgzd=AD(18e6X|Cilvf3C*cX+%pF>u{pD;yP)2_b#Pko z9DsLlF*zPS9dW#vWjcIdxZxm7gLM(NSd1wW5|SKt9OC+C`9eoB0e_s*4kNg&;eglU z8PmZl(>MTB+IAX=VWwkP*{&ugz5XG6uD;#Es|C=qmqnjZ+mcwwsiA0?<+2r7*Icwx z2YzV-WoG3wO@74KJj*gQp-%mKHamhc=?H5rW7e8E!PSj;d%$MNaoynQktMN`GK_5| z+xUhjF2=V4hH4cM7*ppddFqa}SV z0r-(y_{IBrmT+KSu03XHDt2~Vc>Jt6v(RzTRL0Zt7&<3hhGU~QR^}6wpS2F$j6#}T zK0>1J;AEGgFDnav@Z}AsWyC*;|;}uPp?au0xjGMqg(INeZRu}2*#$D2q1Phqd zWdFrIB%mVtl*W9FKv+=~=j<>1DiXIT9N86q{Eq_RcQ8NmG?L?dZzb7xU=P(|^jlpm-w@GZyoJbLIm4Fl zJ~hezMceSH7*h4HghHoLl?h4*6;*9WG8Kkq7*Z+WnO2mava6II4$f>LYmt;t3GrVD z)_Pb-SuHrC5DdYiVC)l{(zZ@YGU^~v<6BtT>22BWdt0+FvM7bz)#sOFT83tn1BD#_ z%tR0Hiuvetc|>kaNj5*uO1*-v-uKUd-M7!UYVB9`I&kibsjA9+*QW7#{+QT$mLq$B zd#z-IwGB(a*6YL7rJ%J#!tjC~_jFZ8v>o``R9VpACWFO)E$5`7pK&?6E)q||B=0r%L#l0wyy)#p%Vz9JYcSczmx^~W7 zt)w*0varWzLm{?1{B6OPk}z2c9qxQj|B>A*{F6)joQ#A0M3T>)B0k>Ao+9}y=RSR; z8?*#=lOSOmZLvi;Qg=}8-cE%bDbl1tZBn7mA0;~`_Q26?Ur=OO@OQPaUKDw-S)EHV zBel8OhL~H6TzcHAu+RsOJQAzGLE5{)=kvLZk~#(VgzdSPowZq#_dq*8T?NaNw%Nkm9}ILcKbVR>TO|NZ~FOcY5PH2glPD z9-E^24+8}WIsq^Zukrzc3|Cq7iT!d6dyZygc}tWdwlg)-Fv zNO6=R2I0LVgS1bcs>*lxG?Fx~sCiybg2*de&^0#XE@&nBFvl!WdUU03P*(L}0;h?& zLBC99^f_SXLI_9p)zc~UmcQmAmtRY)0~9zS2o`71NqHh9NnV;*pl=Cjw__1}j~M;X zQ6rY5%M}uJY?f8#235Q6Rjh+tM#xpPSXF?(CbhE5m1i#$QF;)@KKQ}o0u-=>)kMg_ z6v%%Ih^iSlmN0Uf5%yF*7`v!>j6j(;&MoIDbS!nF`bOTBlJ)+qi^Mv z;!K{a#+-wXoF30k!0VSfyI3d}D`bnpi4|KcM##UWit5PfrVMMJJr{h7Ry}kdZ~a~9 zDtEgP&FgEy8S1F}w-AuKhR9XiM(-Ya;Yd1G#!LgCPXPB$Dk5WDUh)N|73FIyh_};V>;5??1^uc zV{5WZHq>v&ar7JMx3P>z?1Ui(Sz#mgzjB7d?BndJ)$EaUhlVOJQ_B!t%QRZ0r-qLz zush6`iW~LA&hxB6OitvNBP&_TRo$J(5+d~Q%Rd*fe+xy*mvA}Iz0i}XGA7vXDUt8~ zUMJK$F*f#H2hkCbJ^Zn0Tsn9Zorbg_fz9bL;ew8?D#O?fiqb;CZrvZ?LhueVbF}9gL0-^zX)P~t z1)VyWSoGB;bNd(EkYi{Ysc#DNhTT83sJf1a&>FH{V5hut>)!3ga~U-GCFD^n3cozs zhaLR&H?*rUu8SIa{R8sK=aF_@>vxYNQ!l-O7Dc@-N?XeqU!dR0=?niz`!c}Kg|0-#k>FE^#6ZCyjo7UVrbu*npaiJC|Yak z#P_7uhK8!tV=!%)VzS=xMnj6I6V1ll%>l-Z8`RNV+zsiGr1ADpEuco1pyH!oz`vr} zx`O*JP|JzsZvWhoxEDr@Cq|k@)Od+jMmI)gqgJf*EtJl@O`k33cVGx}?=qAtlR21z?nRF<}(9xv27EcdpdQdv|9vBE)AdsY(n<=@|h0s&i)ReucExcmqs12-iU>)OFzLsS8PV~0G zb;k8aT3C;`!D=(y>VRN?ab?x_W+$2f9#o0qA_eyB)w7eg(=Jp1`YnG-alnCn;sdVG zOZxNB!50F^0aU4WTD3tQ=g-{5K{@1vvM_1i2?V2-#*}g4-qb0~YI(U=lXG@D#zF+C zx?^EBBk<1*nzp;afA;;g5`c03!6(tPN%aP_^1RIg6;1<>=8TbXVFtSoV3fpacC}hd zRR`UFR|4<~HUR}4aFk0uR!C+T5Qi|T-EQa4$$15A9Rq7k>IZaol5~ZW9)kJ z)%WO&dJH<7g~v2@yDsdr(mv|ZvMHO0m3Q^gMhv(X6$Sok8yn5L)KF>L^*n)&mM7){ zs7?TfI!hu66VDRcBug5l=s@wBwiLoyFT71ndR+%nb;K-fIEv`oY2~S`e|6LIHkl*` z(O9sVA6~VXQpN3q8zQ@WFsUDBRmfBKQ(eL}W_}|Ic{y28R?w`l(;OgXD>`(BohK5M z_z=5k=012-BG)IFYM-R>gpy#Orh06At_|B*MX+I~Ok}tTvQ>;Pj+DaFp%)*6t{^v4 zV|WoZW!F_QQB$i;$C9>A~0J!<( zoMgcd;5%ZJez&k4fv@+FWGF^fOC9y=hV?pdJ4sp@hQZda~?V=}7W)hP@?& zBv{*{(hZHeTJFO;^1RUlXV=zu=a7iuFP(GQcE4RR{E}p&apqh?w&(;zBa6jM%HW+- zR(64|yzR7J*l15=jMeF+o30QseRaMR+?ZSA16@pJ+@U)Ga%-v{f6%GHs4n=H@NSr) zxu5}P2PGK(Fo{DN1S_};wZ4Q+rxf?INMv21=Xy{VF4(id&lDlP1qfpV2=@M5rchLK z00*W}t(R~Q$72AkdO-|b(}@^n1P@iYace8 zdf_iCL|4H9KHmpiGh5CP2_B@Nt37Sf#7P8QAxoDCa*0mz%!pL$JTg`|l{$HwIhfQ66|Lc=-5LMm~5rvhZe}=dE8w8D<4xWAcn!xj>x&4D z`Y{?-?GYUp@A{akj3tK_WWQcsHG3YaZA4EZ~*bd8{Ay}@m-z!YX6); zzD{!<_WK>I#8n-}`=!UPSSsTkju{~h!hCebiJy6Eo{2lo&OyJ)?cs;0Tj1|N46GaC zLOsLJiC6y}O?LZ$c)AEaZDcJ6jm@A`k(eE&^H&5Bhz{>h?}&Eg1XXhJ3i!vr+#aMk zhhQK6JxUx?s&97BTg>O-s_}GVRlR84g>N5$+bbA9|7|p2S(<$W{$C`{>c2>w|8erW zx{UO{@GU2216$|+NPd@@UvpewKn33|oFBAopA7+An(SaV2vKH^{j*Pm8e5eO({>TI z4^kSLR(CYJx75A`;z1ptXOFa{@ky8_-thbR`W6y4c{iME7BLYe?Kywb?FbE+^X#IR z4aN&^HS?l^JJ_ZxJd#9~A~kd&ETGvnX4XstckmqlYo&^d;5l3-@3K`gamGnvHB-K{ zLAR`zm#}j8X?cLSk)=DmY5kF<%c$w-y~AtGnOrl?N32^Y-F-i0;crLwXq91yMSDCM z>5=6+Yu?R37hddE=73$$an#5yGiO0G^dT`Oy7X|LK!7;wmc|X(H7;FSZ^4TclHBomP`;| zUu{f|8{rQku^<;hBdhy+>5CpV&W6IEneCH%9P2x)QdSCFZj5f&`&IJi!gCu9c|kC) zL?YtG;deiURGnf1NqJx&8=I*((_zExTHWd1q&E$?r+hwsga`cM?!oUg^n1tmQS-kf z%Y<=E2()ku#+XG^i>0raB%oQRevm${Bt*s2dd7q1@IQy(HuG2+VbHUmfp$3E zAUmwy2;Fx7Jd0*;NqDe$r%&X*LH;WlLV0BE2n`1W6om@}B>6u@V*ifX{{e-m|L?w| z98)5DIuDdI^6%Y)6jMzqaG&$>zhc)lb)nFVMpf z{6WKOmgO~@eeWN(C?L^(%s~N=LIX?=_3&Stg&B-Xo0SYvjQ)$W?8tcO>GUPI4&%2m73hFk8ksk||Em~X!jeG&T+mgZww zLNxs-f(dZkIilJ)F#Aa={FEKOg`@G6rsRa&wE>?r!MT;+;fOiPU-VQddM&u;xdrdV z0eV=kE|5J?MnpN#2Q;5-!8;*$UY~uv1Ow^?hd&ZeeyWjv<%4>6>`R|IGP!KG2p}`T zw=)c?2O1zVA#G1J49mMa<6J)qQ+~;CIS5ew#ER$%j_Y#322k(pC(&@_41 zaIG=gluY@DO~bY>a@|(Jc}ciI)tm5*0o{HH1=XPhVX8e^QjJCj7!j`^D9fGvD?>P~ zI|1%vPFW_r21VV;hWXUzwXd_Z!Zm=gwOQz99ZdUj&DLa}D0jAmCteJ!cqA}0SXJ52{CIPC5advObObmT1WLk1=tb9QJPG8uoyK> z4E|Q~qYr8iA4}SEF^y-NAY{403YIKJ9LC}Tupmq0^g+UvClt4g=bpoe?5cJ)F|;=I zN%Nm^Y+`}r1jRUu_3~~gHM*TEGSCGW(VcTL@6tuI6fSn@LBUoA3F?_6+EXuCy|SI7 zx(>XTdG$V){ejNK=H5|@BLCu!3in}`@~R$+u|VJT+zY&`soJHLmA=vO*3O|%%ITcm zW#&_^4i|B%kaNjv$P^jMGIJLZEMTvVR+c3^E$S?l*LTbJ}#(}kFlcbMcs=z?mP6+z-40sb~1D)H2Dbf z_M!1+>sGw{+EFm2ph0D@9}Q4p`2yq{QOB!D2#eYBXt= zS{$a0Bu>YOaH1ku&ZVR_rkSLL#<)Gfq739@QKgKcwK#MoO_OdSMkU!)X2>f;Ze%RZ z>8{6lI_mT~8BQf#gK=O^skbRVaZ~gMz~tjgB?NE@O_Ewhz4)|hA)6BV1P}DpOHjx- zO?<-{rItoigVQ3-E@`Oyq++g_hAvOx4u;jsTeyI|cKKu04y^U{nR-!Ytu`w)=p5<9 zt2FE7K8{FiHuFi;Tj`8Nt&&4&EOst)*dZYDn1x0Qo6WeG@~TyFR+-7mQmlG?HhIG6 z4P*ivdz7qFS|fS|b6y~Iyse~4LFR-5mduQ?kCJp|HueOxLL*ZNniVc*p;jw>8I6oem?j9TAi1Bp@KfwxD7tAi_v@ ztkX7(Amx@0hgs;Y_!$Y}g{sGKy=**)%10CXIm9D+zARj-&bEs)JKLvzFCbM2LwmtZ zB~nSQcXP88P5#!@mE=r5P$9)ikEIwh6)BY-Y|v9~u95dufU?S}paIY}(Q%MXBR*dC z!|bS6P-GN@>b%}dq6x+~S+vm6TRNfBR5VMgYEkn{yBaHJE119`JY?Gu92UQci;|x$ zOer>ri*yZk+@;+`jI>OnHp$zRyGV|bD;57Ei7BI%(4}2S*&D;2qx=x0yK4!4RZJ78 zxzuzUK#?caDm~>TUps1heF_DNJhL5}?dU`2(~BhJmZ)g#nJQk%ic(4nOe&6ut#l){ zogC)kF{kP{ZW?5(-=pZ-8j&p}%H#9%wV#9iW|LFsOQplKEEp;-)y!t|h}MuL-xUne zg*`OH$}UELc_wE*>l?GH_B|s{={Sk^{=})uQYAFvIVQn?T#v*Yeya{ zdN+lh#oDA=VVy5HjpyKUEM{5VmmP0FE`Q|mvYRuL&xyv=bbXxb8uBY&SsgPld9i%g z0rTeGq2u4oETMXk3g8xgc72+r6q75OjfDOZkz#?qnLZ@_gK8}cspM}L0XzY1b@SWdHoDEZM2PO~{`R=Q-y0v_((`U0t zE}kIeHux+>ly8Fe@y1$)1vO=08xB63Ujb=9|ZAvyolpKRFj1<4U+m=kyYW7R#QjrTpCkeb}N3idYXH^}& zH~%T4bd-L8EJ2gHIJ#<)i9@Fnhf!GPqrH+TE>cNNXwIIe^F*?+8`ko+m>2E9-0WyO zBP=mvJOCn=k#QqIF2@qF!Gh0=X=opvJf?}k8>(_Vo$~BjD{j^lb?DLA) zPdvOt@7R)-G+Z6f+AJ0lCT8dZ*Ac0$CQ|NzT7H09x&l3s6=W4kyFLKa9KFi~ zm)4JC|8#>@Zbr52Q)wFg+HcKpHc4uRTG_Q}bYkZk`*2-1=awCDNkS{yRI=wiqZ)mH zU$2wixWkeJ==;^Pt&|(3NfAy*W~GQEl~_y`P(~hi{<oy^J96_Q-?_O4?h-;xoj?@M-P0#t##L`R|YDl3^ zpzWE}?Ylm{7AChC*-RKX+t>K;M_qqW?8J&}8L4mKoSEbGwS}z%gXN&W@UR}1KYIw; z2rw-{z;B6w@I{Q=fku0S;14RbeOqKyYg!tUoyhHBvCg#l;26M`1guGeQlB+)Y`LO= zJb8wm!@)*;IgjJP#tMNx1v&2uId2s@uOB#XBo=u_T>D_FNugE8TWV9Yx_3Q^bHflR)byrONkVi2qcW4+m0kby~(-Bvdt%c(2xlmKC{?r2~ zv%~SkzO$smgz3_q9M~;V2e#`Dhi;J3nm>lhJ8;hng7}q1cF=70FSi5wbxBLZsy~wU zUxjYI7bchOu$TGNacr4yUYO<9WbScnr1uk5yfS>*!YA7W1Q32dr)E8|ZpY_jnRvhy zElF$M>aLzC*=Gb_K_58{u0lGuV6^QpgaiQ8kAl24aWP`sTru>V7X1V7{j&pQ5F4yc zRG>8K`UWHI$>`jCusAi|O_Q7Dfq-N|eXOpH&@K?Jk<;xiVul79G zFKqyXK@-+_o~IEix4U8)pF9D!NLK&w&1wLaH9;YgucQru83Rv1B9^n$Ell@h&+lO0 zXj0fN_|F`JCy4G8KjY^g=7u-Dbo6gghRh&d9IawcBI6si*} zd_GZ3F!y;AYp{@=%BI)>`uT@oO%k9%BzL z93&z}Kn)v=!PELZ8%IHpy8#8h0af>44@_F`Y(pLI678JKLHQ^kq_sXPsK>JP4z%v6 zwGv$=B76R8O+EhtI0&%iReY7Vwd`VY(QI4Q`+Xvwf+j|{xAOJ*(Dst^kbU#^)BS+w zbMaKe|0_>J_9K1>3}ohAApnMt!(A56&vMs;pT}K5<|jSl&56}}V`h)r@->p`_g(7w zRSoQCQ$P>nZHw>Z5E%WpEbosl+|JX!$kS&I!P0BD;ZqRRCx|Z9<!-x%?(R+a>xys zP&Or3E;^1a>ZjGR&3O5AY1fZej4_}QybEy$#P|k!>*ng zP|GZ<*j#OBJv%>dZ!gzrF;p(enq--eui?m;jRfqqYMUWD!CON#<7L&|Iy# z)1j11SHn$X1_1%mtN0Gcu2dPY1k;MD?tW?~w$zC-T(m(!7FG-yEjv-gfHI@2X3@(= z67w3pr{z{zrUuVaT)}1)(r={3@1EO7#;C4m{}@%7ui`z$7-xd1j?GGo11eXi3wrn* z;s>zg`4ov_iJCQ8w9B6;C-5}ID*N}mCuK4jgc<|w4J3_ z)Q>Gbs?u4#Iz2j6EG%&^-kfUySy9E<0;}32 zKBun#_RunM}VO>EBtFGkL!^`TL^W=D;he3Maa@BLXJHj>Dda0Th$_Rty zK3x>FrteXpFr{MJOVLD< z?V80nUE5I7R_jI*{u$cjjm^#3l?By4#lmD);Bg4C*(N2sicZ+Id zq+;x3I!fWq8f6|u#|`naC3j~+{R(zMJP;5aqs0rx6LAgI^f1K+_7gc9T$^~=7$d{OI(JN6gX|i zp*+IEXZ9Ydnmf|sBT_56kwUV#kE#V9P@%#GN;;Lm_H^!Tm9`7FuTx$!+;Qc~EE$c@ zY>4{C<%v-w*9Hy#p4b!PQ$@fsY6#sKCTnvjA(8ZKQ~FAkK2RUcO9$$Q6^j2qoSj3o zAi#oTpKaT=ZQHhO+qP}nHtN~7Z5uT;o9X$z>)z%z7jYso~CQmDbOwkiL{-Xnzum+(^w2fB7`eKYPXAJJ} zvS63Prl6LSk#`X>u^JVfhHf2nj|r7N4VxTsehMFR=UU?vb4}#Sza4?1!kF)*%-zBk zUl~erxone<>FP*jcYsZ~{K8`JCKg&{~iZs+&1&AyYR z&9_Hi{#H|{FDN>@1%)e$t0K=T-pti z5$ISC*+#^E4BM5ZGn6u=hv~i$W|raD3WP!1g_zPip)e?Ol|*mV=G8mop)T^x*T6SQEr|Z1Z!=^2WQ2122w*X)}x7{Dnx| z1=6(S#*$n`s}yF5hHKd`wcMPsGL-z(eiRf}Jyo=`6MIP2kImJ|r6^FllaW=oEl2B3 zIbP9k@*6?a329JQite-dRN5aIUOkDY2X|}j$@B(HXnWKRiolQEJ>#9kSTbg2l^0;< z(jYopPf73h$)D!&wy}eQiB~Q&*(Y^LMA~!|s9jy2MbFzNQdKi9oy#@!yVP`79*S;{ zNJF&I+J)Snx-Jb)6~+mZFXm7lZH2uBMYppSD&?I1TUy-8>-`jJ3t1zLAGoDje^@Pj zviEdIaAxO3;!D2|PSqrW7kjAJ8%5o*$Besq-+-u%%c;(N)K{fJ0m&hhW{U$D$GvD% zhlJ353Lb|_Yn%b{dfm^7>~z1~(z9R>@-xu8LvK)bu!q~EyJ~~STy&ARyAv67st+(4 zD~xa!nSvsFoYeS1)|X4ZV)ndaj_f}JU{RYPoEF2p-%L+i4}3lO@`KQO6vEV z_CR@jP3&CQePHg!aJ!@8<&E2*_;!Oj*Q+$>$L**ZpZjCr4}?spIYYjnr`i(56+E!9 z@q_H8Mf!8QQ0#Wp2Pc&GO7{4xy9hoYZ|O%T`LosuJz-|YuH~mM0DM~eD@yw(#kF*% zS1xXBJs6aRXVgtk2gdImW^a&TcU5y(?t7D8N6YrJIEEc z*#kPGR0tXA!#=ZXAZYib;nZ29jrWo#&p1K<{Mx1qoI2F(FtQ`4u1T|mhoL@>%Sl6s zv@~eG-_Zzj%AGhY8q<(x?;6u6!TPpKPCh|3;Q$(v9HLcctX5mH6?!d)1UK9Rw;;%N z@y?}U7W%a_ah&|2;LMMkPgGnr0ZaM;3!f~6jWF(>U#xw%LhbO)P`&lP)c5Qi)2D5J zpV$jdL%7>#ZhkJX8gFU$l|T3r%!>j=BTbkVm^1Li*GdmD?&y+ons%Pf7XYl7Et)Q0 zKAgVTO4&hASz)uZF5Gjl2;_^?y(<9|YUX)6Y9>{Cl%a?(?YQBQ=Q72)Qrs7=n&_6m zcdsC9G@{%omoY3>P(HSi?GV-r7)Eu;a+#7BRn&Q2nw6OE78cx>Q%9JYs88(WlGjoq z7V(+qVIEsPw`2_94Fazn4 z;P|GW6(i~$Yo&f%lV<@U9rA=1DK64~SOZ)Ce6{*kk2&se?23KYAHBW!$_Bn1tuw?$ zIQbhG!)22-WIApN<=C6jpH;zZCkRJBuCTGTrHS5MC3efAepS{ygH!>FT+UQ?qs^3MhD-u)vR{!uRB(vWhc<_Bs=mE7A!c+MHQ zG4Zj0u_h98RBmxm?*Al^rRlF{3V+9-lJ6=FBQ(#NvGYoS)0K?y0|kG60v`#=fPZkm z_=66)euwzIH+8wnPmxHP`X??D(0gFIeAU&HDJYt0797 zRWD6csZf}w;4+#fvxXPxk7kbXxDS&)c(x^(YFC7s(yDc+il$s0)ysCuMpS+BtndV) zOv0=Il4xc}|6FH!gBH4Wus7Zqa;Vd%@FNk5gMsS+S2!S1L1h-4aWW&o-aDBHMD%OsJ@l+p9Tt9OfktC(m7z5y3+MWJ7SO1LQt|yP9}j% z{m$Fw&aM3>JMUPS)@?6 zlw6_ys3j;L421_;FjN==&VVzN*u4)xG1SDUNlxNJP>@v)%)V%29%_6#N(DyxgA+iP zM=k^bo`8@98x><@Nf2d86+^5u({$-kOHl2&hjys8w9Qy(UQNssl-nR0O&kz9Cnhr! zokT^3tBkvV5CdE7+<8`|dD3Qrbve^SMaZQc^-+h{DDJ{c4q+jawYKB1BaQaZZH6g1 zD{u8!IgG6uc`=!YWwCJML7*tp3Ldy={iyF(4*qG{QVMtio+Uk#zu#%xZ z#9=p{E?!#qq}oYMTz1#7i?yXN1yVzCNX2${)6QNsx?~E`G8)@+@Qr($B333?O!w=K zkW<#f`Sgj?Z9;1EG1#aoms6ZIiTHA)pgqdRbWN0=MgUS%%W~(seMehi`RMb`F407qTBKcd7QlEw5)>sc(YlV zY-qgKR$!r7g-ig~w3atJu*k{9JW`*Mk`E}ix(Lcb#jnp`7)4)P_x8rmrO0fFE4#sZ za~#QNxo-xqybK6)8tPVvsjAH?$D-OK4y-Qv_Lu7*$Cx(u!Cl;~Oo6+!;~X5gz>rO5 zS#l_YHOscVv`p5sPc{w(s9LW?|YQo|JW3$tY4Y>Im zv_5{+!)73gVQT>G(f5;|V&(DYIBws026WThO?BGC&Im(G`4!QAp-*(`3aD1o#79t5 z^vP{WFBRl>nRuiwZ4*9hPW|BRwLH;JZL!%Dx6m#*$G2iZJ3U~+JJ=GA9C6A>@bd(` z6~74Ukk+d1VN*^H=7jrB2T`TIcT-Oxm7z^U4f$LMq^JlFk=##o;M+lgJyrC=kl?61 zRdlrjxY`0P8$Fjnte+~18C^YXGXB8^DIL*m*16+HwecpkjOxo#ZFjX4@JkF3oJkee z5FN3(cqs~lx`RsFd83zAP4|sMg3YEa59ijw2~_P};!Q>4dx^8a$dVz_K3K zr(@lP3fLP|MuY`*^bcCe$M@5G=;@M)=QaL$ie!-fswNdtL08FT^58 z6vi);JEqw$eG?~&^7ngy@#y22CRivgpes7@hSF*6&SV=uOJRD#Ij)K3!!o7ta>&u= zoa9I8N!4pSE<^r)@}SIp|2M+A$Oqr8|l$mR}T&DrJ-b zmV-rlqhM$Wau>+E6$D-JY~NhRYyekrGXx!T(69^7 zDbB~O{Qa26X{YK=E}W$Vhfjs~T{rz(?_2N7&6~bIFhTI&s(DA15s*9^Vhrr1V9GiA%cGUl6Zk(l%Nw5wH=753kg~bD$VgevdV@&~ zj`MD{2TG2Mk7KctV@PnGWd|}CeYE>fO`JK6z>r^Hy#8A3r!dZ=i^6lxK)G_4g@`#6 z8p?sUGofu~SaE#XMYKN|gAK1ZdF|6kxdrgJOKKh^9A_G$Q?Rgu)P~OH>cuD(;b*ec zO5)u&DcCQ(&O?vE5*FfTQkh{^Y#DKgAj4t{NN%JOFlOGk#&ks92Lb9%(5%TQDYfIa zP3@rN!Shsj?a+T_!Dk-^*h#ln8J>*wCfI2S@kT$=8*E!?k+w-jt=2qY-cHvAx0b}E z4s<9@Ske?xyw9}-Cm`$1ej+0_$&c2i^{*!bXxr?U9&^Vb3}NAm)JN@EzR~)Z9Qg4P z9=u`w2k=e5C5N%k(;Kq4awFThndwzbPCKC05ERBHiI6eV9?HVn@7qG2p)^nFrg5;b zaqw%YFe_FaPqD%%6p<@X0>a!Ak{ikkA(@9`ru9eoA-U^`S{6sUhs0)|qcRJQ>z?P` zgs03K>qpLmtyi2%(UER#JdWYgY|Jb5G?~;_e+L(rQz-gP_>btZW()LFrZgcdSK{J8exRbOHIcIRmhSoZ5+2lH z{gFf4n-x957Z~S{mJrh0!{8qf=QN04gVdMdV_{S=|Hk=4NdH~Fr}vqDIuI47R&MZx zJ#)|-CCB0u?T?vb@rm=V9|?c&fvo+za1Tm1-cfNN{Va9f9q6qj^!izv9>T4bk`Z#O zIu-9eycoA?dl=XHf(m)1d$pWcp_$oZv6wpLBa3@cMmj~D+?+PyEqfq}zk>RswTeze zV#=l$c(@~p=-5xcgq{zmm$3>>I!w5h_8Eq#eRbs(^+|zC+TgZJ1Vdk`1G{83J)=oy z|2L1-HTV7aC6ez(^=Exi!b#}ZnzRp&neWKETm(EWLwh3~*RjlbZ7mF5M*eHH1yO4% zdo~bTZKxxort!YT7?c@JU9p&FNT#)!DvgnE`@K}@BE1?dcHC@`S^97h;YYE<&#E3X z{{gCxUdox*G($dz!r4gvO1mX0mBA{6 z8R=Go6sij1J%Q0D&6;8$cWw9ADwiq9#N5~&w6@kP27Qk8$){F5c)q1G5!URFOV7X% z8=r$K-*C1A^zEQs10b?icyGvEZSdXE*cr&$%%6wUK}Kl`>7GBD()0pS{-Lgag_lMo zisFkWF*~A}bUh>-Mtau6e-g{W7v$jz&-j!;Y<)kGvL-G5{T~&Qm9-YRtW<97D>@Vy zDTIpyPpqc+ic>&7JL^WSH61rEbR|cjn-!2H-<(vScOhR@H>{0;4cV%`A7!%ZYKVyY zCPMlEwUM%+GnQuWXR^~9fTx3p)FRqw4$!7sf@?rM`c68JIi({LpYFvO!4Yr3g&OPq zChyG8=?(cB@64aLAx|Mbi!VA?YTQdb|8uF(0x6F9Uuw?l#3{+rnls+bSpz3^zPPngUyf=Lt?BirNT527LYGLyL zf-qiLHgQdf;x9d~+%01mcib4ptOm&ki5X|q0Dd6Nc0EX)K~lz!VumNqVDU0d3s0CJ zSXNmY;bB%Kqck?L1)(V6k7Jq?tDyWncC-)HU;h8JNcfcy^lSe_ZR?+?3H+}t(tm1N zt=fk>_P?h2Xd3UMNfYE&Brr-MOJ%x-)HX>9hwLRpcSoZsGPfN}3PWOENuxNk(X&Yo zfUTvlX4g`vFLeq^S18*$?+a%s|6Ba!#hV$4X4*_4jkvgd_uJ0b&fSjt-uGGm-*5B) z5IzQl26# zeR0ijl`K@?Tn(msinQVmBpDZ-*h5C(ulo)`clnCbZmvG_eK?({!>=lTCDy?&6yrK9a53QHEiqj2>Jmn;O>~~1NDj_Izpu;rf4i9Wa!nTR2Lfd{G7zT zo6~Ss8+lJVO|80|=A5XALv*Z7=CmUSePOGirzgqiZfGJ(-Z@J0%8V2>Pey8|lM?l$ zwlgg`r^3TcCeEa}FCu$M#w%?*&a)5EgC*fF%Iw7@EG_S^QwXvX)6lS7j`?0oik%< zsw!hxTgbLlZZaP2ZMMzOQzd|!Xm4A{*|Alo0f zlkJYS#JS6SQAJD}^$?g|m@swfxL8@FUKuRy2Oa+EA}eRGIpWV+pWDs; zG5}^sp)bqEWOu~zQ-JL6`;S5!BSh8V)V?aV1r_Ilf3Z7?o)7iffN<+ z7BZru)&*&pVpK?E6MKd!qxk`VgY4)r?nmb9T)1KqVG zHQ^aAN}b`J&-JS6_UnRc3tY|q>ja?Pmr_Af7&nF%kJ}m4tFrH3D7cpT{V8Ccs9<1r zAUpR54(^W)ehD(}YQ($~s(ad5vIzI2W|r2n3Rir%LmpT23f?ITdWJO5m?J+co`F>G zg9Gja4+?`59(U$0E3FoXpX}ps&FQ^=Z_7gQV;5&Q;^5WRwK7$7pS)v=SiR4DA{R8T z&SmdajGgpIit+H|h%dh^4n6T|<{e0RpRBJ@N5;UaLGY#3H3Y zAkHocV^oFL<#Ia%-s%2$PQx?AbX$B0UW#E2EqYu>)r9|o|CeYk%iJ?)O8AgM{lm1x zSpP4apog;!y_Kt-r3pv|i0>2#i~|Uy2pwljF<{PQfCtRYjOK=aH23Y~jk92))y(E}?kPI;q9|s^@@&9* z3#AvdODuD~SP=Qz9>|+Mux;uJ8n6eEas~oMYzC1S$2qb^*U$J2sn zGBU~ui@G9skw^)jvAnI*yhBI@v4#MQ?`BLK_&Pg!p2NDF$Ac^cj{ucop_Ft^X^L~A zQsQ~{h}U>@&F1%dcG3y@Fkuk(qFJ<`&b{cy9}W%{0Q`L9>rP{GrZ$o!xsa(RF+WIk z$p}#y>UpnUiJ%P9XhFD!%b9k@;CYz?RK{`0dbAHSruh5b%vgTnBpw3a|V=kgfa^|gP_cJ9B z4^ZPl{?Y%PWH~^P#l}^ZN-Gws1>ntW*#M#zLOjlpoj4!H=gyL+B=G~k{XAd3+u7BR z-=5a$=k)b-`LYxC^pd0Z^!R#vy1s8nb$*0q^?$R!e;!Yk_zVSTF~WBMo(5q6W*{gh zge2P_jag9wLXTbZ0Fh^k0Ls9$1N4}ka);bx48%x`eGpGNiZ}@{h%z{|M1&qicJt6- zSTJ&KD8;sjk)e);AyN$hf@Cr4d@5F7c@U4+*d?0TUc2mr$qU7kHx9yaVuT!ml_B9c2tY_=jLl zOe7GNa4-PCy@k>nusJg!(q=4&#^+d~0-gL5l%-A^Qpa|IZX;Y$QRxp>sRVhB z{vnETq5#s1HnL|{fYs0Z73hlKAwRhFfm{tnWdWd9_9w)52Kp!Z!y`W=V;o)+-j(F` z`}7k+=+@VlSU@R{0SS#M3B3K}-4tp;gI$4?hTDLiNAVDJj~M_UikUm39e7`y#!ti? zU5|>-ldfp9QJm~TwgM+ivApx~)r$Qw)pl5PHV_#h43L76U_;v%yeh^pR>3*9nvK*S zvhfG_)6%J#wa5QAQrO93F11Z5nzUwHCRjYV>{7WQaxZ|!SgHPNiG$v>PBsW zQ4%pI1{eVVTYMp818aKs0^i91|ErGz2=!;w2z+5MD#v~iw0!jvw&3SgR*EpML7=+a zP1m!lse`Vj`uLZ=i&pvep1ZZ=Ss)c$7~2~%@V8NC&aUgXDD($oTobhR0^r%z8@Y_E zQ|jNftnu-)sO?WF=(}8VV+W&k<2iPNrt`66ngB=JrHHf;NXSf3!U-|iC zjm(#%0?F3t?=cXN&auIuT|by~^@wpfJ+lfZ$dUGXLU9`x(kxR*4kRqW2%bJ8+aXw* z?!zU2C5aSW$5KH*0QoxvH`JQg+C}IJ?@MJZA79*3e`?BoOFNUct8+OW`i&2)L_K{1 zv91l$MW$HuMrbcU2?lFeU@`Bna29XO2%8Y zT}F--T)9%2ba8{ z{T{+ztb!c1yU&~)fjV{3AlS|k2JX%ZU>j@`B&!VC5ODMJA=^rN%5VfU;k9EK-^_6h z9mKkCPscb&B7{j3UyFgDviV-#Tba5famv%Zk$UXYl%nG+|F-) zM@Ci@FztcS|E`^2{iX_$fw1yQ$+Eu#)|96-!0 zbF2_UxfX-5fPvHwQ#+~dQ$+e^s=?W+dUw@w3{gwb$niD@}=uZ5LZ_Z90)pvXzJ|?$F z6mf(F!AZes6)(v`21TJ1iG%Ad{96at2|TaJUU1hA=HjsqdH&!F_<4{A@G-{`{6rwwO~dFyK2t9(zQ2^6_3VH^}w{?CIpQ%sgJaZ?q^f^aAZHCs@xK zBHrf${>nSD5S7UKhBXdc?RET@WNaW^ouT3^gsf9h@hO*x97FPs#~t33*VdYYHHPeQ z1ai$*h84C_R^WSDfvW)6bNn6PKEg7sS@B^?@&SalS}|`Fu|n#RAR+&eaFeLk921uD zohylK7H)ieg2lGWh@=ue*Tdpv*H1^w9az@V@~Cm=9*Q;bB`VLymBjpVDU@{6&b@hy zDT4}6LVfKd7$y>bo!#y_}96Sxsz zhVFiCi4YVNM1gBm;Y;GO#<5=OK~EhW&dAj76^RUR(U^|@H_}Q$7xuujml;dx3j+J7 zpj6I-n%K;h(FzxWlFXahF%&rL(F}N5+vZuX9m+Ps$C0+QL}*QGN_ADwvRhNo4@V^d>7aqn95W1&yHE7n|%?e>g&LOH< z(eAqO-8?a1v@z}b=&rGAZtw$PeLOFLB*nn}_k|;K*%D{@qTI^^yT4to9;Bghgi6*m zlFAl}lFod_>-Rg%2Ti+(ZXcW|7iD0a5IbR16X8+tjcFsO2Xkc2X{OPBh|{xEMS|qm zPo~?ph}2<9*kXL5GPi}ml=6`34>+6QBD>0i1kHYhZ&Zetb*9wt9=;R+T9^XLDX3?@ zD~qzMFsA0T1=DNaT3m24_H)G|A3Uyc@wR+kmc4BZQ; zojy3-R#n9kscXPHse-?B&2nLia6lxaDJpg}kd*}l>mN)Bgg)1MIXU(k7cwwxuxLN z#-7TkX)v^GUR@4Gkl95o#|+DS=$?uK!S1g)Y(-l~V92h|tT1)hxtIFnM7MQTx6WKI z*2p2T9KzF$MsAnY8cGZdDEq6#+qyAe`?YpMUT z88jwv90`!XMzJ0nwYDjjtT3ooDfQ>OcV?nyTg|__c%K(MMr-J84!Q1)R`$-kzl&!_ zO{=jNLCs_9M#Z*!ZLAMoY?n^d%CKsSTw(^dOK~7TU_kWW%j;2PrBAPgjARD`1D1wIenwM{V4g)W01$y&XOA(?vB) zB0)(3Z8C8ufHR6!{`?_zNHKd;*R;i>Tb@obgN#>@4~RL571;!CFJK~vjF6y9CIQWm zbJN0KeL)BBu_M{Wue9*HG{o7Gn*$2M)@k3f%fO8oo>0x?GwSj8)m&lQ#&D#hj*>=P z<}&)BoGO|u`;O`fmH2&lE>(usOeactOfmrXSybI+ZMS$CW7Nt1EbW?#p&gm>M%kg= zt!?TtFS6)VU#LxECWvKFB;LJDO0`CHe!%br=zKR&+50vlRb)^lX+1@nEg4Gvn@E?e zsHr?);|4YGmI;WvH7FbO{KxsLh|HGrzM$)!} zs2qg?rI1~z4Jfe?t0NlxLXnkssl4G}ZLqD$W#e4&;wZ8tYi=DR#KpD#bQ|jnM|F5{ zscjJ9x=y+#Fyb}*aTBZ1>MH9}=nRHpbpFc?OB4>K2zzTzM^SUjk|>3@>xWgByT$a8 zV!DQXgSf(|ZhxmSvmh+OAp_k8G|9xc|9;9NT>fk&>a=4wq+avYsXY_VYvWUI zerPSc@dHh2;3$Z=fn4#NcR%Jv67@b-X?6A0$9$qm}TU(=r3X!oSU&GaHRaRJY z&MFf~F=$7c#x1fEOnOET@d`hgeOK#zxg5}%Y27G5K^YZOlnEywf&rw7{-&xa_tes2 zJ9*O5zS88HcQxPE8Wz?h;(cuxTUA=yk&U)%8n76!t;)RywxKAU?wh;WwQD3y8LCp^ z?quo?E8x~y-m|=xk$oLmb&Yg468Iwu=T6J_4!sO*1LxMF&(b7aQk*Qe!@6G2 zrN64A>NNg&rDd*ALM!}orJ_@9auqb#6a1YARmaLAUR&)0s|)?ytI5(OH(bwjrR%cqgPmV^c0}a%8W8Y4W236 zWTO+TS!yftkhDT%hk{^M8SCpp$t68qiM*>>)bz7kMG-65>T0WXFf z*w9*9trmgF=r-x?G1C)jZQn6f>rYQjM)8U%nR_fumHo`5TSO01ww87@(m)uUvvJi_ z)P)R#-Ju4GxZ3?Rs0&5(=#+w%ryVpSTnTzz@_vKbC(NT8O4X<{iaFL@6*W?KEV{R_s}gE^5yg;@~#6V%s-;L3dBdy0tyeaLzkT&=O8cETXzOJsqO zWoD#g3v~kA8@sym%#6B;&ELzYw1)-82ist=+`uBUYq9Q4dtXzAzC9w8Wgx}(Rj>rw zAl_~;k843(ccnF$-Q_*`_D+XZ(%dfjlS%*y>ZXRye4<}kE;JH%_g>KkqiTZC7>Voi zce{#I2RqcU#$kT*^7ErSZhQD%mG%u}^$K6T@@ibEDxll7GU+ z?c4X_MpEKC zfUyVN>}vH%d7fh?PTlO<=o}R3OGWzIi$F9iKXlM0_sc%mkB#^5Fqw)*vSPFcdI_3l z!NkQYFb8*og2mi@wZ7q+=Ws4Z)0>j;q}Mdfc=buu^d0tNM^LmRgv-B&XyA;-p3Uv_J z@?!<^0o^cx(n}iyw|tCr45Sw<&k;ZWb|y>Xp&W8oUO#x=g!v#8zL@bP9*-%9uGxby zd9DX=f558u^P~OhYV(Os)D}tUxhlFx`IEURH2kOt9_poQ9RQ5`+$#=mH!I)sJ50%c zZktvkSGp$D$^o|1=r_rXLozjjauodN+3$XikB3J^w*{H$)w}X@_*9FF@2WeJ2Qd8i zzXi?tMKuR#2mk;G|27JQ|EI6B{}nXb+5dl0v(EpGnvs5eeo;BdVvjkaleWv&Cez63 zj^wtdI&r5ucV&~{5g;{fD3ZVh(pJ*{`gH@m!zm>h?@i~HwTb{~(4c)iUL#Fk^g@UW z*$I)M#Yj5!!w@t6i<->|O_?s=)~;H+e-~pvZ2jMF+V@`na{6xdAFv=jWzgd~jdegA zT3o~I1Ulc7^YVcJF%<*6>0~L`52B#jOnE^~1fRQ+1}ntmdSfj@fC<#Q1jHOEbg(4R zy*idxeQ{sk%D~Abet3{3r;m{?Z`}<4xIe`losbNWI5W;@_L{o=9&-Cy; z1(CvfQ-D!PdQoZ!ai%ijbJq#mdG<&dTpr#K%O1`3;yDP;9+?aWZ-tVK1rIiW`}YyC zLyOHWe@?LEO|hQD_~6$Q4+e-4jPpQX8ouF4lRzYTJTO55V|m8Z0Cy@pVNlU6zNZ%=&XI)P zqJWV&u+qDcs8FRnD9=|0iG_3(pZE9j^mk$uoo0z7{9Vz&9y7^l(uJ~< z!+mK*HAD_Tp0B8)$i+7was z=TJ0h$(1G(L1HmJ;JgAt{YlDFXgM=uaB+zb64U=CpmfY}7z$(lfWq@7va5JeJYHI~ z&BLw?f>Yp{P9y~y7+4le%sXEX5S40x-h=XiwZ5X{PLiw`c9<;B(XY^Ajwi?}xE+Iq zC0moJ6{3{;?i5T=EFeE~aZL1HdlTgbC1_sTkK1Fec;ZYbhV+q===(o`ero26Jx4qS zgo#6=?J`2TIV8c}A2OU4n*+Z{+W$4|D`mofggV4Wr9%sad`aO&{GJr!C{7KzVrF<& zIA1We^R^E2vjL%o{K=u$v4{^Fv}J+X&^d)=zVsFPi}6ux{%jpTd!v(H_UzvbXZ~IZ z%dRhJm}rR5xGVI;>7w6cIy;;6xJ7U|!GQ^@BJE|4CXGp7_(gD+C)bF97IF1U%p`HU z@|QmO3%NJm_wTkhtlP7t%sj*rzu1fFBl#6ki<9-fU_O{)AX!}I}NuXPUySAlC*BuI2d^*Mar9e z_;WO~EK?2;lLGaG7oP-Fxxb(P@8|XDwQrw)_4u$yYy>dIHVRt>wx9qn4W~)U6qdjY z#^29}&CprJ_9f2C3JTsG2n};Npj%*mM~qnt^rHhrg7|%Pm%<~%aspdf^!@s>tD*W8 zr1_>Yy-NsLIwGo7R~MM&!a0#{pr?R$oJaH^=>U3iSZ_IE)>@<4!d}g>Azfhu(&t2e zta4kp;FbOM*obTt8R#A$@aGj^KA|iKHYxv{5?YK8F(No%2fX9Vaz0IBuQx4iA>V0D zF{+5`!5A$W*3&X(N^kq)VU8XzXEaN1u|=xgrl0r6*o2w5JRZ(u=O4=>B;x%u(LS`p zN_^Xkf?CMd-qN+hDK+Wf)6+&j2l14MF?<}-HTeBh7=hpYV>}xZoEY@cpg{NlyR-MF z7J2e=--1P^@HS%l5}_FGk2v?uFo%1>=m}IBAe|8*-S6NqYUh>k*GB`Hgnwq-xrZjN zN1W1!=1b;Ego2S(>x(RBUY(t~WY@SnzAW9|_&C0-Rz=BT%er-{LHAtjYDZ}h-LBX^ zFW4S!Wb5J^pI@%&Tpe2NkA<3FEg3zybd?K)k!DVS+yLL2ai#b$19WMbH<02jEP^@C zp#>>GI;Fs-WLY(7#u``;CP^d}?v5#3p*SjV>t%nyGa}FPIwltZuD(#+>&+BBPVoVp zSK?&`mo$H1@xb&a?eVwwW9oS!VT=#fZXY*=`4TV!(=cpSTisQJ-@2QuxX=2x-yp(qfM;=BoQiJ%|hnn69 z(!NTUKwv2qprA4WjfK$$;#73i`6%YTKjLowgKJ>o4E`BN8w*;^8j#+r#4YTP|{mL6r7}lTSK>}BfjK(;K$^TkOGdKGqtkM`sJHp z-ALx?y|;q8&pSE4I^}O(G6rI|d?BzY-*aPk>YGoKidE|)RN3iSsf~+SHB@cbkdmue z5FAi`D_*9@AW0eyaJ(f=ya!B^%8C;bh2P|AAU+R0()Yf^IM+=X0hKH(e?}-)heTK) zb~uFEPUTg{UW3F(W#cnXNAHPfZ3!o^**__+E;z%x-bgd5OvIH{GTjKvzMHE>-X=s= z=OO1Dv@QH!w5%Ka0FqX)AT)cx>9!B#T%`$q(1z5JXPudE_+kYHlkg=9O{=ynSub;F z5;B4n;iv7gsE9Vt_nwD~Flsqmpo*qs_Kn7(W%@_OmBqHCRE$(()l!7D^U9=R7cYXl zosfgPlpfMMO5+6AW%BiI|E@nZFWhpwkf2}_Qt*^VkBU75ZB0!3+>lDfPyM4Jz}|H3 zefS;f+Y>mui`oA#E`x?kmX%gA;|06b-+O)!CamLxonEGUR@S_ zb)H5gW6#Y#Sm7HS3tt1ZoXxmJoHm|Izm;%5J)dl6buy>AK#R)%xT$1T^@$Dl) zl9lA@4IA84893QC<@h76g6bwNxtpnk&7b5nbNCP5X!90K!z>WLvj@klGFD zV#6yafti}vKT1=B_SqW+6D6!2WZ8^7E3joU7nHE2Dm*0_yPjNQtm=$%Bm@kov+*L+@+muFpzm^bmdYP|S zO$l=Lt{%OAZL3T}J|Lj*h8OudNo#uB8hYn5jjKJ06{of4k>V`wj9Iu`$J5b$&&e7X zrbb$&8d`+{>ac+?u*crq(-NTAY(yoor^M%3)zYdWj8}l%aKw~F(*Ok>6-CuiN}i(B zd;b)v<5Mx26;9As69Rjhku=Qk%W%SyIn7*yB)gP^iZ$5>g;bqq1e$I&*d>3DE!FtZ zfm#Hqi-)X7_ZYygU^vQ!iB(l8I7C}JXZI>N{KPhLjPh~)D0RRANl=ran2?u7%$I^H z+NYKux%PUFz4Ja?}q^W4&$7dy}o&hfNZf zAbe^DgbkRQVV*Uc4$W0se_3z?n9Xa(%v0)V60QQ1VQ17bDp;~`;g|82@nA6ot6GbZ z?ypJIUZb|PJ@2{7+;$Z}$VPf`}M#*?Pr*s=`icQ0#ZLgl6e9vi}cP0pp^nk4hW`LqnpDu*g+Er-ll+@Bi?&vnFbS8=MO&rG#PffcH^L2RT+z56%+Pl0~o zrYKx%(kPsfg~q3fQfE_52}Mh`tP=jmek^g0Y#vMf+i3N9>I!{ zY#D=>nHk4(R7 z+2nK9ebJWiStF z+c8;-CYN0fH1c?x{w?PX6dMh8iT2lOmA--bX({Oo!+u*arfEb=gNm$s1)+Li$CU zQlsU`jPmEdw44zYHa0HCn)43i9$ENZ)&)h5i{<=>#~s@I%<9mVw4;K#b;-{zg>J_+ z?#@HqynOar{Bc)bb1Q9oa;`<{OP4$LpZ#%X6Bilw3Z@Ev90?yY;4IoIuWYe>i} ztv&X+nUiSiH0{&dag8x~RBK8GWzp%8A0#uof|FZniMbMibmZbEMvryd$Q+I;4L5 ze$;@wMmXtYHo)E-s*gddgdJ|}A3A^Vx^9Lc^~Av^MCdQ^aSap+CR1XT$ZZfCyW;1J zO8A8nW(Z>6C59jde0+B?p^qp~;2$cPBot5@5Tt|whWd=1jR3oWPK`FI8}ma6D^dU< zBtknSWU;cyXtY4KO>qtf*%{wYm7i%lF-ann?kGK_ViskqmZ3QVS3B}WzX z$GOSSML4^o5pHmVEaHUYI^ED=4e>Z#x-_vEl(LkmXb*Ucq12Vs+3wqj{wr_}5h z?4j(^1|QtIZiweS%2hS-qKg_wmI(3WE`E0FFmPfvC?l$ikj;QMb5&2KSwkgSnOdjN zXk$<QrcN;iiYd0?6f^2HOc z3dv@`55mz7ZcwdO7VodtgPk&BV6X#=h9nPa1Xv)<8lEH#t_Iv1qKOmGSEfTHs19QX zDUwFK9Rzh+%iu+*7Y!tZxZ?=IBBOgIN$&|aBmwEQT}KH<5@x{9e8H8ZRicWX6QeVS zOt^W-+ZoV%N5G*(LO`-X?~UU~_S3|~YV>M(pB?x}bS|p|K;s}xh#I(LGvHnmI5NKu z7KUL;6S$c987#9b|5fvNAX23_!;K=FLcb)Ycm`0fm=Wk60 z*jX4fVv+<`18y^uBdn`dsJ{x0LDd*v5+95DV3=09LXV;Bww|3*8__fvLB@hl{b+c? z#hhZ2iDw4}&D@+Z5$t^j-}I5Q#Frzm|4}J%tv>z;fT_@BmVl@MZ*9eH*1lN=tbNbh0FlhDlD@y$meQ8_WkLIo0q zGD_du8j@Gj_U%+K`Uw~RSpN6ie`87e(99N zYB*v!{)6?ac)dxa9#_hhSoBl}2L##fjvx>fUCn?a$)=JP=+)|;rgLT$brNX6<9{`U z$5KRE|+jN;bmpw%?(^h7ND2f?T#+AvEFN%p{rVycU*;S_C7zss~IOgGQ z3b*OLDLDF3@9s3VQ*jjS)KiW$YU={Eae;|r?v0>uquNZyb>ArwGH(#f+6dwTU-s}X LO{y*YDS-SB>Ef1f literal 0 HcmV?d00001 diff --git a/lib/ant-launcher.jar b/lib/ant-launcher.jar new file mode 100644 index 0000000000000000000000000000000000000000..1e35f68d076ee8c4c64e8e22bce099847e9b6311 GIT binary patch literal 8673 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 b|1aWSN^M1%=P*B@FP=U&Pm$^o|M>QQ_H{5T literal 0 HcmV?d00001 diff --git a/lib/ant.jar b/lib/ant.jar new file mode 100644 index 0000000000000000000000000000000000000000..3a676072ae2c48b0bcfc5f423ddfa41cd0ca9af6 GIT binary patch literal 999966 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
  • mD&-}%XVW#t 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�HjZ=1&VrLU$5iwrhmW-mXT90{8qT90in684?o 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�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%0A)3(2N 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
    R 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%0Ap$yU&7OE7KtVjeuu!CSLJM3sG{2-8O?sD4Al4 zq=f}!WS(K(gfD<7!~gyKgGbDi*JNzoj`n`54J9I%yDzwt-A9R4Jrxbm)Tr^xu(E19 zjf7JW^GIXGsggd3+)Ud?S{|5SrHl`a2iwjth1{lwc)wrXCo)|L17Qr>%Ouo~C2?6s zR5I_Qz|@|OaqxgsZ*vDBtf>*=2y!2zRNQ9InRSRORLx8VAdLd!U*MpIAS+xQEoRik zRLYv+Y9FO{q}C3%6=8Upo}Qt$4oFoEC+O0t5ht)3R#&q5BQ{U$KWF;@jY723Rm^U2 zI*Ug}w%WPhMbJp$&fEofbI`O?e;Ib|eCMN9^mZv6^Lw0w_t13dBSu1^fU!EfPRTtQ zxf%6wp-16ufw?-|)U%~wd{*D|dVF))4g)zBESOaqxsc0fz>XieVC|6^4C8 zR+!hSBy?AHxcVkm%usiA2U`|+@VUQe5>!U-9NMu-vZbewt}*JiK6>3A#i!&v(6+4c zn9H_GT|?S+aHN;V*HHMKxnQn(sMsQ7@Su1X4D>EETcBR-a13}d>4kB3UNLC_zi=!D z^@m{o7-}sYtU`0(C^|55U_4mYUD&Go=#uBOROyP9Hf^&mQ?mWIQM@r_jbObvsptg^ zODzrhh@xCIr{LUQNj|(Tty|x|@d3}MGu9P0ualx&E_W&B+F0T)9P!KUaP&Xkd(55N z;>^u*YzIwlQetyE@sSbzzw-A)C6H`$9pr6wY_a1lhFZD`udi@ {ZcQ7mgXu|6qO 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

    %WVDoevIXRJ!jJTh7Ptu#wJAkPEHQy z2F_0Z!MIZ1_(ul*%Ji~ENCMgse5XQ|_|X##VqH@@4+aqWQBqI7%{C{wOeC4S;pD1V zp1+swE41akm&<{|;UeN)%gFQg#Fo|ef=6@`!Ly&meU#-ndG$Wo!s`2R_sv$O(PstV zQwiCFsv>JCR-*|6LFu>C9z4*^Dr|=KM#B-P^-hrS^jCs|#l())YN;57u0g6CY>G0> zr}j4BKe@|hDiV_%u*CnhveD?;05T~6gNXmT^Q2C=g+;3@$)enGjO%i-3K~`ti zux(kX1NO<XS>6Tvi?vjl8RId-1uQf^Q$C$@z3g}{({=-c_6}vgbw(*n( zSG%O!R}y@)7UKz$z_DKPB{E~57TFoGd{k2so5cqeo?w$NT~?2E9JQcv*ZuMg@woj*6VfRt&K{PWKEV?Q%H-9EBnff z2V`BKo$Hwqp`)6rJ&ePhyGv;O>v2BM!F%(MWX@AtXd{%P7jLxPkU_X?D;(b!qc1M@ z(-CknSoFWPwMhozQ~`6OIoVuIO>Qvagv8e@zU9on+WUG|LS5-~c+amD4-DC}yLl`7UJ}S!anxpznWvYm(-q-WtpL^X_A6Zli?9ON0L+0Fo)qEZ3Kc~_6y_^ zFy0N<_Um8uvvL8AJBBUzi#^N@R{H^or|66~r|oy&@S|l58C-Yrb*F1(ZOVc51%dwy zzUi-TnlG=%C@z{>GE-L|N8he2^jmZRO`>6cwiv0pw>9tLa&R)Ww>E(mc*egZ^rEpEpaVfqkA@J3B2A=a=c)#KVbHdAPD9cTnCb>4u~>i- zoEO_I6v5@okJitqtBefJTL|CCOwCN)8c$`v>g;lZ(1TrqK})ξ|Q`o3UT{6C9yX z%i#b9oMcstX0Ln|Yl1GwJTTi(4H?Z-VfD>WogSrKKb)e`7L~tqZ ztYt5laS(!z%Fr<$wGbw20b|3v#H(8 z`Y#E2WN&NdkY1Hr7IYE?0W>i?wTs%IQ@T+ZE@=z_!Qnf^$2!bA_K6VGN^g`K-Z|h} z;xTh#xj$zK!xx?83u~g=Yr!fVt5iD4 zkgMrTN$}jjv6t0_$>y-49B}&P-s)IJkLX=3ec#JO51?O-g%zpW4T` zwolv{{E}Vh=c-C&i-rhJom@2$Gn!9(3}&EctP+0PHe{a0V44ckCvx=aUxAUDDP%g1 zW3Y4PA~Gj>!WX{snN1p*Jh4=BrlWlN`3`T6_2XU!pWgr*!#5b`6Dz<7)7s4toRE*I zw4&bVbUmG2a$hhOt;xZe2=GEkw8H=SJM97OojmR(0L1`F96>iXyeqh8t9##;elXf# zUWrf~iaBcTetMvXZgQK-SkJ;t+AOl2`L(E0t23%9M2zIoF=Sd5*@*?r^{S~^a5TBA zxREC(*|#6)3yHB(BnpKwQappuKMqM-I9+K4d?p3MNz+4C^nOa{OW^*m(AVRXQxuea zXE+;jw4aOLZixQ-|L8>tTFf^FzK^%q_wnZb_m8)Xv7?i*k)pA^v$2hnx&FU^+?k5v zvPk@B-V1YrjDmIGc?6-Ohg1v~{=3!0;At@td%#%vO$J4Og0pOnFK4<(0z_eG!hX>X z#(%djB|oJjMDxGIKg!TWjOhCXRec{8%2oevJ}o?DXLkaL>9YYa`kDIk<$j0b0fb=U z*eFAE*bA7@IERGFJYJ-l#K?DU&vbOd_Mp&r{4Lv^bDq&I^Pon7p4Q{Xk zI1Z713VILL3pXldpj;wlHo5b*nJvs{9;fy*!Uw?$j_JjhZ-$Q40+jJfrkXn)h9vzs3+yXzd*k>6w{mS1^9?=T|$&gCO4M?qh|$qleDEcW{(9CBxw|Pq7VQ z_UR`L=mSw=RxW$eia6SGxyK;@93#0MMqZiNiJ%j6eA=T zuQ``c9ef}e2nNELUf7h}Wd-3q@G0jgxmkgHr<7joBXw>Vfj44wADe`4u%Q{bVPJe^v01MS(usm^e#o%xNSqVP}>WZ4>2M{ltAI^^;I zG(;mo($*3x^V+g>g2Y8Ty{paQ*xL zhmx_iot3_mv9Oh~_4gn0uh5^c^^cNqsLS)tP;eOm1M*hT`ey+?zkn}3hR|5F1=AnM zLjS@GX$J_&WbJXAdEWt^hk=`*U(P={E+SryOyBddrZ%X=)soPMLONWhRvf2ZGH_kL zK92^jfJo#4`KT|jMD&!&aJwmeArw3c_M}l{xAfy<-uS`7EwlshJsYrI5wg2v+luao zj4eoo*~Z9}3LO+3URAqLp!)GwP@p5bIA2Le&^9WLmNL?;{@A#drxgTX@M(DnVK#fL3yq(>G#y%_HJI7=y%?njXv6 z1a9Nyl?Cfs9n}3yPJ@x(Z@mR*8a+(H);-&e)Wdp3W(#HPKHXz&1V?H~`bW(t`&c%- zrJ>lIP2*$Cmh$HjuUPUpWz-qStP`8}FI>d68r%)daX9~nvUlteE$q?;PuaF@+qP}n zHcr{LZQHhO+qUb})RXDX^gHvVC)vsV19w)|wJyO?ijcLd+o%#{?Ie^QbZjpu+-Sjc z3N}g`&mnf4EgE{Q4>W`o)qXrF+{ViUO6n8h$Jn~Y8sn67uDb%{Q zcW<5n`J;fFOjoQ<9MsTS`J6YYCoTkstlo!&_&}SZ5BWvVu~Zr8^o#2cpI&w-Xngcg zb8qqbwx3*baV6we>Z2D-L?>a_FRfzU_(!Cy$zH2BBfE{YD7yuPe2Pm2F`(#KtPQ0= zHvILof%)q$GZ?3hdk`OR{=)`HOK=W-g1io&f=H4+1DB@F*V_V8v$z%v)5RE|j)FxMh;Y_C1P8$>*6H6wf81K9 z{bSGciM?Nn?h!tAA|=cwmq%(edN#I@7`5maHG^dCYuwO#u)xp}6K5VQoq$wFTSo0~ zMIDY+H43x2YJVM^Y{#hdA$EYdfXhFV>@R-8M(ktT5hY22WnLJ|d_Ed~4?7#*42>`i ztw5m3?@(?+6jnFS8fT6~e37CFI%7!qCkW?*pV1%x7C12I3%?co=mi8n5O>TNUwjNM z0SE{l%7vBm~xXMhA0FkqZqa!Q- zR7~v+Y20M}R&9>d{1d7>Ux-3#ADu_8INlm){0bwX0saZo6O`o(X~0G#y=W7lMPSee zPoX7z(i)2A3gBa%wWc8y-6%HB6nn8M2t(B&T?wYf^y0EDcvE;gRzo^bcBj^j;qX}D z>1MO;$SZ~l@e(ZdupZb7@}DY?Mde%_TJ%1T+h05)TctBS5gIJf(f=XO_|FvLl*b>! z`kg|4zf*|e|IZY1|F6-L{NHGm*jT6m9utzVEINQ0UXpxSQ%2;tFaorUq&h&g8$wE5 zyCH4c{0H*qPgcF$U!#jraObP2YbCBljK7Z>VxzJ1^Yi!9V53fKSiG#0|G}+ZGyjcS zU;n*-LH!vd7oPXGMmD=|3Sa=46-E$b4KOSArVVhQAS(bjY`{=rM;m^0&&Pm}o;((5 z?;=jkief6%SLK`g21}I6o#1@tV^adDV8``#>$XhDpL?pjpwNDLe)^rVqL}_d` zH`qAxu@FcgZ%W~Mse6@DLQe)d)znp>TvtWmGDB5@X&v|wGpD~qsP3;+fm;=iun=XC z3ZG6}7MEo&lGM_;*oK&ZqrmM6fS@T)5y_oB7rS&-U`Z*dMPxuVEK1F~yLf1r+Gevt zR})7SVP_p#QPKuTMCi%VW+oTat+&cIv!K-ClOVlPxvLBVqN3E@Uba;gAib8K4SZ8} z94`lGycHhy$Ri~DvmZl&_V_JSr3jb05^pR6NJ zkqP9=lf!N`>Ix~2-w{iAwVd`>da5Vpj_`S{J1zo}Ew;n2^WVt?r`-}ZHvp3fzhg~e z{y{|0ZJF;1Jge@1Dh;y{+7_JDtpElCu;I^#v(MrkBG++Qa9t7Xv^bVsA(_V&s{r^m zGk;$T{Fg!Z0RY_*I=ZG+0uJ|Lo$mto3u(_eGtLVC@(*PURp5aUIVX!e06fO7MYd@Bu4!=GC+acUFMs5alDt_Z@}&9kBRBH8W?Imbc3w z;=9NF+urh&swC79;*=V}jXQX#ErRyrm20Zy_bRs+rL|fnB`JK+?O(V9`rRFy8ivK> zN0$9e@x)oZ_Znuz7jW`Fh2#I3G?E!AQDHED{w(4CZ-nFjeH{C*{YC@IU0Vd@-|Vyz zTjnNr3!M4F0BMkOV;hYf1(ZKAjm-vP#KiOoX}d`$mMhyFzIZ=i0Axg13$J9p zJRW)2H7g5c*%~2b7-nun@-0kF4b~@8f)@zmouIFLqF2J1d zsn=ZeXYqRt*zVw~j(cA)p1XY5ATIKL7#NWITri%ed;pkK+7$ts&yl|^oDcQ1T#<)* zhFH;iIaF-NJri8X#7(vPRCI3Y0h)Uka_I3K_tyDSd1c@+Ic<^ z5t25+Fvy9B%G6xKjecgs3KTW(vz8Su+;?w8kYFZ@dJFD0)$3{>1RpM#lGmZ#K;&gM zv_1~(y4H${j6SJDIJeWC9TofVm^Lb64}WZD9hM(}WNX#B2d?du$@J2tnbo|e2Q^{n zUvQ?p8wf(QzA;`$=AjR8>kDhG&!~z^wto`Ndjx+JDwyCDt!$jXK-R=5TrQsb{c92D z&=V4z`ioNP9}rOew{@q+?!s9VfDh+C3L77WJvny+k!=x&Ml5B zmNPK5wx}a5o5qB&5i%AWe@22ZTIg;jFlCG&n?=mhd|zvkyPAN4r^{=n9hAg4U*R05 z979k)XqkzU6Kx7)U#($;oZw2(l*>JW=B`9<@gc9bnxwB*_{?T2h@;ql_COV?P3H>MrlBo0m`4 z%K1{Cc|a_;{7m_emR5Bg!esqOMh=ZBd481w{Pj8`YdvRVPyu-<&WV;JpkA4 z(J*3YBx9`Wijmy3*+1@cnN3!?jQ608t>qc>-vc@MLZ_wH7`C(X9)lo3B3v4qovtap z9?XhZs3Cz{%O3Yv&nzcFZVv|Ep^#Ld;~GvnUDz(1vimI&(>4 ztfjMd_+?Rh#O<>5TGNo>NL^5B41xBPK(YoRkE8N=8}Ozxbf5(7FqpG;$fV0qKdzgg z?qv;n!@&C1a&>r6=wEBQ+`p?INBUr3_)4GMFtcba=P3NV*pHle42I?Pa@$hG-Vzf3HgkfM z$IB~SHXcmzoNn(J?8!K^rO2 zM8m|>Pv+E+x-okp;M6Epy3@#(Ee7Gt7KL)r6plQ$ z3YV3#NRLdpbmnxue8SZ%QG%+Ty9c=p2=f^`1NyZBN(^KYx37>oA-z_$J2;nEw`OfXU~+l4jj1U zt`6VeaPm@X90j%oB+shLu&O2wSQ=K9AgeB>MJS94M4c^3SUGD-owk{0%U+gCmBKX5 zi)1=;rgpq{q+z>Rv**BR@kBm4{_%9TzxMa?~}_|ZU;eA?9SZR_N>Fp_H3IuK+f zF1`a^MUGrK4h@RPg6W}(_P%xZ66`7oN{VE5SX;*r!GTOtNN{9EQ^Yk$s@%S5cyy4j zjO3*C7*RR4?_nkJ%z-oA4v*~RVeBKXys@fTxXP;7Wtc-w4*Rc_&zyn*?Yy$tyeoaYTtk4`y;skLX$gBM{?optEH>3tyltchchDK5U@a98inG` zuvwC3PDmP&mZv$BDEB_pj)a{UtI1P(uu@#2sG@bj*!q`3={`m4-j%68*UFHp+9z_D z1~xPP-;kd&uk=bnTt!>8f8{=4N-9)5LoxHHVb2CdZU?vOhsL;ippasCPqWGnWOdqd zn*mOwN~Ri-m63wV0mrk6NH2y2T4IYB_0(Zt;=Lp<7yCI{DY`({9K?>rKZj?-2@>p( z_NdG;5^PA`UR%atMlrg?Xs=qy341tp7e33mXn;Sq=8Eq3sie;p7wuyzJgZF=c&;by4Jtfn zt(IiF_W0JJU+(Xbm!`ISLxuE^Z&2XCumd>gA`-6x?yz}Dd@ld89RHXAaQZn~Py&L0 z$-lbZC4{0YALa3OJ+^2SSvw550@K&^6ka1@$vp@9W} z?M>%-E?o&C8^jBy87Ogp|N1{38^Kl&iC|Z#ri2Jy)j(eg59mvx3@uyTHUy-5>C%Rx zh-QWu82gcnL+z>ajqp;~a0jFZzRNC6_$mY5)YTU+<>0j~w@gb@4lS{cIIFFGxdr?&+(vRcda*LkPng%Z>FF5zVt*5v=q z;A@>5ue?xfm zad`92o-}Mt6M3+vj$sY0Z%r&Uur^u(mtG5csE91uCMl~-b)(b_{3WMuqxvlqpzcer z%HWZd_bKD@gCJx5_9sTY5me~c0g-w&u=E==ng>U%Ove#kZsbCq>Z+Z0P1 z7E>58%?%%wpWc0T=cX$7mPMr+wk}qU_od4ecHqav%J);VGf`421#}NbnqRIedbp48 zSc+M)3|}%y7f0cx(8Gxut$;d zWdR#z#*V~0S@Vny_MxZ0=TYJj6SyzJx*;VA#jDlhoVQyMkWq)2iNi*;HGX5Eb#z(< zH^1R(T1!$Kiy|vXl{hYBzHIMa#Z6`7q3L+EPm|n9AE>5!JtPgl9<)3}YcrUWZ*H8t z_!lzgn5Pk6Ysa&N?v8Tu6La#DGxQ5fecaUx55>?=8=aV~w^Fi!x`&76(iOIyjv~^R z<1Z4=zz2M^I^r}1#3r_DcX@c@67c8tIwMzrYY&&`{QUH)nwgjUNrF037n)UU-j>%4 z_=<}!kkxB`npuMS>}Q8)U4CIa$wnH2hzUf6UnHf1gwnffT8Jhm=%WQGsuGH-JPYfh zbF` zM$%9_Wl_LuVdr2~FK=WgjQ=TW-ji|*9k*{4ynKO;ZciL8sr!;Lh-SzDt(vc9v_)}#OuR8GL6v{Hs$ zKAS!+3CS?iKG%{jjuj%+30=H#oK~RYZ)wA2YNeL1`U#H)%~i+W2};#$Rj=6zi?i{3 zw!j+@y#aH!Y-_xhY2WP1^kUh%Cu>9YV$~V9)Z+)%w9Q_1-G8`Y<1V-vdD_Hvr)Hy< z5*<^reM4Tl@3l_Y><+%W#}O^$$_L91+cqW9U+hm51N+HDm;{mZ!VTG6NWP*wHj!H_ z&RC|b0mh+V1zC|;K782ikAS?j$Qw~$+v0LB&~~Hb1-UK(*~rAmrA{i_#a_f{#E^R@ z6IDXR#?~{8p*h)3_cpclgp2N^x28`KX4lwtNN{$Ieg<|B0cixkL+TGsR0%a79JMRh+k9U3Dl6vJh3u=2J&8j4fxI0lJhzv7zb@w zs-INb0R}&yjNcH@oqX6KHJ~alu{`qV>Dz7YEC=uV!}FoppGtGEJ@q|yq`pBxBp7Ph zJ?a?;Y6tB-b<;G=bDeCyWj3bf(k2@8l0%$#;fQz{CWO-9YewdpV$NnO=;pHS;l0-f z|AK0ViskHiUA=Ue_1Uq-h(}>lt%ahQnyj8}S%}F>B=iB7>g02i26AK??Pw<^*-5E4z0a~h>kSh4DGr#)kRoL(21dm`Ci4Ej8mfb>~)(yV|5R3{rlW5 z7+`}4o;;~!E{4%3%Fvjx3C*e-ea>chRgVxmfq$2F27RS?;S!lUTtRXMN1>$Wsk!GC znS}I04%4dD*~HJA3{G*rlHtm{+J3Eb5@x-W98O>x5r?Ku>;l9giR>x}A{Ia{V&0E9 z%jDU$zL2H52HaV+qaIBYMCWe#gxErlSpO#huF6zZA!A+UnP1x8fN@Wc5P9cCkUY8~UGISnE>+wMA}7vuz)}w;6OGfZ_9$R^CBXj% z@T#Dea=3Q{nvHpvT*W~*8mG~0O#oA-<_m^MVpJI4P11{nSYn(^*f+>eDZL@1(UiE! zJPd=rmw)8IQgH8zOty=XmO?mpKb6jG3_juF6H$drlBj{c2J;U}0_vOvm!h=T%4j9D*ZemwK3?qWsIoo#z zat+NHNnbRWD@!ej1dJD@7&|(H z3Wcv3+7Kye2vN`L;zWT7;b^*0qDB%|2F@$HP^N7ymDotDvSp;1(W5wn9!d|xq=K@6 zRdy=wgR>s0yNM*821YBlCZ>&GxIbH|t*kaz@p-w}Y(IRUt{auqdw9t- zM?W_h7&PQ!#Dpk8=_fZlu)ufIu9Sp33@B8WS2_izm?IPmW6b-=&?BU@x0}nj1Q9g) zGPmfJKw%?(wk2v-FkH4zD0IpKJGY)Ls3s-H?%a~?tqpI_>zlDFX9n=GIv3{+UNz*~ zVs;d4f)?S|*`Q_)ZsiA|N?VYQT8GVGhUj_BEJVPhS`s)^R{B_pN0tuU5tBx;0BeJP zZS3isttBBv8cj}w0#k(&2+UkGB&C3t7(!UD^CzE;wC=p693jolrTUv8JV$CV0~60o zQ`&!!({LKWldx0vx3r+{G00%_mp4>mEut(Z$glL#^1w14@a2RBHyJCI)P;yd@j1Ci zJU%QyG|6@gGP~LQ+5bY|$!@lKx2KrQQ*q(t4>y7tPngp$hY+fpz1e6}kTRaNSpX7+ z5Oc}&UwprVT;PYcgK*K$pJC3>rI!qW!hz_Lr-tQYjnZEfkc^E(5Rx8bcX$vFk;4Zj z5k@2+UcVEs>?|m^FAb4wV%XYArnkZqYQE=Ct&Vkdku)ZpGC^DJBJVxvPowBYE&&BA zpjkqQ!N;jWSQ1#1*sKVCN^%L~NwL}<|DxQfioAk`J!)Yhn>~$Yt!iW@q+4n=*Ak0r zZS2H1V2vdy&ot5rk82^WTAk_|U=t%&Irs7WgOTm)fM28B5#E!(FwM9nxXa&+d19+@ zuG%3}ylD|D>182@t7t=raFv23RLpgjN%=S1R++tgU{XhVQH+4+pq(P+Vf?#@i{I)I zq;R`uMqLo8Tu;rtaYCz1?znoZ`i?cZ^$`uFNBfw{T`Y%uov`pB)!1rkuT1q_Qls|$ z6*784?S7f^_Q*>4UjzT@g9}l48s0PI?SU0?kM42pof=Ay!14AMOLFfFTg6k6xhvA( z0~u`Ya#^d+ys;WLu2h%}b6~ODappT}vfZ&2eA)>I@7WcUs6Ahk%jcA+;PK|0Yx3)z zZhjk(L$f&-AoR&6>2CRhPQi5RnM?BRiI?&}*4@g7zYVUvRXq6evHZITXPtmNW4lW4 z1U~A=VsD>i`J>~;$#}=XDe;bQDER{YePr#*yu)&n_c@Y%$uW6n)e2S2p~({I%V)`dFsObr>5U-t zN?0Z~P=^V7u>_-PR%kCF$@nv70oq{oO8d2s@d&8T?&#B3s7KhRwhIh;C+P03rJeZf z4EWI&N=Ssl>vGsA@%As3eH5;ol?(QQghhv}DHe(&2|E)U|HYE%((JP)>mg2*zL7!x zC?BT|^OI;8S`ac}GQ>~tC93<1$ksJGoAY+bkV-$Ezed&4l#syu6ZI~5F}^Bnw16rJ zaMFin!tv%{Sx5-7uL`}dr0gBJJDoiTNZyUxNBbhhY?__lX7CW}notl4-NxETl);Jz zD_}+uwu`XlK6VOYA@V9mK1rs~=Dnvq_m~KAH5XC~u{ku2ruB@Pamg!nI+M|CY(jXy z&UT1IIidN(WBuYrF6VK^@i*7(tb)1P(~6_t=KLi9KV;X_1x8DA~OC;#Mn+^7WQ3jAh(m??d_lPK*>of&eI zRbb}Np-41Nb`ffDafN8Ha7(Rok>N-Lf}G0&0SWWgc1~9ryF$fgob$Kw5nvP>!2K8d=Z%!!Q78q4 z*bRnK$gC_iIwgssoaCDZXk=iEZ=&9u=fsY4SBI&US*3w(S9`)-J z>P23CD?m&NELwHXf}Ff`f1G?_?rDlh~AtIS*O(@%p<4*ZHZ{Stry|yA~7nZA1Zd^4&oD!J&gE*1}Ld^By+YEJU|o zPgYVo)QJJvOa;s7S9=75YVgqkfg8L>sDaI-s_@z>yCH&fe|3 z5^5Zja^Jqd-^3AKyeeEZ1vmdTv#a8nLm-!|>}{T!sY|VVWQkKfCt1Hv((H&SuJHkR!RQY4a_-QN+AlZnyN|JndhU0LGr!`DElrhm zH;r>gJ2F3?aCAx6Ui7Peiz(LqyG?kjrgYcZw;6G30>8B)hXXXTbRAdX@K+GNsI>FVtKykxwS^75~p&b^!mMYYAyDJ|6NSAk-Sa zJmE`;e5o-ZfeaY}U=gfrDXj8f&OB{&DlBrr?2ZhSkiL=(CUXiN5wN_OaqvRCIRSec z0dXFo*$aVB?C&{cmwF6p${4x;YTikCG#k+hn{kGc43-kf*~QqtaY8wfKq53D#Q0-a zduKe-OWyr0F(ntJ>#;OTO(T_z5YkWQ( z34o4>nZj)P2Nu5?5nJt;k9w-nEw{9gyE&JVcDVvzWOsnAZ~GMC3}K3#uMh`nEe5wi zaVg5r@sZe!0XBy|O?e}#vU;>7a-JtylkkL+L@R8P7qI^CQeo2|M2~wmG~ao|(KHda z#6?Y`+x*aPk{IS`tLuEP`mS%=hc(M9(o4VQP+R)AQNLc_DMFw|Fa3n#6+gH4?WHK1 zS`<=dZ6teDkL-?Ngav@q)nz%RFO14uKqIeg!xtr(Mk8Rd)ZI(Ou;VwvS{5h4e%W9t zqoIAC-ix;cKjI!i?t9)^^a05iZP+AO$5vstw zQ6e(fp%v`7&(@5T8`4Q7B6s5)Wu(z%L^NYxszs;6cRKJpm%;@_XBI&p0`5QX+&|Pe z>8JLs+_9fW^tMqxTflUFmk9FR;8lfBtlh%Bg}HNh=O&)9y7{l?2()=@Yhrc}&L1dh zb6QuWt?$a7p=fhJAOdE zc5(JY+H_JE2>IkNx*&G|T@lc;T>VO_1I1861v@%N?{Z&`xiowho3MzWWW8V{)vxy+On?kn+Of@oQc=#t*&x^X3=8nMT z(n?C0tLgKS0V-EH<hadU%jr=C$tIl%K>-=W^^@^OO^vFS3^_3P(Vjb zhtyqrht;|0^l$ey^Yw_HCV?W*#y27&Q0?6jPON}rYai)RJhRiE;ulh;^CUz;Woqs? zJuP(lu3tM`T29p<>;>SyWf{THgons8(FE};;+i907MivK-0F*PS4xkTxe6CRw|JO` zFK3oE{4QQA(vALT<7;(P^xovtmM3VuuYhgoy757qWwo)s4oNx6J^_Qppx8Q=QHEBm z3qgJF3{2$*JCI<=`o%V2L8uA)_C-ID;R@m1snhDi zP5O>SdSH9K3)7xLaD&Oi$Q=c1Pe^$n)*g*-jVQfY=8UjCK=&k?Jpge>;vJlCfkhB$ z_m8$E=$%sji#yf0@~#*je55JXHcFo;Ri|uUW6TBe1jH#oBL2-b0~V(R<36KK7PoCD zO(|@D2k8!Hj&)vB+#kL2iTH!u!oOP?CrL)=X30Pk3cUP+32kAiITiBR)~Ru3yHO_q{E4ktsi(lo8Ku{<8AFJz zvS;H@e04)2Q{GWo|8FDUy8EA-q+g{QKf?dcpk-@e`YT8O{}{AXZJe=9P<(d2$81{? zPYNYAm~A+N=14mwQkaWVm}!dgDg3?VH$k-`Toba17i~=!v)6q92n7}373AkY!oi9ax+w9yk9e4;=%PB)=wWu1C!Y^Mk#r-;|!$3 z8-$;M0G76qL@UE&ugIP|keJR2 zyKP(y;i%WiI|@pfI!k$FHNqNy3*$8{U3gN(m@HcCuz1ac_)hXWD}~w)u~_2*`I@F7 zGVWwc#@{>!3Mq#(DG_~s^08s2=q?^WTgC!wJ9 zAG=X9`e?E#l6I^s53{}B6o824cUNpA&1R-B3*qO>nNL_j>>Vr=gJ`*?2^FW|v7i~* z{3~(3P#JI~m5{iy{b8|Dv@K(=DW&y9YR;Y(O1+Jn@C+q$5fqgKE#*HQM(9YnF?4>#l$;vmU5b;f(zHI&|m2; zlb5f+LcJ`#PWjv&FV7;yV$Bl2fRoR^iN37HB(0*9F0VXIOrioCZh5}cl2J{zG{1OJ zLhFJw{LNX~813%?WcTop5}=Xto#yZX;Zw0^lZA%=uLCYr$X%?z)15BVRbX$a#`p%1 zmhuf__lE z-pEWh`#ye47#9^L8(C4x_RHG^!JMLk+^d2uS(+2a!!HH|TSa_il4OdRU>tGqaCM)b zl*-0alMM;5dKft+Jd4x-woZxTNve9P?D)ni^Yb$@K~BcW;T@8TC5}@9x|X35g!&Mg ziLrk8rifSM$sPx_I9(-dSi2ZElZQ_2(yTk9AWJw$<~!-yLt`o(7cUj59j;`dqtZ+w zhHpr(qKQF-{4A$Sd3LmcSYsBmb+TrWHPIxm{kTU55H5Qzo^>I(Z9_ODMpXSl7an0Fji3kHm4cv^a}wK_LI8{N ziWP>_j)QGlN#(rM7XVLHiC4Eah#Z1fA5YeAxL0cHX~L}7d;kIuHwS3AxG#aNuux;{ z3ZvD?LJ2_HBU`p>?1Na4>Y=`JCgXz;bs)cIvLRd%$47gW*443D9A_rbN!UjZf_2}BX{pD~gSHIxrHATK?t z`Z*xYK%?COrrqN!9vJiQGoZa9k>Wzvbhm;#DYl-UO#O^`J5WaP4NgltY0wLB)STC> zN}QZcmtKb|C>zSQ>StadGwAX!_DHGmkwF%g{To|r9;*cTtomu zVAg9SNpVz~=F=7@?Z#j3F8+gC3*%Ef@TK%CS_~{wl0`9NI52r;JqK>Xu4%=Pt-1&S zu)G}U*VtP6Ah1P#LzfY<4YapwaHX7%s6i zpqMr$^_h4n=1&Ruzh7pP%CBf3@b?S)chi=_))@@T6~|0xfvlh?zgnlZ`q@2JvW<`k z;taVW_y<;02UyEv0MO9~z3-SIQiU9C*&KldBoXP^Fs36>NtWr=B$c!`fat~#&*fax zg-RVG+Jhxaj9IO^_xP`>1IQ3)P;i8%r!9Omh>yx_Eo8KK7H`tgYPqznp_YZ5?`IbH z&^NIW?c31wDn_E_N#=$s*=fE8x5|7g%iKvV0scj2z|w9kNR7uR=Kzmud%-PCkQE@E z&Zm=%J}9tW<*4G8zsS{0;kV?}vH@1J%02cN+i8vCZp-q~J)UJ^&yDx@hVzZ(=0T=M znJeNM{B;?c19KQGbHsF5xNK9T)*L}gfs}Q>jv-daa5XzY$9>b9zs5p0x$Pj`&^6*p zHY_`CRc>3|!_51|@*$3fAs@`V#+h&oz|dJIhitok!pHxx zmd^e%vk(M6NSeP|TTHC~P2hoy!GG;JN+w4C!%nK^rLVl4{*#@VK4siS01r+qZwwvg zfhb>vNlpVi$B(E0AGBS;mY8X5>`0c~4kTRNyxq~#Y&m@0QKxEIIihMUlw6e3yk-Ms zGwgD`ShF3vx$WZixn|QD%iG+0yT#>3OMg?~JJo*r&f~M|=Chk_*Yy!h2dG|QN?HdC zM?4o9$l%TG4~boMFcrAqO&B6a3jb(|n{cuZjN9)HczU2JvGbtH+1KWt(Rm2R?I;< z&9vYxk@BNx{nfy%7k*gD_*Xjv$-$e(zxEJ|@K&S#qez;Mth+a1dv^40)uAh{4|2Aw zoV^EQwDsW46?-@Qu+#Cz%b^Q>^!0dZcj#Ubn=kCp&ghM+{yL9&)cE{XWQ%X?U#iJl zgWqc`#25Sz@*p48(5pHJ*){YrilvurovRiO2wV2~nrZ2lwQaHBQ2lR_;LHpGUns#RCrC=#t>%(Bpa&CRQg=by)CPv*WrE-lVmxWuipor2VE9Kb)th|7X z+(!K;B+<94ZDkg6@_JJ8y6N!(;|m$ljeW+1p_aKG=OuaCc8t+!2cs%4ohtR^_(=$7 zl>!xuwOiY|HR-Mahi$0Uu^Y@<;Cqbjqy*fChg&_JALz(K%VueIl@;fr6axdR@)kp9 zc{?_Ie3lIidDHvp;(APTaK8YT8JzYo2v=*vRry4gu5y`gw-KZYfag^$#WNkd7GEHf zp=k&@m9mt$$Y6$njjQ4JP7)8L`H|5ZTJTv|Hr7E8ROSwO8fKL@19Jr9Nl1fXw^E+* zWN0@l2?JL1)_$DUvVSM;4obN~%lx)#iT-ChyNqZ0IX92o2_z7Gw7V^wIxVlX;{$sr@X|E%aqWVSTK~k6 zT;U%**GE~~X_!+vlYV}O04V?*k}BninNu`6trqEipFy;X$kp^WjGD;(Q)*Z{WF4f|Lm*Ng0@@y|*0eTV z&!6BQRrB5r1o{M9*79@4^F`gAMpOLi@GXZ#K}HXx+x}{Xuh{UPVH}YuA$$hSj-X~c zQoM{d)vA9awk-El=iivU4EI_X|6pqqMuM@1n^&c;0H`Vyvcv8>$cLvV^1>?wMWj)Z zb&H=2+tdscG;UW>7t;OVC)jK;nw8G`>xmc3&Jte;G{zR?dA7+9N96xB1bX@;_xidl z%&ZX|aC6wK%{av0Kg?*2kMREW91`QgsIZR&{ADZR0art+w_8fL9YGU(FwpNwl63LL zzwBG$FvK}E*wST+A=`~N=24^7uaLXp5i~7(tI@y~Ibb7791D}ji5oZe4C%QNqk~$R zBvSOr8VFKx7*w$@8K%J)tnzcqXPOK)9&~CJJ>99bhzV2fZm0yuIZMAf!-?tSDsjIz%BR+5;<%_m4A&;A^Q**_ z+?>!xSI)|=gK}(s+-#ne#}cXa&SpPbTVe_(l55&BX>_kJYrjCJhBSR#)#n9KX>~qK z-H*$?#tfJ{s=h9}RW!;jCVD8ia=51TZIzwl@t{p+5d9O*7mo#cI@QI_kM!F1}`e0I%=3QGpA`iHgo?J=?OS^QRh+kP# zWgu{dYph8RbuubBih^QF<|Z9ywYoGTk0>cRBx^0uj;|H8q-vyR7P^IDT(e zoLc1{DfGE=iLw5$Q~GFWmFPENiwwt52*==W6vX5u9HNij6O~cYkic3Qtkz`*lIPKi z3EK!qZ$zzILZMdJto5@jB1LAqll4kYWY;>f$YFh{wlpbTa?fBRKfCqUjIc*M)EI{Ojiyh5GwE|_!j>S2CjSzL&d?Dc!?=2a6w%B*oY;X z=Y@FuQ=MjBn#$XlN zTk6_keTP~q?^YH4&2gyijqK#sB$waQT5N*|la25`l{xga6EfzY%qmPeqDKW>W8Ej6 z(Sa6%St!Fsm~Z>b4`4Vg)3B>;M?5Zh&6n5;#dhEbUBDVI>v+>{MZcDL-2pVixm9@G zBjlivtGeHShV4WGkp79pyXnUdd6(IXjVGNz@t&L-g1Hi@lLE5TM`hgN0vrv!MYxG@ zx-P@eT&6?Pi=&wh5CJ zXntpUWh%Ny9jMmK1r}j;5glPjTv13zWePVvKcD8KG&#h_JUa|jFTxe<^h8E0lQRhZ zV5U`#HK^tcioS5LR>|#WxoB+DmC={~3rlnX5miCvz(hCuxz?-26CC?61$1HIEr>JN z_Q6QHq;?ndLD@5O+jtQaGl^FqX%Btih^X=MhB@LBb)eH^4ss(DgHX|@se95DGbw7l zpb*JO3bpU3M`C+Y+qaBPN{`pcaXL&VXwmp~sI(A?oAa31yBWEP4ba&l0;*(wZDW+S zp-HTKn1%*iQCqAtfNT*q=7_M5*Rta1X#vquoF;mv%P;*mvHXK(N@t3r~mc}bvEO@y9iYg21DONLX}3x{{yFDsj^J9Hh)B3({_OiOPzhQ zwJyTX>s4((7BJ`f)nz%dLRY{~lXi_ZrO|2sWw7*u2{8q7wxLgaLh(z$=!-kDOIId@w{IU16*UYli0K8AW)5J>er?rkoI+V@!KtM%nYhVMa(w?wyJrVFd?6ZHvg_gx2v6+WNa9V`J8S zY0KgzUFtu{*!poOMyCAO+J$+~O`j@oDfRCkN%T=(j@`|ZN6lC~(D4CY$E~ImRmMg3 zl*qM>Rxi$3q=<^ga|w0Y4cent;yj9mElIsOu9rdh;g{qq^T*FT)ifQ*c6a9$@6a8VD7J}^PW8-_<97KUch@V3_)hUJi!cZTIlq6V&+ z+e43g%+|qfYRL*x81{-qLEyxW$*`8^J3vX;stv79zSGz(y|!=^;O!NzZee$qsFAw) zR@h^7rqC+IA3TveB=x<(T6;AO-N>AAtC7#i2h5-4_fsX_dD<%VFaK0yvx@PArlU1DFl(ybjp?VFUfvHyjIFWp-M1g368?pB| z_)q3{6h9na08S3Hy+UOlJpYdh@;_J&K^$RU?6^Q zW2I>!plA0v_=AWO$@26O@d$_!#Q~21fEBPA*~a&bNvEU%l{Z~33pZC>+_o)~UEMZS z@>`k;Qv777oL7S-uUAG@ZQMGyH&$$~Rc%^tw^zP%x!i8F2hK#_zfX1^vmd)>UVHYx z@Oqz!{Vd~O_B-F);CfE`ec$r-KY7Kw4u;_%_ebHn-{NC$)le2MzpxZmvPe9nh!z28`T4u|c!-?GtqUkzygi4lC& z!V!G+2l7!Sv~mOL5{yZi;}Uci^o6p6K%k)@*v8(GU#%kVJ%SPeZ+|Mq}n%fo#v&sXO+ zHOvQ;s0(8pHk?3|S|TdDOZ6OPbm`JINUc~Vxu_TPr-~F#Cw~ot6hTwuFIH3b5NU=p zP&h>SzZiSR;K-u4-FqgS*w)1E*qYe3olI-4vIGO=n6#=F zx^?_hY2#vnW$IoCmbHD9xI-9(4#j^;*H7fd(Hy>a(GzkcOxD}em=;06X3m|OIA8x> zLr&XXn4e#4>257Gl^0hw*S3;&o6fnU*WI+y=7xN`eC;>h&CuZF*O-@0crpm=Z8{R+ zO-3AbZc(!G zkM-)D+}y4`FSkL_+lYwm@IdESh1!1W`;ATi}4_~ z#GMNn=+itf#x+i zR*Jftm9%>SU0(`Rtofe-#)ALB)Fq7>ycxQ8N=!;{SsEos+SP~sBX)R>t01D`AN5x3 z25bfz$_ucF50`^mJoFKFl+cBs*tb9cf1OZH48z(6GoF`HB68TqN(7C~1{6QbTKM+| zQlf*TNrRrL@^VF8uFjm8$vd&Xs0YAtXF-^GbK9!q!%4(CY7^e{#-a@_vtW2)= zFHA|NA({H=rC3CGY)Mk1{iMO@Knq$Go`HeR7a7q-CN3CQBWLDuF`7(hQEEy>&@a|> zDITejDtoeiEkB3{h%4Vrfbw(Q4Qy_Z;yivh!VdWU6 zp}u4T!r7)|<&w4Hza`|uQ3w7etTxU;s!(CNU`_<1Tc||E+`HDl$ix!cxNW4G1XD+Y zyC+2l)i8JO5Sz1M;9A2IoT0MNg1_7ah{FRGxQh>sJZvR0Lj}olCKcR1qXluLOIGFJ z&e4Wh8j#x7bs!}FXM=BRXy9UH^lvqa$(d3@Ug3gr_UfR)mweZq2krLV;Itl7CLwvt@G%5*Qz{V+ZT`A_O!)M(O0tyx;e_n8C6;_1E zk6Wr$Q}Go@Vx5B$e%*W;lhtvC&ZRTPuXr;{jGB;?N1A2Lf;f!8BYkA`Ze=WC7YD$( z`J-a%G|;-Z1NCeQ)W1HhCeP^nW3WI804)fw_kW$JOR-|ca@of+?7vIAm1N(ld*_Y@ zf778xQO@=G|K>$)x`Q)=4tvQ1)S%$GWDTcBB`Di-DU-{~Uo^nBRkoHkTV^vWXDaO} zXulBSCdeS9=6V^*&WkNy|(`yU|{UsP7g|YlOmVAduFulj6 z>l{H3R;+B19AR1c%Xhllr`2S`I?ZIsfE6QZc%;AnHyO~me6J%~mR4RILt_q4y-}Po z`$t8IYka5%;H<*R#T!|s=*%rOk=u62MzarV%8A={grKS>(VUZjs6W@V@T|bBDiSa& zTTzuqQ%Q4LAl`Idpl&@g(L^#-s_&6a^ebY^ryQX58F znmX}~yhz6Gn#isKeJqsVo()8H%HVzu(U@|1aDvpMJ z%nPfba*t6SSNV%DvuKu^%^4Oc8L|~lOsVg$o|>bUk4vN{w^JvVMr89Sw`wdf)fn$SXbAj z&r()as}E6be7@bS&yIS&m1TtyZcCl!ROy@szUUdsJv7=}xjMYP$81yZYYR&wFUSm% zxC2>y1U9_{EPH`8FT5htgKKva&Wr5W@?_CR_GgzQF-|F|BA8ZeXY1aXd+|rag`Z;n zOOMQ%#~p}0Ty*c9WB8Xxpc5oFB z!%~?pz(=qO_LYCNjnmMxjQ^7jKJ@T0)hpyei8O7&>Ig>I}Qu494(J#WFt@g)kn_F>e}5RYqFB($PvZwfpDBs%AMociS9VR zCCLf?a4rJ0wDsfMR8gd?es7~!tg;ayIE|!Y{S8g77;@E80A(4zK$ewhGxVHoB!Y|#T5rbTJJ z3QwTeCAG8VR}<3*R@?cheZ)%~Z=F{P!kL@_{feHZKJf6^-CCJjKtbizu>O2pw#LY& z*WYKeCz0gR0qWVkXRv}*;V7U#Q^4wz3H%A=`24Gf6Zh*_OCz6VjwsG#o{vKES^D{Uw zNb}v=ALvwKOIL>lTQ2Bs5IXy10`QND8zz!vZtB?sVi?rlmnB&jyuflCSYK+fN0LM9 z9l^#g?K>j!jR-4%ZQOVqvZae#FH?nS`zCv89g{p@R}~J{KY%Q_P#gQdcN>~(w_L8O z>$BbyH2xkU{ad*X)hO(Wplu>DE_^_9{#~1|{Yvd>Rcjpk0QF#LXO#Qk1aH+dnD#*1 zDgVl5yX+g-(Y$S>^9n8}jc{B%csm!JS`59NsP`7;Y$uU>nz%V3w6^&#T+0X7Pky_q z4~va-Bq7?KyNoQajorcSf5aZsPN z%dmi)1>y))5qi%D0$5|LxM`*hGt!mtR8i;ko0B)}*83JM*DU7^(KW{>6T#%BLZqhz z^Rpt;ng577@{b*WEsTjC9R}bKKOCOPsA`^~6jV?l0GZPJv~bP^3=oFzH9E-W-eD45HQKX>x4!$p{K9gQMOnUY(Yuq};gDGzYr zaJ7V--~2$J1k9Xs5;otpkIjuMqa^IFB%l?3aKJQtw_QCkIImyzJQ?r;7`+0MeJYkSc==d9Md?zY?fJpXNJfVn7wiUM&btg8~ht-EP^;Ek&tn^wV<9o`_U~at5;XTjb zlEA?s_fN<@x@ZrAHoh-&O&|cLNeoH?5_*F;VfA~9cWg`spuC={N1WWOOiTZ41c9~T z=&i>5xhTSEB_`{r(|Rz<-iU!}1Fv?Z^fV!Q7_(xcawDav9gzJ8F6m_g_wn z?p4!8ftvmxjFe8OZOWJfZhLa@yCKV(mqwF3v%SvBcpSH>SjT+A+gUwbTdJ2cXG~B7 zxpC;30&8*wHV+GiF}{zP?AnmjqM`?;Df_=>k+O+ck2VbL4#~Q|7nU6~s^d!Q&TzUr zyYdyhI3q4P0B27TuALW8_1$)-`( z_5*C!QDLCoR#2I@z{5C_fy!1u;6Jqu61#!wf36$kt0xDcH`;&*>4~C#sj`I+Up^2 zkK96Ey84C3gtN*gXvZ{j*Jb$|>IJOI;{NL&w8!Grgo}EHW>K>a=<`C!B^(-kH1y{^ z<#Q(Z;LfV5ORB_+K#6=@RR^k_vAMEj$ve*_x9NY(%LJ`XMLDhkZ>$WUZzbcuqzDDPihs;-_wXNe1`jwoOheuW)fP*2*wxaSjn)EWz~HxLfIp2B@+TseV;x z!r|VyEC(!Uq&n?Tj1W5V;TB2=W)r&Bcgv`Z(N! zMVqb#GD)+0IWA9Xm>6JyNjY4t9g8L2i%dFg7rSSgys4o;OJ)$BM|kcC942Tng~P?v zU!f#Q{s`n1>g4-Mr1toMHj5~A+LruP3;Jx*5OlOJG2=Pf1n zSD-?l#aMZYvvdKR1sK56iEipEbFdY;Vsv2mMZ$#p6U`6>yTkklkz1L&?YiyY89$$X zMEa)NgvL4(;efoa@UwkM?A5;)u>Tq)wJZw8Dn-8*^O2bjkpEkKp+q@<^#-6GmCgfzanL4a!QBv3Tgt{ zTP#)G4!Jf8Y)~gLgKxJ@*_!3dTi!6#PN7hj)vC5jtML=^zZ9PTlJ z4flV3Lsbl&tjJ{TO#TlQUQt%Q{}-|k96h86t?FBMn)^3IYhK*waN>;L5m-N9Kux`1 ziw)$LOM`yJlxS%0-#@7Kn;d@*23{HJ9Zhy}G@ZTYv-QfFlt zOYC+;EuYI`QrQd$oP`fb=yT;Gx7)YS4QFRQY)&^In0Mf%A)y9$Iz%Y(FYMt27Py6B zuK%Z#bja{^L}_}|Q*lHoa}o6boUHMy19R=iBMN7bv8f^3xn-8(DtTF@N?)$|Z0<6MSKH|hL1_p0l(ebmEk!sKK?G+*mzujD?|(vL_L zmijgRU-(%~GPG1BY zOy!@_=$4~P*&7ptgNtI z7{_+G<$NvGXVvBMU*zXd&HELHMMjEq3DH0P&{tpIM^IZX57Fo2oawi9hs99DC@an* zVaVZ1%Fg3QPictGpCk*k~ADZp1JAlXEw4d64SAv!P7Verg$5_6b z6;L@6g#-IhV=`CwKyjxsCPBSG7M)}>=y_-29mWz|VmptEcy8?JJosb1BwZr-zKEdZ zejz@MDG7Gk$rag>RbZP)9=WaLwT{0gbl*&4si;GYAezJM&&GumV!YAA64 z)*s(mNFFg1X$|vH;&B5-e)v)sHd%J^J*jCqzNwujhZV6%92%igo(Me~Y|~6d{_b2& zXX#lsl@GP_)P{B@lB9OtxW3EGk%~X7C2B>G)N*99D5Mp==}l<&$g!)H+^N7&ELpKbQrVthY>{b+_flp*s65!w-K!|lwLD`SvZ(lB zN}WOP#P{5(-|{Ys%R$#gm3^8|{2l3nhfscXUL(`u}y_sNL( z6Q9Eo1^~5WMrVa!Ryn`OBD8>XVLPlj*r=qjC5noCCF+>yMm*SMyqIR*{TUrY`$NS< zdX^q}E{jP0#yofpvN8sSsc1&Y7n8Y{Jl(13lD6{P8%9k_=h>`*;^92JiPvi&#HW<0 zs1)s?e|&3hp);VhYh^yFf|x7Gacdp=3p#*uPNiFUj+u6AD(A}gvXT~Wg4&c!16sB| zOlUKP@w(nIxA5u>|JbH*je z^(V8n7e_Ob3gFQBp?9fd@9;U>lp{g!fplDL{%fN!gl(d++O*Y+#!<<$sz2ZNzG@zcWurPcYbd%~6x;uk1g z;N7@*0wIBPheSP zjBN(91%I|;7BrHEV>rtj>rRu!nB2Gzk{X%K{KfC!w-?4dcM@WUV0X;jpx*Fpv^1Kk61>G>US#HF+}OQ^dgoS% zH4_RhjzaMVPvVa(e1X-A_2QXwW$g-+x6L(~#>oFM=wju{P!>irHQ7P?d zi+$q#n!Kp4k*AbW)yw;=in^z=IaZuIB~Njr1jL{1cF|grbNBdC!XK02u#$+BD^g@t zzNM;=z82p<{R(EPv>gbw#Cpxyyx`$Z_wKr2K-{gs9Uien_sc)>D{k>qPkajXg#L79 z{(!I~OTER>uazSmv;5nllr0q12&?6T3guE&^g(2ZP1^Z536z;8IFgmvL)nTa?W8vM z;6cSMzR!(QH{)+cX+~TW^${Dja$Jf;z#dQpmapS#Nc0uXRSi4#>z2{7C0X<2$j+-9 z3{{b_1@LJ2Bigs7?)%`sD&GHJAe{f~n9KhB1v7&E_DzB0f3{a}HvVm4YyMw*h3Ygf z1N23V;T|~R4$Y8nR=-gC419tR8fbn{{R?A~Ko?@AhSYbFpcw5nW51fBnO!1Tr17z; ztX{EHt!i1sBnqObwy~kDR1kpx^%mquytkda#($c&6?QYJ9eAmb2{E~ zI;vME^2F}daS(y0t>*}+9b$y?I=AQU28a_Two35=hB%7cg(4`6-K8Sz#6Z>9_dNtd z^Gv*f*CHTYk56~>>ESxWY0(>R^zBGP*lva)q@p>b;wME2ffz&X2Pse@m0sMZeiFAp z@=mTO$O$rqv?oqoUIZllJYHM$)Qs;TsrN1xu`LDSq4s4MA}V?+ME6VBn^x+i8`3X& zszmoo+`CqK6OQnc0x?j3&=1iny@^Mt7rRFb{emSP!loXUQY0PXq_!*$6A@u0IU^yV zKt6R+mRkZr#^@wZ-BDf=cbNA|zMMMKWH#{$oFXA{tscNyx^R6M`L8MKOy8%%ej%B= z)bdK$HqU>^=p1^=iQC!-CZ4u%6mg>JCtuYoTU|!cUJvx)`t?r2PA~x*8Z$k!yR99Y zFCXE7dVU*BkR%&egL)eKLRtRpw>A}M;SQ!hg=GpEQxf1JIfz?CvG=t>oGHr$M>&iawszmH< zoFbu#!_OV8nr{MKk_MgziMN|7zvr{J4&1Mb<;?26(FK1AGCr@)mMa6JsC|1TCkVu|()i3>a5?jk4o~anACQwb$^0Go4CgOb zLvzEEmZXX0O(fY;#SEvogfeYg6jR;Z@_2Pn7uKnXN-Sd)ZYj^{aR}mC^ITt8hD#OG zr3jS{{cAoRH@|VlYvLX!2sfEDY^8a)t97NRy#41p_UKAaXPjn_HbF|`SKGBh$u2(D z1NSbEuwF3X->)v!YMw2SYu0b^lM32ZGHm0sEPIM0f>^FwM3mr$4I&eqGT?N+; zX|F&{HN2M|k(P7avGmjGP_r51FQm1u|i$AwhC=05=xjkv#6Kp!7DvFeDSWC{v9CDe%m z%jm$(@=VXF3y)!7j=rkj(w|f>*K`*?%OW3c6LTxb zi9U;R=vhhU=TN3YJ|rF<#9BLame}f)3Epaf$p!*f?&IpPo_QF-H>9$yw&-l?P*FEh zyl63f%TUv|vOXPY8RUC9D>M|QS=7Wq6TN8+>_iC-62PVmi>vrT#{A#(@IboRpCuYb z73k2$mAxum2s~_*%f;k~DD!DIMMXq3&85bX!O?~Dij#>B{ACUlbyzArM z6MTO29d3Ca3XW(v8q>C4oNgmZn{Fdwo$jKS0P|{47n46+UK0qN+fs-2s0AcK(!lPs zg+tmShRYo|ruY7?-*oe%1%`~~GotrcL5=IlrtdrYeuI?~UP@wkm?qdL_#0vGLCM^O zb!p1!@cLmUmn4xH(}hk_qp~MlkD2gHSbbq+9oB^c+XRzo-QoHN_w?#T49aXvM=o|ym@LC=kTAK2eazDRtUqP~YW$u)`DHz_|qE6u$llg**VrRv6?PNtu zPNt~e>|>tTJSNLa^zq%Yl_~89s=bORQimC)+=$eVrrTOETZwO|oktX6t9>2C*yFSY zN=6)yF?`sKz8u3>LX%zic!6w5{{ji?!X79K6V=u7VjJz*KjGR2f~#1{s9ny{COen_ zpl_BL;tD)c6{QRYT*LX0X!aEavIulS8J(V_O9_+*B{+`q3Xi{3NW_s>HGeKufF25f z1;M~6mQ`_=*T%86T)T$a`OD?h=AK>?qWR0qh6moCW9zZYmz!VTw1r+%ZrT=tV+ZGm zY*Wm9XZOo!d1JWm^3>bhV1ed9bjv5dpD4M#_Gg(yLrF(ZgD5g3=7Bh(fu}2dk8c1Bb7N#d z;weP<3QltpoD!kG#w|KvC9yl$eBU3LzCYrjG6qF1xF+tl!`fF0=?JGyQ#|K7W%C6L z%0<8Z97V#2$Adk9s+rA_qM!C1NVHr6e}{F@XMe1zg97k&XQB77?Q@zTruFwGTV;F!D#cU>`s>#lFX%Z*N@$4=m=k{lmE&)}g(- zl7M4B?!1BQfQ93btH{aj2DRZx(3%c3B)#GfHqQLr+k66~AJjD*yj0?3&w|=0=f1+- zYx$b1%Gpu_rBfNxkpeuA0`kF*P^|pnksYz2yrLkzG7L86vFU9-1+Is$8xHzN?h-QD zUeP*lYz}TVZclc7*Eb_a*-6;dEX2is&s$Y>o{55EGS>Jb@k}+P2!LD)2U+6|{{K<@ zerMbcFkekSXuk9<>i=HbvNEx7{9mG0u&TEDSD&E|xj!)h>t~*fpA!?9Q*te3yyL6+VF&$& znoG%|o>YHRE%hQ#By-jC(PFPHPXq;TyQdo#i* zHOx=^R6nd0s-={8dd^NPoeuvsP(l);)X>o`dyNH8L)I!)=&U%ad5j(AAJXO$X;ciW z%2Hj0@o|mHS{uv{Vm-|bs(WJhFH^MC*&5+LN}RmGPz<<>h>$#eXX32c^Hl&yZ`VSx z*R~gp?fN&K1ECQuP`lOE*{~?oXICw{?O6Lbmk<a`*kV9!{#T%sVmF$1GY=hL5n-x^KLwt8~9mAfpVDVC!Q6 zox)*E{gG#DV$-^v>s6QV*@MnZETla@T{DE4n*d6ZsX}ibe=Eal)n8<1Tjli6DAclD zxg-6*k{G%9tys115$B$_oyakl)1&jhkd*F@zWg62JvkT+DOB^S+#Uf|E4+mkJ3&r= z&hofwl_tF0bCI$6f3SSq5dFUe4%k(?y5C=MLmk|2->Clk^~BEg|I{?p;kC9W$ovSz?aPn03 z@=-|gnq|aZZI-J(fVJ>X6G49gB+uQAKCJZC7{XAwSsPT3|5+gNR$1UJH==%7Yjn>> zpsyZj7nHxB8S&!rDl^c!Fx9$vL*RDo&vQiMP*77_fuJ# za6c%c_+sFEF@__bnzcS^wLU1Kw)fm{Kji6sYePOCt=%ON{1gU=HZvLaF?1Qli^6cd zEpN_IXTErBzr~sW8MMR6_eJyr1kSUI3MJASKI3dmteQW6*vOP5w#kC|>AtH5{OU+% zgv8JtZCXtvB4A{B2l=DB(R5Vxxt~?IQHQn1EGt(@ftzdeZQ=AGDs*RHIqP zmp{&M0$unAaV6PYwIF8L1c<^|c`=(l#H6RY11yR?l>eGoEZ>6yK}X(zbjvH5WARO8 zy_pc^r7!jxsm93+S+&`azj$AkDbZ6RrlyL=2#+TZ5<-SC0Q~c}t46tPZpq&1?oqc6 zMLOY8e2qJ;nTk=^cvU*ClBZ)^Y=Tou#llUNmDFYmnIBJBj_`=6kOF@i(>_<@=2)qd zPTSbyptuKN%e|`8zXfsXzisN;9Lo)Dl|HXY@?#+hi4D>nx@5a|!mtGH3zIzqvg^8`bz(PV{Eb%-D}**g{dFk-j*o z)0a`lVkd~^eYy;=WvW0s%tYqHgJ!8D|DHi@cugvd5W0k+3>93*7&@jRsR}kt%fD@? zDAlx$eg-Mx&F-KKpg(j@=6HQ_Wkw;LB5?gmF!o^2vWm`4wA5?TCh|kZ@LI+J_QbC9hQ$rO&bxK@U}}#=&7U zx-{fS+!IK|L{q!c^kk^?idE;A`9p)^{P*z>?#C`7P3np9iUjMt-Lw`l$)_bLO@ETk zkKrFRBkc}A5e^wUH~%vZNKq5P*bC)j7TYsa#ZoD-nDyp1r17qh_9#h)j+6&qh{G(F zxQ`-{Q(6B-RkogP8xd=8nVYH=qC;mlbAT$WRXiCN?O0BnY0^lc4ZljWNLN%FoJ+i3 zv>AuEYAsPJp4p_%wM;$y!fLbgZXO%=(NfvfQ`$23#g&r> zFHeH9Rtv_w-4%PANg_wOYc1KBKlqU$lx9)QM-)L-#liPX;Wgf*bD8u)*JdrH1A|hf z>)!i8d6!zl#L(mAY+tnmUUVWnmU+7H`u2HkwRa0`xk<}RaXq14UPnH2E}q-_hYVvJ zMWVWf(X6q7B+>peRNTwDO(v6i=4nUeGQ#&6i2o>P9A;ftgY8xK{hdz1gDpzpdwELy5@Mc zMzf>5RgCGQ_G%GFs&YL_ngE{pK%Gi&%?VXIevXvfX7zT(X$+dD8O?1ezbm+F=embW z9;+>Mw<%nvF&0&qd-Cn^I58HFLjYkQv>6Dz8>xX`Qzn88!?n zx&liuhP*OLH#MbRn?Jnznq~Kn1IbP`0dO})3L{5~gL65k;NDW@_9Ul62yOM}4ruUiS~Cfu%$>1b)&vT{oy(1D5(ti8w*sdMDvxHKrIPFR@W>6~bDeWokD z<{U+~8*C0UF3-dj7$(QBH6YOmmvYXB-P8ytRJs&laE)(?U3dp#c|D~{VNp0B$QcQA zhjQ$T0}%xdPb0Ahr6qPu(@+QFRE#vHhQg`_@0CKq=VFqqN762SiM_-p3*sm7B95ZW zZHAs7__#-Uf3r)L?35)Os&)jkO9hMhYwnOKv+w$hxshw*XG7 z`@i}~g8=$)gg3eY>ple7kM{=stwh(42s>)q-|=rXIj_7BV^^s^eN-x&T$Q^~{ess) zh$IaO<)3mJf+D!_L)lr+7K(UR{hM^~k47k0yVyltx%PIQVWIX!kKRqM-#6^G-Epq> zKHW%vz1sCDUO^Ybawv{@A(LQIY>ngLq5zSv_Yrg{if4BzW2N|pC65a?DH#R11*$*4 zZOH?^8{Onha#2kuj2(%;F0bpbYIP1S=@qiS-HuTkIda`ES{#a}eb+P4?fdncPAxr6 zJ*$Q;uQH#hC1BoGjUpLLTT6IIn(vl@tC(8lSFLsiYX_@EJhJq>oN9(jS*IigNZQBVTOeo2jVXXr4@og%-zE6W z0cjEcR%CzD0%`7JF767jQ=z;foKUG9NIR^E0)v{>1$jZcgFE$rbyK3YR4k=-7pL7` za~Q9+g0TyU+SSHnrr!|*zyF4K!|_)?K%nst@nMO9V*Ku$tS|qrv?aK4?aYTv<~IUPtn}~NuXR#jTs3UFy6OJqYULQ^ zF88MKV%UgwsnWIL+9rze1hEM!`Lx_&=@;87@Av2+%9tlp(I}T^D}S`D^IoPG@`yL^ z$tTjW@<)>0LNV_$41qK9KlgOjSm804IX0LB?4F5*Vdi&gJjB7??94xjem+9NYbDqC zrYvfOtaqt&r#PuH24o40^&dbic`jFpN0>p%(NwlinIs!(H=CkjO~_R$F7MOS(#*4r zsy4kiFj!Y}!Tf!~rQHcZ4bPyCFB9F+daenes~^`%S0SZC`7$EV#UF-AA)J{&F4f;$ z9(^=7;Bt)PVm{nDWDVIu^@#Jn5rS^KW`?GJdLsHtht&k?qvP?u@sAmuHiE47rHVfk z+3iEzTyf!^Mls_2!We465an*)RePg1+_6o4RrkcyWPVPGa4q0Q1eGWnbG*-7#ORy3 zz40-<5~J@Q-*7GsTF2>e;1y+>Dd`gz(L%L?$u4c`&A;x54!8^sp0RyvAaB77Zcs*}D-I7WSb{gz5eBZ;va77Z1a*n3 z7+nJmi~r`i!(U;$cl$t4Bmy&$tc)0(y<__}W9Ur;Y=VF_W$RZ;3U*h_vOF3BTlOI; z!a=mPEGbhxlIbR=@O_65qzbp9r_0N4W(sJPF=Uj~BRL5ms0Pm3T`O=?Z{r>Iub;-k z0pB*7`~`WATLINQ@CdclSLTlZ^Ynclmbo;l(!h5!@z@}wdo)BQqMw&!I;-iFCyLR{ zX1at*rqqx-2j}XC)3&e44&aLVZ&x-A7sZFBydxObW_3+uZLi-8((Xix2q zW3cJKNt}F!i7=B2J4WB+>F6mfb4i}T34-o8RuTE5YZo>4<&O&FB7+;3UFwtAVAm$1 zsaUrJbA8<=n4r`UT-l(He9j`Hi2dxEbi&|gB#~$-_VjjRC#Ha>3ybS@h?DE^U+m0F zg5}xGnf9G^mL0Op3(M}Nn9IlCNC{9y*IMLie+9hxl#5~ZiTaLBfvi@Bh%gAMsob?N zB09f{syj8mDrX)vpcQgN>K>miqO*wl59T=`7)@hRluYc^(cc&n?`O7rLTctj;5Olw zauxKAIA7uUOe=%++H$Q03uQY8o2#1W$@~J@P#Cmlh)A_tltR{oK8@igE2f$1;&Jg+ zkr?mxV5BDvP^3>HtzpdfFl!r_3{vPPh{HYLjlNru08n`XF=}k>nqHD| z9@txR5sHgqq~3fVk=jFqCNzFvWjP*I3ug1^a&zUhWFNR>!t zv4POfVB$Rws^d!T%U=Ex)6@Xe|EV0{==3>fStUM`)1)f;i8Hg5efocdB`$oQ>aNQ% zb|-cEbEixucUFWAzCkMexcVtS@#&=9wc*f(Pl+3OrWR?5Z);<)+PV{(D)y&M!)S@2jg8cpsw7;I#TprjMw4iqtL4R>`@4M|AKZPDUx6CAV86wZAob6{o z&$a7Z&&T^a${)Hbk=f8&8wn#isd2~;Ty=Y<02qG#2$CR{$}3r%;GUQ8onHN{GuS?j=QeyT{1fp~j^iH2iGEmhj7b1p+o49e1U5=vI{{G!zC zjUY9hpSge2YI=Rt4b=J%0oxBU)7oR@5Z)gxsuL3e?Mz$J=Gq z%*4rqBGe|y9H?u16J}b8+e@9|x(osjc^y{ogO;H9leQoueCFu0)R)+&tW#W6;0+W+ zVc%)=1`RPR?xa_?8vuoDg-Vu13jI#BdWxtS$SsO_Iu!7fhUXlXA=RlWDh`2@>#+D3 zU~Dj<>{fJ3`0QKq8IP>=?QdBqkVK-38)&vhA|jA( z@*`qzn8;UUQ7js_@UTrVNOUUOm&%|UVfht7)cndfZ4nIi+Wj%5NioW9X|ya=d(!NS z9rtw#En2X$@o_;lVgq_Q>O(e8?K?R4a(v|xHRpnV4DYmD2~Xj41YaYCi#|5nb2*LBfhr&6O=cXk*^%%8vdZ*i7^MRPAqM;0*N%kmgfoP z{yp?}s(Xvi;XWCG!RcME-4E90LO=$2c9vECdg4F&8!Tm`5pk{63R2+g67ni{dvJBC z)@=gE8n;}F9PiLloE2^Fye#edOFHTZXu8BtbVuHqU*tD8rrdIV70JJ}KJK;dM-bKS zy0?xVni`C^8G;VwhMYU}zHESG1>y}idd3sylrhn8*dRplDXJKgXz6%b-=d3Y`u%9n zg<9H}yk9Nr-_Og$9_dA&C8zCYaHZ4GFxlDy+Lo>uAhg@Ox-~St%SDy(G9SYhx2xB3 zN6#yY4?;6vj#jU-6WfClm?w|YdT6*fo zfq`E(+b-gvFGk5X=~Wj%=oz_sjWTUi$mhuvU<^pr>pWxEOgoU@VS|wLqm)yMK7i^` zzBd+SUEHzpGFZ6W9|(7^jB!4vk3} z%?XO);B@QAvYo#qa8_7w@Qw~lqCU!`h}{sj@=i>e^i8#!J6;dz;*@^Jux>~){cv%B z=DGIddi=k_X@<{Tce z65h16lH(jN&*|f=d8e1#5Xm^TVT*bS0pz)~aFc^Wf&eM>HCv*N$f>sbK-0R>>$ zhGf?3f;IgLjC_9EJE0qvaHMy{^W=SZ<-{&>7Zy^JL zzv4t=v02oMoA!N2$Tj0YIEtkc;2$w~h;EP3E*$9H+g$LX=cmxp_#rLF36brmF5c3- zji#9U$4!u@rNqHePzd|5Qn+Jj>UDX2zeI&GB5_mds&@U+*-Wq-J`u$b!n9xq2IHC+ zA0X|R4hlV#B{v#GkPj-7$NboA_G{}HGNJon%UQ15=u`Vc-YSkSL`U_)r`Q<+&V`qh zOyl$M)0?$72wuKwUPb4@4_mXwBl*v%eqmXKP1g9;sl>I|eAF^CAFvjcO{tiwpI{}a z{G_fM0*Mq{U|bHKemn7YCVP%IKlE5+Ke@gLRm<<7`| zjRPdXCJm#fjS>L~rq1cc5GtBTuBFB?DZt?AuLK|C_;>6E`+asYyulp52KTdI+6aC# z0eC;K|8pkz4>)?N{rg1thU4Y;1>yg$Rr&wn_#d;3GM3IR{~MLI_KS>&|B>ex>b4Gs zgM$zx*v7m8e@-mhO+_8}16c`NA}e$+Co6rKgjD&m@Jc%XJQE}Wp)X7*yUDI^ja&gW z@5bkITfqF}EskLqqnMD3c_C3;XeSp(qNsvNUqBIZty~=}~e%%t}t~OM=0nygWJgu-ItBR(xE#P0Ma0 zjZco(@&&%9->VUNqfcSA?g7V3q}Ze57svdJ%UeNIC{0dY3;4x^8ebhQz z{iM_HA3k1YW6aruw5A#>!j0^!_I}{nuhE4;7~)*ImA(uoQ&%UkoNnx4_d{L3ozpHw zm3*P@N!ZK6YqXm$pTp*q@O3_9HIUMr_fl}r4TuQpjJVT&`%}~&(oP8cH(^bRV4fxR zH@cX9{!daP{|myDTT`eRLn>t9$d3*Kky~%Ff z_4j#&&c`WBv=AW&MblNXkTgk-Rf*7;~sY{e}8K#aX_GNJL~NZM4CG zmsQ{3vE6QanrbM2R)n_NVJxFjn1^@|ck|QGdfu_j#dw2KHTaq*7H}4Nby1XkRQRva zGD}ZX2H7GT@tLM{HG#t9bBBzGLUes`7N^!wbHFHkXiRsr4sw^)@e5?|bre#V4eUKg zZxwUbXf6Xa__)wAs)>bzBAAEzM%;pmn`{u9MMwD`P5<|bdI%&ew}aX zk-KN3AG5@*R&*;`bPXHFlbO&wX1+$XpI3Wrs9b6tBTFitjnzgPDkE76#PDgORcpYq zM8lacHR97k#Z_|zw}gN|`@mF~kA$O+C6=}LfN763t5$Y|9aYWllN7q~*NLgGh4!^O z=%fS!v?>d%bgia!k&-RF{ zENcd?lG@id97n5adS3B`YL8cdwT{jAn;VcqC`RF9J-1c(3DP0&Kzz;CFoL}uMa^letBS?GE)okW^W=M2IdMDtZK;H&xzU3%iZM9 zJ0G1vKtCV{W#b%gLCoj^bTWM7J~W?h8ot7Je%;#{%jE7(bT|3T*y*wQBh2+j4~m`# zAS?lGQ3(7N!zT%+e=%BV)c-&cG$(vEqPQSEQTg1t`F%w3UrV|=675~fH#_fy_dhY1 z`rixge^v4vbtoSd0Mgg&=63h=W?Hb#S|4((!>|b$X|QkvQVJyIv>-(PP!NAonu%jm z*QFhzmnKb1&GNC$=X2j62>LwLt3^LQ)^*xGD3+Lshr%E=Z}EX4+8bLrXMTT_IIGHj zexx|tDJP}Pt|CwuPV{M#2n&AlHXSyu%3~nv#u73-KbC@x+)v+3AbuUe^d%t_`dy>l zpLkII9*F8kjx3P2T6PbF;Vmiv?OnR1g)jGz8_Ij$SAS`V+zr3A2LK?@dhZXOvC+dT zpZ7!w^ac=2UVYX%$GY_ z4jrwQS}e)1ibb0&$W$ha-$DyJb7l~~6q+%cx(y@-Wyg-F@8%J4ujH7*sp6GWpP<6g)iu`~?Q@cjQ+IfP9U3Vt&d|b$ z63Hy2VriHTug6P~ZOk7XRd7AlX7PHzo`5%0TK^G1GL`+ir&=qrdA^=J880X!D8&^3 zyD~5(WE?#kEEp0GZ{QB#N|il!Yibf0#$Rp(8`&keVOBCr^;n3lgyrwW7`;lf=|@Y! z$PG7NY}?v!@f+|o&Ia7ThuRya`zK;10v%YLt9qP@t~SfcXbbU-rY5!X5>wdKSjsXa z#M@TPZDw^G*b;I*y^tF|J;WG&V=&!nXzTMgQsCLPJKk3A)?iH*(|H&G)##j1)m&>NHinJACB;`(VJv^59t*v4P}FEk;)n9<^qqlYe*Pn{}`qm$)wYfW5b^tOUg_g z$)~O%%_lO^S(b57oVUda!#t(vr&45fp^~=snP-miX&6k)a%}F|ij-MrwRN96Yj}+X~Y=)9G5N9Q#g({D3dkhm0Q%xB^}9GOl??gr`##;TCGTm5SKZ@@ADX)8?&x{G@glZY&N* zsmX*cNVL%tJot8~xH=|uS*)!`2ewMC{@P#|S$EobD~a9`N4PQ8uq2u)C$hxfwY1Ii zcCl*WQ~b*Rf|+FG^qRSwOAB+t8o80E?rs9TCLL?oD-`vynH|5qMf-X0x1jG{1L0rHT5M?!x#()y%9-*$RzX zT$QJ6%)iiQ9#;GE=+lN6Q&m@tHV0NwouFf=%FRieCXBj8ZB1`{@ID)lCnrecC@dR; z+jIE;A@!Dx1%C#Jr31>;j$uusxX`|b7yfy0Qrqkh$>w zj=l_k9wnm2dqPD=kcCYJDpULbWFf`cMd_MJ;rKsb0ZyNsa*H`|Wo=oBKgiAQDg4nO zYbb+>*>L~pV?+8;D|OYFcikW52If^2PuA}+IOb;MP++)Uj6W`Wxp6t^gw{}~8~J&W zoixo%68e+z9_9v)Qud1O9bh3s!wq6!2kh`i2MVIzHHVia{oIG|_^C)6q#v5dhwcIe;xAjAB-Rb-xx%-3jj~@z^xifClA6YTV4PKCk`XcxDZYP48^xav zA&3Pz0JszkSc}DjACfvos_j--H(-x7Qxt$l;7{ z)Q&5*ULL3v`V-!<4>uGc4)}(Go3c9@Im9f!uKMoGLe`ha!_sEhgpy=h-Pa3K63yRJ zV1ofIgkItvZEj;KaNPb574(Igbc;&k&24RNY09nt6sM)9R4nP7{E?d?Y4WT_5b7Ow z(G2RMB439y5WNx-Hiv7~i$He$d>3Lo&4Mt9qs1AX0Ye~YfKke9xuTc6J6@~d0TMto zg+D|~KC>RxA)MYOSqc-zsDI3ZmZ|q~TO)pr+tQtT1?o4xkq6-8ojtju`K#G$X8s<^ zaBHs^fT1w`#P%IJGCawN;D5Aq&s&zHUcDV+)5UVKGP$~k(oK_MzsJ@sA2P3XD=8;* zFk`)Fe)cz$OQWfAn5#FmF-&0|*$H8QtU}bWrWr%7(jCD-ZO&JK8tRvV>WwC&F*w>) zLB2U=!6T0@sr7R3ws>w@5Y=Bet91~S4Ekqq-e|476D_Vlh^x<#K@F8UrJhwe7H2>M z0^4&?)jxWf89y{8L+7^D69QN-go5D~9h|;1LHplLOFUDcSAMi=LyQe(;I3DKsvhT| z4aGYc4;^9ktfx2wjXBs5&G~6Ly}Lq{kjD_s5G-q-oy{6MzJ3tw*lOI zqIx>Q0S+gNn?i+rVj>+lWCxPovEFfCfj?6A5M*QZNib3rq5OyC01O*k?>So2 zyZMtZ_ZO`AIIl(4BsnrabA+@lA#96&ZuCD?c>u7vqiV~V&VFi1aVW!VOVzOcw(ahE z?Cyng2`3{clYJmv^q0eXpuO+@jWNG_itLrdP9u^NDW@yNlp#gsO2bkvo*~^MMP{pL zb;ewhOFTgxNnL}g&c2{VCgaxP`y&Z(%q>>c)rXw@d`9Pko)_eC;DZqu(|@$GQy2FL(+157BHfr93~*07^Fm&7}pfn$kFvvGP>)OWKh|-R^U4 zP^EUKjadq!&8BVNtV3GNk*G3g%d;EV8Vi`HLdB%PDXTLdo^FiCfz;UCI7mKG5vD z>%HrK{9m=p0rz1~L^rv|NFJN7GWTHxS8caj-7IX{V7dt<{j=ClS~T3&?HtmBzL-<{ zLKC)j^cd8bjU$HDO#>stzjg!JOS{AJP8`A7w+;rs{#(CAigKlm{F~}GLHM7DJroST z#mWEK#Z%XI$5BW76#FZYO5t`%UJxT&6;GaOI_hLeWa}KjDQQhHQz9uLu>oRyrje_W zt7s-BH&F91kdrE8*VEFr3hDqTj>c;Z0^cG2;Oi6jOsEJg_Rq{!hw z0}L&QriVh7DOB@}VaW5z2$!3F_;wugKf+*)U!r@l2hBx~fSCLkgD8bZbVTGMsu zmRULJZ@rtCu(BC>6%m&mPe-#NBeOE~)wH+d_I9cy!_Wv-d+!Ql)jKsF;ec(?b~4CZT6sPP1^j?Gi4jQU{e&vRIJ?ke)_ zW_uD>*UkwZ>gsNp+=`8$pASZ_ z3X>EC)rNe@Lq(KEA)n6IVh}9XysQORfrgj!4PZR3J{Y^Ji0fwJKrlRkp-FDPU@*n* z!o$(_YC~t;p@hPWS+(fJ`hE^BdyS6fIV*rzWKvRO^AHRmoXn*=l4hZMq*%_x7NF&; zC#1`&D?ciK`#mQ=cyTZ_JB+WK31xYQz0!ePHI%$h&dbA8fZXLy7HV2Y=+PUWKr_vR z*Hy1Pn4?+~nnW{0IVqiPH=uYDRh?5EtA79oNB1{5w#p*|%14@Lfw8%Bt38JVbRr!K ztulq=^Ia;F!?imE0*{RL{DqDF;sp+Vj-_F;u_rj8JoypPvPwo`b5kSoppDxv%-ux? zrEq8X#x;AGApOMENp$I>LGdV6y*QNTTq-9YwJ5oOB6kBtY0Rn|{*h@?X=bN;zcX@c zH|w%@80O@f`KL1Xhd(~lIj}f^K`JL0LtJ*{HBCI3STNzV1p~%@Wux z>D0q*rL~QPG`YRDRY^)gkdKvwwE{%{aGu5OfW-MF=KammxLDj=WTloG6CAFl=W%ke z{R+I$j^I!0J5i^iuX!&O_jVd^4$_M;D3h+U>#Dy^ciGvEIhNNe)gu*8<;F0A1L8sL zA;?QRT^oKN97gRE{_-oSMGC$zJWUhRoX5e?d|q;dTS^#sKg)6tFVXP74xwUIuvu zxhkwxh3!#|_4~oAwD6jtK)@t3dE@<;nxCgPfbBFtzpXi-MepwF?yN9iTY%W@GbmiHY1-L_Xqw@<@@YTv$~Yn}2JFMQ0F}Tnsj{*x3E*arDGkNB_QpR3F21h-eH>w`@Y_XgVW ztR{LV0o0YJSsvpnK_+GfLQsMMBfDx4@UQzkEB{65L6pZ3|HOu^}z_)oq@H3fekS~HZdH(TB=A7Z(e?V zMj(We;tz7SGQ_81ct%VU1$cfc`ao^o@@>t=T?BcAMEGPR_@!97hhPD*a}U~XOuJ)y z_u$^)?2#P<(#ZJ-1^G$AW{twt(7Yku~J2z7&7gAY62T?m0C(r-f zdsTM7M{H0(?Hb2hHvwS-He{BqCNSvW{e^UNYKux`e+IxH zx^KZbobI*$aY9*cmz-?M1Y`Y}wsSzV9b-C-AYq|q-e^O;42A6k z#@8-|s(GlLPO+J(M-@PMXYk|t(Yk@$N3gqd(`NcnfkJ%)0~Ac#fKhG0?I_YyK4R-b zCc$*r!bo6;g(y` zj3-r1RfBZm?njii>`r5_Rpf31Bl-Tr9EsfE}>G=2+{n7GQ^4$C=Bk7>j z3zaQaoF(tz@Ly+kqj3@}|I6_anAY&ICRU)TYkhj#{1GR_)04 z!QF7k-$&T7`XI;fzeHUBI*SvOE`%vd*u!VCH>emdgZ^0tKOLGj*3B(4Z%fT{>1=@0 ztRo~)H-t&h6m83M>XCINX#}vr9>DMG-(vH{xEwhAVI~pGp@pq8Zl2`dHl3wDeo*Eo z0k)ngw|&B@w~nUBqEgm2eCll6>*S%VVleDYxOeRI?bEO77gGqI)GUA%=k?_azk%`K z6FHNmZ3lm*<5uW1IpBo$1oU^!T@L43he1nqcM3_Ph_f4Pjf}^7p9ZI{Qd*pv!%}Tb z=;C^S-%pq!m)RPWmGmKaM~Dc?>JSALs)X_%?Fdu}m0#eCEw*1|{DcR%+5)ebwKMLo{?Gq* zXzt-=s7w5|Y)ts3!vEjav5KLSxv7i1^M9^mMcF76K}6pi8Ri_!ZC95Mx78Fr8{T3= zU@0UrYDoS7Z9u;=*&_LsTxVKtZp7cZm_iW9wpN4{_75q(Hb{-XX>6uQ|o{l1QqaXxz zoYP0CN*(1?*i5bk!P93rFXCxEOKD*xS?kkVow)s3u!^8t>B3%2j-xDxYf9dES*f1M zeezsB{dGZ<^HiQKYIxenvEBHDqUkgbc{RNB-J`2c1^kQTk98deqf2Pq_pi?%LA@M3 z0xKn6MpYqCs4kzJw_-`uw|k!g^8NIr{uaL2h>v7g-ndk)fwmVr7~!*351u1Wk?((C zqI-5B)_xDD?IF|GW#tiR0a^hZtc_+1GEI~b3)Lyj3)MNzi?nhF4~tmKab+rPtCesz zHMh|8jaN=`PIf3c`u~+1V=l~|A%q73DgWli82(@C_5Y^Fd<~M_eZPEe$et4^x=Fz~ zcf7h$2aq5|A+OK^iGJfqP$K_?X>k?5mUMFHkiMbsc5$mh+ugRQVJKN#;bv=bwmu^) zm_y$}U7EJz<}t5Y?pd>2o^ey=P^WwI@t<{0W7Y8h#+^L>`|#b}&9(1#yt4$EEanTA z%Z4}Rm^nS4P zNuAk+FZ%hFKj{9$gFV{v+YkS48|0HJ8jG`N@EP@%OP7ye=y@>w@Rwls-e2}X1R#kh za2E7EYUT^OulMZz5JYe3wFKmoFZ>I#2%q61Di0jENT>(3CorfHkViFEW!N411-;ih zXfc!_^^V(HKEwbN0DZ5U>4n}C^nLaJxAzF*hd09gE*8e&!Z~Xku#*E72|g^W0py;F zkbn2mWjco?f;vSk?n8!_;-pLwYzS0BON3%p43iYhz)e2SUjjFg`fUZ#j~Ag6r`t}& zP_M;;#j~0ycXZF**8e2(H6lagF0pqZkLm^CyxG{18!F;oShZ?LY0`A&BTTGpL5X|b zb`Q4+>D1Gg*VLsf**_4~Z`am!m7R0e_)4hZfO(3j(sm_#DbHGrl93x4D@31iw(pzb z+)I-pX@(F_w@wFX%2MLXX^+u})m7K~TP*0K!=^W9(X?Eji%Wt?D*P98h0CB^S5^Ep zlH>1?^LkI+1Q|fKsD5GIEW|y-h;J7tacCr4g-qof>Fo;LjwD@+Nm8qUkv6rlJ>Kc2 z@rfJhQ?V^s-j!6bJGm3pc30S6A^XTn2COh8;$8+zcOEO-akD37N+no#z@o^c00sP?L(C_72N}RorXm9 z!Ekx*XIAJ<;gHL~vTH9KGN2?9*FD;aR)5=$Pff5jMMtK5fl$7chrZW?*UH#O4@q(c zxMeF!@Nn!33$zHjh)${SIg4>*;`Zy~w{V9;wF!~AY)gtI(I{!TpR(*y~mEwz!;?9eo;&PsLxqh1irb+W~z^d)bHe62hnBB>;KM1R}k8;=!tx z40LndLqgz!I$BkR40!>;6z=2NzNxrdUXJAUb-m6U+{s780|*_)jz|6EHA8VD*0i3; z-vml5{izJVkD}^q&x2A9lS?ohIDrBY=Jo62+7Jv^VRgI1Lleprlj1oWu*#2OprC$l z2Dy17T~CEe;^%6%oH;`IPxP2HffWSAM$)uQw)th#lY5v{27P)BHwZ(Ip3aUFLj4eK zcvI*eH=<=x7rgZVowS;fq8hOP2IVV_(@C$l*82?~_R>o+Qz$*F#JGzK5SY~1ty30|}{zw}6 zw0}OSWKE_sXnYK24AQj&c<4J3U9=GsI+@OdN!%9Wyczb)HsqGi5GDa+>XSk+H-m2w z_w+d+w3?)@HX!s^pQ*H|m?*=h;Jswh#eTeV96ZSe+r*3Nw2|aZZv2_!=!IO)Bk=Nh{2c@Rb0})Ac(yKe)gOKvOifK?T`lF%jW+zf){2 zcscq-)|ozyv-thj5nXC^vMQ)$vq?*(`+`Prst(Pn<_iq3m81?PdV(WLh?1`HxK@U> zBnqC~N(Hd8e8HljEMkGF$hs)CTQw7`aVHUd-C$g7-DIB$-YICyLXrl*L{u9YYZ<90 zxJROyA*-nedJiVHVx`Kz8M?^mWEDL)8;g53u2%3|u%D@?TbbFJNu!GI&QQfB31z$+ zCr{1-+9efT*-}c44BC?|Sj58`d0lvn6GMA8dIadI@dmYdmdg$cfu0l;pc5C(DJco3 zIZ#)wtH{V&a@&A;yhN&U^CkUruB3!ZT)|z^sC1d}3*NQH%n5&Gg^qr6SBLfsee%o1 zsy4+ozQJl>JooYNRsA)!{MyNoim^!&IA!rHWX?b{9?a3EJ!P|m%abXza-_bzJ#C6x zK858g=Q&QQIyHHgC)H!3i**YlFSAQ9vGxmwC!4>vk|V+1T#QW{?n!6`v;^^tcC^Cu z7W-nRGyPtP;-RJHDIno1%IO^UWR=R+-0MO8PcM{>rm&r#4g23EEq2=XrA%_l$*qz` zI63EGf%s1m`u>&h#LkF~bz^$&2Atnyyc=eYfO)yeDVx@*DZk07?dz?>nVxIDE;^PQ z=VwcIv&~^oW|1z=*fz&!QIC!vtwW*v5#x>?uD54iPZRj;N(az zHJJmwegyn!LVdDcx?hExsF-2FFoiVSiruA9GW_!Rb%Xj!m)!$@hqZJ)_2fmIi&jN2 zaEWBArfjy?1$p3IKH$71U=JyhQ$`P}`vD3!lTK72FqGr-LGN4(e&bYf=2j9hEMXD5 zk-6|vRfjF~;J1|isM7@h@^fEVfRkHnEG_&?m3G9sC^$OBBRnCDCno-8#4yba#SpcU zm_2ENpdW+1thZFvj|Ey?6iPkB(P8)zpW24Dmds^>seK5h_hqF2QLhMRzIJQ4WqVk) zCfBL;RC?$Fr^vejF`in387j&2j`Dq(?0xwKBuEwLU(Z{&qM>J=xT<-0`;RDX6(Ma@ zl?{D$d8p+Ux&5UGaG+)TWblF?bW?48#*m_*c3MJ~X=Ilv`|t>qaV#J_iIn z+*u#|Ro0m2qT-5f-&j#CbF#notKYIJcsmGtCRa73#=o1cPM&@6N!eZOJHt@c`lRP)(R3QiI%R z)lytfLy4BiIToINvAj3qJjy+7i89?|_1wDaSehmuVax+?8FI2Eozj|7b)`^l#W01{ zxTbm(-BK{jrq6CY*scQP#-+_>xa`RGCGc{9B(YEOY(TvPXI6qC zHw9HMzQ;rIX&+7U(De)@AzEgSSNsWB_Qu{J2mNk|8!zkhyLE!6MEE*h`$%qQM|5m3 z*dq=%`PuQ=?={>%g|2*t@!E9QxOHGeE zM1h?It>uq+YwygeB5BX7N?HgL*oPq~*$I;0U*z=`;|7A@oAmYm$pT{W4o$ouHyxM* z%cg(~O?STVc@&|mOa%IbI+*tL$FO(RiRdp89dHV}IUechK}$PQt!QzCq*yvZ0*9LE zeEohtlJ>xpWKnB(zSk3huB@osquRiGY`RKe3w@po$XXyfoKXV)6#l>pOM2;RAmF^T zUEn}pD3-RqxW-Bj-5-0O*0%08xNFt3zeEVDKX$~fck7!+-CnF51+k)WJ0#O&c6 zTG1JKm>ZRLEmNWegl@zrWlk7X?atWQFs=*}#8y~{Oq4j(3B}Rji?n*8uAOPlaWNvr zvkgl}SS`PyjpQr2>N70XJG$=cW|7i!GcwDf%q}@EpW0NXk}$DW@QtGue%RP1EYeRc zph1`So0}(EykGS49dRb0Y>l!mU)3+v_KtdosE$d=e@5bi z%q~rzNlSm!8vy4cF>`2VWn4VjF{(N#<`yy<6Qkt__Qn|#I-koHjZ({})(K~~Hum0? z>^USa6LAkNp3+_)B{25)wsHlzM2$brFC_joL^+riLEIBo6e>koLiaZ9z4a#&0=6 ze4Q=bxPm^!7S=2rcwuVmjgV+F%MQ_8M;T=XQ`W)pXsns7&S8qz$3jJy$Wo>$#6xcV z1gS7<8eR5Oxcg8hKxBg0L-XACq><&CjPRK6J*+H>SuP7{lW359nmT$rUm4x0%VH{< zb0&Y?x~St5eOC6cQAC01$Z^xwdh=+0E(ffg{Ha#OkmP}i?T=VBt(p6al4t}6N=VVq z(Ds==+E9-O9^}LVz7*YsmFDPLtdQvLqz4i%-7eRt0@q0zMXzGMni|CCSgBymQF?3$ zsDv@wiDp|gqHG~FIq%B4RF%Z)7y#QOu<*B+*77_?I!hJ!`{9$gPg7~?3A^wKdfqmM zq_=jhl8ZW?q!1mr!m|pn4qYzsc1d=U7T7I*?vaz2)i6z#TZCPS^pXzXXLkAMYQ)i2 z?962gIdYoZDR^@%rGmDaInEqpplg2$&HYnTC5)S{nd9*#NaSSaiJYYetsQiA?t~0g z5?EoAc>mSp@5@oE1jw2xlrY!1E|!v2psq!AovvlAn94Ne8J$HJeY1PcvQ=oWDnyB5 zLdBAMU$s+h!0|THP-=kH9hSQ^I<0_W*P}mwt;piC>ln%`lRf!eVWU}kb=#evsOE?o zM4dYdg+}2hH5{%X1`LdB!i+K$4FOdij^ZpE7_fqEjYR%w?4Xj|PM@!)Y2rMT+r1 z$Y+SF7WfUJ|U+mt!rRIy+B*> zlFv6}|1uiDA&m)_=nbr|Nta?Z!nwht@oytVQ*RC7JJ_K`)C@S%YlwLMWQj_eLn0=V z+`hWF3kR;_SJ!u_dj6^)wj)En7<25Ae}(WXO&)SaiifMQ3CPj&gPBZ)8T)5(W1SGl zLcRWAn}Hy^>I#xCD#(~4mX=<{^vT%4|IU~cSbKTP8$eX<%~&Y!_RXD+(?JT7k=*PJk_@vhbMz%YIL;Gx6NU(oKmSyn4z_vSLJ>2@LM@o34<(yZ z9-5K}g$@Wle^pC}4#^K|=9Ng)+>#~3TYakTTaJ|>-|>|&-5B~vxrC4mejFLR(7$HN zEPhek5r)Qu|G{Jh!?EZfv4c={2WgpbUew+7$P9!NQ;rHjGDT``q;#w2bZY|l$_V5a z6A-M%qR?zK`h9=we+bJH=$Kk*AaK@{_pmPSb=l?nL}XHu6Xil7r9^s- zyexI_-$)q>(aO&Mkk|D?fq>Bc&+G1gw)oVvl{dvuKUXkKR6wBs$ce0q$cdOZ4%!Q; z+LA#5q2Q2Ep(|%(x|c0;F16mxP@V8P>A?8I5R zHkwX+PW*~{zg{0XK#J;Jb%soM=nbUk7P0wb48_Dz+t_^22XipZj3q8yILeIiVa~6d z@!T8Ag$Masw$w+-;3l~{nXm>UHwem2RR@LfK0Jz3*@jc+>uU{#2QgsH)o6@lJ)8>- zBqy72#|>zusHiQox@sM;T&Q&9k65<0&D#GSsYFug9d{&3c*YucQPKA-b#A53)MmF0 z$HwoV3ai}V_0RP*5BHu>Wlb7cO;>3&O1RrDN-e_*OZ!*^X)Ma+YILR2QmIw)WECdv zXSFh19<}%M)1-2*Mkv;qBq$2+yLp(H=%H>c6{r`>JBPF#WG&(d*v2sn9=>+^rycC~ zov)bp+@^Z}K$aJ+Jx{1?O{||R9B?4fA-uXw#*^&tytq%W5x@R}in%Ei%g9=P68peB zJ8?j1OI@pUIYX5(ZWhGi!TcIrSjV+2B}c14y^#|JTSV>f^QYr>pQ;Xv!2$GOi-KsA z>g3FIyj#o zdp2ICTRckWtTF7d3NnO9rQPwu%o=oP>gSIOCDocUE^<*$d#_~Xi9eS4e+mPT8(|N> zIMk`FQUgds;cNn|p3RaZV2kWeiVqrVra8n1mP1AJ+=@ploX0m?3vX8l=$Idd!Uq2F z~&wI4;;lIrBT2 zYhZ7~=3SCiay;>b$F@Uf(~#+mBCK;fY`S;`BkG{dWQhz&ToH_7%xylwfB#g)=IM{57Dp~Uv%>Q8}{==AIf#>Vw?3;b+`(~0Q{|5!j-q_UHS;W-Y#mU~&)am=Y_+LLr z+B(?$uVPk{v}?D>h&m$Brr8{cNhg~6!$pcFa6#mN8Z_5Hr#{(kkD0Hm{>CC(b3x?L|Ms)cv! zc5YxA+D^58Mq#lbySNBL2!|{VYmGk0`aq=38@4AvwGq+fx6G{b|1YYW9H>!zfb z^%wKO8N9mW4uc3qn3+aq>jpQk6xMqUElOpcQw_wl7Z-{An|^KcW@DxaDi7CnA-b8z z-*h>14gz4PQz0>sdYmh*tfuqk_18>2drey?a47m{wE9tN0*rvI+1I0e&lrCh+U`xG zpDgs#e+{bt1krG!$*~=ere7R<11md1xG2%aCa#2MGtgySr_=v;gdTC38q4m_Q-yc| zQ>*3r-wkp-?r!*VkeQb_QvE$B$zUhoGv?L}7K?b1&*QD)?79p1`GOM@mc%g(+J|Bd zu#+&VYXWV)`S?Bo_fYu06Z%Z||^EC8_Qig4sbDjO?Tq3iT z@=Redy>nXv7PU3tB#)KTn!}0Hh5n)Eu1F=j{}oSnbp^lRzc;^DWDpS6|7Se?Cv?=` z{J%3wzU15nZP>wxh(N(0e*BbSCxU57kxEtvfg)Fw#KtKeHe?y6w=p}ov>_x!Q>5kB zDp{tUmugvAL)ZS@l)oe%aZtoiQ}gt3UH5^q;Ws;FvJNNxF(==Yx5e_j<2=K6;yr78 zyzSrfPW^}cog}(qt?VF*`Wmtb@@)`uZ-(*s;7?@NfP!N_c$H%t>@U-H@lb{ePSS@R z#A}$O9fqV|LN88`nU`!3~JJ@r!w=<3&V1%4+TRDwwVwo#49zEJQv$(dJC&6YZOYcU)M1m0_Rjip0!z zRe^lKz4Y{#ZeCygP=YZBofWyU#c`$XKNzafA&zv+%v>c0&5>!SDmxb1Oe85<=Eb<1 z*zA`p0sX~4YL;2yy2vWZl*FV2$MZ+YX3=bU9*Fod-H^vE+K`-SyEFw;b~ZP$gixD_-#H9u+CjHZvi;}RI(CD%|ma^nAethd^r?Cxw?o*g9 z$f*?u6Kqf{`_(Fl;O;O<|GN;ucE{^z43j z%3MVA$BnnrX%Aw(D+p8QB@{^aKa7(}4{}$p&PB>%*NSI_x-~OtP~=n>fN{Jm$Tn^r zse;22{>iv(RT<-VKjA3dNWIqx@6jdUy>SH4_Kjy z0UdN97o7taNroJzU7SZTJ13^KQC02{nW}`w+CdSmq)?!m3#){-qoibu*_Kn&^y@Qc zkh;pbZKJI%+o1D4ctPFGP``iF>c>vLbc{MMWmcR0M$<|h}W>!bDcBq*mNbAh#-pb8mNMo=073a_Ws7uFt9x7kuDv{mqeEe-zx9s^R~b7`)rx=VV+)&m zn1a@eAhYwO?-`>v9W$h#?>CDfw^@PIem#E}!J$;JtQ5y*W35=@tKg=C4Po$bORe8d z*Zib#ho(7$XC1+blM9owALH4L$vW(bz~2-iYhHNsu8*Ea)O-TW(IlCs2T+22+Am|e z!z-OJiRZ-(kjlCEL@rUlBj%>Apd3hKNXJ~U?@!m?vq%I3IU>;=ZTcxQc~VUrULy@$ zZ*k8ngRquzhlm4A|3Ajw`Ma_(+S0CyZL?zAPAayoif!8`HcxD)V%xTD^Teqnm9K91 z?a}vszw{kr@4sNJvG;n{`^-7(p(jbP)5K@d9O0~sl*R+XkjISaN8vgcTp5I__=Poo z;f>l6I1JmKZN=^Jhf1F_7^$MgC7N)VV=V z0!1_w$wH3<95e3=fou&m#fhiq4D(57mnw$yY?d-Vp>ZiHF~B1c%B7KLq6b z;`gYD1{XhKh=yU}_F=IfV`JFBPC|OVy}ai$naRC8G(bGUzShnT1gK*DEy|{-3+aTb zWk1)4C@hAvs^98kX=RKcQ{5W2*b3o@?-$ZCqR;5L6LFUHrY~@mR(#hc!S(fqpcVa~ z1%l$z-XGaw4@Y_NM$@|_NH8^-q5Hp}(!IlHPU`!d-uxwbde^I%M;g*dMrl?PfJcW$ zJtX(0Msv+yE!EP?3NQGfr7Y07`h>#^#643__9tGItI zYV`k;`O5Jh@%f*mXRMCTFSTXhmme1!Fl#(4K^TlIYLF~J4y_PO5D*SPA;$x|mqLi* z1#XdpCj*_#!M^Vn3j0;xLid0$eU+laU@0_x%a2%~XmiZvZ}KY^vKgmw z7vz#p`Z0 zt(+X423Ivr%g|`rSuUP=91Jo})FvU;G4qUMPv6LDS?^ADuhlP6Z=ch^r_*-@;w#s0 zAn6PW=u|E6rmj>ik(8Ow@Zn+vlucI1?%AOf(AhGiN2SrJZIV-y!w_`$Bf#|$Fz~^)lL9M_pZ<{1i;Xxk`0OgC z$oboFab(e2Pf-l|P{cq54FMW0QtQXMV#W?u>3Kopo`%modd5Os6SXY3@Ra$9qbak5!+#>A?J>cI-E+v8L=oS4euqWM`x zN^>-a#b{5^LU^)b#G*{tILFe^F4cW%o9!blzFOyPV`5AqY9?$??Swws zQ1%Q^Z#@Ts_hH6Cc_V=HnRJoNssYW34)bS_JoYE*^y|fceG%VQXNr4rl zm-K`L*~;3iJT?s!tlasd;8+S&OmS@c;`P)a#To-`!itIj2q**93_=jx0irD1eYJ%` z&>mAZQbdSn($W4MRyPg7%#O1!|Mhiba|dJl5BPx%@-jt1NR}ow{8zvlGPifhh@N@i!G`r9AH^LIS5%6Rv}mr)uUZNd4zS zL)x;9PG;6hGyQ{)?mMaS`Ud`LE#VTnv;*tKaozI-#fiMj0it-96;hY;;T`M%yYM&g zae_h)f|YkLBTi+N){rPfRJL1uhkzgZv0}+P_U=gQVy~N%xaSy2-wP_}c+UuNOhY3x zh!CFaAMiNDy1D#XJ&T-bi=T*YSCkt5X>V4$Rf0UhrB7P2lH*5y<73JghdxnR9Yz)H z&>c&4bLpE!NC==;@6>$8=pr#^po}Q&1l0|7Y5&XE<-&u-$AL_sPnkjs?#awV+K z4%yw5?^C^20A4`B0FQdZ!I$Ak!9D|Q{VFFYg|-MkHU*@_QI~0rF&%gKleJGMCf<7lfI&Z3a2j+*LqgoLyTOtdT&L6ra0~A5^5{h%( zcmmRjR*y~Wvr>)NLdWy`*xaI19>w*< z!L=@39;n~~Pe*2gh;TERz{MPPDNpG|ql5;G2%#s|CU&;YhXPsMCYJ6ljHNi1$apkv4jl@(PdewdfVnkt` zP}C_VSHrk&Db7qc+7i;yGHt`m!CduiN|w`)W>pIj)>ZncNI+9A!J$^L36A9C?-HP< zduap^iCfup`K-M;QFMWD)K$L!c3^l2jJT~17ElCRy4Pi!aQWwOz9tD@A?(oDk2)ox zFpyaHD!D9v7`Lpl8f=|@8HP@wpoNis9z*&B%g?&Q_~hZFD>r65?0hN_$V&G`z@3|n zz43<*-hYpy+Vr|bOodpg?4VRE^I&5>8ZZspva^SStpKVh(ewwoV(r9F+z=C+5v}^>pU9&_ zm{cQRAThkfmdEJ3U}a*0b$h4#7|<ce4bdd+8ubY zEPIcHVjxXh_2Cgy_GtdH62Kk5K^+#Cwy=z^8%>*v(nI~$H%u;bBbxg9ls)lh=yjjA zyLOp-w`*gVPD!3s#!J0-xZEo8FFg+|{#DuMcIUvhhamnT8zLgeG5bp;ro&V);jK5} zXAFpY+GlJql}zL#9)pJuYGLvT(?h1iW-wuyhad!Oh#T>tw-bQDKj%*n)V^@ScVHw+<%C&M1+^vlo#Vowos?eDl>S3wIz>d{<%I*Bc{n% z5{?d#mETlmOgFelD3OttjI!t^ojQp+FE|a_(8d>SB~+V9?`kD&u*f#VQCu=e?`T{Z zI>+2v|BKEJgVOem*;evb&7h;LF|vY-EnLJ?klCjfF+!wM<=$M{pe^Gb39oNbIFg^0 zHZp*F(Eeh!-t=7XLMXF<@XV&ztLEd4DFmO|W0E!suWf0I`$g+=W+BQb#>3E$(Sg!< zPC8YFRb6`A7PV2AqhZXY4+ytH%q@BHjO29;>~PHB+#}qGICRC_Df=dvZ|^I|dpkGk z6FMfHWl3OHx{gtR7o|)%%r^7$sZ_oqqyB>-j-}x+5LIV+t7kGj^*l5WRGtw~%N-2q zOPAfbV4;tUc?xRoLv#8k>(dYL@e_rEe=+)CrhF%SSGsZ{c;ds4>mPoIHgNuP zp{m6nbMMZg51#C~55vgo9r)RWhsYh>$^#D{W5}d4Z(htyd(S|yzN0d z41KS%Wto;hnO5GE*>s5&8%_q>KTb{ zgw;)?v?U6^MUKVe3Y?%S*E z>x;XB-`?Nkk=tlJgqzm$8(|9KXUx)f_2=2o43XOUcp_ne?l^H*6owDD_E03YV~70c zodF4N{B2i^th39u)SmJE>B!W$eQ|GWro~neo*y*yx!)iG-K+8d#KsA?>GC_RW=biK zxnr!^A14mZ17eWkh|iP-&Pac%G3sBS593Y1FMM-EeC#Za4O@lP zV=cQ+BiAN2iyY(9z)=u~9%H&;`tG@tf>!nbz$Kb4I@N;Pp={N#-$p=TlUfsLP&2Q& zU{qUe+?y*CjL5>Q{xB2cx6J;9!n{A?etj>$Jr1u6_MbNZv|r!WSD@-y_|!XceTLvq z^v?*MFBaZ26FvDn;j+9vtUtKVppVN(mzX)GhF1aG2cNY{Ep_vmqgGhmw%qpwuPz*x zlY7IAaikeiAyXcz-zRcUsQyE5{UiYbbvNtrS~{!}W%0?vfwL>!&N$OgR)CGmjFx=E zt-8@cu`~ZNuL`e);Z|)Qt_-=Rcf8PMfOm8V7wagO>S66(vEiV6Z$I}RhIG~5L3Z9C zoj>4ZV?xF}esQTEH6cCBaa}{9=EUub+|*9m^X3GK{iZWN4$Q^%$T{$kS)kMJ8}A~W zOv68LM|jUf>B(ld%q6bYLLhw$4Fv6Xoq9r4&uUFf!T>Cz&w=thL`~}mw{;PSrbup? z-_!^kX%y6`hcimc+y1$_tC;DnOm?gb3bXl}ugQ6XDOWlqkgO+_e$Q%xPu7(etLPEKXQw`E4e%2JrBU#s4O zn=o~u?Og6X*u_zzG^D*BMM1ADyvwF6aRNt2+YP}R*RZ-klhf@EHB-qHNghJA<)OWT zq-eA=YbWVt+urXSIef$*9^piG>Gnf@j^4QBWeD?6=TOs&oNn`9&=P)RswkF2Rj zn2Y99n1blm9WGmnKjrY37k8^I+=lUngV}3DZ0^=PYB9qhshknBi!001t7dZ0Ov|h6 z%FNNPb(Dgb!0ibQuGO_+ad!i_zgwP|!ZQ_sh?n9$rHNOk1<HA=99-C{pEt#!vM+ zQ$H~g)($LoW^AE7H41kYbf?4K6B&*#OAYfh&<_2aFeXq*+ao+C^)03!ETex1HV{yy zM1#T_f~DGr>dxI4;jFTpXPYV>?YRi#yp6|6TfRJMV6>;6K)o)7j>bGfQGY{xhR@9W zz9PR4$k_s+L9)-#n9}|$z9Rx}0T8wQwVpLuz4|eRF175FY%sknTCdk%|G$mZS+LxX z@P8=cKEnUV=GV>6QPtJi%*am4$llb}>_5|BQ`L193CwW(%{_h@d4z(Q1z~wBsqxBc zS1hk!T?d7flmtTR>grzB$*q@6PVw^TTFG_I;l#4wF|kV&d6a5WwxCMc78)!M(G`7- zzIL$?7n=0W@mf9;RI%ham{cTb5V+AW3vE@GtgMJBQzaFhGOU~ z#Jgw@3eWUq4mk7__M+$w6iH*NSUV{jxzO4eM;)SC68rSP+R1sDnZipW@L}o66BP6F zg&XPYD-LE(2p2On=XmQaw^$p*2X)5&_>5u}%Z=9OxTUJ~N8t=v)&987!o0dlf#y2A zca1D{%A_rSki%#Sw?5QRtMV`Zg}IfE5%akGFGzEndLt+rZpp}JM{SN@xo&EFVj=r{ z3eQDcb)nHk0#vwhI*osPl6-P+$X148)sB?KGgJ(e%R_;42suoDyOO5O; zq=D2-l$!QJeNLuhc^g+A2epanADxb2ZcbCqC1V}r7FSWpY@={LmmUMCxqsy2<&NY7 zMnRzf160KWn)OR`mV~~-?Clh`sATSv{iX<`80)q8ZdeQsdLtzf-PjeIwUBPSxX5rn z)UeeCI3C1(yo=>qZt21KN>`72JQ^U`mnCs@-2Ro-X& zKZ+*Je;;J(9!_nUSEUuEn{Ci&;WzDQM}v2X8gzPvV_gRiAIBP(WbZyk@WUlaf#P~# zvKZCqWrDd!*G@N_>tB0qb$cP2ufWDAD zbMP(nC9L<*-0|vy9z6F93VhJ7#U34)tY6MxbiYErufZG43Cr|`4+*d@edC`5WkZ+0 zRet}0I}Z28To#g%Jt`2*y9uR4%A zIoGeOu0nk?jnz8vRkAq-5?5K6PhYJbk9F(%D~iHDfn9TENy?guIzjHx@<4Tdcj(9m z50qZnECn2u{7(1f)tU3}Pb@6j;S zBXj79`qkdt0rCd;N)ou{GJUuBsRLWSS<@jWxF^*@R&E{F=xPpi4M7Qga!<0x31|P7 zuVEsle#BMT&CxHJWt?PAW@|mI*F=Q!H7@d%4@{xwyiDPnuEmz0^_Xb;*zTeDY=9iDz-Q5irByN~qeYwll4-e*qx= zy7-bV{Tz<_x_;xk+6@2OAsVn9Bm|7zH`{0dG4Kw`*4+DUi3+?k{a@DOKMdR-8T(~& z{;@;j|CH;z|IfP!6*ChDXVZVokci2DkmaJ54*%kw{!_c2qbzTOE`sAvxo*nkWU^^@ zDEVnEBC{!aqSD0~i^$}C_{M+6wgm8zy z*qpq10&8~#{l3rjyQ7oXb102oqhz7ph_&G#_(wn^JgFugFR)bi;t@ov_Olg~`JUA* zEQ)sA(AIpI04{EJB1q1%B2Be$sTuN4sZ6X4qnsp?O@FB*#)hhk8zO-VsSa&jlo;S{ z=i#Pe$$;2uO0F#i+6(>IncXLb^@`cXyIFvTKYeb(eAp6e2?Iz}O{f+GKcWF$9Hk5K zGB4NL-E^Ol+w62)mPqpUs&8tTD>_2je2~-<=&QzJmdw=#=0@c_Ox0z6*<24Ox(Lu; zCcpw0j;m`u-oIj}R10uSR04_}hg-?hIRT6PoS$}50n>Hbwj%1O);dwfa)f15)T_@- zeOPL0bA?)lNW1&I!>^;@)jzb+YD|hCJY*d2P*WRa*N_8#g`nXVe9C&}l@3c==P3(R zQug0bOIZ)PsA0*b?#kUpzKkS&Qm#;QS?P=lR2PB>|9jC136M+%{}mnWA29awe_nJA zGiPH57b{mUIWu=N+y7Sl5*1yWC1D(a#w=UL(w5TS>E8M^%}+)T^o)?&7@>P1iD7$- z-iaX*LVolLHK5Wa-MOVE6}IvEJzSZLY>=U^qBoZqr6Exlsx1{A2o5}CmKCPlT9CKOkx`MFfiXk7}yQnt| zldidrU(K|8%=R{&d?hggG@p0T18?zPgXVC-h1l=Nz=c-kn6F-o4E6wJ?>X93t8C}( z+EjDDo{k^lc9R=J`d|@0#61*fyvw4=SW!G25i$n`6`P(z$*9C<9%qKC>*U)4p2BM z2|YW0^*=Zbq7)b?Wa}3lZ)G^PI_NjxYDeOP-MfTh#*(P%y#JI3>X<$;0=nWh|2qHd z(6qH1rll1p8MyfKOG%C{2*>?2C7B_Voufwy7jHu&f`P*|Q_1|cqMD7N-e~5MGW+fq z?uBQVsfL8mo)1;FZCm4;0PU)*dV%6Y51`Zo+5+8k^4;dk(iO!8BEbm+XVgxo7q7YP zD>X^zBU5QLrik=?peXfHo8?2eb;4o!VhORg+dOflE0aSvPI_SJQ=I~u> zOE2WGzIrVZBfJ$RM+($;_P*)9zvRW0oS({NA-Q{TZ8Vu zg_%}Lvgiaa?0xt8=<_PKTW&lXZ{OOIqK16amiQ@Bw+~5YJ+2CZ8oFHD$}7%3nt0 zNPw294KrbQhc+pVMI$V!KYzY2>sgsoEFOzAHML--aOe!gE(~jaSehX(bvA44FyN9+ zc2em(Axwn1btx^hUrCfMbQvBY$p6`qegYR|p86&2&9%MfMBfXKmTLu^eo=#&jRFJ6 ze_VTT1!S(|%ZxDfR+@s*Z4fHY7>V;lNy`Hzi<{?6tzACJJ@O9QB{oukA!+lBg)(W@ z+K+O};zO*<*vc*j`&&%T%uC3|IlWjmZ;kGl&9x;bPfOlx2I4}BHE5*IMuBRB{sa+C z|5#d?>X{~`MbgTOHfYqr{GXQe(&8}pPc%En$&$c+n9D{~4OLlG2~q>G>&fz2y+G;7 z+5RI?*HNpQZZS<&ZB2B5qtrRx$i9>&(`}TRpE=RW7=UMqO=2}u zNZ~A!BH_tw%p0m)Q-p{{lo4P&*zhgAj_4P)GZ)P84U7$hBw00GN(H6BfKv6wYNl3A zurgIebk5+-%8)#&sAf#34!RAggd7WJDExi!$YI3AW1Eh_y&}jx-KGMQSD$iuVZvg8nifT%4o~p=$kH#+;xE z=oC{XdNrKYA^(E*;p z^E&M^=E{77Kf#|!6D(PCL0v(0E~^`9YZAxxzea7X^P>Su#yY*6E|Z|-o0wbGmO8mzjQ(4c*WDJ8zwrdgk>_4x>_`sQc_ zPdJS~0~AY~uNS?YG70p>Nqx@v-?Pg#XM^dacXjxPLZT>7+VsUUrBD6g`^_L9o^D!x>DBdNt!H~*Z| zikmv00>F9AiDz@()~$)S~{Lf*^6X%Z>879N-Sk zeU%3pjJBdS#ZKLoUz7H>3-%R&zS@>wO6hAFWXJf(cw5=Y)F zxvb79_OcwfiAFD7k({cui5A=9IC=R+oKo{tJ1yyCm%#=fRbycu*?t6L9g| zs~O~%EREXvJol~%%9uyWL7DL_U4%8!itON%is=mr`_n+43>%(N&~}qC?&gL()^{!? zw(}KUA=~EI$x=8yvzaD+KZ(9lJwKWUcRaS(7*T-?7f5r(`dZ=J*|G(21q}Jp{m_vL zp4MnJ+jL;PzMLum4y(JSDHv{afES9Ji<~mJ)Xa=Qs2(YAhlI{2XejP}x!pJ5-7~dv zAZfO-ko=vs*7a08HSl_ANDj7zsbsR6T9w82#93k?#v)l7nErAKjX9Nrar6AKmv5D* z!)*5`>jvdq5na5evSc)^0MnCRq)=vWNlFuCuf57*qyKvz(aVS2VRZXRxQI-D($1s1 zcxAlYX@czsUO_dP!fH7l-HLy{Q*kvV%dUK zg&D`F@g%~SC3ouhCZ(iNp#yz(z4)S~z&y+SZ2rxo-YZYT zZXXDKwEn*jvCoX5_+OWEoW2K$j7E=LzP5SZ$$rR;YIA1=+1o@XXi8SM_AxDN5zK>Z zy2#xPG(h--z2d}GHWa|-7OZ0UCVdd{p|Or0ZY07H!=Qp0o1PD(kJeASxS-s|(ZSxR z-Ff#a@X>A+W{DnPEhBGp2N_nR!`T_i-`-UabofX++{8?Dxu^W-rDq6y=sVdT*AG~S z^4CVOAibpsT`Y_lanp;HXfP$RvI8dGzfoLnAMyhrtR1zwk1xx(7=IQ?{6E`K(Q>;! z+33@FLQXP?M73E%syv%h5qhxRv-XVl2~#ph4AF#gGm_~ZFj~!BCg$=NMGF$!^OR&c zT!bP!7NfoLF2#608dn3MJft*g%ocjJOm!)7?>3D+ zw3Q{8ICFAz+0Po@*g53{rZt2-sgbhpXBjfVh0oE8Hd(C6=g?wvIvsc2wceEDQPw&e zH|D_rcJ-idi?N-pALM-VjbUC?sc?dNqA*A~MKYuaW{e#thb2m>$rr==k(nKrscbF; zX%9-U2xhX3Rs^3Vq)~?5h_iR>^uUz9k48(bV^Yc!^4z}IwA%*hc9dsE(jMOX45|~$ zd;T=h+UX=86t3jn$A#&PwaUlbLATdWy%sv1>r7QLEH->kmVv7;2*s;paHK08E>iOC z`l3neNNwMxvJbj$c)t$w)Vr>#OW0~Yv(6iaEjq%;!Vg}xp&3H{VV>O=<&?*A)3<3* z44r7RkfS3%(Og_}FXz8!xuzUk)MCaPI3EjFS= zOgNZLIy!7BVsrFL;=LVjO^#!hOpt7vOWI3_^b#>SaoRI|_}j&d&ux;M)0gSMpu9>t zfbn{!Gg_T><~RPeenup`QrI>HsN&g9?HzRflBnp0lCegblJzM-ff9vW@QMOUT&T28 zsLb?>W0Xb8bb}f27Lyt(z{{9+vjY}+@slf8B++TIN2(amOm>IZmc-$QiM+W?QOxVB zLMT}AJ#T4xDK*0Ny*MsUEb19&GQkTc@po_rm2zXmf;?kuf}@LbciUJE(fuJv$GH

    RzGR&c8)-`hSF_d&M(qd0yV_Op~`mLwt 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%0Db!z9?<0e@p5F!T>L%C5p&<89uN(WB!M{pOe7y&7 zx^ENC{-gQ6Yn1R>gT=?~8_4LvmWbCjyRU0=`L&8KhljQ)Tw3LhUpjWqXZuDSL+&26ecar$1i2tm_T(U zm1c`fhcmoL$n}~W%mpJr2}NT2GA+_==b5Dm>`jnMZc+HuU_IrG7+pKQhjRK1pG$Aj z=z6Bu1j;eJ7|-xWgS|gI&M$C9Qk>=Rs^znjntfjr{sQ#SkOt`Q?BS$WTEp%Q3H4wp z&#UJgiAX2>#f87)UsKD%E8Zd@xiQi;)?DuhB=kWjm?O5NUOrH!eu(-cie6p%q+`=- z&LO7x@%Z{&ts9thHrB=0XCg%YS@v(tJkPR_XURqowjo*HeldR*Q6}d?aD_VW*w64y z0eLleR2OMaJEy$LB3mc3Z#hr5DL({GCf>fgl-?-JKu^CV z@CaEh2-(gc10Mz{iLE`Xh-8m9i{@kxQN4X2vzx%@t}da3Kgi1wkX`{o(4a5*9;hH`K@@+Z3T zrSBBVv>a-Iqx-OL*tOb7~{?m7+0abry@9OM|WKA{rOFnl@J}o zQR5p{3lua96i1MX=;Np#v3=xzc>T;N|IRa$rBBQ({zE?}a|(~sh=!YTgDkEs5ob!D zAm+VUp&6bTHQw5pO70VE7nl+!dS?pm-BpiIuhfY$5p3>r=MV>pO(#AVQ@W2Bz6BJ32=CL2j+kzBxiQMPF(z&L2n^0bM7@$kjX1;O ztv*7zKeD(#sG!3KDZ{bf_n1k?3#g;PJNhE+sr&eG0^fMJ`AwZYBWK7r4@A$B%(V$* z`@_Ipw6X`$7yrZxFeJ*`K+NL-LskZpum&a#C&nerlb=Oc{2hmK+WS@OFA^Ep+>rcG=rI3ciyX_}< zaRA%-?$1B1CvySm6<@de9Gz_V=?pFzrg29Jz($ZUOH#0Y9?slw;9kEtsw~*ixxG$L)Mc>Loc(){xipKOOw3``17BI4t83UPb z2E28!zE^0B0M+5^sdQCfC60+)@+=errr(bWI8%>$eL!;)j$$Fe5XP;u)G1)XlUlvc z6C19`xoc*m*Tz&R`ig`x9COlQ?{jXGF;fy{&p2b1C-f%z@1)U&w%h`! zqdInhlBTTV783F*!w|MW(9x|_^;MvJ7h@s?^1G$N#j7su6Q!b6 zGfK*QrDbJNk%shsQVEeCm3yN{o(wcoCk{I6%P8EmUUYOiVZ^F0I=eg0_%HLhKreYu zeLCrgB~-&=D%46Ubes}Q&nzlbb7J`oxZD#qDGaNX@c zha28XJDZTA+I2=W8~;F~2W`!}wr|#rzk>PdI?Z`Ood(k3AX>HuyP^I(^s0l&*619O zlBp(fMOP<#!FA8gf|_zFb`3NZ-!jd@;d)}b&`ql2?ykK_++y3JCQb*m%EI{2x54^!+g4jk|xG75uzYf>%(q-L&G@$y@ z2D>5H6Z#Od>W>{V`4G_x&5gjh(cOdRCC5h+;w8e}bKgZ~fEMi}x*H4?Ldy;J3PsEy z(S2}44gZQk5s5Fyt9*tVCgtH<8#DqrIpwLLhZIIR+4MVh9+zT5u$z8$78J)g?I?2+ zeiQC^J5ilA?3L6oyD8OVC;dsHWG z{bWV|AhMhYNm7KdU4WWRxm-wT!-t*I_yATky#)=dazW6zyn_Q4vm(yq!T|ho3$CO5xwB-$-+WxO%>!nO3KF$! z$@uH7^SrKoL*|>3?R$v!3FLwuwIrJ>1DN{NPs1fe*qQS^xz+XW>Ms=u45gtyF2mhn zm^xChJpfn^Z~uCjFI^K=CNU(cBtp}2Q-=%LUo zf~R6G6w~J4{#hu_Mr=K*oQU#Lo(JE)4w&dt#iWwlO){>+4^r0pOpe?1wJX_Ql)>yj z`N~%c&>hpu&SP~7Fih;t{}OJM7v*%ii#M!A8(4bRXSrNj$PqVRub-g8)iU&YDj?7j z1W5E?e^w|3T@ZnD^cLH3X@RqxG_?%GN)0p#VPPEs+ePBf4hmut!uRRjB1R!12nWA_ zD}@8}Gu&WJ!bbFy-H?|fN(t$6Lg4nW+LU-IbAcz;ctlw9SN_HhQe&^`YC zMw;V2rfXOSR)=W!G``3)*cmZzq#Q0t&@m#RL=}n%Ta=40V%?rt?4Eaw8la;y|T`We`6L@Gh@8Wbxq^a zMMjZZU#CJkE=UrU#<(r9ilk1iUH8NJO;03cJ zQdY0z1r-Ps&+RjEoII6ggUPup-eMfmlu=rP9suc@_wkPHRYU5?6&k?f9Q^_?|Dev|n?5zdv9E&|{Uog33v! zcWCgtkMuQ$oV^kSWQwQYz_-a62PV|fpeD%}39Rqh%6C#Ckfd(yc>KY0u5av8>%q~s z_2Wayz$c)*as}#zn+o!Z^py2_9ce&9VKk2v7wT~LOO#U=KyE7@ynu(2qdU~&LH7K6 zXPqZnK5)5;DVBe+94nm~73r-x)VFJ=*o@Jxj3rQWqBVA#bf9087;bDg@%qDnk5prs z3{+W347g@>n5MPZzLY$-QFHJXQd&D^qQSb)>*`wLqaQSpsf?f0%kkR zSEA6in=dqgWbs&0LO0@*OJ?fpEsqm|i$7#U*}W#}p^9DDNp-aCGi*c~VEuRHEK)vC z%yihb)S0~1m+bI!&0a8%S+jy`^l>`^*x;V+bO||fb?J|eO(b63KO1!ZC3WE3oMeG) z-aS}^QdXW<<}9{mmnyVc&7_*JRqEq~^tR`yXIX1JS^(;L#eGCKAE*wPMaM5{yyly< z&|iW0>*hm2D9Ru_3Q<3PTs(M@G1qhZ){cfloY+2KBfi3HmbDX}Bk5gfXPz6Z7%a;O zM?>-jELH`i2gqst3;7(R5xOiK%TKx&WT2GcuG0)8cRs$$aU)77szez57x-pUv`r;d z%F+_LStM1=|9M-4XXxc!EuP$3&L966v&5ECc%(Yx2n9PeL;fsSv^h0j{VT2cb&u0T z=vuU9Cia)wt~}Gbd~#Px7PpPjtMSzP#>MV)7it@d4rF8=(thFdto~HKzmJgO&DS{9aSie8D-#KD~?ob+Og-3HqgDiaqX=3CXUu3vQ+YkycqX=FxOtD6wRp^VJX(*}#f$N*x) z@W$l2`g;7rDOao@A@zu8Og9m1^DD5ao{mG$j@l$O4DWW)04?cxk9w%|=j|IOg773N8(?LS*>9XVWML8IWBeFeT!v{Fz^KzpSaA%AGPa|A2 z95!bBh^YE)#xZz0+%L3!uMY^4^S_+P*Z{?H^q3YqD~yq69m6Q|{zQbY-ee(+-_8Mk zUXwBu18gX9*QA@S78s?^I&l|()jyyFe|Alnr1q`H=kaj+wX^z(!P`WL(5WP8g1P}O z?+5iU+qZQzWHW_Hy!ll=F*Ji-$u9O8C{ACZakG{W3@}zTZgASw}NO6>@uP?czHR&5=^<%Kg|U=uSp@laagR z#quh_=KPp`+7$6|7|A$x7e`VBvXO@Y%mDB%H z>Sn8K+M+6>es5a;Wyyv|O;JEYDw!41tkWz*%P$tIH**FrYF0pXc6q+K>b;m`cEl(P z&oGN3|BY#Auosvc&MP79WNAhGJ9&`8`yrPphlgd8A=Ri}{AbbV`D6OpYlG)~gumwt zLJzhkWW=rk=PwgUs3LWaik*fqhKX|4Tpi3zSz2O6ql25ukR$fdZD$0=LDu{Y@iY}@ ztv-)TMH}I9s*=`Xou6pCyE?w+{12~_N-f2&5t^RHEjeGZZKZ7>PE4E4Hcfop>23^s zS6#*@B8fxl?-b6ms-d(&3Hcp+Sacq{+Xdgyu}9 zOR|N=gWt$55)rVP#6elcFjq_`_b~%qEG?(+S&NC6uLM>C`DRMv;mK^^TxXam2T8=w z-Yl}7)>kSasX>R_LED+f#0}cejjJ5I^VDM%GeZVyLD>V}e1zI%uV+Z^-2I93W^2Op zFiY5v2j{N;0yLkPKdQ(a3js;PMFe=lVrQ$NpWIJ+39Q+{2hpt&@9JYYmM{R$}~#u(P+=HF2p!ARI!nY$pb57$N)6BvWt;Om6k0 zDzN-weQEHZp3bmh5vfPCXJj+KxEJjB3>(>^VbkO5b@#AnOm8pr1O2GtAci4Y-Q#(L za#FUSkKk;IwB<1sZ#rT)ZpejY?kwxLPgXV-DJ4T|3~R+|jdM+-GexEl*$metol6=( z*c>CqMKlEej6fM-y=BtyYfc{;ZCfa>ygS()V7gqe*kt&`RcC3sG=v;tLf>&ir_Jh* z?NVETi{inPW45pfvq*i!9@zqM=XQ^?1kkhg=&)P&l)DOFE{+<91{ zW#Ok9TKB-`D^5s{U&t)!#fYUTBK%TBPsxt5i5c<^IJYD-<(xe$XzAFnZ&ccYPky%3 zMAx4hlc`0B+`@D(l$OtvWZ0O(wh8f23aQB5@7`IH-b{WXv8_cp+YR5IgKUK^R6A$| z+dSBO7y{)+N<=`YHn@v`ycb}kIH&{*5ghHY(SX|piiR}j5H2-fwJfyMD-8Adb1~BE zkT%Sj4eWrKU(e4QEYFLdXNE*xC~K486f~r8@=K;V<}2t2axCpsvOL%9Wd?Wq7fKYG zMy`j@-Bnsf!5Z|F_0cNskL_$6B|z~4!z$iR6DNuEa#KLJDWQ~R)deB(e6_nXM8p6< zCYR8}P~X_#ZYK%;*;KxhkF7?x*ZANKStINZK!U#Ll^)-ri+H5N?dRc)ab=2rW(-A$ z>kn1y2dE8?i0z|vM$6jc0dop5dctGskh|HuiBkkvY7Rx)Y_56 z?kQmQm7aQli~m3my~T^!eJ8}^bHWB6xB(;2#HOUrEGsw@{${yTO%ihe3tqa8-IA`+7?m%!N$gty z|G=Crc|{M)L6+Ujxn&a>N-ez_E=tXK2YmJq)3Ilm30QOJ_Hxe10*}qKGKbPC?|Ahe zSoPDDbFPa$bO;ejD?8=(xuY@0@FJCKR@wyjSy+EBkgt{9su$#tHL#8yPEohInUgWd zxtFI-9~x8VUKTIib!r`=>2wH~<<3-7=k6CbcPbnz>sTB+1`B15R|fYCVds|KzB-J7 zkFNL*>RxU!?5;GPr6_gf{xeUnwzbvxH1{Yt(lsc9i zp=&glX2Lpza&8f@*(X;jpBOPxIF_MDtDFc;&H#;rH-`OQ1Jy2acpn)!*W^FZfpTj@ z6913ZDE$v9?E^$2+xetrp-51BJUYRt5~)TbttWiIP`FmUpL#}M`~0usJt#e{AL8@{ za6&z0PE2uH8rQEb16iV@JTI)EWCk%)A=&1V4XH-pC9#LOA}?xG4Je5%Q?2`6N>82in{)c4QFc$7#omVb&uiCsm#6S;K9j3y(kODIDn{TZ^ovmI zVKun%oM1O=dk5z)ixGV(xLykCqZ?N)iDW^gtGwtJ{cKlKLW+rh#;5W8RE!GN)ax~r zRAU+s0~exjMk2|0%z!ki4~}Sh^WqSbl2t%xK-9K#iG&!%meZ}M8>y*#G!k&drn>7$ z)13i4<|%Lj6O{T-Oxqa*DFX@QpifK-35LuIJBdr+bjLu>;fG2F9nINMIKm0;moP)t z$bYEMeYtWqeJBq}(xJ)y_Riws0Q{LW0#AS zV4qjol`7>qh0ku8XV1PWSa&|l z2RL;|=Uva@Nm2N|z6%8Q@J=Db&8dF9tTI5cgc2{l}WChef@D1EDb%; z&#pbPL`)A}ELjlrP(QYOoeO8)y|z~?ttOEr zAwG053KT2UA7;dG@HlUfgoFe|=dIyw(T5elj&wK>`n@QjP2Y(KNS~B6v{P|nxxil} zF&CVCF~FdoY%GIWaEBA=KV4y`?$B$r>Fb48pKdg3IdV2N*V7N6ZAz_>eLV(rS@0<7 zcq8aezR~q~KbB7M0_5QU|1|T(UO$@(MAxEw_%uJ)J7K8>4Wc+vQd!b=WC937;6)lc z<6`uUZ^mcF>^n5%r0LjMk`oyR>lMs%nNmG^l2x*4SRVfISf=RT7N4Tjcx6@4ZX(5F z_36qb(B%m6Ixvf7St<}kO!b42!}1&hit>zBDwd$)EHAYEjFIMktE8IWCLzMFE;7>2 z&gUPT{Q38ZA4${OD032yYdSUF1!ZW72H@`tRPWCoc;2KAb+X^hOkIe9L(qgI z=+IU5#*QSs-3#7+Cg6fX;X%!%=AZSV z`fVSpD)}fM3nL?FRo?516Y_n4X6vHx`)K3)isqht2pb{2DdlmzNM~>F5uARo_mIr~ zHM@-+GfuCFiCMvw3g#xVrGfuB))(s?%DLG%vH!o3+}57Tst1C8raw z*`3-_3!qLV{~$JGIeDd_4#h?A0@uw`j=;)Pcua5caQkiFq+IScEDN!fQ*AE#+4XYt zCG(N%5=oZbXXMDMznV%h)d$n4y~f>mjKgS__9?6r=v##%p?{3&HDI@~jtTSQ*5ins zm@=X&uWna^l{+G}8?uOZam8MQl;I^sJ@zC|p~Q-RSWSW*O7#bwaE&rGg2_mrxr)bz z5@90GZzoD9`(TcrxtJxf1lHK#ORqu^dt{U>#C-VAc^g_cSsKoKpBZzlV{5i5?N$9q zM=({NIqk`wh6(u~Tf$mA)q8YYqL1{}83C{_u#UrGuJJyu>40cV}l#l z%`;34Y44y*6vq78thLO7I05uU7`ys2l*>WW*#}l^< zNkemd>AZ!qgrfymZoJY+;B3LjviRu&cn@6NQ*_M-Fuw5YQ>wbEUlS61?E=wl9cSwE zp5+f@ckIAQ@QLGmJCJ$|$z39cQ$T#7X7b4wT?dxw^O7W%*?g>H*IqF(hG)g{%{3J| zcPkyAHa(T8G0%TXM}34Cyru2_uvqilDe6T5LyZuHQ8wY`kwu&o*AsgQq}X%1;uR3P zU!N7C)Wh+JI3C)o5k#j}QY>=gHEQv(nh;1^CH_3JWA64?nF?ps*UgtB3ygOypW{db z{8ymb$W{e7CqAf-8p`SmG9tE`)Cx%oO*;X-IB*=rK8Gn1r43N=MZoB#D#D_L@{&RR znBIfDHHQ*M48V?SQDxd^%^F2p9Jq==5ea+L9#ewmq?Hv9@5<^e%Hs5SQQ%up`XRR| z;CCq-=Xue0KILb4!h>l?)>mpxLC@UdgYV5=&wy=Do@bglB+UaD&xyIqoQ})FdDZ;- zPYEG@3v;GFLbhYd8VM|&Jm62Uw zv8#l@4%T$-C(0;G${};3r(Eo<^X~P;hHpvD0o}sq4$lE7wVgQYT?lu!oq}(Wbo1kV zKbvMnQtV0fW#So(3^;YJo-!sU%UJ#cEUZ`LTd7?nfu`_G)@SJtvsa8^T9g>$W=(@A zaj!SXKJ6=B#%_k1Hyw66w)lHkqwCv1>>_5Xam)JYa95`u*@7Y`}C(%$&D?3rimaMx$Z}usg^T@KG@q15q zBTVyo8suv3;Ej?1P#5qQD7g0?W<{f+0va#KOKbzC7}`@_0d)6)fZwM-%t5=}=7YWV zoiElqVEh>vsVfk4zDyp@dhh>DhI=M>{AjncBU>x)7%NHF}URV$JXDUnn{nXTYVHtN#-6Ddbs zpwy-V9;BJU=puWRWJeZcS(vE<<0ik<1#FvQ86D$s5AyQMeOM4U z6HcYqI|PE^ktj*5B)f3GQ7W95-+4;#CE`h}J#SI>w0?JSWSTRK&xtHTo6vw& zO8l(?wBY9xcZMmyvh}Q7+e4#Gxm>@?QGR5|off)PL%^aDbw(>K;x7Wl&NL=_m2qYa z)IKV>GFaaPDhZ{KCQ+kN4$%d$RaC&GZ?&sbz@jo?u`X=zf+zn<|K7u&w~&{^^*JWO zzH)t^OQOM>ip^cFvZG;Dr)Uj4{0m!%RMfx2;z$_f@}$C-2V49(o|bV4RP3bu580Q1if+{1iWZq4N08%n_O z7f&8&kK=AtPac~l1$P3>cYYf~T`Q;D-j7532&xagC&RqvVLi$crV^2}$RnJvvz(nL z%{gJl37Jxl%pshxiF_g#!4JRsvB zq)Se;1@M!0Ro<8g8Fc+)&MC~`_&!q9Np%H}J_%ty{S6)z{gYmw(raiZ1VEW5JRey8 zhJS#0iM4DJ+K2aEo7qnWRMsZg-EdVS`~9Ke7$i5{lhnEzmvR~#P+nX8+0(Wfu3?oW z>(!`nX_!f`CgLf%81Inr-p8?hQ?R^oW!4YtXLAB^twCU}_v`u=dN^buqB?HsYm$L9WVqQ5ER zaIT*}wO@F)W2NK~*xPJD!))QMw`GO!TPstxCX7{dhUj=K;XaKnC+@wBu>Bl5o(7U@ z8}Z<(Y0Nu|j6+~P!ArxC@N|`kbW?xf4K1Lzz&V9aKDyywXF`^|L`3@EZPUo&c6k|M z<#Z8a3FGNi7HXa+uZ&_%!!6KiNvJc5y%b?%kLi(`i;*6BD+xfi-#y`u`S&25Phekf zK{KiqjLO>Y3Y5N@)Kke&B%8A7RBI-8#+qn3Y=^MawL!i%t-T2QHy$Z;a(mWF8S_-L z$ZT2*?HKhd3!_NeX$4QSdfCTz*ZE&PmH&>P^2>Z+#thKL6IZSi&`F&?__PSIDj{W4IS2A2byBR7aI>sb+mDNW}oFI}D@p z#WwjDhNEwD*bJS&wbk&zV^K?U1wv!omJYDqj5 z%V&D=asokx_Im$Apj;z82rVY^|ZC6y$!S~xCFq*!FO=8E}R0{LcK}p zV25=B*k-JLf;j0NFq%_<$)4iL@RH2?M!PNU{ZqLvnMqyk7lHv%dUrA z5(xG@wKIr>?ekw|wiYFxAU)NTlu~@>NX$ZKG1n01RrzTRjXyrsztFppKE%07RXo_4 zh#`%{eD5UnU6UrVCcTe)++Jw9R#E$fN&sO516|jt^m>MLedna@o)<=i%Oeql$vu$i zil~)qN>&0p3woNAgDlWi8_y$PeK!efFWN>b;?k4Jx3_ zoW((pQDv!oxDR7z2Or<)#{d(>L4O-Ff-d+IlGX)(?zQ3mo+*6*Qb zO0^$&>VuJ2`ToyDsH7C~H%9{kV)+s7{q#wJY#mG)^zHNw&5RkGY;CO^8T4(O7@YJS zEscy#92pdT65+ohU9Aq~rnL0Pe>`QhWpsy};7^F;FQ_hrj4UDuCjsXlWCk)y-6mtA zL;k}x;)DrUvN58DOqv)PLU3%)};m4|jN{GM!KMQz?a`-o8D&d&I zT0Ku2e`IAo9dA-TZ3`urEb39iY7MM2d^xXqb&SUC`qIuK(A=q3qVm=*nR6`e*v+~* z{~*>#EkLAGeV+jYfibFA&3bOsrsIJVWKqbPS=2sTQh7L4aePb%+#SY{k}g@)u5>&B z(&WdGDyU}WQH(Lib!MtK>9B8h>{Xdtn{v!XT-f^hddch-n!9~^?E3nu!GE0) ze!dvff3@k;y#=v6bA5a7xrD>tGt&=7ex14nS>!4VzCFq@rb3W(Bs}l6I>T|^sj1>C zavX~;w~d@v?Nw=J63gltyu+T&e{{V5=>_nsL9AZCYg?EhXl?D1blbW-_FPmu_5^i; z+oqWMyfYEg<3-$od?l*S4-K}+%_X?Kr?7&^ZNm6{c02;|@Y^!gx}a<1^MeYDmx$(B zGBI_xZW_|*_b6+Zr5>X`eA<{5Cyp%H3S36Kn=bEsO3a~A!q|xf`IM6e5U{iBoeSj|9j(NF(J~M{GP%@2rU2#l`J!|qu^5a0BxP>#FHnDGBLLJGQ zV{sZrAr+Sb2r_5p1!@o=PnHBs8WWmSj2bz1;Y>L}_@z~ll=}--$ss}vtof9rZ?XDN)Cp_r=hyWe1v+7{iJ6YIC?672dKEzPDtax^2slZv{xd?}b-U>7{qx zx>+Cs5&#yAFbcA~8NCWk%Wbq4Pe%gkD6)T$+soEcCTph18twgYn~tXk%Apg{*jKOI z$Tj2S=y7D5tXN6bl(2if!j(8Jga|26$7JzpG`rLc{8>5l&u+&622^RU{_Jp)k>REEY>FMd?qqzlxNeOEi4! zLQ2~FGv?V4oK3OVX4ao`%k))ItC$VqBvH6Jz$WJrw4KcCE?Q*QkdQY6KMy$L-sMlV#tmjY->O+U+{wFQ^~Zhg#0w*?%4Q=WQtOb$A$WJ_7`|>v z8Okm9>a`Kp>$J?kL8;8KuwvF>rej800S_;)Epwya6$SCkXZp0DAN1Un8;CDKDV32&HHwGDPbw zXSkoxz^L5&`>Q{{gIA0Mvn2=Q8bsAt_IB^-9qzTYNKHs7>g5ms1A*h4=ux2HNUQ}n zP3knge4s1f~LpUyZti#5<5&Gb@14lEjz#-x8Y=Rp^9q^^sOzeie1Z`dS_iRzfirwFGShb_yp!2ncA6rW%cEjUSmBFWBa7|=*`C2dB|n_ z4c>Hg0;@Qg8bXnGhR%+~`~dga+QA@X`y%F>S$y*C1_v8Yh5cgo9m?|+BKuJGfa8jy z*)|R+78_9{bA}CWtSi^ig3kBXBF8yn6K*3l#r|OX>R|j1>Dw-{?ae~7XEinv8dG97 zy6O$)PCON%`TX@5%A#gLF1)72ZT?5N+^Df{d(Za#123>=g5eC7$(um#lniMV;UyH} zJ4|=}bp+x&NQdR6^n)dk;vR~`MZxH*?IcTa!agM!VBXJNZ6`s2|}mcvobO3^5!_ zC>;@d3{&WbjZ2w40e{qx|J$k11ik6!6p!!$7@Tz(=5hqR(>lM@|f#@0kjxUy*^?h|V-(qA%ewA`+ zFOEZZrSuPHBq{I9=FH?rol2Kza}qEtXLoUqn3!gdqTprX`Y7&T+#6ZKK1cja zdBcI4laE%kgrZ|ZO^Sjo^uPy^Cnm@dYqXv4O=Z-T|1cj|yJu z$qj zhgMT3K=L-2M<$q9Q;f+1jSP+YK75tXG-ZDD7Zki_N2JoQdJ(d^GncqfhS=EQZh!F) zlBKJ?0B9|Ek!?Ai7NPy34LBl^7OOVEiK_UO2Y6b|sEu%mdhXm_*eE&sgPi8J< zGDcdCV%!uHP#O4@gf2T?#8Ba`=i7js2nf{_&@>UV7;cDT%!lV+tX5?Ip z7A%qYK1t)SD>5wqJGv@yexNCl$(B=I%)ze8 z(D#H!jvniJeT%aA;xKh^q@qiO;GJeDb7Bbf9&6;FEI=1kBZatQf{wi%t^Y?r@#w~E zaizAYTEH4gCd)uXL~|9cHeW)iSkrCPwcZ-RK}WT6jajp-?B5%lrcXfRCpp7@h1?C& z)?DMv6{X;FTZfVr;Z|}oAn44ykTOQ7j*;(DqzJlPdRtR)4VF0UlhR1-nj!x8lte^H zl48EP336yuCyMo7lrL&!MXZN1-*w%H>pw%(nlty-PZ6w|oaeQf_sior>2E(ipILl< zqgaBL-1iF#Xvaqp>zW+Oi6sbU6ijbe?t*~D6-KFUh#8;x z;#)~YdTD`-2#9MR<|5TKyRZs&goU6_rOn>=@{(O3@aKiWog&b|%$o)mN4q=5?7G|% z*tsGb%K{st{(DRpZ3&E7kBjm-qKkDwHZw&5d#2! zp@;>nCb-Jlyu&1jSlBkB@>GYsRhe9f)Ujpp6Bbf_Pun~TZYf!PKuPH-)_bSq(sWQG z`&B6lfuaI3E-;%XTk;&6Xs6c?c)%OJ163!t)YMvs&O%CQ`35Ze#mqlhR{Bc83O2IW zWZ(f8&mNR{3F-h;%~2SNu$89J@C}6T8pNmqWpt`WK*uh1R9uG8v;L?BS>URU>`qiQ zJnI0=A(bYMp(CxJ&5Z4LxLFSbJb(TQRaE7S_kozda9i1v6nhc??9r&H~TTIuB5Y8wn zZH^DvEf99b?;whhX!i^zXu4mr{A}-KN(K5SHM5 zPL`>J1pqTg;T)46&Eb3X8gDjp#T4~j-skV9H{h4=vJ=<^7}J;ETk0F@7c5DE`?P*J zmr2JANR+IF*T0wya0yd)kKQ z-wJ*@{X_E}>3rNN4)C7VrDL4~Y$;z$Y%fbZ(tCI{ATR5;Yl)u!9-aeKqyF4dm_ZLN z?JOQd9~@^&h}`UTs(XN&!8p&nDloF>N#@Qc#1?8cceG>hvmBT<%}bl; z&TU!Cw;l0H_SD%8DJpnlrJFO21WO5&;=;j>ThwZ{=oU9^d}iM3g>%p*bp~ow1Tb?6 z9IEq1Gy2=PR2kx|Gh3@is)#4tq$cgoFPxqEGvFeVh@w~5_>bRmYU%y`&(u^fu~hjS zx^mFxuF2!HiO0-3u#2({LTTa7Nzks^sq;C3zs)9WJm5Td2!a(oA$mtCrBqtaC11&I znQKV6Wt2-DdG*~a5K)pt7UQy5#%hs1-wQ$7;+M|F)B+h?pX63J{ zmWD{i2ct>m9@Wh!)N20n@~#&~b!*C!d-B%#IJ|;Lp-Qf4{cjQes{5rg7|l;-AEKx$ zvTZ~@&EuIwDnpizwv8k8;l-ZzdU{5w+vSK3Xya=&-)t!k^@Wh4 zOV7L&3Nr(3(QNy$mWXJp2}Of6h`S`*f{J)ocL}J(K55~ms%D2l{DoDi5)SHpl#1xS zs0Zr%q-KAm@Y^NjrEtaL5cBt4ZSIvb=kA%U$Kf#r=IyAPXAo%J30!ssx}cH;*6OSy zONi_eWra!=(TQg4vqkbbkLnbNW-6y<6~N!7a;Gl#Y@21FCe=)FcWZXO>ZxK94Zg0t zsX|}NXssG7UU5s6itZ(aL9t1ZYj)*>{1M;>RyGQ>GQi^?VkhOI?k@CX@|@Qj8;)F0 zEcz@%8?wYod2;u-vfDYJuRE7QuO z1uDHsJe1YW^O{UPttN*;mPFLJ<#zVk`~_fcjV~!B9*S-75;wEWUIllpE)_fFUdUh$ zz;p@)428ewDdo|xRC0zFtn;e}E0}Lqqe&KbbUaiM0v?+^%?f^5F@#S+$~}8Nv9ZD} z)Ohm+uX^BJG|TgzY^LlIcWd*DRI1=f-{gSwc@l}898pF*MBB+I% z%;IJ-i!?4N4rlk$?#n3OPv!Y|Xjq0i53nm8TENG_&R{(DI;=F$3TUz}BP3#-M1JymRtTTnWyDSm7pW@_+Vtu#YX zi0a2RKGXO# zEwRRGonNpt=kAmmTFTbfpmQ+C^JT<@U`>-BrJ@WvyY+#4+P2z>56Gz0)=p|rLVGG} zc-G4a1vx(PsvVBMHecyD@br0w+vvbCOU{-8k2k$3+(f)H$-9GBT+?qJj#U1K8KW8L z2kzee=5R(5n7Py{aE?mWBso7?fRMqNV-Z{ zZZINt2{|X}W^u%kfB`eY^BwS4lSr747i}9nHW>eQRJ|BLfQ7F4heF0|1kja) zE7n-v~`&?`&}r85Ww;645yPXunlui2TedWD=8(HV`mKE>7>>|HY8eMHy-7%dr7uh zD?R}lF(iHqq#V&F4Qk;gmcEOGt#}LBF!6&&L2&5u;v;zM?7-08s6U-tRVroY;>{T} zUZheDquIeqk^8@gG@M#?+;%^~*8U0hPka7<=*|DHV9VNwIyl(=FN&M|y2OA0BHwz6 zxW+!+@;f*fINF7epF*61U|56*^iZjF$FkW5U1s!&?r9?73FM3XUdfT*AmnB!7mwp~ zR=V*vzs?pAYn@79pgN=@{gF0po0?PIg;r>BeMJ8_$dYZSQ@tXY{dEyN#17~>LRAIxJK zw_pGXhKHRzS=!s0$j%>y6E&mP`SKLu0O)h^V!SHki!V#bfZ^-6P$F4#O`}#Vrm1(x zf0I|n|DrZN7J#Y-*te7ZKgQlEKGPt`9-eq&TNB&%#7-v3#I|j7V%xTD>&+Y6wr&2i z-+p_sd$W7_bl-LTp6af1s?Nzlk@!SIwInZq4C@=6WEq(YC19DEj3_d6JG}IUW{jo^ z1fRQ(I3%w`R&CK$I8FX=SZ?y7Iahg?dVU@_yU$SVx~A4QK|4!jRb$DFB9qB|h5qm4 zilZr^u*0`TC-k?(JIDVyfPWqIZ5;LgKg*{7m3}%maDivmM*%n<3-_>1P4N0*zm*Y#5}|b5h+^nsBuK?X0ytuy6+#_N z@fc*OA*8#<)Vn<=T_?Nlrh0n5K=e>_DO*F;AyVv0B2*j=T5$(D41DB=J3+Bs2d}%a zE~!R#ec)hWFzQGR)dlfr3=$&rmHVL7?$`{T{|t-6c*LdD(eL>Ofb65+?-@emY%5{s z0H3vl#>co`wFmZ5c2{JrHKlP~G|pL2Cf(ZT92cwqvQ|(MA(zTdP!~C78>*2phj|ze z;HSkiCO2g%YE)Qwq?Pckv2Qe*xSPv65@NgrXH3$W9=Wv2(QCIc(AA9d2~#}b1{=F^ zkQK(4-1pRz6Y*MNQf)e_5A4D=N%`|sXb2j`j;ywuRGUW=J;Lj&1xWxaxzi6U+D(^} z!JRkjTUjhEs>dYVKb%Tp8udf>wdt1=rnAlq<-oBW{)sJy4=H!=Ngm4*95K|cF^74U zm^g!TP6ucaYsT=lszCFer}y$G$P3PB?MDaQ$p)h93UM3Th#x82`_Tv|DEx{mK3gwB zkyAjv%BqLK=jCOQYi9ZG`{O1xUBb(PvMy%-P5v(@T=lvG~I~PuVJ$w4k!Tmpn=5_abjS_F`ak5gK7Rqe9%YBbtF9$~BQ(S8;!U ztX5Me2jxhbKDIKtCS{r3?~gb$2HP<{I{j-27F%V@sB={u^kds6i#b?Tc`?}`_EPcU zFODNLyNI-*e)6RTcS0jXfocGr_ zr1ILC@RekkXA4ZV^&)R~Vc72&dO%|w?7#lM9`=(L2bAU9J;6ykRC4!o3; z0=qDNTp~t$1+$?+(L6398${B`-|xhYI74Hs(K9w_l~@y9W!!2OUW9pxjWKrA$SdOa zn1rN~hM9VOx5ox&p$$;2LiOFf$W&Sn{+_r1iTeX7j%{1^?E+Bl^?s$GMDx&EAzYQl zF!Uj`qF=Se_Er8(yCslt_(GFQ$kJ6`;m08D!zaE!ibytp^h64pH0~g>-Gta>mF8he z@G`NYbkEDqi%7Jj+}cmQhw5wmL$TQZVLEh*bkjM#U>`lnD?fIvYX=rZsF0r_guDwz z8jw5k5Wx5h&*xk4hSUZ6OG|vqP>WZ@_Y(;W9;i1^8J+iLz(o}82KvC%j+y<-;bAK6 zdJrW0EltA6E$FIFI`489$`>JCPGMC~nbHcDZ@dqyLOn*aYE`p?vr zrS7hmaDeTb%>hU$*3BzK`)Qh35tJMt)wlbHQkf=YHh?CZ=tU#nTruHqG`^e7Df>!i z8MkQ3HXgNH)>(p@s8vzyxTL@ z3jxi9k$JHM%fi6iK96=fj=6~h>bzTV%J8j(xkXV~LZFGc)>V-t@0zshEgr)LeN;xw z-R+H60IQ?%@~;Wrs3Xs35r$rzuD=7YovbnPx7UDkYz~I`XCv&)-J+FF$|cS719BbW z0h1{CB<&JlT#57?@tmndLt|#j&8>q@AI;da4FA|bMbMavy5*c()37Bgzov`ty7a{Q zWf58DqO|O6>r18sf65f<;GOXR1VQ)oI%O`Ax+X=TzCYramfBwEaIhrJ(s?X!a(!b_ z6L!&#R-Df(E`%Z3US^M;p=z(ynNQBHC4>Pvv@k>or=$z*fWVwS$s{m@V|14s(f0A0 zqVP@9oc~})9`;tty!q#%@oa}yZq4;=()!L$#W`-}c16)kBx_Dmn`NPERY(mB^u9q3 z>Z8Eb4ucwt7oTlX8iU8P^kHO(?e(mMyMv=$L6jHjmeyp;b=BZ9s7J`K ztHrx<@olpaWj4&exfzj6N!u_$l#vo`q7-)PwYJRasGB2mnuLWHhtd!V3C2Zuag@8S3es=wjMEsf5IObU@ z@*L6Ggy`YZCBI*BgC6SC_)@sqV!RWq4oC%TJg_KqNpLwZXvO*%f~*P*hP3X2Yl+9F zFhe9A+W^6GHl69a>l;Hg2D( z^F*8hDvY?4&Jt|9QWfUl3L6@c%W8JKZ$_c}0dGYwbrtAjarI~sQegLqM=Z*D&(4GYjK7?U{C5jsPA#PEBkWO|9 z&gx1Mm-unINX#hI0FI+X<8C~=K&BkbRW)w*v5qvIm2a|m(N5w$+nf-{SS(tZ?Av!) z?il`p)cq4D3n@s3l9L@vv-3=z1@q|}fq2v#H3>$qM$3bt*Cnu*==}D}2l+>7E zN26tPI@~zC04YKGz1vHhzD6>7_T8BY@-P}Yus3~s_hLQd5~X-wam7qYcX?OvC0nWc z&`;IFs8v!7!Hop5a*AXdwqUV% zjs*w^Jl*};12OJK(nN$XLud*EK5hF9dnmD332{~`hlZuaAOpT&&b3;#fkdtbQx-Z- zDH3hQg4EISC_hTe4K(>0j#&k85L?T93T*aD&hj-+Q=nYd<8&Z5pPZ+2d&K3Uc?av$ zbXTl{e(&N5jZ==?(;PyU%Pg2o;hd`R)6y}&S|4bZ%S_;OYpa@vOi75*g}#SK$;K=% zwWd~{bC{7v3BagIzL;h9{@d5SAl#DV*sWvo>AH*C_n-Z2X3Y7HyL0^#&? z1-AfYV9gDE7U6D)vrmvKlPrCBXDbCx#Qu1kc^%n=A1Q~w2(umqSCjv{l`uvwn!i>s z>hY;$5!hMe4~du=cMbt+ExzJA0v{~)#29Qztg_#{aR^wr1yn?rdvJ4gUp(2T>r*jj zohdof?tVShHwoMVLvK#62;P{8IXOQ^cHW#<#m%|}x8`4PBM&v-t)p@lUw#nIKl5;Z zWa>;mcW`%!+6r^iAj@6T`tw@;EJOvN5vW&70la2UPF+9k$VaFl!WB=asUg#J@RH{M z-^sFah9dmWjtbp%jtH+2*?a_#2yei+zfyhk?;?nS3MjbwCyk8hPrtZ(!10fAMm4`8 zAN!%v9!A`?j$RD2bPsdR-eK$F0Waun`xV!5{vzUj<`zGG1YTvrEF;sRNIayHZ_J=Z zSO>@)XQ<-~^e4fbTjKOo-!Z(XGH$V4A<*4tLSBYWbf$wp{m7tz=^ zllLACkAfg&qDm9m8z-`dSP#i85Z`HjP*U+-&BaZojQE#y0IED?vgG@dtcje_tFmM& zy!77)8T}@-uA~;F+smNHRM4W-daB>L5U>3~2`7yx#8a0vAeyv}P1k8AAMzss9&N2r zctA@sIkT`3Lq22@gOcF|HkNR5Kmu&}*zST6#1AN6%-`&p3ppe{jMD{F#~Q5l)b-Ug z3}7_5s99yy^?smz<>Z=BzA9KrzAB%Hu-zo4A?4S_XeO{Std=50vh&E&PNQYwQu(4H zOnCWfjr9Kp8LTt0Q4%P{ERtP61y>FMf@74{L$c5-k?~F9&NC2d8h8u7ld?uEQ!DZA z^n9zgj6HtzX%u^Wm=A@h`Yfcvt_@i`XToI%VTCi99l_7ZiA2rrlHbQbz0-Mpooz&n zp@|7IAU-ulVXhf-P0F@EI>rWnwKu5-;XTijp8Hkx}{+5c$UeY1)-k zU@>iFH^$sRq53X-psq-j4k7(E0ua7F82%^4UZi)lOA-6n;YRguP;{Q=2|Mv^Ts$!% zADMIZi)fjtkHTu2?qAnKOo;DKe^Z|xlbWk~0OE@7yz8NB%ZK;;=2L1{H{kPepfaMyn6Rq2(!IQJerfMRE`Rb@WYwP^ta-M*en@UB^GUQ(`gkANe%_v2ZJSTClC>Af290YJ*}p> zCCO8xJB@o%;8(O-IsMxxtbKj|5`Jdb8=S)~o9P=6;^t>RWyGjhY&I{FqCVB8Ri!dg z&Yvj!+`3pm>-H*Np{d!s%)7A}D5-L2Pt5za5t6SJf-kK%EF#78R&j~-yC{2&aUb74 z$nl_1E7*Qs;5UTG)yiCn&${y`Y}Jm&+NA>0Op!;2w-&Ay{TmFA!@FigLgs_=J2D6V z_=VUx3du0AvsGX!bA5GW#3WL!HF7-lYbix~#5u*cUK z0h7TF>p6s*Rt~snr{awP{rHV4f5?qWeFP?KoL;lkG7|FkaI{UHp5d~lj~_djSz8nw zS>0TwNyph)lV8Rl&2&1pE|$vq01tEDERUfc~MOQ<)T*MJR7b^+5bGqkvx%1h9Iz#;;v%EU8_(;^#{Bz;!LZ2C0o6hZDcMXBo?%-;=< zJY8tpa@tY5Vwc^fEP#VSQ#)02H5QIz84Z_p)zKT@ zs`QGfkw+~|q(uKYtWTVx|ArG1K~nZ}QOKUq54L*S@P&U9dSDsYF@6Q&ldx61aQ^!W zsY(IeBJoz!P+7WS;pCKd!6b%9A4kEt>XmmmWO^WVxK8oSfA5d{sOp8P{MZt+5P_Ji z*^wd_#~-pOs0UDs?U)&=&RCUely<+2vItE|py@P*j?~f(b9=}XD2Ya?gfs1i%nDKC5-2hq7{Jq_$9=otXWDQI%4gD8FMYm~n038P&_cIxkG{T(<)(LkJd^0A3>^!3y^H35mDo5k!6WNfA zkFq{)sGoC-gYy!>9u_Q4Wo#!jQ`6tQt^(FpwoU}^*D=n_4P}_*4BJASSpDoI{^Xz3 zLT7=6cl0>6iO~i94nzl0MN0w|Dn=J$}zmC^5S^eGUYN+{?egdPXUP9YvH>)vwav(~dvV zK8dN|J@VyYGAD%l-w0TRkM>Ty&1z7!CUbjcw{qc+=G^ub34befUI$Vd#yR>+5nUMp6}%W_1K!*x60O7Nr8a*ADx}@o=u8#RKPNwhcJ-Tc^`J zPZGj0G&b**WZ>m0-pq@|p1=naEK1rV-WRGZj{d=4zYo-%uLY0(bl5V8(-|&$BAk5L zwn%Z?7<07J(g#^s9g9lWr4gfg{Y&%eQFO3f14^IYzfW69OLwcC75EV; z>Hu#59<+;;_sfp0as>KtRj}_Dzm{om-jrZ;*M9jL#p;8*j4w!?5l41yfMpzJRWtep zMmo$)&p&Z5T$-MenRlpian95+-{O~d0e(0GJjFT5Y}$ArK^}xZtWD(0Agd_xuvWcHFyA7whI_|_U0IU zqUKQTsK{DF>>)avTz{3hK~O!6b(zM=<;2aUxU;Be>T*iR7mL|){1H7*5;0i!(374c*p5tRR&#ga(&TrkLNW7U zLBv-m=kG9H^kKo2SP+)23Ye2$D7%MsUfnh%A(|pTsY#U|-@Y_Yj;{sHu;$9#2+A7 zsC)6TxtKqnOw96}Q;AsMzYZW!5qZDofqB!XSjak(N=29jdlOR zqtKdJmVtUHMBde2MGRQ+3mQ2@&ggJt!gU2+?gANbM$4#RF~qo8z34i+L8H$VdQvgU zgMZGzcS0k|>;Um+zpjbty(XGMvx9GmcC}9sZOMh)>4LpTAMn%We$B%rSsW>hLp%iu z>{{!N#ldL?hp=I8Mv^D`0$G-q9B`ym&A3QQaL0vIH>n5AE-Y2%(6}W?68f?Oz416H zw_|tibBwSjKgFa1cbS^SnSy5#tKrlS&OUD$8h6+)Dp#u?>}5D=^>jeTV@cDxSwt1=;T+Cvk~28yhE)TJ>No4YSWE6~H*Du- z(b}OF?L7WR>&s@hZORVc)I?7Ne@j_`<)&wlmZu;x?=5(`OG)W?E6wwu#bVCLAPW4; z_}s}g``>VmhsRg*7v(VIEO0sck9el};UxOv@dgI0-zD(IXUt?!?C3cUI)dw;&rFOPZFoX%nW@t5Xk;_0THXvj1iM1v|(if6}S#f7&NO|_fU zJ#T55XoH6dIxGpp?vo2C6tU9RPYUHyWhmn1n?QsG&zKNgpIA!_OG9pVVB{Fx zzfGV0=Z6h2&Fh)ruD;%JU}OzxC#fS!f_%iLxkuF^M2|dMyUoH2P3)6IU=lOpm+Yb@ z6P%dE_dLckzy5~+ak27(*%;i9AN;ugCl1Bj)J97Gzc_p~SU0Wzm{9Im?b6VGsf#|R zbl7!1U-ob-isdAa!-rZ)#;1x0O+FtaA8eb|0jla;Plfei_g0b&k=k8CQUO>QFHhyJ1|*T1qs|y3ERy?;Kvna;l~_Ec=kf`)y#hBz*5BbSJ=`P+U%zyTP!*8AH6|i`dm+D3y;JBe9e87Hh z$p4J+x3zr32m7+v-h%U5>V1NH@0j!+=zW5J@9jl|e-Dv+FRA{B+x=4W{3_}?N_-b- z`>NXaO}tS8`?B0NRe0wO7JL^1-aR}Ey!)c{MCw!Mgzkv?qwF-!n=yz`L5mlutV#UM zS6~9qgQlTSn-4rR{np5^q|uUPZKYi?hmZs80$1o`=gCQ#*N2?Hyk$ zfS||#nzEdbXt9~&6Vy^Pa6Q69jIRCT8Y+gBYj@fx~>{8Pr|NnTT@LP+C0p>1c?Z zD89>5DV|oZy@gVIRO@yOH9cu?QaaVdszs20wwNQ za{hR(Gj%CzOml`I>=;as$fpV5RgWnN%=-rTZ2vH~-@2rn6WFX&c(U77yJkONp2pwd zAsxu{ST3a|Nm)Pf{swFMTZiO4+F^=Q54#D}epz4;&+J$UxtKW#fD9hct;scs1e8lE zKLOb(jv#yE@)T$i>J}&)oxdFk&>YaN{+5e`3|xZX%ts7Senn$(b22hrWKrn z2uJ0P#H?!stPX}BBJ*Z|iMi?eQh9R&s0fa^bxQ4$Yudg;neWwQJLl}uQ(q_+*Q+8Q zO68c+I*-G_2~Y0?NM>4Cj|}^NuA;q#2R3*@!iqk!`>X?u?`#$oOv@c>SPm%um1gCA z%$MF7doa%>xJ)YYoT87bC7kkp;*8-wZECTzi5g^|@XE@55j&SwhS3&-M^M)^hq02& z;`QQ_>x8Vyp3h|$8HoT(;}cOdfvMq{7)PEms=l9Q_L6e#gIEF!a=_7|I*gU$mN@0pVvw?Uh>uO9{oco1y z;X^EQCuKn_ViFyoHa$rtky(=aCFcsJ<8?~-#jGQssJ=l0?8bStC|aMhDZs=b6b|Ds zEwm&trQ}g&4No7+REIiN1*JBT>GQ)kcd2n6HsQL=gFrHwcW8c@t+S0NsRpXC1I51d z6j%68ntez+dg_$4dLfkJ%E9kiJB0>Znx^I|`J|31elZclJW8sA z>dZ-B(X3vsEq)m|i_UU@K0A6WJxQbf**jJsRjlI>B0+g`A(ByVscp-Th8&2$gHv(>bM80UZ$z{>uoDn9F zI2nES8|0yJNw&W^WbtD6p;;$%L^ds1H*4%vBG$|tesa7U{2=8|cYWqhm%qT{B4=ei zuv5iaB8GMQnO2p9nR};Exfkckx+1pPcv0RY2z-Vz;~`vIWj+70Z-uij=iJ6?vq_V- zTd#HO`$y=-Q3k(0u73C}e&Posgi8Z~EA>JK=Ujj{z8gamn|}vHs>BxO9p<7tx9bs> z4&+HAW}- zFmEqXMm3&6cC_G|5M7HoQp~#S-i*HQ1^U19O28Za+)VzNxZ#TGTeEL zv9fIoQybkeD@8^rex~AvzXIP(&IkTEta5GDAJFC<-J)s!HAnSk#jMmK@{K4cf%95d z(ha1462++ZLaZ%*&N$WVj@=l_9kFg|w82^*mj(8)i_lAKzsjm@onXN#mIKhfhKOp`jbX6%oy3S5GGkesm_N+t;URO(Z_&G zx%TnJQy`BlMw}T8)bEOtw$Wglw@R?4d)s){5|KqK|3jPuK(0;OhXjnxT(OCxmU+kBS!} z+R{O8xk^OkzS*^6HCG5jy2`;?^+99po$27!1hu~TW`h_96wyj67>-39wurHRXIJG(!>h&D1y7yN zRUIPfA6=L3H=k`_Hu}wA{DGX=y$)U&6*pW?+mc#=C1xoMv0tn%+t_eB(&Hz(hZkPS zk8dy}PwHY%bCJb09lEB5YdTWIlvf#&QJu!`_638Vw&B z!w;UvRZqeVoHS%)FHI+D^@pg5)kTt~^I9{g-5{z-aB8aQ>QyY(7iZzEyI6NTvUTL$ z&7sMFY3|g>7H^pQQ*QcFz7TM_6y89D#em7@B+*Wxk`*+2Wn@*Fa(jkmWc@Ceh}L47 zb&(2d&R`R5Y+tgX#)5>UdS8^W$&4qJw%^WAubpRyZqED+D!a}THwOGQ-GghKfQlz~ zldu-^Xj5ui?J)bUsaz)Z2Ib*5|CvVo_eLC5!2ZygMY zD%xbourWn-Vj9V%5oVtdU0Ur~+Kqax*JtN19LW(Kb+Y8jWN3Aoxp!LMgvPON*G0mE zk~hhd*tyx0;X4n8ODW8(F2q)M6;DE=8c1AY7y#B6(P?LPoG;IwD}DIDYYwzP&$t7c z!5Ya0#UI>s1>LeJ4!otAc17`lmZwyK1#zFPH-P{*w_tiTuSj4R3&%u|$>`z5E*Pu> zx<#6Oem%&0JOHH)A*vpE%ovqEVM2|BBUiM&PN!Kf@P6B4CAw;t&jlr0@jz=aFvd;X z=&IlndEnI+L>5&cE&ayj>YK0mXe9#3n zE+~01OHA$nd)S!PkgFExmaM|5#)X$TKc1SZNlQ--xwZ@Q^{eKXZCZko&ZF3@dmbY! zqLqK4>j98$=&;5NyAHVcx7?M}ZbOijJ)#j2Z-t^%d0w{l-0=`T-7X2leEwhz z+rUCmi!?xzrcGAw93vhuAPc6gws2zzI^9aF0so4gd1QlMB2kOV1G9Yp=nj6s+Et6( z2GbERszdH0ui;qUBaet-UEgIP1WaFLu&poZQJT?U6+16vyJ`cJbFHYSrHGG~Ur@a1 zsD55>8mBl}FEx&3|B~HeqZ_N_`d1>ec3+GRo?v(eGe0J$LwP)&+B}l%+7i@ZVx?{r zW}2C)Uxix@-0D_%aFOZ9n&iB6S*65j!;gE!15g*iuSt7~o!IE0Nu4N5hwhR=)Wu(` z#DG-*$q=xJ)(n!q70~hK&JzivWSTlj{GX4R3E@>)@n)<`ininjg8|HU>mR@6%#*- zR*xT=mHCL}>B@rz4%e1bJn~f=czZ55%6evu)l0n`4F&+oq9jog&WlOHnDD1|I-_B+ zW|_tff`%xAS*=b+cF-ZfzH%C)sXB|ch2{t*l4UC{%YUVzuLYZ4h6TycDxg)L>`Oxr zphK_SpcFaO9k+r{?MuiQ$_QQo3r)uU1>~+aOCvFp!bE3G6aCSvljR8;W}2@9Qv%?x zFWfMf%r6v%G)pKisi6 zcilzo;|MC2rvFJF55P_8BcnD}s3HRm<5eKcJGaF%$P<55?feyhC@UB)e84fb*CxJK z>GA?!esb#++01ap ze>isvD)wc}caV32QMmg`cJ^5GWgJBlnE3d3Rnpq)CkvNB{XuL;W|M@*$Lhu~s)}m5 z_P4LWprW1f+F%qGZo;qgDhgrw?+~Kbh78sIjx(BhypH}i1U2e@qe*V6D zF$6PdiFs+RB>pJK-I9U-kgvZ1T9pTsaQ4fbGVS7uABVfDPP3>9+P<4BQXj*r+OdlU zn^x`G*+N8^ zz=*r^0ZDWJ--ZUif_?_gHR6x^g`{KerxCF#7EwmHD3mF($Nf<*8-)}NrzS!tX;P*` zHcn7}6L<8S@1G zR0111L=1oJ0d6gWCA=Hk zq?QLoD4AwQ!ewEZQ877Tbos2C<19(W@B&mYM9&pJ^Rdf>wcTnZS(7p4n4cn#MAu2n zv0HD|Fau)1l@COOUJ-yBAA8EfINaCm_~AJ2HLuQ0)@VYvmU+8`F){0GSSKMVz6it} z;wmr-^OU9Zgiw%VK1)Jm%C1_PH?f%jZ2aiiKTD^GIvlNTe|?W@cKfZsAo?$ zXa#6U?!lwSC?kgSOYoAh*2~GO^~OIY-5PR5?ML>pa_DWC0x=E*^PtUzab9uFuDMky z)FQu_efo6**75TMs2%i>tv$lyzW|-R(FiK1bO&d^88N^KNIgn}%2mC%!O?*Nl^aX} zl`}$u;Y8-a6Y(j)a1U_VtrCCmH*!OiBGKTj#Rl~y5)49B?(zsS;}dGc5bV!5u6l(p zI_8i&m-i;>s0ndJ#&+wBI^OTyGb+M&^@)(P*^B*T=?B`$V^g>NsgFGFpGKVe+!fsv z3i&-2Izvro+kg#g?yj41BFRudMl`n}ra>f2nbi26AEnr&kZy&x8d*qE7$!kh)oq4a zwJMTfmEUMC36MaolM<>rw>xImSoXTML^Q)0XdQI;R-u&Lv^8MLg+>4dLE`eWhkYMT ztN07wI$~*Wi-c??_&o^0F7m_ZG5~cmXWRUD%eA+kD%71bWAxa#L4c**KN?0!c^14& zwr1a8{-d-RP{&byyqs%M-_ddY0a|_v1IAV7;S5t1*m0VWwfUEDZr8Fqc<1h-NsJq) zK|++TuxErD<{RBG)zB}0FFIIdxVC0A=<^-Ad!{L+XXKA@+Htsktw|7*4$ug#`1Ol) znY=4%%p#6YCJX5_V)Te2JJvYyhkg=&JGP&d%IFsU^0S308vSmSChP4JP1KISQO?eX z^Q&P4S8(|uW22arj?8Vbgt5i+F{O7SDY-iy)aC4t|B;kp1)csNA^rGaN&0{Bw^MR9 z5d1I6z9cnIy~Ks2uPk6E^NYkUB)gw6f=EIH;0g**5bhkeRsocG78Jk~BRghPQ}Unu zNSbIB$`y+$(-sRB*E1Wlql4w>R&+KSRYe=knyPC}m(34N-sj)U;=Pm#|H4yhQ}tGrjF9prBfjVD zTK|XfV`7X1xD=_MiaoNlWJMySYJR3BSBnF|0q>}L(%mU*j{Lh16@0D+CCYr{K@R?1XR#c0FMuJeNvcI`3EzV-wN{z zgHofwLcpW+h=sIqdS+=(3C$-Q8O4in@q;Xo7QgKK2GVw@is$Z`e=F)^aQu5-IqiwMYnv+@d(V%=LbbvwS z8XZ3bqE0NGq*-j#7LP8aatg|yr=^sZNmJofuVGp}GpUhNImd98&y9s-?LDI=ZcDmBm)gu7 zcWx1RFSgn-G5jB0<7{HPC&TxTIxGvV*~GBmWO&Fj48+)y+OzsD#WjRmVfVXg zGQX+jP3H1!;FArHBfrnjE}3+U9!C%I7#wn&9w@Vkd&*!cm_)D*(NXD69Fob( zHe|FeHh0V65ZhVn0wI-RSl#&( zcPU3sA93XO_n>q=mvG@M^Y1FMtcGVtRyAV_H2J|#c1OV(0v1)^eELotduIs&!-=Hx zjJBLvIZ!J-O&dfsWAT6(^7wfu(4IFqE6K$QF=_#?Y7o_aH~W?bYZO|pPH07Yu6#?H ztGka&dKB?8Zu+BO*|r{0c#s?4nmw8&xe-yKu)wejbt9lX9l77(&%8$FJxsJGC`np* zI+Q$mO2z=LtUXRMD~4ndtKDIAkW|jZh+NB(P!6kCrMi)1r}xNYjZ3gSL?6kkK;XGX4EY8L*}a|k z-sqskaUYZ^ZSUS$1CSBR{{6R?3)H(|-dkYjn9B3z-NwMNkRST;f z@5VYhK85o_cEwu$X9=$rvJpr&mTAq$1h!<@;y<+m3C6K|2Wg||&=9Zr*TLyC$#xsI zb)nZ<%0|@z^OF4 zM=*2%5H@0>1{j1nzVZzA<&ZU}a1+e?ijvg&!x@Y;g`!C-$nCUJ6>f7S#M;R+8n3O6 z4To6u%3M9(O#e(?_L+s7fiA+|;5%GfJmiRSd;V?l^P&XpD)Ou}Js$Hl#wNQ_h#Z0D zHVWHy;j1;_B~s+vS}lWlFgGgj&#J=U!z2tD_W;o*6o_zjau%dd$P(N;ngGi+Y^Tw- zaiHzmn;LB(f z)80Ii_-+a8MSfq7?cy9+yE0tQhSd4y?%JfQ+BH+Y&<`#ZE_GhYiJr>Xp3auRxF6XL z?(u-av$iAr7yOkQ;`1djyUK?zdu1UIeE|k8#WV)L`|c}~?#}}r%q402+HJi2xjTT= zjRj@K!bPOIKdL+y(5Nx)r0;(iCRT6tw*~yETN{kq79z(#FYjd}p( z$}85psc7$t+tgv1RMqy*dm2y>e!S6*rRc7n&{$y_To`0?5!yzs;?js`{&ea;glee$ zaQCFPW?o6D?VhO0TT)_{b!V9!XhZLE;h6OS1{)Rf0SX<$rf3AbVH7D8cw{MAGxu_J+$rrLH$I4M#uME>;$;Y|`N{E?dvmBns8O7%?rHNY2hfwneh$#!Its-%>6g8}| z^NM7_m(;YAl(B^sw()jMXSybQ00LsN>pr%n;T?RUts@6tWjt%}Rmd(@jqh`t^LiMZ z>XnwA%$*7=6#*^}e`@AO@!+zoA8Bl3pInVe$`6+pPHIgNP3dB6qsUS1*I+HyYeDF= zssO3ltrnu$7X~;kyEs1}wKQPk9L=FknkxG%A3aKpKa87b`zjyFOS)FfZSD8fJk>9( z1kj5C{#h{Eh;Q*p7s7gVBFP22DPoUTXUdR77byMBeYTs zf(6BB5lTmBK=Y^x(<8$jLkZC)&z>XJ>b4S1pv3I zuLZ2#;aeTd8`Ii0vL0|O)c^P)z#1`_E_TTzlJ2W~JwC(H*eEndaP zQ(;JaIiyOLLB7ksZd;{COz=xJpeD}sZjI}mk25}N509tf_M$W3wT84O(B%@ZZ!$z| zmU(lAnMijGe%^uPC8P8p8M*O3rtknN-Sxp7W zXZH^40j-=vSq`UnKae}NFLA+nDw7ZBEih_9Q_{}z^CG2*>~7;jkz79}s0-zh@1J?b zY5Dpcq@BSs>b()8H=>C{^An>O6rX-hy}rBvwKC(e{t}BHw!XaeH0nM4cA?LB$sfoD z=F$~d+i6$EV_45OWSBQD4a+EvGniMXKi^ABF=T@MS1=wqq7MYL+f3z0Octe?34#Um z`Zfo^QFoS9K=UnHJe(XIaJw=1sE+)YZ}3S@Aldk6g3x^PMDU8kUJTNdol_3Rqb;?m zV_oqe+i5H0iXAVwWM|vQrJ zsY@u1kFag@hY*tUZSCh>S{;h~jfg;0)H8y{4cw}F8O05sfq*#OmZ<^HINBqFjFv!d zGp3utXVQqk;L;6ow?85B%}>)$teQPjH(UWghnu93o2bR}X$7Fhh(E_B;u=?d^a!g5=vY(izokjvCW?Sh6ds#)kv)*? z%}!O|61Kyd(RSLK5f??eEMkBR2Wm_LCsDn6Mv#x@y!Tg&10nq}KvX{lULOz)P-J69 zA-P0VFD&+^yaKe=x)NgU@{O?MxsDBVe>kmDSBk@Ct^DJhb;@l9gG;B^qE7!c=eBME zb)DBtyxa8Za@}-u4CX6_{@KrUrBA;JNPGSfam``i1CAl7HguuMKxT%_L61S$UWjH7 z{fo}HRSNDr(cwIW2`g3#FTT!Au>9H|yv#iR?#xCGRyeJBet(ee zjEpXrDaWSKEP$P7z|Q5c3V96$mWs_Id)(TT9*)fY!aHA@Y&2}v{&7{+UJ*|s3>Y_c z!?wO3V$p9~b_kEE@ZU&c}t=UF~ZQHh;VcWKCW!ScD+qP}nwpmf{oodwS+-mH9uovc>-x`BZO(TqaIj^5J z`OuIB;bQZ*g}}ketBFn(8?z)(2_szFeWB-7QybOoSqT;9ERRrmf{oRqi$0MPvm{)3 zjZh2A6m3;G1gkAc0VOONys$epUr)Eb-?}`hfssnxv*{`h*d@Wq8 z6U5cO_>Wmjn4ncVu%j7#Q}*@-byGHN=wT1EHr%e_Vb6wS(^`1fJNl<~*V`{8ytisB zq$9-c1vThH7V6r#QvukG|cn&Ip#MJ7vJbX<5`;wntjFN0HfV zw>Wyr_nY~^n9OtMr%RySiKw&Kk8F*I+{RS<@jQcmBHM-PrjlGl{iJ8t6A zhE<^SZtWI~(X5Iq`nLydr8bx+hSRD3RPP}VPcnNJ%+B%D0P*SD)qjJ+9>P!RRoPnAu1ij)N`L7r+~i$k;_`JR80G z_TVop|KZR&@F+%&+Gqdi6?S>F!z}q_mhxsGu_r&~3igf5CKk?~Y~w@QUsQ|MNQ=ZR z`YM99=IAJ>`KMlo*FZbaUtX&8UCsH&lxN~NTOC17IJ%CUWeadrCGq2!-CsA_H7{FzSL zFATzkeG3Oeiw9X)l0N;?>{UCd)GlfWSQVwXb=a`@0+_kgpM6R>szEEEc9I38LQ8RO zKRsAwCCtomif_>wk=A)?Jgl4ed$bcO;v*r+Py6++5`0CfLzv(w$ikXYJX(ALiV|By>GWwAt&zoTs}>9BI;N?O|- z%q_7d0sR7Zfijg>eMc=IyjaktM}9XKO1DNL3QMOZSqa zk!>m_l#RQKlV?~w^YpV~-}5K|+u&bW3AEkyzKqhO&lV>;RP2bWzS4ia1TEMraTS4P ztgbomRPM_B=;iFyt2WCoK|Zn=zs9|6>!oYW?t*C?V<}vYKO?IaNu44QdWqVquSMx7 z!2VAQC^LVVtAdU3AQU}xXy|EF)8`?*E5ieNH_h9gl{Ql1h+i^fs@jcNz~LIK8>3Ba zIH4a7&pMv#Oxi+@qaSfzYFGctt5rIzHJ|$fu?6a0N(Pi`aou*k2Ol7T$`%t17NO}3 zYDW(^M?LfRQZEib2Y#;2(O)?$({p?#rO74n$8C{$OR*%Fb0XjCV9nUEu0S~_+D=q! zTdE9Yc?dSI(t`i%5S^vjK;@@rVPg|joB578KHO&FjuXYE7)rhu6ALMk+PO>bra?}9 z4&tfchJii+0wO{;4)hYJyJ~iQ!uzhjDXGyysdh4|kj@E?_k-DF_>F>^Z?e&g|e0zx@u=MnbqMIENK7jcu@M@b1mCb};t6*nJ|! zzESc!MnZXjzJ}Yu=R0BRLCg>sG;T)aG;unz$0?qVsBqA7uH{4j&z%JwMp_&xH1#5_-Np z!Sn&egYA$wQR0d>TKOu_OIVQ2fF?Y3N~YkKU#=E$)Fj#iCkPf1t80-ViYlZem=j6q z$99vLhZYAJg1LG7O0@dfM_!@T&B*ltIG&{)GP#SnjMF_@J@(-xTKoTor||88^|(G1Ww*!!@*JepD-CaFRU0we=->gzd`@+ zQH06SJZUr}06@vFz~O(EHz@wD&i{ncRUtf)k5GPOpVO%ano`Z6M+lMQrNsb}ENbg~ zvHSR9@iAxnYq`Wh*|;t)ff22%@|RUSG&Ud=xIOeVEt{62!t<+|L#?lhp30j-p3JWF zWv}wSdeX*h5M7saz2AZjeByJ?BV<-S~zA z0N=Dxb`j_vPeBJTRH#(pdd4n0wPs z9UyS$?T?YG?3aOONAIFR_FICcsIT#ZXlRleu1?H*(3&112R0LLodvs0T$?X9c+{_$ zxlmJOSuQilG!&dnOJZ!b9Z&a3IW&jVrJ9wbVl0>|!=rJtLP(5qY5p5QYQybQ>eN^XqeAFN^KXho9_D+(9Bwb^)E)?=fTgusM zretl2WAn*I{W2FeSx}kru{O&o(`1SXgqgbnkVm5NMWt7S}ki-9}OzA2y} ztC<2p$sFZFv2`(7y!b;AMD{G-BsvxG9L6-rrkIOy!g?dW&3+48T}s6jc}dY`S8n{M z-RU0MBr5a5qhzmj8%*oXp^a5y(^0>u%9I#D>W)IKMT74*bDF8762V4|*WA!|eezs> zv5hT(%i)Fi&C?Ic#A+<@9&V#BZ}9B@_K*euWYgeFDCJhNVmC=F%vt5lWnO6~D2N&_ zZNNWJVwV)`%r40P#Z|3}xtuR3h{kH}2AX2ls+F!Q@j&few72pa6}+?00n;<^fT`0P zfvMAf!;%@q#Qgb(&hnM$8@Vrsn=h2+{zV7~HJhvF zuFb|dkrV0(lc(Y%84V%DUoBI{i}GqkBR0;f zgL;x$ij;#Z=L%Mhv%Pi3nP|$M0BGi|YBJvn=GC#sM6C(~Be(X9+Kh$C&kcwuHhA%! zgD_st2R8YT*PPrnyR9uTV%bh>A0rj`(C#C#ZVGnHAs1Gpom~TFD~{8c%cV98VhlVU zMnmh#}$TW$qRKrIikjhEqfPgG< zayVQ}*fz6QxD+Bx;~bX|@a_gSl`@@|FgN9)1j?SzHdo>UuxK}td-+Vd;nVXDM-7XX zCEb%OHBpVd>};TunF)?LLY)@@=Fx#k?^8vsP#0^JaeMNt$@y2(iaPe{+#;QZ8LoOq zL&_ufCa0)5NJWy)8MSOhC5tG^nk&z!rw5apw^?k}WE?n%0$W3a&>g+HuYP|h61-36%-(VaK@#~#MpERe~VJ!=oi0(oU=w!MyF?aV_ zu_J@Q+@vVdDvnsal%-}wXchL*Z)xE!D_TuphZzamCYc9}PS>}=Ne^XoGJi=s#ta=g zJa2@oV5X$jfTD5=U_oq!h}{7C_^8aw2x*q;3Le;lEm_>LvBnCP7qU66;fhg(ilY$I zyfyXphf9Op^6T`$nKb>w()DsFT(qoIte)YwhvaK1Sjkw~RLF?Xdc5hOggfev&7Te=|hAXH(1B4PDG6FP1lZ~ja@~4oYvmXSxzijeD zM6$T(Om8-mBqT&z>o@*}Cd(b@m)5lvcGZzw+P0HUO0NXFVL!m)D-E1-1#j3wtXz-u z12RYxCWty(@p4s*Sou8);HrO8bNh0D+#NtEkVVGs4~7Z97k5-&@sWVOTDriK?FwWD zzBqE>4JK_Kg0g{Xzd+43XN)Z#fPUI!ic(T->frtR(~_c3CpIXl^)4`YMK)(1uSqb2 znUf6FM%XIa|02`@=oej$|0C!Z-4x|cy&e$p=I$y=6g2!xFCo|Gg zo$Fa2=45)He!<4A;8BiN1w*5L_vGy0!B8tmR5ku&|~p#XLT_E4fo%`Ki# zqS3f>NR3V?*aAkr3|RA>zJSn#`z#wz)`wQGR!XowupA%w1ahKQm)xelBJY2Kaqk$k zcQpE8M6^*k$@m9SBUM$x#W}_ucuCo)AJmkNCD(nGfbLZVi0_M_1UL1*j915ihE=Jf z&-T&Tdb`|XbBfRzCF-}?eOA0z8SK1ia36|y*i0YpI?#0V13E^tU4yY6?!a6wemEI< zokPYWCVXUD=NTkaJVvI!vGUchU$cu#aXlS%aM^%sk#1AUt8#}zeM)wZ>*dh{CDf25 zQMrS0pP$6>ENTnoLy!h!bX%tp^(L0wnS*(&_GVD8wg#%r89Fx5_P#6&+0 z78F~y9nyHO*JwybKJ})#;a)kosy68L055jVgK@OMn_6pGV1^2)4IA%y|6K_GAKG11 zYP4v!mGC+{=fDa&pce=oV$Z z1buD8ILfu?;vFf*VlES=Si0y}rJw%=n{$sR>=OB{I0b$yPVWD);#AUiApZRXZLRGb zj2#_+#dOlfPG+`7|NlKVOG(of>9_ne@lexVWBHIPEz#{1J9zP@raQC*J}1#t~;Z&>NrO0m!AL2L(JAdsS-nc9{0Ec6}0dhq!#>50k>IX z6UdWS$G4o@!kZb5JsmnUF2(jq&zXr&U2)|%Q39%7@E9ssw-X3{7lW67t8m5YpT2K9 zm$81qfL0v4GnO_Bp-Tv4sow__)2#QeB{tuGshBCMG$Zc8Vcn~kA&nj46PD}CD!MF? zrOyf6eegS*WNr%vp9!GtzCTM8uE!C^B5OJh^_hSUz#UKxtbX8^acw=PMY!UusU&Kf z?E;?l+moLf6)EVqD!;B`{-xLVZpn|qu#o=BE@3Tlz!@*P7WE^d>+oR32xqFw(PZ~8 zKpn2l0X=@pZnQ&yf?nH_CU$)=ZINzb6`Ry3-H#6v)-qv7HY7S~wsKhW2zqClzf^_R zYLXjpg&uNEheujp3UWsLf`idAWPh^fDd2$fcB`Qg{5KcTY=ob<*;-oKE>c)Z_OadA z&|J?Xa;`+aORP%{tI^Z=$$(g8hc+Z}(CoCRWuK-0=_M)t_{NW$ zJ|OE?u^@wLf$4nc^AU*gu4{Bw6W?3%3d|ulR(Pj2^KxcBFZ$sGB;LLd{)?fa-ieKh z+tl;`&>1J;6x)vRJ8*(U!gd?!$_4AaW* zPM$2fuq?}z-`U=ivV{IAiJ{s#*!S={Th!{2GYXGdD1v2NaXc%7eg1^Ja80#50$c6K zVrowYI=U19Q{m{?p4%q4!r7+nfpJB~Xy@e*|2stQ6a4kbLHY`XeL}}Dq`OD#gHysd z2eTq6ywlxFT$IvJ9WDRE9-W|!=H`zMMUJRL<`K=Um7<(KYUP^dGq`D}4J^TP%{r=$s%2?6(|41T} zCR~w}u}6B?q#4JIPKjm(Xljau=P9fM{l^7?H8cu}loaJ6;EKnbIAcle6NPm3NLK>hLfyj zdISw9gG@k50LBS-n5lp?>!f!ZRHCQl%hxlur5mPH9sn|UdsJ)Dg9xecQLM@opj4eeSn9FXC%OEjfpLU=gzxvKSB*jP)#jXmQY5m?pPaZX5z($wG-fGJ)M2lwhEEtF`9 zYUq&2@HAv|9W0w`F!CRCQ5$@B(#8zTi;0i6($%`J3l!W(j<%Ug)VJ$R{hXl-opiG~A3T zm*EJD*)k6yKL>`qBO%;JD&1%0G|#`RbdcVc7;&9!CT{k6n!iKsa!s^}_T z-LS(`Ot@(A>_s+coNkdDbX_Iv7FGE4#n~6VMEbjz`-)LANJqQ6H@x3%WLkCto@Y(a zOLm7mm0U-A9H(+lIl(1;Bw((@-(8|;tUBxCgEnT*13EzV_bR!+I zcwMs^jdV!NTWD%GpTTs{%s*m}wHNbQmcL2yZKlAyPxW32$9(k1`Bb}P7fBdU=+PD~ zC_R+ZGaokRG%=AJ5g&4>NT|dsKVjQB^nAdm8ea@CZg!b8wiFK0nU09g6Z8NP{zwI& zP!*DqzXTKbOmm;>6fr(DccF0K;!5TuRp4qq&q?^wgPkXyL8D10y=d{UBs zdW?S&KU5q)f`$*2I~Ic?6cd<2f`8gj#f3Qxe-zSB%ks}Xp;x@yUP^3&FR{PqLpCsR zAP1XHZ)gXxm#h5XpTVF1;vwiTK0dYl@(}WVH|zfyKK`GJl$5QF>HprWrEQJ=BMM0R zKVXE8uFGaxzzDaVyj<(KYVd7@DwtT(BH~8Aa@hqJHI)?YO{ihny@2<_3|mrOz5LkJ zQLtMf8 zrkGX@942epb*=g!IP%VdHDd*zb9`wjG4tl^K?{hWu*JpOx^jRT z%iyAa_)8$mdz}RCJA{_)0LfUS4!VOexMy$SK|o@Nr9NM{i4TVu=-Aq9Cpq^(U&y^G z;N`r2#l=ETZ#AxrnQxA6bIuheFQai%D$KiozPXK>bs2G14up??U_=D*-b@wI^FnyV zd?e#R3k<;%lM^G+&-QR}$h;aw$;9w3=Hx%`aI4^>M5K2h-%iIzvk8`R#ln`U+O)+u zp0Ex*q+*mW?0Iym$R357vKJGU+ViQF=;RzdtiZ}-KL#6&oXdgkEeDTO(Gzy`w7er6 z4_DTuGDn0pNFog?6J~N*)+G;l1-GvKNUiEztf7Zwm+j0MA4K0A&9!mzMw34;sIcW94Mtlcjr|a5O|f zc}RFjei*-4{BTS*{6CSwzVOMu8{|;w(bGQH6-ua-{^KVdC)@v~+e~{-P&?m_BL0P$k@g_u zPC3by{6NQwfJL0rzDt$tfQ_EWeBb{(Ut@xy zohFLL?jzBnT#)ydOAZl%Viq~M_oHI*O!SOqb*tRRALP#(0XbFTG`n?+Id-BxsJ%4pm^Opsm_4GS-1bI9%2ULb+*5+lp2UG%aBUQ!H zB2r0RqEkhH<(7XonOGO+%(1%71gJVzyl3T7cFQ)gtIExyRWb#4D&{kVaBA*zOp0_k zNQqKh^S^MklDdt0@TKzHRset&((Y-%=-04TO%^J+>z89oNbmn zrkYDNB$Z1#kt#MH2qE1KxwI1@=rdyN+jA+SHDHgpq)PZMrG~c9MGjvMg@wXk=?j}o zTrnrOE_E79OBqL9RMJ*(nhb4Jq?9PmxqX~T4LOIkCN%G#C8V1K)1Dq+g3 z-A?eGEGtQIF^)MR??+|6rJ8sv&I63r&K7TSmmAdP2)`llm9}IxVu6bg!$BT-3h@i& z^VJTP(B|BS3lb?})GJ~*$PBfBBj(|SDV~GAzdjNjI+Z2_W!c!)4x}*?Q@T{ra>X}5 zX0qikgbzR9GBA!E3w4o%#z6Azef<_vA2gy(6A_ymjgWeV}EUK=?fMRAY>T|x433DF=!wzd=~Pto{yy$ zf<8%|oyuH^3blW>C^ELcETx$dwY#`H9Rj^4L>g@O zD1h~=1Tn)+0>TyD)Ky-UpwvhvV=Sw!qK0oS+?AYka$$r?xC=L{%d!}$i>NYEKmdMk z6N70{U=qen$j-xKoO&M)GoC+q1cscOEw`LcShSvpeY-3yiEY}UU66YJ!!yNvkTDn? zMy+l-&+0K*c=d>`*y-IjZwz%+7Mo_in6Fs)&PrUYjXbVLc)k_u0h8 z)Yy+9MdX5I5N4i7ZX>f1KFR#1ux{xP`J5k(hV1E0`b%_nj5Ie`ugW8!g3;HIR}#p= zAcNsJTpS~Hb-4HlReMRpcY0cR+L?m<|Mw#tz+9TL0~;%wwa0qJof zOhg?@aA99ZZ6eCUW|>{c{L`Y+f*wK$u_5pD99$ak3!Bh(c=kwOo5f9FyFZe0rU{Fr z%1;m{HN+BhLEco1Er^lsAq`U+6?aw1r4M_E9FU8Yq6UZrFW&f!hG z6l*S!Ls|{sVs!hw>K6{X89%s5ly1xVX45@#`0tH3p@)dy?yt|v;SI#2uV?cu4yP^4 z+sA&+!-vIAZ)iPhFrxiyxw9U6BZ-203cf(4lZ`Er=NX?Yx>~boI6nCKub4dn?^u+$ zYkQbRc^B1hDWw?E%!E_0oCm>>Wk!>f)f?F*kak1LTWTCeHKQ{NkL?Yj?j`}yIf9bQ zjSO-re%eeUH0YMXzPMVV0lkZzmIv5H0X@RzTix-F%41p#_ffFtw&jSjsy+hv6;c zlgJ(_*A!%ZC?(@Fll^7{kcY1Q26e*( zRXITyX+h=(bS1R)&>1?INQIL+Z8Z`^>+NDLWn#)! z*j^dyOo*#_3TrB3xIYen)a(XCE&=q*KWe2wSf9 z=638f7ZCs!(T6aQ(%GI==0GfI70(ZK22Uie*XRPI%i#BOrVJCDDDNWzr?Hu?=Iz{G z3*CeogJ~*#fUD#zJ+(~XC5SuKJBjqZ8}$tNV=RZ!SQi4m9E4KZ$~mz?>9WlT7d!nu zC)QaYl;n*&xj?`u&gF`YoG$IZKawb&Wh^W#Qr0`~2+Wgzf>O4mDqA#}?uqz^FrV-v zIH%fxU2}d&+Hfm=!2Z|<&6C1AqvjJHdQXOOI1+nqP~NEKhKKiaBFO7wW3kvFA zs1m{x`}tfWx|5wUG?w3*N1CEq2r z>Uo*fEJ6K(54)3nu^&{A)oM)pMKy~I*ennc$icw()p5@NiD13=@YmH zdJjODuDB+swI-<{3Fq#TfR+oF>%(^Tl`9`sMK}qR8nY^WOgr?V?nxFOeM5aeuRxh+ z%p9G(VBeTdX%3TBiIc0{mSB&_Bl>rE^pX2&T6_+e7IU~>hZ6K6E-GmzftN>;WFcoN zhaNE=QQb(6DoH`jo_oA#+@6`7Pu(B)^#SmzFZ-64YGgx~!;3BHSrS{WBI~f=6+q`3 zo6c{rJF|gxA!2t_w6_ildj)QwPSxJXql~^rUeMhdu%;qpuZd^m!gxJn!3l<%SnYsv zV!WQ&BbP0QjBb*nIL8NrTR2qpZ@vYx0Sh?K#|%cwUsLQW!OJJjJ!6le*u(9-_?y5( zSs0=>-oY}lZ^|x}&=ihDRXDdUdg_`Il$sTUxpBzt7I?5Cy<6BsTCV_+Ck1!OHTfiU z&i0Vu>x3a{kd|3DG|U!~5C&XyBuIVi29^*81oQ+4bdO|#npoL=r^P>gjm=Gx%Uj}S9E(k(dooNSM!S?2@|#VK&jxdAHhm1>rl#k`z0$KIt2i9y zVZ3Qyz`Xvocs(g*Izlci*IZ}S22mogmk`>?P*qILpH(AF11PzW@~U%Aq!cx{-Wqq@ zn>m8zwV^+>E^kOa2>)wHIoI$g)7hQJ)tD88(#;j-af&`YoKgr7GEJV|5-3j3S&<&; zkc`qSTMa_3kd9fWhV-!Sb+@5$kXF99D30RS-B$a~#gkwSt9#7tUin~;f_ZOfB$kxK zD>g6=diZCy#yf*ukRhWCisXN!ZUK9K6pUWkEXF@G7e0SZT~!IA1Zr@9%kc}buN zNC`7A8_gv_UUO4AJL?!0b4}XNLKJd()T@ak9`k)VUc2z2Nkicxe+eDO8cU!{@}EM~ zj73Kinw%4nXI(Sinn&1kdgQwIl{AK<_!Af>(2f`RYKt%7h-RAD${0#$B84Mv5r22MYh2aMDB&8>@0USnaqlPQzK&llE)W|+iU=TISRm>{WIRz;f z+gI@UYnjNUv*e-iBU=iF9(a_kKI>~XzGc1u3on^-gNR7D+pD5dLO7Ypmg z0G#41Q9uxvl~bH*6Q_yt-;^Cbn~4(j?T9*nH7X!;7UDzhW01SP6v**LW*G3n$H1qlyU`h6bXBTbkweQcC zH2%&Ou+rV>MOWa#NSn7g)8V6d&z59MW3FRQQ(20QpxjRNdSG|OYjpV;lN#aGbeE?1 zi%Y`Ff={gl07eVNjqir*ypYRAQ-ap8JAuhjAp9v3x?cuX$DE1<`VELQ!|+Gx>Cb-=XzcP?7L9&~%}>8QQs)1MzL2A(th1Ay zvy zWsIoGJnc;ORMCfTqlLF+ArOOe0dE#>=}eu&lR0(zk-tM#^(EW!db{KO;^xE$&}=t5 z2olqnd5%(lyB}~m<<=eoZJa$=cG96PRF)=DdX_1 zxiQ0=#;!jsL1y8qeLLFXoE>(d80+j9$h)&Ymp(MHxA7tAW6(O-X3>0mMI7E)#baZG zQh#u6t8wA_%tn^$JPZlvw^`(HcMN10g2M$m%vaL=YJlUpx&rHW1MbMAX-M6&?739}%w*oW3obLuqz%HsWajSaDpShxEcdlz@rYZ<~Qu&`Rq52!6zZTjl$v0TH=Hd-U-fH8k+ zECG=)l;PQau5f+!w#|AjGkaGp+p~)`80c%_1EuYC26u`!Rf!mQduik@(_3PF6PnmQ ztVQ(6mE=Wlj1u&Nx2{~24<9I(R7`ig)$Kb_-B zJpGmP{)Aq}4fdI$uh7~N9mCJ{eW?2gtceFGzHu+ETS#ig9UJm)2mL9SwT#z+u+FGXh&jM<(jZ9=%+BJl` zANAS+j#e%tjX9mkM}+5-Xg{j-t`S}O9 z4wx#;mFJ;)(xS-jIOfRlt>FfM7o1%;R1bW@lfcwRiOh*CR`ivu|2AJ7t5?SE{@A(* z%e33f%-D+_V{ZC<n%T^EtLst1puk=YeReE zg=P`0cPs+&m^HaGL-a{}Ozztstx6Orq}ZhnYYSWH7R#m5^xwD(kH@uLPaAb`Scmx5 zs|Axhws1V8>ntncqVDL60WI9jb`g#-l4&mnYHv#lk3og$gt@5ixmTEO(KA5nR~1Z# zds(Cubrpu8lNf-Er4)v_8w7z`7;JYTnqjn5L)&}^p}B`x#b0y{bah;r;rX@SH|H=K zn=h8!au(;g1iDeXXSfcH9)iRpQqvkG-jn9LV-EzQKTICbSU*+ui4sv<&u9zJD1~F? zDE+?yO3Ct&IiCn0g#{9_NNQwVBj^5AxJA0%AvNNOnIe*jUHb$-IV0E$rK%f?Ds7B^UDRI z{-4hhV{5zrJ!t#SZ>emlxWI?Zqp6`F;HE6ZzX(Zb&7bcti=32_8ycgs2*-)EZVeG! zNUF*26aKd!!?ci-vtY+*81Kl94F;dZ`E|CV!}TVc=Vd$Ls%A&G`w#k%BFfgRrX7Ik z0Xx~q!+fMTQ}sR|EoCe6h%t)2mi(AIOEd(^ikbR9LZx(d zS~CSHM!Le8aqwxQ;x05!MDbJ#q+K4X#PEk^L zx`Ce+a_8_Z9N(fYoStUig)%c^^Jx!vf}Ri+Nm#MCaN6eBT|G5gI%KI*(f+}6ddGZ2 z#!zW~&JOqs6Lyati1{&3bb#O7W3E6?X25!q2|8GZSDB%zf0{=LbVJwk~nVvvnk4sX>47_;d!w{@}5Jp_Rqkw<6McM#@7 zhpyt)o>=PnlqueLv<}?+Vx@`(sIZ0P%s+lwWaI7HPSk1wDB%Ld^L2*zjJGxvL8p$f zd}u;28NNiJuG~|w{BM>mDFc;=W}>Ao#4UYl&ZtnQUA#IJ&uVX4vjV#Y*izrB zlxQQGv>rnMR}`vCeuQA@CWk-%8e|HL9(`AOzAUtpgsC%Vl{WnR-w6Vdvt(elhLSJ7 zX*|mqE}1IaDQxCIQ- zS*FMfe){F+z(n1{ViS*C2M00V|GgsXtvt_u)!PKW?%MyEFQ{beY-skM<*5446L|^c zo3vwXZ3{ZrFZa$bz}HGZOb*_-4-6PE4?+zo*DMLPBZ0m(P2APgue3_T+^dOlsa$R& zT;pKFz?i>|&pJY^s#&ATOVzqc#r&+p=TY@ND{U-c3-8eWgm?ODy6wdM#_xxx1&fd8 z8)*bkOVgYEHB6tkTJf%pecZkZx;n+g5IbiCtLYoZo8oWodG3gVmFNa{MN|lri{Hi$ae6qn|{6y(8eE*HF{_Ir-xx?5yCcKNXy8?ex-&hKSNOKwUA`*1M z+-%>i*B1%*%*i5^bz`{RSxzmVT7j zHYcu_C{L4YO*`gV#oBN+d>%=bnZU?65miZYpvQPwT_^G25VeV7-axc6dwr;AIVyR? zkWKT> z`Fd&&;(iYs5s(oF#LYJc2`gYUC&(Hhxx67S%Fn|pC3Fl(8}BI2+)^_w{yyA%;=HLX=kVC>S7Y?wf}Xq_!A{UnP}zlqWiE5D3g z=>FSY(EPL|wF((Yn>yUzpJ}Pj#(Qoog5F>q!dr^2To`iqu%XSkpUl^LEE>|%B>6)T zbf%%7oR^wR6nyO(eOwd(hhXb?zm|B`A-DNZ?vb~6Yp+$Qk3jxlKVT>%2&KV7&0i6Y z#_S2Vvr>zUW^UFm026V?0Q0w(7lzKD#~(sChJ()5c>c?uJau8&y0|hLcgyZ6()>_s zt4^Bd1foQC2}XOrR^}!`YHJMCanZ30{9jsdiXGnooV_o1%F(2s^Om#I47~@ZT($A> zxpHUao~WDfPz9!UWR95|OijgWSuopeaj>LanLpAmvuR-FHaR%w0ImNc<*{III5p+w zlzzx)U%7oD&+-+;TUzk+G0Jmz>MXfx!=z+S<3cLy`H?9#&Ee8XM%UEno>4Q6g^3qr zM$d(d8;A@k0*1@h=-(sL#Uqnx7E@Jp0#S*yq=(OY|MD|t`5_x&Zd8Qwr^>+1p%|-* zg&WolIs4b?pYlEJPn`k0+w9=K`(7w`X0J%Ri?;~8O1UsHEcyNcMbJFV*estIKKeQq zlj+>aTW97+vB5q2wwT}1K5}rvpNV5tb7Q9S?N_ZH63ywGud;QIk0JxlB`b0-#oI@P zRj^dXqpUnQrP*Bbia1;g2kyWv-%vla6gRQZ6}j!?%3Ng<1khDri%Hhic+8oZr5wYY zgyL@e! z@ZRnx4C*%r*e&U8nR8=h3}NX8VRin@gef;N2a;>KF@ap^5n^m+#a`0O>U1Rkp5%*Qm1uo#s?64T^8*9eGmBt2yS) zJ-xIOosA0l=!(L94P5jd^^L{*`Vm1oY;_@437=^852#B2QXbY??i3mt@E^qqHe`(- zE|_qZ<|v1y=c71X;?KVU9r^e1UV1Bk?jv74{$gV2zsyP~#(S#OGE<&o<%aVdBWdGlc!LPwO z=VDcDg{`^_wz$h(S;-PQ;)l_j7cdd!=S|9%dH}on8;P-G)+O9funT=fn*f$sn`jVvqao6I6<|f7Gw2l4=pChD=TCL(Lg=8kFg~*9virm( zSU*8fMwV+^BQmgkJoYt{;w!uwz=<1OC|wV$le8!qm-<77Y-jLisf(QrBRVlfgPTE} zR&MDCBvT8gnr1fN`2Ldeg>2J*Oqg^U~xs!o>ACqm*#U!n2!zn82GD%9VsGh&ozuz3G^lSVM)X!k^*> z6U)__D2cHq5)}b;H#}b3XWzQa5JI??kPa@5R++vg0jCk3FS9j!D~*Vm6><7CuYgpN zD3?yU7z#5nTd$V~WV1Rk?(hp>fG3jBN1hp?aZTqv0Eupir`lo24$P$hwt$6(Wd0Xp z@7!H^yli`SY}>YN+qP|MB^`8Z+cr9O(n(fqbZpz{IGrc^>~qF*&%Wc1z5iJ+V2$zn zR@I!d>QfeEl}YS5*FLkr+?7fGs65p*7mVeMV5Fb@+>`zgZz_cFhFXbu)A5IOoB8Js zL$@s1FVW-GpCLD$15&Z9s7^k^z2T6>-k@gbG`RTg3o*$zAOuu$9hS2vJi`GIton*i z;|qP!)Nj0Hy{_X6QGeXIWds#cEWy;v7A5oOCVup0#nJR&E48fw;Zz!R+M{5Is59TKwkH&D~ubImu#nX}2(sZ@MvhGFEuG zWtp%Gs*4$zQX-B3SC}z)@|;dT=ts$JY4-Xd*d2?N%jcNYy5H#~`GcXriL`xnT@D@U zdVq^wnU~w;vqZ}8@qmipya5lR_rLZ44P~*jc2^ETvBAJ#y62i>>gD%;iMD@h?txnS zn%tDWU|;_p^rh}<;^=1SJ)=^CB2XCK&v5}<)EWhk3@xSb34}NewhS7w>dMil z6zY_qvy0e28YVIjX{Q)jQP`kAE$=-q-{Ix{`~$2H9E#_4Wrlf@nY09JI13* zVt$sE#Y`K!$TekI_z{EELLFXO-JaLP#qf!d+|C)u%$WO2>wR!hxB5h%0DZlJG<>Ag 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


    hJOC`)`$=gInVqMt_P@hJ2@tYELl5fd@YJ{E; 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

    w;*;t%aDZIM{-c9w3A%rf5FX!#%HOS-Dsk6iXU zI$X#rUB^&szNr{RcRd$@cI^qhMG;cKgG^%zEP``)S-Sx=IiWyPO|jsCSvzxirDM

    6qcbJzjK(^V~WTxplhZrPI_g#dE7@Gkaufjt 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 Q-tfG$u3!&!Jd8;3e||tW8UO$Q literal 0 HcmV?d00001 diff --git a/lib/client/.cvsignore b/lib/client/.cvsignore new file mode 100644 index 0000000..e69de29 diff --git a/lib/client/CLIENT-LIBRARIES.txt b/lib/client/CLIENT-LIBRARIES.txt new file mode 100644 index 0000000..eb5244c --- /dev/null +++ b/lib/client/CLIENT-LIBRARIES.txt @@ -0,0 +1 @@ +Place in this folder all jars that should only be used by the client application. \ No newline at end of file diff --git a/lib/common/.cvsignore b/lib/common/.cvsignore new file mode 100644 index 0000000..e69de29 diff --git a/lib/common/COMMON-LIBRARIES.txt b/lib/common/COMMON-LIBRARIES.txt new file mode 100644 index 0000000..a3e1670 --- /dev/null +++ b/lib/common/COMMON-LIBRARIES.txt @@ -0,0 +1 @@ +Place in this folder all jars that should be used by the client and the server application. \ No newline at end of file diff --git a/lib/common/avalon-framework-4.2.0.jar b/lib/common/avalon-framework-4.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fb1b5cd03469c3df6dc5068c48d92ca4cd481765 GIT binary patch literal 74586 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 literal 0 HcmV?d00001 diff --git a/lib/common/picollo.jar b/lib/common/picollo.jar new file mode 100644 index 0000000000000000000000000000000000000000..3b3d3b73e2f805ade8818cab3cde2bb6ff200c6a GIT binary patch literal 148185 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�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 literal 0 HcmV?d00001 diff --git a/lib/jetty-6.1.11.jar b/lib/jetty-6.1.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..7dc9e093b40a557e0b64cf86264b6971b5dfc290 GIT binary patch literal 500194 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%0D$-4x#o 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 z%0A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 z

  • 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ÉSYue;#m| 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%0A|Y5G}2FFGfT(X*Jh#r8y@Pd^M* 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 literal 0 HcmV?d00001 diff --git a/lib/server/commons-codec-1.5.jar b/lib/server/commons-codec-1.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..e9013fed78f333c928ff7f828948b91fcb5a92b4 GIT binary patch literal 73098 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

    `CF@(u6aLJrk8bq( zBhM6T7rAYQ6wQ1RJ>!-I^c$hy@s!;On2)bc5@AwT*0F> zGY)h7|5H@zADmbFEuyroFD)~OuUT4$%uUXVbP z(J(=AU1b$y0eTUzkl?(kMl1cofvKh;)y0CTB9rW4FoLh`LdpC?{uzwy21H6xyi{Ft zglyHN@Zv-HJH$p2!^TKh$Z;F^`1xjwsZ^JMX>sWLJpF(TYH z(XzwYQyLmDR%8wu263Q~V82KmwDa_Uw}HLM%IXAyLBnY4=@Ewdj@|N}^$aQ&hJLM?6Uw z%}4)bi9%|%KhO#5e(6qG?MhhDrC4J`F|qTCV%Rv0nq{}+Pqz`Qg>9tW z{29XJ6{&KWdM3nM6|ry{<8-o3F_`7!WSSbho~e9E5i(gQm8L)KB4agAe_qPU6&KXU zw($~fll#PMmEJNhS#d_b120?WYIS<@msjNhn~GU^Sn;MxsFNn1K^Gduqf*OgEgXge zj5%uzN!TqdhW*yZHuN*f0i0r=G&lQeNr7xjgn9WWy4bnm8PSg=0seT$Pa^0UT88=6 zXM~N5Qitm>boroCYBXhanr?Rr)eXuOQ^v02*wDr_KN68S6(UdLr7tDoe>)ed%wJ5_ zV*xXaVE}1|)7W^>+_K~B$aM_@^hs-)_S3>EZQ3%|%m@7ra@f0~(ifbw#c`|wm-q!h z-u*krS;1|F^wq{$#@MZexz(wf0o@ky3|LQwz0EH`-eKAIvxAPl!zW26Cks=+){VG$ zdDsIk_spk7S&I&tl@ss!gPw4nt$8AmI?iM5m!HsbA1C?r-m_sokKlO+w9rfzQA)Wn zN;8x((etDP8c%nh245{AYF%=ltqS%7zPcmbk#9DvaZMg9=nVe%V=3r##`8S_xlLO_ zJsD>Gmo|1OH+4A%U9Ec~q|ostSErsG7#`S*U$JW1V>8v+oc&a8X3cqq!&y((YF4Uz zS6BF#ne;DphcTx`+xGd!B|2uBBi|oXJ_67L8@%V5v)p{Gb4lX-FsY}1qEC$op0-0b zTRrFwcUse(E&I1Gd4FoF05T`vqkiP|ujeIGa^yRAEw{FdU{$PIe>W35es^t3rDRLn zh0#?UnmW|4;T%FcEzB7G{WkgXvS-ROxb~wV`TJo?r<|vKU7x*Dm1dK(PjU<5$<)?) z#xlHK+F%zfbOx*Qu-WT|h$IhZqRn8_M5UGte{E)_q?z=>Zex0=&pl;V2fUu^`KfD| z={p=jTqos#yASErJ+Z(1vVY#p?|D&e1iz`fjnre+>|<54Lo{X@poiw6Ntz#e+LGhH zsK#>BnL&nMULp@(m!BX}_rlNSNWOEXX8pjDnppfS;>D2ld@JGQms+q%D&0`Glf0W@ z)1xX+>EU4w-kPdoCs~x2X5OwJR}pp$*ri;&#(fvGLZDm}o_L^Od5vP`GqOW?dF2%# z_-K(t8lP_|eD4g>K5(u`+tQ#5}4zyGOaD5DL*QB%DAw zgsuqMyVf`B!_+%e%qiuQ_{3j->+eL%!UgU)aIn_Lb{E~OJx6?0K4Ul-878K(VI|nu z)n5L%uv+w^{#ZZBxt}eH_%z5H-EO;kFNQP4K*SM@gq{s^e15w>yyCn+T)P%h>;d;3 zQM(y2Ex2*cKAj-rxU?*@-kn(sqMFZ)zx%H&=g~>m&$BNuYWAgUNA+)n3JFt>f1DH) zt63}KoTB-uwW1j@MMXPI4^DlG8s0O3njaX;!ob=BA_>v95yAG zxaq>sNBvDBLJP7Q+0qwV0Bvo=_@Q67Fqj> zh&oI6oQa@6YHf6VPW`ItGZ-eeg-BoPc`M7Xqi{=ywySoFhqkM#z{SY9gn^gQg~+w- z?q=k0H=wcmGY|N4O!Sbekj=EnT$`fGhMCV>NKlhBX+~3QgWJ3aT^4Mk@1}fzJOYN~ zP#!KLu^Gh;mpbi#nCOM;IidG94qWcv*?cgLR zh16(-ZE@J~PZpR`O4PlRs+Fl2bJ~>6&{zcIDVoQNT;HK|Z3>pe3^`qgqEd*aLrSTr zV2VQK1$q{cK(xe<) zHuUJ{>~-wfsaci`H6*?r?i?AM^~vgxeu2Oe@j)1lTo3x$PKwz-UUx;}`@+UM)ESmB zCC*VWFd0>*ZAKPN=);cAEj@h?oQD$4*^KWI5K2gfolQ@?&8;Fuv?YNpP zk=@?R3pUQvXgZ#EK8vRhrjt#+SD9?p5{`zd?6%&(yq%BAcW$G~?4vyqQ%3A|@MNNV zo|5}Sh81})!t40)52i3>Xcu_$q(PRN)%{a43P;vMbSzmsMTW@o)|i8BfN!vtoYC-b zIYO`jYR1d)ezhu#N7a0Q`SC&>}-=kPq%+xL-6BqVXCbHR-`njCP344xsSHU0! z;dV!5iTwI>f&pmB!{p1~mlz=$_G9JX@pw!2Avaj34AeM356xbaOD*b_R%GlU` znH;{-f|qioRfeF2)P5!V=zcZ(7#`jfEvDJBHfgeGF$wr;*DTQ3{9^VtM&4WWjUxzb z7ij>u=eQjU^-v4@8R)0YD`NN+`Cv2~TH5rpkf0kk+t+Yv{{`Be%#yKK`!IKp&M@De zcbUDaC>z$&O34{cf7tqA?KUTg>B9@Ulj1o-JAzA6C7g5An592# zv!hBZ5&c(4X=HiAw8Q8DsqWi4u-mr3^K$k37;!nng&hnTv|e)5=4P&&K~&4or^j5I ze~RzC7ku+zI9*LNo#h*Se)vYm*YzE(V^{aE!wbdKJ%8veR+W=rsV%qn6wmdEyHn?z z`ZS#j0Jvr*z#5L;wS3ZdyBKr}Y?`ecausX~&BNm{X8c^v^kx6Yz_k?PC>4TmA#MPQ zFsK7`=dGm>{_r=sIJan&Bdmu*N!SD0A7V(yyA+o5(jJ#n@Jiu1C~8$$_r1PVdw{ha)7Jf zOC70K?V}Q%jgxo|%R55P27SKU)lDjUyCz+S6<)hu5+7;4V!|p z5twdn;JQBOT-NT2$S~FYt&t1WK3$qaRc7Mxy9k}QwTPk0D$>n0wSwp6u3e!NBBDE@ znl@;iZ^txqmFf!nznv8ugSKhPP@A>>R0@%Pog=qqyz@MCPc?oNM`KTUo8|CP-E&V# zp)?mX#E_fl;WQV7$HnES$LZ1(=c|GWeN^Zh&t3}E=`NhvW_BYGAUKkAD`guS3UzpS zN$)=wRi@hVzNhA1C9Ob+h8{NZMX1U=wFTX$H&9KkB`?ElXbaIi4^cnW2lKzHc)a^jHQU z*}d>daf)gAg&`Mc0OBe~pTA?%i>dSmmc^!EZ@IYnn}2=;Z}=ZDy-629kAFKIIn{K9 zw*uoAK7hfv30-f!rF%v$qLP1?%<`%>h5G|0ZEdlpmGenOtV{E}e9;x!`e<{#w*GX| zSdF+2T}s0lKl|+X5f$xAd^qwL{llZ~Lxtjp4d6G6zoR`(woG$6SR{e#gx!TY^?V-a zT!~7)?m7vRTVfQqUP-ni92oyblw3_~yx=vu8MfzbSp2k1WMJDB2~x z%7ae7$C6zvc&DJ|n(T#)KTGHh#R{pId6u2)w$f2YzuTo~!<;+8m=@4S-udq>rqUhs znD&P!i>YdY*b!bYan_PwIrHi2-;ra^@VldwmgAJX9*vX9ULB==*eRs`T1?KwFQr{X zN$zw>YS8%+(StDiiIFD{{xj_xF>_x4EF&cdEK`7&cEgw6R~=_2JN^oi6}^;H?)zVe zNuev=1XEw7?b9!k!M~GQe)UjV+L^1mSlT%Mvyn1o*BM(Cb+nh`n;Vg|umyI3YLZno zs1QQ~?{i8MtcL!+VIi8REngkCw? z*o59uREQ;t&2sWkANF>t8QXV*#a=UW%K>#aLS4b!ah(?L!Z(YVJjMEfi{VDsGf-Jf}RQW@L2YuAalyP@f7p*&{uNV915r{!GX8_G%U{4K5jwgnRVxrTmfmTaXV ztLyGfbx*OtWjz!x)z|>g7CPB@lEiz`3E5#pvz*jZ1-lD*M z+kQL4Uq$d5c@TQN3n}G7&qqP@GV1KgZ?tK}##00ZMEtrzMtD%!BQtv9RZNaNgT_Kb zKunO~@tBPQ&^TlgdGXK&IQi~}OfpTDB$kHmS7mvm7#?M0|`1Xym-Da5|75wecO;lo? zwp=b~=r)|$oJX9ZBcKg759*yz6pdmKjV@}U# z3i-Ck&mA*o&HMy4 za7`M*!tu9e=yyhkNSGrGg7!3Kk73ymp23NHq-l2NCw@PKJqvRT@wP`Ku}6tEkcV{} zC`}}Y)P{7mcGq#g#H%@v&b7oL?eY&~Oc9YML19ydl?#)`Ik+`t5_IO90XLna>q>$b zyQ}Xk>II;K#k&>~os(Fi2#M1|6-#1FYt)%zSx;Ef) zel4R9Tel71pJdEq`{DeO*rSZB#Kkwd+0}e=g-2j{CZN?jx`7P-96wm))ZvPOi5aeS zZkyOU#nLe-w{|_W|JPG5H7!Qfs;?9R_KTeMKdL_o{k_~IV){36ai@QHh0r)Y_#gqq z&|SiYk5La`8j_fEtndvj4W;TyaH2lsw+OxI0T2($Ljyr0Lt4F)?x{bC8K>tTKy^bB zc@%RPn223t7C2b!_l!4#0dv~=%~bLcbg{s~Gd$ikP3xpst>l7AWxrZp1(u0bF+|hX zsZ%RdUJZ&`JZFlkerx$PLmhT7u&53>b;`%^Bb9t#2i$$CW(M;C_Zv1p%R52QZ)Eez z(aZP$s&k+71^L%iJ1nM7{x4Q7YWII$b>w%Z+`b8kLoaY-8#>zZ71v-y1E_-eN=*+S z1XEmE8QSRK$*wd{edc?Qohu+UOqge2kU*k-mf{xgK{KQG0(VX^| zsQThRw(4Q`X?1KM`meQ+lXf0 z*AdX(Dt+LeAVI^H_rH&mwf%Iu<80>zs~p`C{QOJnbYR%#kj2-1mif|GqxqlGMqvv> zr@ycHD+>IRVwNy2H=uwD_?*;0GI7WqCW4o&rWJ`E5rHBljiH6M886-vfNCm1-JMK{ zfFbA$W6s^gzF3&%JLOTHdAVNwJxUQkgIkI??1s!EdBI$SE!L=AuCwbV4GZQwq~Fed z@+82*yV?NZ4x3S7EYD}>jmMu01?CMawfU1Dds$4lpI^9OyTV=C6byp-@Q*wj*f7_b zNEoc6BpR6bl9T;<>hC^8KAvmFp$a*DMibXb^w~y9`8K*89GLca<2%Q&&eWq_gDD&> zWq|UwBLuep{)vJ`2}{OYrpcdyr3&Gz6`Q+Y7$pFUv#esPi93IGSMu)?#Xjc2@!k=p zqYqZAC$WJCU?f$l0#$O1J5kq|#n2?G?SAwgdeB+`f! zLqY)Q-LQYzmOPL4tNh^L;2_}mZs2lm;PhhPEy+tqZ^02_;rqt>H1Mn7kpu&Ephd%GhPd?W_Kl47 zjr9!y0Y}qD!%o4{3h>j!LlmqBq~nd58SMf6Wr-+-v;p~FHp%`4PZ<7x5y z+S~nyUCPQ22p|G>_ba6oR77rZ_=pg#jS3*(Fuo(h-WC+B7Te{4Yb~Nb+Ite;?jhWW zW0^}8f-}|2?yTo@-A`Ry{TV&S3DC7EP8g^d%N*+%0|XWX$__-=@@czfZQR?gw%7bX z{F%+@dcp0Nmz`JM;hQsbLn8ER%ZtP%lZyD1CY4=tCBLd*18@i7;x?74+Hl)5qX2F-djrBiVmqDr%ta zx_fti|P750?~iYkr1)`+c=5;3Pe@49Z*bBKU$z9Az|o3gHR`Q zB^VGXQ3HuL7E;j@(KE?qwNYEg*)?qvGi~C%#BTu@DqVL!e?DuCW-KT|nENbp{P6ib zk450)CdOyZA#3O@^lka z{6w;{$&2`tr7aej=o3-b*0DbwV^nz85-R)QmR$b~&EWPe2%EJ&Pzv8)-> zDK4hdyC})ws5+1$b`PT`!`FjiqeYe}_E^IXc3VBn6;piYNptTxM--;1;c zmHc^CG?biPLS+p{Dhn7tSW3=SR~YQy3L!^(_O2y;z*@{Z==RVK%v_kh(o|*;nJzDc zW>2=tS!pOI6lHFp>P&q-ZVO5|+EO<1RJf}W63Ab4#h)>tSCT2}EK%lql`)?F%mr<<|$|zxC8=uT9;q$k53#t!^ znsoV}zTmsT9i1oM-%HhyhQ2ZEDBd#eJRSfdf8X>(l05fCWl`gcrbQym3on1RqSILD z7_sV1Wr~S0*jGG55;%{@hnuvO3J+7kU&cIqNfei9We(3S&??a{s5}@4RAL+5#zzXm zdft{t&N5CBoNC0YrdJo(xB{9nt(kUWZm%>)4x)##qFB(4Y_jVeM@F!s8qh`4f>u6n zb>{ZznFunwiYP4BR#Hlhf7Xy_QB1)qmJs1!T9o{@zxS>A=Gww390$;I+Z$yxn6^H4 zqKK(V{XrL_QNE?>!T?_7&Mw&h=7V)9^1u!;)Nd0{p1yEhk-CaKq{TN$c-BJWHg}yD z>SxZ%Vj+rC{pV*T_@DYTmrUtI2q>t9in)%0WA@})x+J$me3-2WVN%sips;zt${%4N zRckNY@4Q=0SNi88zk3|4v!aqcm$GdtUVw45H*{q09q97)-|xLAdAFR8X=9QhiaaUh z@kH(O*0d?TSYov^v@d>!;Dga#VqPkwAqr5)DI{~-6i+ULW5^ABr0@x$Elg{P*?*%s z!F}+$&Uc61ZhC#*NX|A!Z2_!!IXz8<_5|Bkx#H8<4}Jz8ACfcJQypM8fQdmxC_gaK z+<|Z0E4=AFXg)o1+8*EB$Iu+FSzRiKK31aV&1m9jS13?yvIJdP^|uJLn1gMy1zoB( zz(KV%2VKH7z`?Y*23^us9i0}MY|6c1J<=J_vGweDe(3MGe(-aDqBJ#pwl8>WANB^g z%6;17evDe`VuQpksn!hPgAjyj_6C5P7xBbOY^#x-GSNPB&>93Ueo`cidx}iRq`q-L zfAp#uI^mNDks&}P_@QKo6zAF`dfkPMky1aJBrPTNRxn1W{gNysNjyNx7$POl0wb3S z9wQ}ZTBl`Hd{Qw)t{gInVo?ekGf~N|p_}xscnFsf8$Po_ek)W>kB(eyRt--^%^3Rn z)g&(^#D88mRYNCve0}9E)zePr(x^@jX&zq&WBD z>)%9;ndtl)|02H6V2qBNbScTZ@sPYzF=rrpH+a8D&edueF%vx<3HJNjqLHH*$v;6R zv_#3!hs$7teX1plgC&gX^?z!hkzZD{^~gf_4B1cn9w4z&5_68{^tnf!v>h=9)o>6E+!uxkvL(14YpP;zVz zJ>>W{#Rz(YM^LLgGFwIcNwj}p?wMpUI3uI1H|Lq7AND8N_aC>f;0733RHXI94b%0<+5|AAVE+- z8?m$ASj_Vc!9`;1q!QtmVg}tY>r`c5W6nr^6Z^)-Z&i|u$4LQ7SgJn>?RH*QNit{+ z$f>_xWhUTV5z+7bQ%h>LYRu1^wc*q8vi-#;79@;yOvFs&OcLrIucZm6eEx=QK%oAP zZTkBtN58x%VJK&9JJ~s?`4cDds7OA97ZhDm6;-T2#PsIa4fQsMA@m|q@@Ndu=mn~M zgTjTONqpTb8w8PI&2=PXL#8OZ%}i;mhUw5VM6^)-lCTY;+I~S4V(R&3kAWCy(lRgl z8r_%P2+0UUc`NV1HUSBA)BsO%=CS<0S~Q`I7c=?aGOI7982A5#WdC!@m7tNci<6w24(t_?fjjN{IoTvfnROL+ zgLALP!4srsV_u|=Pjc5V>b>7Rz2!SP_GPjtiSNSlaZXtd**YIrQUcY6X5-c8)nI!c z%_v`C&p(|mekyowk2DRh7dKEYXCYGhGgO@+y|VRW1%M%UHlu#2agHLl5rZ zZq|_=JLo_TKEWVG1}-rl%`-y2O1ZT?z39{Dx+GMFd-t4tSl8@=CE~1P8dj54k!Lx< zi*jE`Un6>g3%QO@dkN>cls%aME=>f__ zcn@Ng#0JXo?ARtBmzYt7@8?fQ6bh8PCkSAs<z%6ich}kUA)5o{gCeMjrbd*Bs6=Ku0s6h@uTcArM-&W1W zs%Ja1V}wqjCQ@hr$r@%{rA0k^ZJpqfM_JeY?QBvE24uRL?_XU@E?=_FP`~B(lZvr562mL|FJ8Bs? zs-v*{Lc(e;w0r7E;X2kbjk&SjGQs}D$Si8R^0w(b=+&nRVuQK~J%z@$*-JXZb-lv< z_Ixtq7S&U`>T&A$+Dv^ry9JIj)8_%rk8_s2|DB#iR>Z4EhgrzxaaJQ;r zeO5~$gq_N1TSIYO4?2wIY56I;J~<5<-?~r&E|ush*>KE}oSVATg+JuAEK?6u`SOZ5 zOZAM<=t-6llq(03x!esIg<*A~?P&w@Aq0?F;sq7PxSD_$6ujD4#ptuP04hMe9vAG3 zalh2K?=RMX{dH^n8$h^-L5S>bEl+`!NUo!V8R;cQ_MAia*v$^sytqDQVl$;?6jWu^ zVQj2(`hp|IZ_E=pB}H|t%fT#ubfSFPW`a?X-YB&M4)I*0wWPToE}S+Ydpl5Atk;Hy z;s-s5@e-8$Th?lP;{aNNsVxW=gm|sp(LRo%-gt&k7FIJ#kh*xWTtsw6K^ngGV9D&_ zjPa7D8~lYD)ak(!^&%K=%&jjG+1rw1Oao>~t8WrCVfU!!E=L$tBQX@xdzjgTX64i z1#4#9{DrBXg2%5v_+{t#Uo%5l{+G7S^bZ%ClH%!tDvB89-wh*)gx-&iq=<^jBw#=k z5JZR!9MVUQ8wd&sN}e=+l{kID%rl96)2FS%tDq=241$J$st_C$6iG~sU*?f_5Eu!u zbMOc;`^!?zGxPV5Z*4_yO?kyt%~|HQo58ynQ1`7kyb&h_#OVR=KoB}70Y=$)Xh;+! z22EFp1JyqBfY88k2o0nYf8TciB4j%R0g3>LpWH`iEh$FcS)tNOJ!&@j zRY%p@p1o&mBn^0aGLmBUCkdf&V>Fi-quJWNLB_er8Fq`d-H=kMz{*}3 zo@*H7vvX$(3@c6aYF)D{rImJZ`K#4rhK0%~Z3?X&cD>VJM8%7sF$)K>EHtRFBLyxi zG61VS$gHa;H*K$egt>cIS!@j&9ow0f0x4osjbKMK)ii5INZ0wZd)!X;l7|LMo{L=k zdAq$vKrVv=4@-5^!dc=@kD5II)Xe;_5~yc{KlbwQz2R0CX!oEKsAm+xrn-vRYbJ|6 z0LX7h-lmNCu-qX8X3W^Hnwb*!+kU#Hp3K}s;)xE6-oI{ z#X;kh0zhcxk+cK0e)WXvbfQ8OrF5b@=}G;~WMPHWVC0Ch4y0lq#jE#9n!dxX!w}A| zr9EYc$Ky(a=3o;905iCHzesa-kRz-s^hjAVTC|F&g2I3S4W+3>Wi*;p@$wnX(%GUF zmVapJVgh)aW)y2wg;5H3Ju7WPshRn^zD z+gLd1{J!Sw8Tj0S-z`fw4ciW1 z%^1dtOU8)->sC9;yFe-y%|B>R^lyG8l5aQF>bOKza9U!?PwuPMzjpx~}umS^aT17Go|o$KE!((ylJH8w6kka^h>Ax&H~WRT_KiJ%l#k3 za;K;9v3yc@Erb-cNIk`4i66_J*7H?J)6#b)sZ(~KOil4z*jf_-0JS?vxN1`zIB}`+ zeadyU!TE+9fU$`;+~@>6c5Kq9^-oIqIfsIaqI_p?xrx5=K>)d5&oDiIRQEitKKSYeYwu>q4v z*kTjJaD^uIfO)5AKs@cd0`;gBCdH_AI^iU%OmY%yvN^k2LcL6?GOJ8V3U-MpzHFK* zw%J$)cJx%Cm8Df#LMk}Ry@k?A4*Xo*w`S!PqN(L5iSLzSBGPwn(7rM0&9Al6k0juY zGl!b;O+pM!g8UnW-*=Y-f5x)RVFa%kGm7oWBpXpuD}-lY#!_nIMi2R*?h{835ThDH zi5YW^7?25R1S40ShEHQgU1EmiV8(5y2Xs>&_I5-(;~fu#LC+&6iE7Ir;W4SYh!#T{ zWnu=L6#%Ikv6_W5PoXXvK*B5!0H_wqkYEfVLd(#ikkBU)k!TRnDjB6&3*>BsWNbvc z*S=|A2=v_ zJ8|hNCMf=Yhzb83W|ETP?xP}#IO_k0{s`b;p@Y;9jSd^{keDYX9K{qUfGj0s1c}?F zqem}Je;w<7jf^Z>uYQ4t21AXGN-J3JE<#(j=6&70PvDc?Jw52d`XkQkcgFhl%-17p z)3ep`4JfLzc!bua+)(ec4V;H?K-wek5O>LX zgx%2Z^9}q7L4YJc=D#~Uq-Cw#U^_%9=2u;Qor;@%e-_Hqm$h6Dst0Z`N?5l8H!i`0 zQtOmkibaKjrH$B>Ty5IcVo7ZPWgZp3EaOq^OJiwJBP=A{8CuDqDQHnmv9fN;#%^RX zD>t~U!>VMKh_!_u zTnYCPZ)z=F0&MH#?Pl7+x9O7~K5c%~c-PE!Cn=`QUwLC>szQxxnxZ1bSCODXy;WYO z%;%XN{BoD_H49G-eTOWyuBq_`N=#W~IFj<(BHNX@db=#cY^5L~l*WRTGkU(th^>Ki ziD)A6C|U#q=Ccmfim}>)cNh$L_)Wxr8d?LrzN|?ohnMA73iK^+A>o2j9zcx^vjRx0 z2fBh;I@YYr%mHnwj1_gt#6p!(_qZre22EU$EVw!^GGAD<%J}$Pq2Jf_jD))_u^?C! zjio48BIm5EcwLIiYTGcpTr*UO$uyD)l@a#ik1r4N^48Zthqq{b;Aga6up6EhsH68< zYkJ13-S;S*q#9$ucJI@z>xVbDPq0xco}>1HuGW=j(Ut{mx}EgS5kqyRlA<1;tN7+` zt>Y)Gy%CxNyi{c)a&K2%`yc$B^po|-Oe{8Nqit%Tz7N0rFZEaw>TG&E+ds>9UEe(k z+8t{_gPmTZx4vg6k;!zz&QLL24?+#jPx!M1^x<0sPa9{OgZt15byI8b*g)Nl)dD}@ zG~*lTZjg<0v)JN-WBg)Ea1(&OJPW|nDB$>G1Alr*7g|W;{6k31jw6~Tp32wS`C3Gb z<5l%!Lgwrmoax~=p)~v)Vmt`j1*!W=Je~VI;c*Q%`1m#}Y-*=9CUKb6n($S*AwzpB z!1t&J8!*0){gm{_nzJt$gb$MlVIiJG+zOLS+1vT59ZZF+8Notd|j8(6M<+J9iVT z-T|XqPQF{z=*L0sMx&n@FUMGz*2w42$B0_HZ?#^g4{@iNdt!z&jfwFC_7HnULNP;$ zQ4M(gDe_QJ6o-3U)1yNv1yN0XP)heOWroKoN1bE_$vY|)m?}cAV zVEHxStp8*L6iki{F1Y-FTkKw1G>_z7jIqWHD~OV0yJ9+v#QQ_>uO*rd$W$}IuOvD8 zt3)IE?j#-zgk_$=gVX7(Q}h+-vM>qP}rKfA=9;iYv={S~PnZ-ce#OzkJitt=%7@`b(NV#97g$8iNWY#EKc z5<497gIFh_{O&fa9(QO)5v!SAZC}J_L4gN1WF+k*#@##(L>lrvLtKJmxH-szU7ZFoplkgly<{FG$0Xz0C9p*R=SA!_YGqVAiRdHmESoElWfYw#|75oR)91!ejl0C2w$fNy(PyKB#yU?wz}&n`@vI4+aiz zJRty;28T(BJ?9v{KSr7wsF|HOitbd0W%qu%ePQS^r;Q?)9Zr0VVFW8a?hPDD9T3U(9lVh}U*i{M#WJRFBer&vuc&4y zW8k3*j1OrlLdbK(ukXg-`VO??RLG$hG6PDIUJA%HQWKA?#}#r8(>=2i?2iN{`pOOV zB6m3feiy`*SMjQ63_|m)ToiX_T!$`FR!OExEsxm0qVS$=kl#}Jur?u-H~}o_(oq;m zo4``n@t!v2$Omu@S!3PVK(E~}Wy!!)oLN<;4vAHA?Yy+vbIHB`YNHj9ukqtwHd^on zW~BaaZ1nG4>HpPGtCO_lQ3Ssf?;E#UTspUs4~kX0@>(W~3G*<+$x{)tREF|M0T_VG zxl|kXakr=^p4&XAGA01R9)%(bn<9Y^;|R-UvB4vlQP#{9m-EcE&dI}eEr&PIhyx7( z-h_3?U~Dm72f(H!#u`mbBX6vz6K51ebdW;R+|LAv2s%t{@JY%tO<>EhTCTTl!U)Z1 zZqu!}PaHeJoupbfs=rtps7z;ptuF>#rW6a5tw-wK+Of!##`SBBo2Ftd;c7CuU{JSc zl&Powo35M7StSP67j6pKs?8{T=aX5)HE}2Sv2I%is9O2PMkSqS>V>WZDjAc-^=o z*xu9D2?Mmn%DH@%eZJwna~2yTsuz3}a6mX*bq0>ycGBCAk+Wc)4FvWFH^UivvAp<~-Q9(b#AV|(R|kJc0l{V3kY92iQ3z4| zqN&~{-4+h-39y5`48jr~tj+5p)D%Rh*8SM_4!I44B$$_0`o5jOr-;Ho>yNX*ls%FW z@EZSCq&ncy5FFpp5fxt#vg{GzaOcSLfl~Y%%lFv{@`uGf3TG6lp=yx>eV=x6yp%Wf zBYW3g@L8+4bXmF%9#pX&3G-bS-Gutxvsl%&A8O&*Ze-$sCoH0FuEoxna+9c@Y>^?PFUc#{28IKjry+I7pfmwMf_cE{3N;rVFsaZJ>IVHWLpCnaZ;Qn>P zbUh_7i+^nxzb~gQ{eQDz{?V-cuRCVbZt;s<@+q6$0e2O_o}IY>{7os1wYqJu0Frco zN@)o=P%0dUeTLmFWi8<_U_d!g1WYI#V(%LeRD1x0;M+L>U9{U$l=S*y>g|uGS;NQk zpKS=BNe!%i#F-MqgY2E-2Pgg*m^KTe{t!Aw)OJ0JR$7O4Y5)R#1UkgDDqBBK;4RJ1y; zezmJM8ybIdGdYPkO(01Y4)a6PE&_IkTVOfARX0v^=X}i7NeMJqRl{{<-BNN+Y{Ac& ze(8zJLDR`WwyTOA7<9r37t`*KKI=B5^YJtn6v@%!KcW#_6c)ejCM29VUz|Mmp^VGr zNQEQAGAHasY68wGPkAy!W=bmsIb4=(<=r{?6c!dzeaPuxjfV!1G|=e{X9j4Q$)V9x z6i*%r-R z@{~QyG!XR2_ixZLegs`=Udc_CKlKxNiMh~_q zif%H@dknI7m`=(@K}(EsLoH1(QKoROm9Ou!)l4r|CGMEa@Ymxkqf0j#!Eg07*EocF zK7(g34p=w?lZLQ4Lo@jG8VG~knE&uMm*_JoOPK8vt9oz+d!>HDAF@05Jz z?quJs07SuNKG*H1xqr6rJ5H;}`-b)n_jF z(CL7v{lgFeKLLl}agQmXZ8nOVmwr=z?51ezMFlN)ghhyt=JW^3FHbaGYQLfbFf;~a zt3fY0f@$mRmw~o=XCD(08f2gCmo7Ef)5PLLHDcOU)7O!h$oR-KNa>51yY}LD5Z!kW z-~Aemi>I9#zo5gte#U%yGKoj=MDe7@b`!rQelyg@7sY{w@SBa0RkNLz6a_S%R1W6M z1X-l5&4!mMN0!6?hp~75&Mf-YJu7xnv27a_R&3k0-l$^Rwr$(CZM?DVq>`?_{p~aQ zoFDq$G1eG+?LT18IoI0H^L*IY5RtPC`KpnvNY=YB@CkXU(4i7Toug0s5GZ0 zHq5xAWm1xN(dHuyZO4UJlIJ&+-q+G{81J%Hl#aU(#ucllISK^|PmYXMj3gU0WC-9c z+)2}?StB}u23%WQGI@00E{$SzzZHgfNAWk9%~(_uGmu0yR+&acCNHa_zh_C@?l*#v zXUMRZ(pjdRi&z?%(ikxq97n1%L5MHko;g++QItcRO&=)sucgJa5+#i=Lzi17Nn|%G zBG>1mkmv6U#s0PS`;_sAu4UKPuoRYK_erzxBMSCi#$;XlRS_v#EKOaKRx<5#7GUQ! zp8PTNDm_ZPsL@dVpYRLLwFj{fdbDOCMS08O1dTj&$MGbNk|TsgTT5FZp;T(A77ZAA zjSmDMBV{*B|BFr|fV2X)^Xbm3!zhM&eI{osWn!Ii5O;AjlG@f)P043CAg&2EFCx|3 z4Z>3BHuDxneI`Q0McE>i!w3dF(qldp7f^^qd0TYCuj-xWd#_bdvsmknlkrFw2(JaDFGWI{!XgWPzZc(8gS>Nf;H}f2O5HK@3(ND3!y*% zC5|@3dR0Q)2*X+u?w~B!S|VKIaR!Vh^@nHkU`*jqJbG2JzM`*|sND^3^26tEhIX@j z;+U&;9Sr`;dI55}t%f4%Fe)tuA?$L4KYXs4_fEU$!x^s|c_!BVO%T?5{xcmgMNvlT z!90O@5<2ny?Cv%An?o?N%;?13MZY~9cUymk|bjsi>?-t!ZpO; zkq9nlLpw*~#e?ZJpDtK;_Pi8lT4Ve2qj%Ocbx30IFM6|@sRDigdsw9dyDw)oR6aUv zO&sR{p&x;J*3>5Gn=13LYW!$**TxX*-KABA{|7z=n$5xdBr6jbo8DQQrOTqHeO`;D%V>pUTb6kYE!)#_FTOcVo(ues`$6GJ1>t6mkw;TB zCPrwMuz_4p9%PPMy>Q)AmM7it?KNYo@!-CWr8jC)ckJiHvA0+{oD4kM;kddhly(^T|M>FzjzUF#co>D@P_TRK%3m{{hT zsWl`LS!cnFhs5Aq}@O^9wLk!ID0ssxtBQ#ywNfKmys zJ-5#tI@(9{B>$EF-kK$*D*Zcq#F761wv6~?DK$97vWiRFojUiy6JmK#(i&I-`C0~3 zS%!_U6oO$T&f`KPLTpn!eOiP&C(LOS*8==uJ6hNTHmg7>wz4ZGz<482 zU{UW={0l$N+Zp|7jyqxw@w}K1tr-4EG3LEo;=?ik^3*V5UYSjTQ6WpOkocW;TPRmK z;7hWVM%FpA!5@)Yo2nRIK}#~O1g`+uG)XL(*EGptf(B^;`N&~{T0XHxCokZhAUR1O zF8?z;W+L*WwHNl|ZTaS4^=c?l=837;F_cj`SEY<`5=~b-|Bq@JUMgjzN7ulIXYhN0 z40Sd7`8zDTO8x?Rg+@L>xdq^N`{II%dj@UX@P!J2Xb^R*3P~p$>~bX4YPsr!`(u7C z=|*1HcnTtuTI4;Xk=H=*pCdBJbVt&nt^h7|zVb=ow&0`UD*jm(C8*F00g*jbXMGXf zeG&%gslEG+p2jE!Z?ItmAZ%91^^8Md0k>Wxaby#dUoRP_g@XlpaT)ragf zArVvb`?`!a&2Z+mnZS0So=0ERu*=G{X=EC=AGkH=R8!&!x3Y34h7+ZtjC(8EW^?11 zohA0;9G-|P#JufC7~p5?1{d;*2+p_?YH2v((1v9dPvei9da2f*+mmk6cYLVwWt(Xz z(RQ^KuhiDl*-(SiCxC4>9Fhfe4}8vAOQ274x2bGs(iuWb9P1u$sMv9}DSZoz+AZHZC0|dka+4_{6ZDI1$ z{}cAl0*v!rN9fD*qU2%*;tE5U8Qwk}pdiH4Ac49b&}IazyQ(MWB|M%f1FYPYHfPf- z@<2ArV*WO7N9E>H%(5xD@Lr^qW6eB%zuS@0+4}Tgi%N5B-kK@o)z*h4FrnFnv7B*z z6J6RZ`~_r^zGwMVgtai|O#y5~%?2TxhfJD%ieh-r(zW;|a#rARQ_4A(=KI`9vDEohOnh~*gF|sk0 zHFY-pUlJm+|M9M5>f~bM{GXXoZBq$X{3jnNy_QBwq#)?JU!cFAodnAoF=Fc47>6Q> zSK#lgR#6;jM@iactD`l>H%v+-pK)O&Q-G>YGSZlM@j|y&5J`0c7dqeLmJH`(BgL;$C z5Z0P2Jt}v}5m|m(trMz)9^^k~_&D{j$|DRhl%ZNwIU+l!&1Z|6shLbvY%J45=p}1$ z7@ZdAHpoHZ(V^Fh9gV5!>vAeJhm#aJ@5$3ARx6e>*7KT)9uUnIsV0`TwH}H{UW#p( zq}i2O9{Xt*86-QiD9frFG+SK3IY_=iXmR;a6j%<)m{Mpn?*$t@NUDVcyTBu)TYa^(~jUi@y3am|G$>w-M8-|;MT zUjPV~lB`#mZ$e#ZNsqF>kAa^#759zW5>Jn2JE&P9R-&xobmEphki_$261%pfoL=cM(MzKVxn!;O8 za48^+utm4iQ|fTXS(Zg%D$GK)g~tC{r-!f#*}_BhCRiPMJu; zP_P0=bmm464|;!OKm9;JJv9aG-uIhn-QxKzj7Vj@Sj2qdmidrB`Aa4kCQC7;73&j( z`-UplXDizpv2a3FhV}s;6S~zYcoS2?%}n7tLGWp+P69iHYVcmbL}SECe*3^2%aC~k z0jC&cxJ=}($3?y)uRN!NCl3Z`j?BLVnr*xFdi>9JqTTlFFW(zPn~X`|N>80^`G}eC z5EiZkp@2`Ibj)>WkG_%cOH+-pNV|WWBkF1rLQ#@7zRrRzgXK#AsRmg$duw=)&XOI2 z6%=N(Kq~!ygRIVVK{aVy9_C>9)g{I}4L zL>Z#0cy^{BVr&U$lZHY>VJxCF86yrLnL3NvTrG>S2?v#YwqewiuTapq~tHw>36hVlp;jWheBRAF^uYt}-gi$BD4T=D0XCZDuETaO`Y1 zvqv#Cjqy)bV{=rJo@qP9I5GW)^BQm<7fwGO7uflFkiOM)zi!JLA!&2cBfPJ<N5QPVe}vLI(Ah%+ z^bS{-=u+BOMX613iypF0zgs2K8|CSlnSMgCk84xk=Oo*qx}yl^e7L9IdX%_KZi}_F zOMaCNZAf&@(P{EPvh`=pQw?WgGQ86`L6HEPJ5oS*W}J)BX( zOL5;d{m>IdKjF1u$QVUG{uK=SJi z%D3?TELjir9eudH^k@5!zQkwokiO(+^U$t@m-v1siZAV*E6Q%7#QCRuIHAO6_t1C3 zD^xh4)Mw$4faIsd{wPYU^k<`p&~5opuf(U!zOVGB&ORo}Hw}b@zY=tU29^?65kLx< zFhC!iL=w&`MCQaQ28(oqJ(=jRRYVr9!ki;c!HHTVkw~H&5w0YYVAOzytt1mqq8vd- z-K8XxY?Ohvu5{Qo?A$u$5{V6cX1(ERZyT*9)=7%bvuQkkZn1j3Vh1kIgc12CrA4fx zqd*tBrlaEhwytm4jyeIo)qFJdfQkR7jdI)m-v-!MG`~^T2Nf8 zfqWca7leVJ=|W`L3TX9E&LG;s%E2RGGq3~T&DAuokMnyBF=)U)8rXLZ$RokCfQM2K z4MYd-g#eg-B7zV4TLmRW0A$^~xlC9sge2@Dvy?Y_=(Uiei4Ee2812KGol}Xh+}~WF z5x>TQ=<82Iwr#Zwv)PeRvdFFMW13b(xwYNw7`Z!KTjJK>Xf}9U(L}jPrg;iQr>|^n z$ta&T3#O&gw&U^V3y@*S#+6zS^o7!rT?-)Z#g!wRVvGBg#fU9%l1Zo+Ht?^aL_5M^ zC6SCfwMacTCJVA{<29sN9c;pFBXfk$Pn+m*KSxb7m@5+JfHf9Xn&mEOeyZB8qM4nc zFcysQ%p0xOIM<@@%8q+k#}?wQa6rMdwFUP5xjxNK(&|EMGqj@w3LUA`hyB1eXm?*s zTU6B8ZRD#OnOiEy0wP-1*9ua`v7V!K>~LG_=y$OGiVd-#i7wyth(NE3O(Xq?p9Hdg zzGs>X{FTlY8a2pO^Mx!y^xvf#87O^82*g-8)r*C&d>dur%N}S8HbTW7^tA7Le%Bt0dFw>B?LQ6`KCWkuPd6}nMi#|PQh!a2fPKRdy6y3~?SlCR91ze2#PX(vz7b?azd@UR z7mytba!PT_Og)Ba?xP`LETWx+^CHCv#)=eK(MzRF*qu$pG`pI&+Rt9|w~}Vq;tv$e7$zrhKy>gHNK8E$a2&_wOa1ka>)i;1 zi|f)$O7UbuAH55!IxRy=;i%`Pnu=b?%T1N$OEa?7n3cum%uMsbjt$rXZ?jY(Q>{1( zzErZ~a1dsb7%CgXSoG^5-6kyPN=Z<&wX`HMcySgDdmZ*7xH-uJiw6W5AG9AmaC;#x(cjEMOQ6Wd|+{zH4!~f?YxX zfU1sMpp1XyZ$R#<>i<+xS!aeW>vaeVSvrMc>YrU8i8 z9}z)QX-xDF;nk9s3sk>TY)-D^Gm57=K2|v{t58Dv4EdC&E1{!I2@`7lm-sn3^9A<*Rf*g(Qux{}Swy%zt@HrLOaqs!U7N<%D5&z_1f|!oL(C>jAhj)Jf>zc1D?1i%NLWI|jo(UegW+=gjqW$_mMojG2!=f+@P-49GJr1CW;5 zNXFHZUhtGI+L^oy4)rDKE9z>ayLqywlHwR5u+Sy|&kc14G^n*7LU}LsmKNt5=Lfh~ z>ha+&Th4%B!TavU-y0Ri*Pc=zj`_JK`KuetmaLWd_rn0eKG2s!A_67P@5l`Y1BDAH zD7rv04Fuo3^wA9j!U4i^@tzACxk-!GydB*=R>(d#g+>SJgr^9vg63h0llf68Xfx+6 zqr*0gED^AgOVC{+E*dY!093-m`o700 zu{Zb~=X|rgw)tgs{!{4uqP#co9r9eWGWz+2BI9AUi*e!C)C+q?EaMoUga^{lroQky z5{Wgd92d$!2c*2e-t>o(lKP9FW5>U!al);xq0E^1lApF6Q~rPTc{TSMPnF*mh40qg za`5w_twSBOJxN+4=}>Nn(s*rSoznUm!@kl+7Ojlhe6R+eC|R=bPvT}8Ek%?p6X6Gj za^g1yz5_UHutuB)VR!|;%e%uxzdkiS{UkrnPGQnGvL$v4kJ6?VD<9bcOHW3z<$#)- zFj|#7@rLeMWQpd|2mjo^=vLQyIUeYzlA3%>A%DHC1SGCY&j5oaM{7@LLI`N3(P;Ih z{xGG=*U-YqBBvK>I?(hQpq+C_)f$MlYw*llh~|d4&PGtqhM1Qlkp@V5peK9m00up% zlLJ`*2tPRHJ}H2iA3}e?9H``l-V;^ZfAmV>1>uXRzSjvT{s~A146u`+*Px^BaWg~o zFdX+k84+KiPwwFsAljit1K`@dVl6`S>hbN+&HFh;IWI9!gmc?q>@fKNzwv^2hPMH! zZs703L|dde{+`1R013RnkKxW+`a1$%D*lkrAgwI7oO@$Y^J`sWkXq4i;dU z)Gu;1mhe(M98Ky_ao-Sm32Tb0ze!?{hgbx!aHf(_XyJ@|tgrS`qR_d6m`xWiG-TCy zoWn0{CNBePqr|22S^UuLXk7Aw&p)QHq&(H0y~35YCYcEIBqe;6o!>J-eaVT!vWW1V zm14N*a}-k->~?NwZV?V_$d@=#xH{Ox)p_$5z=rDHs>pYuL@{1rso7_F*#Z{r(MoNs zV~@$^4bQ^G8j%VR02>=@vW|5OnIOUpl&2pqtA^pQ5G$5KwoS~)gXJj-Q$selhKN&xXLWc^`S9kyvE=>n)5P7G2xkhF_M|l=-fTFwVw`{kSy18te!O9b zTfC!bLPO?H6!~DJGL=_UhCq1-h+zN>-?2JS#G@Q-@!`)ez9w}ez}N%z?1tQLQl5{w zux-II0%zUi6Gy(|!%dC@lz~dB(WfqrHSO1kz5` znqnSjAoBT|{67SXEp2sTIaC80N|a9*6R}H-=&ObxsYa*kK;%Pl;Du4`{1?v>uwaks zp3ea~L^$i9^HdB9760__e+I(b?F%2zTrw~A80;|k8(&^it&4B=Vo@y+%$75uW9LK(W09XPA{`1VGf zi2P0l#CVZ#?m*WRIRHBUveMx~FSXEPb6p(3 zrfJ#A?ciu~bH>>+r>sonHdIh!G3C9oPVXP62|@J`jBmBZ25S4AJ31b2Ark`6>rkrh$~&0y!ubh4 zmx~uFq1hul8M+3=34{xD}TdJ|A))ta0?p8nSLIbK5^ZLMdtIP~slny*x3O9t~o zFZ|&)El-BWNj9UrpScS*OKea7Q-Ss?c){F|r1dUhk16X9xZDjet1Tzl{%8n^&di(& zzFb(vyKcc;0TMA&dkQ+e3NwOh1<#~^nFh-AVae2vJ#*QaYc;bPT+B1M+q3$&OXlWO zS%XdW?7uHz8b5+<(Y$Rc8{-F@>?A;cw*LOP=JlMrnL7lM29$1ees1!eC^%(*h` zCqwLbqSJuxdC;UQ^Zt-8iSUNpydA0K;I9fU{||HJzplsxA+-mC0JvrUR$$>RIO4#A z8@S%cC;*f{JpC2zcyBQYCU@}a6}06b(hbB1lW{clR*N^p^A7#;A9eeO4`&X|SFx|GSkRRjZlC?q%T5WjZ?yN77d+i{3Q4a|!foui4Y|9q?}I>`g5Zu} z(tp_aL$>?|)6Vm!pX;L-K}FFsBq!sVQJ>PJ2^w**aH&wBzSAPUQVW^gK|*~i1%3G% z;v;~o!Q5- zno-%d7CR}qq3dxq*{g9-lgFjt`e9dm7Xh+XSWqjZZ%-qw3O}n2z-Z0{xc(o#pTHA<5%Z6TY7JQD0PMe-< zn_~&lk*fc|phYX$#~r+zU654=X&9gZg)1aK*MQF$TvBMh)(Ve=^Z7_ux{ zU>);sA>$gLKyXhC>5>%QDZ)2Q{1ZgY&AVH8!bJHtyrS#w?{3JeY9ug|_jB^zz1Te- z#fTTvnV9EmZrWvT_&hKc*g4IZo|=}Lq0bMRN{tCSjOr%5r6F+aI(l@ho`g8!aOtBu zFE8y%rVxegfvkA8ERIE?b=(~g5j}mJJha;rf`6aAO21fuk{i*3JDsUA@2W+NbjprOLOWg1bP=(8jlIIv>?3fZG--RfZ1GE2;4r4D z1@%+3z6ezuZGN94VvAqt0z`udQ3&QuIlT=tW7zvA>dWBzzF?aWFZgO?DA4TALP+Fh z5m+xDI?9hv@Zl_CZh3ULrg=itc{)wmHC$`V*)x0@-uvS*l<(5C`x#%{^O;(yS5BU#?li! zT9~v>|qLmB&()qoWOLYm} zK$5uT=jQ%-MU430?L*w+aQ3i;n8mHyKgUS5a$}mGS=-g(g}WZ|PlFuz<;S-)ETbNJ zFX^qBu4zyzRuXgNF3MT88i#ev=9#WE5DQL+dG4tmF_a^9%vv8_+&y`;Tp^>%CYG7tIYx8M0X zq?em;GrzN^?qUsgwi^#&}%Z4qMjM%K0ahkCfAG=>sJMTBy_pkLZ zU8Afns9kd1$GY^Fm9V{#WC}falvg*|vjnIf2$~4frEoJ0m3Ji%m0ZG^VMcJUnflW} zvBfZ|Si0(V(jYUV@YXC3DRlBWn{58G9w9oUDHm*}>WjVBIn>rtk2rdZyJpU~l8(53 z$Q}HAvr19MENI%B+}C~vNhW#a@ir5b>N+p<~17hb`2|w1jZJU*CcmC{_!66{>w z3ATX=eZzl%c_`DY00)>ma07Kifs(41rEzh0ak!R{Pl>Jn%3Zgx@y*;C58JaQjwj*# z{nt6&@fFDqDt6SS*M!%Gm)Lg5p&&85)xd~R8$jkJ$MQl<%#}TtJ zHaVzT2S^(xlDc^dx!>B=^J>;j%Q#omI9KG)yEG~2b>qwOGv2Vd_lGCT>+4$bk1a+B zTD>b-r=92O?gujWn`#owMlgUBORh<_EK?jgg5ym<%Z9IT+JSU6p&w=$*4W+MKT<)W zml^O!mqcMb|AQRCwmV8=cIvHb$glUqU(e$K-)~9YJ2)R*Di59MUK3x5fG#$F*BVy%$0d_ zgxG9UpGF+42XQk!t<^opH+_sl@u1GIFBW-}l@e-IL^+pM5K7_afjg;a#Q$W3yF$&p z6xb~?y$WQeL9}a4nEK%+)-lOPcGJxiqr!j4V42~W@h6pSQ#au)_i_DXX|q^TO3*Cj z0A|dN%`B9vNnGnDJ}8nwl=<*m2@wC@i5eS$ZcUIarH|k;X7mwvwSo(~aQd^hT(XA;-4AJG7V2L8kXs+a4r zRo$a(2x(>x%KS8t^|2rOxt~`{j8T{92pDgh*EC*h2$ zL>pI(FsmMN-`;VTyM4D#VraiUjQMd}PrEY~@* zSLqvTUxI&lYC>EMcNyVSx-oM zt>Lltf4266hx1lAk_z8sOOT(S^LMSPV)dj>gmmLm8%n?XJ$^*MvRLx|sAX`$8Ln|& zwV5zV$DUa~W0){%EZcHMK=ZY?-Tmo&x>byfn&n6snJK)+@$W@^EL_5az&2Knj zt$^asUpT7WkS^JHn}SGJ8LFzkt6gaL&nh7D4mIH{yM2>UwLt-U*Vpi_a0a>UI3hWI z83#3^*X;WQ(d_GrrZecl@WARx&9Jduo5D5f%8%jH>BpTRLru39idHfHjMHj;Beg1a zCvTQKjtzewUt-31x{FY^~t`8%i_H|@PN;(ZtW$(QQf3GHdNOqOGoh@iB10v!Bm z%9#A&)QrGo>Hv25KxX)Wrr>nHx8h*VUQ9s*#)%*c1a1#eLqyV-9v5_S53|qLRb1(x zKG3P}e=@l&`-2B_{&_tS(f&6{a{u)M^S=}l|49H)_XMacV}ECR&TeXt?B=09Fdi!qDyX9C$)&Bh(83^yB zMWR@3>)a+D=^El0!iLPaf=h4?J4zbB8O-|&OOk1+X=op;85j?^$y3|J#U-FXd%Rlo zaPcYxf>gJtN{5I;8Y@N{9K*}Az$f=KQYx`8Zn+uF0+0+5QI-xh62Jq2ZiFx`$k^f6 z6iOXYkjca#N%^;Ql-A-OAI)umzuSwt$-XNdyZ7H!hTg~q$IKhvsc<0*5Z zXcQ<{iz8U~q~S4bEwm`Ovfwa3h1V|;0|vk@iUET_vZDy4lQ6Q4rurho4BS;nl6s3u zEEDLdYm1Pi_>-(5i&-+>oFx>=ZEtBV!wz+?=@Go9vUor0cKe(4{3nXi!yPo_9pu0) ztv@Sug@#q?xRNN3L30S{SUT}R&F2U_;==`W*@n&LIq;?FS@vEjiiSuQ<11AY#YV*& z)6z1@j{1#dhT>ElI5*2Uqy-`m^w1#4qv7bUA*h%IGvN-8tbH+sa$B)CJPz0h zEND|%Zic+4LomE#9f@+hQQ}#1b2lQevE1|i(!+hmayAgMf_4@==R?%Iawc`{JK@u( zjs?n8&3VZa&EXtm_Ey#!;?}6}F3ueBbWJ%;!qZnC`tshT>u{3habm?YPjbA(e!Ss? zai-qFP9J8J9d}8nrFU#c-rOD`6`GtDfqHNb))3e@JOg)3R|@pkvQaTn@S;up_AJNE z_owU=qqvf8h4n?8D>t&&*z;W^7Qev}umnXLavY4A*zs4IXvzGmlr?McH zpW`s_B@pGfv1P?Vtez4hKR0kUGPE*81Ey(aaEfVWWJfq+qb%+WxZ;~R8(hqIQ^#a% zYTw;>yTp?WlDUFx4DZp3NiF?v8i=ks)@KWplwLD{cr*^%-b%Z@f{ME>ddfuS*#XI~ zJu`v20%aQ?2v25%rjhC7?AV!f@lIZ>aj#+p{PsKYax;1Y%#0G`(QhH`+vaB*i|`-Xp_0gASYGfn_;ADq94g z&Mb9($)Dch%I)(stm6X3bZoQ|Io7KS7*WZs+!}g8gPZb(4pqNafw!f^v4h9Qr4Ylh zq^sZXNo+Qy)Al&eEvyQy9bTwon&U1D#1h3~dS6_Ry`1IiWy{K)0a}SMSZfwOJX7|Z z%@^gi`OiiO`qx%Gh_1-BKz7Fa9yYvfYCIy2Xq|!@3|Itn>PIbD?cjluMzj^!yY~aC z84OH^_2ujk)?nDlo-(mN!5rFEgGCW;IPNYS?K65J53`kWq~GBBSM{DYl&=va*Y%~$ zrE*VYHG5!GWf-8b+#svShj?|3NuTzy9uXy!--A=599ErW_(jj)^uv0AsX3(Y?C;kT zw+oZUt2P~<#`nqAw~ipqam1ufW>Xr?AybX(0qA;jbKi`rVS_%E>= z@6XJH=!+^P3C%)jnA4t6)9hb2EU2=_Q=lxQH1_J(2}Fp;lVQ;06nh2-h^}TOMxD95 zIuXlOZdZ#wv`zAq>71R$tpe+~4N{dBaQ3+o2q#(jV+`~-D72+Aa`F2z`7A7G*pwtZ zX@>cq)?(9fu1TaexjbhLBA)OPMi}Y5lF*WCr3B;EP46|C`Esup9QeSv&(S)kGdMbl zJ;ODHL~?Ez=BqzgBF9=(aS=rsG-=aoIj2^&*!$I>wVnI}z-_YV$Kf%|$9^rY)+weQ zuu4PZYP{aYGe7*hp-94(NuOzhH|uZe7*JNb+AGRe%BjA|uIXKkV`OuROzUTCc${H< z?5K7TlZJHhrnqp?{3WDn#sNoRo(Ph{Be}5C8WWiaz@QG0C?t70iVgC*I~za9=#JeM z2@SgtA?QxkamK?~u%3vV1db*ABG@oIHwxjI9JPhh571u_i(Sjzo_{Wc87A0TJJF5_&!yA z2niSa-#On{y#{{qA35F1^AqOY8GS~k9>Do9^c>ROqL;p4=}(gF%y8|F*mQ-K>lh>Q zPdUCpPacG(N9G#X`9x$7=9)l!npeg34oAG&YruT_CEp1!Gk)`EkM$a$M+~JL9_rM)7EA3pd=O1pv>7;lrJcM7fE-W zeMv28A9d+g?-q=yXp7Z_c3|8-i{HzY{%l35j`H!M&dMtP(1uHgU=C$BAhupGX5{qJ ztjE-@$IPsUXbw-HplFWc80Wqxa&M4ZTP*Mgc4w^4}?DMFRez7p1({f$9X>%Lm^J8^QdkS{Q%~NzP~-5ySYO1vh1wN zxAgK?Dp2}B=i-tzr-BZW2RGj|>|!1k-kMg6nUA=(2wEL^`b@i6oHe)hP;}wRcKM4s z2jO$o%)LpIz;>m@D}G=NA9^(d0}ySPHbl5eZ2kKqmlnenveJyJ&A zv^yo^l}Oq&)XA>7HX7&JagEyo^n-nXt^{Y$`KZwQP@udiT}0#2F)MaO6gkY5Q)8rY z;z9Z0W$|$M{Mp&z;p_foGPWIxS9#_+J$s5WT>4s-r3qZR6N(nfu+X{++;LY%<*CXB z98vz6n9xAKW4)5ZMJwf!Qg{nW7f%I>hq5RssNQHw;IN(l@uz@}q>nqE#IK+EY2KDn+i7i^R6XM!}{Qn~%*2z$>} zndc`6A(})6jzcNYkGZE5Qf?rjp#qQ=67MRtXWH2$jD2~@#>R%2mZu39RL%>rl=SXqQs2xi7yUw~6M zpyRBg;f2@n%|peL@ryO{;8iC0`P*PA-kvEr`lQMBMD13YU0LLMJVm*~GTex(M*H(b zihNt5%=Ecddh(2Bb3A(y4%=z?9SwP^I{c@sVG*Pl#;r4WH*We+-){I{}NUBUr6^-wkN9#mx2zDJ5GMhkZw3{Aewtr zNhyH0;isGfA9QH(!H_#%-v>0zbOrwaMn+%6ng$$TJ|>5*>U4#XAwU#Ao)8ESY3114 z0(nM8X`5mfErY=uEP@~?16|t_ib&`(X+LY&CMzdx(yFjq0b2FF;pAgNdwXNrNF%fa z*HO~1EuJ3pfbfX%7*dND=;8tdsz5rb{U$LK>ME4L5|A7Hg3wBrf(Rz$cHCYc3uYm6 zOSALlkiB8v7_>Nmnz!r%fiLc4@1XbGh*jMvefT6k!Go_J>Ob(=d+|?4fAB4N;x@59 z)?^d6j?FL}T9NHu3OTR-+~zVCA3%zYW;Jd^#M||A#AFy1R+J{t(h^_%i==P(iI2T& z?76)gOjrhl8avNQz6aXoI3MTf6XE~GXRxI2@DHSB;TKV#Z2IedLkf3H$)@@;Pa}{qvSBw0ncsevm-$`Jlea{mG-* zHdY0?%W5w$_kn}^f&6jD9J5C)Zjn9ZLvkT|{GuLZ1b5&zBcQ{`6r5UhU~f|?OSg|i zJAq6R<#@PbY$NwCuh4$R2_8$C{+5w{_7&*zZK=^ ze?|HKw(-WWVQOMSX@+l&q!Q(^w~)~duR&%FEjeTj4Y&Ukm)!ojP|ucJMNsBr3PMv<^Trn@$2K9kk>^7VYQ z>G>I3%fA60H;^gF8ww{Va_0s0?x4sZkPwMIM8YBn9=B|GrU6TYDFT%e*fllzAno{K z+>Yjq=8_a}I`9CJbksV@u9gXmEty6dTR2iKGe=a&< zoXO(i=H&6c+`lVVE;W*n%3W+Mazwo4zIvT8C(w;y)tPNzD4Kya5%7H8O|TsE5J z+bN#h%P#bBguIih~pmp7J(O`rVV% zN(u29C~OX~)c>$}Uygb6j%9g}k~DYPd@%C6vTuA?T5V)U!1){5R&DF5`^i!VsR_(V zU7~y6E`2V`)N|Zfd0~5G$8L}LbD)nahlwdD&Hu)z z?>8tIcMXmkNH5zhNeo<23x$kD$R2=5PZaV9F{@m-UD>TQERDwm~!T*nJwv3p&pebABqmrANP`JAuWdW4yVAS)@~;}(FG51Ac+P&;;{3buNe;lEl8X1|9G zrp!f_?V*%M*=&F4@KvltN?K@aycIq9vLs=3_-$%+VZ(Gw1$i_6ylsZHwi1FHnd;;Z zw1-b=d4PC+9`C<0U*&7roJxOAEKR1XWZ$G|NSv}-)|pPCtpu&-C^Tr9ju-xm|3~wA zB}s+yuW53LO)K*nYetn~_*LAim~lTnSEw+fw%y03pKg!z{dS;jXk-Sp1_gC7dY0I* z@aM4z@vBNb6w(3mb?;zo0h0G=Jm2tN0!{6csOXUou0weZ4&2;qUU&GxF4=oqNS`lI z54xN-gu9-?l>G`tc&=b?ox&PuF}y~{mo_ju*TStgrjhP}M8vQ9;dZG5ad*<<4x@|P z;YaP;(J$yDj3p!-Cc_F4X&v9+M_Hfe+;Jh5r-D+2@*ZNC*zK{i-Li#u(>yfQBY*1! z1fNDZ?S-vLoRtac_=31?^~?}!xu~{lip2~(@6epc@Va1-ZrDtVRN5fy5j--f^d6b? zNJb{3^#m->U#;Hx?rDYzG*?Nnd~?Kf4GBR z(HFn0jXp~t3QPUx0|V2@gsdf>4=fooU>I>^A?J0fTN=&TSTae7YNt`d#M8Xtb~ z&A-Wv?t5FG>Wt2e^B=u%Z4gRr_o;NrkKa4%z~DzxasGtQj-}V!e6=h`$YiW+JYSH3N*jNj5(9XYmJ@HXO@yV zV3PKUGn@jH-kHFQwpL;h8Be+Zmy=+_!A?w~cV#iXhox=yJ3i{5+#%;l*9AFgoW!>)q8a6sKA3 z%j3*#?$ z0QCbYk+-W=eK9o2X@CgvQIv>CXGwTiLJU=+@9VogE;Jq4%KRqX46z)^Ua#{Ftwq%| zV!tnHFj8l5K#+lj&}h(UUlR1bW<3~YkiY1Bc*9yaI`V*OeWl<8T-J&?FQ}e9*-?jh zANWjS0GOOBK9DUAT*fgb%Xor}cwuWaZQut6P9Xak8P*!Q*~1y3(E4uy%eog~-dF!b zpqZ*z*(;j7&uP$~FW>)eMq+SqLyZ0Bc?|j2M%n(4jyL~lq5oenjEb()rpiyg)r4vh zHQa;*l>H9ECfUF7Vv_Ho4jD>1oa|hZ#Iojji%_CH&C3plM3XW;zrVqGUET+z)2Vrj zsF}Qju)jc&c<(sgySlyAWTN8C#{27+ z7hSaTGPpigJzej$_GLzQRvE{4{FYy{+DZ=J&NM|J$Y@ZeYILE2go9T=7ohWQz+iyY zz4{jA^V)i$uuEd>a!<;|K^VL-GZJuCczwf3-5IBE@y*M8eD?OJF3WN}R!fr)cIng3 zE9vQ0fIyt&iZ%O3u>~^;_wu#t6MOfUS6Z2I0@GHKgBU3zbNHNZxMH*0(ZRDeDEHp5 zK|w~_Br@{ogr9(19)}R$_TczYtXEtLI&}LhNVzjS%#nDHataJ3Yz>{EC>lFG2(fI^r zH_MZ2%M3n%tI@vSt_oxs!fG4UB8kMq&wN;!R z&o@hRj*G81mg5AMj)uOue!9itTo*gDZq`!u-keQ`L$nABmfO_j$6tAGzJ4_u9b?c% z%>WsG>+j~+VM(ij&X%sEKn^oO*ijtUMY*72$Q#B~q4v>7*frfAa))!3=aHvea>PCG zjV`)#%$Fd$ENUa7O9y*R?OFQc9k+cZIn;q`Jk!?6&VeDvn_P1J-g{vkkB3`=rBRXs z7=FTL|Jj*rT@Su;qinqrlSL3Vc}f9%GgOTatlgPp05@M%7|Q!|+I`p7rKS<>Pu%o5 zLDGuA2T*`hC0&EF-rc*qV#FsHWNgA(`6(vZf@obnVr zqP9SxXJQuv?{>*X=JO*44Q%q<7`8oNDN+?hmZ{94GNQP<`B)IVWASr0E;5MgM1&%@ zD<#b3QPV{`S|#2bA-U}`F*5@kAHaV> z^{X2kkYtZRNEmR!puumObdjo7$~da1Ug&X_i?lICsA#idE5xLekmw?z<>Ufodxf9X zkT%$d$w1@RQY_7}Og!$uxbwZvTN!p5IrFS`)f>+&dR}Xj( zxDHm`FK;_L*Fer`N4!W;17cOqQTN?V>o*7U{7#y>d&}Bx(<0KDlTfd8HGTci*egEU zh6gVgy{CfI7aidCwi#MfVf1;+-{9I&z6obZ>1Cz9-lib zF)Se+GvlsRN-G1ETj+Tjh5o_9jlID-$==Ob&W|B$#$jI-YAxSD8<|&N-VAOt;ki2!KCZZvc5T zwMgSYj6khR5JXdt{%}_S910}g;52|5YX^9Mqa_}5MN;Ct2wp}Ix#f#L;bl)Cq*(mW z61(Ecp(%zk@hy@&iAf*(wSA!mt5ng@Y$ENdY{c_vEZWirBEmdJ zortTsR|SZP7PaKaiKDvJ-1BN$X{2^_lgn_~oqP8M6$4b;qT3?;pz(qt^1=`h<8Ape z<{j42&<{NuanW)2B3}A`xC6s+`uiLPFuxtts1ixZd#|Dj0e)_e`tbFAfsBU6CUrH+y)=rv>X7n0${IXHWF11q64wi}r2bkmJy~9Ia zE81&LK_~cbuzrNR8VWvI2rRY(cEr0oo_rGUnRkpg#VxEfTTV7jA|X0L)Zw41fiYmE zW(8sB3FZ%q8MNdJn^kpm9HGMZ|mcH0_UrK9dvaoZ{Nw zb67oK)Q2m#zwf$6WHU#0sacc`XWxQ{jPSKpmb+rXY#+$?@Xfi@++pRps`l0UxL&$E zZHq}1+iOt9zysQs>fA9Sd^Nn$n$pu%I9`|x8f^P$>aF42 zAB^%@EG5$%NaOFa+rMOdg~>~^JaQnJ>g(M?TWGbnp?9rib#D>Av`K4@kBZ* zN`83YOVi8@KjJ;OIjI{#F7~)uGn_c)B41zgq%K@^%&549YlK=Z5wEb%QpcBydqSBxC&Mijm*p*96yxp%Cn=6=6f4=q z)BV>i`|HCg4ixRN*;{7qiBGJnQk4%9ZI-#O@17l2Ao#|{`x*iW=o;Z4%zcV~p8M1^ zZIu_WzD3n*y~5Fp0dbZAT^vZVM3s>t#DuURWo_uji3DD0j;pZprK6fweL)mcNNN^0 zO=>kVt3z&fNID})uv%2j;shRdBy6&rD#vrG{4i@~vV2wQdBUvI;qWQ8jj&`e|1$d_ z+xza@-s2$u!$h{xiXWU?~~b*u>c@qF@RSSLB2CCPFTGNtzv{n>-A8 z=`}k9`nxKW zpKCnXiksL>h%EHt`3r+pXQZZtI+BkP^%kU*)i&loApuWODaXV;)QQ%V>eh@I3E`j~E zd8s58Yd)VPC?F>6h=t->M#zh%XeL8$QclN)ngwlY#?5j$q)(}~78E5mN~N!g40*Z_O*nEc>{-T}#N8WADE`3FAj4L~YzoeV& z9qssmI}(<_iZ3S@&B}hMQjg$lW-nf)sVR>)+ur~4Yt_s8Pb)xD;mX_Vc&5Pni%M#MHva)l-Qn@mx;Cg^pHaL_*?dr zG}ttZX)%S~WZOA^1`AiXO84`iph_PqSa1V3=2T{XMG{jNL*A4R(+akProL0>s!;9% zZrW6qjRV+Qypw1kA_L!wf-1LUeRWQnI$TD=6R>%g>l^C}MTh4%)aK=asRy4hRH!f( z-Ay8zQF*pO*<`pDqBwVgM{{-s$2LoxASc(dWixX%QV3x1TBt=Me-s0GLA63E{HO6&x390(%<>SpO94?D1?0wIgc=^nO0LK-;)#TOR>W|9dTtT zb^KUjJAnb)LN|X&W6PC*M1kLjRCo_(U$~QWF299*$sa)Rh}7npOVG^~d>VC=R)q5@ zr>4|6oBs=Yn=IS6&@CGHi*@g(>AH`lSw6lPW(Q<$o~e^>1bviCgM{vEustAY^53Lp1M#U~%O9)%$#0!R^qsWm)Pn&6+>Y&nX`6I@ zp(76s`oJc>!91VZfl!O9uTHK^5d16+Xd8w*9^n^bdKl~aW$k18_wXxwc=He3J74JC zF6hCB-BCAsG1nXQy;Cx`X!_O%ruq8z9jfoJ>9XS0Zj|1wjL6i*q?U|CU=-U%oN5Xg z)`WSW-|e929zbFY$Jf7aa6pCTpzGq;=mfQ@dkbtd7EakI3C6LK8}TH(EU1PIR3*|M z{nkF7BD)GS8$C=_PLAN7PGSyBV$Sj~W=>^Jjh|k4npT1Wwcz#f@VDy&qCoU2JK%47 zq{-Sz-jZu?rk*O*ui82{$12;(ub33hW69;0OGX|vx{B^P$W$Vjztt3pS~ldb3$)KE zKKZ73?+$0Xel{7nOWk`ZVPQmljBH`NYo}7)tyk==u;rS>OSNIV1L++`=P)U>C0}I( z?E6+Th)gAle!C*99A;50MHQxGzhc{(9;QUI?#|u?`mmf;e!c=GbCQ^17hOSnNnFoU;`uJ+#*EBK zY>G*A5Y1D@{AAV(@E=jK>$<#T)OMMcSAi~Eid`AW)pEdms%##h$DD-eT*TU3&Au6Fc5TBs_TVfA84;=!Q9DS{$3E?z6TTJ_2C2X8)z|NTm6DBCX;917 z;rnLS#iQaguV6TH4a@UnP`ivV!6Kru5b34uBlV^veA?Sec7BpPmQge{a00XCF?MolYCS)^zH2o*^vGuT2aSiGUU?h^|*&daT}F@_oAO zcs%u9r~p}v(8lLI>F28M& zc%(@7e!%zWg&}wy8*Nf>SH!vzx4(kjk-w$NptjZe`uzY6z@6BCdy(ehu@+wc#W!Mo z(pKf3qwuYC@5<|0!qaZeqYWgFPi_~&k3;?rHJ`Imq(VPF;AdcLP%&K_R6nA?5kSr& z6yB8v!C>=EpR>U6FPy``VW8C=R>exCCkbgDKfa&^j@Ql2)WixCS3o+viq`Ds{=DMbzW5)U8;n(SP!>hAB!=Q!RmVj z8EIx(Roh#~#)kS2q&W&TEJ-1nbf}Q?_)50*WDqj0XC)fWdBYxluYwlLzNB7!Zgy2J{bq@m&XpwhqXp2gqaSZb@I zl`^)!imM?|%c^-x7`n{gMeN?R;D*w_Odq;19}r*swQd9xby%D~bqu1Nlrukbi(#Aq zLm2GJN&_zx*db!E1)OA9MxStv51mcCT!UFKV*N3oL&_d$oA5whZ^xrLgQ1jtKYuD+ z!bD6wo{HEC!{PDup#sj>5v67N;Ehr{+B@g#Y{vX~E5GqL*AH+u{Lpt3G{G_!$y}y} z+iC!}eKQAVrS!zO>FThljXZOFSX!$=4VcCLhaOpdANNIfTbHlwc&*j)X_d!|QFz>5 zq0-o1g*yvhBBM68UAUb`B;RSVW;;IOqj2BkOAihk^DR@;7Rk@WC#TmjJrWg2-90wb|RUHU(ewfl1 z;%9Rm&B9S7*W?=VYV8nXxhhOp;2@q|t-yCyAuoIh<*)FSd72wAvu`)ZY` zp?fnPZSb1V~IvCqPs{sL!kwha^t87K~x08gWoTV!bI*s~t$1&Tc>?}uJ4*%?x zQrjn>Xw=Chl!Z^jrM&)M}vtHVM(D;_ldzDV%Zsa<3MRo^^|6F-Uw;nto;A$Si3XUqc}GqT3S4 zpyCUVXorG>zAB8&kNtgogMHRgVedIuL$?*aP`|2GJM-oBlZ)wM@sJ#_l1Ae)8;pwx zh#^);ava<*OR%f1M0iN6wN*EtxKqoxxhqm&1}kr_(Va$qE$(ZJmaf^D7yy@{&jZds zPz^k>CCD4i-KHxHxfhX-Bfp4vYzOqx@$|splF-e}2qb9>QM_M+#A(g!@wxVsUDN~efeJlTq4(Of8dW3^a z$ZgZw0n{0-o|kUCdkUh(xsU9)sE{n@XzWK}g!_*Pu~SI6WTnvKfo@1R7~&dU-*2(L>74kZCDx@(#O2@5d9^o5+icR^Y>7 zmBdb~B$jWuv8EVs|jsgvZh-%!22SzF=5cmWc`%TyxIihw@NV-4dPJP!v_&CYXr~ zzC1{{$E&s&`jx=^34_e>OxXkV9Wjoe54yTOmoSH^LFu?b=|GI9vq{zahG94!jVLY+ zwZKeXtrZMndHh9czmlv%i)5(1U}@FKyW=+Hcl$c!_OFH|pv7WO>jK(i5F1^fx;>F! zY{)>4phNmXBa6~0&N6{s!*&-jVEL^&_uACfCmyZNiJ#``~p>mc&cGNIK6pBJzt#G*^!k7nOTw zFHiytDI@eqlP>H#n>R4(@)J6Hed;5rSF5oDOX&=KCql;?_Vbm{YE{%XZ10Vo+QzV# z_kgui?P?1`t=RZOGymNFGM@BCR2#jL@IF=dy&atc{Cd|af z%>1W?QKYK24d4~bZ{(Wp7_~8*aXv7p$x6q4pu*6oFNny}jPVjo$Xs|6){Ml5oL50Yt|+}kANztovm*CU4zNZ@F9jINkL+cHQNbMu zn|9R|FbwVG1xed?0v=+kaBx&`MZ8+rO+j_6NwLNzDvNR6s{L$ennCwdS$g0}hKn(d znSPA8OnQdlZCRVnOeMX-`3CJ@4={T`)FU-XV%aie^i^CN;<*M8aq*8X3cGh248ll~!?Blr-tfn~GvH8F{s*(Ta$TKfVz5=(=WxBC$zf;nizt z#@)(Y+cxgmB4(OS=d~?q*U@4hb_(H9VjnmF>y2GBcP!(gs~1uTun}Z4fvxO1LX|dpvhJB?vH9Fq1yvQ60UfLnPy=lv59i9(9RPZ3-(Ucl z{8;NHlzg*_`xc4be_vcCtdE}OP4-q^@yIG}nbnN_n?q28nKe2-!w)a}lbdoC8xK?4 z7Lw)`>v*Rg3Iy@WLs(cB_JNE%~bO( zXB^XE?>^pCu2}1@QlVbHT|imYGH*087bM9(h#H-E!VWynu?iP3vqYU-6ez~XUn^0U+1cbaS>&qZUEwW>W(T`j4r(vL1vQ4g>&4I85PUCH zNzr12RZb|u^OCG@NxB&Hl+_Tjj^6L<$FjO9?5k9$kN&s*3oeKI8VnVKat-8 zFN^PZ6L#VA3$M)*A49D4NJ04yH?)6SUQ`vbttqbub;4T1rYKeGX@M`K%i|RsN)B9j z(1yC-p-ymq0TdCtW9P>f8p#<{)B3t^+^kZFmVHeB;pK}}o0S4{zJ z7ews5!o4a@c1Y=7;mL^b8kxQ*7XuY|WNpqGW=aiDDpQLeEk2s&oyg+(N)WET>Pdn? z+ft*lR7#*>s}xIm12^I!=111{4Y9SbDem!{eI#cWqG!b{SEiytv-$#*hkJG&Qgts9 z{u;|!PIOj67ikKkR9=s!91L1VLCH8YEkA)lL3k~vZli#8Jx^qu`-+ElWKx{k|VpA12XuUf~RH~1;fpSDj zVGOsKgQL5ikSj$Q*ih$`v@U+RQ*$3)sH{*}-8 zkZ}A6Ed%`i_Tj?&{MmM24iN9jCxF>X3NTw~{%%%QRg(GBjGU-$rLMAo<^?}GiZ>vQ zB_M!g>k*9QsFFYlINcyw3Y3W&yAGX!1p^a?WoHx*Y=yLFj+D(TErqpIc6qtYEUrN? zQb4#&a;CmUt@E0ouFN}UOv|dX-gCU&B?vfnvVJqm^JdLG+l1dF+w<)4h(CK3tP0KB zk>pGe1R4KhSLzEX$vX)uMqb;kh+uXzs?6(6+<{$#S8@PHHJ*ohHwtu?;|>)^F69c+}>Pw+t zBWhduCLZuXZc@YeAecz8fSv_!5_4UOoeGZR$z4GoO-?{?y`dBbs8oxbg-QKp2s#cl zK6~8M;v~MW(P^-@HhjZv>Qs&PkbnM&y@ ztMhW9&LV5MY9IvdFQ17_=bmZZn&wlqJrsBfO#4&KWH5w6Pb_6+QjRDIahw z7tpj`#n%uC)u6TQ90u|j9hc*1Pg)3v9PgmJItfKB&)oz*?eFiVq+5^1f{hULrG+eY zcEEjFjMxe>pdu1k3mD0mu*v)sOf>CD1rq$`K!5|pae(+9Gye)UX!}TmbdC>w9z~25 z-+)!#S%{LJh6j2c`$a4IrXH{{`mzO?Ug!%P3}OeOxFr64}1AK{k@B2#Gpx%*Lf=y+d6H< z+uYWau5bDwz9{rpo?D=Gc8f!ktE~3X`7RfpwF<0(APA*5Uk>B0d>&uav?9g6V8Y9` zuASSBr&?8;3baOx&X?~WY|76g@PsB;mC@7cZ$tu|2;1RBh0}^jJHrW)6t>|vILzbS zsp3Jbml5Z)%t%5es}IQ%eb+$rF#5LKP2z6bpU;3dm!*DV>z4X#JIhaA)q`A}`Zlm$ zgVy>B_?0H{RY(~B5UG4B%qUAWydtSTbFsXHC5MVf6wV8rq}llWg0#}3NCZbXQ3Eae zRr1p^xKr6Tqmy}-P)KyWmVJ*zZ$)tHGo1$Cz8ELV53-hBl9e`5jtiEA!I|!Ti7DS8 z8l30oFz@UX>run-<(j zF(|-6L@bR0eC}lP=MDxCxQn4;ya751YPuY0gjK=WFW#CK1kv z?O%~DH48k-vrL4Ko*TB6PwEDV7uPp+yf-q2>F-rXc z)sue9DL&bAl+#a@(+8i^EO(ob3}eR=CE6~0Pc7R1nmm5yL&TiiW-N<|PqvBKu=uy?Y#+;Sz$*mdTs_I9>E_nq7A6lnQz+hH z7b!}})#kAXd>$CdD6U8;+LMjKLcLCORp%~J@L*7&!}>sC@Ci(20Mt*!E8wHXs8deL zgiFYwj(&^WSGYW{?CdFmu3!YkK_0Flnr0}1Y5|Hv_w;p+)HyoXO?a9MaIBQ^nz;aI zT#i&T3T+BXF0-<@%J^B;xQjuVhPDjpb;C6>*#<)+F_{L?j{a2td|u2p&(n9-4Q0z? zEif|qhR#nq`;uRHi<8!tw47JmiFU!vPk}51Qq-7bjvg7k$DwvcgY1^|_Jw9X`gqDn zCJB^!a=v&!u@_I7E_P?>db0a9@XUKp$(tqlLeqN5NNV`_HHuj2Tky*omjCQNZyPDl+>0BDb*A4^8*)?x|GP@}t8Q+OHZI6IhTo39i1y*?b%3c+v-ZN%fFLSB;FM_Ai_^WQl*2#E};5syI02;}0!Q?KAf~A0rV!?IQY;u2{kas$!V@ zZU|W+R@f)pAXc)wv@%aOvLJ_2SnvXb60s~KFN{*{k|GPCUw`aL(zpJpC2|k$xWF?y zkn9|5{9B^n?_zkM?i7XA<%e_vR%M4EAn!Kg2&I#Pk?M&c#tcSl51%lj-VUl|j5edN4BpgX zsSHIsw+7Q<>)ZMwT1Ob#>@#TMeO_CHZMeB`OYdn|v309|nYeyw)BB-8g)8(Fqucqx z#RjH+@Y9TSq4TW=9mV=s#&Gope&b^P2L4+V%k1_(;rAwpdPJ2)_BCo_c6izrFVoFI z2G>5S60y(7MZNqeH@KMauoM-nv1C`{9#t#T?!IJhNCVDpT)6+9ba8#}UG?*v23~Tb z#=wA+?BoHlkd%MBZgMoUboebwDp2VI;Fvnpm+{H|Oo-DEF){i=z&vnv{t6gY{lvfp z5=asWV#oIS^6{a_JoXvyHo7s+fh`wFL!_z>@)2DuXQdK?3*DnX?W{Vy%=*ON;Q>|^ zS<1+LudiHD`~xrEvyXSK*4!KvUvqSpWpUD*1~J+s?*Ov6Wf;UYX&zb!HK z`|WFwX^btNbpqw0MYvadXBP_ZzNj;!!0koo)#3zz1j{!AvJK$Kko)qJTm_tbA-0Dn z;mSH?GR?vrDrpwxEi-b#)X07>N+P2Y3+QZDl~uN{ zgv`yUD%)$aG`m^6Z0S5V6=pe66eDb~oQrDiY*_D}_@RS(`iX7sNw&mbX)sD}VuDvA zXZ4pfk|xbvW<&SBI8u8==UO{?Kc&2UP@=x$DW$FuN`JL&FI zZLvR=jGgiZ*1>agfW*>kXaIdcO@`TZu&eP)-;FE)7JZMnUmeDFth9@?rpQ*I=Jtlt zL(IH0SZ_P*mJe_ zYW-HLxo}dbMvyaxd#)pE**`l)E_{M6s{zA@78vmP)i6?a1Z)-FE8E^K3Et7ot0X!CpjC&qu0pAoPDF1$I`!1?mYl`?NyrT+B?&g03kgq>OV<*ERM-*6ABgUx9{w2)G$@?VCb_ zWv{Y5cRb~N%S*?q8e+zV6E|xOGzmk8gBQp62Vg}O6$iL3+D;Ulwa2pKqjMfB=2_al zG&`5^!-)~st9&wR$- zm;5?X-8(Xtx*F>R~%ow=@v~xTZ~)C zHlg>h;*#@}P0~QRU}I%vW9>lq{l+!;Mb+reqw)3_{xWr3E$rXE6bu2YXLJGY)EM-TX>JX!D(4LJ;i$>I50t?9lh{jE_HlmX%?$D>~6Mc z!pm;|(uY7xTo1^9DV@LJY4OI|s0Pg(Ul3T%XoR;{o7z<~gPe%AWL~IhUpKa^(l!be zMwEh64aklZq*Z;BLm_GrEydP_=e*3McirY3!9FWy)JVg$4(btoR6*5V<&{BB$jbIL z)WHyU&0O56s|`;cQ%3yxWQAC;bGotavM4IJJ!EKZd}OldyCPcMTVxmwEZwbDyaQBLlT}XjJvdYg=Sw9yfn92 zpqaYJ7Ljs@ueN-=QE3V`fNI9Nj9ohmXRPL_uun%a%gs8I z-yk`LAT+%vEk$A&-z;j0sN733DQA=~k*B!+0izN{PzVoP!-F-)E3R{|GRsX8Molg< zALy;rQ>jW2z&EFMINnJll5MV%2I!{L<& z+ltYVCCfqNCmoM~PPEjm^ddvF$NKc1N*#A0_6bDKFOMO{iu6N^zJG&3n~z#iIVUbS zt3yhAg1{RC_#g}3-WDZ@4l)gLjr40RO?tDaAP7I?d6JNAgK*8nzTBInd5dtMfUx~t znpr>FbNcg>M*jwvBQp{5nz&^L+3Ek2~mS*3`-8}-_2m~>TfF|yF9md>+ zA-de}hq??9;KRggpU}d=xIa%;PTo0GA8utAp_!|OK)a{|afIcZt!{c%+m^jwOEP*9 zq6cz5tRA1JCt|B*tm$b4{fOS;GNqcHUZ<_{wQ+B;@Y8U8<3^l?xT_dS6=l|T8$*Rs z@KGpTxLerbHw|Od7F;@*BRCrWPm#3#%^wOaV68F8gYq#9o&=M=9le(3SU=50WIgM@ zW}5PGqP62hv)w%xdgBx1eN;YOF{v0A_p*uTf|DM`lS^xuHU|y2!tc5aBtY37=gWR+ z_;7rq1*1lvGAD+C>hYp=?BaqJm$zyw4=Ue+4!1B#UU>XA&GL-}Bk{d8qDD==GFqP) zqSJV#t7*K4U3xb*erEA<9vj7TGts<7@Gfk`PA(Cj6HlQ?+mEw%`n3_-;bq;NWOt@3 z{KBzgJ-mkA*6RuqfsHLRtxc)}oPuSg#Qd4~_?@YX{w=1}=G?6u^R)B}wF2=%hHb#5JeI8;heNwEK#{Z${QD{x04RxAEv=%mYe_qm#hj z(qa?mC(*>1@onfm3qYq-X`Gak;r6TrU&-f)pBaw^>?S0q;&-D4qyity5b$92iHLo~ zoUW6_me!Dw+$lQJ4KE~}d-bu!P{pa(wSxGE~@oM1sD;T9z2B6)$k*o!YYZ-W9>agC!i%@p8+8R zh(c`yxUr^6ggH$z2{FPKZS%Nxc+=%`S@X(WQ+n5X{qUQch^!749FvSQIMBc~0_yoJ zm7hK0-@dYW$-QcJ9@$Du6M=8{HYX6r#;MzL7OX3m@snlelwOCQ`Jv;ep&8%3z{yd^ zJS>0i0h8foiVrtewr>)angYf_OHE2N$$c~t4}_Siz*lx&?F4Kr(ocJ2rpKDns+-rdXQkgCwmIyU!URfH;1>n;NOx9)2?7T;76+RIDY}er0wpKR$_}OdOpLt5{;$4rFm?&0fEZ)a>#^}&f%@dWhluN9?M_(*ehUT~kl(?lJG8^r<=sZK36d2CHE zI&IRSm-m-_Mk4KRONIRVIF#sW9;8m0x!0|*@z7O0!>qxF<60vl;f-3On7WGomXz$90T8*L0v40ceLQ_FTAq%8vAr9 zH#%s$4)VeGdWNIm>=vd75Mx4nxMG9hNaEk4%7K+!x;mLv*`E1{)-*$rh&|E%GGR2= zrYNp<82j(CDY|^`9o_& ziIlmJY(QlJYnOr`W%3YE*|iZneLIuD#``>xN9$x4-4yHeh<($8VApi<2RmPZHzQkRp7bPsh+#w3@~)|YUy@K4MuOe7@Jv{QE0 zb+PobbMbR<@K~emFE@{dog~1#76e3_08)0c`Z&%Xi{D0IrR_3Ba29A?ouQFn?44`d*{&_ZoV(dIqLOzpRMzQ^nJtEB<@P|3}-y1;q6O8JwVD!zb_3YpNQmCKN;(vu^Xl7#M;P^{4 z;-6%j`W4#0v$*`Kv%cG{zm@Nug#_sB|EjX@k=s9@Ac2wqBPF%}jifukP^P4NKGtLa zQ2!pHGLpiga>}Cgj;@Z+5nev#-HQU;e<^_O{xJZ6fC_x?0GIzpkds#dU_1x-KJ@hE zkn*Kqfq;&%fAb;!(VhZd8?;}v=J%cx(sM9kVgAjd_-E0+BNvF5C=UQc%LQop`^lq! zlmcH6KsWqXJ^h3%X>IG|2=HSW=~?|X$(=em(-4593_!y92Ls@{z!#tNpOVNsIsOgH zrYKbb3nCDZGvRY3@sj^D7IxOZmLHkt66mj$)C}8M2*B;f^b^yq%s*iI*WCFF zjSYTqdO89$!ua?1QU72l@FiCMdw7XIk_kTVh`@Pwf>A(6900odXQ`F6{~q=?pY)&7 zc|3<#(_&P84-gd=FkWf@5E<}Y;A{2f7w|&=(#B6a9M6$$XOcerHL`*3-y;9Cf$$vJ zH+ZGb6dW{)@qpFlbo(*ZSDA_yzngJMX@lKrinv^)Y1m_n3d94?-C?X7cZ& z0x+QfCc%G~0^dgKUx5F6?IEb|;ApRB;3y36pWEA-+E^R?wcf$p#|AP0JPrWefA?em zQ3`z7?EVSQ-{B|X@xAE7Lb;oq)>oQ#eC*iwByExd!g zj~NC~<^kFz^%LbczyAZ}zn);f;%&Q$W&XZF=mlu1^iRADLH`Hd-yUecBF2(h5FQ3R z7FGb^pg*tpHbVX%i2r(|SY54tc?8T|82}>LpIY}d?w^o6JKmo3*|n09gOjD>UsHFi zHyc{w0#>wuTlweq87BWfQ2#Z_^YbqLXkvjcS=~P&d3O56^FjGM!|)Gygs@!@{}|HV`0c@m=^4AT?8VEAs}{W+!4bHShI z2l)XzKKnPYf6f;29QOIE!#`l5*ZvOnzrINPoaFiIH$O;d_Wy?DKVQaq4*oof{0DgV z$=`tg98>-r_<5Ms58%72zXSdeboCtddDP7hRDs)Hp#HY<{pHf^c~Hv_WFEi@@V{D6 zzajr}k@GxeCihKe;0Q2nG1zKzi=1`?FK! z>FL{lR(`&t|KFi#{tyG;OnZ9bdi)PLeunz_>PG|rI#}Qj>;hlE{|)%}(1AbW|COip u2Yw+0@DE?kZwmZb)Ss`uN&+d(Z0L>+AmZ%&JwrzCEKP3k`z=@y~0mg-Pf?jQ>0#e!R;|sEIO3D@d{^{ihoO z#OjAzt^uBg6chx+GAslH&i~U*UQ|I^QbJXYSza<$P1bQu1fxs$Hh|z@P9q96U!Jne z8zDpnBced8aI3;xFiiej-_~xNYkTy+KhJ*^^4{{;_WOmTJ_5PfId?3t*i@2jZKhd4_bx{ zYkK;I3`*D|`rwGrvaG7{kyN8fKn|g7Z&G}<$GnI~+x>9X z4hEBTh_=sPQ=M0SHEf{Hbf3bOD*hpv<^G_&gjH{%cNLR#_}N0*yoc{-Zzprgx?Ul) ziGYT78q32NhUrvki8oeg3DjB6CJo=lhm>i|VW)41?Vd0+5M%-;(~qn=4hV3nQL=&+cF&US;-wa;%a786XOa|wvp|?S2azC><;RM&6g(vI ztK7gjRXyP@+-eDLcyg^4arAdOqF)X?lUo?=Pm>qEB6y~Q2?)2Y1-Dx1*_}y}hG@>%Ra9{{I1X#t#3+=hMHS zOx&&Q%*Wlhq5L7O|c+y4uc?Ee7$w_BzBH|!5nb0;@zM~8n|``>8W8@pNk3-r^! zEN$=ZW^7{jZ(r)apdsuIj@KioET>>Y`RG2aY6y&KB{%V4t2Y2??2o{O|x`j+xhq<<5`JlAxr zQ#A{1vA25`tQc-vS{TL^nd84|P*_#XUtFGd2;5Cf_}%c|l;@3CRW8eP%r>6pfOpGb z-<6iE=cB8c4b*lW>&S~YqpJ-%p1^y*milY_p8q~OG`Gk5&V<(fI?55A5PaYD>;S!i zA4>V1TU)TI9q=^oUY;j+6*{_Faj!0aGdTOaK0F+rZZdf5-RNrGwZE)CKVBV6uk4N^ zI~VJ0o-{2Y(b6O5J zu7>-wAx@&lBogz{xwh)|1l*u9oKC`Tr97E1fucFq z;iO)fd)UU=aFP+dBm9GYe~HyYLNux+$60y=ax#s^CT|U|qfBqiyC0{G(rWjdtgBXc z;_h`G;spkg1&TaD6){tTifz}n3`N&`yRQ`|)O%mxJtYY2xnR?cZ~F8#osc%5<7k?5 z1BrgW?DTHVN(!a(RLrWNyj*}TuVP=FU~u>a%*qLKN3L9?j)e@U;X^cyTGl1GMbhBQ z`CHE^zu-8jV@@UVEU~wwOlV;$qqp^}BR+I=T{l@Aj2Q#Z`)#6bhXkjb;O}X9bhBeq zdi;KL8cJ6iI5Zais)l0reb&? z$wnm=>xKA!iy>)QyGqOHVXI#)8xpt(XNCatOC3GaUPcJ@HKYX-$(x(|Ele<|bNo1} zU71V`O`%^h{_B(*36)lLj}SszgJ_S{HpOV|wO7q`k$pt`R0 zs<{-8Z&GYs#X1!&7`?KCdLxXaB#qdeEVde;(3HYO6JH@$AYK36Bq1!>TK24)G8-iXnfVUKHI{JL+LSqT@DT}g)ZYrAa3(fc$cB>VhW8mXxxHYhgP=FGuK z0U9Z%SoI3=uR752zejLnS8K&D7@5v93S#_N0l>g?D+6=$gx_#!(BZK=6*Ti|VfD8- zf76PgWKMr-czyz|{2sB4WNYmtUKo-Gl1h82CF|KJ@O^REYic8#JjNI!wid=9Sd%Nj;!#zo z_MSq#mafCGeJqm2@}9&~YQr(#Fqlw)1wm3NYR3I}vbIpGNMLn!b^5I(o?9Gb3NWA_ z@*L48Q~Oq=+8ygu^b_qjYQyC`@68@19u=pbJB9xzC`p=b8JP$Yxs6z%d$?vnZP*l1 z&7ejxG~Ccs7-OV;i@xCr$ZuFYu!I{Gkf+kQ2w%@LbG``8WxWx$2lh9fEL-kKdPs1k zt&Tga2-{ZmITGPq_b!B74X+BR#k-kRF4VwaHdE&bL3KkNHt%6Y=gWS*XiB;UgJ4Wv z1kRtNfn?^BJanj7VjP`9e0SfPENdb?z^cZj&51Qn@BLDiTBS|Uuq5;;6j*c-$G+6= z%uR1?p_roAwd*=Uv=+hApMMX^uVYbs^H3sHT772`8CvOGr=buBE&_zuZ;Qqgh&sx5 zTV2{O%CxuyW2P&<2q5<@<}4_+1vGb%tBtlN(<@l5QDx>NX}H!j;RWI#QxvNjFedCw z9`OA8O8d{-zT z1dSn6XePc*^x)gP*JqEjV>b`AT2^wkN!v@BXuo-W4aCXWXjMjcTUV&^^$1)lc!IV3 z8aP%e5|l5PEX)8|zxgJT<=V_dRT%%w+!rip5 z_AuAA;+SW>?^)TkrS8qsH{_zt^vjBsDSe~dGG4CDCF0Zvh$12NX}supqpks)mBhMCR*y!yep>RB!Pc|x>B6Q3aBcJ^CoTuDu?8?I)+#wC6NlU5>@igvM=(s$!=+w%6Th)G$-+>-t%b}|o#!or| z?r6$h`)g@GCIBK7a|DAANrWOYbamFp+o?#!b6n&01t3w`JZzj49zZbHm*riRn6}UI zgWgLs!*&O=3TX`rKh3~8GLG;8(}sJst+eI;E~lw0wPQ^&<2 zr?JrZtcxYA(ws6>>`rg3DO<5Me1kyv7k${K^xcYVx$GB+UKNyKI={Id$;*w#!VIGr zw&JIl`9rir3Ncqd%hTj4RM{ME?JLcrDbhQkRfI#g`}V7=r1L)M@VH8PQf%Fi)cv$C zC3DuODi1sqjCPj0Og=}KwwxtpSTiBF55+xz%<)>my&Z7U_Go_pRl&^4j@NKa(j8vf zCZFjCM#ZxLs$1&~WLR4J3Vt{4*qw{NMMgf7EJ7?LI{2=LgI#Rir<@!3w8Ws6VN;HK zDvB257lFroxKLOjdu%D7AX95YT}5tAn#yRse{K26%#7~mOx?~_tg#5GfIN$ZQqddh z$Q=odyxe}6w{zs95|#Wad?rbVA%(`Z<-3d94y~I@hTfsh{d!q{M-*09ur=*Ly>&0j zL>Sz`XLL7I3zfaZ-cPMs`OMeKS3E-+oQ5OVG%n(5%ZAJYDIR(rvl}hASG^kf*?v(G zpD$dl7>s^zl?yNg0wzbz6)!8*SDheH^->>V28x&Zm1A|g6k=y1Q>M#R!^~LQJFxHC zGoIdV9sJYO{`&jB?@hM*+`QdBJh(UucXwg)G#~Il@l+2U>{{MDKJOxBOT7?+sJIOD zoe3wk=5d%-NEA1MQ!v{fXp^+{^<-ADN04K;rmwd3G?m_VSAB259$im=z@=w{e$@VL zU4Hje`yGG%-z@y!IbP<@o?mytQvs7sggjn8Uda8OKCWI2TV3sbKCYe@^|g7b9-O^B zxJ_R*?%aY)MY_rau89d|GOHE`j-Kb3{>E$>D^7^$flU1H=Xo(`+MI)&F9>dP%H1m( z1lPjZSem`Zd9R$gNII{p@qb|9%8qYYwJwmN-y9`p!b+(K*UpkHqzHb?IKtxOJq9IakViKcbV-uM4~WBqN&0S* z-`pyH$mQ(g+FXAgch8JNi-qN`-56PPQxO^8TSk25hiz8p++%^?iD0fV60ZA{xyL`m z34_uuxl_VT_PI2ybi8_$W9zsMB#dR5UDRc%;;nPc&#T~Z2}uM= zBEqY&Ba1^K(L*A z)*v!ex;&B_i9Vg`*qc{%hkS+aZyVFFy|%biC_8cH$$nLTC7QZ=i7=d}$;!9|{Vr8N zD;+NFv|X&@%ngm{>jE^NC^OHG_*$?A6==uZf)>@1|5|yd2|v?w(#1CFoM%^$Y_Ed! zd4EXb2+A3?h?9_Ew|&%)kr}850C`AI>xJ5r`0-cO@?zb%HJo>$zuLm~ONxa$3t#;a zf4I38@UmQl<}Vdg9WEYO~o&)mPRp0+S_ZoqS^Y*;Jmj6})r2WYmK z_p&5$&Zbr4YbLuZ`qkoZwfMf^u}r={C)$mY!b4mL`N}B!+e!tPI(rO)kc1!eT8oej z-Q{$#BEyNlB}h;U4_r#6v_n>D=8gxbV-jUE<*E7~%fj;a9+2 z%bWJ`%*^lABd!yM4^PkPfBWjhmx9@@s*Odj z(@JQYOLEmx4C|vfyea(Xyx&N#Fp&v^;PbY{@`O|ZHpBT+**JJL55*`S(Iyg!om}SN zV+@$W&tLPvW)G+Y@4J^^!U42sq44E^n4*yCy&ri6s-AyQ@g`}<@P%a7-@i|hjkYas z<)~m&6wGr#2SNYwc(n<60q}jY1%(?@4lT)AJYPQ9d_5KZF9GU*7VC0x#WsKsS)%Ua z_(wJRUka&$qS{Bf{!gv$H_?vP_X!7LCMP7Ir4a4*_;`ua`P3o+0uoSkfJK)0)>+-s zmY2;&cflmrVo!iPLC+`iMa~CpN|PWYzEo5Saa=am(09=1f?l`9C|YtcFab*jj~uBe zrsM>P;Y(3SJ$c>#2>he&+pqA?b~u5 zP$8c&9`?g95Js>b?Bdg5r63ULLohxOVP(R=;^TaqT^l4_9SBWbvVjc>lu<53C9-cQ zmuFgRS!BMH)xEe)dVkF3ecV6XXkESz*dKL0oXE*|eC-(bn$BoNCfyeB%8aN39d)>g z`Scfep3Hf76xlj@jh1v?6o)r>ZmhK%c&qqK7r(9+c2>U*%934FS3VQlzFp116>kWrIn2Xc!(Z#xa~mu6 zJDBTwP@$iHc5He@w|zTXdK+$fKU(TCUhnp?PJd|9<%j3X(OWny@W6L(DI1o^VLo+H zZjPSvK9<%ujh!MQwmq+Ot{EC7!nfV1yr~%)&qP=vsEjm|$FVKY#_rG5S{h($ym3ks z>iI=;4BZL-jm2kM z$yy6e+o2i@M%y{9q$whDTXrpupIjN0gwvUfOL9h&-TLpH4)8MNuJxSiasdH~Xz zP9>N-)9qP6bKIQ+#c6f+8EGEJ2h4sH>&&-v3VyY+)z?P4qnXrldn##NF|9|G&0QN+ znzd;fHHRikdVQI)+VzQCzqC{*GZz`5xE%aY*UQZ(b-p;~z#~{?YSqVb@oUv*aAj$^ zHg-)FS6dz}d)<$N#`V2Bb+>nxh&w>4MZ5*e$4fkQd)ub+*tVJ4^L?4}m90TsnspW& zwoNsM^h=-HK)(o=xR_sc(z?_OTY~07Q^qw@kMQvK)qiI<|G4QmAR4TuZLI`HomPTR z!`!tGezE+jvd+j?uJp1o810Bcde3kMSRO8F^6*T@vop}+i~ibZh}Q5rI*8`fwgaC}lyP!^ZHXj>~W zpklyFW=9}qZk>>D>EA^n=^F{ZT_lNsJNFTW(zgRq=Wl0CN7d0qiBZOMUABgE03cNlVsjBJz-Q-`F_5w45E=6&`NJYKQ~unZ~sP+1cTZ1M}J8t%K0n;hh7; z8Q!e}?ipo$Oxt19DQY8iBkGyXl5Mhs`A_w>Jr(@;_$`ZSglGE)`uH6S7IZ>~2bY9h z3l?%-hXT&{#~O)@~Z-CxT50k zaK#TY$p%hlyNY$C<-YH`@$nKdiaV zpO$IFpHMJ&>tKHM8C3qncx&T@9)!_+g%RS1?H2kvUAqq)h*M#}L&ZKB?8PWZ;;@6BYwAt>(B$*hE&{#=u1TAlF`d=h#4 z=yVugHV%{N4zCMvT`XAeY`-`2YDPu!8!}?qv#Jzk`!D&+LhCo)Hxkzvh3PT!z_74H zkfdo^{~WR9Jvv-WIXjX_5x*e}62J2b;ke5HtmAy-5@+Nz!S3=KnHE=@r*_CY1;))N zo}lX1zp^1P!mb8;VX<22JPql;V8?;@_x#81hjzBr<&F+`48>c=xc8FPWjx*z?B0VC zofHhGsM-l9btcH;Og-Qu6wA(Q=tCfCtX)Z+o_2^*2m|eOSb8=E|@#Y4mxYtwoL}xyKoV$`N(Kf3Db3ZRC%eWs+uO{8&*4V96N$N zI6KkEHyo1;?;Ye!9Xi zOcEVf9yj!|IYk6oQ}lkP>TA> z{pum!9n9r<>PcY(=^EhYchPnV_L4v2uI)f}x)R|+cHybg*If?*_fn+wP$fX z0%3m2l8(2v*Srz&GrRk_yV|%{@G{m|J1E#|8*au&jR~TCKg(1lw)sdh%iP7>zva!T z1#w6AcwKD7O;za?4k}P45#79_6bM0_f~GU|3l=lg<(okK@_rys`7m%>sZ_MPm^s*A zaTD$}VTuSuBIr0n=-mrUJ2nsADriRa4mIF9_5@{$1^|~)!PuR~$B(D&sD5!>>%~`G zAV08wntxtC`OFnhgB=)Yyld>f@r(3nnEWJ@k*&18e%4qn1OXUYiv3mel|nqL8kZO> zy2K!g-j1wQA92BK(&@6KR<|j$^vh_Hy{SFsKDDkS>O!M-%jIK}2-5GZ!{IYK7M>6I ziSVc&SSOB73}(?<8iHdYMt#M6RgN(=ZyaU@7v~F?kY7^8F)gj+Q-%4fISxW8>YLXF z52L&~zy2W4@C_aKnZpW7>J0wmq;GnxXf<+8Gi#+VS*$Fx;tt3cF3vMir2R##C6cw; zs|HcL#8oq~$3ZMB_k}T&3$v0^B$$h({*b5g#B7qG(kq2)So=CFYYDxeMTQDu=>>AdsIMps4|zGB(fQY7qreW`mtEcC@mxT3bz# zk-5adZ6Z|iY5cSwQ#HI)*J9oA-w;*@%lo0&#`D~+o?G5qF9ivXw}1m$4$S=@xbkQ0n?$~>e_kbws2`bLt_MEgG`~2I966GUOby91 zZG&kycQHGYxh{3_cmN!mC=VFFX}EkRPR$!rir zze}5~sRFQ<)4%IDJZy7EJ?|{;D;Yv%^a*yv)|%5~HjF@)3?*VWxy34GZ!1>r*a zX-Ua9`T%d+gmpz*DOJZeTAgs)Wbvchdc&k);roKtDNEED z-lY)mg(pk7_FeO>JU(r= z5MmP<5h7sf4IB6^Zq!RjB&oC0g@I1Gy6|fv+5q&x_rSXWF3mX&dfi6UbPq#-tWKwv4-$B2}4BOd01nRDo*2H z7zuHw3Fj!kZxnvqft)&t{_^j5Cb#*ybkSZ>yPv*nr8#HAk(9!yPcc9mv4O}TKXR@_ z9N;zXZ92KEY7iHVDY)&_xls`rJPvf;TYl{42Mb3(|H3y2y^y%Tl zv0oLalH%seT4s;U$V%CqO=o!(tZ8Uptw$QoY1S@Q{Uf(s%BvseNZUM)^&})6Ymn&h zE@%*zN^5RipZ1W6qRQe#0_QLb7-4A1Dd>a4(|U)~`c(N(h}*)aW*u5;QIEQTye%x2 z;$nD1>pVnb5L3CqcMADDL6^&J*_MU9Zd&yeM;X)nzzdwX9=1s|#A{yNp(xtJNZ&Xv zKQwH1IZryT5>(1|?)2=n_`rq;+=2`d&#!>J>rx~VWPmlsu_{axA|TfZ3UgjgeMb!; z8xFu5)#E`iL#(j#<8L|Ck@yZ20;2|u2Lb@|4~)ehMcft?D3+iedI_UA466|AuaE&1 zJ?t&1?$?fg2VQS;69&B68ejpbKGu$p-Pd5R=G!MNXrWA zE;9n&BO|j-aLW;{^E86eOL_0^+s|mBz?L{1=L@lH zo|qQvj}dfyKk)=wcE3S)1ZPa+0eN(+(&5DKaltK+Q7vQ?QwUVdG+G;05ya5W)=@1A z6wK@~Erh+hCE|K$1Cwe4?ugFH#siZmc$!Gg<`~UNn9EE965*IU3|e|z165%yTv1=& z%Oa4e96V}Tw?aOX84b+jN8h! zm~ufOz6Fv5lm+Liz3GUxELAmA4vH?^;OdZaki7u)TAfvhJydM1e35jMH0LyTMwC7N z$RbY9x5@8{vWK3?m1%v;N|Bt}#8J7Z43#MM1ec`e*KvU28M^er2{~K~vLPYeUW;%} z?4=u(JQsS(VKm+I5~c?O-MT-LbtyfmDk~~zx_Eu5gEhraO^g60*;*2P$$oqF8cSI7 zRpvtvIc~1#RY*bW?@bLK`+c^s`Q~0UN#VZ&C#6AK#Hn3`ASPfp6i743ANjZ%>Xi%F zjR(>d?M4Nyiv|RXZEq=pJw%0fKfD23*s1>L$B#k&!pB$8udl!W2oO5p?bC4p6gUs? zb_5L2%D+0M@e2o%d*y=WMXwNK-x-hBMcxID15m*nzyL@PDKG#L#1j05JJXE>-lhi$ zz7}0!f(oaSgy2D!HJ||K*KN^vieq7@R~q0u4k$194S6O25gY(`W0(o3n(=%{>QbGF z6H){d0zE?uo4+S*l8Gz$ka%6(n5|&bP6@?hod-KRW=hdLP;hSKikY5^(~S$szY`B#@Te$7B~pIlJA zh$Fge0OBzV>?{3@W^flA$X4Xz!#NY_CIh7fcaedJalrMjMZ)7J^9^pIhT*O&f*xOv zV^JoO2}>X6Yf#S9=MVj(#A)EZqimnV%)=XPP(5tHfA&RdbS!pz;U25m#<&K4#%_K; zbW4_gmr&fZ@!Kw5TL(TUly&MVuYXx=LTn`b7=h1!pi%OXQeJ0XY(j3_>ym9820p+n z2<4Yu#M|(PtW8|0*z+%RAvChk+4vN#k>z{*^(=pIFMGva=qfL}NVee*U8}rOxqw%C zVO#L8D7#3sX%AUL{FwP&^n!QH$tr5ip}a}AEa!=|!u^|a8x@|-9&V#$@mjr}eUtAk zpDbeql~!%N;4Z)PV8x8HnWtIed;)F_@aMI#-{P0i(&}FW^UKORZjb_rf|)Vx@q#{_ znsd~IhlgKND)=lC*V&?XNnD|NzK_z>7yebWXdGRG6$5ae$%(H^povi5_)QQ>ipXr2d+! zl4weZ>Z7Gz`%tl+#6Z$F;od0fEoLupEXa9^t)=Pd|e$-4ZuXD8uK)nM>19N=0j@ zq-2~Vl@mEK!+1@tLO4?AvTu+q@&^Qnv0S^FM2w~|k|M{`jQOR_$M}Ct%|hOV$O_Ro zTT7VardQ)4i#m#7)HesoJAtW2?YM-I>s4KD&v72M^eb7YiNC9mtr`b6=8+Yk+^oPS zsXsf&V3tyw?R4xlI5i90i+AGNa7#ej&SkY^3|8B=B7zY_IyniQUJYJmcoQ7bXv>b64rEUD)#IYOs5x?)-+ zXsl~b8=|4I4^!DU=d7vctjQ5e)$jRGtFA!McGN+>fcLN-HXrCt&&!$CX>^JzsLr$j zMHSz0Y+BD$&81UTNTc=bunja4zzoUEO0i!l#}lGZ6E zwd0N`Jih9Z!DGYy4h1l4=x)f7i!~5roYK%N1FrdKY7A8GSwe^GjB9DmiS!`o{XToZ zW=Y#EJml|~)Ph3j+iJZpbve*2zWwndDHT9J8Or9!Zw3*F8#oP82yNoYqIrZ#IH@D` zswFGf=K{jv&sgW$o);9BL9Yp<9{We|kV0hQWXE7?-@gRDzA!>UNaW;&fT>|NlQ`1> zvi=A^v7ake8)od&tIu6|V>D%2S7Mi%sT>FFFLL6WUB-+rsb#6T%5~N9W_jClSk@=v zeRI;CsRb#kmPDPJT!hy5%7LR6wO}eaA>^d(z){D(eX^oOT`7iSzoT~6XTdR%fPy=g zIS>V>RHl%$i9%wDVq!^}O|<#kO3TS?mobgC^+?gPigYG-0%vFKZ-feeX{k)}s84C~ z(wQCsbJsy*FzQI6!Z^@gZbtXm)J)8yY3y(Q+S5YHcY`S+9?K#wZE#7;DNR#Z@!q4sZvx|*pffd zm8*VWA~oQZ-)3ae|8A}EAgi1VZhWq33f$ETWb!+&cP-rbg2m{9N-E`h0)1TXTEA4vhdmrmKP*-v6E3VCvIr=5Nl>rQ zBVkw1RaYq%*T4-3Nz*MEqpkolQ>%NMRZQRoReZ2X>MtI9aoRH6>FDnD3JAXw`c~l^ zqV`NM^@34;t39H2l2FdhPph7)TRK);k#Lm!9|O8YGKRPsg$z>`gP+ARH+nFsgw(; zlpG4xV%3td4WL@<0=>FMxLiv6$1NrQLuL#Jd#P0<6H9*#Or+OmS9b{os*5S*KUEeJ z2hAzY5veCWJI|@PCeTs0hJIf9b=Z6^cW6U#=TMtG0m>;_+tfHatkwFauz~Bac`hW* z{D{2o?5R}rLLKGt9)`7^gs@bc;=)T%tzCMRdf(}6it!RprCg%0=wUR>4XgA>yn992Qy|KXlrkCO zRRW<3CC7d#rFaR*x%=Q%a$BvoZTmXrOB%fNo^+v|LRPmVkx^QuQ5*Sc0}k4lcM=kn*g+2XcQSmtzN?qOXAb`&7W2MMpM4l`txl`J zo%a4P)%O^U;yS>t6_n1i~L`3AA6VXCQp>@S1yfkBo1sjh*@H9#HBYB+TsL zi@gje$-&qHopD7;2OP~^&BF5~x0aOyMR zGGo~(bgHy4i^!tQh>9h>NvOSaclNT((>&MPythBNqClrO7mf3us)NJ4bCRRp2&!p5 znR=(`StruTv(_3o4(X94v-yrLmaUwSR+>#{XRw7*n*Q|=`gESXGCXx>=j$|0V-c7~$R9r&tsk61*p_FN3K7bZLoSt+yEV_qPAgj>_wBY;Y*aiBHJ$1`!HYg>GM<0NJv02d$GlLP>-a>M=n1 zdErylWusTi0K!p4<#`vw+kNZ>y)A1wK zF?uKp_>TS99?GsBf*+3cAz^V9&&ZtnUB~C^lHw}w&j}cx0%!pF5Y*L9k=^EIQaRik zt5jSdh*nBh6#P{xt`IK=sJxZL3HzF{MPt76U6}-`8@5xlW%G`u+ydDFgztkcg*v zQO7jV0MVz1wi?mAA>T9QVE;vxGvN0ah!v^8Sf~}Nz}R9)OzUKl1ck!d$%qjILQtCd z3_r}uy>ajdMN~doreHEQ)Z}^54CpaJU^eX7Dll8TpXyMB8$3_xk^*$BM*xr44NNDC zUSWuClW`xrdd*Z{VuOBRf{+zvxblMx;A}RezA?hwQz~hGI!-|VW5IM{i5lXuACs~l zvmkG8VQ?SwPBc4k9WQHyA%JxPtDslB0~aCBU0UkNE;j;!%T&j)6v1y5DBh(I>zLff zU$j<$!E=1a%YnB#N)E6G?!XPWu?t`ar06yP==gocQ65lp~Gu4J9l*j1M=lBplFh+4u=WH!^tQ%f1qQWu2<}ehnE&H)P)cIk}T^k~vivc;q zp?kc})EVY{}ae;7bsb5gGlUTa5tz2@_pCR^%v1o_!OKo_%X0xp;PI@cgg} zYec7yM7L*Yj`=Y_h&0DT7@|C3fqaMyqd*17dsZ1%6}mwJ1tB{c0xEI1PF=WH_do08 z;izE7L)~^FP?lKo4=Q4#BnWOoBYX%u`VC&x%j|!mjnyIq1x(C-Yzez!{~yuDbi)%$ zdou*3ga@c2NX8GU!$~#=GJc=Ir#v=C0Gm)BH|xT@q7s6{2toCf$DS|(r)JMI@J2G?WZ2f@?0)hq^>}=aT&;+(#x}X+6=rLu zHCYQy*FT~;WR{Q%$8f!Rj^qVKoM4)G|phkTcFZcAJAkG4FnxgD;xpx>-$xn&i4)Q%~?ECzexB znzz|s#iAn{v`e=A$3e(cU&h#9A9PC$3D_e4=f%DVLh}s&j|o{~(iz7=?TY+HQL{r) zEPC5fP#05QrMHE%0YBs12f`&+@pUyuSv1nXc6)YR^EBnO{oFrE#jY??Qbw!IEhBzX z%}y<439pE21G>ZR`u8{!I}L*DH{w=)Zf;--M>`;?gk+M*nkzpOpXs3#-!M3E_3N+c4}W}-%9tu6QI+o)Z*JRx7e z4^WwJVN`&77Wo-B;NTd4Nx!F!SnCnO7Qe;=+7`X$0m?QnXpySc`?E$| z4<8QHnTPPw1=RQ^OC?ngA5x`;5h?VNvr!JjlC+UvzLC33r9$K)U5!5;)ES!a5-HU9 zJWHj5Q72TTCg5Jz=oL+?8uIM1=TxJH@3Thuz$u27Fgn1!l>AHqaBzXY6y5_y&?1LE z!#47RtDFYh!`5`E)vQr#v=7+eYoUktw2jBPr}ab~qiZB*ohy^we)CdxprU1_PYnAe zF*{ObH5L=4T(kCBBWu70TdNxZ;NDDr<^VW2$6vBCG7cr=!qc+uxrJna*4hh9DK~PL zt#pW7WU3)U1h~hMpOFC$PVqIEYiyAuHCmq~*KZN^0=&Vz}6izR@r4a;CA4(|#Lg=TKZ< zHd8aJD03I-jEN~5r~6Wo3-_IC=BX?;8T(!^6MykDa!t71Ur#o-%E4E`2chiuda&1; z>EC+r9>9@o5&#+QyfB2yONr9@%@<@8e?@z7;B-y{lo^hN)>A14W1A>9tEerY(^8y< zLkbap-X0|`5*)fRDrl*w@3Z{Qq;|1av4Ugox>Dn3sl|GwML6|ox(e^2id7Z$I3;(v3ifWN0kzFx^;*Mc_CkJ-T5yuJvZKgi zmeOKj*=b^hOK}A==C5IWT+Urb*a;1 zMhW$-2Aeju#V;g3=K3n&Tj?LD-1;htMKzcLKPqy14K;Tub&g_s?&lw?isH!XJU|Dw zUqb~VMRnDr(^zM1X8gKPsn2#9O=fBp6a9o9=Z_U+eRv78<0E8#m|g{G^T1A`Jef{rbw>&PNCzbi(c$e2laGn5AAbu08;N|| zHGhswi`w;~V81)prtptUmxg;zTv=Zqr76q64-Yw8VE7SJ-M#>O+Ch2CJ&rgUS= zz~I41?jGc@uYLyv|B5V$N}-4{14jAg7i^A2*^fIfH|9)3!Y>+nbE?~+D&In@@87cD zmU&2Ss7>`Xo|oK0qzca`dd!cM9+%#tU1K;rB(7ZLzfA-zKi-vcXmc40ci8l+?EU%n zVyxj)vXX>#j-J3^OOq3mvA69;f8jU|!_DHJFtoNQD)~M$(7j6AUQ%b;vN$9Ab$7pGR8wc zH83SqMZFp@u^LcbGh7nS;Xx}gfL55k@(1ZfTbSSQ;okgR9>F78hJatu_zJ~D*k-Ux zr*3;{m0Wd|1@=XzrW)$SCbUzvZW`6(3Z>V9O?kjUbHyiUMYn22Q|4j)>x*&9E5ynb z{0p>EfRyo7!g+o0iXmdJgL0xtp6W__&`O-N$6c7^r}u~t>9zM~`~P6c6!NuM;miKrh&5zpVaEBNE?S1K1S=Bt*L7dFQNpc;DK*mOy`M z-#v)N6+(6-p(3|y9^9r|yAS&C<%Q@P$;Q^muWy5HAZ(k=I86MMpWUu(tb_7G0IvG` z)C_LZpHFuQUGyRRn>Y5@R&jkBWJ4azB=%E}VFru)Z8leFqX5KHkij=B5Q*x-cJX>C z$f=a(->^=USJ8vp$iu#ilh>FseLDl6U+t4$=JkC@PksKM_HbTdCV6XP*MO&;4j9|H zh?HUJa!!64ONNf5M8f1-sD2)Q1VKl(9sBg7i+)2$0L??O9BmS-}@kK zPZF;?P!BizqB^$irj{iWz-)_>Bp~mCG$v49ta%ab!p5p(tyN`PJu@_sZANtt+iFT_A1l;lXH9>^J%X z4t3dMbMo2kqee+@QBK1!%P?bJPhJ$U%6XfuU~<>6m{pX`j>9x)!hKTpZorawGDqL{C?iG}dRS!GcDWDeqIi9MJ5L@^w0{!Yw5PxCWt6~yUk`CRqJL=?GaYCzmzQw!4QgW zca6IKSQT0EB<~nA1d74p`?q(528SQ0qJ{9UBNILcc!i&z za=*qVQWHpdB*Kmpesxg2wG~$+GgThIEHef)k?t8!@8Kavc_f5B#exlbWgRG@F4)S( zV-_r-jwfN3sC5!i-7sH@TF9o{D-@*oNj%INlNkjE`e#ZyaKfm-Dtkzf8gPbE!FEv^ zG9fMz1`F-D1sK7hk<2%P%uuSqB~yqc^e|dj|DsfUu=5ksjw`$lqx_9@Ei<18VG1Vp z9&QOeUugKZhu%OOltp^28Vr!uuM2W;v;cDQNpB%94qCnnICsY}!WY5f zMA>^9#x>Pt9#KioslIl1S+jD z`~%vgyz2}?#IuO8Q0JRv-BG?Rm=i~H8=3qk# zKe{LQvzu>$=y~%Ck;id3q==y1LG~f8i}7q!#6y!cuKlJQI&Rl-ftLs;(^vVzN19dN zVK<7Nmu}cx_azZt-)&b5vzHhu*Lk;!-g_npmGg9XRqrJf>$4Pfj>j>wpqUCM?ri3V zw8Jhtl!T5^+bAO&N{n^RX#s$4t>$UeqL?@FM8$aHkBRETj8GUqmK@V`9BCqW%vt?9 zM>*RQS!gKAt*WtX3=(TAISP|pjQw&^!yhYd+FFEiZrdMFBwl|$t+or7;cZ7xq5&w_ z)HW0{MHN>jnIPssuqVd$qKesIJ6b1k6?`jNu|$d3%$$nfgPRM>T@vR@klJxQ%(B0< zrz{J|>XzP?U1X7--Aj#&uVi_Aeg_M4Txb|u(sj)u|A-nu;gWnYbo2mz-S8HL?02%~ zlSN_G44RQ?(O@A??Qe3g8D}{bm+5N`T(GX;JGzR1xwmrWhd*6$BD2RS)qST|v4iR* zbqH#9m>X&Wnz>XD3Mph=#h_W|kaWU~v_g}(KFuse%cz%Z~xp z&{$wxD#Q(T(xMY}Nte)X&4zrLKhH}ygcciyCQcMpx`Xiz-cLpsPdSl1{-V&@F#ub=T4Syo8f8TZf7Kb&r+f@wL z7keqfr{7`%@wf29DIWUcE1wadn#=hmgDMPb7}g1w-Jnf;e!_XrMPWLI8am$2Sa}ya zl%X6phiI3hhDtn}xT9)QhAIzTnVh>!6?%oFX&wyEmx z1tcd^df5Wf;2|0koE~xyUZT=*fl3IcsGEd-MeY)r0|4F6w3Mdl^zc%!_4#`Kyfi4&PRqblGKZV6UjIMv>!$+F$7Abn;r7!x4fD)AFuNOvE7jy$hR&4EBk0tnQvr zlT?x4zauyVC1gxwc=Y6-k7_PG->bQgh^bM%2E`Jw`1Yk+d@R){liT_grOYY~nD||s zgJMRf<_=s$+MBxm!F*|0ltdjD;52X>B>(dHL_eo5h-{7jpL7zsr5sC6Ur z$*k$zQVMoC(F59d(fT52=Tl@a)ZraD17gMs1Z8_{A8a2PVf%m{aj-FAE4~LvjG+Li zV97h2sCt;k2iGOpAlRSmpk|@;MZr1ndLROz&z_XVlzd2IT=0!Q;9BS))*_Xwrvh@M z7{16*QkjEbH|z%0VKfh`LC;;H2MV(3{JXP$wV@uw;*G<>J7qw=a-lj&Ti}sVPz0n* zP88t9Q(=tX(VU2x;KvI0ASMAMV4l)z0ByiCHEr2CbKA#GH9L%7G_vuH)RsPB&Am>w zAcrA%$;`r9L`v#_xaF~kt!LOLTOGHm`t{(8LWVhEbwBb0FNjx`KyQ8FS;p3kcwwtV z+K^sr*_*@C-rUNhB>Dk^j}5#>UW-xN(ybNw#tkW*IyOcAnWha0X_hMF;m6fyk!;Y*M97Hj z*jc$}tMi=jC}<8-$Jh4D>l*G%XuR6b2bN=DKe{JRGjv$L7xD9lBo z5LnjFx+8TVFMeg*{>-=)>YN`k86-)cjZMUkOTdn@C8>x1|#M(gN z{Nkc%c3D5YZkVYic`k+G&2F$?9G;0+!i)jD_e4&aAwu3X%!?=;|4B&`PWcpROCFhj z4`*tMl8vl%9be!piTr51(by%^wbMEbVc5@lrTolQPH>9@xv@xuv%aY zqzRmHW5vi~X9!MX^?=0l=9YeqE@aiF!>PfDQD^aJ#e$}Gwk%Cf{`{rN{|Lz<*tmMh zLs9_TC=BrM^3P=yWDvy$cV76`BRT{tWm9_>moI2sZ~H_mReyg_anN}0oOw{ZjGF3@ z=UQbr=4Q4@`ytrDbCB;Q*TO(_+{s*i6UArOSI2@Gbi~aIthh4_j z;_>On(Th)}?v{KxTQAxKTQ40(rR!dpZ$(BP>rfY)axL<$9Tuz#7Z?QI2O{(*X>iOSc&?E$lR-(%%jXJ|7P6pG9DUhBaprUh2P*KC zaaHwHEc4`W785gL)T_H}57#@j1L~^XU2DbBtlfRiG zjW;CsJfNS`jjtEOnVtwjKJ`ecRLzD)Y2lS8Qk$v+w#i2?=nhWYlMW2t9r8M^d~ujo z@C(aXR$`Q|*jD(244ZODl_muQk@zfPG)DPW)vYI;t>irAYpC+d+0c`$5d=htK2dZ( zXuCg5JBu_JbNV8+KJY4EJpbISGUfFJKz)&?-oa~*>9hZ&nq#Dbzc~Af8(TvS7!R=q{!%^^{Nj3&8CpzbY7v%f2*3o^jb0aE!r(W zwCzX!{Q>`atRL}SHvE1){7yLho>#vAJ?T|x;>oVbiz}OJC#~S4PUec0k(#LUD$5?L z1<9qIp{*ztW7M*NXz1pdfHhryn&8i7^;t7WXF zDX(P6CB^_%Ls%TCdsvHNhASagFv{c1>ZZdGw&ez5!iMW_r~@*C=pStc?(hdApKzh7 zW_GektkQW!lwd0F$)GOct@QK~_msR;(!N*8!}(-Us)&)pjD^5sBo%Q z9BqgkU7=2+g>zT6sZK1e}8*#94=^#7msC}MBxVCZD3 zYA^gh_{aYd>^QZniUAfR~AA%@Yb3tHUPBwE@brjtq=wE zvD=YNoi`(|VtUq>1YW0ZxTwU0mnZ39;;K|om3vW-u&wrb4MC85yJFz4vdme1wo>Y7M8JXl}9AYYxFh>6jXv!i|d zd@$_dVA`UHAr4rf&-@@9eFG}*sOq~pR=<><-Jg4}g*5I}Egf^bG)7sBtmeAfh_xm`ZH$Mso*Y~M3x-j^1&R#p};^V&o+ z7ip%$FbE`0>Ij@w37a}`E`UnXOAoffEG<+Tf~W5ePdgaG3;4n((%Hd4oC^;njxd<+ zeAo5BuCwr14q3hF6f`XBY9A$3&@_e=|4?Sfj2&p8?+(z=ZU2ecaYMenc+(1h{Z|j+ zy5okQfBvQbp650pRG{mIiQjRTp!)~Be}7)r4CIpxHnAbe z*G;mf?DnsqBhkPqo!4!sEU3~vx}4V#){&L8moS@})Dax5Y@#UFMotwB^Qk>ut!#!U zHLzEzD;9Zh@?CoGkUBQ+{Xqf8;!u0j&m7v`w5HTaV*03H+SCc74qEl`Jrk|$$%D%K zfuWDv<0qrkl(?B#9Ik|vsz)i&^CD)v=r5^;^l#CCyTu|=+)#Bu|N5=>n!OmhdGdwXxC5?R92s>aMpTc{>!$q`nR zcBXBiU^o-7Be*DEqLlrpk)05sr5j@|8fSL6xrxQr1?|}WymuBv9P@#7Er z4y>Pczz-H}!cq%=_dysYbM3 zVAqJo^&n+_4)=x=#E7s2+M_m?I(rC&-*qaoDM?%hUI4e%0TUXP4kL#bnrnpegvv&VlEkDcJK*5RiHIVRFaF1{G(GZlPm&g6 z$@PFFIz(rj4#O!bWYdUvD)pfTK`i+dXg(&??8_>$IxusfXUAO}X`GGMx1J?h=ZM%A z1b2R0ojV+0^9Z0 zYTSo_Wyk)!<3I3^e(|<^Ia{EyC56XmPr{et#Q=x-K;H@f*;cbKJW9v_97KP8nG{=? zdsuOB*@pvn2q$kB{rM@z5*j{o6TvuWL{(S_DI-QBUucsec>=H^pHcpz8+P1$A$kZP zjEWD+4JYas5qxuKIUHI}MbapW04P7G#{-lf)mc8RmUI@g+}^HCXh%`_&_p=5qt~#r zDa?;NPpV}MpKYEV_AU3;Y%aa*E5xb~a_fX^IT84VGm}w?=6ID&&NXyN1R6~uO|0q; zbvrWgdb^1uK=HL>{(-QP+i1rYlZ#m3ddRTR^~{IoD;`SZI|{W{BBy#*PnQu1P$GLh z>TK2@$e&}nxNejSlI_RxWpd#BC@+b zzq-X!h85xRiXGCa@J91i%M&R}Zq(tXWDT+Z>%~El-4L|YEaBIC95oaG+y-SeV+i_x z54ejqTUNh_rha$KR!J(Z$O(8N82{(aX-?WDL+$oUKT_QDdej2a1yN*8Md@EgJhj`- z{qiPicvr{qv%}o=e(p{jZv(>X9%%cB+XE_+k-rBF*`8tVI}f8U?|}Qalq{x#VXFtu zSd=-|)|^p|2jX$$v15z}C`SZlgI;&A#K@F~PIq9=p4x{@H#ypECs4nej(X(XDEY;o z@P%jO$F1X-5|!Cy+Xlo_#}B zONH-c?Mei1I^vub#!sN`PAA3GE>mz&EAEkucAwLa7%X$X3>Z4ngr@A zv6U{ZrHd;G&20ERDQ{>xuc)cXpDGE9i8BDH?rc?Q{4Q%bj_|PRyE%B`$ew0xb zH1P{7RH-#8vb8F5I(J&Jgf?qu8XhG8ri%Hw)fnD6+paA7BP9ef>7^Q0d=VtFSl$wZ z*GXnH>M15kt%SzpffZ#aXDXJ*k{?IPW|=atu5ahYCS~U$9hCcz4U3)p>Y3ac8QgvU z7NPBoUN?X1?>0aHSX^~XeIqtl%cQyijk&>&~&0F%?67%)?zA^p(G-waqmAw#=;} z-R}lZc(qMwB-?^8yP~kG{IIKF9jU^+#aPhEElQ=U0mVapRmx}Mz(({iY9xcuM*Oix zJ7t1D5fVxHnfz%|0o{99bWdhcJ!>XuHL>7MEvF$0)2hpTZGd!5QlI&`8_?^tLTP(s zhQfyXm2#K{6cpvSxN)IPe>-arI$dQK1x$4&)bvobM6` zm0*0Tke-zYua)?A%K^Sth*0Gnlu9{Rm7R(OZetKF(1>dHigizeU@P#;{CfTTTZ8;t z!~Dj1#&Ne8F;YglP&TfVtgcuMQ{k6Ht!Y5?VFLLJ<^oiwL*J0(3xXq|PkMKcjFh}viXfQ|hLTorj@#1g5{MnTNlt6vQ zG9r|@*bl#?cyb&@bOH713F+A$=6C-0?K_MZ>AiSa;8eH|Sc3xT6P!_=?1f6W4|RhE ziWho=2C5fAg9619_Ao%=;_<&sQ>VXAYKTv2gwGSdz#`%U27dZ*uq;rPe3>TP2fd+= z{E2P&NTTI8enTC_6T)zB0x&Dwho!-u=*i6Jzs=4z&N% zg+zEy5HJq;-O)%u>Y^2yWU=**4G5R>xtBBnwNm;i^LS@X^)>s8Mh)IW<)34oT5tTb=!UkbRV z62m@hbzY(@U+NUR_!UIzcA-{Lv`x}`5xAAfZkYk@jBnWis0@J$gQDp?<$A3n0gZaK zqdvuY?W3?651hI2#U?Y}uw&Cx$c%2vBobyW>ZCN2yGB`n(oLmcCI_pRR@M|I%Fjoz z(o;Ym2d_&1KMt4VuM*bz6XfyQr#HU)b!{Bp0d9?;IJ%xHaJw}71e%i+*BU0W?mseo zV#@&r&Iwh^hk!FGCunVLurI}gxkGz;D~tO#9KM0V@{vRf+e|_E`K5#V_MvV6J}*Y& z`>HxuI(M-{E1X)>>t+@mI8KuydrL{glW2K2NYmA5f{Mu2=8&G=!bN`t+!(80OHG59 z*47WnUVOdcXHzlXm4c3OKe&uDt%ii^`m|aWDdf8ZedAPDWFWN+6)1HvU0y{1aRSqh zfJK(I^it(K8Z>2zB|Z{(opUg&D#1Dy09v{Hq9_<)u?)mawt-+wq-RZHtexAd8D!Rm z_Be-E$i`CTD_;z9zElb1qtU-;`=mTD;T{fh*zDy~ zuyBJ-p;SN4eIb-mF;vmT^PL7&{Ml27dJT#qPNyf!hHx&>fsxJfmS^4*!v~vwnWM$F zMtN-b<1O$WFoR7*wb>IdM?bR$@6}p3x3O9LQCWGPhN7n2*vO3S)zTsbtV&5NDUp&) zm7YjUBqfz8Hqp{TNi_6$`U*Mn59;0 zU(67_!OBjlbf{s8z+&dKR@+rJM=>;UNUaEnbPL8Y$W#02UDM3PJ9QA5DQMtX!@mmhzH;~fcAE_I1i+6iDYKDq?bfUe%fSkU? zfZI%y5!V$C(Dc{!Ls|Vu`vz)T^(Gb4em`As*E41wjH0&jFMjvL(BDmp9K69AjP9ss zw2#R^{e2ENU+aPQmz=;Iof~NH{J(J+-r;eyFR1+L4x51j`>62zDHHlP8IY@c+yREi z+-?wWW8Hg5UV*-8_HK+=eNv^i>Jlbm zm^-w{FPXI%l5|WOrO5vo>47wif11s7r0lOfhIdfkRHQyRXa;SPlq9(=a|eK&#&bBY zciIz{do^0OUNkLdvx`Uvu<<<)!PNoycKO8nv#wl>m{!NGDS_X<}o?<0^? zqx@ni6Dw|8u|xpP?R6`9%-2y~?onB~=Zxrb#m@X6yF?TAH%=ErWzaqRtlOVB&L$e} z6u|aT*Js)UnNy=${x5;t$)&^63ixV2u#N5#hvs`-x<9MWXk{mMxCs{Pf21@eSEr_O zdHy1Gb$`WoQ;ee1_2yutWz~+vfXRZ?wmQymrU;BBe;u$^9KuVO<1{&f?3>B zTrpM!^osZfoL)m`xf<$+(uAsH|R~%FD)J)m>;Y%+q({id;-n0mY z8Ms7CQ<_<`ZUdV(JP?L5TrfkvD?idlSmDJ>?TQ`zWWu1ys->3Q%RI`feb-^fUbb++8)UB+Gs>FO&iOTTlvU%c@lv}gr0UPl} zs~GKRg^?YpaLdT7X4Y^k>|<-uY{&$bxa9X+QLA$^5o@RAR7>n!_>1+fQ9bg8G?RtJ z1G3GUbkMEW4QP(%ZPbXzIRgvSOB^_=t!gwQdq@?mtwqXERjvF4jpjo@p-UZ zlwP2I7`)N-ID%qXsDfSQp`+NebPyFm3pJme(kwU7`4o+dS1 z$l|BxO%#zPNvKf{R_J9R2+uIgCe2-g3Q%>dwonY$sXo3|GcXD`-)wjZEz&R`K5F81y7?5-`H_j zLa^+B6WwSLCVcH+aWLR|4yJ*gTQJs;0rf8B^He~u(k9aTF$rWpj?ht#2 z@#D>WbhT$rufgo$w4XpXp849Yey+=Z|Ect~J$6$qeQUvwdC-c~P9%^o5m)LowBIb)T zajv1-C3K~t+$p?j=YFBYQcE?abY(CK1JyK1##YA|*o|o7tP*7aGd554d%|r+wkx5a zcP+yHa?a>PUeor;oH03$BvXtrn&qB|C(Jr$=#{fj3xWjr3dSR0l|%C1Pes7BiP;71 zV+;OR3yc9QH#@^)%^GJ~LJ8KWUwJun7qs)-@Gt-6#_l$2UZ!{c-y{AtI3{(&u*wPX z##^8bbi9~OsS*3{+uJB(a#Qp zM{_u?64`o#V6{k-<{Vis==lg8keYo@r~wu!YKD`x^{-e1`gN4fZ9+T3H*(v4aJ$F@ zs(a*sQC2$T6-LttAH}n}(gNQrt(s_10vUEHlr~`ny+skuPky>h9PIFlY3SS^Z3RQu zSN@5M5opHU{Tp(ld?w!MHgUsv7~qfnxRM)mXTn(jY^GSB*+LC|>Pk8Y;YYvL4}$!G zAXbm?cQcJ>p(?w1=^*;${1hm?GxPwCCldsIg&>CczsNYenezr!cJ*p3?X+4!_Dg@6 zaJ zvNOz&wYbMib4z?|pSmMryCd#?>DnJmxbvE&{{u{q%^0q8O$(b~j}nbB5`h0ejWz%=gMMNwtUvraF)rV`s+Jy4<;uyU!#39L~cu!3pT2G=PHDgpeg zCzc>+TZ@S3r-oG*tG5cAA=5+{I6}1n9k7B`m#7bc(2=dDfo)AUc;o}=5`yj$0`Iy7 zn*(x6Y;%g+6W5nO+@oA@2fo4_QE2)b)Ih+a(2CYG4y2-9{0^j}08SG4Zxsh^6$fm2 z2Mm;Q-j#|nk|6`d18s?c7=gBAKwF5e90T{CHn;<=s2B8sm%o5~5F0}E@4rD>)uDB& z0$TJ9>L+5mCy-_3AX>u=av;2d4dPI27zPMPfcp>|67`=DUV#SCFmCbxWy+xq&RyzV zae!~|KiDS{#$p}{MGY8GE?@=##K0*CuM~qi;*e8sESmX=*KztIQ7azz* zevs{azgn>)J=DOD0>}aJ zZjRK?erABnRxgL?F*?d~H!9&E1;$u}9LWTEDvsJ14d)bnieCItm87Awg^0b0>3>M78cld_)x(r;zh`o1iXnsp*dMSa z{{9oBq`#2ZgdkDC3YZK~@}(-7r#DH9k}^113_(X)jjF_Kt*b5rm&G)2Z7)-Q$roC} zLei*rZEdx>wRQPi+O@r3bhhf9ySbm|I$x({NI6L)eWdQ(^jy7u9e>Pm?aa1Q;;o$(zLL=u~ngRA*H$op3q1Wx@_vScXn~<1aMg-X}^l{#CQP=ku z9J(){UyC7qgGhQW)*mtO0)ufK@2Hr*k$H}{ZJVDwxwp?azO}oA*)JjRGB?~vpCp*y z#k+YqFPNB&@T|O}t_7iG9rTMgw5uaH@=iU9L-)E2#6`nKb{%XD z!8N`TsAMMU8&CK%m-x0hU{Tt3kN9`Xq29aO>#@D%yYS7TAH9k_g7Wo5D6u0xyY2oK z7!D9T#E$xs21Nn~Q6rNi3)@aR{&PF#$?qhepQJjol!wsJK?VNEbUUX}k8Gk~qwG}- z@p+|{0YsWo?+FgwbK%gRVE4acJhB#WqeqG)Bs&Wi6A7cCMOrS!vx}Rs6byu97;Tyn zp9onC@q2@aa2A4?tV@yEz`#b(Ei2s!yO(dq&S|S^$dxIXG_Sz=w@ zS}<;6rd>vf`!owtZs}EfZRj!%v#We(A5m{@Xxa~DKd`6&K4#T8 zwKM36abDc8ILlemE$K>lWS^0;PpWX2cTTw?U)kUt+ss_zE$PZ|y~;#g)hpfRno;Yt zymRYf#im&rS~Zodu=uyv*H;6GI?Fi4!C0+8~>J>LKaj;<7K& zsY$OMKSsV)=JF!s^<4Q3FYde#9ZeD(qHt`DUv715d#cqZMCM}1^YI}hec{$f<~tsH6PR(2N#y?&>X zgmpIZiH%ax<*kjV;l_VN*nEYu;J$u0!ZFh~mQfi&!>eQFt;ye{%G1XgI&bg~tUY+a0>>07k-+X+$`%+Z0 zY|BC0u+?)xQn9@HBUJ&NB7hS69%#6js^Am@WgGlpmeszVrmot%YHU36ps<1izo=pt zs9`r9UMBvEV+YOUO0X61ET_Glri}bNFW2$$ECP?uxc67^_&k>JT%VmQd zCXF&ROHuvcmEt5B=>5yRj`C{v&gfFAccH5&ZS6!KBHAcPO@jJ*U-fOxO3v>+Ip#}9 zqjv~Z<804L2Ekh=(U`Asq97majctLS0!F!mNn2Z3*sLt13{ShxwtULX+&qR@Ve5d>t-WbZ0Je{(3+QN?b2RH@4SNt*_!lj6#th&I z7BXr1hk-BTl~b9lZh zF7d2HWd7W#eRmd{kbJ|ANXI@b3(pykVtf|WqraMNw2Km?AKLYY7Az(nEZTrf ze0L-&*daHYTb`2vbrEvd0e0-<-LX5;>y}Q~3q5bdx^(RKIA%{UyC8vcVsVt2XvLuz z&*R=hN$?g9+!C%}hpsp!SsM+1a`+sA{DZjaQW3Ixznl-VTKhm)vi#22N0XyN5^rJgBEw63TIty*ja0z8AG3j&+i-L3% zBT*$0i>wu^$Z{h%SJrT=SvTF{S*F=qDzwC@Tdk-ZOYBg!oUlabkhH)l{01E5Oh{)) zRf%njQEb8ht1AwX!53AsSz^55;sD=#w}7>D`UN3*N>l@sHLMfeN>+<05QQ0G(wkNt!yqFujJgB_ zH$|A0O3X3=NW`H-(Fa`|0n40Fv_t-Uo7(K-jeq*DyeTwFxx4;MOqa@{>)2T&{&m^L z*ZQ%9ZQsV0E^|TngbrxCV!2jbEt;x~Sk?#^mAqW8MqLl67{(Zh!k1>VQ?**$+)U*q z*FIz-dck1ex*)vuc+=xE(=#x^J zK(yjcDp}=HjX+viFP!*3*jT4Bsa16!i3*ZVM_x)NlWh5ewXzjWL4|-fL7YhdHcJ7G zFr{8Uop0n#7H#h5h+*LiuM)2Wnx!5U2}}MvLA18REf}~EatlecQ9oIIExT7uDY6+TF)-40M?Io%rm*{yM z*&mgr;uiXVbC!iSwuLu@h2L2gpQ#o-a?QRR;Mxi@I=z&(mI(T89%QNY{D`~&F3QRXUT9uSH*`nk zCOUdYhpXc&tib%+ge`k`q|!eBmK3gA4RcGRXR zGEZJ6qAk(TW2#$6+mMrID!DyzrvY1ekICqUlZjJ~>K3A8*it&8%q$*dPDW>T#?2FH z>5f0k(X;QDA!<``J5#`C24yVj2)yVmu~N4v8UxCRhMAz_aI>k)6A$n?Vhl>{RLQ&d2}Nr0Ty~KD83n{@DQi*G>9gsVL3=LQPAF%9wioPwHum@`T+V z!Jj^tY)s^^Lzxi5nqa7Nlt;sm5aFWz;h>~}NBxkGz?ycFI0OLkObF8MAOd~IFXRBu zU+s5F;b%`4!_pXsN7{`gAAXB6=M>7m|^<=K|e^_uXD6hD(76Xe% z_g4ZWmE6nVxX>=*%33BYW-|jmsN>FQ6W5?!kN3IGN6?^_jIm+nowN)O&A8A)kHN5t zqZyK1L=Pf0e$X1~1hSz+U%*B12Ui>lviPe-vbpIHZ?!2-6!C@a7N#-E9&growv$!!37mvx<&-$_*8m3R`+E$J+Y$%HBl}>eF2US-k>KYrnl~JW}KD> zzwR_+^=F!7Xvof(bwrRpV(XYGnK;CRrb$Zm=yU1$hngRf#z`Yyr#LtrSy*A}qWCrh z$prt}P%>XBoJbB7VSnJP1Qs-7&@5=Rd#9JYySB-O3HaGYKk{$9``~N~?gl{^mp_G4 zF87>~#;9M4$Nu=;VI2Y`F03AEOD}Q*!J+KLd!?^rYFP(eId%2=1MJT{`UV1us(Nn# znqZVDlyd~#bGqt0Gul%^hoqH0v8o+%8`LP^AoJB(M-{@esxKx*%LiBWUo=Cgk*G}D zQ|SMUxZJBY-I4zQ0f{FB0TK9LtP$n^>6ren*So5{ii?w_o%w&nUV5}(Jye&`zpk_B zGP>i5rh)~*68v+fNq_7KLx6&dMu+-K!9c0LF?&jd%9|}}v6gS?>6{(~3hC6ySkkEH zb4MtHb{SN;xmT=Q)mSgD)M}^X-fvG$nH)jZFZ$+nT+jAAe}4PT@*Qu!-z2yb0HJ?T znspHEs$=#J&uz4K375+&j~A z?QpNhfw*VL(HnMsKPS=dne4}ZG>UX1^7Tq$=Q};4p!-q*FW|iE$Z@nE!OJ@_SGJiR zmggK741LRb{yS94Z{V7DYKCF!1>JW>wa@Tkr}L(Z_hUPz#3R%Et6%*)0h51hY0mi? zlKspL6M#mk3I)Avq2Q$~6)FM?+91?l^pCcaVnJLjp2W(lh7TvE%y))u$hNpt`JAq6_K6N-TmivtSY0$3qA#UE5V!EP+eB8M#-W?R*jMh^j4fGL z*E+;fANgDfGE#d`sfCSgzGjps`3fcmt!-FXx>zM5?6r;QB-&DuHw&Dhem1a~4C5M} zI!L-)A0gBT9K69oIPY3MgoMwE7iefkOz#uYQuHZ!;5t zMk@@2canjQI=K6|F45n6+h$3Rsb>gmn!$%v*^H8tX)+9Z72EJ&)Z}wh>`K-WI#$`G zGHuSWz=cJY*`>h+2Pdik9rQ~1J^80FDqt+0mhErvTADZ^A!54Y9`|%S zLRy8#r$q5kcQ(u0FNC=B#>KNPEIc``I*XsT^$mWr4+)IZFwj&%41 zv4AT$RoPBygUJ7nvTqEsELhg#n-k>|0X_4lL&QU!-iGtzCLV9TCqci%Q3E>dj#(CeK z`D=FYE6{)P1!KoyUl!}{s5W!m$f;@fOwTXJo8*@in457<(miBhbYwW_?4MKZ@T*gU zL^<^PNn&~9>32jv8l&ZRSeor(fr5{TjhY3##!{@6qs7uCRQU0Vd{0^!jE!NU1!lS` zc-W+E)qKkAdklK3I!@YzT_=3cHEic@e<1X5}zdAsz$GoZz6ZTi@7X4 zU4XLKBQuq&YPw=-s|-wj*=78sEgv%msvHQB4I91_6is&7j*4!GXw zjJC~ZxZIQ|z*T!AlMw9MRRALjQrI2RwI)Dn*7#0)CuQ`l`BCh)8WaiuYqQqD)ss91>GK-cn}|1L5|yFY)>feCazTa9#3Kp209$(D@~{=Jaas(86X-dd2W zrKukRU$dBJJ!c6-O9UhZ0;vH4YYn95oA{%@=aDo01gmN)Kub)49j|Hu*{Tm*wU%Kr z@L&g=S#v><1H0f9v0@vjwh`D@4CL`L8Xjb_=TC+C;@&TgJ?{hwP{BJrN!_o2il6Fg zvHfXbe9;oq3m$R{>e;*_ zaVV@JZCanfkc*lVm=+1uvq{SjyBwF`Vv>uic*v2b)OkkN=mXOXaTtVW|) z(P@gun*uKKN!4b>8D>uJa%Tgyq~vF;zry!7f-uKZl#RfP}P@f7V2k7ZV^DrkN zkBmZ~kgyNTKpb&u&GhNEU^=Gy>_J26TFFwseA^5=`<#TVKZV8v-&o5^6q~=8rG9fh z=mdBy-s1MFyxHftk=r5;ACsO!qej#0qp2HqwqvtBbgAhW+eN4QJp5pu7cZ(p90)Lb z5*9@&F2{Mq9EN~H7?o|ZeM_^<76>{J#3n<}?&BLu%*_5(8h|IEt_{*KwU*56Zva~A zx9Pi7JbH=oTEp`#ZqclD5hG3bj^yM=54Sl$A)6%xR-e=iJKs`vrlsssOO)lUgPhAMtuGRG zyBRZXTZ&t8KP_ck<^qG;n)~3qLRl3~^uEYx_x>_x<69w)Q#6|sOt}xyClJ-aare`= z+;aOa#WUfgP$4Ux*z!kJY4UiLvP02QKys-Vr;Jt*x}~N#baNJZ>jB9N<$3cT^~gH) z7g!03$eS0#s>APBmL(`mGX0O+!NQD?Xc;}zrx99AlyKyEb0q@_X?<2E0?);j!Vv~N$X0U&xA$a z{m|-G7BYI{V|C%NLwEN3FkqS{b5Lh0&f!56Zcp<^rjFMc>>E7RX9+gM;j_zC1$QgL zYyxUg9-H|DAhc`cegTZx{+^LQS;Q8JNpL4PlDF)-T2kH~a`b-JEUdOqHh>o&| z4)GPpuX09_VYQ(XGTMNdGGDo3$8`L@DeaHuU79odV_aXF z0|MIpPNdB9KiGmOyBOM;7&@8!YXhR};%Q_0U)$E)G#M9EG1Rc?aMC>!a`_}dAT<3D z!WifXU~wiQaw75z(jUQushM&M4d&c#t|TBYz#|mY6?-81-w)0%#TPyQ-d!|9(=)br86yJz+nvuV>bkjEulx1&z39Rv!{v?*(!62!oRdT;LzMCbypc|z z$5bihig`kw=*L_sr;2e!-2wN+lQNWJ3US5VG564u)sz$paz))?_uP{>l=ekA!k#e4 zwkhrkJ7S&)$E=g@lmrDn5%)-wW0dA6(M^9wD8ed~%dDlmhh0*SkHWpXU=1Izh}X}L zQYrrIL^S(0DTVll5mm8kdrn<44tKYvl7v;9xipp$S-sbGbM2ju0^B9z))6hw+?nUp zgq<-j4MI6AsYGnf+_xfAa?&!TSW+FGxHM=?r#?ijrrUnkoR=;9bW!VEC!)COQ1c_c zLbGvBCbFVstC^P5re-5_HWOrmo}yW#iC1rqCDt2ch{jIX#BBbiBd=3uRyL=?j&jdj ztjkQy%VZlKbO6gzzF}dKEN#FR1D5?EX1_A+ou+=4XvOT4Ftg9?Oo8o7uZ7cm-U{G} z_EmMr!-pdKyl3JKq<7YNYhAtCbW1;%nu2#954mgtRF$^2*U|R#9Q>HKX@}x=xC5U6 zO-A9yiraWBFyEZ~qUul&yAkrZaM+Vl&0ASw=YT=rrk6>=ZkJnbg0Y(!@>Hu{m(2aZZr=;2#IoVCk zx|8&xRUdSkqB1NB;i6?)=G;ayL!;ov7UOQr_N4o1I#PSAR`&!HgmoC~BqOqiXP_Ds zZKNaMU9{(H#a3hMAaofzZO`83;R-P_tJh!%_}iCT*{1MN_^|?oBC**T|O$1B92X z#KQ%&*UW;gX}%oVwn3mT_x8uiiE@sJf-@)ZDSS^0KDx;dFs{jzA~;$S6b zPC<_(&_U^!xd^MxMCrg@v8?2P*cTKLC1ZuO)y{@69O<@X~*sGOCp14!4gc72%oJJ_-G|rz%&Pf zB=Ji^gKEGMT#*Qku}O!5Xp0E(XeHAiGyy_yKqlIt5tTxtnh9#q%+o=DTS6Ji2+)KE z$OI`kqlV{kC8u~yPjr*0K8ZBN1mJ+*@j#w}yCm!|PE=rAgF#0g2~(8gOh8=tKay4n z;k{YY7mK+@f&hOcnsS12ek3#@5h7d^J8CA-P>!e5MjQy$l@RX!7=K10%mcsEOsJ+D zm!}=q!#}cucET6*iv{wO4E}8_R98so|C105-vkWoRa<2c0-;eq7}r2(15%Q9A_(_L zNDVmwbE~GIBKy%0?p{*i&)I)qf079U`XMwB&=J%B?7+{zF#q42PPLidKB&uRW51^D z8Ydb(69|J0BJVeBkcEM)6|E-BP$aQ~8lf=NhNYOHV6wN{5u|_C+O{mWQm?%Uf>~A9 zE>IALsHpswp;p_pT5jENZ$W!suxj`$zT#rx=t}NkX=*yWe?9vBdzx?8dDi}Vw!@k0 zaW|X*BtZN{o+|5I$H5=UXC02%X9NzRKiC95;k62f!G8uWdjHbp0S?1w5l(qe`^Yt6 znus}k`xX(G$T?*iGt<~)biyZlddMU$*)wFi*aV-%IcWOOq*vsm%cNK0@0VAc zhz%$CxIzBR0OGs8ww*aHf@q8@k0hzr@zRSTf8xrLgCep+GpYo5U<=ELN|Qd&RGWA` z$GD887y<*1c^!9ZAti<;WI#D(Zq)W>T*%u(=G!Km()=EI8bQF?Ei(qtZt#sCx=4H) zSec0>AV4)vwk;xmNr_^D=DDARq+ij(Fz8h7<9<**oZPpF99MgntP}zmow&VS? z0y0K))@Yv^2z!lSzRLb{a)J z$%3q5svN1eeC={4sW#=a0W~tzxD*xc{OaI}v22@)HtDv~XRGvb_3X-!avS$|@j?q) zEw@&p+0M09vU3^i9|iFO?OeJfJ6Bt<>RGj}`Px}@skY9iAXW3~%5ydI=n`$+@Y)OZ zvjXTv3Whe(*3@SFPQmS-RqRd!mI<}f)m*9XH?dGzRCk_VbSXFsr&9hY;uq^d1jNqq zi&x8u^6XC{4^N3wsTZ5brI0R$mx?$!(QT4sp41-Omv{0M`Szgf;WGTS%h_?FQVgTn z#9ee5osU5KM0)c2eY?K>9`Y*4z-?Rm2;0=W+>A3-az)g5B8$I+JZg#vp(YGN_tqKVcVMbX*2G7UTs@I< zJ;V;g)Lq!Qx`c?|d0^?!X%LJ-WCR_c8`l9Dd=D(Y<3Rcsw#?mxSGvsI#8KbNNKK+zErpm-LCf$=7v|zsDY&$0EpczaGZNB8a_W`{tf4!j{wt zefuWJyFmxU7ufs6aSX&xA(8jlWuH|0D6e@UQ0h7hku`&{k>A0Ub{5&Ihn$bpuno?Ak-1;76jdBH>n--r%=*4xP2-a<4^vRwFMk{$Eoq*|jF2>=PVkoV z-BtX56ty1VwUh!Wf_O^6p%PkY?c7Va)ie_275*mc~CLBluuXwPGDai8<7kiS~S1B@pr`d?B@?bTv@cYAX-}3ndllq4sK*{QnuwU%Omfdeb;M5Qi{-7KPqnJ)@Htt{??beUI z5f68A-D+2gk_X<%KJ^fjQ~m`Xcpotj9c_#n0JKNm%pt<{d+?@fADQ=1QCAbXG-Fsg z%ywA5Q|$;RyeQZ*A!|S{))}cfI43*vj~J&`$$W38BjxN9e}RX*x&)&=cM&OQ=%IOz zs-!#OraH$aQA{umjw?WDxgvO>LMg1M7#*?zLP#6yfjNYmq5zJ2t{k;O9?t~0w3vN5 z@j*ZKS!kqQRG?Gspc*B_SRttc%I^4sW-myc4LW6S`lSH5P&AT^vRO|2QZP%Tbop|A zM{pw>8_5G3Pw}K^PP-GOy^^@s<&^pRqK4gQ)9j-v2`6L6kOUGy`LUVliD^3O6s zsFVJ-Vnv001y1lJ0GJ=}W6ytY7?Ugr2!G&5Y7mMU)QAE}yFsr4F#iBtbSM?JQ1${8 zdnt;I5!3?GC#U2by+(E(XjK7PFGt`kbRXMu4Uu~;wh5p}$z(*bt&q+s(_ zc$jfn7S^lOvWkWCg0if0k#Tt@#w)e3%6ZIy9HQq3! zUlC%Oyq^}{i$Je^mr*rS2trmlcSaGxuqqr*8P8~mE)2zB7Bgo`NPaJL3{Dx2hQ;QPef+Sg(f~a+YA~#V5|=IWZgswgt;nuj1R18LM5$)mR>-!3Zl#$KzXC4` z`inSJZ;V2l%gU~uYezUcP-4yMW4nOj)51{kffv)4Nyk;i^5HyYSf>~9&9bgjcAma` zj`$Cu1;vXsVzTPnvMfVe4H-_YP;COM_0phQ&9EA2A!$Hq(J~gQhKu>TucLKGR3}_Z z3ZrGa*ZdZdsiuR08m?Gf@!eXJj(}}B>N5O5Zs`IWMk^Ha@5Vn`+X>aWY0gm(TRt|_ zxH^l|)XU+Z-w4${Y0X)oR39IfX*t4a`XIJ&8wgd;#Qcr?M;CmdTKtxRWiz?zOW4z8 z-dxv!7g8(N$sjf4>SHhE+IFh8MHn)XpkD)G(3)t}nS3HHe`Z|LZDnGrPun%= z^S0f({2tZxsSefjVXHn?`~FX46~+WsExSQ#P@{i!=xbjP!xgHB(3_=AEFWJVU_uF& zYFXRtVNaH0hkWQqp(q_K^u4#vF|QxO7Hl1O4qb`z#Z{O23g`V{(Jk7KNy85{9k}y? zrN{nYyQyaBg1J+^!Z?`AJqgEsqBrh}KVgA9;g9yhT!;Ps94ApoY%xAXCBKrW!VLU! zRvPP|-CVD|>}Kdet9GUT<@SB?s~h5pxz{Ty&03t9*hG+G#A8DkMXLZ#;{vp%jQ^f z?X4Kt-_rl&e=hCEz4iDG?6(2~0ZIN3JSP8IHUHC7LMm!%X6S0;@^3%>m;0ntahCx^ z2=ObdS`9DiO|{!oa8QaD8Hx_7Bf)|V33**l-PUqW&AXY~>F41iTtIj!FYYvaQ|6Qre>8F-qExl0MmoEacs_wDqzeF(4hL^Uc+3@v zoH=-hcyKOmfqI7wwytIcN^YH%%y3IxD~~icteI^dl8fa$JHQky+IdT!`>r+$awMu7 zNeXinz}70=R&^)xyu!Djwc$irB*|QLfU|i&oC|4Jijg4~&T}tZsI5n$XsE1p1L6P5 zF>gBvhvbW7Nap;$HCqG<1SI{x)~@WgYApelcHd-T{}rGAf81lWD%$cWLa1Nh zX>L?7DNzv~B0_X%8Y*K#b z4l~oDb$kdNllja~bb7gVbDG{?pTp&W0Dw`%v4FS%Om0WMC>$mWOp6g&(q$`23F&j~ zNxqulh&aX488vC#=mR%Ycg%xANZf1sNJ1AMdnS&Vem%x!`By#44vO@4Z8SOy-WVe0 zeUCVw$+;X{Eu*=zk0gV$W?cDc)hRHfBhLXcnZf&L&?%^#r!H~XIvygCUpC9Bancj- zt+2TEGilnB_D8((pvv?JB0`QVX#_Qy-GkAWgS2nQ%*!U7TiPrz-zhaB`*~9YJeX~= z3h5BLn+b(?w@Z{elSNj*caPvIUI)V{rJv6`YafZ0b*%Nd3CSV{F{B>$90FzN0IC%(9!T6&LLoX#%wbA8ny0I4_5pf zU^G?LeB9?x)n!26(qo%b3IoG!y##USw5oAGy{_> z^B7c$D#OiG#?Pg>&o#zM!p(=s6@{%}8&TDUwUX!=|JwZOjq}elAs`O;0?YbBWBSDT zBDq{?}G6Xa7%PdpSef|JKfvWUV&^5yN&P(X`!Ces$Vj z_=zCM6)0Xqg&wReiK!Mi!Oo1-9FMFM-h`#%LXz@5JvZ|;&x!a8`m3Bv!k2M9AXXT- zyNTcM@?_1|?+W+<-`;hHiP@~|?FpsI$3o+)-A4ROldcwBNM~0SCvZi8d`SDb#mqeu zGW$lHIVm=cPn`0csO=hb&84A}nh(kM6t0{a zQ}Sqk)c1nn5&zSq6tgG2Qfl@!&&!#H6YbOpoCh~=lG9j`j#(LJDvp|eAKZu{-CHB* zbe}2D!z0Q(WcF`m{O!G3fsx(1BK0Y!UD_h=tb`H*0z|GI4<}|w{ccOK(9%0%Gt}3W zR!6w*m-_tx3N~f&;EJjJ4^_SK_x?mv{;MW=8|%$oq0LfzjTfaeH4l9uCcv5i2V^@M8bNA4D%A z9zXMK6{O!s*8cZap=@FAuVgIbPcPsujNwlVck>{3?jFDwB^Tz{b??#qu4%HbMi)rbB<`ee@ zjlLMe4p=g!|Kt=Z>|!%=%CaHDrYe*fxwGRzZ=Vi@FfS{NgdBsGzwn-CL{4L_6h|(Y z=|_{i*3}ain{vlZSE{~jv!Zoo-qNC!{0@S(0j-j2?yCTG3#8T*|axQCc>8HdEavN4wPuucnH_HDEzc}>r}bh^drZU&B{sjcA{h~YdKz?>`A$5EVp;h z*S=r<@^vqF%v=2sx`;!I;>{k_c4<)$YDFPvx=&^in8(B5Y$Ws4!*WqZVm)hbFk21_ zEi1G+rO(U=TB9mwz&n22`w!D+lC*7kjR_=AtU6=1)t%uDE~o5nUFY6`SEm80jhy$_ zdacu()nVEC2rh6ZYe=Ah2&B$@n%KiT^d2C|lY(*!*`mQmV8ozo>xv zMNgy60X+++pzs5&CA;yS-`MCRf(0!mlB~5Z}T=E$j{K7QjaZI7cujEIdFv5Nv!i+*NC0!;73)((o!OZ1EgiY7MioBXw z!;)$}fZurlK)8tF!{P)I4GED?bw1w&I5%NgBKHPl5=ZxmS~A*juK5LyxPHa;F@Q%U zQS0$afg8z~1?LxAoV&oN>a;o_w1$R-k=uZ4w8ulBv$HnuG4g)hL}Ibi4+~9}3tyEI zC);Mnw~Rko_hgRn&cTS5lyG}ZE-Lm`Tj8%I5yQHOWhKuIqLq3@QA8OI@RO+Q{H)b9 z|7+$}9FTVMnAhjfW#7H6ZkImLv9_?W7SbE*()2S1ODTnW&Jx=BL3m0o58LL@0Q^MwXyB!|+^JO_xGP2#QhOAR}LaUBGzuBdGHgP3DB7CTo`o!Q?Xn z1*Sb~nQk7{vkzSpk7Z}b$9qz9iT}@Orq*HelUCTOW2jB2(OVyS!w1g4FV2`^=~rZN zfPmtZ|7Vmx{|ye6YD4&_sICZ{&SWP|$owjyAYEdViV(D6g@Z~os3-(S3pWXvPZ*vS z9ne!yR~KstvK8BoNHqdS9BHKQd}>iwQ2*R&sa<<_pY`ToV6oo;)l<9g`po+yaO!{U z``qiv|L0w#>qmhSb`H?$Av1?g^i*#9plqrj@!BmZMc!|4h*qax(sq`ICArD)99sdk zyf>(F++0vj$WDeBr{$futh4GJ4s568&Q9PI=AE~+v%lQ-xpMNSCOmU;ZU$jE^@k=x zzZo(AMC-m#%rZFcm*)Ik4^4OU)S~pM{(l# zg-FqrqcQ$El*4;4Y&7fcd{2pTpMgU#Mv-H2n%3udPfFo`Y7&o=KUlur>+kT0C6{-6 z;jH78C&S=yE+(gUaFoCG#GJ0Tzfi5?6)RKkd=5w7b3WR3Yb&>7xP0R@=54nX{l4|W z@3$9*{V^B&cknweMIwrT+mM*noX^4VU*{n*tz%`1uT8jg%hbP|cPtz=%hdTicQ70^ zi`4qucQkRsY7}3qk@`H20>Uc~bt?)5L~|$kn>&~nu+4P#u(fuNB$SV~wqLVZYWj?4 z2*f6=;A(Eo*bv98brv_UGZzmGFg46>GZytQFWTB>FKXE4rYmphuadQeT$OIpx{uvq z9WvOb^i~-`3hQ$_9o-A7`__8<^)`0;9gRJ78tWI<+Ik($G;p7LO|W4q~$2Fz?+RJ#?b6u|)dj5rX0t%dljjc1&i{+A#ZCE7e}T^(|Ao zXE(R5Z^Bo(koYYU_7&HunT9s%$D|T%N$C3K<@PNZ$u+8PUW?0N*l?1y0!J{-NnK0g zsybTH;tsm%*3~=P;;9{9s-z55n4H`7lPedII^~gCbTn%%PNntEkJF_Tuh}9DG^iG}IoFqj=@VJ*%AAwtF10!rH#wKuRihq+6*CX+ zZ&0n}tb_YmX?G;q84%>&z4a{pi^DqamA~&Sl7?}kf>LW{BZii#QbrWn@;`Q#S2)I* zi005CWrcsHI_2YPAr(N%Jh-~NY-(Y5aeDy7ECC6CYpvGlT`qoh4~+=p$_<%ImL1-c zaMNdc`V;--wN=8l7h(QM?v3E$i8ZfU&M;cob7L<#oSw10L=(t$XTt%i%-rm)_ zt7X)3bE_1JU9?7QCK-S^JYD(As-_u_$iSuIkJyc3fl;;J&mEmFzLQpvTlRf-hL8rdq?g=*~;JOS_oruKA*C@u^OVv1PvXqU(t?*VW-=U1LS}SkvtmN7q%Y zC0%PxcU_%rS9I4^&6RCbb@ybk?F;fW;=Dm$^+4LYx%dva2mWtN0 zo{K{-FiZ?u;hVXhwd-~*OZ$8&8=WO%4kGAJk)4){961n`kUwRoF1@O6eqkKPfg~Jg ztn9UxzeIW8I>v#vP#O8`H;)viwUX1^+@2!as8V+6M9h_>B88|PrE*JQqO6I8?QgJX z$1FC8pk?wlHiTGqYk4jD4Y3fDw5+5g)ENAeNL|PaYN_97<>Kl_jE!k!)fdt8%?38w z(6P~apwkX6GD^Fcs%}b*op}gyER-Mu(A_IDSrNP@YvW+o}xKC9(Ig=`mK(6^h}%Ifjmdq zg3SoG30IC*cUN}hfd>6~JlyP)mU(nmoe!;uQJ&NXDU~WUj(0&m9B=Jv=w72ha zC#j`z9`JeUx85G&0|d7cVE%*oXdhtJsO>Q9R1O>z&kjxuHbsZ$Mqt;$@0AYSzz7wg zkjMaY!D9gAM!`Vl~VNx>Pg#Z^Ju{!MLlHd z;<4pL^1g+RnlkGwr@rO#DeM>6!`h&ouCs>rfzqea5En1N@Y}oalU7jN)0XQUMx`%x zpvsjw*SU9?7%Ii3KX#zXmwDBpK2SnRmu^=nl7vdyq#~nE8qD#Fgtv41Nk8~R=d+)Z zgi4jkE2<}>_!AjnzxSp+YqFG}J!Q0%fa^6gS-&H8p#Mf^(x9Wi6hJSfbI(~yD>j+t zL`h$&BQ`n24Mt&1I$jOqJ@0o zL$w|lM^i1AP4jN&n%dzVsAR-Dwx%DCwsxbac};y8dTSzxx2)a~iJF!wLW`ltUa5Hv zp;?{%jR&N6rT=`xS{TPRYP7t!O(o-hs2;=Qy_7H3D12J1fUL*YLEgu0qg2>Uh@YKEavZVhTIkV`bZ2CFYC9f+N-v< zy4{^JKd+{DuVI)t>HU_FV_({g-s`dgEW-sod;DUb+xhP_-WqBU%kDItm+$ZkNbwAQ zxt%#f)J#kK%Y9Ypxbc|+Qpt@f-di)PJ2wb%61~{u)Xz>(ItUzdv%UD==ULj!fF?Pj zKHL&_iSBupdE?_*Qe=F975{XJ`NfalpmF7jE`9t+v`2qMpYKyW+7x{cCcZ)P)OfJR zc*HB}RbC=Mex*+opuLw^;)SH=*GqJbSF~k3{>b;HF~BSt>u<$+$$a80g>SLPi!Emf z#T1A>l1w@M4b)L+gHV#{=^ms@EYEdpmtgx`mF3Z@jpvRte$+-$nNm6v+&6?jX*wQK zzGs=Z4gnlPbIkv7ALkjur3HWHMmFp=Ri*K=Rgo$XBDx7(i;%e zHsGKYh~SKQ!uR#4vGAx&?~$GoQCcb#=-?nYwN8(@Vi)Aqra(Ig%#?>HktB#utj-B* z`G)9GKC!(#5J5hZv^hZ(Ar#|XmEn(&TE*Y6Q3w5WcOFW;4u~X9sizGu!cdvYorh+8 z$>%cj2f;Fq?L`pHt@IhGI1auxi2LsIS3ZS;G#F3mL=ImC1XSmS;cWhPh%k@E@TY{p z^C5485RRT^2=OXY`+P20&@{Pv&?{BRfHuNR_zJ9BhN5d_=0_N2OM$r#1nPbD3gHmP zvw&hIqzgv0I5C9jQJ;+X5eM8{?eqmGM=&*E95o?GimEyVR+4=%*L6a!GqU{vucBS? zjzw)X{IEuTNh?}I5Kf0q>LLvsa#4r#{M$zA6{vcJlqLfG<&j>|Vm#cgV{ZfTj%OiB zgy3;%xt!tBX~r0C0R6*wo3Pk^EaL*nE~Lm*C4ShXqZ@WY55A6GRIkXS)0H7+Pr#J% z+pQ-QkpaqhJ0`COF6`i;A!;5__#tve2!${leW>LcEQ@1ilt1$K;ve@7+pr}VVszm0 z7Q7G_G`v4sC22Wz#d@1|yHis%+-!UEHtwfgs>6msW1WWUmIhm`QB1hF0fBLZh7CnG z-rlG(AsP>qJ0dhAD4B;=NIb+PCHS`tb)j~}9Pr_Z!7O|Fpi@n+6XuLe7#{QN-SW?9 znlS8n?hXGD8emHZ!$>-bCT2A|$8K_o)f6tCb|)*m1F2%Fj+UH2LXon?pXaLFL(fq2 zfLTIA-2q>|H*CCO>>AT+M-op%8>hqfmcfiWDhw@RzE<0ihA+;gF^t9Q`s*=7vIxvT zLs?RH=UXtQFb!M>#-j%%<$-pz&rLa8ZOEx7lITx2?~Nz+cX=-0lIo44U$|SdyaRJ` z-?wNp1A{sI zNCu_LQlFBh{`N%aryTT>_Ohl@xzXL8F6?E=60Xsk)Da$qiE|XRqg2cwK zLn(BuWpP(ozUdl`&?tI>EdQ;Io7V%WvbJ2Y&oXnZS}p@!|3go@v!<<=rM zMTLv2B2)-7b6(|(`j}=eho*^-ncE)ZvAJk`Zs?z(hHe~rn40;Eu}u~>#t&=aZ!kk! zb~RBozb;1$S>5~|)?Obl!oarAqG}j^hY?u*E;?(7K4XBD-M+Om@pa_jl`xKv#`nhk z4BdaRTf@~9D8%^^Hcl6f*A@0Ru;lS<(ig7UJ zK;;LFbF18rBM?mY!WD7{vlgsBaM@0;)&TNcKtr z$}xv@pH*s)vfTAlLArvUI=oSwq~Wdd2H55| z@e?6w4duG1lQeH(cCx76kED_HhA)&lX`>bPD^9qfC3#Y# zXQZxx2xp}e4tyo)P!D7g9#DrUH^8ULuooKe-~T2S{yRW*n;2Azj_M-E zRX(PU#iuELe_k+MU7N~Ydr#=mF;~u&J0@eBK-eOZw)7*oM41>7^%6456?B9<$Y@{0 zkKKm?v8I6WK$ch8n_WQ*In3=aSa8vcecc!8inkA*xhY|NF z=UyYbd_hZMi^mk#6N9R2N5$HUVfI;&O=dmk(gZ!^5Y?gi&Ak_EvLb7;GLts#C6e(d z0_aX?oyBarCKk)4&0Kyb{o5eW6m()1Dz)jxYz>jwvY4bP0M+Ej%h{AiD(2s2vLZiN zlmE^_V`8^5RdR*Ke5uNO$tGj=Nj&}bx;O2WkLqhMQKKKC+4p3wmfoSMpVV4EUh_9e zQ(v3;lEZMN-pni)+jynEo*+5wBB(kP2M6*x) zCewsgRq-Ypt`f@CBu#${v&#DYnRRURu;mjoI0{>m@fsy&>k_o4v)SsbQtK<@=;mB} zV>L7??xiTrDqwb*3kJwvj2za?meoW}RueT;X=@v#(@E1ox6_zSW{E}X|138`f#F!< zhl{BG&Mi~u`gJBTj`oJcY{2Tx*bX@Z6>=i#u<2vs#)7)0WzcTRrLra$)XbLqaX26l$W(zuB@0J zu_YUHWyo_2xmVLJ5v9kMLOZ8JfnzuZ&|O+ zlIc027uMwCD(zn?!aog&J(b zy|%mD=NCbE&OF)g%^v(@f_@&OlKv9k|03>3_#Q}A%onY*pz2=88S;4>2iZQzWbp8_!vn>49V>{rk z^T(kp$S4d*hSae^=0{A%#};yOWY7fZC17?XGsk%Lh++81e)#AnLC65wBxJu47OfFw zbdp{MKt9Hp$t*}NG0)ZIPks!LOyC3Mf^j;sp-glxjJYU2_Q9mUfK8Y%88Dd?Vx~$D zlEJr({70$EmHhMqFw0`9#1D*n&*?CAI6;RJIUzM{!p5X21CVPNHqnAjJ_j+mSLoEj z4VYLTKEe&!k_60>k)NU@J4Z}}4j&c$V9q4Z00?N1e-0lp%K*xt$XRMwIt0y~3b~SX zhmS0WkEord&WDe%hL67cdk!DHre#dW7%s2~l8-IeUH}2~gaCD9PX4zD9P55 z6W?+PK5kNGu;Ba?U`I-B-!}YRV4mVmmgP>4p2^&j2JlM)o)WZMQIdHgCceL7XLPS9 z12FrZhws-`p8`_<=aY>8LP=&oOlCkz{)LpxfRbGQJq&^z=yvpK}?wC88iJ802?sRSaU1M}vZVj4M7GjYXc z)R2(lL`;0EpizNQ)8!|Co|rtFmPwN`1J@*X!Yp?J-I*L@_-JC-gr=i3Hp7O3oF{UE z-soOM27o@ssL6bLdV~dGaPMPu4;<7TmeHM%(Vdae9gxu-lF{uF06>Q!mw`{4xQv*% zq+_bA>K}Nszs88t{~AlmowzhqdBwj?y9wZ~Dys>PVYc_&tw(gBVpyy?74;VV^jzyj zLcVGfiTZ>eZ`_q4bsNHb-$oLcj9(sz{g$gw#k@Y1uwDiWj}Jt9%voIoF;J>_qSR9S znH#353ZET#P66zoH`xGR93jHJC;TA9uz@E$q>J#gf62uzC;Gq&H*}@9+W5DiRkMl7FOh7QDuZi5Iy7ns=KT0e-(4{iQ*_a29_54di`4 zMIt}CjJkJ4`4;gD>T>8*_@Oas?2ns%yTAOxR{jE}lOMXB37tya!_%f)LnNdex4s;%ImQ1p<()`^7gpn$ zxL`~VMbSu$vn#4}SBeGCv%AQZIw>o~-q#UySQ%!z(lgvpEE7zM5v*ebb86;FASFq- zgc^r)4A>$IP{{_SVgl~iMjbbCCL|Lld`3!mKLlDQ3RubjreX$OH-s)(!Iexz8b1U* zisTd=1Rh7NVfmqCu!WSz0_FrOhn8FpLnzfO%eBB@bDQ=k80e_(lk8U6)_?8+fjZWO z)Sl#`BX!|E8B@K3s@{OKN>SEc_848g7GW*0{}$%pE79H?A8g&#?^;7uCk#SQk#S&k zhM`{gBVGB&dM2oxIW*<$5@)*?Xx({P`$BB{J-~71yS@`?)nSk=$RU8m0Z) zCosu+P{lmLR;{m-DXt@dQfD=&D$;IsxaTFfmt`A8GZkSSMpei4c`(U*U`4DG4Yhg~ zav8$e&JLp!Th@Lb)2^0rkhRHB$4gR&xPL*cQ;t-p>gZsL(teU@r?DOeH`OtUy6W=> zj%M?xA=hfqwx?+hoOSftPxK7niSG%VKphu$Cgc()+y*_W;}mR#CX5DTVjG!QRZ}ID z`Tg^WgXxiy>5-G^Q53h#4Y~|H`vBW)__2tp?(l7dZ92l5VShuSou5#LV07Ryq2INe zst!q9M?dp`yHH<;B&OYuLdQQ~F|?q)gtOfZN=F9Z7|XinRGM+X-SAxx*RCT**aePM zhdju}311fuMxRebUyr0-N>x|-d2o;IC`+s(f%H8oY+Uel5-K|MHY!vs`ZDjQDEmV1 zqbd8)?!O5BJv!&=j2g@L9S5HMjsySyvZISw7&?jB8QYtD^OyWz!W(66dt@O@J`fn% z6fLdNmWoF;nu1NV7SLj*AHpce&1E{UPlhbCIBVc;6OEXkC|MrwFuk`$4CGlaRtNFS zeodR~8f@o7I>%d-EatyIGX5$)JpTXghB z%OX79mBhllLaajUm_k6Q#|evWK^B>}!(j(p%0>uNuj&SVDzMNU-kGd1<$&M7!V-c`q z_c3I8j`qXOFTiBBZZwaElZEF}Gq@NZWwnaYkwqg=38=ME#M#+o3$Gl|UX@v(jxnoY zB9FZix8sfBZK2)Kg*_%GC~Zj9y+druneWc&?i!1E)Es?B8h`QZa+0M#`znQ4OKfV5 zJj+lq>bw#-&O5$Lm081&$BG`$CyQ&-wBVrCws&dUuz)^E!_u7hEC}FthfYB*{vXEP zDafDwe|J8`(EsSzlhz96LoPe&P7F3RX+Kg ztV~bnY)xWPm}F_HU);lY*nEmFD{uxxxtT*Tp&1sp*29(-PRS6c5(|E7@5H}tbwvL# z8Wr@Wsw;+b&5(%y2nh$db1T@RVYPUv+KH3}5~sd|sJK4Eh2B|%SEPO3kPmd6XymC` z<${ydZafVh>R+R23|0TakL{`g=%sxm`31dVr&DRi#r5txRRMg;I%jwMVVZ%U|G5Yu zkL$5=enbcxKZE-JAV&DFMW|xzU};Xq{6E)VSgbzGFcVU!1k0epTD(F@rI z>S!Y%f+MLE#$Xl_aldHPYDm*ld&AhG|K#Eeh$smPDku}_Qf??m zM<1Pd%CVfbtEP1@wz0WB@x0b;Qe~^XZG4(y^thp87ez?wX}ob7=a}Dj_)zpBB|>$! zo0RUmI1yq2=o4;)q!M}D5I-y?L@_he@eSfXXJ~-4XIT2P#q=S8fVlskX82!oH8yoK zcai=X#%_)-|9xLqeO?t!6Y0yxbHmtDG7)@HD&W^II?>5{(n@5s*+>~JV)AGi8t9SR zXnb2w3tNwL5yna4Kw*bFv*SbZ2rYCQ)gqeR2gtwk%I~vsvna_l9WEOIH;)$$JpMU12$yN zt=Z-`n$-=_-%)y`f75Z*qw107GPVX0>=99wcZ>{m%f{1c;I7&q>~*x$)=p;dZB^T8 z^^?vwsX$LD;J`MAIC&$ zb`w3AO@5$psy(8Q%PQ9L)4FuFe~N7Yn=b1~)(0_G@8&Bti2)gx<;k=rUAk%2uY9GV zEr%|)GlgEhsd7@q3^qY;cCX*sJ5MLIUCLZikYnOoG82te#s}oCIYSUuc9tD+T%T%< zWAbQ}o{mrt8~yG_=1M!P?$~XdmPJ=S#%yhMjM3Tms*gvGMe)&9mx-n~O@%V8tATXr zQ?Bt2Ao5tVX-2&yx)aO%B+Mhr<=Z6+P^qic^%${FO=1EV(AL+RZxtI5X60wwcmi?g zR%SgZTfnl@D$5Mv?F|wsdgl}BF)m3>a@=8(GU`s+%6O!#!`*bw+C35%WEYX&rY(w1 zWpW8^Dj^hN4G@3w@&pX0S!H;~i?pgfe2&j0s@qiDWew#bdZc*PY`XjFRQ_O3Am&d9_N=?UwZYW-`C1`2B)ig*tI9 zc=&+s-N(qjEKvBYUIe7yiEo-ES$EQ4%xUM&#{!#~6I!yENz~kMk|H(^Edd`#^{j4- zCOn{dS@ohN@26#uScUL%3!-|(l3Jzme$s|VxNjKfo5QS|)p)?3Wc$o$CXJCjd}KrONxY#?ol)Di(#Ao&4TOiIM?n1IG*?AAPm7X@U7GXp05d9tm5D&=qmLD{0Ewj(?DnKHH-h3E(>yh)QE2=u$_l}?2GFz*)wQx4ZrV5e# zuZ8;}DPgM@CZ)mp7Yn7-~M0Vzp!Rxyqv;wgdOH+ye1Vt z6A5dWYxi>zPd=4yn{mAWk@O5yUSkPB5*u>Ii&UJ_;HCj9BC1ZxL!H5?Kwu!yBMU5d zt=Y3S+CiIMGP9M^veRUz%Ji(HNHaFr`tpc2S+x#0mM9V6qs~F<&da}bs*T~R&vO6G z@_Bs+`Rcst56ZS+$HX3jILu<9D#6+7wXxwu83)Pu4_Bx!rQA_cxOZ4X!{=i%cM|RuEE``+WuRaj;$oQ zjANQ3U0jFa?c+(IFU`}TIiJrGRU|o20T)Dn@B;I!QcC)+=5`V8fKLQ>$SswZX0nE> z33dcO5%Fho8dud&__HytSY848Wt_cc522WMTiCd^Fp3m!Qih}vNmi%W>Mgn4xT-s; ztqRWduZB=Cd>=LeO1B4fMLBdKv0h?){~|QKwX|plH_x3{eXjU0Q(dYA$z9os-P9b| zoyE{d)7+x zpQkx|UaGC-6}6`U2PA1(MTUBhyYnd!bVI=Aq`_AJYlgIqqqpj3v?kkE{N8= zJnbf!PR0(Akf$FfXSdLnNh-=2+cCF46>EOZ3f#qSHG`~gwj@wvrU$)X&w4- z>$X@MdI^R+i_9n>j^aGAzTw8^`5Iup7=PeWX6!*`KE_5@?cFQ#wBV#j!$vJ~G9d1< zoTdP6X#nSCPp9*%JWp9JL`>6ACn)=|zFi+0CxNSgA*!bat)mKW+7s$|humrX#Q7D#aqR&4%*C*Jg6X`WZ*mFDb$$ty^8u^smr|3IYukhCc>^A2ItiOE^ybv<}wF?uoA ziS@b#QujXsSJ!no5x9Imq>4;xrWYf$*b&Vu=Qty#7_mQSe2Sa52Dc>1!+0!^=#88+ z4DEbY?S?NpVAg*7<1-qHCT5&}u)@Z`7II<=JEr1ItWA2RKHo?a3Kj-IaUM|0%*|sB zGIB*2Iztbj<2}24b!ME!drlq^j1r%8YW@x{+rf|94qtcWd}HTZ-zTp&9CA&jwlA}U zn3anPH<4&|U0&c<9j;FrhW`+rd{3#LGaS8j1iM3Q`smolaX-O!FNruO^XH44HqJh> zbpw;ccbF)(3HoOwh>8tOBS*q+ax%Q@TS~QDTr4Cy>kYrixeVNQ^tU5HshZ&Mln+F7 z3Qyxv;=1IG=3{X`?7fm3_ZZ(B$=SsVzoul!9#&R_LHvf4D~3iwhb|47h5(6ONeoF? zIi@XGfWDYOR}8d!6z3A%c9C@LpcCr21+5e}xzNQ7^AmiDa^WIzSN!!K`!}CW1c?cP zyLg#)C~W+dCz2nRbh8J2;0*`A$BlyYi9p3%-!IH*p;WXuO5t1vSY;KS^l+yl!*)jKbvh;XNAz`%$<^#?y46b@#PmUh?D4GP_>LvEPw&xjX)hC%*IEb3e~~hoJY-cnwfCQy+)|Sv2#nQb=k-&JdREn-Pvu{@*YA z!kZCv;eYo*?=L|G>;^+vavzN0!(;A*{iHMq(+`NT1xT6`d~TVu2%q+kSPB@&DQ~5* z36fY7U`9<@^b!wL3H)@31dhfm&A)OnG0g+Ef5Pp*dNCEJKEM(CPeqANRx(EK7=4{5 zV=DMwq9F~{siw8gI8|cU_>6|52^Nz?#)v zc6Cl=y_=+gK$;u{t+}Q7MTYexx#`P|2AiMyw}WMd(Bxn7LC*L zI9n{F)>@HoIo%{fwGvT`#BrD1f>BmF$UQsSa`cyOPBK)6^#t+kNSZMofHcQOp<>n* zCMei}WqJXH#UP{8U$zVqJfpwwIHpYOXw|NTVCLL*Jmx~?T>hXgH-y?qucG;vvv(92 z=71VRgq8F2&y_@tFXid=YYq$p)ZWTrkKVWo{Ez4T!L23(o7{^>l^vg5`+46>?}q%E zGD#rvr3fjIX_s9*pAZdI04uQ(O_>|mWmT+hR}<~@*877{6y z$ujbYgaUX3^6_Qzmw67aF>imoM6}5At(#$lCkm}W5F=W?(A_Gy!ocsvzi;HV=9-hd zeF*f~6xvbmG9|5>RG5(@n?++(2bzwa1h<-kAgwi!Z1 z{Yb*J=z)Jb!qlL1cm4JwZYWEt7=s^ zL96T4YPR;2*WI;4tLX=Cv2*xbILmTq}vVnWsW^`lsz7JvP-aGu$KCR35XM zL@d;2`7B~iGLHp;w?+~0QTJzmWJSMYVdj>fH{T2Zqz)GY_4p75i3DX1CZN9i>~^X8 z-f;%&=Z_S9yS3}O0G}Fz^)vTRHjqnTs3u^j?sRv%u*uJ9KBLAKMcwGtFEC z7T$Vh)_k*vSf<=mxvOS<-+})LA_URk1Qoey#1$K z@v&2&{XnFkCBZyA{V$iXh&%@0P`92OTL6>94TX7b-#O3zo9EB|>9c1~fdS}3*c9Rw zqmJ-?q^U;A(7w}kCZu5)xbQ~A_v5D&9E8yQ2_-0Dywn;|m-ogGK9Y!v(vL-;_(^Xq z1jXqCZ0fh#@DnyZ#zKeorSul@!Sy8{EukpObNfiwt)Jup{xx($P8ZQ~*WXPlPZU8eu2WL- zIPsJGL0Z#J-_E8}zhe-%xoP>^s~!WoE5|LTFQ%inF`%xPTDVz-aixK01-PxVEh7O< z>4C7AtOjBw^Byis-z1VS38&xVBvUcn8e(CMFYA>1iVOVbHZ((l?q)7-D`b_vDaV=1 z@oe{_rD-zR+)?bz438P`6Wkk?U?9{Z9;GTEiM~r zqOox#hNXU4>$hPUVc9NL52c=z7{?YR5z{fV4`W4;!{Z?yfvFhF5#dWf{9#fEu3+Y) z_{GFg%pNPhfhUom_lM}%R<`OL-0L|G&oiX0*y^eUnBR*r%^O>>#NtmMs&+(I31*ZF zEvxZtAHZ(@ICeQdJB;dnV|(k^w0t?E9iKEWF)Ev7*>tXRi`1N;10Y>`tRV5@l9Q5C z*W3&eCAZ03+e+_wsFG%5)?$&ZY1B7tJA*3Jr}iJ77$^=kF}hvEJbz7W z0PH}gAHKO{)s$yfVRbNw5TW{2Q1qAgIZc!e{0XGKp76gj9>i6!o8P+di?%=hft7K~ z;3mDb+rI(}ch))3><1v+=YGSOfF`q96i0K{vpU-vca7sbR3izu*j5Hv+=EzC;NNr=E|^SB%y>Ag7d%za&&rSdSPB{-;5 z_KfZRX0_>;g)P=_w^m*eD9*t=`!@l04_)$PJ*jN^ekb=WWgX}0XT0KR5JH68apNQp)3g5fO?GQh_ov|{2p9BUZ~W(QxK|X+v*^dhM0gz*I&XkeuuNW_<9$bs^DG3XIOCJ1cs57hY{9q?7msoF6 zZziL+X;a*s3~bMoxBVX1-yFx)4CPX0k3iYnSKi#^|Jm-mS5~U`Hbj%M;-EgC=$H$` zM*U`>@L-batHj`KQn?iA+laGRjBsdz)a|-P2W8j*4PBI)GGCes{iFM;OB|Qt4tRmIynT`D9@;vK`yfaxt zU;i`11%--+vVj(zx^)w9Mqh`42kyNG-hqd$hl%gcds`rXue}I|8SgtX1}~!5{o!6j z77RbDki(Me7=lu;Qh%hv`vX}JhKH|M$QS`ICQ6|r^YlO$5QBf_20}r&XCJD60ki~q z$1~)+uJVJ;i0jUxgR~$HFr8z*jy=BwmtkJEK!F=vjvT#ivmqN;S0*G)P+e10QKOoS z!xv7;&!Sf{l3LaFO7k__R)9oB`D)PJq?avA<&=%Bn&q=%1eWot1OgS(hFCd zFj6x1(vK2tRgtR#E#xkP2rMRFcexeAU9l^A5kP`mDSUk)fZaI)H_Sz`&$o7Dq#Lhawx5+ zWsw+F63KF#2Mv{An1E}m%Vt|*2U|>V%`V6)BQf<*1wZ<6i1xGanq=we6o+(hR=9GL z8!mEY_f5S|;YIV3H%y`3c#zg@Z&hMQtf=`kXUI| zG^*w+DjAExgjc+qY;KDu+#7p-Ie8}|uEl^$uMTr>o?5me-`?57-$lO`*tnXY{uo4~ z5fnLPl6av!m{2_}Q*BTi?r@118K;V!M}L2R=l5DqAUx!cM%yiamjc&6aupXG@A^|S z&^2qLcfHAzu>ZLFjtdeuRIc<;p1wA#yE*z4UzevC+F^gQ+4L}ZEu{#k+STuQe=FE+ z@!b2eMBwwi?Ft$ajVKUA;l&Z;aP#vbb3XigTGh0C#3(1HAV1&hMZxX+v@Lsb!XWj) zqQ9)B)91$BQfcnWcmnHlH?>-3JH77M>++CJ_><3y-OkUUYro;dt$7D4gxy@Td6{fF z^Xldp{vxe0iRPAc-uXj(IE~53DS36~r>|yug}JloF37q?arEbQC(I;$7Z#2kJY|s9 zPRk=rB`V``+1q!_VgltgRrug89xo%CTk``^;=vq?xD1)>bx5HpN$pC$Ejd3EZHP&N z37EvH)I;!B%7IF|f8Wrh*#nkuI>rmip9pk)8QZW24gvn*K2Iu>T%6r7Pp~6@fxbai zpu0^S$nNM?Kgdb(MqSl>UgJ1{q2G!gnr06%D_`GCy{eF&w|fvZRrJE%^TXh71qB(F zSxH6RXTx`5MN1n)`Rz;+7U={qqU(#EKv$Z5mDgd;*Y>N(`XPLT7q&U=Mv?L<37rp- zN97I^sav_**4p>n zMRv$n=9MA}a4Xl6yP^);OvnE?ohp@y%JMQwKjNx%LDFEp(A$4|S`FWDa=H1xPsm?N zXOCezvf<0P_$?YZ!@~;-W3KxW2K}YM5gkHj zi=u@J%dTn;miNOnX$&lKSq)sQ{w{y{O0Y-m(@;}NXJ6+rb|6vGiQza9GIhUYLhPNf z-4Y!vz1w6yOnq`%`Wv4q;MitTQig|XYgPBxF)YWOWN?_Htxm%W&J;kLp?k2{A3mGb z=^wh4z~f;QGCfVaWHni47zIsG^6N0hBT~N8UayOOJk3_Nd!Smrd-O~_^2bIjkEkNI z^!buH=M-Ujtioy2jF1^s2G>g?o}-w{HA2V2A9q?g5za7z(d6Yc*Yh{-%@WKFx6cu{TxKh1IVXVA58wtOTYTUjQ&yma;jn;!N?Cz`sQyo#X**+A*Z&2| z^K_v7)K*soPx_=SSiJvGfI)$2!y!=+8wq(NA_;*?LxBl%TqVLy8nK{SP(V@X?o_v} z=@&6r=^lxoo8k(gwKA;Kt+lsn)U~H~yEVC=S-ej^3qJQ{d9z}NK4pAd_e^)4(%bc%Sy zr3shiKs<0!CU~j}Bskw;v(zVB1hb*)`<2(qB@dYmafxSFDdbbIE|+By&&pBGyDTel zTTm5{&)Qj6AIEYpt#EnQ=SV;gg5_t-KD^px2}p*wvFH)aiU3!o82EE=-jZ13P=&x(2ZsCXG|h>R4x&Ss$=BuQMKM zQ_9ycEmF7wTd%?P!-j=;oViP(y17R3mi-~(9cGCC?WVThQ~KxhUyN4@fTPD7){w3y z1By|%tYda^OTTwyj5jQ*q1zfgqx)5*e`YeH=hT|>l?eh_v-3p;Gf=*?zSJ{~O;h&4 zJxi5o9SV3a@t+Q5;Ice10cpsEo?oAzqtjj7ec$95=kzlM<{r)7mR_%He~{oeJl zJ=Z%?hJcN+cRjb96hdbgMAh%{^X#xy%lV!{YXj5ApTyCabUh_kg+~;MdgG}oXmC4K~r%}VaZl=Pn9n7dym|Yd(em4cGmFs8lp|ZFV9N=MRZTXy#MUFtWg_)Ix z`MFtTK~?8-H~AdKOWXLjk$n#Lx+;3K_;TW64y?zHsd#~im9XGCBT9E4he})f9>H1Y zhb>WoTqTRSh~c`jeg#9d`|6Lmlf)%an-dXv5V8K6Z7yp-B#=pX4%065?T;ug zPP=x9u+iwHQFeDEJX=I`C_F4gA}h+ytRk8ED7=~BHH%n;{zqwkYvu9=?I>*w$n4L2 zdld%YrI@%Zw3CLE+HEwd5hG5hlm`X66++$-TYoJhrJvPQV?4eRgB3WvGHL}UJr5;4 z4JNLE7Doqn6D=`vgmxLnbMql@Er}W;AQ=CgPLU6d4qh8su&#TeRN11QTr4og-DZHR zSqd+Qgd(nUNn0|2MZ{cujlYF$B{Nd{vvxAler-j!?nON|n@#VRDJI-*aONM#Vurt{ z8CSS48s(@!y))79*b5)&^tTq@GOYHq~pu)^NW$LK3&*WsP&AP$UsM=s7~OyR)}u$a_9qbNq+Wg<=@bJ8Fp;1&~SY z7c%k=u9f&zzq|5&voisU?rc-HXKo!vh>U!tW7U8BJ^DbV6pUs)XzDkj!WtyEH<^lw zsN&YYSd03de3an+UG`W2SAcB`vur1{5W6=wN%@bBG69n8x)@EWi&mu^Vw`imbg8Zb zjHl3>6*Dajw=pcwSd#jF)l#_s&jvOo9R#((hwUT!GvVbsAC^tijgC0Rlsb4 z*e5v(EQ;R$>| zkYQ+}YTn>}#*2AK;7kM72WkNNq!mplwYTuIs&#%MGVkjC z`b%O;pz$rEGe@7y#uLx?)IMiuD(7n>)Ia)=z*$G$SNxE`kpcD>{V#nu-FtF4`m)NA z!j3b2N3qnYVRHQ!;*wFV7!I$9I@Zn_>bl^X?Z$4 zy~rE~fYLX^1|S25M7qsgTr|D_8A>>@dY{jpT!0x>Gr)_2tUbB-p*UmVl(?lq2uBe#Ey6esk)-pFn7Nc zt_({^KP`v~Y`Iiz^i1Kq8S#4iui)vzck^~8X55AjI3J<(dlXrkODurV6tG5{`ND20 zXz2#asV_@TK_CozYqPa`dv57N12toqW6;a|>Bjx`@;RdDjpy>aycxOVR9fi7CSNQZXp zaMVrCkSg4}wq3#~qI;RQ1>#_ZDp~~<|1pLXw{>x2?afq3vg}cd z_VC?CRb z6}437%)4l$!pS%O|%AWOT5ZZ4JLe1UEr;YdD}F6C1=_t6lfVj6J7C zLqpdT9p?$Ay3_F`dR?ij355wFw+y5qt8!jpLlKmIwG-w<+~`M)D>g@i|)u03B-w_$-PtkdDQ=4}!5%Ox<2r)PnJJ zZ2I7HpZbJNF$J9x@rOHNOyy6|gTdaSZ|L19Pf_iiT#-KmPwi%iY~T;NQJRa~Ll3*0 zLG#o?O_z~IGY!3$hIMR`&>?!U@`n@6aSL@-MG^uXLQX>8QT(1MsUT8HnIX(R^+Mlg zVR}{r(cg7grT4fJAusBwZ2AOg*M zx50sQ9u5PCGdO3rl@uG=I%)SvoRuJ{wRR~ zR}_D&ocISdQXqu$2Y(%ZFH#F6SK*n~bnlOv)fmos2eYuqn!n0yza*EH7)ll|)y?2o5gWlWWJ8R38}?sBkX}${tcgxnxrAw%Fq&gj zplAez47LtF$2z@u5DJ1u=7$ejoL}&8_r&i&^O#h)7w8p{*O;F}s37}Ui(1b1+j|WP z*h>#@`Pr&_O{7+Zs}oQ6<}Yc#BGjP4GtRdCKj4!PR=fd8Xsathxjs{e;%b9&Y@wK< z5VDmhM^U}8<@YYxLnqWIeO!FFEZ)l6ff#WW1tTG$msuEpmRKj}f(<{HNZ!qbVl?UH zq#%D(n_>r3Jb-cLRZ-KU<8m6&6S#DzMI`|Y=1sHG9G7zLDbtXn2H|qKG&b~leRF12 z=%q+dBMW}BErrj{5E*VL37#P_Fgd$IZM^bVyfU5ZXx?`^tkDan07xb{HH`|Wu~0a6%RT8h z%5{eZ&*;|?7e@P>L0HHGoEm0D@&LG0d1^Nur&*D^@=Xg>CU2J4<#7ItWJi}p(y-IB zj`(tGuqpVbVa^CuG~7Zd=$R}_h1uf1M!0vqMzxFth zt?Mkz4tWRbCVd6!>!^Ds&rT^K`a8@p^PnYjn`5G9UiEH(v#aq$_jDZ?ypCX(Yrz>c z%5RF{CJfp#EHizZmPA>5ZS36;XVEHmlBs7|e7X7E(z}*<@R=w8iHspx_QO<{mVe$_ zW&+yVKv`G+&0rS}k8*shRAxR1Ue_=`%R@q-mVXS403m~pY=`~)Wvr0L$vxlKyDOc&^NSRx;Sah-H$ZJqfG0YLI z+tk}EoGr;|)9IGg6@qN@@zJp@v}}{`5!aP#u#pFpx2FbF(3c3>PJ1`DXG_}Hc1r6` z+qPQtYwON;*jzuepksErb$e ztj>j{BngP3#3Z47Z$bAEh?X^CF&gbCx_fmle=hU76K#*BqRdDBJPtH=*o?~bMVa9T z|CbN!Iv?Cc7}Rw#v<+)??alPOM9uoF`Noy6lsyCA8Vr0L{jp@g^RCO>qA&-z1y0UlnLoV>wzM=WKtQeZ3)|n|e8biLs z3u>qaM32F0eZDp7p9ul@G?SRtUj@|i@92j}P~HwA8Cqlvuqe*kjtON!oLXx25C%>3Eu7uFY8KK<^` zFqL9<?!*T4;QEGC%#9#8! zzl)LXG|3)*bBpz(=eNCAy+&&01L=4yMvs~XaVuZ0mQl?pr3H3{!h2J3Q8chObsNgC zh?XXxuUHTSHguOjc&$yMnQeD3<1wf~r>sr_L$CaON zRY~kg$GvG&Pn}`9nkv7)hkbDUjpgazb-mR2=*khc$UcgIgigeRFeWA;TLa8?_Ly^ zo=2_mfZ|3EztQF-(dkzA&dw=>J|xBQe3dFY2+&|q5MinTjh778utreQZ5G+%i-7gfQpd{Q2{ z`O^qH{wm}gI%`lIwjM}v+JwA=6#5|M`ZU#1c+ZPmPO8fNqJ^(;cx7#U#NkBppuBs? z&TJTZ0bn;_cJ@wZn$9y4!h39&+#}uL*2dlP^d55G@{jn%pN;2*#B&*Ox(K=5l#+OR zEgxUU4fIEy_&hI%-CHod5KJ{N89u7*JTmvTun&bqTgKy|;dP}R|1PnU1U}~CTiFYO z8(U0};CfrOngGH%qAI7EAkw+Sk~rZGU-p@hisq77#F((!jJipSXTIwxhUJ=VrVFN8 zBiyYbhTWP2UAaIYGxn~K{kj_biP){>T?M7S>+cpVZ4l~ox~zyLwMpo;vhnCD(MiA- zqrldS-O{t*=aV{U&(HC8x_rbuYq$>#pdPpfY7>;fe=R%5}afV*~C+6Uu-$Qb5!v1Im&66@xY? z&hZPIzf~KkJrgJgeb54TaE72;3y6Ukm_Y*wa|>whyr>SOaTaW&8mN5}$l`Iq19-z2 z#7+}v%N~gL&KBVaBs(E21fX6X;zqqJ(%_Dn@H}3B$ODu*k$msd1*Md8OrqM*xcktP zFn~9aj(yX`m*LGID5U9C5Ac&0(DbfPpI_%+|9yg+Z+rY8Kkt6uwd)$<=K$CaRXhx` zh0QB>K*MzD@!QS}F(O<}x~r2Y{R4B+oq|EE#m!XwA!1! z=Jads1l|qUP()x?q0SGz?IEr;&2yQfANR?Z@M=H8n(|o$Oi>7Ae!={MM4uq$VURgi zwloo>T!er`F+xu^W#tNf#I#81sOW#!x^H4xedLL1!?){1!nFWaoI+X-KyN)yYW ziZBly+R^6ef!(p`t)|#jPciVajE&;#`|16S8wLLQ9v`fabh>jrbI)28!qZm&Fqyc-Y?b_?J>=_+haEpVI-_nBzmS)zrGDkD!LJmiv9siVH8hbRz zu35+5pKMwB&!z4xBQK^t`t4ch?2Rtglq-mn zzBkMjI=4esH<-0HPleVuu~+e}5_g!74ns>ZqGJwnG{!4;-^GE}Ss{N_Q6 z+j~IOzV{W}YM7D5{?N<}_e58M{NcuY2MZYOzW2MPReL|A@pJ8saL1Kl;WvUQVpHKZ z=QGlG7A|=HF_#opq^EJDtW?zV0)09&RlTuZZvt?=uD#MV?qMxdgy^thBoP-PA(91} zAqCkq-ZVh@H-Nc&lx9i9M5-2C?uJ9~!AJ~O6$|#0l)s|JogsgV)Dw$(wiqA`vbU6T!ZzNIcSU!CT zhFI6s`b`Cg+gulcaz?YXLPDlWfO!S$-iR7PGwZV>>{UhJ*U~j1^gTz&N3w807~F;O zojY2o(ZHn;N)YK=6Ooj-VEANWKk|~I7(mp1X%doY02WPYx=(1R;BXfi+_Q2YHyl8( z>mBiZv4a3!K?07N6dcu91;Pj+r5XzdCwDtFOB_PRxPv!0p7IUypT8N=Jzx^;e-4H1 zp8#Zz|Cd8S#M;5w<^O*w*gN8iBL#Rk_y?S^!^`6p-nA8hIqjfyFu*UYgmb{Ch{=!# zlN6y$;=cdYYq}}!k(EUf1SeKbyeF5c11s%K!z50uRuSqA1R4DXvRJQ&CRQ2q&)muK zf6DTz9ekdr@{&nvx(01^(`6d2aRn-bb5~uk#-HuGJ}*DqF|-s+OLuV(S{TMW zZB(R|nI1Evhx}-qX?-Zky7)aaqAl=Mi)ZnK0}bBZ(Ma=wF(FxYY-W|*oBu!cOe@w$;(kf`ODW(k0IsH$wCeSdT}_rs{PlC*IOu* z0C>oreJj?>eJ}|;xkF{h1nXyq?UeB&1O=0+A!@bd{VKfAfjCsEy}PM1DivKvI6K7O z8-ZD}9dT~?gn1_nh+e|IINr@lVuGt*lWGX&j+I?Oc0<4I)aXH%9uG z!Htnbdu@Ub2!!L3V#D-tcEIc{H-w^hS>Q5J9(roLEphiiE*zsqiO-|+5g`dXh2uBF8NRH4xm zIK_$F6-^fy1oDsM^AG(5Fpr<1;uR?>7tK2*3rME*52gUhsJkqp=?)DT)Jy~sj0kU3 zx(EAXv16aiWp5c3 zXSZdICIp8B_h5y)yF=mb4#C~sLU4C?hr-<@I0Y0A3GVI?JjmsA_wDiZd&lVS+&|C$ z{cKr#t-05n^M^h|S7dTqp$(l{%?;9W<>-;-;tc`LE#KFt0dm3T$y**66SyB0RQ7c4~g%t=odx} znX;5)f5p+!)xwSHMET~W3{Q<6_=1~;E6tf0)9=TDMBE#O{u?ab*H5#Lob52#tLJcl z^dX=oC^U$(0J6eRAe4FWI0!Juid4@Pr_Fv?&-_NCKwiLg-K`j?#N*^k|E&1?55hUE zfO$anyBZ%KRYJ;pAk;j zr>ckZeR7E3by?W|oe7dMa6Lsl9 z?ts?63sV)gwzgT$ryk5IJrZV=7~7T}X-V&uEJqnJ=}CVRj)PCp_+khXi@SPanksRv zm%;doQ|-e<1TD7qA#aa%UqTWQ#f*E{mT%GM@U@m$%%c2#)6C-g>KyAH%9MDem@i{O|^q{XwZzo7Q11(cUXQ>tX)$Hl%q?tWS?gRaz~ z<8JP+8K6Q2H_nhNgy3`5n`sLE!y{!rX4#MZeGNXn+lu{LH;tTwgN>WxKUd;Cz@fie zh?%$1hlDuWH0xJe7C=!J9%eO{Qlz75%8KrZ5NFcZA09WzriKi9_(w4H`~uDm0uAM# z>0aS(Aq@ah@|Y#leaMna&p71q>SUbj9a@Pb3l;r}STlY&j3~Zxt)-@<;;1T;L2AS^ znRRt3m8}IUc3$$TBL|#7cmMh8N^kC5=o|PjEKD)CH7@QBUR|k1C)Fh7I z$VcBOCI(g53g{ufa&w0(x+jxHy6R|vc3EM+JluG-Iq3MQqU!u6cmb=1W=e$hG$)fx z`z*?OIrpgBk2Vz9dc5Uxt5L)ZI6tuCyzM0uH*&pP`GhCvBSJ>xosXP}n%)l*0wZ1I zaFgoQ3VIj33@Myzf3ru18$B`4P(gn~h-tV-cKr$)Q5I{$^SHk*0Hh_ZGla;Fl~zw$ z)D}r6#a4`ihpC2l{#?rt>VwnLr0*g;GnjtzF6oEO7$_Q0N+mHcbVSC4X$Sb2k}Ggz zp$b2zP)d_@6{Zvmjar@?ClpLPj6TeCmc0Mum?CgRfynmSJAsQYdV1r_p z7ybD)d)f5|WKS2?lTtgas)V-uCGyZBSgccZ&nu$xv4igd_wVK3gP)aJR41D#Xa_#v zE6K&eZt%SY=kBK7XG>YOWd{Fl2`my!h1!N74(|-yGpxaX8h=Uc`azYv??d(XjOX79 znD4cZw7u(pS3ohU|7l`p?y+(fgN-OoN0Kj9+u$iF;zyEc3-$1!?~*%NUVHYObA=(| zEdov+SV$Slh4B`iMs+(%bqjGVFJVsz%lQv#ki#SoTi*Ade?Rp0?%-~x#{fdJwXS&) zSuClCl|{Abf4e~t;tF;`W3zbeS;$Yi>W5E$g?5hGFhr3yH;ml3&s?8n){hZH*@Yw9 zw?U1f8Z;2D_zyDYTztHL#^%IpGV_p}U5;)3RpFq!4!cp4K-Imi;c1uT)AE3lo%z#- z3$HNQj#sc68DY+e-l2UsOFl|;59@a&epeq|XR5N(iQ8{0e2#Oq7^+x@zby;dN91!` zI|?37S1;$hYCVku%=nn3Jiq*=+$*9=`P<2qj~d@wtG{Q(XCP;EX&;7--jFh;mm%cY zU1($F_13$!?x|OmwH)^MO4GPNW%QDqlQaJ?g`y$H3w_;F&Cyu6eis{y^+BND{0@a8 z939lXjX=Lu@Fi3C>Y0ImXio6V>$>DhbYHU5mV=2PEA54l+fAE#(Gu-m^wrj9(i`!` z8>GPiNIw&s#v!UF6l%k9WyFWfzm3h7lC0ydNmJvZVHAXM0YXJPB{oPxsWT~UqEKni z%D2(9>RsVWv;>2nBJ~hMt>mMi@9^;d22%f(ae0wY>s90XjHd@(oI>GESuJZyV;X0~ zA74&Je$~EhLtSz|-7*}9>K#=Vd9bUZ$Y0WOlIN>ZTz`RUF2p?k-Cg>Cca}$PvmtrX zD6vq~8)`0~Ng9T_$wI+(xVWKa6E`7^u%M3Q+t1=&OTGfK_=KjLNXwt-(;9)p?^S4` zL-R8l>0Z7s^4aG?I01&|Any87OmCdXWp&9GvZT+);i?NsZ8A%U=H%lXdhz`4)B&O* zonT77xRoui;s3k>UF0i-=H9pb;`^5W-}I9HBi8<_@>g=UvU|q>+|B+GeRKZHz_GNI z;mp|zt;rd!UX%%35nf1=58r^0j{x1jGiyJV=-#?yFa4~@ZwWvhL^Vhr9OUA7#ox(T zDuJr*d#K~HnB2>{&@=COesY8s4!{>d)$3*ZTgWoa0yl3fO zKzVRb>ldr>8niP(&y~VWWA2+)nH`hWkv6Q?Xf{^2u+(3iZQ&?6#uYbHri<%j>~Ax6 zQViVXv`AGKN9mAl}7vsbZPOZ*sGpEAN_UKbN&;8(-{HQMU_y+;Rjf^mROowCGb#8EP44 zcmB#(AC>;(=y$=2p9iewmw^Rm0JoaF6qc|w^nE;u*P`76r8Nj1YZ_Eegaa=boJyhW z#6f9FrcMp|u~tP7_%_qENCCNY-v8zX$F;2Hh2uo{6XIvWfzTsQk2pre&r%y^6e7g> zH@KF`hX~<+X!6rYCw=5>ehA{@Hc(3G1m}_G(>0=`@&r5h5x?p~OCcxXE{EL2LIm~7 z{E>Kq2m!rj0*bgQ`18ow`*X&gT*24mO#__eEv>X#VJAIDIeB8 zobl-a-c!Uf3qsuYYk_@(!ctbkW zI=`vQ05Z&q7wH7V6ABkYivbqOb;&F*sg)q77yg36P%36K=4%`TIjXdhm7+fe1uB-V5EskiXeLzyig}? zih$Y@PS3=|G#bnFqtxfO;e>;;iiOkbSFK~CYg664{2#+|$9%Q=Po9HGzji=s z+y>MA-PTA5>dp<@l6CNMstFO5>Jg@Qc4iUc!d?Dy0$IbnJD_Y2 zG`D~^e+;p&kjN2_YdmuLQtxu)WT2EotcJ52ZgAZHl|@TGnGA7Z=%y{Wf=S#>JGMhl zUxe(ecs51N18YH_Q0=#=yq_i2OK0Mff$Z&X<(J!=wg93|&`u1=pvMNxg8cm1etri9 z$i1ioYrzg=FX;wX!Kb_ya%``5pWlJAKs5U*sCHlE{b3;pbXT|>W-U|^rX&!3jHVV> z=#9Lv1IiV?C9fz`5{Nm*Q=2M$LZ~=U5{Ns7Q46->P|3EE7!ou4aiJi~x^;MoB6sksip5wM8AQ6Kn-Phh|O!0j7sIviI8t z^9Gxs?vp^o)5DmF3y6$9_KOCK!+(a4LQ5r~7uO1{`&xjur4@_?KSEjs)C#G?H~K6J zUw}XwJspiIVku%NZYdTHs1nx-Llp}rBS%eyKZ8F(Q-QY%{t~PZ{287Ajg! zzaIgf3XmOKhh;?2KMG$)k{ww`Xav`91z$#%9pFgWuMKZOmL25C*zW~@K&JP@k+feN z9*0aX(2=I!3_guaFQ5)%OD4DywML>1c1tJt1hq!8?V}M+e+)bq>1wniQont$E}Feq z8{yWMU_P{S(KdoDqF^7iJCfBfN1^^t@F;*&@x`z@;w{qPFf<|&Ps}Zr;1RT3VNdie zn&2|DToF&~Eh_jaQvSG0sD4E>1KC{hu|r+9^nV{ExO=ZwAY|Z!(a#09`T1S&B6@Ibn`!SioWDe ziV^~2K#j@=`RAd$IBp*E0!sJ5oUjg@<8=_>yr0s+JFl>V`1losq=X_YfO<8}ME%&0mp~^<#6jL)j@v;8 z1-Wq@M7L1$NXks2Yd^eMjwwKCg$AMCJjW9ABZUS5Pu%l#%C(~1__z4;r1SEi0Z^8* zq*80Xz4%%vZ=^TFu^Y$)v;)EbC4p9yYbA3;b0pRRIxucw=LwV@M7!~BvFAsM1V7$J zfD}c$v2Ho%sfq+)Zp%TfMe6}i?DJ(sf}d{R8}&r}IFDVF@}i#j=MRc{KHP?Ym_+?p zj%Ae$BcE93(~5eaZWZP=3wsc67eKWlehkMaN`}PqT+<7RBGMOyBQX;5T*^oL`8^aM z57`+P9dV}dSDffM}W%1SzGjWkbkkGpLz zm+=uF0DT^pX5_#DrE2w#=vjfIuBje3UK|yMm4{ZY0KRlqKqJUPyPP38jw@%USpABW zFAiMQhdkFxfgi;X<=!-L9zHTQ;$v6LZ9HGljN7e-C?K%(wV*nV67Yv_M?PVGTS*lX zzwVN>rDSVGjYY8}8f{7m&cu`l@|EItOI~pk+9`{T5PIw6y{@wKpPXY`+n>+&Y=D9? zf-=WJkCkj^+DQ|qqQf-?4yxyT$6*2|o~1zQNhH4ToKFOz^$MyPJ74(nbob*b2>j}X z-Oo$x)1HGMT+5c}Skhr)XQh4MAP(-uwnPaRy24Q>w_7%@5VAAE8PooGkq$DmXNC#8 zw30$XG_t!1cKge#2wT6};RfQRiMq!ud)GBfNeEwEUIq`gbb8DvwFx9B2f@K<5naB7 z&w6J#xO<>n3Pd)0DS(CK?|UVr##hGEPVThX@>0uDr;qZ->34_)h3b`3nE&5~qNAk* z`MDKQiIQ)ChVr5sFAO^ia-y8vXbKE^ca))(6+pQw^~~v5O->mV24Sfw=Yh|)-ZFMJ zW~|r2H&uRf_lAkDK*8U3zJQ5B{KTAcM^laDFG?O$BO{5E?bd~v$(7g@;_cRmDW$U} zHJMaH4`M_`pBTsWIK(E9k2_s%1+3L;bShH!j(sM?7&J%rDoi3MQmmSFnx(eB4vt1w zf47~ah~R9bs+V#pt)Ef37+ttO`s;H0>8VezTk~REoo?Pq1(Yxl5Xk&|NSFlk{4_jXO&))+XbaOuN&fFN zkxYnIei3RMCs!xFde(Y?V=>Q|O$DPz7`@T^Lz!weOpz4HUUm8MVZuTpVu(583Suy++|aucA`M zGS`qiug%~2ea1KS5V@qaElW>FCJSQ>qWu0nKGyF0Vs$`G;U}6AlAK5!)Tnm~bt2 z!Mc6_8Isw)ESWwsx&&%YFANAqwG$*|{f%lml3uE-Yl&yB;FiZ%9f(j&+OaY=_GP8M3Czn z?Crh+AO6R_f zn{Eu*wS=z9|E8!Gp5&yOUq6>Aep^-QDqq5ip|m!j!igcW?$KqJ0qrR>Cc@tO9@WF{ znpg+uivMAY`~Ywn5lcsLPL$+|07=V3>R9A~{PvLa&IE z)LEMW$BC}5*C%A1ijIN+1<#jm8<>WS=UznHu^J3()NoI4v=liUQfC+|TqwW`vtvutL5LIUPdywFxG&`R->!fhfxI?PRkvxh;C+sP#u#krU3{^jCYVw(j zObXN@DG+@+*vMvBWX;HVvnTK(%&o?y*ku=Obfnj-Oqw+SJI9mJKuPA5ghLIRNvZkT zi6qY)hEX-}+5l~&OER--8@fE+5~jRv0y0`e>zpDV`Vl_`q;>{13iGEcJE43Vx?TFH zAAiE6Bj7mIO8czbw2^LxBkO!Or()ZOgh<}CR6l_+P|Mi_Oe+kxQVf`wVU9BWh7Vdx z0q4&EqjF{@D0zOei&7w+N1J-3$hDhUV|{5So30OWEW-lHvTrFsxEilU)rzytmhGh^ z^-D(gN5B|JEH9L2 zo)ae(bF`n0*qst7LK+8cbI@VvWKlPIiWPF)ohr6}ppK5}=FlcI3(JOYQ9;{+T50PHaJUKD`Y`b&X@s}G+L`dpOWwwg>PPQSI;fEVnTiHkVTd-r?Rwi z`Qin)%0XxRXVaG#lfQ6zY$JpX;{k?TBSi05agXb(KdkJ|$i$zE0kfZJeggwhnXz`Ck`(l=oxK zw2ZZ_aBvbK^aJsOC28#O^9$snY+c++&uG8AS~VyjtCFb|ph69OcmkNpd^(g3^13g( z5Pi-ayMS`G`mWe`arAsHZ|D!{3=?*CBVDj1o4}Hh`g5-9nHTR9!ph`mxZHJ@j$d*N zYMmAZM*)=#=)J+Rz@9EOLKDxL72Sy~9&*2o1~NsAUN^6hzrg%Uv_Ay)dGLbNbv6*9 z(hwzL_-a8+fd$E)tLu4RBE|Hp<1^33=+dz+7tgN3py(S1w%G%Ku3sP7t(&e7S;j0> z<990wT@dyX%kNC}j9g<}IU=>22S%3sI!h&*=Xg=*)GshoHdIk&B%xT9)HVfA&u}<}5E%`_Ksm6RH*ZRJkAV%PlbWUP53y(LdqfcoA)@>YlB?gX6 zT(d$Qj-cw0bVfgd4+XdCK@!%*E!nzR#{`aVsA}Le7gt5AN%1CKQ%kQ&^JbNyW6B?R zWBs*J@#cG>XRYHoM|VRs@eQVzd+tXGY-VxOK4k!od1S5<-SxN7r8jMUj{-c7sYQX} zOwY1V(NLQe!lm_E8QtZFwvHny;=v-Dx!s#CcMQ8$LK!X7Y+p$?A6MUgiK1P>vHhkH#^;*-$g z8&zxBElZM2+T_}?U(g+^Ra#?wWC70Oqgb+^0P7R|;_uoi8c`T%D}FVMG+oA0&rucs z%5cv&4z*TIv$&(otzW1Pg@O3cGg)lzifBd&&ve_iJ%*S>!k%FSxku$YXls-?!icq){FV;y`lRQC9>yOdQcn~O!LP4lZk#3QH%r(OI}`?Ss>9ZMOh zVr+6s<2M485FfFJTl1n}HZf$R+xQ{)tNKzkNtpTg#8kIN6%&}H4jf}y+ecP>@%$k+#@;`_TFt1o9GK9K!0OozzU!GvG@ ztpuOoJ;%}ytaf6i!oOcuUG?XMCtPMzhaQMibdgZ@DGsrFDno+P21Os*wP1c?PFyxv zhG-6YKQtfy&>XtDB&h#vfMGFkvMu_Mvxwjj3Af2`h54+^k8}}k*k?F&a#`bvv5w== z=d*41(D}gjEY^iY92vK1a)sv$=m}MnH@?n*gie_$KB(|srko-fj*DDI^MCCz@@Vf* zf3n*_Bu(LTvM=M7a7$;~(8rAWS+1}{E}~5Hn$MYz9vQN2)jX5jFyvh?YsWg7OvXFt zwl8W(-x0Ahgk{}GvzMuQ_j%*1HbC)i|1UuJe7C)rMmvq2;x|S4AR|r3c#p4(Wu8mn z^7fG5fpk&A(GdhukWzw6bdyDS5xzSLAK&d_8}?7rH{^hNSZI1&$!}dBwXu^?sqHM= zHdg0f3&z6JFlxcNJGG$VNZO6B3((fSE^;KyGh8F&P)VQRb(lkX)jmxJ7QxTs#~<8g zNSN}X)y^RU*djc;&Cz%=rCKN&Bj(XY>vwShF5#|?ri=+*Kxc*w#o}Bk4_RzfZK>ig zil}gQ)FZ1=V}NYx~*O2jD%>saDkc(#IR6NLpTPm)vtg#{W4+fV2hjpFt62>EvwVYuRa)2@n?TKJ@;23>-CYS>_#?YP$ zb_3GVx95UC18EtS#CIhC>Zz;1U30*~d){Kom4Gj6PvK0EfRMVXu=@po!O)%r)(28* zJ98!Ygv+(;8UWsh`dvZ5Jw}H0=qDf%xpOjwPsAyiip}VE018@$`RD+Uh?I3LQ8I#G z!Zeg34#O)DEGL^wevO%+oysr2iwBU@y{1pdL(Q-obphs5saT960l&-a;>sG3U$X&R z=)EGqQxTBnT^!(dY13Q^CX7d{gvZn_(cRy`V+OAjutPX~-7W{MOCkf!UXz*0xIA zFIbkz`(gbH4KO3o%#MlelSwl3_2V3V6^I^}7|)(&C1@+Br);5tEVpoSwB@ENu zcI6@VcQ87V>;1N^O!K_g8s@E!fz@OV7Vcq8tGw3=<{pnwHDnj&?r}`Jyw?WiKE5Kq z6Yg0$H*nkuA3v}utp4(}WnxoU6D3-iicV^!j1z!F&$ZT#5Sa}l=rxWISq#(Y4Voyj z?vU3EnJBXDu-7b@OtJ0&YbH#lSa#GHkLz*Lomg9cnJ}^LxZ3B87#I&D=tE3?ejBFI zUo~N3+bL$;s@F_+(n-5ntb}ma+uSeOK)9QAFY141I60?XFA_kwyJdY&?;+fMCzp%5 z5bmLqo5d9f_vp%Iy+^uJX6uZJztM2SI%QnN! zi?7dwm}MvV0vPuag-7K_<#mc-o_%L`yJ!KC+y1>MYx`&O0Qu)P&jz@krVm&Hs{9We z18>ay3qfyY51$9lh@MloJdi!KK-@@biCb1gyX;CI2j&F8Uipa3`~yMR@D(HjYy#kn z{4sOSR5%_iwKd$_Gm%Lcb&t>k&-f&fg`}-^qFr01TVu~$I37Z^F9UxBz>oQ37M=lc zJfvzbxCVzJlkn;v2cr1FGzIwJOJfvg1rRJ-*I-aKW<>!q(=CZb$T4$hnpgasC`Y!l z&r3M|Oq(JhOWDcKU$lpAKk*+2@EvVpA@ir2MbZ2nCym$a2^P5~gI|>?`wMA3gWJY- zZwRt&+h<0Tva-KBH?k?^9wMhv@q{>6ssdVhu$(*Dw9g%__pB!6ygKfGN-MM+R>zh( z_)R*h@&?Ez!Bk*8{>@XNx^k(+ANW&9t3sw$?-j>!;RGd~>J`W39O0Fg>5<`;mgN!R zrD?6EzOQe$i~lD#KIH8mkEADM!Qj<@bvC~DZ!`QakECYyZgx!K?;rB_muhFP|9UG` z`Oh|{QhNOkMt3U_7$(drR}XQG@uJ~Dc3f#}-|6^EZhZ+}QzkPe%4d3vEOhzjkFV4_ z88gMuL^pfcJR9x)7T;f=?mh|s=m`<8$~x2n8FhaoAi(Cl((3M@%++G9FNw|#)W5x! znjMCELD7TQxD-YLV?zSwJoUV zxYm?*{I}Z1Z7j7%d=C7AMCo>&Oeo+DWQ?a{gnji8e!zRrWSLB+%?!CHG5g;4?V_w4 z49CKRC{l-G{%F-Z!jB(8GL}d#8%45zWJNMdi*P69>P9JV?gy^mM|UWpT~Vqbq zX$w8~18it$R&uW_ug?YOIXni+DE$Y_jeX#lGhY5TPOqSHRX^LnA%o?}5Ap`}K{yL;cX7 zL%0}?in-(+evkaJUt-hmY?hx( z9pU`OTzta&dnUEsonY-pLTRgf3w!Ih2~*jRe5k_kep71DA*YcTUrRHgI_`1kIjc@wgyb>Nm>YW&lG(WX zY?5AAAdI;B;*p#OqS~K%K~#=%LrHR1$&qFH=^>w5_j5y6VCHeo>N9MIL!@*@g z(8LM3Y#;Co4q#60Z}L0`YV%LU8CG}(WV}V*f6s}*xgyAYNxe5Po=wZ~3~7GI!Kl4{ z;1@F38M#pJItMI&lDmT?c%aOC`ZV9*ywO*MfwukBz*Z_8VU2M*ggL z$cnsIf7Txo%6=$AVvze2fbphs<$$AeMT}Ga#}I2oJzEI|`s?QePuHv;zi=ZCXP)YW zu;)ym9$5tNufsG?X0*WJRn~fx`LA zR<8iA@`+Gjpev?+BsJB~?WVaYQ=>;3(krR4XdI0#K)I{#bd@Rr9i(qu58q|HB(?CZ zpy8#2`lM}6N(6|I(NIg|i-oJpg{w<`jAmeg%w~#P1pqS*jj+%LQ=CvKRWp(#SamS{ zH)_!_&`Uai8TmYo++4p5S0RMah~wAE6mJN;1EqEnEv+h~tI8yZC>$eUxq3vNKUF>Y zBljmp3)9?jW7_IWfmDaRbjPuJ1@;hQXsM&}IA*jQr_gQhd19_YOz|?oX-l+gQW_~^ zFXd7(i!Ze#N>M7@?6#i|yPaehIH`meN8DtU+!vX>t9f?pN@Y645=RTQrL>%wSz@fo z&l_*#5rp8RbWU{?s&_qEs2K{69@B5y+0x}Cb;T*D$TOBt;*RZxxxYpX+tIA!wnuBr z%4Z_`Q^{sz9m!Gd*a}?b_s%C*gVwPqub0gQh}d}}ipk9yhb-lx1NSv(yBbw3@du2$ zSBPtnpl`J3Q$V~y$-`iC8GTC2KazNdnBErr+Q|(jB4pO>G~@JiP%f+~5y(BtEx9>0 z1*?`U+p;l0@(E*; zEO&WsAhtI5FPNEgAj(2H=FFa*$l3s=mGPheVTa_!QH;YMTxCUav@b{y zna_VC$JkX$r-R45q0tIa3&^WklA4BPX7M$OLz9|9+btjP&*$nA%EuL@{jMdZgE3kW zAXCLsYH?JBXmJ}DvNy-dcxXgL;{y~MWSaQAo0{S+lzM=XWG_lH-~ht|=HBY4O0&eh z!|qDrSfPaA6=7C88Y7 zz0#AySn~7IPICkliU8^YKt=(gjd2V0 z!X*#q4&&);ovISLB5?}i?W>k`7d8_DOFHHtQOo#Eb(tQP3pQ{ zpDm2yevJ?c7U$qmn=j6=`sLB_Qzbw7ci0kKMy;5HU8OCT*viCjuc9AiS#{&#nG~rj zA?ByKKN1~b*hpR4N06l#=OkgN0(thShWZ> z6G{#F#X^&ph^NY(8P%3d5&yjS) zN4?i#^&MLD^MpprCCWu%x&`$)xb2Sp;YgBC$oGrp;8j3N6e~%i``6=W2COBf?qh}9 zW9g(43A~_~%%Y_onCe~oA={5(q+Hnh;tXQ`lWj34AVum7fSv?2<7ob1hiU`foT)sX zL!2YLa>kNWg?>C~@b4TW8Q#W_{~(A}B& z%e7>Bb*PmtCS)~X`oYUy+_Edd2Ma%E6=%Br^A9~cIc==|$?nh9WKGLJx{zU+iw_N5 z+stYX3m>xAD+a)K`<3h8+ny3!VCVy{5?++t{Hyr5DNiWwNqkVLMa7|$A*&Sb5DN@7O4ScX>9>A5H`B%GQZP#VsV zPJI$o*HAph*D+9VmM&Tz6wO}o-fL!v_bI8|AHqIY7)chBf`Kz`*gOYRHXPni=1RX0 zxgiz06q#hy%9|Q~_9JMJ7NZzlfpDwysuAgJQK}gGgSr(b_!4zVrP6OWGTJw&`>0Xv zA$u<%l6X2qx}zBsCOT6U9|rrT&Gxv!oeu$?CB?BzQ z>a{}3jXA~!u|Sw-ml4f}s3+45HG{BDSl)x) zJ2W#v7UIxM;Rao#oLhcqSmFSM7hqsb|HSOlc)oGEC_u!iyg^KIRe^2pY^XnG0y7Np zC?SM_y)l84({_jxG0+dQbL9$++p^~qadTl~5{M^!3|{|BI2skZI$@C5jXE0tO@~g; zxvX(7+7~B=>mj#v@*1j9u3~7@j1p}@O6iE3kchY~9a-ZambUC2-9ezO2Qn7HISUon zGfNf^)S(>AH@*b2^F(8Q%1>7GyAbGJBLp?6O}Dmn^fnc9XeW~ZTO9FOZQG@#B8oM| zL?RODzwvZLax9?f#9d+gSrTg&#lE+%`~K&auLFZ`)K~t=4?^GZU%9q1u;08ke=dT^ z(cZiynGK7%0Z|@VG&)W=D zm<}f0o@ovHgwTUN(l~IIT?kyV;jZIVypfC;033g?7Hp6FJT$XAvJvdwQz50w)Y_>J zl+gyades7#0+w#NPNWV9H8q~9vf{`C8b{S=Gdf?roL*eb!+H=s^bdAf9Qx?s_W`U?;XOBa)>g>Grqfa&Nb)ZPR8(s0eP(b7q=iv4nyY*#Dz zlyNhTeEeF6j{EDn7?=nPXKXOJ%~4C5=HbK}VpQ?B2qn#wTd$Xx>(`c#wBjA)n)ZT- z`}A-7x5YcvfE@7Zof2=ngnIH6`^}D+a~NR6=F82#eW?YY2ZhNfu^86naZF`0K#T{c zf)#~l%vaR;V<|O~at(cd$k>opv0h@L=y+1vrgKN-Phno{OCfkXrLi@kvFSZL<>d$_ zoiG$_98V>D@7cjM(71lh6;F>d}r^Stjn#vzN6~OVmUZNlAZeXvkP?{4|$b zoy^b2EW7k2?s{f-Aw>*+BZg__UH;6eyTvF{?viQFyCZu|j4dvEjjsBdvie#_1L1X~ zx4}9J>&F3_?=j2#<*oQ4rx!!-p1wbizys9IqYQ@AdGFyMXuE0^h`JHYzlWV&w3->r ziBj@V(WNI9UlN=2c3dE!Q8=U$81?he20ySmXLlKH6F1f36jMb;r`{lIH%C0)mvAHA zHDrym4eWE@Eh~q7Ycj3!?e8=`Q_GGJSr^d-Dw~lzVus~zR3w`x;aSsCiJ+!Z zf_&u+T@%qMAA(;-P1Gz-b#TsdZI8RzEXK%`QobE+uSYQ&`JwCK1HD&~!d$d+<{~q3 zhJs_FC}<-%{ut1Up}~U2Tz`JTBa9B}!>2gA@`TUYd0 z_sUMHwJ%+}6PGiIiE=7;NzKy*A?pos_ywPQEeduKbGhRfp|8DTxkoy3n%{yS`&uZs zI#>-oWHLu>p`}Wk;RLyA_lCt)jq!=(=3~4ojr{GX7?o#LUoyC1ggT6nCkdZQS?nlO z4^vf{`1%j}Jzl&M9pgJ8a_8N% z422y`ViWuKAC_X}6b$&tBDOjV;ogb1NvevIquJTadgW}d9|(U+Fr^!{T@54QlEP$s z940V-#+rN(n)kT>I#+7705QE^^Vo>9$n)cTJex8kf&%v?P=`-G(nC8@Mt_7L zSuh5Q(~CP|JA`jde7H73kpYBl{);*RqlPxB-8vm}MqP6|v>D#Tu!(@aI?sMjil3Ffy8M|1c zB3m>i62Y-LM^U8&L!+&3rt(boMc>z*1%F97ARO7lZ`>2wQFjHf-WjPaVYJyz*}&) z6Iv)}>M{gAUaYMOqSbGvT4Tr}6HS;e9?V;>Waf^p7*91(vyubM>_WGC+=I1#>m&;_ zF?0$OEhC^Sq^$**Mm~H-%PzIPN*t~8=et4L`)p9(2pG0lcC)`_-LzK~UvXU|X&Rlk z{~Ds>HrEi9IC$Bx)I$4QMR^Wr5&shnE;1#S7q!B;~~PMb4S`)fV~GXbM3; z?4sn~d83IVOxtm$+a-2N(Tvv=T&nF+`-uqaBj6g5Nym6KsnQw6xPC#g_Ip7i!LYF; zn=zslfYU8=XiZU^(qXKuw^|b|>CO6zc0Fh?2>yZ94>0(ku7i!9q#$V#cE4MonH8ML zeN#C>$yI?o*O{<-;C#+`(&b&Y5n%d#iu;0l@Pc-;j}5noDP(*>WH6*>^sY}<2Cpm! zK}Wy1`(q~AQMr8GO<(8bYAQk!`XCHFUkhE`@wr?Cy1!X=_*)KL|i_C_u z!6EY48J*s|GXD}B@@FrEOm-1vrfrI2R{HfEBq6az?o1{>xZJ!BlIK}3RZivX4{0c& z7@kA&2KkmK6Uqtv;s=H09gX0r1~3R?k%B|U!b|A#kCMXL+fEQ21~CP^kw*~81WAK_cN%- znXAV0wS7HHqU^+-ui~=@4*!#26I|{nw(*V~1KzP?#{bLh=JLOR$DQxsu{aDjs`-cfw_e0Ta~qnxb_`xV?nQM83b61wMfn#;cLLH5P!{z0vS z&<96b9D3)|KcMc$OJvPq*PqPT>b6-xOdkmRz40= zJ69i7+P`q47o&p!&`^N(&ToMlJSs2)&+a<=RLJKFnPXkVQHAl)a7L-bPAu3nQrFb7 ziS!Jf^s{7)bF?%MoTF|@GSxg64YYB)bR}K{%gyC09!^-Y$We{T22sX9la98)(illb zep~AqQ_HDBgZ*~y84PQvb7M3H96SDBg=RYlL2o}NW|om_oqF(y#>0QLu+uF}ZKpGf zLn9Nutp<4Gd@+CI^Pbaxd-n6jLHYIKk#soCq@90ZHiK?Sb#r~g8(mr-V^1L8e9J3s zNOppu9ep$R4H4T{(#}7!9ifWk0r3R$55_z~^L_Uo4Ws<@wC4`yBy`$OC7sW|rEBsP zx`@Bk3v~4AR@HsvT>RLQ-uwBw(_iKrUaQ=s9ofYu<-2VOBhmJWNJARE*{;sD8AJhwHL;MzNw|_)R>M31MDL;qTcdyz8LyWskoxdzf=;Hpcc3KK4>E`r+edBpXxn20m16{bs~~@?)1I16!zM zuym0I1RJ_%w|8KH9(H|a=XlBCsUmeUf(AoWlK8X%Ehy8Km@J}y`7z~ea7uIIvT?eD zz>gpMN#@r(w{MtGfn1f&aJUqN@5G;(&lkyjrPebqLck~c0wu4kNO^Ii6Ou<>iU(0D z1yM=?Cp9hQN17y^Jcol!%}~Po;$%UpHHzW!tMs8lEGjXqAXrv~3$txs@Bn`eGlGaq zsw%&<(XJYax&uQ}k<&;qI9p6=^1zc3w&=uVg)gQ48f1rMG&9YgJfOVJGXbDiPC6O0fUf%GXZ7b{=9-ZxmONRu;IGn6~{Lm*ZeU3g7F0Bc&BR()FmWpR?+ZvNG&S#35W>yg3prWPL zBQIi3GjLHWH>V zGEim2go4*g4RVsw@vyv&SMeiJwn9$HmP!6EHFo|{V=&yJ>A{wrA2rtG_jRx&RBD$l zFjMAc-txDiSd>*QPwDi-*-ci4Wl11mmNAY}$Q%pML+WT($u~DY(@8eBI$X-i2DANX zb%U&tJL8p$AiWp<-M5AaN76HjccNv$q;O`eZdD~a^E*yZAQ~04l6*-R!FJgm34D~L z`e11>tJnb6iX$`uy$Z68d~S%{bB|KH#-Iv4ud--}EvASpJi^(BQ3DF}n(>)N;z%Y; z1~G{OAvny^DD$8yg2J#eRBJ7kt3hbcl|e>-AU;`RFRo<7dVT=DNFw0MU{LzTQ&L%> zI^x_AY}s?5K{&axP#Q^BL6&A&-Y-6-tU@aYkSfjb2oWDb32Vcg7#RdP z%anUu)7wd!NbQ3#lf0B}?u*Qpw^)c$D*ju^;m+ta1+42!lJ<&`i$FwE0pfSU_?=UB zL7f{Tq=@mJQ%7pboPwt*Sdl8Dh6T?Mi?orLI9q_QH+^FvMPS zAybtI<%_P0#=Vb~T+3BtGO3s)u&oV zXs3%tESDKGRkvYsE#U6M7cw@*Ds%D4K-BRLqPM24IMTX@l8nW-_(1u9*ZBvgykcjg zhb_NygV2JWZKIjXs6kEZc=s-(&+0(N=$*O-kJN0{&7B?X_|MdU9$D&4P~y4%u`|ah zSoYMUU{3Y$ir+^O%lDl0+IvjJ6Da-RIM>1Dm}(Y`I^yJ!}+k+B$t zE(PWN%^>Ly>!?P0LH|s^V1Zl>v+r_L$ zeI39%hjPwPxqkBg4mcdpbdlW-RUGJc5MTCz9eT-;yM~nS^2?FoB+TeSBYmMFK!!^u ze&N`2O-r|-L9(&RV^bE3fw3-3iEgabLuOGxJS$z<_M`3Rza76OqU6*FPYWnZpE>fw zuou*Rf?yX`W$zWNqTIWvAp*zRhl~A?u1J7;G%=nu z=Jt-Rvg2n0dfqt`MW9$I>CL4$w`<1@+h7+$rFx!C5G5;1 zGZM2LUY0;ERc-EuoL3|yfGJRQ(U_vJ^Uz4bi*HBQcY&g`hnGDC%9tueJzv=%gAqw) zg1YgJ8hv6toU*AwAtQ)pqT`=%3`5eMU~QzPWBYG7mg#1jxSBbv`+;N1f57qJ7&a!_ zGKIr_eWKzm+H?J&@=F-5Zsv(SuHTk=*bNEKI+N5ykJny3-d>;q7eA;gv(u)~IX`BK z67S+%jNBwnBz7IgTvm?stgttp?ijHItm$n^Np*lwfo54Vz7!;UVhwr~h(clYAU8?$ znHG&eackHvv4qffaESA3SC z!czdRc5=5LYWmCUnJ)E_R=MdOs^$_OM8!qYyUc-L-Ig%@mNdP!&~Ha*Q}VV0>tj}C zs?GoE#?}9Deim@4Pd{!vfUZqFdRLxw zXuJgHI1hZ3sY9-eJA{5r;5f@0t@bQ`e>G@)Y~Y^!cf5)!3VtV|>&%(pZ@ca$y(;PJ zc5^Pi*~{D%k=cu6RkuV{cdAO@H)DPEhB@e72S}bLP>Qz?LaU1|w7tiwUn;J5z@2wT z1iPEQv!S?yYA56Y?h$zpyA(%iFe~_?eeZwV`1&7i-2YEEuDlGY$vE2Z+B-}8ryErT@*1bCR_F z;l?4e%@W#Nq&)z~isa0omSyrmXTXH=1Shc}?Fboq${9=sTN~ItmV2;6^Di!2ba!l({6r0@pYY+kU4u zFU_Q!#0Wlyq(;Mxpzj?T0u1gM=fp(A*+dkO!@U@cDx)Nl57Ixs>_H(5z93%5xq58J z!nIn{S&1#pGYy`8pphKP1?5YM7&{2AclljV5Mtf<>p*uQ!OokdW5S-4OVWB!aJ`QR zYf@doAZ%}H0|<+)!SoQ-7VFl!`j8=wx`;*Y9CQ7O091nZ$>0!_bLD)O8sD2xo6q` zv|4#X(WWb|<421r+^$akEC&FkIf$g$r@WA#YASjW&wGb z5NhNjwLrL&J}`lt{hYdBD!g0_ zU?(pp{CS^`9ZC5Wj~j=C`d}#{HJs!di{Bk`r211PWACK{_Xqfhk5Gvw2V+93XT&ns zl9nZfJcZe>=BI5{LTnV^h9sAV1#Ft0R1C#@0EclcB^zr@*SMbqO+FnW8e?FQ*fG)A z5m=au2=dqbiFIQ}92^cdlb0pe>GYqlzT*0Lp(H3uSzmJ@sw5^=(#L^L_j(xdZ%xW@ zfDzF7#S}NtjzE$`-5bmZPbB8oWhnea|E6Y)1I8>AK~60c0I*_`<9wD=A;09j;fP-h z!cZsO(@v*zOOiqcA+U#gi>A$DP8= zooVa-juMv|IZWK`k0#Phyl>J?c%TCLlkW{_w6g}u#<4d5);Nwv4`0v z+)1#O(=%`fj#}6Q8Q)~EO!! zHcC>q?M&?g1*KDaW}W7`vgjFf!Ij)k%MA0N72BvpHOgIOFevkJ5sR1!tJ5Woajs39h}D- z<%N7p)^40(3l$S7Nfkv+G6^(_;VU4d7n0O0S1uf>kJ%QRuVB)pWPjq0^);_Ig>TOX_{UN-L7dn;sDZ_LFVif>wjVP7QNHGg?J^rG4>U}KiYMYfd7VVZZ zh2;azlwgrIoKxGh97EpenLOP-aS`agyftEzP z7Y%?|9G_2X!K}ahc)(@qpc`5+w8$knuy#?s`D&ciT+a1%v6QqHo-~cxf z>a*$O=YTW^d2c+{pvAl`#C6|u23<)@878f0Et0c^A))&t z>ZYP7VOf(vusplM-RXdCcgB-=(!Mx~U@=3qYDGj^OPiCt!r$(z-U#m%S#8LStWO_< z^`sf`i9R8D%nvG&wxu^w!;G=5llV5FHrzq7IX}_Xx>M6Ft z=+hYWvGYy$U;l_^6y8m8e@X|GKcxfi|EYA~Ze(KbY++|hCuD7BYa(i3Vf|CR{Lhd7 zGUA-XNm(obcoDldmLWhGkg!__3D-5zXyIaVsD7*<5~3(jQqyhRwh^3Z=OPc{H(1^f z6h+iGe{bdFiv|G*Yl4P~%HNfoE?V1u-+#Y=`-Zz1BiHH;7DH*k?QpD-QVlUE5FSmC zsfv1CVj-Lb)y*+*$OOrJ5Q-beAm+Z7K?@#LEK-;umvjEO-3he^%>CY!A}skEq?spg zo>4%o+$lM^$c#O9rVRt6s@genC=$4O=Rt^?m=Fn>*F}1-<3Q1!;LL**+U+Bq+RN>c zQP0wbf=;t32a}`JnA$30}Z^9Li*H zoGU>j*P7C^{LWnGKv_=5O!nF3`u!%F3f!?ITqBYD%oTdBU z=SR>wwy18P0RY@E{LcZtCjZ%Dy8pG=|JxBa<=^wE&33LlAPw*Xh=)LoB^V(S!T|>f z38I8afk^>j!VSbp$NP-I%t);@)wU>GRlD{Bp;pu*Q$z&Gp)57+t*UBtl3O>ft*o@F zYT?esY9_MGNA{rUd9;egZoIBk8_nUvgi>C-IH-}NXu-hpgv7Kgz*!iEJ*_iXQ26jq@!xf#L5UIy9SR@nBZ9j<=3%(*}82jUDs-z6E1Y4a<^f!aCP` zq<2N@{WP|^!&SpZG4hv~1U1V7HxV|_!AmWM#yRfVRJfNRIIA7)F>K*^fMj;gi{ASc zTpiofIM~Q>vSe-@7QnuH^AxRDs7Qhb4dXIR9!>FlgZ&0!*RYw$$ljU^-d)>lva2iPjqgyj$D);yU0l6?w0ng@O!YspHte&4hbgI z{)~HInHT3q2q#trALtP%m0($}%DmjbywpssDYto0V_RWqdsAJa#{2C(JR;No43g?4 zDrc5iPrEF;PBWRQT3w-gQDwzMXE?z!9Sh1e7_Ys9F6}JFRZr<=t`gK+VDdVV{cMkq zn@5`}hc;Q(<~&-s34}FBZ`>_m8IulXPdl|GM>_$GLydO2vIRUH%biLhw|7+lk0?a5Au$QsuO< z)oQfMcq``$3SNLHa61Oie5||~`PzJ8l(B&mp(aigs4M+6Ip+D@!BYMoOw-WYPPyE* z;zGkD5DFE(_Pc`DGA>{8qbtUlI_9T0l(>CJHA8abTJav{5CJ2JL-;RN`V!cHU%4s; zI!er$OZ0RVSC#C>HISi$lSK1238^?*Lq`&WJDD+h-U7zD{9WD;OZr}R)X8fGq0^7Z z0I@Dl&mcsD_!c+w1?fD}%kT2^)mED9P(}A88sSw==AAOn0!kEyLbOYB`soL7BS?gM zed1QfST=pamPw-kfTf#)cXP7R3LAsB&+h5^-E|SqqKHOxBORq#Wuv3SQ3eb@gJh&1 zJZS(-eF$}@rBg8?ok7~_&Y0IVyamL~lWCpX_7T@Qk}8grYAxWSv~wEF<$~7G@@4

    |Yf_WZ!duczzo?tV8>Pnk?`BL^_(g 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%0DSh2+l;L|*$wF?P7}7wSeE*} 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%0D!QKQ7cZk<^|KedbHop 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

    faTD#cVqP`Bc$9F_6Qk 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 V7&w7~N(TO&0!w$O34wS8^?!3sleYi> literal 0 HcmV?d00001 diff --git a/lib/server/commons-logging-1.1.1.jar b/lib/server/commons-logging-1.1.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..1deef144cb17ed2c11c6cdcdcb2d9530fa8d0b47 GIT binary patch literal 60686 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

    lTsdod`N4YNOd~zpxRbR=SJH8j3v}!D-3xf!lHN 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 |^!WYH2d3CF3ECSEfz;($#V+pAeGp%XmJuyhA) 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

    o(*@6(>8%HZ1EtwM5 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�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%0A60J`d1_OJJlVpx%AB1UhBm! zDDObS=QQ;At~M;Ss#M=)L&bV2t@^0An3-jVH-4*t)<4-I2wOYnx4%rYT@@Fsw_f|< z59{xB*)FDt$%XnlFjKi2m6)B0-wf!-t)7>NK8mv%ED(TfM&}mFQ_S9*;_5n-!}}F* z+K%s^;ez+Mdh?%bG2>NTHp4`)w=X7JbVf`@ zb_&g?gIKpBC%WK%l~IX2J}-;*M9m%#dzX%qad8 zw1YS`1#RG?u#(Ei+jn6~^D_P;3nwMY^R_gV1^!rdDHX{;CNnvv%r@;Mp^!ND3L2IZ zX<5sBP2|9nw1{z6_OK_zj%b9uXW1b%Pm+BDO(U@eU>QZ#=rdUM80L@(?Assq(bBG; z$xidBQfNcP6=l;kmpYr9#_Tsb5(B43_6nkA*%s6`LbeWJS=yynd_Jy;ydp0Li! z!OsJJcL1kzuIR&$zG#SPvw)=%Mr3cl8D4>mBiFh=+&2es zLS0Z5Sp{}*r$1G0P)F-xkcQ_mk!6^)uD=!t<3AJLVdfTEZ0F|}GrQq=B3Ym#p?$K4 z8A0~-R?vd%F{|MEoyKc4dLH#$WiWpQ>~`w45W-%=^hfHoP{Lj#d=?1VI$-i*1|bCQ zCNXSa2O$LOUDK{4;HwR=RsMkhjNOp3#nxo*np}*)d4^|(yI!29`)qKHa9R@HazbxWDm(%>qn^Q-9t?{z$Cw5dG?auqE+v5HQ&Ny_u0JDcpp2xj~3g-b6euM ztfKSwe|zR+8{lycU|*qlQj46f4Sxr;4;-(eb@f!;!GPGgBk3h04)WuIn!t@6s1<;x zt~8>jX665ZSC=#03hxK16AC&A#W1Y;e6=)^|Ha0t?j68_jHo3xO)QBH9CN^h8p?MK zI>L{8JsCdpPGe^II=B6I1YiHUM?(M9jcos;ZWQ_7j9?)n14}b&Bfj ztS=lE+!&KBq*#Fc&HKu!LvEAltF5=UUwB^(o@IOOG$UqnC^>u^K=I;16`<(|iF+G* zj5tle?Lpmq{eH;NX(BOzNq`ppP|G1=Aiinqsp!e*!2z{_?jXHs>fr{xhE@f=pR-Wv z1-+oC5~;-;L>Bbf{DoJpT>H_s-+CyO<_l!TodGoCt6Iy}n!~l@R1z4RKqY0o&R_}x z&e!2?E<;T* zlLS3o=@<0P6wZs>8^>kJKDgoSZ9pu;$Dy<=f_|8Y>D< zToK=Q&STpshgL_A>SgFT@)Zd+9NkiGdc@!ksag|5{%{Pa~-CJAt9WSK|xiCaDvD{u_Q)8 zdbBaaA06%#MQU`TU=cLE5>)9-_Egxa;d@`v&R29>ZhSmKF~`=(Et1+(XeQ{_7k}

    ;mJ21su7$nL}o^o zVg)}*gtLW%HfnL)eUEm8U##2utlm8X2|SGt-bR3~(zgs^<=*2k+Xa(;XFvTabq$k#W2z}UFGF^bmL&D--G_E`rMIjBLl2=S5t zJsZq2Jy%^E{Dc~M*th-mXxCcLkDXE2*1l+f<(@PHzbKKcMIDlAZ(IeZ%h-o_*JQ zTz|f~yfi;&`ULa6JUxg1`RVfCFdn{DT&w8@6%SEE;# z*)eJsa)#M8#{#pc5%kdP4)CQ`qi-76R($eY%a($anZp)_v*uz^Fq4eJlaS`h(v_Z2 z^fT{NpPCZm??7`jZ#vQX)Re*h|7ptqo>G&keEL^Y{^{(Pa|0IB6js!sQWT0O*ECR} z_r|~?jtr5M`kk}jt(Be@NENO4!BAa6TT=`kmS?}`h{Cu7@cGVt{vX!fIXDu(+t;1g zwylnB+qP|+lVoDswylY6JDJ$VL>$M0M0f1(Ao!1Re$v1xf~5){hgU9K;MFYoxbl9hB4` z5=gIvnUUgS34woJfEp5AX^}I;`kT4ds0`-RnIuBrOJl$lHc#^obZ9c_TuZ`w+zp_y z!9achf5jy#TVtoGH{=l>vzYP|euc=?%5AJhX3QbXX^~@lJhSOgVMAgVfLr?aeq79Z zm`*(EIC7%Ne$&B>+AuC13Mb2jwT;)JQzMZMzrk*be|-K|s~cJ&Nmv+mkBL@diybRJ zJF^{+w`qr1&Z=3aTR8mJITyP@3|9Klq&h@V%_8BgMHZ&(fxR4JpRG`1rUsythG*c8 zisQ9cwm8tkNRZs2DAuz`fwv4U^p&_!ViY}z*cF18RRjpHxBG+50^oF)s5_erJ z-L9nWsMr&izzb6KRPHXN>KLPSGxBNoyD~oeiKh@?N!x`SyQUCh(~$L_M{4mzy5&0TKlLa8G@c*iMm&dt)75_ zonEpFQ&z&Y1<)u5C@px_ zxgSmpQA7ReQ&KjtRG%|9ZOFDYOVcY}(05|eo^`^PXi999*#4CJ(!7O8L~$C9Pk=v? z<3yc2=?fkFe}fVu-R45C9^QL71p3L}j#dUDYL zv4HvdXP+Xt`6avaM1v$*=Du_D8H?Sgrfd88(?>e8`@n~E!F}`NXpJHCZH9U7?~?Nl z*7lJFKATP$$7c+A?qZRrI3a&?9uR$5glL~Y{1rJZ7sSwut}2_|->EHtx}0(s4{nFi zGGrt-3M`pCSAr=*{iES`_=zEd`UC?XX4s4>0lQQ>&yx)EE_Bmq^~4m5DIDIxhO)TZ zdF!l&hx@OVrZ&lpQED>7R6;hjd;RU1xL0F~X?v8$RF|uDlABG<<~MUKS;Py()z$AV z=j-t}sV&^sK8HCh)(!mg9#iA?u{~!VimMm+(wR3}nKGqjaN)_3TaDt5v%D>kSbgNT zDToM#xxE~n=RRk`-|!Zq1&YYrT%pcqR(zVZtl9w196hW5iWjYqQkq9N2y4ek;%g^zMm*B(%2 z)tP3SL1C?-qaA(yAHPx=om#>d)w#vS3~o|shDWzFg*Li zshP;(eyBEJT>z;^#=$U9-DV7*Cuw`vm}-b_6=h-K4$Y&~r&nSPU&Qd^>DORb-WcZQ zyt>warYV7=D3#$4kX}OPUJ&kHm?1yb+28aX^Xwt~ky=SBcHUm7p3d$zE_N zBuKRW0h98XLr0w7lu^s*&4RM#7ojEo3;ECS&YCW7;__9mj{P6&)&Ew@K*ij`#oX2E zzqSn0EKTsS^=e#Tt5mI0}~|^!yc?0bPjR_oE)qdXm5W?zjTn$&8if!7;D@)m%<41P($H9 zc%6PdkMPh_kBq=re;D?vb?+LqJ!8%0Q&}@)Et07f(%ANB8v#7ckn7;IvmkVKUaqsP zhyR+G#iHQJGAsLcm&q4=#%VQr!P6I3w-n1Br!AOmTybnCe$K72gc}3@h&+I3wnRHN z55k%&?97BRRm0T+&x{+6KyB@23iSPlSvI=NYv$~Izjcf%;SDqIBUqT(&O?q+^{?14 zQNll8h4poQBQ-1YHt1%er)(;Wf7yv#s9Q!Xm&GC1%-I&x?{7cr4CZFf^h{WJkIbn= zcYn}PRGRnUEa!mL@zsm5_4yCxwI#2|Y9@KXFv{9~$G1%4igr!0TWxw2QCK_V${&W% zlRH2?!9L)wwlfcxb%RufsAYApHOcZ3URrw9LrpJL<)xpsflBTmr71M0_iwN|d14vD zof%KFj&J%3-wFqni4-?gG7M`KRTeiKsg!9x z>sAS=>W!#eCU?;b8C`Vmo=T#+GxQvCZH&p1q2;L&*wDm{OnQ_ey4*84sr6u@`V2^8 zc3ZQVee${k9sIRplx?H+hrY`smxMmkG6!GN%!9KKRXCiszqTFbmv3LX<_n+3{z{md z-W_Zo4JU^%2Yyx94;m_H%k*7l& zlzE#2RI(eHyI|<1NWcTC=37vasji!z$C)n?HI#dG9-wXhy*AxPpU7lAf~_q%x3FCz zW+za;DI57VYKJW6q+$fQPo^cBTEdic<(=Q8l6P-cqS~O?miILi%k)1-YN0M9v6WCRfdExJR)#06zdTCd)uJPJ?EPilk# zgGl2Z1%pWao*9Ek^Bx8xU(LBVO0g2y5|ypCRdc`!a8SP2#%Qks=0yEc^D`L1N^7_r zN!#|v;+HjNk{p2$2vrC`&GrstLt^ePcaF#(R2BeBpEC)|A9W9aG`w#HhUE{@2M`KA zzyV_ohi^Yn|L(a0qYW)CUoqMu4bA;Oa4%2SHjw)UB!Kc9vw~*jK*=lI&kX+wL1V)Q z#SPC7)@QWOoIjI&S^!}W$6oN=0!O?VGwZEby=v^@#HmI3ryUU8pDFDvd?$xeU)*aX zYl42_S}T5PX8f2sZ}|CjagC_I!%s^<%Gm#Cvr@b*e2)FoX8qbt_}{l#`Tsi^|9>Tt z&ehm(!4pU4uWhSMqhpL<4+2ldZZMl_B1r(}1!2a; zLStp?t|H-y*Z{F;w8A1oP%ID1l69j-+Q?P}F&W-8oSCAEqI_Rt21j-ku%$<2$jT85 zJ(?I}gl?+BgEs5~&Vet(QF>`3P+KKzCw2$B1$}Xc9sCu{%UwpGaZ$ryH|+rV+DhyI zndaO<8JRC!myQIzcms`lXR2M58mVe&!c?WVzD$;kPRVw*hHO+C%|)h2z}Qa-Tt0n` zNU_eEQXO4C4SJ>gBr5)Y;ymlW;(Tc>la?BL=)dFq#bS4bc|?SOA|HFJ8g(-0{n?UQ zX^pjwfihZBBXuR#6smHwidPTa&$P*(dNSGR+Sb~e6(vnH^jHJc>#!!g!E1LsL+76x za>E*!g4(QCsbza)_cLM(Q z(3YiJ3*e}$8eD6YdtBMcZF9LO>9}d3S6mM!VR5Z;t4;Y(X{=WHqFV?V_^i>cTMW!_ zGoa)WPTXMh9{o(~aY^PqbET>`v|20N^B(QkcWhaYI6-J8&xpQP#hU!j>9~8tb?nbn z`TN~<{LkE(2f>Vq&n;g6wk?4_&5yg{wDAjkajvxjLRl6JU6cYo5H+q?2(4_J0VQs| z8<{FT_=*YQ)skRR>|<2-&@;+O3X6)w8`Y|8U-4^!3EquZeh=!HBS(j{MewMd-Pq0R>1&?j-rYzx{CvBo`ql#^jly=Je;k)Y zktB&i$-$g2rXEZvAZG%MjX~rgW20eXd8zEt1eKS*T7ybY+=5m6TbNs@}JAEFJ=wGyjB}OhH=&&P6=3z(`RHp(Lw-Edi9GqX;;1ah>2`WFs5Y=7vsQLJ~ z3OU9(5ewzJ)=qbkl-GgY?@XQ&vG(tD_t>eLbYD*{yY+#$8Fi*(RA;VMk0yo0tur~j z)@xyDR03l&RV}Y^$<=1=(GIH%vr1;ku*#Tepy4%T$cXgbts`gYJzlYlu!%Oeoh@Ig z1bAr=(8eHwntC>P$1*lBuAhyY)cZX$yX{H?Qgz%;dz#z_)1Z(MKDv&x)E-UqqXe!J zS5YA9tGp2Emu@H!M5oHx3O*>jU5 zALWGSuuajG=#E{ab8E_k28$|k8LVGZ$_@ymk>x26>?49(NpqC|*>sB)C10)2G|rMz zTXdnwTI<@3MOHG2vIMFoH)*o3r{XGss7??A)G;3aPZ1thQnF;RwuCAuJN$)5bmwQ} z7by)^YX6?PQkhPM>hr|b)-#<(r6OuTVP=|nN>q~_|5Sr;x;dKXOznX_U8NV&EiF)J zMBJ}pj|?N-Nqb}r7(%kzFpTb3b-=2p?2MhyivO{jR89d2sLhyFD`H|cP4y2W_>}RK zHF)_BkvOPXqVT8G`M9|ev5nRVQyPR@-pSvGWbNJ%?vH7w(Nc-S^6M1HccE# z5p9LWZo|r?T2XzfmsxYQ?u|`8+fE_R(5WUk-IX8U*1+oPdKlen$*XFscZHnWy+ltN zV*I;Cy>zjNU2!M1Ubo^#i0zTIS7W9UkG2l0r@B$9lgXo}huN+SM#J9s`txy7JeQ-| z+japd>za$*o9bJ(L&8?kB>S9AT`zxR&aq-wvY1|TPU3N)%!`gP*n&YtWqF@cNB5F)Z=MQRaKww)&e(tBI0H_Gu%#W{;8 zkof&?8&xeRBf{{L_3YbEWa#4XiN(X~Vs%ryKicb~4aLoHW~P+L(PjfAUpzXTM)jHz`Gss*a;`>h5F&g zsBj+;^Wfj`8bJ3OtfL?409G)h9{8>9xA4ax(jjL6c;7=YFqvq`JI&lG8) zVgWj$59FV4PBJ}rPW=_mHU5v`oZ-JwX#V@I`?j`!Ao@t^cSp}c-)swG$s^kzbh}em zSk%O@pi|S|ikn%7{OA}8)_H$jab)J=`1(M@Nl2S0JQThTgPRnMV#g$bOX(3Ot9Fy; zol^YV$}RVdTsTUSm2-KWrSOcRtgrI5$j;j+eYxp-FR#8(@7eWzs@kd6T$$^6O{D@c z`f9E2e<$xiGeFyOhq2ig;l~f=yx5lqHU|<11#&^yHl$H&QSFh#lo2v^8_{^SMr+XTM+D&&*CQE#9BokvmcPpa$Gew7sZVmks7rG~ zFrYus(J&x8XeF&PU3nrkpgMp=;f(5#9%ew{j6OqKU^EdLrYCj4aL$epMybcThb)tj z>c8>nz!^gICq3FYD&fJltg?CW~1_XUB-|vNguSPN>3Od*_GJX|XbVwgoN& z{8Ocm$hj=q2-+m7T)c>m>Mzn&oFBN64{`Ji>ZofQ$>VR$`EWP?@CW~GY$c`3iGoNjtjPEcG;3S6FxGImv7U{6m zAwY`bPsiozYsQ2b(@&_YU;)UMb;Eg#A0DKG7>5sJ%SaUx>8%Uh^i$i8>E^^A@zAtMaSBner6hIg2swWj9AiG#ps z*v9~NEAH&-^AE#OywWJKemjpRI2@YrI%*sQn~D;~eo&1ZKqmR*SPF(px+E@hmNt4j zu`%rr78On;jLT8&Ocqkr#TdGql$HV%Txmu^v(_HA#VzjIL;ElmaAyKODd;7bpli)G zI_niB=^qN7-zXq0Xv@Ot069I|1YO)Y8F(3xHUg!#+^(Rs`XK9CtC?`T#^ zT0}&D!qA^7%_b3Aazo{QI+Ui5>JG3wh{tkxP9Jv+XvvNx@wV3P)4?LUswj4C`?D=? z`ZHsqx|jLSKixDxXi+|-&k=c2(#E!{y)-8;3wKKZeiotf!SQOMJ}dPiUT zMLk}ts;1PFhHh$6lCfvS7DS4RNBR9*i=@Nx#b3i1ww$lEQyRY zLu@|kvZVz}^VMG%fzkw>ON)J=;KUvLq85wKll~>eRvNJkGG@jF`U2x6G-?dQ_0IgY zY~RQqWKN0*>m@b%>+YImXEtHAQ^JLOjAds4SnoV{JKk>2H~o#{CnPpmYWh6^n(DB( zY{Gpm8ko}#pP3&PScebjx96^y7*7SY-UpACWqls1p|QO~mR`KiD7|raKlD2WoZHct zhU*7|mzd50?48r7LVS?)4p@kk=ME$ex#$6*Okq<4EnJA^RvZm3)He57%pFqibi ziCQGPAooMn=Z+T?45ZCH>J_oUlz6Sy0TO-!1j@~C;o^j zXn@G*`+YK-edp06kf!Y>SP(_g&0TWB^*g0MJl(@cH=j3EbJbLpGl);Fs z(2_1TKW;^b9SMQf1C9y@Ols63zJhCM&hEfQvQuor4E0M&lNyzF;@jBX#<(;`iwrgM zLnbQnZToeoJ*qgA%pw3!1@RFB{|VEVa*rbMO81T*PDP`aO_nX2GyS*qubI%OWTvy& zca~8q%EMFYh(l8#(5q|YWMNA0*wm}c3cd8X(B%j|>nLnCZ=;8xqK%&BWK)F?kmgY{38 z16-Ab z+ch=rZe;2B9X`UE-8Hb3@EBFowf}IoI6t0y)jFvxNy6@A3!Rt(=0@r_uyi}$KNx$9 zs=FE^j&J3d_~fUR33bX(VYi5v*?4QfnXRjOd}0f9G`}&A3Cqe_@Y-z1bBq(+shajd zs9Rciet(`5;UvX*{$^Mw`IwM3m!8Ki$IwZlravuvE7!!Txc3|a2J+ocF@0`2RqP=% z@pxz{x1%Ix!bEniEIY->OOXxp9^&ABL3pcN)GonnmL$g>Z5Sq9ZtQ{* zV!-Ggd0Nnm>5-vU39ZVd-lkfPSs0{RzEQapJwIMa$otepI=#0%b-kP^o-tC{e7(#q zo-tJ^?{T3U#T2hv-%uf*p;*N!2m;ql*3bYQUD4_Vo_59cm9qu?*ZS4o2+O&Nf+U*8 zSenM&&0@JWM9F-&gp1?)srH?L=zIuB1DyNHKtjJb>TgZfR2Sag0)O2JPlXYLXo|Kt zCL`$1^)G%BN#M6`rm}ekCKD&v^O?0`Hf=&?eGjf_i>GtSkl2>w;1OXsAg68_k{PxrOEv@%$JMJXu_g|0&hqU?I?l>sBx9jA5Ls?jj zQT_XbmF5yyzROPX!By|wc8D0L3TYRvn1^aC_4y;}zR z9b8Jp3Ri93xbl6Bsr`NQoH7`; zrZL!y;>hK0sa3LH2ef4-mz}?62YlLsvnyQ)2EEsj9lqmo5dJ6?UthMBUt1E_S@hVH z3muarT6}>A=GzD&;blt@JAKTF&!sgtJYlothT7*9aR0f~{sXDYZ?@W{&2LvNY4=o7 z8}OsHcUvQVQ$NG{2|kn62dMn!UVmcc*v!q{{lC2QiyBgUnNv7ditR4F9o6w-~hUsnY^x0I+BlyC$c zhPJ;`1cPM}X z6e5h0UfF2-jbGm!qD_U?5OOEYsfxM-0~%8dGQ{nDy{nD7yS*!x3E9Tq4@BFqtb!IS z8|nnzmxyD!67wnp3@V;w)C#Cy|l!6z68V8cKaHHhaN8P!~&;yWz@%IbR z_DccK<9Sc?A;PpbZLIY zT0D9$WEX#!>1y9A>3P~yi(T<31p7{CwjKA{)0Qvkd$OaQcnJzUGqhKYAME(-Ecn7D z_Xw!)n_pAyIcAPGJ`e*ODdiJNSVN`rMYXSarQelkyBr&S<^*{z_AIlbtlH<4a+JXUTTSXMmU%eeC?r;&adP~xdZFD zTXgUgCOP+Ly9-W)!+zs1*bT0V_VN_Du);Fad>5g}QuH1{3&&O#wJ99g#+H(vothUM z_yxqFt8!J}6%dN-NEm5m)oa;GX<61st)Mg@?aNJTi!i$b%@6CO6Q07M`S-|z9q|TF z$En3sU-zd#8-vP{rK+9o7H{u|#i{Icdc(!0kV3!KGFuHiQR$Li-9a-sm_l^*lAl}k zI@dA)j5RvV98I@;MoI? z%Zq^-p8YZ^^)UZL#M8Z+(oz$|jn1013-uWg1UmVBfek0>%Cc9{Z|(+FYBJZFDz?ee?8(l`GbUQ2!l}pPFJ*GnlQgT(0Bc!xu#7om830c8)EQ3> zrJSZ119S%0G88dPx-jCtxK=+hPQ59ZmYPTXAl<^dISiY z%D3P4VbzRw7vLU#_Yua@6j}4r4L2eH9q{+SqL(r@6NCC^nvIkZ{RMM?PnZzCn%Fv> zd4dl-St;O6-6!5T!Z<7b?^73rUfeMW-4JY;JX%b%iMqm|Owdaev4v7Cj=$YETWlNl zKY`A%o${@aF+0~hKV{f?aeT;32dVN~pI0g0z3Ez9NIeO6zBn#O6}#^*kvAN-EkuI4X3DT~xM}YWr0ZD;NfE zS7LE-U5_Y=wk2Foh)cvNwL=6tqgYsZ`pf%OUj6NOYHibW?Xmk&&Lh2yi;N=*glo<$ z9Q1K(9gWeWl@zJWHw7Kr@6=l8<>IT#&aPwP`xpc`V&V|5bOXpo+Yz@i>q7(^Vbzs8 zG3~aHcd(O1-OvlJYca8NZ};uSF!dp*g9eY#0}!b{?m`y%!h~o$U*JCbLGnD#vjhreC=6&70+48Mg}46V#Z5iZ}IXw%>S zf-=lBIcVt+Mbcp*p$d#k_Hp<{NC+~{=yG3v2)(kU-ZDHZ znK%GJQf|_#3CIBNd~aBkF#-2LV~FZ;Z^tMeXY8}1C3;(e-l8vK!D81nZsmNrna9GS zt!jTP%s1j27{X{8GUPRB-qA%BU-dR}ILatU(N6wFVX^*)!ZOJ|0873vpv>CK069V# zUMbDQz9AjLrjc=&{56E@5bI#)k6#CRGTN{zTR(~`)r=WxzzDxTeZUOUiyyWdZrcT$ zsv}#I&n@H<+u7iQ?i|HT*%=$1u=C%fXWlG_E7ar(>OXE@Bo;|;$nV(f?x#QIZZ^M2 zEY=^Hzf}}`Zl_%J@Y%$N4LV(W`pxN*QShWA44fQ96SkRL zn%_Q;nh(h5oEU51_I6vc@s*O-+#X0gUBe6&gMp0V6E-g1##Jf5g1sEnTv01K%Aw7` zS@O)~1`Y2yVPQ2y)Sp3>AhdAUom{5QaEJx7o4&z?X>nI4+l&aL@9w~rk-mR6D zcfB}kR-ppfb2(eYnaq}QC00jf#BVZL<+qHvI{{IPRZ{)&4-@wYq~TC?hyiw`R z$M>UtDgDwakgfsjx`WGew@3_CgO$&xQCmk)$zYA4naAFXdFxyAg}W18bpFQYSf6Su z7U`323$PDiY1mze7qlOyTuc_!kDO^Ue{T%UlesFdJtOwDIfHFL$fdSqweqB#pdK>W zv=`&oPu4Jo`NJ++3it5^q0cFq9=1Ek4!TCP;gu##=Sr{HZR6_xah1E~gsM+*x8~Ye zJ5dvy*X)GRDZL7>D=_9I?oN|0h3|%i%zs+J8@Ek>V5yA3AC!KYAm;{e>^TJUNYHvq zG*~G7h_&@|15wau2D(Lz{ux13F(-^8oQj{C19 z`;e`3PqE_qLOI_iQw(PZB2^XV0c3bp7~TGQx-wnQi0q@r)|u$zEH9tf?cfZeGJWO% z0*nM6CMV({{}`X!?MN-+w%QmHNDV~ zj8RQXFk0U25zv_dlm8_1k#pPV=@r?l6amG#fE6E?9(g8%!_OV8;;&x!BmSnGW3 zzGM$ry63exgL3rHIMkT%?U--h3bBuSlR3B?O%3ZWS4`g)?T19)T*qwD&4rUhh08ja^l|ue+oSA!gDdh1Stp%R2VGw~6TFj1!B|A8-a83CK=~?e$K{j|bo?po`t9KdH#})ORd; z#=r0VZ8Let~1p^cL0Pi8mJ413#f(A8irxgeJ5(X3Va(T znUq%O^y!b;tE;j{?L^FsuyEcE%9LBxhi0owvsPXIj^=;Y-_hfl*~?o-*cO7nNO`jLs^ph^F`ro@5bZrA}HNFm>Lf`3Ml@vbOSYn`pVpDwJ@K!ZVCb zi>yGW&p3{ct5s^QIx>PQ zk=0?e!pK(9d)kwS{A?Okohr}36t#%wZ}VtDk+*)1($0atCfu|j7r${K%lX~@-DWY9 z)mB3|d-c`%HOrD|)Kfm>wL2v*^#i(iSU%IZ!BqfwMlCv*!j>%cZrp!Vb}**PH8sC- z`ZOex`fgW6MnnJR3~9+<@!A+>dsM{oXqsEUCo`tfas)XhpgcL!92t|8umlg~BBPO% zA|;33tim9fN~f<9A&cs%C!!KJmIPy-w`?g5pMM%T)oe{6%U~!mOVemZ&Jc}STS9kt zaGRHC2KX+JSdXTB!pe45n#V?FiH6$fBNlp6%92A%yAU`|HS8ioP7xh>9wK&7Z@L_h z*D-;-=~>Gfb4$iim&R6Hp>yv`7`E^UfChAV{9(q25zyM}HlgALevYlUR;R+!ka6b% zJ^Ofu27rXcgq_sZt#T9RWGT*DH%d@3!p#9-H{20*AgI7Di3- zoi#?ldXCL%$g55Ko~0A75mY&(ecoSCGSVUy5C6wZ2PTwcIkN&C)NAy-$$OZIm)bLf z-h=L$bQstT51;FPkgGei>wY4S58j`^_64O~&G7s;f8Wp*=e@4BI%eRwhP6N5pNhmf zcKjiBnPr~yEn@n$ds6)~>n$#mtMdB^s1%w*`Vs^J*Rm zheBvX2fzj}BIi9}sDSaHaD1RKl)y#*5aLG!nBYZ!Jog3lXLucj=}$ZC>Lr1U;GN?p#OyO5MJa^ zbSq+TGwTBp461Bt7B|-B=~+>6mVf)_Am$diKpRoTO}2%A)78 z02tMkRx3i;$K&_s%!>k4*5d(mXIH7S`PKl?Wu9;E&+P2=8|5@m7>9s={BWZuqp7ho zw7BW@T8*8Ng>JcDemGiD<&HMlK{YwJ0_-K}2cu?B{S^y9pdsc?tXV z(Jw!o`oH{eC-jJ8S7#fFasTqeF_i1rjFDku>aC;UW>ii8XgYTik-mo_ve~LIQ#nsh z#zTdn$n_{VVXE0PKnO+U%OPL4-uNs{9E^&-evqQgUvQaU62b*nXdCvSI_hmU(?xMojgT6wO6Kas<+-){bktf|zJd~3W`S`-uv(Gi#tt$-L< z0bX-Z`%KeEb4Wbw(HOoCj|CgdN=J!@;X>S?SQv zAmbeF#NO}0CUZo@fhYs#k{&3SGTOHvK<3yC#^HpQjD&ktXZnC%EA)fIu{r9TWO*1E zMd70(k0{9(=&w-zDRRc^J|)klJ4hwzAJ+8#R@KMz*B5-o_Zs~;!+eb z_sngTKGL{3q4`Z$!&1PDbEGn3-K6e=E=d*g#)(UQWKk*}4+*~ZbB(Yc!d?0SIj<=p zQ-)jh{Z{Q2A9SOLK1*ZtB=@J|(+V{N^YE4mhVOsr_M0D>@l9of^c^^+fYw9+uEq6^ zO(~X#Y3NK(1GfSv{icbGN^9f>ckhvSZfm;x?I)51QccU19}+@`(&gVi@oIwA(-L8X zFRU9$X7H6NSd}hq$S^+!3((}#?J8UpRW@b>f!jhWDYMf?@h0oML4G^R-(iOzV-l4( zs-+>|&ehOW)h20efDPh@ei-?fw4i=~+4@PK(V3QXoO&RZ&e#RW+6Bql1 zT2xW0uCV|@y()9;Dyua{;R^a&8Yx-Dcv00MaN*&!HhP?{cM3{B#fZ{ETa*z22Ax#l z1^r)UI5t~ZEljv3EkDTp)>3wgfz2|yv{lB^8C5HQFlM!*sJcHPnxXEdKRSYTi&*fb zU-<$qV^#D>bo%H4#Z#k~wY)Q3bS#6LyftQajrk>W;V!ytpT=(%r~cKiP(F(JPbd%d zm}&xBmr)d7UE**{;7@f!T8~pmX|mbOmFJUbNb$H-mh~)c)spxgt8_;A9jAwpf}xo? z{j92S=y{XjV2pc~>av{?;fCB7YdLrDhScklduq{4!C;QN16O~zdh=k;zq_g^Ly@A* z6AL9zbvdU$FRs%ygOEEi-7+!46W&yDTl$fpnSq3~AmH(IXv3kDs38E|rW^KMvS4IR zh(MxB_X>afHe*{GfAT;*ty9wKcATm1Qov!12m`);sc|gQEv)D5EQ8fYz;PMdRV&O54S2;ogc zfGDSckq~d_eD>d7xZmDnTsJ4~phI6?xO0hEFB!h$G%rqx9{cVwf>~eZQC2xa*Cx2T zu3Cg_$1gT&UjGJ=TkaY$fGpZ^EZlije&Iy?zMue@SKu`-k8)q+rKR+tq{Mes#&sor zUr_*zEbv;EZyb$2a2CFI6~6DtHp#;pNe(_p4?d8l3eBGz<`^+?p)QA!XadeO#wqg= ze3{|KP(F?g{xQRi{$qxd$0?hf`F;|2umOb8!}?gW{-7ePLHNsviF5=1Wrk~@ap0%* zp4DoZk_Ma-3JgTe6(tEMHud8iG+*NfYg5|enU~&=LuU(2N0E6p;>@y)Xd(D32v7XG z6g|`?HKh7VS*uuWrlNb`;Szvrmu)5jLr{Ms%!gd^G#eVx+vv$ zV?~7)@`wtVP9n4hIkSZo6i>spy+=8;pm@O71wAle;#o80U)fg zc33<6uH|BxAwP;8;g*xHxNf!1-+y$*~v~=l}aY6Os*wSy->3HK5mK$ zOYkG3DvSQ1Pzi!caOXQ$%czt~usG3d0v8W^WRB;ggThwo+cDd%yq^{lTQEneO4!~N9YKr_>K@uu(O<)6WUR7=LiW{J84HOOxVD8X{x-<4D6(H`9-Q|@<83j zEVOQ|#;Z!LAjgOdK*V~KsrIa_&s1X)t;UfBOB)yZ0Q!ws0w|8pS>N;slMlFGl_>I?Drad*-+Y_k;Y-3$BszdxpTep|*F zkZ$W~dMlO!<`G`)r+)g^)y3O>=O`zdrRVca%$=N;Q>5qfnV$DWcPtDSAeMhTH|7ep zXqn%UQFMlx4HZn27x~h%m7PeiV+Ytgw;*wUDga}nQ_(9~p&*p4Z zcLP|1zc`1&jtm;mU;ZQQ5gw%?pj`u6ort5(LXbP4Ez*u!7VaV6rC_DMi>QzMq2! zjn^sy($mPU_#RDUu4v2yfkRR^s-WqM^J9(I4MD z@<){#D)gc!&_deW*oC_LAkT>I%6lmPiMf}12pc~TlbH91^OyTb!++Xf44035=wAvl zILQCp2K%r1kLSPpr~98Xpf-#j`Z305pIP!Y9oW%9gv+D|2h2ngavk^ra-C3w6sWOq zZ1N1b_SV(#_6Bj=b3<)yYinz*eI@@@q+m6DcoMkSf{wMl?d^M0Yk1G?rs{j|s|6>k zF(xWqU;f5xulJ{C-%F39-`hxXJSeoXV4*-APN4z6amj%VHLkMh)4M2`Pdp}^_+yYT zf89vzeBR09Atk%XS>z7`(}k5W3AX7+qP}nw#|;6 zbZpx;I(Eml(Q!J~UGKZUeb3qZoU`k@Se443sY+^&)H9#?8)NJV8HEp^N;COVz}u)W zfHA+1_R$DM7_8cPS-hs@oAyQ0lu%I&kb-)bgF-07K3UQk=I;QYM8G8lK*2yU>uzWa zbM^-c4fxQZ>|mjrkC_X26T%U&eR-x68?cKDB1~P#LavB+M8YwW0_MK6kLW6F9N>h)QlH9AFDRmtQ^Ekn}{~@3f z46W)100)z^oax4hR$RvhrH0dAPu6IJ^?7MGlClj~9k7%uFB;_Br62P+SOB+`cVAJS zMtIvpoIjj+J_e#1YQZabx^$mbGVDIod7sHqs{5yQrP2V5?PWGvw!e9!nAg!&;4VL; z&P(X4Iip!7LrHQn(svbFzh_F1*0Go|z0Imn4FeI1NQAGsN$Gwq*`HIP@=2TXvda z!J;T9O2J00C5h}s!%8&$wb)`rYuQXJmpStz&D4BG%n(z0YynWX<+K8G}-6aMxuRAsbNa+w{0XRoO#&EbXa> ziv8_`F1Fs>{a+S#Q3qQ$_7j*MmWTJjXu{-NpuJG`qC? zHMo`*Cqioie0qEgE5dE5w7GFDv}Oik}4*D$W$=eSxz zu!oc6&EGnA8(f5Qq=cLLs25FjoiA|WB4uJ5>5E$ikE>9q6NP_MxTEMebTVS>gI%DA+- za81CN{Xv_mfIg*n3Zq?A6?#fX4Bg|XhOE}+W9A!a| zkv`}6p+@2Rs^DmDJHawkWCmPF9O{x@!w%LfsCk&{YpEqm_BuKm;Eeu^OL9o58sM2- zRUgj^&@?8pW*W_4EQ&L8=pALlo2MCbYhlHc);^Rb&=s=q;grojlDKp}glvwWwq?AY z^~s4P^8qOdQQ9!&S=P))SzxVM;M+TynsgeU0gRPzaG4fqS6!*O=Xrkw^^*eUheJIh25=ir~1Y9{m;hHL)aJuFwP zzVC-Ri>ZJePQtP{GweI1jWx+sV)iO!xR<8Cd7!9g1=#PLc7#Y;^0WlYrfz&Pwn+I1xr^mYdfdic?CZ z+iNqIt9Z(FMrEK|dpuC`Zm@B(9BmP7PPJ+srR_R=u7;x6%w6Id&cAny6Ju>#{@sq& z@ZyOXYxH7!yQUO?Y^%&tVn~Q+gP+5B$JksaBjfPx4BglwUtcGisZx8$ePyyjU^2Hw zHQ)9SLwBQv%B{+bQ_UH-G9-2pFj6sIzn5364%P4=N^#^GtezP^fqr9m$RH)o(Amu7 z1L}-F+%+D?K+h96A%?^gG(JwZb;jfMRGd0#uf+SNj-1Gjo(Cg+h#|1x;E+y!A&CD9 z>Jj|RdN2#6mL{XddXRdER$GH3Xne1*{Eq?c3|EB38r8vG$Q-cxKDx;y7IZHW_Dp4op@KBg05?_ z=@!#A1ra_+QOaRl-m=aE!4J2iG`GtG3b4YI>^;iJcbi%dt3LRWM=|96Qk^@?FOCn= z$d^H}g1-{0!*|5|eusQ#wGa=q);1pJdN9DhqcNIRt-Hdmi~g)Mec>w6iuKj#3r}u? zsC2*}CJ-UMk6h=K)){8OA11A)(3_w}{QPAe*Q$zvWAhkUQC!IJ&Ble<>U;TlRZjw;ZYjZUtgJoJ%OLMq(1?!0YCOGRY?PXm;2$?@&vczhHHzk=&6nf>1PI6F;n&L zi^r`Esby%Tm=C7xt4*XHdSo9?ICbeg&8Y}%( zNY&RIN)pFYao^uWSH;pM-{4Aa2Hp#Na{A*B*~iar$XxEI||4r;>$ zcRx!Y%uhy`(Kd}ED1LG9UUTF)5WZB+XOucDg`Av1;)>|+uq28UtBJj?Y@8YT zj8WdO_zyiE0>Cs4t-1eI(?k$m zdX$L#AQ*?lLXe7--K0a7wosiElqUoD-m7Mxy*YDV-oPrmJMQAN%8Eb+> zWFh=&Tokfl5!ltfu#%_NL)2X1OV#*Q+d?ZZ>mQT&xb_kzXhtC^P5nWk{QtB`1Pcil z(9d@SN-Q_`S!3sLtm(5+_X-i8-78P?rA_@=Kavk>CkdJCyZ^g)Emgixodif2ywm!2+ z20n(BoA$))z_KSpT>WiWd4ep6PQP)$ zKQd8Usxs!9I&weBk!?JV$CII?s;4C`KX*V2hXa(?&o<6}B`@dm?()!xd0R-AdMmRH zOg%C%AbQj9lF`nSsk}tj*fbxzvXPd(WK8O%#5~+vJOB8o^aR{58C=L!Pj)W&m^Wxej^+}QCLW&yBIp9~MX!JBCx9$?{a7Snf zVk@FQPN?7vXMl|PW=g1e{lhd8M)4r><{U)4S2#7Ey6=_*^H<|H9Qb{sxS#WHCFvq{ z>k84(SB?&`9?~RSn3bR?e?eB8%H*W+Knc2k2+$3H;D*IR|b35L7B zUksG;c7B;(Tf>!A^@@iY*Bg+0tag-Jb~wA}EWg>=k_!7|0cDMOXV|1xX{n5%#|Dk2 zw`qR0J^1>-?FF{7pR8_bJ;{rRfYuIp_S(5M*!Hz>BFS@EN|zGHWCvpjKN7U_4f^Sy z*q@@RoT2u3_el~6f2Gq75G=pP8haUBx)v;zJDXhnkadX;CAn>62x{t{o5|g%HwCV@hB_S?QzcQ^9zWzjml9+evbC^rkr=?->JN4>S*#wSdazH6ylLiljF(}gA~w*>LWiDM@;HToz)}YxHPtR*P`#mG`K(8Mf@x71#CelS zp)s{0@Ty50_vuB$*k26Ef*RT*A_ct_I?z$N2B47bC)Lr)9*u%>gZbvCgSHb|zGNHq zOq2yc-{>*XP&$!LB)xhL#$e%t0^X$*F_2$J*Mr&;J`@dz z$OMF1Ok$Y$KTl@5xj`Vs(J%t-czv5h(WT4Ns8B;#k0r15ly3TssQkl{CJgilErWGY zBWn7QzHSbnPU@p4KoDq_lp%@MU{2#Z{NZ+iZU@lF2k!E~Hq0{6JwWkH*=I) zUE@O@hqsCp1l4!Q59C;sb z)=NX!7v@~roZ*+Dd5N9B_ejW%|6mLNmUR2Sl=SGoEnXx3&n4|-Xln}G96=8ToRJ0z zTrB+M3+P|pfS>>K%(VZ=0uF}%{E>o2Moy+~|MgIjFky$nh#KnOnl6(dM_R z9*&UQ@tsISs|*!YHN5{kd#9v^ENAIPWDmOIDlq`O;4Bai2R{s+dk|~-XNh3a&#~E}32O&Yl}IY@4zOeiU7b&W35)87!?QCe&u?53hNj;h%a8 z(e~mM_H9fch{n5FKJ+;s7QVX14qqh$^EbE-z%IjdT;F*Mi_h$s4hW=4r%*yy$A`8T z0|;C3x{Ie0Y0C%gHmqUaGg^hCqPPwM6EPwiO@85y@(Fhr2j4sr+Zqk|N_NBu_loDu z@b6_j1|zT8H?3>I0T6j4@X$N@O(xQ%T+=q^^iY4tuKXA?G^RA9okcFLZ@xeC+}XtYrQmm_I!b_-}4hPwRJ3X$fNw*0E3Qn^(W|GX9g^S&~h2%%a zL;|2_e+O#zNB=ADD|keH-)*ojMl?U`q?D^QYV9;QWh07}rOfUHY!t2(nd_^JD1s`A zvFlSV?S%2x3W{hpF%be7S>z?ho8S^wHCHI9(#8}HXR$7rU3@Ll@^zLFt!%M|Sg@$} z!N%hO6BJtdlUr71W%07o^>dWon>F`maLtaJCsD;G*M6kt!@(tK`446bNy$si8pzVO zjU63TfATWwlKN;YowJdaoB2Q&+P>)O#>oEeU~!dTtx;~!RJFFS(paBqDlxpzCp*$8Om!I6r+~JN*1fk zyX2!YRqa-dJ4J>mlVO{Lebt=#w$3stiftkYHqa$8C7MoR$e7|_Rcm08Mne^m^y8OS z^+3uvGA*xEiV9?1G+~mGjCE>{HHUPO9$tD9qhlGOFrX$Fx4*GIOUZsbAAYAI-NnC8 z;p#{vjqWadw8t=6fx4@Pc+B$9=*vH1RwZM;*~78)gp5@gAr#n{TI9^LL|dgGOW2&hNC#Mzoi>)s?=6nxYz;IHVll!f!!|__Ub%8gL7+^>^#yh{O-Q&O(H++OmD+t%kRZ|)?Nkt23A2L+m^t=( zLk(cx&$sp}2uax7GuyNkRU8)u1%v#Mf5k$7A?DY?l`}QC%#f8Ft0qlBVe% z@z-X2)lGY}EY%*2v|Yog7`dcfy5F`HMbIUsP>%bToRD*7QI%?A5hj^rP8rQHA^mLYZ_d1A(L9#lg%(={eRfiW^gl1SMb4 zlAagHp&k9QrLUnwCt!Y^X+dr>a+@5G4LnH8V6;}-Vr@=hSuxAcac+T;_`p0mVe?-& z@l?Z~zN$7f>R(|khm-w+?R_P0XO+Ypf^vUk{)5l32_W80qku6sa*5zlQY1ucE-nx) zFN=rS;~>rFh%|iuq`(RJmfLa13IP+XY9;c@dqr^xlRIF1uvQ-doHSXEt9O)X`Ao6G0aBp_xs# zI1b^7u68bN-+P~|R;cYl?I{Qee*p26Zj|!Mdfq4%y!l8&=&HF!-CMPTf-?EGT}lqC z!l-WaBET;?_d5JDLTZB~3*y@REEYBQ2EK)( z@&m#jewXr1wqO2++3(_mv2W5Q_k%w6on6&dl%dz^#lHP>X#Vh^-_wdL!f@(Ly_`gO z+JYF($7xa0tktL}`7*jA>T_4vN=upBDQL4|_dGZfS|WxpX~tPhYBS+inT8lbl7fd2 z+M-Wn{#ecpV-?Zh$kbj%mb^|)@_|-}N4|5loR?ZDZ)F%yr8p0Dq`YBB2n*z|VO*{0 zJXPB2r&1N}&`6$&J#oZbe*4~#>%oMl$#A8~5z~h^56&FXvEiFz3wDWI;IMyR$_Zmj zd}=wuhMuYp7M=ODk@1)0CQsa$;?eyKZUt5SL6YTESNvfg&>G^MxtIMF4iulp4w|^* zwX`MT{%EWgtjusegE-@_{#FCc1`qRQHuZQbLC3T6GOwpxO^K_?O^s;l3d0^q=<%^i zPOSjfvOXy<+Q_+HOxMk?!{i4{a}8gjsH8jy+_H4!yx$tVz`6Ha%^6!CFl(lb<(c>* z@mxph9-#(daXz8`hSV??C6w0Lqgs`&oYGzvao>#|4c$JVX||VNg0J+r6@`0??H5uImSW$k=i&5 zs2GL6l&EX5GkwR@b6*JZ=CyNnxC?jxxOD{URf_SaCIZeo z4&zZz-}LG+kWV4H0q0L2@jlC@s*7S4W?8q<4JP0D;yv=l1x9|Hry{{4?@i(s%2i+Y z2Os{;*Ha2HpRvy>ZQufD^+YgjqjgdA*l)Q!QLEXzueToGI3v5%jeg4S2@>8w5Z>ge z8ztrrViDeu5;_i3EB+>Tl#}ogmB_l2f_stVp(5#_Bf)o-27lf-lBoLTb-uE2bW=@y zgW^FW>Hhd?{4^_x4DsT-;fmgjFU}++n)FG-^_@I{m|>u|ji6U5)VjY{l4Rg_f3I}( zZk!%BwddEBhRRcw9vrMbV9s08KW_J`RARcN5$gD6+LruUC1LL~SCL0kTDYz=iDCHn zCR`F9*k90gABx|h2n@&5Vf-g(69irZ{(}zqAE58-;$&#-qVP}j|6lp-9}Vn%UkHOM zHyUQ9=FB8HwBR&^E!t90CBM;?IX0w|1SO`Mx}i%n<1eMlC+#ptT)tz29dFErZpWLZyzdQ|4sxx_{pPU8!j%cj|WhA<%mxVsnG0S=C&N$rXw zB3%K90bIzuF)x3o#&;jtX+Kiq5QU+-vaH*$gu_S?SYdzEWPcrEmXtnBK$_-{{{?dq zhcv57%nx3bTjmTTN};Q{lM0w%PJF2@xD3gBF_RUcIWF}i1ca3hh5l~izt3a$V1;Ba zFIyG_iw6=Q8%^f-#m8q}p%tz`T-@2KwU(=?A<>+pvZkoK_A7>)V=9+eYV^A8rm#cL z?kj4vrVY!&m#=;>;593%7=0bW_^n>0ra8~0B5lbio4#isxqJm1OJ3_7CCSA?EB<7n zSf|-9GZ|?FFk_zFq2jg)b&H1NV%O6rQ-OANgig&S7wk`h;-xjv=x-i0!a|6E?!&~0 z_H_C6ExUMx*bo`r*;X18dm2MTd|0J%X_!!YH#|j;QyRF}Qz_I!?3ZS?*s+3|VH?pU zBjH?`XW;Bh1Sa%E9Zw`CooN~trU%qLT=G(Y)DIg8-k^#+oia6NO3};4X?ObUvo>xV zcwuD|UXh`&@n5=~wPb5bD0+#VF&2>qq-u;b*Gkj*fgX@lhB4nfXa|PxkZq9t!5X$I z%T3G^=g5y)qny_)$Gu{O@RB@DgB?hN7KmN0mb{|}2GzeD-+Pnt;7lo24R}E-${cwL zLF+0 z*c^{-hoW|mdg?Lg0O*w&?!BQZ&mdz`DVjJ9{xIpB-q#E;Mcf{JK_Iug2_l(a|CM`) zQK;B2=OQBpn!PYUv5;NzLscf~W&HLFIT&h^i1JdVz`FOfj~%yci?iN(svf4`;CV-> zG{pU)uLoi42a(jzd#owTcIEeMZt!-PUj$TRPi(XC$rN5QX@wIc6wa>oybp7ag5LJio&W^2E#GJHpp*gr| zO2C7*M{e0V%dc7aQP%ew(`=E1i~OkB&mA)6?iu{5qPw(UeVT|)$0y}c`?EVPFS!)a-V{UrbdZZOg;tS^c_usZjbG9VB~3)Dl2Q9_n@qu_ARR9;7x7{ZX@-Y@<&mw8{(v#QiYgkDRx8~ zu&bR~?$sF%c7zy%t9=|jYV`M*Hca;Wk$J*K%P0b;^#~vJN^r0-=I$2mqe-*VH+pN6 zZY>@O%tL~GbX3d|R7R|+ndG?+w@$C*cdhNkEF23`g7fDPz8|}Lp~3V! zsN()V3_qSj1)(1!)&7{eZ&>Ywf5ku^#=6xjGthY8?-3m`ysd1Dd+e>9tuA;IaOq`u zhc~|lgl4xI`Xq+aE$b1WCTzQ{RmQt)ydzAhf5xeO*45qcI^J73{9%FOg>T9EsxB|g z$!qA7ODNKR(L}o&mX*rmC-TfCr`2iLDc7i%`D59;mQ6N@>@1gohK{ghvkrXEL2N9N z^1778eLYB#j{Gt4d+yEBC#Ihs6MTnkus^du)==RS8mT4Ces3SmwZsfh$~nVJm9A8- zP;-hR1=?>TEae}x#Rq$hYaS_*$z9pvap**DqZ|^?xOn>T{J+(~n4Amc(#hVHO z`!Rb+nTE+k9a3gVdFL35w83C>0hSs_&H9;45@vBW6;5#_F1G{~QAril7tek8LoRLw zcw$?V6t)#5Ds+Uo)DZ(#BGyN@mf+E=^Qy8*+sGS>_itvWHAFr|w^dd=l@#_QIg9T- zi$Oh$13hT<`Z|V`&myTdTI%x^@Ms6*Nb=DIH36LEA}`=a+uuVX_BGPzb~GUd9}&NlAvV;UH3xaZ>%_ zDg*&L@7!G7R9=#x-vvFiNb9^Xh1aKAj%Ln4>j;_&vyvi*H=s%_XE0KiU8VYKMJg42 zB(9ib7=E(Fm@{U4m(Jd0AXb38#u3~KPkJ!|EtvDHYdhkY^XfRkzKf|O9@bHo6Y45$uU;w z9Q@_yZeCXzU<1OLdCqfj7`Lmita!YjFyN3DW>J|f*W+MUak8QB<&q@;+6}i15unF; z4%Qth=S_67DDIQDyz>=OMO^WkqaXF;u+XD=d(Uv=e8-HVO~Gh3P_b(Z(OWq0(f&4Q zOXt_o`deG8@|m1U%NW5SHz;k-dhIFi_q@kfL4u#veRjSpaj(GO-mve6{DmO}LQP6T zS-;$xXyH?^{yI6B{AsxUqWL%@+qt?MDsf*M_uGqH-m2?Vb*W<3pTf&QjR0%+*XLfy zQcwZ?TdT<1PZehYSX*lockt4AbB5x|2Wki(USGJg8Hd?G~vm*gQK z>7gdUzm+}_1jIo_5I{wUcL5Cfra1u<*m3%Fg|!9d!KzXBQz2GST*;s_lZ5;SW4!vpm{taOqZQ%A%c0~{Vhj~RL0fVujN3ey zl{qgJ<}hTaGE6RNA=XaT(rv2q_3Tj)Ut1<;>UUOD$86h&XyuzeWV)!~@N<7Li|{O) zNF+TxgDl$;-cL0f>9uzN=Kan&xU&~?Na zzTV^|V(|BD%nKI;JxkYMQlL8aZQ9aI49G2;`kIEej_S460NmEok|sRm#tcI^A-r?i za$Nvr=wx$cAA?J=+r7-hj5}xhJ+b!fz#SDM9E+gGTvNZwsUPa}#{p-;Ev}v0#Z<+- zKUxxu++f-+%q3V@%~w60;nChioxM<(jY6Y#qgmUTL$shCw$UMu&24{>(S4i5x*A02 z3>nVrb#v3!d<*LJ*Z%maDD-vYuOQ_Fdw+7iqi+a80`eYFtGG@JL-Re8Y&K8wUFoY~ zSXySvOr2Tlu(jlno&i~HlK!kK6DZEutrkn#%X@6I$dfNK@?D*Tk9t4x^LnTKq9pR< z&6H=cwd9c|j(UXJf09dlnJmoCU>D5SX_Lt5l-T17k&Ti_pmMLSDvItBP9p$MF? z{r_Dr|9#~D^?IWIzthV$qjb>X|Io`qKj}zq$`9CAWfDThCYhLVBzVshrz`H4tavNb zc(g)9#*}RGBMqXKyq3K5?|ZDeEK{7jBtA3nDpw?4bCy4nAsmlJ3P z>x9%VOmYp^Jar|_m?K-P^qpo-RGUrY7?TAT)uv3M%=BxI*r>7A8N!4O;HDCPoYmVT znz*65OTm;dFFd)B0dFjr*k)x(F+pCLB^v0$t|NS=5|UPtTe&VR8CVr26Kdx+!dVaKUxwesRSY zaCe^{Z{F9-Th5T0PJL^vm5+u_|G8!GsBlG~T84&K%-E zzuZY-yf^bDltc%bGtk_avUsaV7^h!#{`4a-zi%RfLH7vx2N6zkl;Qc8Uru!5nJIS#`sHeKjh&c(`sJ8^ z`ei6uxP1J-{4%*C&@XcV{W8mmQwk!bR*qjZMT@PO_ic+5n%P5}wXCU}BfZl5K@?)d z)NX7^mQ}ZGGg@oe@|>y5ge5kO>Q9bouQs>;ibM{~qR=djmq2M3cS2h9*$isS^K zLfU&!SevT9<>WFWU2Yj*Iaw{aY?+j{k8Fs@urv@(+eJ=f2gl+kBF%_`f~Fsw;$hbl3C5@%*TSoqJ8m+8kqpt0@}RWah3u|!QAo5=^n;tRHC(y< zJPUX23^%K-*n?8Z@X?cez(7p7w%Wk%tGvcWtV~H=tOV77=W`7`EWW>Qi}8L91<=Pd z*sZMcDQObolXOMMQ&)R1%ToKvz}DU*7n?)dql~tu#v{11ES7i3j?Og(yF>e5=1D6p zcq)tm%A)-x+mtQ5=!cdPMT;i}ZA_f8PKW>O%h80gsqDR-kKQm!)m zz}=ni!zcwrO+oG@g&=!>nLcq0n2MUicPCz^p)ffm8m^O;L@h6|P1W6&tW74mqN|8kYCOojwyD_Dep;W$+qdEr_@yI{A>)lLd$|_HVwk$TFnr7{x}cF_3MM0%{zD zpvZA|MI2mAL zbJ3}KcOK5cKN$)A;Pz=)YsRL{5usHPnQ4$uz{SZyXAONK8e9qjKf-7Jpta_~7G`bt zKT!cEQ+<>nqS zl_QxS!oE6c&b`yoTN0%`+&=q0RqyC4FN))1CsfYQE7CV8{v+g1;^ej{2lW2jGHxZG zVfK}|su%M&(!kPdb!h%R`DfABS8(P==NEp?2Yr=hw7$2<^4`M_NO|=H*l7i3N%-Fn z0aB#tUSc@qJBgKoOr5CAm47VG%QbZ`CJ`UXN;**}Nx!j%N{o+YV!1l2Dc1+% zQWRc`R9HQu3McaJ8*8Wr$7L3)lIFJYP>(f6Uc($~X8);{dsRbxR*QR5L(ScTxwAyb ziqLGz5v$~=eriP}5LN|Y#S=&5zl**@??;i|VA@shdyTZ(16My0h)i5FA?)IS|I z_yoKm#SC5XTn7TEzT$W;=agB?i+1_Jh4K9DmOIO={&LI868h(m-Qca@0eXIMh<{)< z&H}Cea?2cgy-2;eT$0DKK z>v7)lc@2-xf>-pStFSLWe>i4bQngda!41`FaD*a0yZU0fLyDdh`Ynur%D)AF4thJ- z*Tspy335gL5V+;vSH;-9GN7~hVT_^45h(ORW9BA$MZNR=4+V^0M2H{&5hh|9HUjb; zfD=UW3o3#hCW6^7!Xti=lkmor(D4^NBPPjBS^QH*yvG7H@=;<2b$#@SqY(=IPNq1Q z+)h2q=H^w*ZWy^J>dE$gPGi}9TLL3h!CT`Fc#cHe&&ZEAzc(hl>ZlK{s0N z{-=woBdnd#ngZo#I~#EM96{E1-q7A`B3|ujBCVhNEjd4xEh9gB#cxcqLJjOG4WpMk zEh#?f|5D4__8hgc|BG7w_d5#pe@`t7+x^%5L`l{jg%Qa&(X7$3;~mEK+0IgWodk_W z0xDhrZLUB{P*J5kz7uC-$7)#{*Phf5!XJVJ2@O&X7fJmC(P&AtjV0Wvj+fc*?roTP z+u!d4bO)iOvQ2A%Rj0OZ#0j3djWGg7&9~}VgM1RcSdr*bl3AtPZ`MyL&ph~)Vo{j7 z=^}z7acjMH`zTd<3^C9>0jSV_{op`0r1|r0qgCv*k67ries25{2_470Hj`I~Q%c|I z)<)cNbt(bOGAAl%WwzK?jZg#jRkY4VznsvpvalE)QQ4T8R%ocrTimc;#L<*!NT`rg&dQd5N=E;(;*F4huGJYXAJx@&1Fr7-)R)GU+gYd?5$c~T zW>7fCNW|L+MsT3(hYQ^3@S^M6c@F#UH=$^Rbd3CHYGKoXGt zPK?;FnY2m|oy^?aZNUxoSr>vyOoRr&Q&tUvk zsTm6AkV2@6G%Mg@&5YFcbXWo^I^PrqP~BZ(8b2Ak7h7rYRk*m4p3mUq5l+ ztufM)NyYV2IW$>BZT2hRK@B!yw4_)gy{Y?h=EXHsqtp(LWX|O}FM%CJNV#9(wb5#A z{6wpNDB*1~2cMd`h>X^hLVS&f+~sWT3&tzGM* zIDPt1!Z9i=>7x5Jd{ENehIBniM|v{^DwOp2F&IKkY!_tJg`)cCNf@fxPlc@#fns&Z zMT=Dy(F#PE*jy!Lo+pV(@f$blXdviniGUkr{5orB`)mg+lSDre%~6t`7#BTyjLF*Q zK~)Q~^kMiCAE~&Nu*Nu&By~x%@-}Azu~2QaUJ|XN#TRY>T^MekbA7boYLXCkep->v_oy6$(-6SLw{N==hrd#^pujAZ3Qw{?|?^(lg->{%{7*QO7K(9L~62(EF z($r%U8eFUPn(VW*=eS}?ks%3(KuKhnfmNiZJ6#d!mc3L-V3dYo;J&BUGMflk z%}!EgaPaRs>cH$1^hjMG(ANQho)-x8*{+eFHvWjvyP~EJe5jEp=(E^KP!9#_fx+n; zSA6|-Wbc2f<0Qhvs|BT6EY&&5A%H;72?TmUhXzhMIA~l^_g~<#LZgxt;^FH;dmsvBc1Pu*GvU|vM{+x97u?WKj2GHX=)Wn=Iol)qge?B6_(RF(wfd0h)H z{=azsQgn|^d1kyoo9pSY4bR=-PZ+Poe2`fhL3UBJgBZ!YyC{Dscl*l#YFjmYNSg$2r~@W9sL9Wx9VpX;Qc+4J`)6J3jIF z#ueR|#F&V-3>jPknY~99-QW+qPc5?PQkHrhKl8xKNXW;0Z0M711`+5wn-XmAfR4D6 z2^Tf3yivS+x*wPAxJ|M6cu% zrQb093O`wT)W!VgQ2l2KRW;O6ZQ95BZ~q$=i1uq1*0_UkGx!RXz;f}XL>Rv8Gm=JW zMkXnHwau~5YeAO6a^2^Ay+sE%B0Eqe;&77tt{-Z^#XM9g31G#jITEI{xmp%p<~|1% z(buzcx~kWw|rO0yfa*FCQ zD_UKHA*n6CxH1+@+Zo#eOIzAP$L-}nn)uIVaGf~^TpY6i`=u0&Yag6>H<2_&qs;mr zCtz;eX4j=|I`C%vw*6-7-#0x#c&F-eYXl+Fbw#(CCPAr1LXDTv)G72>$6iqvyC z-sKfiZB2Zz>BwpC>gyVk9(6~?Oq)h}t;OrR8$W1{24i>EK;25YM(VmhFduNgdrLBF30{8O`OdY(hYof7?SJlOgyFgrX66{=^OBX5Z!mqcNPqi42OOj z%exrMdszSCh~wJdFP@(T^8E2%JgM~U{db`MZ-&B!T~$0C z{y9@tMOPX4=)kLOfg(hq@B>7JFVaXmIAD)F&p^9QOB-AZ($_&K0+URZK{jo7Hg|`A z78z2^{0)Tf)f@N9j>zpR?v3d*=X&??Ww-nM6@RY}7(<9SQw??7cPt3#4HXC2)^(%- zJZN`QI4Y4VM_y{0&D#s*|l`&)X(Z6N;L|!2UJm_p(2jr+w-i_t*yN4gE-n3s!#BI+{~QSV<0rI(|}Ppo)~dl*zfNCnIK$HwCsHYt|$8KHAHZ8Fo|W z7Ov(KbxpdPi@!t7+q9PSx3^g-Y*}O|J|!2iNq)p$6nb}&g|1{-W^Vb0-jye!6;-09 z7qh@+i_Wu2`T5Q}EZ@sc?4WVG#8t>;6XV&nc-c>WZ9iN5skg<}75`8)S9&jzQ>nR& zrlrJ_-*EI~H>JVUuJ5g|K!QlJZe!|eOiFL4I3#SMsv{^Tq&EaeQPmOS7k-(H*_$<{ z`pQ^jltxeNBYA6zDhxN)%T@j6W|a2ym`~b$#ChqL-(#)FyAT)Xp~6~Wm!Wm5|8=1@ zMES_Y4TW(oUpe+Q$1=o?g@3Gd`z2Of9hdt;Gi#&ZXy`;3Tm^0i*Gm8~QU$!b=yk@w zigXT4R*TRzU-IrLN|sCRMJe%;NRF6zYr2%ofn?AmybzT5O%SO?fkrlCsj^6_h&VVx zCJ>L%DLiHJ30aGu_(gHB$RcJQ%K*&Q0t+Cg>WdExI-;kFXubK5mFBKv(AS zPmwu2DIv2R0x5!&atzUzWgoF#xriv)f8^d(9oRoRfDaQ=|9?D8{G%-X^%eunz2mB4 zefH{fuF9;FWGV?+S{iDzNhXq>3QDe7W#AWWl98?tG+CtEkd38GO*U|6D$%2giXuQD zf-9;lc;!9(G?NDId{^zd7C}`6M@AF+G=w0({v1i zMvd$?uth4HZM|ByhfM}C8;&*fX1dzUwPeJE&Jd7!QZE(P5QOXM>6EtcGzdk_oJ#yC zK~N(s2oC_G5>&_@$CLafx0+jI#eku;bnpBlpX*a4^cjNqd3v2033g47nmOu-AU*zA zp^`{@Urx%V|3?0BE-yx`ETA-RM+M5?gYtpwqnVItUU>&gWx-=#h$p8CO9_10$fUc@ zmtXwArS!7GXLs;-#z~H*kFfRj~d?~X>Nk}kSMu@_PBO{QO%>>yWeNP2wT}T$L zry{ikMiGI06Q$XTQnC(P-ddfb2pwII~w2XiGou@vum zOai_wSqK9-ENg8W^Ho0yYvHLD?9pK;K*Euhlsv2XbT=y*6n=bz=S8C%sQr+%Eu>bl zofG(RRFzfZ;x4U)+a|xhUb3fsIwCNciMBc}NOQnQQ@;vLgP;5reP#kcF*^{Mc&#ug z41vf`@QY97C(?FK_{X3SOFo$+LrBC0zWL=i7i_fD6S|j(fRuK_i0&1+B_lndacPO4 zxd!RC`R56ulq{#hU4C|-TfcXEC=YY)1Amz2&lTzz)P&0MnmlmDg{g9ICbCgVJCV>& zAwM0~qaO=P%q4|jYqOcl%B^Q*7ApDg64CIroO&|qmXeIB7K?Ep0H&vN>VOIPD zKf9MgjD(Dh@ZOM_aBE}V592CV+QW$DeEb$j42=ow(m=5B6McPD?~ivqNV{P0<2M;I zeETNZi)*60hTDy$SN2&DeeBgU0NG{`j8nIYh^T3kta{h9zc3?=PYYcOqRxhwE1#g-P79Z zHH3V{l%5+hrwbO!Sp~ib`+!T%2;ZHrz&VPUF zxht$D@`O_s%J5eH70UxdTh5B@lEUzaYJP%wbp%asv?*Aw^tkll`_L8@hLFR94)wFy|MV za~&046N{6@`YI>}TdNwEi=CAXUlc`88mgMy;`L=nwX2{8lPUC5y3wglZ4wwHCHGhFQioa;cZ1fiFOCVES*uXt^dd=+QHQ}EZx)U z!_YUoR-=<>*1lc8b#K(k)f6Yf6+@$JU1b|>k+3BxtSb_*X7JU%vE(F>=i7YaRX4t! z(2{3u9+=kZCNx@mYN-s7naP}kjV?)vA-|{!wg6b^j~4O(B-rMnG6efeEe%!2mqQI| zV0v_}#Q3h*>aN-9F5l`d(n|Dxq>3p$ZPYSF?nh8PAYT<)Kmlh+F;iIgw!0IRviTbA z=!Stan`%fV!;n3%&Yl7rcqSiu^={4@NzSWf`29AJ7~*w3MSZ=s>7>5gL(zH5X3D~9gdCUxsAN*t)GTn?O7k7J9vY<R9P;d<@}oZqWq(jy|j?f~tR zve*XZ8ykR}*9b2V_S@H=aG3#fC>MB2uQS3}wmgyJUm|o*BEFv};g*$5c4F_c174#9H>G;j!@N6GHF zH|;qFv_f;PDX`~r_sDy|e0^x~-;B}b12W$j#I4}EE!aXV7F}ppjiurZ7r$pW!~^rX zWgo-{!(ta4lr3JC^Vf6IiVV*q^YzbJci_+MxW}*qSiHxwr}84 z;xHtmxIR%w3=NgcOQ>(XuupqMcKnd*@Na3%flR0 zM%hzG*`wwhWY@!*l8W4tiZsu}`eNH)6B(3GFj!(UzVq;sCw}cMFmRzic>VBFfPVY{ zF{GTk^5BQenqjvBZ8BQp~F-(U(%F-;r<@HqD2N z5}z8Cm{>)}FX6`;S)|U%>W;JC4*t~sMXwHTo3y}g_`{4FoslUp32Fdo;z!|qz1GV7 znM(-PVFXqv=Q30lNJ`U16(LRUM15Ic>6+jmuZ#W`ZEh%U0F zG}VR(EwzW+=ZY=pWPiiv)LRrYwDq3y0D{}rF(P4cp7<#~4V|g{p}Mj$d9r-8@tsO9 zo~mqIb2OcvZvkFdW+}h6EScakVKkqh4Y96F>`6J*oUGakw|R$@jj*ggE26jVNQ*s7 ztKPs%itR?SwfaP<5WKnRYU<@*UmVh`K?>te&>wwDAt^|GUhBq1Ru~L|EMS-4-RKIf z27FGF#Qo$!ch+hv5*N!W*DOZqZlI6vba5A4kAHm zmf8w$7WsFy$+!jeh#~IL4^ueZ5WDRXuA#q^`F;y(>HZ#q^1PlAaeMqg|MCqbFAM2O zbW0GVn?%bY>#U#^ZDtQmQKxVgyLFxR2(|3i+?F>iCbV6k(CRvaJ4UPo;*m|aIoyyi zV4!yS0i(&0m5JH zzlFa~|Fik(Uml8oWx#(qoF)lXu|u=$Z_8nl99V`FN&#YR0KHrgNT2wNB3-ifANRRz zQO#z-Q~UoZKYMR^122C}F%W_mhX3jk%7RFPFBZ8%}#DV)BBwpaQI%U}Ii4ynx0gtSl`lEosbP|8dZ zIsK>dsFYT_$yj_BZG{9DOQ8bv1uSRqL-=5hYCNb;1{E#Nh2rceE!Ihs7LM0-6<&~ zNBe`%s)=DaOw!?7hJ()xzZ$AF-v_kEF%iOY%>d7+>ClP&^guJeK4Z1DcPL+P3p%h>AM9j6pA)~UaobwhH5lV5g zGjz$u7_E9=4xUXos0=Yp=HSW?wJ4)V+h&RklPpe}JT}}*jT_S^E4lp5{S%G>N|CFT zc2g;bDDh08cy^T^k71x1;Qwq|0C`!r1e7%hplY)#_ML>0bQ4ysV4}J7c6B11M42K9 z#dc8kSGGC^A|OFlD*j8W5M273zHFT<<;;t!uM1tM(KOy~nY4<(cA}9pn3^1*Zbsvbo_CkFVX%u(3|U%mm?d^A$bDFe;nwHD=ze)cL#dy z8F_tdfiU;ofli5#x@tn@~C@TQ*|snCQ6Vy+dqq zCBH6Hyc^KKk6#N9>^vxZ{xYDy%)W6%5#1+p{xP5tsVZp7p7 zKm&Sc$vYX`FxG3HP<=(C@_6N=A*B}X(5=W5m|cuBf|$0gpewX5 zj633w%<^FZN>9L13*=WA59NTl^$k5jlkcFukUOMr;uY$z1pT(I7*>F$H(hmN!^9(y>DeZaJ-;p^}yKKllPy zz;%SXgYJf^ztB9I$!ZcX)-zXx1Ys*%v!;dd8zlcRpdp!FEJ-<55YBodjx9@Ho#9tU z&ZJgXBI&7&`JkL6#Hm}f!+7S6sC~pmPkbYJ9KrU4ov|%bzj~mPw~O=2F%*9K-DHNf z1~j0VSRK)p4r^$!340n_^Ok+Ec41@Qz#W8R7hHKSx`7^ce7V>XmC{K3GAn3<^4Tqh z+ia$X$;a@BJpxFa)@m0u~``o0d^BErk z^!(GkKUcL*fqAmqI(%N(hjb&uD$&*w2w%d#-qwp*!(XS{&15AcTBq7P4(bT|b4tx! z(C!YRqYu{e$Q^h}Ey63Ns`kMHcuGxd1^&5vhdJ$n`hC?BsZ0?FNAv)mQhRs?o>J4B zAMysCQhVrsvG3}N3F#2z2{6Ei8+}$!qu=amnwIaQL!WFuyefl;eJc7L6fim$0 z1rhfBlv+p!3bH`hoX~EB&~E)7F}nQQW9>JtABicKl-JFFPN}WaBkwzjuUaE} z=^=YV*CKHj7Y}0BeW)Zbx0jMjn)9A`BTVRuzgaK2zDptWl|MgyeKf5tZ9H8HGg(M0 z-J%e?{#ccn_`YhP16M70#J!Wb;`}Y~>!$d8^D%6dgXc9fPYbG>i=6kiS2*+2B%{857ewFp$Z~>iigEb3IYdj&&~}^ z2^<66jmi!HXG&8__@=ZKY!WGLZbYNcH(;e2@mHSC_j&%&VqYtZE8VOy@#ioYgFv&vAaK;|e60Zg4!>t1@ zdHoYDHXQ)v&`uQw-d>lRU|Lo3GJ|5{75gFn6KHHJQ>W~Fl{QN#qyzMmk_P5pwb}a^8LH1q5F%L03 z#Vv`MamA7-y{h(Ki4(1>1gpMMJpgYRATeo_%rjwGsFY$3fIPTEEmidoe#y5T3x?S- zIfZE9IBQi#DGNT5Vsqg=*ufTCldRk>4AxFrnvMan!#10)rF}|lDCm`Pt-aC^6zc=E z^)h#3yWI&4j=-9+$IOFMe&hTY9BT~nqw52laOVfT{lmHS!AkO{$sKR3U~Pr@0z*in z*q>4xp0Y-E zPpQZKoF;+!$%QD8^;itC+;PtSl~VKrucqG z43A{lY1R~~JY>-@j&=VYo2j22{0^PNcT!%Vw;TR9rV4^L;lS5N_f|$vzi1z-lk1q! z*TT!34+hYg&Eoft%HfZO;am&~CvY8`L9n4N&#YCMw;%gA@n>BgCo|;p*g-+l^mKYH zK75DouDK=PdB`RhsN&o)2H_7F!-Bm+1>r~g;syRx4vh`-4Nm=+?oZ11r=cu;udW=( zGo}BQXL$eDPs6{`%>Sk21p8ic0@BRq_zxV_;Ae$@(+rCt@ZP*}NTnFh`8tBTMy;4q z^cXc_#acA&Vv^-tUxzo+A@U zZ<8G(O4SX@%ndk!Tfn4^zQb{Yw53V0*s17Qc!U{LEv6f zabgDgHbFq&reKthMH`_Y@f~GWfhhBlW#XjX2#7M?!FL&}5@Zv`IK&Jj2$;w{qWy;? zO8X?cy8(uB^@q6`e|(z}b!Ijl8vc>`9J7ifLtsPTkbqnI8BC)WNouTcA;%5QJZz<5 zMtYV4;VwtAcOf+J%9_qJRF-}iM29t#fdlJw;|%JBl#c^>>w|PLdgW5=eu5IKpQn^0 z@Oa)_0si;iXhvFx@)Un8V9$xcG*@*0VN6S2jC^N8sw!hlgO3P5xI9(lAe&Apw6bEp z;s>_qqV06+oiLn}&skNAVlSW^+7Nxw5m0hAak$xdn$RT{?KEP4o{#t70{E2Htc;6= z(M&oRiyR#Z^>@!niyhc=n)s{dR7UBL1ME2!AOd?%X-Nnp?>(nD`Z0wzrz9Z=^ZRC4 zxuEr|t?+-3~Y<`w&^uGl=EwC7)vTDawu92Lv%&e2$Pj8KBV?ZMv> zk#{MqA=Nk&PbwUg97HSaw)%a$5?UWe-52fm?4enZp>nL+sHSFk?>QB`_nc~hJtyS& zxcn>z#JE6`2fa`0u{WkZEDW+TvoQ?IB!28087wCGdP+m>2MT zo+Ec9K=}Df(An9N*Wg`2*iG-{Z%NyKe47qN9kt9@dl{8rX6CtmyqOfFsFmEBT#IpX zoPGx>aR;it**B%nFj2eU{9`}nUx9$UtRxQ;FUL*KKG+o*#`yISuP^wmBL6$aX&2FE zP2qM;9&u>h{0xOa?a zBi7LRM|6bUoLCsTP=al?!j`wIrAPJO>4S6ToPW_z>DZC3x=0f-jNfe)=JWvvFY1RG zkgc7>7YA>*b$d0a_6^c3s2yhStP63nbDtTl?2FrtL;1wMGMxiOC&F$r z8iCXd>{kmDWuz{GCHQ`yWnN^rF8CeEUvj;O*Q5m30tzc_;6R#*<)Iib_nxDVuJi59 z5_ZS&jlDAd6{z3cCCj7+q?xbAZ<2{R7~@qb&tBJE*D^qw`Hmyws8RQfPBS+zt|bXU zXbYqndfd|WOhukYLjIxBwAt^tXKHZflqxcx0T?;?-&toz)!6e4pt%)xephaiNMfumKdbs6$7|^?db}$)(S8v>VvP5I%FSsl-*+oxt!SWfvtnjV^6d91 z8mQc$r}vx{(Jupdt3OWV6`kDAxmb|a(OR10Hs(cM6OEJN7wp@TpDKJkxIIM6^L04w zhmVYzG|e|9z)(rJ+C1ZGNw|MBzk_n6IGr?dJ!jU*8v3qcgvR?L+VB!N)Q#siYQLsTLi}AOjPW9TgHn|ouiva5FK4urkuxM;)9m0 zWyiT(%nDu$z0BUjWk33w*BFHe?{fJMy>=X>dpNlM3_$a!>ZcG0`xw-J6x9D!FAPK=jP(!AM5^a5%I{|Up_!vZ ztlM~Z6$x)y3BJ=LsGrc2u^M8x%QYnvd+FjRlvf(zK$;o6`Wg?UnV04tbbwFMCJEtG zZ<_X?@`Yjs!M?5nUt(dF0(}!@f|i1Ov z{eEtaJh^wdCck}xHt?pO=U$owY3%m5bMuP${`z)&LKmtAgc-oUz|4O?qDS{Xe0{TY z{2OB8Wr52K*3cVl0rh(npwllG_|Al+pilz^m6&QIjusf7Oiq^~muApvxP3SilgCPf zkND+-K&U$6CVm$D&VZH}A6eVWnXm8E82`)pQgYP?F~w;ISWWz|!zU6(RQ_u`!OXdR zek)Q*ilzk0rMyxu>V3_@(82emS2h>r&|Ltp3qVbGHwO0V;io2=7TTp|)X*fiEnhRe z4*E9(3k2_UVpW_J1H~vXD=ayk+EOyO>0dEV(8UYbz0OeA0(x;Ix^IN}ho6$8$=5X(!3Q zng}>A`{0gMvio|FCFomg6=oxet;W7?d_4R+^)nW+zG}%pQy?7W`AW|-9cn#h%L(6l zg;V`5L?=0hb)sm15UwH#`~y5+cYbgP@hd2|!clZ9-_a^7)uRVM75T0lgLM-W~2IsXxf@$n*^9Df_QwQJ6 z!%KEXZzJvk>~HDLBrT5h#zjS7Y$0KQlwil*2K!U!2;nMabD~wQp5)o)ctl!f9_PAn z0;2#NGZy>700VZm^Smcv_g%i%J9|d?acZ4x%?E!B%&=(t#jkq1y3x(*Lav0b=r7c1 z!ah97VGGl>G48gvxqTz+=41ei3c)Jzb}oMjF{t459Kbf``|o=)a>ep{6hQRf z;>y3hRPjGM7$TOA|B5NR zy^aKqzTadyO>y5G*F6Y;6ZHte-L(QJJ>lmjPo#vTX;TwlP{71ufFHr5D`P9zEXY{T zk55Rga*XF7{Q;D;Hu^QPRQ$gHCD9mW&!^B34uLsgY*4U+Jx>Fp!)~hxjwUQJ_kld4 zf+84Zr50UVn)e4s$C5#@4d-~LNSfS*x}%zqg;WZ_PE2+!Er&8(BQ9%Z!PE*2FslYx zn?K%F8~kIUC8!m%+UlonO>&YmbrXXh_SA-4>g%Bu~U0QXtZroke^MGV~sLNpd$gK1@JUHBkWc6cM(RsU&y$F?4}g3^F6}7{i~|?gVl%^&tkSWG*&80_bGn=HJYVE_CZ(v|FIcm*1 z;&IASJxHh2caMLz7H1e*rEBl+Yw1w?+c-1X;+x1_)W0LAgYPvgq)K!OAetQQKhU3NF<;D~#+P zn~K!fDF2vTp+Qet*<)ZsZy@**WE4-wMaC4;mf}1L)Q8m8Y4l{>rW=--^B%*Gq4U}^ z+Aj>CZUX-3Ln`J3s*uwGD-Fm8fD7O+2zL7MDmGlhCx{`3G~21NhpLtV|^BlVIe zoAC{jx?%&b;*^>N&?1*HW(eQ)A?<)b?Db26-fFSETYSWKedtRtyK+?NCm$>%uFPHj=zOI2sbzQY3I=dc>pTbpw1+IG>ts8uQ`?VkB*ZRkKuUE4}4`PuW%cm!*YXD*8(+8JzZS zefnxM%$YM))fCro;mQA4T9AQDi>F3Id$}HRH{hy-m5#B(uKOHFCm0@<-(30@J^!lB zV(_QeZ&$FTKLY8b{y%H8JnJ(bicUHHsm;dQN&x9Zl=RQi!tkdyE02M0hw^7>S(_cS z8`5n~2i9fAWV8(STZC2vx#3~i zV4Eps-S);tGdNoFQdvGp^C!e_SJdl6mcQzU9ApXE?#oQfyJlD`-()f{1s~*p0^*ng z3@jo8N}oeB7vw@kY0Cyt#2<(!eX z=YP!9DU!;qi0mt4@f@z*AM|6gjj2om(Bw%Hh$i1up(^HHIthDFA3+YfGVXn` z=x-$y80E;K^j@?Y)CrZvZAFQI{`>}t!{F&Mg3YY^Z?HGRiI|tDFpE-brzj6Si z?>T^lU5!6E0Q0|d0O-IRz+TPYIe-#i4j@taE&3JlJ3S@lq%xQ!!ij5_lxfPd2yMx> zaOryvKv}t!6_^8vn9575blrz+Rh`=iLqq+RCP-$vKVILeIaaJ8^q!g}0j6dhbBMoR zx0I3e9*qHqmKcriiTj$O?uIwza?ff-K4s$GWkcS7QnOENj}!fLTJm}CsagFJS2T1F zl?K9hHo58P0kVlO36M>axxn@c+zI~90laPqvsg)M5=7i+xWd#lm@X8|qz&>VEio2N z>{-x>5~y#5l|GYDG&GjqFdd@U!-HTh5e_|{Y^N`ndbCgX)Z-zW$vBNKf4&82(`9{B zrsepL9Dtt4dk(;ATFgv+_B{uH{U-+?HL@W!p948|0!tcjKrszG{&;_&tD=s>F_xYk?8JljL|{T6M+_3hV`=Yr^?TQaQn{<0_r0%;acL~7>D z%Z)n~dqBIsk?^e={Rlr6^B`jfx8655+@%=U>EjyLdT1ZKU zDon_CeF)}X*yO(tEzJKjHW9TowllG`HUAq>RJ7$$6_I{7PP=L+X$Og21^5|J_Xdz; z>*OaxV5A4sv+ab@nfec$GuSqf4T|56xcP>N!Hb~!`n~ma8D==OR>&4B>boAMv$Aew z*vY-T9wpm-ptx4)e`O*t;E9AH2xk7ef&`iZyBixiWaxN=t%p=Id=?ifXqFYKVa7ph zl(J%iL=B>Ay1~p=m(6S1*VwpF|G`lAv)5?jXr);T#6sj-JA?DH5Wh(wlDdks z!-Rmi4cSr;kl67W*V2(fGyGBRCFb(JC(pFp%F2T>OC|O=mAbGBe2^I$@5YW;_1U&` zZ2(7>gjvFtM_2|6D?QPCH}KLlXLbH+{3avITE+SC6XO<>%O8c_x!hWkZZ6_#<+&aD z_$2e635${4bPM6;hkq5FHKJ)S(e>$~OyjnBx6B0iEuz)T(z6B^n9~+~+8D9&DxB=E zwk!`2OGCL2sJMt#EUeVZS=Hm4*PS{Ki{glv*P%+=gra8_!3*ZZ26v?*x6-3O{iX@bTA9*X_XnbR1GH@lO_+-iHXwz%5<;Z1< z+l}zc^@SHmplIFah|1I*Vp3BxXZDQHvXRA(9YtdW>ENOH1fJ4VEt>U$p{Slf{&vNv zbg@&vk3!i#IL`QBmaL*|ygz9nAnU*n<#$)vGFT$7!9dYLjJrCCOA6;e7h*e3n{nhy zpY4~m0GP!v`LYW#{S_Wf{3cL=Bw_$AnX`Ii_ILzoxt#=#g!x^w-swIFo!qLkOHR~0 zt$7vkq0sd6z|b5-RG|*|oUSg@r?fA+xJydu3pLELc6yubwH{C5hl}WC>J?~I`svfC zho1hLJBJ7<1Kp;kD%Ak zRq_TyP#z(qCSt)?^4VFOl51958@seA=T01C4eXfWczKN};&$+~%qe2==9Ol~m$7Q> zno`YPy7gF0XV4=?I9$p*eji|gM#xu5LXQWI+McwMR7PEgd~}g3H&Mb>i^soiPLf-z z#(*j}YJ&uIaJBG*LmtK^A%aJ)hC`;pBKgJ{=qI4@R%@XIY@jW-A3?FnAEa9FC1SDi zBBtONJHwS4_pg5?2kmT5K@e=@&1X)v%rW~iePMxhXQnjs|;PbZLj z`c<-4{E@^)VuDQeUd&EvVa{YoQ5AB^5yZ5cDK4$_a`s~+E%;%}uzr_#4@~)O4tm*g zeSjb|*r=wH=A~>}3#ns$Fp&I^iEwC;b=c#EOv!@iUjdNpaKGRH*yCfCZ9Unz>7({=)XVhpK8f8c z_x8q5pmh45M~e(%A}gh-y5ul6zXCr8fHdKP$>5CQ69Fkw-iDoTHchT|U{B4F%>tyA z^nV_lr;?n^Oh^WA*CIw`n+Qj(Pzr6p>fZdTf|sv`bGM%hNLU>LE!Cn^eY(v=*2 zz|vg?6K9<;#zcdZVcYW4uQWZ*oH$~mHCtLN)%8``o?D4Ol9(PFGhgkSU;yW!r;zfRZ^t%AacXP3XdNW^vb9VgAzNC78o`5U9M8v_+k zH_AJ$0EJ!eV=NkGN4Y#lgN&y;=;1|A=<7r2h`>vqoc@GBXKpKc;hbO;9?;!Tsk%Ch z*8XwH>AcI|NUzogAtjg$v)BbK3s0HFnLxPb#U53B=w)QzqXgw7v=BkFV}Jm_zOT~r z(E*n5Hm6sR-k(i$7-|FCpZ=|?S8q$)tg&v?%_)fDf|Shnw*drUpAEk^8ex+ryG_$6 z1cRE3Km&^nCoqlwt>IOrhhYL_g9%l*zgFi9Rdf7W<=7QApe=(7U#E};W(x*Ea=Z^h zX3TXy8_+755@ZMACh5a3zeG0W)Rjh*uS9@mLSD4DudR)SUWqy;!&yStT##NRf$_j} z-@$QK53jvlZV+qIi=j9h9q}x>K6Tb5f-uVJG@<|__9&FRD+p-38O8BL++Z0q%`fb3 zd}Gl$tF@KDIgydFIwH#4xosG7bD?X$jI6q^C`jq*t}_!!nNvW$-Mw{hJA z7hWmYS6Ss*U^?mNdfiMuE+*tz#W~Aj=qmeHQp+C=xKSe=IDj6#h0MoRA#M#JatXgG zY)9s@-!fBA#W=CohjFIw7h($Jkg&X(T|$qXnuAJ{xuP0#witO`JB243mE2j5oM5)h z(*)Jtw?7tir@axk3D9c3X?02#S-s)4V0PtH23UAn==WSMcP{NdfJVsSb`4d77hpK# z#m;8yoc2=;q?~b89o$CqKgh zLgB7=E_V`So=8)=xS?6L@?bwYj5hOmNH5pOMfu1kub_!1Rj%ZJMF`1fh(f!-Ou6^3 zn4r&^IdV_A9T>%O4N+o*55Va4OFQ=rw1^U5FP?x57JSrCrFr$*iS)%o!VEQlC{dUy z2`;Wh?2b6ZmKt{{10+Z$(0H+&yI_DdSAc!V*OGabfcXDMlJWR9J$ z4zx92OMu^5kTxm%>J(%4w z(ECLcIyx^8JZi{chEB3M#kCElEk0#_?oh07tKZ-zL8di=sYkiKCFrDyB~)g_M4OqS zY1RyJ&d$8rSc(D@)3`Q-!;Qr!LGUs`#ueR|C5Ge0Js!%at~qvI;^+|>W` z(lcB-w2%Akr@DZi@RvhIbTB;ZTlAtT&BY}mw(t;u18y)=q~nZ;NM>=a22>6XeDM%V z{S26!-{z8f4)({HfREGRN7X_q28kAffSIox%+an6V2d+vce}2hBOy=cvPGFeb!Ad5 z=W&X`HuL7BjmOYqZ*3 zLDdK3c1QEv_ke$Q3wuYkUCpl>={5~hkF>Pf?x`x*e7M{Y709n_b+Y1%C@AGUiVZvW_J4q` zt?Ivt_btz2fU*P4a?RZkRP%UB&2k~}nM6McMLn@#?uq8UrqD^ zXf4Xl<(om}G2a2daQev;_Oiiu>xcSdtdjD(hI17Ho z=07IpyAMh_G~f<6#qBo5?Q-)5C2QZ}4Jff7&dmqbKKA7dL-P^lwY@As|Jvg}fp~rh zIHxOp?M zoLBm*5d!>%<1)!Z<7h{yzRFCsEW#&8ySDYU9ZYuMr>!BGj*K)9p0Bw{!McveHxW-W z(27TF+Uy_m3#4eV{S)B{kYNc#*n5nPMkJN2eo)Vw40veEhX&P52Woh#&_QjG3*C=X z^ap`UE8N??zcKe?A(o5-EhP_}{|}K0F{A$ysZc(b12X2PrdwmpBv5q0PIUA&BhAuB zf1+ujbd~hrWmi-b)Y^IUWNSBvHu4=CZ}2FbPzruO0dLT^N4VddlO4KNr0ly{yiSLk z+^kM!4>vK0Ss&;~C=CUJ!$q;bN{lrJt#v>dQwQ*(P?$JgI(p0ZqBT8`(>c9-?uBV8 zL*_HVvc{?`(N5dpkQu7PXvA734gM`VWb58~ZrQrPCbX4=+3D+X$38)1m1@M^lC;mEgZe6C?ZQulzG1s+ZFV9E(?zU&^xB^oc!|54SRqSh^@?@*tjkR@|5eBk7JRE2`f)oMe0kYQA z&5?@1{VjL9D|IjwOeF>|@txKs2rFnZH_g)w3yX3+a50m=8>a88gy2ei1xA0cPdUWE z-U&wxlDEL@dX>#wSt^}%K}k$TF<9{lge^bHBp=C6)qC@3+2vbyS@RGya4nseapRJd z^xfKlvJ5f@Vqq~L!5E}mL5Zz#2|X%(JiHv@sTOi?2NOR@;*j`_rJq|p*O`gT(cJ}G z`zb*fw&;c?2W98OiU!M|95R=nyyI`Qo(HH7WbUQo$XVR%NIjJjbND6bsQOwa%H|d~ zVQ1DrE)@PIsiatV@-5=qR#{Apo}vIT%THI9WMs^jlX`WRob zuF!WLUj-SMRT< z;J;I&w>Gdzk<}Sj=%&5q9Ld7LF)Wr=34hLkb-f1 z^OD!+vB2vB3<+Zb^yoMZn}B)NOijHntT|1mhLz72&T7P7O15k-t)!sulkjVsvQ`WZ zXVk4NV&LZ^xa!tm7PB;a4xoz!J_><@$EGbl7tCCvoy}u#HoHW*AS0H|P^+A&&?l)% z2(PW33EJQvS&|mk+;FiV4(G4XFA)>G*Y7PeVb&X`#8nYR*3g{FbZd{CbY%tkaiYH& zgMHx|O|i})6ziD^gl**mOp_&ow5#BYvXr@!u2{-r6a{}pDMH-UhvJ_`+1E5bd>U3Gc@t)Uw*BT}(}alXUI7ZhUjFa{TC5%y zaosr)G;7^6ulqDP@%znA_BIZ-yd6f$C4svKdu5`%UBQPGBTB^0%4`^dq$B+OMVTa9 zD+6w2S_h{*G+C89U0U@hc-fw)W`C=fHmX(fl}0~H3FlK&JO~Q;gmE1|g)4&f@fzS2 z&+dYyA{4nLq-vMdnL_Fe=-wZinDVqEB3Hq%!(*6R=|ORS>ld_H`i)ytsva+d)31g| z{023K0J=+r{E;!sm#dQaxIb@{cKahkV!Pj1<<_1*GkVH z*&0;kQWzM-76#s-aCi!xn0`(1rR0P{5TgtIEb;j)Pg*IvMOqd~0YV<;A}OI$qO(C1 zXa?1cJIBy`#r1p&SdS8h^NE4yG5(6dMXy1USS^|mxtI1=m0~{|lsOq#rAVoAg6Jf% zmlD(zzRcq_Yl)mkTfSxK8({eHoF6+<*dT{6yCMe(L(u!xdN7Y;0QEW0p+(Fw8oN(f zO82DMzRfp0GcLex+feNx9rQ*jDc^3a?Jd(=5^&I`=5Y*U!+f&b?zp#Da2Su@FOMKc zX@viWwYQ3@`d_=Zr5mIhq`SM7?(XjHZj@M*fOL0vH;B^RA*pmow}iZ3(BFQZ{T%GE z|6{x-4u;2z!MxY}%pUMq2K44EG;?NOUE^r^weV$fmIyorZOR$FyTmOD=KfuDOXh|#-#BhM zt7LpiH9pPsV?sr{SNOeV;c2xXe@xeu9&B&sNjnrLBJJ3E35&7)lsJ1EwbL;x9{5=U za3LmGthateo9k4ivR_B-ypA6@{~@$;GsmaRS(*tmP_i8!V|6wH)3R_d=BW5-Y^zpd zGQCT>owS^iO<#%eo(N%*j+VxzY8fxeD`+hLT{K`}Gcx>m^v4LeNm;RpWtV$ARF9+Bk$tIi z1>IVz1$pgmF0%Qm3Rv0-VM1TeTlcwCAk>Uu#PZ_x5?yRhnapm9V<#9ksxPC98>yetCwbU-3}3UuOlgetjU#-aFWPY9)mn|*v98*R*Gv<^T3pXE zeZ8)P&jR6>tL5u$5$s0rlU^h*uY-$o)sQr*GkbiOXDG#P?!lmQpuv?Z(%LShw~)OP zSlbaJ%p{DH4^hd7Swpdo+#NH9_}e`}n3VxX3!-ra|JvU^Zyn=r3(##*w6;aFvYo*F z<}vp!aG?-73HvQ3 zZfax_5Pu0e=Jg-jFR0!$(%1|bkslv;G8hVCXxJi!yV;EWrZl>w{?tj}kHPm|A_Hfk z#fYDh#h;di$iC+MuA_qMXvb3S@~yNWNS zHes}f`zn{fzl+NmXJTOQ__rBaK$n5{2Y-W_vpna_fsQD6l&2L>9H##3&AYqgW6ZEQ zu3utW?CJrZ4OAy**Rj>u-R?q?i|l!>2I~>F7sY^EuvFtOlj02Fg-H=_fjv?`=FgH| zB(v4f$7G!!-+j^`OE{20aRfgde+74p?LsU}7zNY!Kt}$nKfh!m910&L(yMl|K-2Z@ zDAFne_%*K&#O+-F*SQzBYK{I55Fr(hna{Z1 z8{MrpH&)J@mg_+&y`vH4cpY9ii9_wl7G;tF@Ydwb5&S-Uet$~@AJKcy#joJF(zTa9QYICIHjn5ewb^QAZV<5I?;~d=>$2 z(|15zy%d?)DYW{R!7Klu0TF38Z%OsJ5R&uWGUfp%xK+^;s#>#1x*pz5Q~1c00!EKh zSjL=S7RTB;%M2m^d)u+7U@M{t$A)mF@mH8#!UH(JJ}L!V;e;qS3Ysp#$HZ5F9kUz> zo_M{-joyK2XO84~qcc{|XqMI2nn8Ff%g^^)g8Ss@M}(HMK#wQHyJ(UOV$CP0=kE#J zsKq5$0Pc9`f8>sH{Xczj{{2MyH)O*hK*{r9gQKrHGrcBCh&|me|jjWgP}Y zwK^*rbxONxz6QZelC;UF-=1mm#ER$Ux|R|6)&}ZwI=Fg~$u;Ccn)tZp;s?MB z!YCe+1S3Y^1!1{*d)yc$Thfv>4!qYqM(OgVgO&a!ReyM2h19L5QjM4}M>omn7k&_{ z%^Q&ncB&#m=Htd9qP@v59)?O*L~*q7DKEPCD88B|U&`fjydhski6tG~QQH$-a!RVz z+C*CwX9l-jGMuEWWppe}+z<(~nXe6LnIZ>RSfBayiUvS)^8&`uP!`+%Z#n7Ut8)ropU%wQ!YN>duo|B6YNsKML zpG2%co-JrL|EHGPRMmp_Wss`B?_qWOyFdG;s*PFY)bx=~y9FADDE{5J^#dB7*5` z6F%I)j<9n*I6iI)J5Lf3)3QFn_v9g+CBh96NT}KPJln@4>)wa(MpSLV8*y`J%HR48 zR^EzND_CS!F%K;3f_p0QWDvtkn?~;8O2fYRgy{eHg!~V#2grka=U?IaJ0(sG!NLWR z7GAT^Urq=N#E<~p#D$+^)s}l;DptozuG{<5pN=*JW4A_I35w`fGCDZxvj#bA<_-NbZ|Y|rUVTLDDU5e7%-=YU;nSn(H|Xyjc@wQ94fhVT{ge-j zf$-?$8@-TrZ}pJoZWQk*oZ_O4D90i}PuXkSq*+0Z<uZC}PCYK({l;L2 z)3Cz_F<7=V;ls&;gs}q=6z*c{?>#2NFU!`)d+D30BXg&KEK<=@SHb~Ck zU&piX7eEfM8k{rMQ&(PC4Lex?sb;M?GDeq>G6uqlQXl4wPCDw!`EI2K5DIN@p_g^F z@cB?~9($1Rhkuv3MfD$b*@#iyVf>=?Dj*M8>MZq}sSMfA?6c(8S^WkS50FCJ$yX=w zAIGovpSHdQC~d1lUTDZa`P>M37RBj$CgDjti`GM{(vHk>EdlE$Ltx!hh=W^5RerqH zbz6}(H9P*G81u|(PzG0afu;BtfIJq$3}7{=F=U%sezEYyDu+Kyt#2sXGD)_fXjLcC zhtexY&zhr|I3SrgK%I!#P|-CaK? zo}EoJpRf*$iQIo!4L*|QdOUQ7R$z4Uq;*w!P5inGs$YgdfUO=;ZkzhY0iWWGVt2v3 znk!*9V5_J2F%2^L#thi%oATc8E~hm0bU)kb@c~vt^E0bqfCI4AQ`$BWev87Me74nV zyM9`nYp93PQTqB~t9N#8#=9!%k-p=Nn0n%NTNCde*n)qy)t3!>GX1gDI~-9rQ5{Se z+Fw#v(HVNsvVe}RBx-k=dp(|Q_5En&gn+FcX`q%%E$G;(K!vK-1JOG9+dkcqX&d|? zR?f2hNpa_+33Gcix6xb7ppcFiTRka&&3s`s1f~51u)_a`)xf>B71Eii$@4VY?ETK+0;+Qc!F$0J)Hx98Qw^{h zfX9Q>VgRe*$2#0!qmU?*4u3R?kDDK)$GzB|3BYRbQ+O!20gOV`e_0Jm0IT6Az-q|8 zMz#(AOCU!y_Xv453eDoc>xcINtOodSCfIP8PBf(#R)fq7t6@-K17I~oJhK}9uAB7! ztedPRVm03Z>!xt5)5@OkO;3I?j~k!O+jTfVR(})xXWbP1yl!$O0M<=Lpa6d%|5SKj z*OUpYn?M2S1Ovn!?&=r+teaRPiskdu{E7R%%g1F^TD)fbL97$A`MhrWZsJKR9aQs= ztp4dG?T-^FIw=4z2zmeQ1>yf)H~p6{2xX1zE!>PO{y~r{>nQ+nUjSm&o<`>jJoTGw z+H115G#rW#uO%^+>#Sry-SN-XA}@|_xF+>VWIwW{Sd#OfLOj4d;B>FNnyql>OUr^alY27|7W1OH2!~^W3#ZR8m>z@F%@^=`=S``1IKK zZAy_MEWd)SskgLKVSM+(UAy=9Glu=XNqV5-4`}^Q7*^fW{HJ`P z7NG*Ia5`w$rg+-8)QTIiyMkRC*wbfQ+o`?ThE~ z(3nbQbWkVRY%g&ap5ng^jo*A25C_o^MomS{C3CZqJGFjyUqLjA#hNQ*Ao{}Yi~~M4 z;@xvOwW*Vy1ZU#9MpFIZUBs(C>DWxeA6(FMbLgi2Uw;|Zit$RoLUfQeEhN+jwr|N@ z*D*)KebJ5&mf=2G_a8o*8QXKG6)3m6FE4i8r0Lj744@M-6Rq{{~LP=h=!`zxHTma zgcko7o~;t)#WS=)-#b}Q?%pxMe3Vhu%Vs5}BY;E9>aE6*r6y}8*{H^rrFi)}W4hX2 zX}ZZMI`|7tTJf8OC6h(Up+ovZ49ro}7Sq6a%`PjP9x}x3IwwVk1&k5n5?Msr9%)@N z%auiI^O8>tI<;(87OS~8xQK3WJ%=&H`?p{e7JUHBp!C|xdTAWT`x$1SwYutVE-AM( zteDi`B`=BNEd*vQ@c#I?NbP64o0}#_wNjmynuG3KOOex@T2%Q0J4clX^>WG-n>#|! zsO6D8Ts;d_AlfL!i#$|=oguY$PW?q5YI(F~DC5E_#3IiQ$U`@w0C{L)NrWNv4oku} z2;2=*H{&~!P5Yk*Uy(CQW@c!64B6MSGV9s2S3(-MS+%RJDP0!nOC7Ei>+>x>m1MXM zDAnl=aW3eG8ESg_D`*;8U=SsZg-%;12?Z-|N?4^WRa;i>H&|;C%?g7WGc>g1FWwJ} z1|Oo4Ads4d!nR5V>%Ivz(r>s9w0%kXoxoT~pPqH7A$4fUjtr28R(47!C4|;|B#Bd} z_erj`A(yeJh|*7B16)HAFRr2b+KgO(ymeqKl>3ioVY(<8{E(ZdNc8~7L#@nA z0eNV+Z~8hY(uXf9^R4toi!+w7rKx3mN;oHrP|jYb_KRyMA;bK_@{kpCm6RwHBbL7$ zr+}zuQdO)={)7dYWfY~R>)IPm!w7H<)h4OP6xuW1G_B^0a=2v3fZSA`<)KJ`Jk-uq zbL(I7P%I$qD~1DMKUf{4_&4kiW3Xj9hvw4m1tuZWX-DgeV=QyB3GnC?@&aLh&K%aJ zZ)BD^lTX3|3<-W0t9Flz1znu|bMVub{RC+A z6nGN4TtpIkREqEXbjgK5>P~iiazR;k2d;D-kW@6qCAH8^AT6Tjuzz;#^~w1;?AwWi zv8mo4G?yoYF}@-1c+GWw=!vSNUqfp`0fc?435*2R+JsZ(m0lEYt+O1;#XLmZ9KN2K ztEV}98xQm`eYKDeCEPHbafeI<^y_miJb@bP97O62OywGoHF&-U^dmAqe>x%DTqB9; zlE>24g*S>(L2{TV}NBq|6L4V8EpMw8GzG1vkWEymcdv# z)U!L(KJ~>Nde0_{U0r#UX0$Eam`b%z@a!52e|8O>1FoUasAt!Z;ibH##J{_StkTqq z4NS=i(9Mj1xh9JSBjuKHv~C48Hr-%|QwEw6!9dMJS326 zZkrIfYJiw;WjgIsl_!otVQHW#?|x@+wTnN>4}3(K@%Zmn+@R@%#=gP*&UCq%9GY95 z&+Du2T=AL!-OyT>+(n2>C&P$T(#fgyBlTxKBV@YZ6|0EvF+Wfr-X8}8bD>1-!`K{3 zLIpg(>qhHrX>7`|-6(4wJHQ?)e+%72$t#teZM)*OC225oStxvqOZ>*-7Mgoq54J03 zok}35=;mZ6UL&**MtwuJ1F(lC5a4fL{z_G`hud60=Y8J-=R>u5+zhBnze_!b{rC+O z)dR+EE!cnp#^ z%>YM`P~)aG^R5+J6F2hV*NZ)?q6=3f-oa-uTZG*+m<{0%n9Y0En8HsgVycVV?Ynrt z#Ww46*r%2D6mrkhmG^n5H^<;ZyRu+uKE|mUGf@D-J|O^uyMgUp;QEc;k0hqfm(c=| zE)TE_@K!fpSOz$=jI}cwD?_f^x!XqE_QW}z5GFNk(QQU=p@O0^Y!ni06twgnxskn) zsb*pAU6m4h5x+AOe){|k#T(8Z{#EA#Bk>+)%OaFoJpM|oquz^d=o-)s@vdxa?4bVD z4T%dK%JmM1SgakubaK4D1Xe?tfNscM=vd$bz%qb&W*IO6ECWi*w)|(7fvU&ihLi7L zHNY}pqXt+8`GQ!U8&nTeYa#7H0LuUcU>QIIEQ9Jc*r#eL?55sYfMp;Cung+k%Z`UO zKhNTv`-dmJ3BP|~89e%jxBbsv$QW=8{bd;>;~>U)YQF4+4uQSUBCr>F_q-Px`NJ}h zd|?@!^}MhQN_GL3LDe6Yfh%}Sp}3LSDRn4MxiWT5zX=FJ6B`1GQNEQsFe zR|ev~_@UwCO68~WjNZ514K5?Z$L&-QK{TpVs9Mi3b=7tU;mdK9NPgMUvug*dpZ(!1C=>s0gVfC?w< z>{>y)m~skRa4dF9MJYymQrOME@T+uIs`h?%a~w$vsu+hcypAAIW4GI^HCSa|DfXSo zlhl|ZSwbs@9zqFXIU6oGZ|zF1c1qSjGHSVtAXzj;;ZG4!{yhaA)YhWHX&tz8g8`UD z3ewZ%IEis?+jiIfjn`)q|@@auNs-2ZLKNq2xUAO-|$OnhqC~ZE& z=tp&Hd6zTpUEl|^oqla2zXdGcT}y1lMw?|Er+e)U zv-Ott5bH5gKP!=t9}Eelqqkk^%VF4hf0IopA}&nc)A&W^3G(@FVZ>VJ&IcZGMg9Nri0jYi|KG0`4LDEq1=Qcf z-;(IDYC@!}tKQbX*6K&&)cEq&hHnxlI2ZLRb-}I9h>ec;8fH6P&`wV@&9%TIo5N1F7h64wkl$0# zs}1@uHNq;Dp4HEC)NqSuIqF+q#S^9avkYVEpt3@|v!esUW@}re=_GqZ7~p21BAJ`E z(}o6amg58rS&Ndhy^nthY&1V%fYGUO8sc0yn3-g_1!g6ay#oiE>d+rSs{Mku8^}_a z>u$q}x5Hp49bj|WmvjQN12b0!{qDGjk5!CxY$bpom098+0-M`2fos?wL$N>lw7rkV`HHUW*w#cLzAvsH0}RGlTIUb^8skm zHV?hru_+vI#7yv92-8?*iAk_(G zK5fF(=Z_%Ot3EP?a1}yyE10h-?nt_-_1GA)X9K~f8=NlxG{;sjLEYtnKzHFRq%RYmE4G9KDY+n zhNn?=!`#JT*>zZ(Y@*e)#a%i2p0|-`Y^4+l5n%;&Q!_bA06yzR{YDRxKTuund zBm?QN;}v-oOP_51s1fYF-uO8QMS3x@NQ4<~>TyS*a!9Jcv9?MozAK~h<5na}_}F?h z<&kx#9#Bz~EKHlZ9yUeMJc^P-DQQW4_F#tedfaM9b9WZjKJx_)n*Q{CB?a%T6tahg zPbRqFG#w?<9rcZ{o6!}%kK!3|kon|@j@wC+>4w)$?_dD;18N&Eq{a=ZPcbIEzRvv@ z;(+pTl(3j0xK~}M2Q*UVEzc{7^ZFNHNc|kJ!DEjIpCJy%99{g%8IAV!kLy!w>m3)@ zQRynX;%7nXs$FXO8o3!dhst*la}Ncj5vGxqV$9!lGDMZwI( z`i|zMqDb?Hym7n=rFpI>uB3zm4SAWwjbhoixd2UI;&%EB_mvaGp@9m z_TYQ{iTl6^L;+5?xtGGk8^)xRB(FM2jGFd&1H%=S!fGPk@j{b0U9 zMpGe*ZhM>wJ7o;s`ac(Kad_o2zn_0R;LHt^J?cI^ueqMpv@Gc&YT}eb?w9m3OdTLI) z0{f38fWT(;Okn#M^KpisEFB=Q8B7kwA8X721U9Ym)h#kwCrW?h4GoMeB+Md;$=Bi1v4jg4&hnZS0j`Io>} zy!yuP1R$_&SG@0o0tjq_cM(hHj(RF!BltSIPV-&h+B#IH3u({V zQD5hP#^QZP&P{UOA++C*L2fyZWL*p@=sXPuf}YThHo=cR52Tk$Oa~^Psr!iWBQftRE}`w;r$PQjl>Q48Nh~pYG{oCRoyH6QcD1kgMT5U^PX#ousf*? zz@3VPw%dso+GZ6u6{k8=wAvlqD&aG2~J`#T^C@zdnJeIoM6 z6ssJF{iuk#oef2GDryaBe!GkEBe~R3?{;BG)l=`bd5GoVtBnQ6#48nYu$ko5-ps?O`jM6H*lR zO&fjuF8cuS0MlhN`x95=)Asm_=-)Ae=H%5bk)mBy$FKtZB;|(mrN7|cb|xu4m#n}V+F3v-r;E_0hyV1ufi0~bNx}cPMSpJItiD1gUgx|CSgULi zuFf?hO*n1`9(#)^+zgg_ZYc3PVZ+@*u}0&J~!a1B;p|vh!vG=S3^NkE4gP zR2)RmW3X5f|J>GT)ROku2)7~zIhA3b9d+8j=Ib)MM`@XUSt2$aXm{pX^t@s`a>i_= zSuxuXMm$n}jsf3=vV6hU^@61-u?}Hhtx}Q;$wW(-hz?C$33jtKSPg?hS0d(ptc&ZV zB~gB(SB-JK>?vbiVl;I~&xm5HN_(1SVw=v~VOlyF*g}4U1t-pf+Bc$@<$XSN7 zn(l4?R>OmQpK{8wZ!$c98trzNi#o5u;LY3s+>Hf4VK+-#9K+fmW{bs2 zD8Ao2%@2x(M|61Ey*)4h8KK)N;ev9UVmzJ4VZ9^q0%zAQV}PgYix=N6;h{Y^*NhB0 z#I&htbWxjVCxfCd(u`*WRE5gCo;~pW!tm_Cl6llCQ^SUbSbWc($PKzvG%s*13 z3Vt%Oom2cE&7^yZ8d3R`df8OUazlgCdLZhN(1}xz-}v?QZ1A*CafK!QCrX|4h<LZr=7@W> zO_IHmlrAOas7aA}kH5ooO8`uz0)BTj;(9aE`UGBgHVfoe4HcgxE~}KFR^zn`IJwPL zS?;(nWGx#MO^{;4(R`?83qJPi4padvxAavQ(6@>aoBqbsCH9yoc3sFWY;0q}Tz~L| zpZ$Ge1VeAwx0b{R*O;0&CVU$44ieU`MtMkLT=PE&C?&yZL{}d{s-LHkzZZ+245RE` zI*Ycf-G;fkJ=RP}UBG?xrZpe3bEUfUj5})4&={{z$+=23AD!Gx9=IR<2{&_|(dAwY zD%9NRL!-x@iF=j&YFtZ2>;wrkm&hFYF}RPU^G$Y`?{G!8wUT*MiCKW2w5F5%HJxF4 zBWZyivO0Z^=-bj)&97qKvx4b^#Y0+xQzE308kW6x2EzoWg}Q}Qg-f9{Y-%{uVH1C`stgGVBpDZIG*^f=Fqz?I7#2qlSwT)Haz?Vt zlHaqIDHNG9!#51ZgXy$?^2bCrysfCb%wW+18Jd9xqc-Hw}IrlrxvT(Mk()5kRH{7i8rszOydt^l`7JUXn&{D zOh1``YWAPzFlOy7*mfg^T>}@PPwRbukM`pU#gk4R`X7n zp1dRMI(Mt{0Xe#*2~wH4P>_<<;`I;iW?T6*P8uh(MF%7U)r1=}8oTA%Vq7PA#OME^ zN)$BMU>+J=sg_7B(S$}qp_MY&ZXY|#v*jL2<%yHF=5&(`;|~iBxr-$@Fh%AtGMD>c zN{TfV7yb5;k_hwc`v$@=>_~hryC&LX-z_880j}AYCzV91pIHT^(FmPu@=ATvz^Ey$ zQA0$$ypw&-I*h06=xq-{U;dfjP9t=-%jAkc(R-}xNZ+&KZRzP#6Mm9|-@!HK0g|jj zDvRs82U>F}<_@ZdQJg*|Nu5rJ?J!-2&8q3>J5R}?aiv&Y-70a_{&FcwHF<)S(O1i^ zVs;p&`NH0(e2g@^Yn+1RqK_XOKjhhC9Q1e05|>6NmkZ~HT>)^VZYB~1LtW}LD38nUD7tP_1a^aD|Hro=2WV{E9dEcZ@ip+S<&#w_39w1j;Od`s+9O*Q> zh6G+GWXEK=eZ5wcC?35{)ofzKfw#A;k9GO>n=rFeZ@H-nrpE~7Oh@4-BJ@It&+<|` zUz59c82)_Sv7v>Bj>o`tPAH>sw(fRJ#=ice4L^H;EUq$GOZg;}{$b&eYJO~JL3%## zc=M)iMmm;rskzyJ`n_zALKMcSG6ci)piDgXMrrGp`@S{5@JYsPw7l}42JGwK2`zal zsZB7|>#VwAHs*7_UVT8&AQn_o$w*J0kgA^ z<73%lDz+Z_=-Hu^?h7^k^37D4EIBtaYGN_9y}{g>;zGB=xjI?~dTC~)nIm_1=XxTEnz038fmM!iUQsX-NTeeG@5ZVmS;kFlnIqlcbCYpe^>4Xgzj0T6iWU|I;kHWM zav{J*(V5DSkT{9E!#}Bm>21QdR($%TEpCtgyXO6|Q;4qqTi7h)E%){BBtIgYLM}1T zoT;GY=5G@|LY%7lg8SL2x}e=BPh4Lkn7w;`#x*l4;+`=jN5igx-OH)@Wz?t zC_jG%1dRy8=#h5mpVF8cyL;8LXVa!IXD^V$md6+el>EjhnkVcj7k4sIu*A9l8M9v0 zb8VyCR}JGZD((=PY4CoI%F#subB#Z+`6{D#tjBWzx$%7baJb#$A;In_SvFw(5HyAUKYZs*>29vD4Vyu{zrA2(5EqJE^r+Xh!UUuWI$hRbhJw0)Pl ze488Ow8LK&nBRW z%VpqXv-W{k@VKLZcs;zM|H-O~yZYhu6J@$hcBFzQhQf75_ZDGd7eSwcH|VS&K3|A< zfGuM4CSntpNz&JLOlBb zIA_eM>U`A3_fQck$F}0%IG8b??!nv;s7ZM1lN-1r;w73p7xvNFTX(7LZ>AFNOFD|{ z<|Pu>vxXA|%QkZRBxbxUuco~CA?IrJ*Ey+I#EHkYaz&8RG3@KRLwwoOLm901R9h_mq0%LzW92HSYF=iK>))=HM5~9T#o~ zCxWU#g2W84F^ZKJw6wiLc0G(nJrQ6w(aMh^C5E0K)8y+)IkSbgsTtOM1M$2M#4Q(@ z=N48)7+M$O_LM=42@f#OIlg&EAI2Er)hiT&|DEIi?*l)^|8A6_3_S4r=XIZ|o(j4Y zh5!RO8)DF4PK#mbmp0q56jTk5$G7alq*JiAZ?y8wwB#)7MC8mj3I^sh0^X~A*4_@7 zRQ?cGwp#4Bc=O1ogWCYZnx*;)p%Zo$@CYV2g4uKq8xD>P>LN!oyn-QFA7|$3*oq zM}S(3dnQZ=WdZCV_&U7s;bI7;PsJchZ!y6{>~MglRnuHy9~Zr#%qEANAwIjXtK}^ufk1*IS;Mp!TFb$q%1LTm}`lYOk8@ z6)g{nEmce|%1?(pFuiK4{As6J7w}0^k!rahblOSBv4Du-k|@O00@371bWvVxsPnCb zphkDbrd0Qd6W;KMr*wU}kK_|k=gF!PT9YS+b8~IExsjQks;Mga?p50 zAG=&*n1FK^PP0L55SGIvF_S1YN3r2DQ|D2i-hn&~zzB;2%jA>md63 z{l+lqTe1!3*e_Mez0r7?k1r2$V`!igRe`%(>ObDy9RCl$um65@{{^r+#Esc=LP&9f z;ps!QPmV#?kt-6x<&aRkhW%g;!7_MC=tg}CRNOc>FGUs%foaC_N9lS3Hg>;Wg#JlpxT5~7f?V{8 z=;xzbP^4AQRIaPa3V2s3_Rg+rDdAJR6sT^#^Sp*Y>a||4uC*aG5+%}N*ubb)H8agAt`QND2<`R`ceA5&8*7b<3cb#cxsG~V-Zb)f>|LS21R&8KCrx|lC{<;-lMm# zFFSNlg5%;SVm?G_)P^bk=t*iEYbV)<-Wfq8hlCV+2#wFU>~oD4&7&bpvb>cGDwCnX z!P3=5#{*2d_okb2EM{Q=o=W=#(&P#LJX1K4G(!bZ*2q2Z$kxm_n`?+@@b3^pa^8|y z=Di-xd(Ezt!;PS(hbDoxVnk{PL?K}95*_b*buU3PIbV#4x^mJgWU@F(` zBjOZpxiC67C9)fsWVagZ-5DCaF|6Ett-fxiLMZ~M&|Nfm=iPBkPPqz2aLCkLFHhmy zOJf?SHwNY{{>H%9$hY)p3>0#&>jndf}(l{%agl!d+aJ}!e zg2$YpOC@H|A}WqmeHzkn%v<&h8g;rkH1`MKD>f!s1-H&V9G9Zm-%$2_%e4`SuvesH zaz|e`AJwkd?6250Pc>jN(G;M0a5k*}fMB%|fqDA1CsbI_^Vg3}k=R0~c=2CF#hwI` z-)OmYaCeqOK-s8U7La|oXiK8Ow#DU69pL)913!*XN%|b;$n8<#@e)asNq)FV~~_pm3{^*UotTbO|B zG^(@Ua!IqBR(vLtV=VF=N`;WKq-7+v8rNNJpsQ{aj&1LMJhendCVN>Of08u0;jw?!f(%J9ko^f{b<*V^8mJRxubJe7$ zL9isA%CCGy@z%J`X)}!LHhHfcVl?tpj;C=%nsSuKI;PRI>y5IX&7;|U@0d({(syrH zLU~l8e-v1DU)m?dS3%q>u(E_==2VJQmWFyl78|l5(knjxI(NUc8Qo97> zqLD#akXBD z4rlPSXJusuk&fvGTX%aDN+b|Y=#>uH&}skT5d&eDH_qtrK#dsLyt5bK>kF4?CHX6#YX+>_q#I! ze+jSGA9)OHE^G-@6Ume+CoDDYFr?#f9GGbXS@dF&%vQ)8%%~-dCg!x$eaWls4|Me( zLb!bWC8{YaE;bxyk9wgKzJ1o~7_yc+-$`LcUlx1_3N&bCp`aS1dqQJ~k=pACz$tRG zwGZcP(p&DRH?g=ECuUSU(3as_(rIeG$LV~MnTIyP)*1cbO*}%Z!7e&|I0PneaeD?% zmv9R65DO0awdbDk%9)9b??P(qtdVDikS$#9qTZNOuRHtHVpv%{Eq{?q0mV_C&^2XBgvc*iVe=w<8q?-ILBsO9qWt_Hs%V0$JH?VPHu*>wlu zrdYXW)jLA*gxsbGmkVn9BzYbP&__X8(F=ws`WY2cDXJy+#}&$0o^c=WOPXA*mT0CG z?w2tg@`w3^JIWCvUHMv;u$3C5g>G7o_DpZKa2hZ(=B!37t~v?3&zQ6Ae(wz(Lx;B- zqA-QFvtLi|tzjVct*v8@BBYeNHv*H)f*bU9CU;x|4-OEUdiUkDI`f;EuoqG0Wuk+B zCxITMA?~;_*LBXPF%FU&bWbDgN^#7joGg7eflKBNs7CHE-i#uuLo4r*tR7m<7$Ib- z1KUvsh96@g?};NVqq5b!Fjgz)EELfML0Rn3ZQ2r3dVYxa$mt4D>rTXIS^>=|sBjg0 zV2$PAOE__Q#W~TWb2RFpdOEU9s}9O29a$XY$)yiUD@$Iz@UIoEKZ7-E-9gg(!S~FW zc-9{|=6NI7HbFIZRNUvh(<;f07PJgck%NPt_GE}PtR+@I;V$9Z{nTAeb`34~q~>}C)caYYwH z4#YqWsK`gBuX1Oh66`_^u(=}>JG^Cx?t=ty#lbV4*N#8o_!q=l@6%Zxev_<2-36?< zV_}L#UO>04{rc`kbt=4|w1Rj0Q|h6UP7(9gqJgf4^3(zECj`^WW_|^=FL8Uf{}VH3c0a%8?-yk+F_qKOcc=&qv@gwV=6SIijA|cbni9gz}XrQD?WEh30G%hc331 zIWwR9Q)4@?PQ^0jf+NDu0}RPN%j!Ic1P(qQa_dv$1GF2$tIETN`y||JFM~nodz20OEB2yX)VFuP?8~r=dzKIIfYU?u3apCU=+^W%ud5kFO)|jDO~GYeEDF9#4ZtzSF$IfBOwON zNhE1PxfX=iVNDY6H!yanubh5zCVRv`r+(^D@)XzzpC{Vj?9X-`;gYKoXAq`O7OoH> zLt2c<;pV-f#9gROpmDcTL3#wiFVF9DS%OBzGo=^>&v{ zR_?9KV@ii+ii~1f4+;NLM#cC9UOLg>_URRrJHei^TjjCny1hW%P56`-iD3r!8g-&< zX!rZ4kHv>om3o~E@YJ&c>|bB>e*(<^vW?;&FZ$m{DImYZRl|GlWF4_%pCgg@Qpl0n zlx~|&b}SaJEGH7(u%_5f#zv?8F-n;NmAjKo^9q9VVIDuiAUzh^@k{t}q)G*q3c@^q z+%iv7q35{|^yU3#rIzf2>k9#e4loV`~>53*RJ^I>iz_wD-<`3 zUw2*!)oV-*)Tb4~oiy1EHlL>ALDoG%(3z$$`XK@YPcf%gJ)N4wIM-l!#6VEMik?E* z?{tbEc zC%wT&og*!Yt?)mV+BF<<$7Kd96{FJhkbT zeQZ{;{=lOD+(7CNgmXkZ8Vi?yGzOv$+I$YXKl40v!WyV$-ALU)3*L}6&eI!w0Ihj} zi(lsqV2s_rJ^j&=zEz7RH^p!_MLiy< zc`+P)L>U+}Lv|c@c+*}BU#X%BmqmT|o<*#@N{un(--rj$qRQHnn}*W(<$3vOvdnOd zvHp*WBrS*uk+rov8~`yC%21-3d22MP_ECN%P`q+N@&$d_lwFu%#3W_R>!u#Gd>Wpp zOu_I0M;6f}e=G`1}kzi%DW2T9SDy(E2 zzJmo-UywcfOX2^U%}T*=SfQ~qEM*;W8lJk%;R7O(YbAkgjlFkAdNz7`9|4EBXfqL^|mw{ z@y)Jf-tiKuI7XIe*Ipx>WyC~_wPjMp(KZXV6Sf?4rIIaiJUgh-KaUJm)nf1XKn$zS zI?8jBD#yKcifd@=K^bqDQ6)@YC zr|n&M5b3IYz7Nho-k`%!CIb*Z={f`wmQtK@?^2=bNF$XcKE{(_u zw;xt-?cs@IC%_ADum?&c@Dc(%5vo?up0xYmIw9kPxk#N@DIQgE{t#40tr1eLH{FrM z{ZF%Ek4&9hnXR;opXXN*$I!UUFNiR9Lvpyd_7ve51=5GeZHtGpU)n7^VzOa219ehn z+QTE#7I49TejHPBg15;v=KT}crZwlcu1LaZjr;qDNG+nWjN(+8UQ zNAQa-BAt@VGO_ezaAMN<|p`!AIRFFR&uC1hzcbI4D1g`TXCNfYQG=od@=%w2K&GhOQbu+QO%-4t=(^nYQ7Weh+5QJ4*Xr7-sAw5-0i+a)TpX-6CPeOtY~_L^ z>JtTNX#w}}wwnxR^dW|l=J=OP(sKW=wG!|tqrf|dts1_zOww@Ie6l5aY{ z#QOY>SZ$#l&xx;C;n3x+4xO|Gm>%#nPRuW#kyH$cBr|*;hM}_hvMCAX6W-N1#sY+1 zxw2TF&whJm%a6qEDCO(RX|ILsd~%)fv2!7MSX{T%RwO9@Yq*7SE^f&^_-?7g~&`j z7N))gj|>6x?uWcsW}7@u?AFy1X$Jj-v^5`=4c6i@1~1O23wNyQ(RC zzV2oBVVF%*av{YZdC~g}9+gKh5Y-aNVu||zGjNC5hmI=ayL$LMN`9p&2N5}k+uncI z@Zl7hM>uFx4=^6U8*f{R>QEPJ%(Js17>~@7HGD&!K*JmwY|izyL@H`8bUHN5AnRF} zXlS^cT|E=*E`X(&Q4cDla6ASJip`Gw60TR)Vq1Qi2WndPy_ze6Kn(4q&qVVbWtxGH-o7drU(#@&Q;G>@aqr)e*{`_G*i&256W z1rRjIQFQusE>Hx#Cjrlh@U0H6dkBZ*3JxL2CW#o=F9ifg4usR@FM`>0WXp%I z4qu^2-Nq4II*v>krtu`i72E1d^7b&pCQ{h|L;{tDqamLVd}a__-3f=iUU3z6yA1Fy z?s<-BJP4;BzW#{|zkCIPbCC=p$&dK~up1pWu4uBSZ;i&6ur#I93>2T=Y8lq9}%G`a|~1H+>B;^&*+ zHvB%{-#_e&E z(jO9p0}&We(vrY!XN75MLHp&`fxP^K>6-I}*%0QkZBUTX6rIfZD6TsQlJ(om&S|ne zi2~M%bLrW}P5)!y{5psTar@{}>%K#?!Gz2&w=W{Fu4u_OtcHWc!6}=ZTMFYt{Md#sH(vXdaz}CZzaBCsm8F{2A_f$X0Et!p56l zUOF(F(Xy}>eALC5Eu4>StcduE497*Wcgf|ql7gU7u-4ffaV6Mf(|#I-Z4XqNU=1UI zpBKCcE237(3QUH_6(lk?oK+l|)zlGt2d>G;nd@T5cdjGBm+y9kTCV4k@iQ_76gY8@ z#H_#G$Tj3{h(fNGc60|#yucbCJvYyBPRUGtkE2S$HA0N!L5ZVL=;u*Dd1v^fJse5R zy38l}Gv$u@+^-=MD(WZ~{9JoWin_KQ`?PGPz_B<|l6(>5Ji%S@esZ?#=UDE!S6EQmld_7(GxVXLXBF)+_WQw&mp^v+75`Y!IEnM>a)>XM@?0m(XU0PdqU;pt!lPB z4M<$aRX_n=b||1J9sa4rTDXN!K=+7WIH1qA+~~EQEz}QI(NHVJI60W zJLD%Q2N2lQ3~-^HE;a_g$gu^wVCFK5>cN?~hmRPjh)rgTyP*tbOJo|9|kbbFP2#v@xs`wZV`Z z%eGkceMw?^isXwZSgTHHW@ggU>l`CW&jJyt(V*FOr6`;<{vB{*i!?ADXNA$}P;)Og zGK!oS!y*+6y}yYXnUHPuYFvT}RnT?Q#s^UwwfYW3YDSb_ieOhH2PVFie;~CrRv=O< zo`c+Tq5d1Gl@3G#io~6ONNsh)mK5TjNX_;GsV#gUwII{-e?e;96~1Dxb>*kY)g|_t zBZ?i|x#SUzuz|TJc*sS-QA{jF=r5!uCJ$77iC8WIk(xD>+J(~+Yvl)0Gh!CIiKR7; z2RMPfPzr*J#4^PY$|g0+tr)IbsjaM)Av;;=8ZP5m)kn$WgqjQx>m9;bRjY z%dwkO{a%riJkVnbw22Q+D`O}!(DX2rvoIhvIZuS+7)~U5+ZIcVr%qLU+Bb3LttwDv zFKdOR;jHL2$arRvzAT9Yu@~QeD3s0)}2AnEer+rEr=r$H)P> zi&0_Id_R4VU0f>wHH_^+oW-b7`t!hn&@>2#oZStErYc0#L5=D}ajM3S7!3}@S5Vz6 z9@Qty0mf^&yL1aS&5LGKBChsO zFbKb5S6c7y%>v9dS6j&$xV9;obtN-~K{sYnTTs|AN%S0J<{JPXB_`21%Kr!6T(>#}FOH5V8!p zQj6reZ7@CaC~PSc_RS*3Xk7}jI>%&+V?Kx0`ln;FSr4%f##GKKi$V9!uB%csi+y@l zR2E+B_U|38=lq&@DGe_LX%aMTQXYxn7}j0^rBuEM&{gg$7)u5N_wl{S`wBH_Nk`;| z^EhOu?CHvDnOJx{d2%qA1Gz}RMb;pOTABW$D6~zKo3Lh!2xmPlztQ^D|10fGpq8^` z=~5UJ5UCN}S_QS9*P5?5h69n>U=L?bhesyB$fH%bnxeaC)&(hGtfhfBnOXX?7~4i8 zZQ|-OX$MmCpV3!x7!RT*ehUl#%-mTeUfNuMbCPhMjw2*OR5Q|!RwZ&NyVyAkPeA58 zWk@N&-AF*-NUt>j+n)+1=5rh4hYs1b)f2MU1|!jS&i$Li@X`!{^G%~X)nTN zDsd}~p}L_!2YlnNgy-9fzLdc-K8gzwq69!e5dkuPUwRR|cS0IDg&a#Y3t6i@bT(o_ z_PA2ovXXmg353!?7n!&A@*k`=GObjveJ~`nD*|Z9z=ElGdt0T1b~#=1Hp#5%Bz0dA z_#MV#exrQ(l@hE2!1W$-R7ir;`dofXb~phEq-kI)DJ3+=<+CmT64T5ya$(-B&Ey|U z4HL-JbmFwBD{18Z$9F;G(C3B&)qgdGS>pYw zKuPEK4n7&#<7uVKv`r?i24AS0?a9-_zGev_ZG4A>J$JZ;_S6*MfD$wz^<%;0$+g+}gsB;m^OMoxfdSY`#6>Wv16mhIcFdLLpGx z@p8LNDrXziG3}GJdA>ww`!p(N$tA^f$uRSh0^olMK3NXByXDU)uE6|lbAEKgB%WK( zjoCf@6=La0bGt>G=zOG#SCS=~fT6|+`g;!nl}k!=+zuF&7gnm8q;@33$jV}hlucT8 zV%;(F8$e)g(8Tl`x6hxOPsN4FjS}d-ZC0aG&g}6M)I=y|DvzO2B||@ir83H7zl3i6 zt`g_vG2tV+Cry;+zno;xrT%@~i!au!{?h7DsJs(xWyx1%BTI@#o42Mqkg26U_>9k} zKFHI|EO4RdT#vk2uwoWxdvHiK!|t{ImzQhyL(N65BsOxTX&O5&eO{LVlw(_1?1`uZNWIR2;EFhZwu(0N$u-cG zY{zkG-vyi%OhjgUM!3e?039UzBd$_(J zzM+XxeD3eA8iq$1bw0|g7XEX(AANAv7i|y?m2rqU4E%P zzxxT>A#Ag{_=w00oo2=RjhVF6nX$Se?3*bvSB4oT64fTuSwRxRA5Ar8%4Z9rXJ)>L!yV(K^~wZhj}-%+NHF< z=(-GpIKAKvYS(-Nt@(r+Y&~>owze&Li@t8Cl!&5?OM?Kuww5V+(c}Ap(YXJ{XwrXS zv?ba~y#9?~JQsoM_RhreP10$i)3^hieWt><&H*yxLrj+^yJp z@Y~`%-D??)+@!McBbt`*D(?D(O7b`o2enD;M z3CXJsq5#fBrrg2g0gSq!K;@3P3^+|#6jL>@o&cZyz;8@StxEX_isl>GJ}bT{i~Q`i zjsi)H;l56E{j8=(gj!Tx+@;SMv)7xU&F4t)%a^~7x1^CUGGTxNUCX~wwEy%m)BTsn zTlO~pxV4N_0X8Xqc(NKcY_%v8>=hMNEy8P5uTWI2sA>zS8WYH$gp=BK;(#t@cPZ~H z`;-Tgh`(LT-v`aVMmpPTD9@I4tf#W@IGdff*8d$+L^@?g&r__$6eE~b((S*6>eGyK z5E&9pSWn0O73Y|~#>0H>)J|(0xaNg?&T_-%GCVzAcFqdBwmMnOR09{3Rbk7fJK&6!#DY@cUo@(waJ-hMIzNZl}LYi37&0XzJkwn%oWz!KGm=!Re6$clge~7 z(VPA2C@Kxb)r4}PaYu_5FCN09TpYNJ`@&(bOZ%Z4fft3>%})p?2O z+I*>dMWuB`<=2YNIihYd5s$$d*kn~K>4vYgTBcBDrF2ZFurdsuw|X0;7VSlofi;#@ zW#Zb%cL758fir~am8%8G_byBBkSHVavm-QYa|F3Gy*T2{HdCd?rx1tXmooI1%sce< z=uXJ^l$v7Vy<)rxF={nI8U9}|4O95?Ejrw^d%-5z7SipN#CyLXkwYs0CEqD7ym(nV z+sEDP^skoVjPLISu9XL?ljYv8Jq3*<$Ja(A)}*4`SJ9bAqJpzkZXUDs@gYmuCo$)( zLC145Dl%EOv-Nt|jzx12jlq&HjIW)7sJllJxUirA5KL0uh*%U_Bz)Um-tQIQG=O0p z2L_))4zlkN0(mv@U75)2J@)_`jD=~K>2INmu?|0Mc+t#

    T6)*xVzw%mMr%X=5&T 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

    yA*q{6vt#P#4~b(eROp`Qj~UMHXAZ!TwH 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%0DAtDJ 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±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 z�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 tG0K8O1X*a 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 N+MgJX{D5NB@P8#948Z^Z literal 0 HcmV?d00001 diff --git a/lib/servlet-api-2.5-6.1.11.jar b/lib/servlet-api-2.5-6.1.11.jar new file mode 100644 index 0000000000000000000000000000000000000000..221d34a7c27aa33936dc7d160848997f7820b84d GIT binary patch literal 132417 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 {$Ma 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 hm{~8 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 ViNW?^0egXYKJZ02o={;?{s$ZQgGvAZ literal 0 HcmV?d00001 diff --git a/lib/test-only/mysql-connector-java-3.1.6-bin.jar b/lib/test-only/mysql-connector-java-3.1.6-bin.jar new file mode 100644 index 0000000000000000000000000000000000000000..6ca54ff780f13ec19f40d8d465ed1cdf8940ff64 GIT binary patch literal 391434 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

    rlVaCc?oAnm+oKof;Y&mhVJ{7H; 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ç((Gf~{v=S?$cOu^sdRT>B&wMV=(6smF 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

    !*+PsA8D{g+}gFC0^F8K$yFFQ*Nr zQMc*oF1I(kdl?WQMZSG4yp+3NP_=&=2I55(bOJw7=l%3wP)h>@3IG5A2mrgBmofH( zBK282007B+0012T003ieZ7*$kb8&1hYGh(#FH~u5WmR-(Y%XJLVRLisy9ZQT$M!Eg z=S_;8E(aBBwcz#FpgMtqwG-!4Af;lWA3cZ$Zl0N)Mx z9>Dhkz7O#IfFJPS2QyJ2zAFVH#5;z_-ep!0sglj z-v;~+;CBJP2l#!!9{~Ok@JE0@2K))&PXT`h_;bKt0R9s2SAf3;{0-o50e=Vhd%!;c z{t@s`fPV)33*cV?{|5MXz<&V#6Yzfk{{{GOAP9&7!~}wY5Fiu?1L6S!Kr(=20?7iB z4P+FM(Li#5NGXt6KxPA(17t3cc|hg^SpZ}!AX@|32FSKRwga*~kR5<51hONLoq#L? zvNMoffb0rnF_7JW><*+1NI8%SAeBI>fGh!04WtH0Es&)^>VVV(@dIf9(g>sp$R0qN zfdqgAfwTZ=1=0p&Pay3;mI2ud$lgGf1K9^i2atV%SU@^~bOGrG5(3f#q!&mZkT8%H zK>C3U02u@l0TKl=1Y{+U7?3!S1dt?ko7>01#%paeiau$%Yft&;6Tp;HGIUmRcKrRGw5s-_4Tms}$AeRBT9LN$ALTnh^sA0U4L`5Pz#Y5+BXVxR;l1tyMcy) z_5ke#+6OcYbOq3UpaVb$fkuEvfery(2{Z;Y4m1HY33L_E)j-z(9R|7<=zc)=2YLX| z1A!g{^kATe06i4wVL%TDdIZoTfgT0)XrRXcT?ceM&|`rf2lRNLCjdPW=t)3N26_t6 zQ-S^q=xIPt2YLq3Gl8B3^lYH#06iDzc|gwxdI8W2fnEgkVxX4*y%gwWKraV+1<)&j zUIp}Opw|Gs7U*?AuLpVq&>Ml?1oUR0w*b8r=mwx0f!+r6cA$3vy%XqNK<@^6572vo z-Usx4pbr3j5a>fd9|rme&_{tj2J~^DPXK)q=u<$S2Ko%pXMsKk^m(8!0DTeYOF&-+ z`U=ojfxZUxb)atmeG}+gK>rQ&ZJ_S}eHZ9^K;H-Y0niVDegyPmpq~K!6zFF_KL`2+ z&@X|01@vp6-vIp<=yyQB2l@lhAA$Y^^k<;I0R0u{Z$N(s`UlWIf&K^RUqJr`hJYEs zOkfxo0Y-r_U>;xqECX03uq(auY&Nhtz~%y*2W&pD1;Dlfwl%PA zfNcwGJ7C)b+X2`@U^@ca3D_cFI|JJV*sj191KSPQ?!d}`l>@5)Rtc;M*b-pXz-oZi z0$U2K4p==fKd=U1jli0K?E$PASO8cMSPQULU~Rzm1lA608L+*8?G0=>uzi4a0NWRs z1*{WT7qD(%Az(egdV%!;3jFA@0PH|u2LU@6*df3U1$G#)!+{+E>_}io0XrJlF~HUVTMz75V8;PF9@q)M zP6T!mu#^{{nUzu+xE^0qjg*X8}7K*g3$?1$G{=^MPFe>_T7{0lOI3CBQBP zb{VkCfn5RYN?=z3yBgRvz^(;$9kA{Vc|0ecz1A80TJHXxr_8zeJfqek%Ltq~P`xw|K zz&-``8L-cReF5xCU|#|I8rV0$z6JIju`!3- z0rnTLzrlmRV}Qp54+akb4+Recj|V&eo(zvC)8ol9PeGgVgA3?KoE+>qA`EG*FZk2vojW26}A$g?$p%2 zz5a0?j)>K6hGkT@H9QdR?Mu`~xOY{YMw~xNVQZ%Bau*7 zA{>qEti~5DqC-4k4G!(Rx$WH?wrtksdK<{o6N?U3SOc3{3I{@wZcC^rQ!q64^u$96 z1JOiO@iwGsj3FNEctEfhPRJ+Qr!RAWTRk zv`6@C{E-!l4h$@b##URgZa(ue19kuRTKwNupxA!b0v-2pwHsVLqkF7)qLLd^MJ&Ys z8mP2%b9%0=t#yqr_<4UEws?n0F0-l~7zp)R17%%Zp?JJX*sNgd5?exsLl!qeIv9;4 z`Z&n#jt7HoK2llSA08MGJ|~3{!u>xH#$F8RizfN_Y%m;2imogk;=9Hbo-LdpHHS~n zA$LnpwDp!Is!gBFF-@y|^H*8EdR~ zp9*Q20lti`(2}qSMWb}gnJ-wgaS!gz_GEiT@ewP_+UskpYl0rn=xk4pC)Ysvn~x&d zo-rP8w#Vlg%X)LiIMF9YPE8Vx6?2{Op^6jH;$%EjZ1Eo3$Wh}%p{{UG*GM_S zJ;lR(@YR;;6N-p%&O6O?_~OZ-p=c~IzgR3rqj4c+qPT=>d(aw+i>_8Iw1{^!=kh;O z(~UdUn;hhVRjug?4GE9+c#5(;6FrkWp2^vsV$YOp&s5Jeq0i~ro*AB*9#4sQmS%fq zc_#5FoNh}(fwTGio3vzm=7`;%>zSABneQnzP|-iRnY*{}&TP*D&sN;ac(V0)w$Ao! zF)-0P>S;+ye z@<}7vMvhZZ9SembJREk9Y{}8XRY$vdZ09bP-4I&c6HP|C1-n?Ro-fg{G}lw$$P& zQ@X)&X}YbH!53``q}e8y*w1$(VF_1oG~Uz~4MoEIkW%PsPjhQKh}ZLiOgR4-o&wX% zx2m7#NM7D_CS$$AeT4D1hc*GnyLmq2((U9+N_SUWj_@YEBh=F zaK^ja(srrAmHRf+uAH|a%6&E58IHyKMO@->s9(6TP7?OVJewLh#<&Jv8TI|c@O3dO z9*GWHYWP5vy^1`WN|!k`o-n@6585(dS&>f5N{FLDMt}!WZnUwG&Y>=#z@gLfZqN!3 zg~Co&vOkSgM0(`fBy#4YB4<-5CJrX!+x{VF(mF1Hvv+||ROBIGFx(vp4ciHC3t=j|YD?*^oR_JcmbjT1 zU-b|BHdf7&mMOG~oY?DgWwLHweef_f;0lvlh{7OBZmu_BxOxD;wSw!9YecuD)ly4% z<>1Pl>Z4aY(rhVU4Mr^&Z`qL0gHOU~!qix+t#DWvMXu(riAJIW$pK#Fi)9}~quTgU?*C)wn`JUu$A@6ux25R@=bwNjaG$x#J3&ttR zZtX_7+KrN3ef$&|PpHCs^PWVjdWVM+!s&bLf+8#o#wX$QDqR&rc73l8J2gD*i10Yx z-JE6-WeHx^B*ZQ`x~So9(qr*lny(u-SCgcd7UjuML~L+4CboB6iYHBAf4F;IYGP-a z1ya(E>QFS+E6*ElzO>k0wl*p!%5l1DWUM06@>qq%HQgGDb*Jgu=ZqnEIwX%c`zGUY z=`A`2`lIo#=xTB9RV`_ujN3%GtRD?l8BmPODR#;LF4~xz4unPJm7vTAGZ6tfb4a zWXiUrTk8-KRj2(rF^t;FvXzNwr<|ycW0e0@Q`EJ|kM({R>%gETN^8PV$s^nBLLn3j zt+L!1f&6|lC&(|*U!(C;=YCO2D!Y{hLl@Wd?7>>yBpO-o@NBH*2hFb3SPKeuVH&mbO3cE%03kMnyrr~vQwT2^IJmb3L z3ktIw*yQY==m_>j2gQLp&uzRN(VmXLkW?xzQ|_^>QCZirM)eS%GHm_#Ck5X!!B?(4 zj+9F$!{wEZZB<%bU6#v3%et+8!B|x$<4upPn_i0tqrPP7Hm%MY9I}Mel(V)3MG{gC zl~$}H6z>S|M&T*ATsVbOlE-)+2@S+k2roq9{5YLVA;B;|Uh(sKDhn-3#$;U9k&>U= zR*2IEE^lxgj*lD>XB|@B*c{a7*p?MM&~`M55H13)eLUp_iM*!btO0lYs<$}nS~09t zX1R1T$6feoLR?@vo3w;)h&2#e>)yCBaan80+W}WB=?V!?#O2LW^>WJ82}QhuNv*Up z*(uK)I^N;0lpjv(?oOk8E8cdyxv6 zYMtt=*^2asBOSGo0rBb+S5!KR;e}$SDxl@fW*@haerXV@xh0kyTp3PXX2kn?h5nVh z_*Hx^7;(KMQf5eooskz$3+f`#H7-Baa4XMN!>-U!A5Dhit9aaV=Wrf=MK}wETp_8M z+t)CUNV4R2f(=(*grD(yU2&y$r8STYCtPz^Sc9FhaCfg=0;Dpf73oU4Qzy5}@LG3p ztcdaiDZ-%JvTH1!aNP;EYCyRCDqc;*+(k!{pZW%6tZ+Dkp`R)#Fl5O~KGR%{T zs(|Yygop_8K&cZkPf9UiaGIet9Eu1@^eY>GI3lkQ?2mzHkBH1;bjaauLH9QarivmJVS)W`J8tjb9+cZZ= z;n?m{J7S3}qbF#Li@RUv3Xh-dWh${h*ID8%YDC;`xQ4L0`SzxwM<5aH>hFsV45mh{ z3x`&v7TL14ua~=dcS_J@;$A7bwr@C;!UEyJo)D*^1F7&|HqaXm#o{R-7z>L#*3=O$ zn2dzut`l7-nUJnq6-)(+3M+1P^1#p~_q;mb_TNC4IMZ|v^8%||^sAQ9OO>G&H6r8S zilrjARn*Cv#EFm1RxFwjX9vMiC)w)*L3geekx#}?Tv0E_k=0~{%m%okQT|o2U%tJv zhIyol$x_30*%Iv!MLKG@!@3N(GL(o#H*vYZ>Tpk@gV%L2ne-ips^Rr}G|qdw>k7ZM z))H}9%-e&%D-*$@19~QI`s9$c;zY!1yZRF9F=9Qa;>T2u+mx;mJF3*%tCid zQhWoUvL$B69b74DeJoEUw6Z0T(m`c1-e*NbnNBz^nyboWvy*|;(U-SZ$von-B^0wo zM2ZQo68e@^#V99m4@Si)f3*GCZw*Hi30KOgToL9zlL(8B749vr=Fwz`?_hk>Ff(ke z`R4~1jNgs$?2h*N=@nz z>)3WZPsAZPr!NKiLjxjy$uC&BSox`au$EkVR|C+y*)CsC4x=I{vIVKsTh3d_c?@ALQNMLyvf@>?}){A~keY|SxXyP@7o=(&!Jmo|} z+KmI2iZG;BMXFjUVXd44*ZLg;t&Q2QKX7fMJ974^;74nl>!jTLDHqJ2>Y)abx~L7P z50YVNna~zq>X(00Ypo26+&#uVAaSeU$JxQ5WX!p7vm#+p!Hv=iXt0toak!{c3a^t2 z$MQmm)Tzi*S1tcaZ?9|IBwN%)#n(W@OQdG$YT_y7<4@TswN*{Se4B>l`Hj}KwEJCk zVL;qhSPECYTcj=2wUxQEMcry^1wW~YlAqM83#|HD5e&QzM>rNvga<8|YU-s5>zkyC z>gCZ%)(?iC&*U$wl6-Rsxpe^QU^$t4Fh29)4C>nGD5c*7i#ab>HRq zt<`a98vaeM4%xw-DlQlI39APz^ZPM@TJxIt0cR; zweibn=Val5Zhp9kkGL8MtqOOCqGBRdCi!KVZst6 zy5D{K5nhp$F%R9J4LflIERiQ3;Y8u^!UL}gF&SXqANtHE8gKLs5)+CLUKm6*U z7^K@ZHMoOqQ#jFOg~huU($v`C-uWh;uf#1LX|nsNF~k;(O5K+X$lKGVcGV~Y;2x5_ zSu9ei~d$>2x=?P9Ck=Y+s;RFoeiSXL9JML{DPmdfTjw<9j$DL>jHf=o~ugEUDJR1qgABTleM zLMp)po7IO+{4f|x3SSPkx=msz-i@8n?=FvQ1vMI+C?n{UYbJsSAAG+N>V#i?;?|pbg5B z56g|xHdPr-$}1Gt9cXXTb-z{@j_@N|-1YvbJZ7z3YdKd+b{Q3xznGAi?pig_QD%k3 z1(2@2>Q#9`+SED4sXdoip;%NbuT5r;wk2*uX|vSVyh)o%|7|k;w@EW-3yd%}e)1RP zA8jvF1x&krLESDj#vfvvv-HsI;+wgoUDZnMm9j&X-LcBoohw3J!l)Cmu=uuW>1KbkGJeERszD4U4y5Arw5GAAwl~7#qFASaN;dOr zn9ck?rj}=cc(OAtKl0ONsq=mNP3LFU&`?N(pSl0luWX#3&@k?Lz48|arD85fL<9Cz zqc-_D5ohQXm!_Nih)1brli_X1KzW;!qt!r#Tl{GUw;Mi1OWgH)8ZOi_{hjbletWcUpKqE$)9b=A4HYb3SD@5HJi6|)<`}s?52nm zb}3g|I3AGS(GRX|308=~mWnZH*MR(i2bRCO$tbmdI>B3V>}hHv`bQDKc^a&UbhlE; z<4s?j(m?7{>6Z6>jesLsX z@@TOUG5_4zc)|wc*?^#Jt~WzIW>4_q4JdP8-X~KxZ9rLdH=*p=x1&)ex(|)^&wUh~ zbrZ_bKyJglN6<0z?jaYT%z1bl|K(_ZF@tx^M&w;Y3dw9SN+I$3?B`hfnP)%q)l;(- zs3#vu5M&3MN9Wyh5t_i8#@S7IRJI*Xjm!W3@J>|NUP!o*8`1cC=icDx>OeG^>-z#k z@P&xsOHdZR0(tROr~qG$CgW?+Ym{p?~qZ*H+%91RJ<@VkDP@v`LI*YM5FUF^D>UG7G_?K zvLqQ=n0Y6f+Mb`e5lvf^U6_5toRq>Bqa3dAkGP^gL1XZzT+yGSQv4;FkH13O;cvL2 zzeDx-d(?`5M4k92G>CseN&GuH82^b5!+%SKt>tDthO2&md;nKdDc_I-xgr>vk6Q3S z9P^+mv=|@EF+lZbAwGmt8K@P_!-wL-P$oJUVSG3~f{()0gO9{VAtb4zIc7-e818+h zq}Fi?OKLqnma9~#__+U{sCc?m@r=!?n2bhQBo~b#V^9I{p;D5E=97H19T|tJ$aqvw zCZJX_5p|MDXpj`6B$-13E?J0tWDzPPi%}8T8BHR)q7t&ZT>4_Z%t?HoPr;|k0J$~(7hf=v)M?V;1a&&6 zOi7)=Da_}ZgwNzl7vi6V&)%%~V>~xuGNEYVKZ!qGia%pZ;#YC;Yq&R%>?~$BHxWekM? zo`lgZq+c#-h>J1BUR0(K$XV2G&YtY%?8$ESo(M`TnMmqf8B_&zku+sNUCb#Dmu(il zgfAY@_9zoy%A-Ig0(_ayv)ewdQtI4BFL&ViH=_l2qOEvt+?wahZM@rVK-;y=_HM6< z9lQ$_v7>h&PwIXUXQR`i*h&oNw zd;N-N@HQ%)+l z=6O$4#7UYs*?Wp2PSwP}yr(JRbWNP$JyQ{9Y2s|}If^*fd!8cB*TekYE4^1K;%ZG?P!kV%A6CR8ns`(-174e=X-uHf> zhz~XKk@sUoe4>d@y`L%Kb4`5V{ZbKMY2s_|H;VXH6W@8iSHusR_|f~5B7WAyFWz4j z@tY=o_x_=XKQ-|m?_Y}e+h-t2`3xgPnmz;DBuSCfXE2-e_zbYgj1-yaGqP+lTa(=6 z=h@gOhZ^lrIW~2hk$W@Bb^@)>7(?zxqua61@CIyFUm7x2BY7Ihr#4a$Xy=lT(|BQS zhTSlpH+cPlcD|Sifp+FIiURE(@ArXr@EH>W?YT^h)}G53IEg#Tgzd#kuq&7$JtH_wY}!t!B(`lTyidyoLfuI0?E0J)bzGW)7vRc zZ?81HqaI`@Ex;m;?3{+|l7{T6_kOXQdN+;lPB&3#na0bvfLG*drBw=B`AIIJN-klE zTtc;6LXBENt?st;f3I7eUPrw~{Aox-?qrws`iw@gjea?FlN@>vKD2kK8o62Nbb`_; zx9;2wVcxl!%D%IdeRKZ|@W&{h5#*22%Gz^$Mhk!B`ixfo7~?bA_`~Zn_T&$r@Pzi< zu|A`nKk|IWGXBW-8GG?ZfzQ~RKgRit<@{0TGxp(+@jj!2KPLE$efgtEZcFY&u`lhp zlYEAy7uTtmyG$cpw%7cjf$ot&NcZW{NN*a_mxhGXkQK~E`lVh= z*%;N0Lz^_N+_W*4n`sXmm(2;;oD@#{ncT2dV#EAm!@TFI{aUT|Ym(frL-asvw8+C6 zS*xvfKRNRL8b3gD9;lIn(vX9-8y_P39xA0eOxn@mA_^un;}QQYNZQHgn-`u)i-KvYK?y9c-@&4JntNPu&_IgfE&f8`dM&EGS z1W7QD<^SYI4;Hi^6=66edmEEWKMX%TBgux*tt zyY^@=fLY5SRj~0DEkD+2FOXQv!8DZ=!Aizg1U4#GpEK1{-v~FAjVu-9Dn@%N)16Z_ zm8nq^@J$gW`wg>vDqXVV9>r7fA8>tVoFCat<{Y!+p2VN=A3%I(?6K${#%J;$kX0w8 zyU6@i&={kUCKF~Mqo3-m;OoE3T3JZoV0A7O-(DOY!tt7z2Ia8X-N`z#i|tGf>#P(J zD&9vF9J(cV@oA7f>!z-`TrK7jDR)34%Nu^rVr)d75ypb^ zyLX=TApGP%K*c6{FWP&g8F*90iG#*pV|I;E&Npd<#pj}SJ*=4RyEil#eNkBIf#SqtPiDY@*`K4I^W6GY>}iRS|7>Mu3bOn z%|5U$Y=7evMW95-)N7CC&Au=6pU=v^^!u)sjhe!rrj7>1Aziq^C8W`^WE?(yY6B z-gj#5-^8=(Hm}L`iJ@1%mVQ{II6Rbe@pge@H|o;)vrRKzzXec8m!Tq5T)s<~R}{9Q zq~f#9cRia)iBTw7Jy`m^8|Z{Y%ok zoBm|THsNYnm#yVjDHTlO_o#dH;qS7R67R$=_f|67A;{d9m`1n zGj_&}_{H&^Q0Ox?i!<+ma4gHyd-l^ZEe2friob;aBD-NBfy-OsSekEU;njEQ-`UnF zCepDn#f`Pi4zra2avG6r*qB1a(k@2uZ)H!P@yn1zi~rhY-m`wnUA! zRA#7JDQi>CT+MB!{WKo^IUbFZf;pw4zgTu;Ki;Ge*TZe$mG?t=k`Itk!aG^JcsXVD z4rgh1hMIuAI4Xu?C3RpWC$esv?5zdnb6&pA_J4en71xbb4I{OpfhlqQ96F+aJf zRr zJRXm_{73fq*&3Ug$Fz)B4%;CR>wn|21xs>RA zdtmW};P?(Fvmg=PgBEEB%NntL>n$@}D*h`S)?|g&`K~9O!)Y9k~4wndt zMG28bF_DFhjy8$ynKMFOA@-W<{7|Mcu^T8zTRQaL)(WjqkjqkAu~# z)c1mgPHE~(`f^56cjLCj6@Ox0Eo+i*Wn87g$0j8)NNq9yOpliJtvS(&NhX)e(s!easrY$%acX2y+i{&*>?>xI}C z8+RzLUPSd1%iX@jUJ;U@aJ%0kVDYC)Il%j}hd8r*G?SdotEXqUYIm=e$tyceyXJ*-R~`$l%*szi&j0g`v_*M|056ZM%=B8DO&hV?{+Rm7L7^djS& z^%L}*@EzGM_>`b&i*9PvJ2~cgy&~BMGP5j(O39PebsO*b6}EeEoPyeo$rjf88`i@s zR?(f7%p2=NzSz#%L?qS%1EUPW5~6qM$#Qi5Wo?g&A%*#pch=aG23=-fv5iaU9_~;LdqXJu)n$rx1r+Qi=!GiZ`ve`}`s z`xg1V7WsqLOX1OpnAHHI&R6R#&)SnW>;iQIuU*R_F2b)w2y-o(;_?-x+ghv0*OtcpV~_J+{lA}L)80xg!0E#bD8f9h(Y_0{zLQXZWYu2|_2yL+ zgJE{m>#6ltGJ#Db#?1HqKU6xBYor(#Xxrz9b6E%5uG*zYu)XWwNn=^u-kFwU4oeR! za+5a}$y&;FuK(g_G3wSd3lu4bce@O0k%Z7qFYj69;JI}TORQaRih&hMfO3%p>2^gm zuom=a1wFk`)_t2p5L71ec17+3PX^v_7*;{~?GG~vFiVII77}2*_3_K=T{McOAQk3$ z-|fLMZ3w>n@f7Bk4!Zi)f}N3o!{u3e2FkluR->+6V3lkIwWhB|v*P9@L}c2H%CVF4 zqqecD24lD9gRv)Z;J_OL-2&tjZ}AmzPa&K?OBn3N7j(NDs|)ACKQ>ypwj&^$abau) zP*#O%?eoRmWknv35SI-mdU2}|3@I34B!EJq8HtVHx^~^pgF*{;B z();pdJ+pS92u&2R#0k`jPY%Z4@>EgyYK{NWoZ}T# z+UaKVyyr=Di^Sn+kO)+X`>V!&w&J`=vE4sdA8H(GADxT09cxv1RLYY)J(uvr?GnPU zp8BDVIMg=W#Wo}DlmF=XrF_%WZinO(gMed600S-#`YsLEVp*i7^DN{1*DVsT(fBa4 zDf=Vz1rHl(LjrU{9Ms1ud{djmr<7>ouamOh%8(8janEMj!Kd-af_3NQnHTgdJ0&Ka zXsD$GEBY1S__vrPPb14Z`c-h+ZBMKv(>m%^7;PhucF?#YUTWc&5(GD>TET%5I(LqX zUSP#sY8m7fz908>GlsG#qmKUX^tT3H8 zj5S-cu-&k{r9vTI6Rw+OCbFmx_Qc$_IFh!#=p6qr&Y}@s@H5*o(F7-i8_vmZ`UB-f zJKb>MVev(i&2aD75v9C4P*_}t0`%eVvYl601T29{;su{Awnixw^IZnUqLQ8ydOFn|oxS_XGPF`&Mc$qmE zPa9WaeSmyF`l+ezze*q7scI+EJLa`m=^l|QH-WgtuE<=bCm%OlUexsPNrB6)*{QBC zA2-rY*!0LtA>6+*pztSgJ9JMd{V-v^%f*Ofur`F6! zdLr(ED@j|kZbguK3eSQZ31+9_^P%>{V5jCuqAdwvbJd5GjX}T&_9T`$yF+4Eo;I8< zA$y_yUUy6{@GZGqv6qCE*{(xASHd^YEd_sZBtF7QEl^w75Zo%^b(2{v(|a;n$$QsDKaF`%nY=`$96S?2HoRGtlbi%o5}iuO;J5 zcG$>6$PdO1EQB;BjD2weJflMkSDXbFl;M~dl9){FQfxA84Xk2p53B~}TxN5NPP@sm z*M*F9Elb+b&AwIkhhHX2$5O-7nHo49=G#`Z)4uDgbPpDV%r<|NvYR$7C!=uWv@T+g ztD<8Cm#f7YFRTjLeE!t)`q-HK)6x{0sCF}PdZ#%F%7;4X%11l-%GWvxPuDpaPkSE} z0bOE}U20h5$J%B%*-qFF8i5Y6EY1_L4=!NC5N%t-p(gvoQzmhY_Si02P8S&yu?QyL zcAI?1xCaEaMw=H;*e_ldST8;vOa!-(u~1!n!y?;k!vouH!zA0$F(aJ<*fa0q*fSsG zxD2n;?A!Nzww)Z!Gq23Gv#(?had$TQp?5y|(RUL6P$et^rpL#%>?4PScHR#&tbT7A z*(MJ+><{+_>~Qx2Oe05s%`q@cGY{a%vru6%GQ=Rvjt7GSxypZ;%F}DwVPN9f$y0Go z0JR-sx$JZsxB@nbj++nUnObl?%GJNU|*Og;7rWT_KeKc_RNmw`#YxE`_m`i`{QN*dfKwb&9Gz-r)T)Y?2OqG7+63K z-`GKpAZ5`VATjHV2$)>+ee1cry&6o$!9-8a0=OG2`kfm*gawo0^+AqQT>@r#0-a{$+II1s;5kqLfb0JhII87ZEC1+*u$fjvu&cMnO%DC5a*z3jXeNE4UpQ`P_y>G{zd}Cr z?L$q5M;R~^(ti*68cT=09j0U+FQ~Y)=4C3|@bj2uzHO%XKfFLZw6aTdxED=dZMRKzrxRC-9hE@xuE5;xG?APG~hb0xS(&lAK!U?WS$)0 zn{NkVPInUCa6X82E=Wn#e`beRrr{V=q$jJAh zlcn#ECqdmNC8ayMjg7RH9BSz5WJRW@VeGZfzqNL|dR#JWfpMg`?+?#|+f(zQ+$ecN z+S7OafRZL0=$l`0k~uqRZF)r7WT(Ns;j%%o&uc>0XRpM&VY9*B_ECpt$ZJCMn56ID zTdTaCy==M5THD#*QovIrIKWz`vdc4Y8kh@YMR1$g1k9pb?-o^q1`y zZT}1+nsO;G{A&EwzP4q_8BkHWZ$91{4Dyzi{#MjfT%X-eI>h6H2lkD_WBLX$koP+I zMkWV1ImaZYb9sd(YjAnRCI`6Ob5l69QhFtibPtVf06Pc9I)I%cV;?}@-m&n_Hv!&D z5={S?Jj>T|xb|HO-G{cY5x39&P=kFKOw+x9w);xaPn@2)I~{`8xVW9W7d!l(lN+SX z0}0G;fPl+A97PZL{@+_%dH;o556nZ@S#V_uBGzB+B7pwLkP=LJdDSc-OW-+8s&>gEWUI~1M3)>+DUZl$;*d!9J8HKrZs6lVQ4hWR!Vrj_>4otx4-c18A>bitlr9se5lT}_CRV*`OdJNt^W6Z6AlOx;Z2$((4)&|TTX?p|e^tOcpbq3pp zfWV=l2Cf!BvP;HEF{#Yno@u6xYJ{}?t#c3cG~LN2?DU)G)`_z-0cNEZ23yu`$F6yB z5bTdMDLV8aY58DT-oZ8)Ae>7&w_KHTpWb3#iB5GiTf64O(?zRqw~X#D`on#(Dp|~A z^GF$2r*iu5-_aAU_4=5&u1;u1>}DHSJek=Yt)3i6 zAE*>Bj?NARmOo$a>hL?ybJ|<;DhX!?L+Cvb1P+e%s^|iakHgF4FP8@g=^t1Q(igHTX>I$7S!}?eY6Mip%P|_qLAfhwx6JH36d2YFKX(8qV6K zC3SC8yYMLVTtlJWp7C?GQTe9L69fILoJRIby5G4(4xHw3c+JeZ&k|U*_Wff%j4V%O||1E)srt8(-m-lu2dJ^iHfcTJ~sV=PUYnk z)%z-F`e-k%KOz|)Q@0wmY#-zqm5Fv%soT^FdTdTwdKw3LC*?JTh~vg#oO7626Zl?? zp!C9uBk!Nxx1NB`%W{<~xKg+GE_5S{fN=0o+fwnHql&ogc-{fM<%*rlE^yzh`q|Uxrmf{b$)jc;rzzsbWJ(Q39pf z&v3wj6cz<6x=<|z9&}o`O@#2uvW74gW_9`P@;&FigPpsK7JYL({j*mkjm~ctp1Ssg zwE2SWtw3vZ)=q9g*kbiN_(6Gb8W)vxM?E_>hcx=?J0h|?12G((a~Nc3>1V+tKPUss zq!#L*j~E}py4j7o74BksjHgc;RjFIj5ts&}=fB^Dk3F{|VqGO{Xs{~H{f>oNpy4dmX>JBV{(xetBBMXzu)C@?m_6}5PnQhu!b7kFWsQ9&Q9 zVDm5cH)2UYZZ@`&YbL(a>Susor6!P6f{W_kH(}{G5@E?7boa?soK+>+UX1QW!cF$vVOidar-sg;a5?C23gmJUly=*m?r9~1NZ(A^)F~|k1hJ3XzUlgl9-wp zFF>n*UnULx;U>wgPN6$X`--#ehQ>Q%(q`VcC?~a`K1w&PEvEBlhKRtggft^+uL(}m z#1yTssWZ_tG`5Q+>o{wQJ)-7fUsGR63oHObh<5)i&n+z6sYtAkMR?bbH5gq9mRpCX zOdF0iLP(5TZTWl90g=*54oceC^*8G;1Y`HH#bs}W*fYMan)da^FWP<1920dOleM

    ?bmUmGH8o7LQYJP;2HnBFQGgO%Vgmxg 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 literal 0 HcmV?d00001 diff --git a/lib/test-only/postgresjdbc.jar b/lib/test-only/postgresjdbc.jar new file mode 100644 index 0000000000000000000000000000000000000000..2dc45ad34223a02f330ce1a683cf70db99bf4061 GIT binary patch literal 336933 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

    +*/ +public abstract class RaplaComboBox extends JPanel { + + private static final long serialVersionUID = 1L; + private JPopupMenu m_popup; + private boolean m_popupVisible = false; + private boolean m_isDropDown = true; + protected RaplaArrowButton m_popupButton; + protected JLabel jLabel; + protected JComponent m_editorComponent; + + // If you click on the popupButton while the PopupWindow is shown, + // the Window will be closed, because you clicked outside the Popup + // (not because you clicked that special button). + // The flag popupVisible is unset. + // After that the same click will trigger the actionPerfomed method + // on our button. And the window would popup again. + // Solution: We track down that one mouseclick that closes the popup + // with the following flags: + private boolean m_closing = false; + private boolean m_pressed = false; + private Listener m_listener = new Listener(); + + public RaplaComboBox(JComponent editorComponent) { + this(true,editorComponent); + } + + RaplaComboBox(boolean isDropDown,JComponent editorComponent) { + m_editorComponent = editorComponent; + m_isDropDown = isDropDown; + jLabel = new JLabel(); + setLayout(new BorderLayout()); + add(jLabel,BorderLayout.WEST); + add(m_editorComponent,BorderLayout.CENTER); + + if (m_isDropDown) { + installPopupButton(); + add(m_popupButton,BorderLayout.EAST); + m_popupButton.addActionListener(m_listener); + m_popupButton.addMouseListener(m_listener); + m_popupVisible = false; + } + } + + public JLabel getLabel() { + return jLabel; + } + + class Listener implements ActionListener,MouseListener,PopupMenuListener { + // Implementation of ActionListener + public void actionPerformed(ActionEvent e) { + // Ignore action, when Popup is closing + log("Action Performed"); + if (m_pressed && m_closing) { + m_closing = false; + return; + } + if ( !m_popupVisible && !m_closing) { + log("Open"); + showPopup(); + } else { + m_popupVisible = false; + closePopup(); + } // end of else + } + + private void log(String string) { + // System.out.println(System.currentTimeMillis() / 1000 + "m_visible:" + m_popupVisible + " closing: " + m_closing + " [" + string + "]"); + } + // Implementation of MouseListener + public void mousePressed(MouseEvent evt) { + m_pressed = true; + m_closing = false; + log("Pressed"); + } + public void mouseClicked(MouseEvent evt) { + m_closing = false; + } + public void mouseReleased(MouseEvent evt) { + m_pressed = false; + m_closing = false; + log("Released"); + } + public void mouseEntered(MouseEvent me) { + } + public void mouseExited(MouseEvent me) { + } + + + // Implementation of PopupListener + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + m_popupVisible = true; + } + + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + m_popupVisible = false; + m_closing = true; + m_popupButton.requestFocus(); + m_popupButton.setChar('v'); + log("Invisible"); + final boolean oldState = m_popupButton.isEnabled(); + m_popupButton.setEnabled( false); + final Timer timer = new Timer(true); + TimerTask task = new TimerTask() + { + public void run() + { + m_popupButton.setEnabled( oldState); + } + }; + timer.schedule(task, 100); + } + + public void popupMenuCanceled(PopupMenuEvent e) { + m_popupVisible = false; + m_closing = true; + m_popupButton.requestFocus(); + log("Cancel"); + } + + }; + + private void installPopupButton() { + // Maybe we could use the combobox drop-down button here. + m_popupButton = new RaplaArrowButton('v'); + } + + public void setFont(Font font) { + super.setFont(font); + // Method called during constructor? + if (font == null) + return; + if (m_editorComponent != null) + m_editorComponent.setFont(font); + if (m_popupButton != null && m_isDropDown) { + int size = (int) getPreferredSize().getHeight(); + m_popupButton.setSize(size,size); + } + } + + public void setEnabled( boolean enabled ) { + super.setEnabled( enabled ); + if ( m_editorComponent != null ) { + m_editorComponent.setEnabled( enabled ); + } + if ( m_popupButton != null ) { + m_popupButton.setEnabled ( enabled ); + } + } + + protected void showPopup() { + if (m_popup == null) + createPopup(); + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + Dimension menuSize = m_popup.getPreferredSize(); + Dimension buttonSize = m_popupButton.getSize(); + Point location = m_popupButton.getLocationOnScreen(); + int diffx= buttonSize.width - menuSize.width; + if (location.x + diffx<0) + diffx = - location.x; + int diffy= buttonSize.height; + if (location.y + diffy + menuSize.height > screenSize.height) + diffy = screenSize.height - menuSize.height - location.y; + m_popup.show(m_popupButton,diffx,diffy); + m_popup.requestFocus(); + m_popupButton.setChar('^'); + } + + protected void closePopup() { + if (m_popup != null && m_popup.isVisible()) { + // #Workaround for JMenuPopup-Bug in JDK 1.4 + // intended behaviour: m_popup.setVisible(false); + + javax.swing.SwingUtilities.invokeLater(new Runnable() { + public void run() { + // Show JMenuItem and fire a mouse-click + cardLayout.last(m_popup); + menuItem.menuSelectionChanged(true); + menuItem.dispatchEvent(new MouseEvent(m_popup + ,MouseEvent.MOUSE_RELEASED + ,System.currentTimeMillis() + ,0 + ,0 + ,0 + ,1 + ,false)); + // show original popup again + cardLayout.first(m_popup); + m_popupButton.requestFocus(); + } + }); + } + m_popupVisible = false; + } + + private JMenuItem menuItem; + private CardLayout cardLayout; + + class MyPopup extends JPopupMenu { + private static final long serialVersionUID = 1L; + + MyPopup() { + super(); + } + public void menuSelectionChanged(boolean isIncluded) { + closePopup(); + } + } + + private void createPopup() { + m_popup = new JPopupMenu(); + /* try { + PopupMenu.class.getMethod("isPopupTrigger",new Object[]{}); + } catch (Exception ex) { + m_popup.setLightWeightPopupEnabled(true); + }*/ + m_popup.setBorder(null); + cardLayout = new CardLayout(); + m_popup.setLayout(cardLayout); + m_popup.setInvoker(this); + m_popup.add(getPopupComponent(),"0"); + menuItem = new JMenuItem(""); + m_popup.add(menuItem,"1"); + m_popup.setBorderPainted(true); + m_popup.addPopupMenuListener(m_listener); + } + + /** the component that should apear in the popup menu */ + protected abstract JComponent getPopupComponent(); +} + + diff --git a/src/org/rapla/components/calendar/RaplaNumber.java b/src/org/rapla/components/calendar/RaplaNumber.java new file mode 100644 index 0000000..e447007 --- /dev/null +++ b/src/org/rapla/components/calendar/RaplaNumber.java @@ -0,0 +1,169 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2003 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendar; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.EventListenerList; +/** The RaplaNumber is an adapter for NumberField. + * Warning! Currently only Longs are supported. + * @see NumberField + */ +public final class RaplaNumber extends JPanel{ + private static final long serialVersionUID = 1L; + + NumberField m_numberField = null; + public static Number ZERO = new Long(0); + public static Number ONE = new Long(1); + public static Number DEFAULT_STEP_SIZE = new Long(1); + EventListenerList m_listenerList; + Listener m_listener = new Listener(); + Number m_emptyValue = ZERO; + JPanel m_buttonPanel = new JPanel(); + RaplaArrowButton m_upButton = new RaplaArrowButton('+', 15);//'^',10,false); + RaplaArrowButton m_downButton = new RaplaArrowButton('-', 15);//new NavButton('v',10,false); + + /** currently only Longs are supported */ + public RaplaNumber() { + this( null, null, null, false); + } + + public RaplaNumber(Number value,Number minimum,Number maximum,boolean isNullPermitted) { + m_numberField = new NumberField(minimum,maximum,DEFAULT_STEP_SIZE.intValue(),10); + m_numberField.setNumber(value); + m_numberField.setNullPermitted(isNullPermitted); + if (minimum != null && minimum.longValue()>0) + m_emptyValue = minimum; + else if (maximum != null && maximum.longValue()<0) + m_emptyValue = maximum; + m_buttonPanel.setLayout(new GridLayout(2,1)); + m_buttonPanel.add(m_upButton); + m_upButton.setBorder( null); + m_buttonPanel.add(m_downButton); + m_downButton.setBorder(null); + m_buttonPanel.setMinimumSize(new Dimension(18,20)); + m_buttonPanel.setPreferredSize(new Dimension(18,20)); + m_buttonPanel.setBorder(BorderFactory.createEtchedBorder()); + m_upButton.setClickRepeatDelay(50); + m_downButton.setClickRepeatDelay(50); + m_upButton.addActionListener(m_listener); + m_downButton.addActionListener(m_listener); + setLayout(new BorderLayout()); + add(m_numberField,BorderLayout.CENTER); + add(m_buttonPanel,BorderLayout.EAST); + + m_upButton.setFocusable( false); + m_downButton.setFocusable( false); + } + + public void setFont(Font font) { + super.setFont(font); + // Method called during constructor? + if (m_numberField == null || font == null) + return; + m_numberField.setFont(font); + } + + public void setColumns(int columns) { + m_numberField.setColumns(columns); + } + + public NumberField getNumberField() { + return m_numberField; + } + + public void setEnabled( boolean enabled ) { + super.setEnabled( enabled ); + if ( m_numberField != null ) { + m_numberField.setEnabled( enabled ); + } + if ( m_upButton != null ) { + m_upButton.setEnabled ( enabled ); + m_downButton.setEnabled ( enabled ); + } + } + + /** currently only Longs are supported */ + public void setNumber(Number newValue) { + m_numberField.setNumber(newValue); + } + + public Number getNumber() { + return m_numberField.getNumber(); + } + + public void addChangeListener(ChangeListener changeListener) { + if (m_listenerList == null) { + m_listenerList = new EventListenerList(); + m_numberField.addChangeListener(m_listener); + } + m_listenerList.add(ChangeListener.class,changeListener); + } + + public void removeChangeListener(ChangeListener changeListener) { + if (m_listenerList == null) { + return; + } + m_listenerList.remove(ChangeListener.class,changeListener); + } + + + class Listener implements ChangeListener,ActionListener { + public void actionPerformed(ActionEvent evt) { + m_numberField.requestFocus(); + if (evt.getSource() == m_upButton) { + m_numberField.increase(); + } + if (evt.getSource() == m_downButton) { + m_numberField.decrease(); + } + SwingUtilities.invokeLater( new Runnable() { + + public void run() { + stateChanged(null); + m_numberField.selectAll(); + } + } + + ); + } + + public void stateChanged(ChangeEvent originalEvent) { + if (m_listenerList == null) + return; + + + ChangeEvent evt = new ChangeEvent(RaplaNumber.this); + Object[] listeners = m_listenerList.getListenerList(); + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==ChangeListener.class) { + ((ChangeListener)listeners[i+1]).stateChanged(evt); + } + } + } + + } + + + +} diff --git a/src/org/rapla/components/calendar/RaplaTime.java b/src/org/rapla/components/calendar/RaplaTime.java new file mode 100644 index 0000000..d0dcc0e --- /dev/null +++ b/src/org/rapla/components/calendar/RaplaTime.java @@ -0,0 +1,555 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.calendar; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.MediaTracker; +import java.awt.Point; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.image.BufferedImage; +import java.net.URL; +import java.text.DateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +import javax.swing.BorderFactory; +import javax.swing.DefaultListCellRenderer; +import javax.swing.DefaultListModel; +import javax.swing.ImageIcon; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollBar; +import javax.swing.JScrollPane; +import javax.swing.ListSelectionModel; +import javax.swing.MenuElement; +import javax.swing.MenuSelectionManager; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +/** A ComboBox like time chooser. + * It is localizable and it uses swing-components. + *

    The combobox editor is a {@link TimeField}. If the ComboBox-Button + * is pressed a TimeSelectionList will drop down.

    + * @author Christopher Kohlhaas + */ +public final class RaplaTime extends RaplaComboBox { + private static final long serialVersionUID = 1L; + + protected TimeField m_timeField; + protected TimeList m_timeList; + protected TimeModel m_timeModel; + protected Collection m_listenerList = new ArrayList(); + private Date m_lastTime; + private int m_visibleRowCount = -1; + private int m_rowsPerHour = 4; + private TimeRenderer m_renderer; + private static Image clock; + boolean m_showClock; + /** Create a new TimeBox with the default locale. */ + public RaplaTime() { + this(Locale.getDefault()); + } + + /** Create a new TimeBox with the specified locale. */ + public RaplaTime(Locale locale) { + this(locale,TimeZone.getDefault(),true, true); + } + + /** Create a new TimeBox with the specified locale and timeZone. */ + public RaplaTime(Locale locale,TimeZone timeZone) { + this(locale,timeZone,true, true); + } + + /** Create a new TimeBox with the specified locale and timeZone. The + isDropDown flag specifies if times could be selected + via a drop-down-box. + */ + public RaplaTime(Locale locale,TimeZone timeZone,boolean isDropDown, boolean showClock) { + super(isDropDown,new TimeField(locale,timeZone)); + m_showClock = showClock; + m_timeModel = new TimeModel(locale, timeZone); + m_timeField = (TimeField) m_editorComponent; + Listener listener = new Listener(); + m_timeField.addChangeListener(listener); + m_timeModel.addDateChangeListener(listener); + m_lastTime = m_timeModel.getTime(); + + if ( showClock ) + { + if ( clock == null ) + { + URL url = RaplaTime.class.getResource("clock.png"); + if ( url != null ) + { + clock =Toolkit.getDefaultToolkit().createImage(url ); + MediaTracker m = new MediaTracker(this); + m.addImage(clock, 0); + try { m.waitForID(0); } catch (InterruptedException ex) {} + } + } + + getLabel().setIcon( new ImageIcon( createClockImage())); + getLabel().setBorder( BorderFactory.createEmptyBorder(0,0,0,1)); + } + + } + + static Color HOUR_POINTER = new Color( 40,40,100); + static Color MINUTE_POINTER = new Color( 100,100,180); + + protected Image createClockImage() { + BufferedImage image = new BufferedImage( 17, 17, BufferedImage.TYPE_INT_ARGB); + Calendar calendar = Calendar.getInstance(getTimeZone(),m_timeModel.getLocale()); + calendar.setTime( m_timeModel.getTime()); + int hourOfDay = calendar.get( Calendar.HOUR_OF_DAY) % 12; + int minute = calendar.get( Calendar.MINUTE); + + Graphics g = image.getGraphics(); + + double hourPos = (hourOfDay * 60 + minute - 180) / (60.0 * 12) * 2 * Math.PI ; + double minutePos = (minute -15) / 60.0 * 2 * Math.PI; + int xhour = (int) (Math.cos( hourPos) * 4.5); + int yhour = (int) (Math.sin( hourPos ) * 4.5 ); + int xminute = (int) (Math.cos( minutePos ) * 6.5 ); + int yminute = (int) (Math.sin( minutePos) * 6.5); + g.drawImage( clock,0,0,17,17, null); + g.setColor( HOUR_POINTER); + int centerx = 8; + int centery = 8; + g.drawLine( centerx, centery, centerx + xhour,centery + yhour); + g.setColor( MINUTE_POINTER); + g.drawLine( centerx, centery, centerx + xminute,centery +yminute); + return image; + } + /** The granularity of the selection rows: + *
      + *
    • 1: 1 rows per hour = 1 Hour
    • + *
    • 2: 2 rows per hour = 1/2 Hour
    • + *
    • 2: 3 rows per hour = 20 Minutes
    • + *
    • 4: 4 rows per hour = 15 Minutes
    • + *
    • 6: 6 rows per hour = 10 Minutes
    • + *
    • 12: 12 rows per hour = 5 Minutes
    • + *
    + */ + public void setRowsPerHour(int rowsPerHour) { + m_rowsPerHour = rowsPerHour; + if (m_timeList != null) { + throw new IllegalStateException("Property can only be set during initialization."); + } + } + + /** @see #setRowsPerHour */ + public int getRowsPerHour() { + return m_rowsPerHour; + } + + class Listener implements ChangeListener,DateChangeListener { + // Implementation of ChangeListener + public void stateChanged(ChangeEvent evt) { + validateEditor(); + } + + public void dateChanged(DateChangeEvent evt) { + closePopup(); + if (needSync()) + m_timeField.setTime(evt.getDate()); + if (m_lastTime == null || !m_lastTime.equals(evt.getDate())) + fireTimeChanged(evt.getDate()); + m_lastTime = evt.getDate(); + if ( clock != null && m_showClock) + { + getLabel().setIcon( new ImageIcon( createClockImage())); + } + } + } + + /** test if we need to synchronize the dateModel and the m_timeField*/ + private boolean needSync() { + return (m_timeField.getTime() != null && !m_timeModel.sameTime(m_timeField.getTime())); + } + + protected void validateEditor() { + if (needSync()) + m_timeModel.setTime(m_timeField.getTime()); + } + + /** the number of visble rows in the drop-down menu.*/ + public void setVisibleRowCount(int count) { + m_visibleRowCount = count; + if (m_timeList != null) + m_timeList.getList().setVisibleRowCount(count); + } + + public void setFont(Font font) { + super.setFont(font); + // Method called during constructor? + if (m_timeList == null || font == null) + return; + m_timeList.setFont(font); + } + + public void setLocale(Locale locale) { + super.setLocale(locale); + if (m_timeField != null) + m_timeField.setLocale(locale); + } + + public void setTimeZone(TimeZone zone) { + m_timeModel.setTimeZone(zone); + m_timeField.setTimeZone(zone); + } + + public TimeZone getTimeZone() { + return m_timeField.getTimeZone(); + } + + /** Set the time relative to the given timezone. + * The date,month and year values will be ignored. + */ + public void setTime(Date time) { + m_timeModel.setTime(time); + } + + /** Set the time relative to the given timezone. + */ + public void setTime(int hour, int minute) { + m_timeModel.setTime(hour,minute); + } + + /** Parse this date with a calendar-object set to the correct + time-zone to get the hour,minute and second. The + date,month and year values should be ignored. + */ + public Date getTime() { + return m_timeModel.getTime(); + } + + protected void showPopup() { + validateEditor(); + super.showPopup(); + m_timeList.selectTime(m_timeField.getTime()); + } + + /** registers new DateChangedListener for this component. + * An DateChangedEvent will be fired to every registered DateChangedListener + * when the a different time is selected. + * @see DateChangeListener + * @see DateChangeEvent + */ + public void addDateChangeListener(DateChangeListener listener) { + m_listenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeDateChangeListener(DateChangeListener listener) { + m_listenerList.remove(listener); + } + + public DateChangeListener[] getDateChangeListeners() { + return (DateChangeListener[])m_listenerList.toArray(new DateChangeListener[]{}); + } + + protected void fireTimeChanged(Date date) { + DateChangeListener[] listeners = getDateChangeListeners(); + if (listeners.length == 0) + return; + DateChangeEvent evt = new DateChangeEvent(this,date); + for (int i = 0; i=0) + m_timeList.getList().setVisibleRowCount(m_visibleRowCount); + } + m_timeList.setTimeRenderer( m_renderer ); + return m_timeList; + } + + public void setTimeRenderer(TimeRenderer renderer) { + m_renderer = renderer; + } + +} + + +class TimeList extends JPanel implements MenuElement,MouseListener,MouseMotionListener { + private static final long serialVersionUID = 1L; + + JScrollPane scrollPane = new JScrollPane(); + NavButton upButton = new NavButton('^',10); + NavButton downButton = new NavButton('v',10); + JList m_list; + DateFormat m_format; + TimeModel m_timeModel; + int m_rowsPerHour = 4; + int m_minutesPerRow = 60 / m_rowsPerHour;; + TimeRenderer m_renderer; + + private double getRowHeight() { + return m_list.getVisibleRect().getHeight()/m_list.getVisibleRowCount(); + } + + public TimeList(int rowsPerHour) { + super(); + this.setLayout( new BorderLayout()); + JPanel upPane = new JPanel(); + upPane.setLayout( new BorderLayout()); + upPane.add( upButton, BorderLayout.CENTER ); + JPanel downPane = new JPanel(); + downPane.setLayout( new BorderLayout()); + downPane.add( downButton, BorderLayout.CENTER ); + upButton.addActionListener( new ActionListener() { + public void actionPerformed( ActionEvent e ) + { + int direction = (int)- getRowHeight() * (m_list.getVisibleRowCount() -1); + JScrollBar bar = scrollPane.getVerticalScrollBar(); + int value = Math.min( Math.max( 0, bar.getValue() + direction ), bar.getMaximum()); + scrollPane.getVerticalScrollBar().setValue( value ); + } + + }); + downButton.addActionListener( new ActionListener() { + public void actionPerformed( ActionEvent e ) + { + int direction = (int) getRowHeight() * (m_list.getVisibleRowCount() -1) ; + JScrollBar bar = scrollPane.getVerticalScrollBar(); + int value = Math.min( Math.max( 0, bar.getValue() + direction ), bar.getMaximum()); + scrollPane.getVerticalScrollBar().setValue( value ); + } + + }); + + /* + upPane.addMouseListener( new Mover( -1)); + upButton.addMouseListener( new Mover( -1)); + downPane.addMouseListener( new Mover( 1)); + downButton.addMouseListener( new Mover( 1)); + */ + //upPane.setPreferredSize( new Dimension(0,0)); + //downPane.setPreferredSize( new Dimension(0,0)); + this.add(upPane, BorderLayout.NORTH); + this.add( scrollPane, BorderLayout.CENTER); + this.add( downPane, BorderLayout.SOUTH); + scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER ); + scrollPane.getVerticalScrollBar().setEnabled( false ); + scrollPane.getVerticalScrollBar().setSize( new Dimension(0,0)); + scrollPane.getVerticalScrollBar().setPreferredSize( new Dimension(0,0)); + scrollPane.getVerticalScrollBar().setMaximumSize( new Dimension(0,0)); + scrollPane.getVerticalScrollBar().setMinimumSize( new Dimension(0,0)); + m_rowsPerHour = rowsPerHour; + m_minutesPerRow = 60 / m_rowsPerHour; + //this.setLayout(new BorderLayout()); + m_list = new JList(); + scrollPane.setViewportView( m_list); + m_list.setBackground(this.getBackground()); + //JScrollPane scrollPane = new JScrollPane(m_list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + m_list.setVisibleRowCount(8); + m_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + m_list.addMouseListener(this); + m_list.addMouseMotionListener(this); + m_list.setCellRenderer( new DefaultListCellRenderer() { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus ) + { + Component component = super.getListCellRendererComponent( list, value, index, isSelected,cellHasFocus ); + if ( m_renderer!= null && !isSelected && !cellHasFocus ) { + int hour = getHourForIndex( index ); + int minute = getMinuteForIndex( index ); + Color color = m_renderer.getBackgroundColor( hour, minute ); + if ( color != null ) { + component.setBackground( color ); + } + } + return component; + } + }); + } + + public void setModel(TimeModel model,DateFormat format) { + m_timeModel = model; + m_format = (DateFormat) format.clone(); + Calendar calendar = Calendar.getInstance(m_format.getTimeZone(),model.getLocale()); + DefaultListModel listModel = new DefaultListModel(); + for (int i=0;i<24 * m_rowsPerHour;i++) { + calendar.set(Calendar.HOUR_OF_DAY,i/m_rowsPerHour ); + calendar.set(Calendar.MINUTE,(i%m_rowsPerHour) * m_minutesPerRow); + listModel.addElement(" " + m_format.format(calendar.getTime()) + " "); + } + m_list.setModel(listModel); + int pos = (int)getPreferredSize().getWidth()/2 - 5; + upButton.setLeftPosition( pos); + downButton.setLeftPosition( pos ); + } + + public void setTimeRenderer(TimeRenderer renderer) { + m_renderer = renderer; + } + + public JList getList() { + return m_list; + } + + public void setFont(Font font) { + super.setFont(font); + if (m_list == null || font == null) + return; + m_list.setFont(font); + int pos = (int)getPreferredSize().getWidth()/2 - 5; + upButton.setLeftPosition( pos); + downButton.setLeftPosition( pos ); + } + + /** Implementation-specific. Should be private.*/ + public void mousePressed(MouseEvent e) { + ok(); + } + /** Implementation-specific. Should be private.*/ + public void mouseClicked(MouseEvent e) { + } + /** Implementation-specific. Should be private.*/ + public void mouseReleased(MouseEvent e) { + } + /** Implementation-specific. Should be private.*/ + public void mouseEntered(MouseEvent me) { + } + /** Implementation-specific. Should be private.*/ + public void mouseExited(MouseEvent me) { + } + + + private int lastIndex = -1; + private int lastY= -1; + public void mouseDragged(MouseEvent e) { + } + public void mouseMoved(MouseEvent e) { + if (e.getY() == lastY) + return; + lastY = e.getY(); + Point p = new Point(e.getX(),e.getY()); + int index = m_list.locationToIndex(p); + if (index == lastIndex) + return; + lastIndex = index; + m_list.setSelectedIndex(index); + } + + public void selectTime(Date time) { + Calendar calendar = Calendar.getInstance(m_timeModel.getTimeZone(),m_timeModel.getLocale()); + calendar.setTime(time); + int index = (calendar.get(Calendar.HOUR_OF_DAY)) * m_rowsPerHour + + (calendar.get(Calendar.MINUTE) / m_minutesPerRow); + select(index); + } + + + private void select(int index) { + m_list.setSelectedIndex(index); + m_list.ensureIndexIsVisible(Math.max(index -3,0)); + m_list.ensureIndexIsVisible(Math.min(index + 3,m_list.getModel().getSize() -1)); + } + + + // Start of MenuElement implementation + public Component getComponent() { + return this; + } + public MenuElement[] getSubElements() { + return new MenuElement[0]; + } + + public void menuSelectionChanged(boolean isIncluded) { + } + + public void processKeyEvent(KeyEvent event, MenuElement[] path, MenuSelectionManager manager) { + int index; + if (event.getID() == KeyEvent.KEY_PRESSED) { + switch (event.getKeyCode()) { + case (KeyEvent.VK_KP_UP): + case (KeyEvent.VK_UP): + index = m_list.getSelectedIndex(); + if (index > 0) + select(index - 1); + break; + case (KeyEvent.VK_KP_DOWN): + case (KeyEvent.VK_DOWN): + index = m_list.getSelectedIndex(); + if (index = 0) { + calendar.set(Calendar.HOUR_OF_DAY,hour ); + calendar.set(Calendar.MINUTE,minute); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + m_timeModel.setTime(calendar.getTime()); + } + } + + public void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager) { + } + // End of MenuElement implementation +} + + diff --git a/src/org/rapla/components/calendar/TimeField.java b/src/org/rapla/components/calendar/TimeField.java new file mode 100644 index 0000000..880c7e4 --- /dev/null +++ b/src/org/rapla/components/calendar/TimeField.java @@ -0,0 +1,302 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendar; + +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; +/** The TimeField only accepts characters that are part of DateFormat.getTimeInstance(DateFormat.SHORT,locale). + * The input blocks are [hour,minute,am_pm] or [hour_of_day,minute] + * depending on the selected locale. You can use the keyboard to + * navigate between the blocks or to increment/decrement the blocks. + * @see AbstractBlockField + */ + +final public class TimeField extends AbstractBlockField { + private static final long serialVersionUID = 1L; + + private DateFormat m_outputFormat; + private DateFormat m_parsingFormat; + private Calendar m_calendar; + private int m_rank[] = null; + private char[] m_separators; + private boolean m_useAM_PM = false; + private boolean americanAM_PM_character = false; + + public TimeField() { + this(Locale.getDefault()); + } + + public TimeField(Locale locale) { + this(locale, TimeZone.getDefault()); + } + + public TimeField(Locale locale,TimeZone timeZone) { + super(); + m_calendar = Calendar.getInstance(timeZone, locale); + super.setLocale(locale); + setFormat(); + setTime(new Date()); + } + + + public void setLocale(Locale locale) { + super.setLocale(locale); + if (locale != null && getTimeZone() != null) + setFormat(); + } + + private void setFormat() { + m_parsingFormat = DateFormat.getTimeInstance(DateFormat.SHORT, getLocale()); + m_parsingFormat.setTimeZone(getTimeZone()); + Date oldDate = m_calendar.getTime(); + m_calendar.set(Calendar.HOUR_OF_DAY,0); + m_calendar.set(Calendar.MINUTE,0); + String formatStr = m_parsingFormat.format(m_calendar.getTime()); + + FieldPosition minutePos = new FieldPosition(DateFormat.MINUTE_FIELD); + m_parsingFormat.format(m_calendar.getTime(), new StringBuffer(),minutePos); + + FieldPosition hourPos = new FieldPosition(DateFormat.HOUR0_FIELD); + StringBuffer hourBuf = new StringBuffer(); + m_parsingFormat.format(m_calendar.getTime(), hourBuf,hourPos); + + FieldPosition hourPos1 = new FieldPosition(DateFormat.HOUR1_FIELD); + StringBuffer hourBuf1 = new StringBuffer(); + m_parsingFormat.format(m_calendar.getTime(), hourBuf1,hourPos1); + + FieldPosition amPmPos = new FieldPosition(DateFormat.AM_PM_FIELD); + m_parsingFormat.format(m_calendar.getTime(), new StringBuffer(),amPmPos); + + String zeroDigit = m_parsingFormat.getNumberFormat().format(0); + int zeroPos = hourBuf.toString().indexOf(zeroDigit,hourPos.getBeginIndex()); + + // 0:30 or 12:30 + boolean zeroBased = (zeroPos == 0); + String testFormat = m_parsingFormat.format( m_calendar.getTime() ).toLowerCase(); + int mp = minutePos.getBeginIndex(); + int ap = amPmPos.getBeginIndex(); + int hp = Math.max( hourPos.getBeginIndex(), hourPos1.getBeginIndex() ); + + int pos[] = null; + + // Use am/pm + if (amPmPos.getEndIndex()>0) { + m_useAM_PM = true; + americanAM_PM_character = m_useAM_PM && (testFormat.indexOf( "am" )>=0 || testFormat.indexOf( "pm" )>=0); + // System.out.println(formatStr + " hour:"+hp+" minute:"+mp+" ampm:"+ap); + if (hp<0 || mp<0 || ap<0 || formatStr == null) { + throw new IllegalArgumentException("Can't parse the time-format for this locale: " + formatStr); + } + // quick and diry sorting + if (mp02efMAMr`FmGg<`F zA~#J@3QkZIX=4__C~1zReJIR?sVx){KN=luK2D3#ab|Q;2OjRZ=bq=e7w&zoYU>-O z^-2x9F*xBDx7W|e_XTDamgDu(!aQoq3USy>>Z(n(TUSb9t&QO$}t&~zABFrwXN>isxZn-?N8H&iJNE~f_ z!|{AODiR1qq{HQrrcRg4F0RH-AR;t(4@k!Yj|8J48#}}ek$u>$2cshGE{`;K55z>= zUY}fSamq$0BC8_*jP+1NYFnJ*_WDF~d;OfPG|@GUF4qX*FoYryPDPmbT9<2tKT5-1 zW#abwQ8hR2%j4EYESZ@khNz?|Nv5EWC} z$rX@gwcuM=#sCO~qc~rWQE#tI+g|vb~D`iTZ?oqqH!O zwclF=Bm2&O097TeXXsE=a0IQUtPtnWBpKE;`bWQ!VND~`nns4zasbj2`Ybr#PEuD{ zjOMVJjC`FXCtatZ?i7ZhqZ=AVDs(+QHq@RbCtc_B^c)VGiB?x_s;c7!+9nFf4acyp!bO+s{Uso?F6RWzuxMg2M?eUJnF$I5fqFNk8Sq`AIHLy%JuI`{dR5 u4?a%M=1.4 + You can safely exclude it if you build with JDK <1.4 + */ +class AWTAdapterFactoryImpl extends AWTAdapterFactory { + public Observable createMouseWheelObservable(Component component) { + return new MyWheelListener(component); + } + public FocusAdapter createFocusAdapter(Container container) { + return new MyFocusAdapter(container); + } +} + +class MyWheelListener extends Observable implements MouseWheelListener { + MyWheelListener(Component component) { + component.addMouseWheelListener(this); + } + + public void mouseWheelMoved(MouseWheelEvent evt) { + setChanged(); + notifyObservers(new Long(evt.getWheelRotation())); + } + +} + +class MyFocusAdapter implements FocusAdapter { + Container c; + MyFocusAdapter(Container container) { + this.c = container; + } + public boolean isFocusOwner() { + return c.isFocusOwner(); + } + public boolean isFocusable() { + return c.isFocusable(); + } + public void setFocusCycleRoot(boolean bEnable) { + c.setFocusCycleRoot(bEnable); + } + public void setFocusable(boolean bFocusable) { + c.setFocusable(bFocusable); + } + public void transferFocusUpCycle() { + c.transferFocusUpCycle(); + } + public void transferFocusBackward() { + c.transferFocusBackward(); + } + public boolean requestFocusInWindow() { + return c.requestFocusInWindow(); + } + + public void ignoreFocusComponents(FocusTester focusTester) { + c.setFocusTraversalPolicy(new MyFocusTraversalPolicy(focusTester)); + } +} + +class MyFocusTraversalPolicy extends LayoutFocusTraversalPolicy { + private static final long serialVersionUID = 1L; + + FocusTester focusTester; + MyFocusTraversalPolicy( FocusTester focusTester) { + this.focusTester = focusTester; + } + + protected boolean accept(Component component) { + if (!focusTester.accept(component)) + return false; + return super.accept(component); + } +} + diff --git a/src/org/rapla/components/calendar/jdk14adapter/FocusAdapter.java b/src/org/rapla/components/calendar/jdk14adapter/FocusAdapter.java new file mode 100644 index 0000000..f4c62fc --- /dev/null +++ b/src/org/rapla/components/calendar/jdk14adapter/FocusAdapter.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendar.jdk14adapter; + +public interface FocusAdapter { + boolean isFocusOwner(); + boolean isFocusable(); + void setFocusable(boolean bFocusable); + void transferFocusUpCycle(); + void transferFocusBackward(); + boolean requestFocusInWindow(); + void ignoreFocusComponents(FocusTester focusTester); + void setFocusCycleRoot(boolean bEnable); +} diff --git a/src/org/rapla/components/calendar/jdk14adapter/FocusTester.java b/src/org/rapla/components/calendar/jdk14adapter/FocusTester.java new file mode 100644 index 0000000..ef8b99c --- /dev/null +++ b/src/org/rapla/components/calendar/jdk14adapter/FocusTester.java @@ -0,0 +1,19 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendar.jdk14adapter; + +import java.awt.Component; + +public interface FocusTester { + boolean accept(Component component); +} diff --git a/src/org/rapla/components/calendar/jdk14adapter/package.html b/src/org/rapla/components/calendar/jdk14adapter/package.html new file mode 100644 index 0000000..0d24b3c --- /dev/null +++ b/src/org/rapla/components/calendar/jdk14adapter/package.html @@ -0,0 +1,7 @@ + +Adapter for using the new MouseWheel and Focus features in JDK 1.4.0 without +breaking backwards compatibility with 1.2 or 1.3. + + + + diff --git a/src/org/rapla/components/calendar/package.html b/src/org/rapla/components/calendar/package.html new file mode 100644 index 0000000..9e6c3d3 --- /dev/null +++ b/src/org/rapla/components/calendar/package.html @@ -0,0 +1,7 @@ + +Contains widgets for date- and time- selection. +This package is independant from the rest of rapla. + + + + diff --git a/src/org/rapla/components/calendarview/AbstractGroupStrategy.java b/src/org/rapla/components/calendarview/AbstractGroupStrategy.java new file mode 100644 index 0000000..0823d0e --- /dev/null +++ b/src/org/rapla/components/calendarview/AbstractGroupStrategy.java @@ -0,0 +1,256 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; + +import org.rapla.components.util.DateTools; +import org.rapla.components.util.SmallIntMap; + +/** Arranges blocks into groups, and tries to place one group into one slot. + The subclass must overide the group method to perform the grouping on a given + list of blocks. +*/ +public abstract class AbstractGroupStrategy implements BuildStrategy { + boolean m_sortSlotsBySize; + public static long MILLISECONDS_PER_DAY = 24 * 3600 * 1000; + private boolean m_fixedSlots; + private boolean m_conflictResolving; + + + Comparator blockComparator = new Comparator() { + public int compare(Object o1,Object o2) { + Block b1 = (Block) o1; + Block b2 = (Block) o2; + int result = b1.getStart().compareTo(b2.getStart()); + if (result != 0) + return result; + else + return -1 * b1.getEnd().compareTo(b2.getEnd()); + + } + }; + + Comparator slotComparator = new Comparator() { + public int compare(Object o1,Object o2) { + List s1 = (List) o1; + List s2 = (List) o2; + if (s1.size() == 0 || s2.size() ==0) { + if (s1.size() == s2.size()) + return 0; + else + return s1.size() < s2.size() ? -1 : 1; + } + + Block b1 = (Block) s1.get(0); + Block b2 = (Block) s2.get(0); + return b1.getStart().compareTo(b2.getStart()); + } + }; + + public void build(CalendarView wv, List blocks) + { + SmallIntMap days = new SmallIntMap(); + Calendar calendar = Calendar.getInstance(wv.getTimeZone()); + Iterator it = blocks.iterator(); + long timespan = wv.getEndDate().getTime() - wv.getStartDate().getTime(); + // guess maxDays + int maxDays = (int) (timespan / MILLISECONDS_PER_DAY + 2); + while (it.hasNext()) { + Block block = (Block) it.next(); + calendar.setTime(block.getStart()); + int day = calendar.get(Calendar.DAY_OF_YEAR)%maxDays; + List list = (List) days.get(day); + if (list == null) { + list = new ArrayList(); + days.put(day,list); + } + list.add(block); + } + for (int day=0;day + WeekdayMapper mapper = new WeekdayMapper(); + // print name of Sunday + System.out.println(mapper.getName(Calendar.SUNDAY)); + // Create a weekday ComboBox + JComboBox comboBox = new JComboBox(); + comboBox.setModel(new DefaultComboBoxModel(mapper.getNames())); + // select sunday + comboBox.setSelectedIndex(mapper.getIndexForDay(Calendar.SUNDAY)); + // weekday == Calendar.SUNDAY + int weekday = mapper.getDayForIndex(comboBox.getSelectedIndex()); + + +*/ +public class MonthMapper { + String[] monthNames; + + public MonthMapper() { + this(Locale.getDefault()); + } + + public MonthMapper(Locale locale) { + monthNames = new String[12]; + SimpleDateFormat format = new SimpleDateFormat("MMMMMM",locale); + Calendar calendar = Calendar.getInstance(locale); + for (int i=0;i<12;i++) { + calendar.set(Calendar.MONTH,i); + monthNames[i] = format.format(calendar.getTime()); + } + } + + public String[] getNames() { + return monthNames; + } + + /** month are 0 based */ + public String getName(int month) { + return getNames()[month]; + } + + +} + diff --git a/src/org/rapla/components/calendarview/WeekdayMapper.java b/src/org/rapla/components/calendarview/WeekdayMapper.java new file mode 100644 index 0000000..ef36b31 --- /dev/null +++ b/src/org/rapla/components/calendarview/WeekdayMapper.java @@ -0,0 +1,77 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview; + +import java.util.Calendar; +import java.util.Locale; +import java.text.SimpleDateFormat; + + +/** maps weekday names to Calendar.DAY_OF_WEEK. + Example: +
    +       WeekdayMapper mapper = new WeekdayMapper();
    +       // print name of Sunday
    +       System.out.println(mapper.getName(Calendar.SUNDAY));
    +       // Create a weekday ComboBox
    +       JComboBox comboBox = new JComboBox();
    +       comboBox.setModel(new DefaultComboBoxModel(mapper.getNames()));
    +       // select sunday
    +       comboBox.setSelectedIndex(mapper.getIndexForDay(Calendar.SUNDAY));
    +       // weekday == Calendar.SUNDAY
    +       int weekday = mapper.getDayForIndex(comboBox.getSelectedIndex());
    +   
    + +*/ +public class WeekdayMapper { + String[] weekdayNames; + int[] weekday2index; + int[] index2weekday; + + public WeekdayMapper() { + this(Locale.getDefault()); + } + + public WeekdayMapper(Locale locale) { + weekdayNames = new String[7]; + weekday2index = new int[8]; + index2weekday = new int[8]; + SimpleDateFormat format = new SimpleDateFormat("EEEEEE",locale); + Calendar calendar = Calendar.getInstance(locale); + calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); + for (int i=0;i<7;i++) { + weekday2index[calendar.get(Calendar.DAY_OF_WEEK)] = i; + index2weekday[i] = calendar.get(Calendar.DAY_OF_WEEK); + weekdayNames[i] = format.format(calendar.getTime()); + calendar.add(Calendar.DATE,1); + } + } + + public String[] getNames() { + return weekdayNames; + } + + public String getName(int weekday) { + return getNames()[indexForDay(weekday)]; + } + + public int dayForIndex(int index) { + return index2weekday[index]; + } + + public int indexForDay(int weekday) { + return weekday2index[weekday]; + } + +} + diff --git a/src/org/rapla/components/calendarview/html/AbstractHTMLView.java b/src/org/rapla/components/calendarview/html/AbstractHTMLView.java new file mode 100644 index 0000000..e0490d0 --- /dev/null +++ b/src/org/rapla/components/calendarview/html/AbstractHTMLView.java @@ -0,0 +1,145 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.calendarview.html; + +import java.util.*; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; +import org.rapla.components.calendarview.CalendarView; +import org.rapla.components.calendarview.WeekdayMapper; +import org.rapla.components.calendarview.BlockComparator; + +public abstract class AbstractHTMLView implements CalendarView { + public static String COLOR_NO_RESOURCE = "#BBEEBB"; + protected Collection builders = new ArrayList(); + /** shared calendar instance. Only used for temporary stored values. */ + Calendar blockCalendar; + WeekdayMapper weekdayMapper; + Date startDate; + Date endDate; + String m_html; + protected Collection excludeDays = Collections.EMPTY_SET; + + Locale locale; + TimeZone timeZone; + Builder builder; + + public void setTimeZone(TimeZone timeZone) { + this.timeZone = timeZone; + if ( locale != null) { + blockCalendar = createCalendar(); + } + } + + public void setLocale(Locale locale) { + this.locale = locale; + if ( timeZone != null) { + blockCalendar = createCalendar(); + } + weekdayMapper = new WeekdayMapper( locale ); + } + + public TimeZone getTimeZone() { + return timeZone; + } + + public void addBuilder(Builder b) { + builders.add(b); + } + + public void removeBuilder(Builder b) { + builders.remove(b); + } + + public void rebuild(Builder builder) { + try { + addBuilder( builder); + rebuild(); + } finally { + removeBuilder( builder ); + } + } + + public void setToDate(Date weekDate) { + calcMinMaxDates( weekDate ); + } + + public void setExcludeDays(Collection excludeDays) { + this.excludeDays = excludeDays; + if (startDate != null) + calcMinMaxDates( startDate ); + } + + abstract public Collection getBlocks(); + abstract void calcMinMaxDates( Date date ); + + Calendar createCalendar() { + return Calendar.getInstance(getTimeZone(),locale); + } + + void checkBlock( Block bl ) { + if ( !bl.getStart().before(this.endDate)) { + throw new IllegalStateException("Start-date " +bl.getStart() + " must be before calendar end at " +this.endDate); + } + } + public Date getStartDate() { + return startDate; + } + + public Date getEndDate() { + return endDate; + } + + public String getHtml() { + return m_html; + } + + + protected class HTMLSmallDaySlot extends ArrayList { + private static final long serialVersionUID = 1L; + + private String date; + public HTMLSmallDaySlot(String date) { + super(2); + this.date = date; + } + public void putBlock(Block block) { + add( block ); + } + public void sort() { + Collections.sort( this, BlockComparator.COMPARATOR); + } + + public void paint(StringBuffer out) { + out.append("
    "); + out.append( date ); + out.append("
    \n"); + for ( int i=0;i"); + out.append(block.toString()); + out.append("\n"); + } + } + } + + + + +} diff --git a/src/org/rapla/components/calendarview/html/HTMLBlock.java b/src/org/rapla/components/calendarview/html/HTMLBlock.java new file mode 100644 index 0000000..7de2039 --- /dev/null +++ b/src/org/rapla/components/calendarview/html/HTMLBlock.java @@ -0,0 +1,8 @@ +package org.rapla.components.calendarview.html; + +import org.rapla.components.calendarview.Block; + +public interface HTMLBlock extends Block { + String getBackgroundColor(); + String toString(); +} \ No newline at end of file diff --git a/src/org/rapla/components/calendarview/html/HTMLCompactWeekView.java b/src/org/rapla/components/calendarview/html/HTMLCompactWeekView.java new file mode 100644 index 0000000..c02a76e --- /dev/null +++ b/src/org/rapla/components/calendarview/html/HTMLCompactWeekView.java @@ -0,0 +1,189 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.calendarview.html; + +import java.util.*; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; +import org.rapla.components.calendarview.swing.SwingWeekView; + +public class HTMLCompactWeekView extends AbstractHTMLView { + public final static int ROWS = 6; //without the header row + public final static int COLUMNS = 7; + /** shared calendar instance. Only used for temporary stored values. */ + HTMLSmallDaySlot[] slots = {}; + String[] slotNames = {}; + private ArrayList rows = new ArrayList(); + private boolean[] excluded = new boolean[COLUMNS]; + + void calcMinMaxDates(Date date) { + Calendar calendar = createCalendar(); + calendar.setTime(date); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.HOUR_OF_DAY,0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); + startDate = null; + endDate = null; + for (int i=0;i\n"); + result.append("\n"); + result.append(""); + result.append(""); + + for (int i=0;i"); + result.append(""); + result.append(headerNames[i]); + result.append(""); + result.append(""); + } + result.append("\n"); + + int rowsize = rows.size(); + + slots = new HTMLSmallDaySlot[rowsize * COLUMNS]; + for (int row=0;row\n"); + result.append("\n"); + if ( slotNames.length > row ) { + result.append( slotNames[ row ] ); + } + result.append("\n"); + for (int column=0;column < COLUMNS; column++) { + List blocks = (List) rows.get( row ); + int fieldNumber = row * COLUMNS + column; + slots[fieldNumber] = createField( blocks, column ); + if ( !isExcluded( column ) ) { + result.append("\n"); + slots[fieldNumber].paint( result ); + result.append("\n"); + } + } + result.append("\n"); + } + result.append(""); + m_html = result.toString(); + } + + private HTMLSmallDaySlot createField(List blocks, int column) { + HTMLSmallDaySlot c = new HTMLSmallDaySlot(""); + if ( blocks != null) { + Iterator it = blocks.iterator(); + while (it.hasNext()){ + HTMLBlock block = (HTMLBlock)it.next(); + blockCalendar.setTime(block.getStart()); + int day = blockCalendar.get(Calendar.DAY_OF_WEEK); + if ( weekdayMapper.indexForDay(day) == column ) { + c.putBlock( block ); + } + } + } + c.sort(); + return c; + }; + + + public void addBlock(Block block, int slot) { + checkBlock( block ); + while ( rows.size() <= slot ) { + addRow(); + } + ArrayList blocks = (ArrayList) rows.get( slot ); + blocks.add( block ); + + blockCalendar.setTime(block.getStart()); + int weekday = blockCalendar.get(Calendar.DAY_OF_WEEK); + excluded[weekdayMapper.indexForDay( weekday )] = false; + } + + private void addRow() { + rows.add( rows.size(), new ArrayList()); + } + +} diff --git a/src/org/rapla/components/calendarview/html/HTMLMonthView.java b/src/org/rapla/components/calendarview/html/HTMLMonthView.java new file mode 100644 index 0000000..c9847e5 --- /dev/null +++ b/src/org/rapla/components/calendarview/html/HTMLMonthView.java @@ -0,0 +1,162 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.calendarview.html; + +import java.text.SimpleDateFormat; +import java.util.*; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; + +public class HTMLMonthView extends AbstractHTMLView { + public final static int ROWS = 6; //without the header row + public final static int COLUMNS = 7; + /** shared calendar instance. Only used for temporary stored values. */ + int daysInMonth; + HTMLSmallDaySlot[] slots; + + void calcMinMaxDates(Date date) { + blockCalendar.setTime( date ); + blockCalendar.set(Calendar.DAY_OF_MONTH, 1); + blockCalendar.set(Calendar.HOUR_OF_DAY,0); + blockCalendar.set(Calendar.MINUTE,0); + blockCalendar.set(Calendar.SECOND,0); + blockCalendar.set(Calendar.MILLISECOND,0); + this.startDate = blockCalendar.getTime(); + blockCalendar.set(Calendar.MILLISECOND,1); + this.daysInMonth = blockCalendar.getActualMaximum( Calendar.DAY_OF_MONTH ) ; + blockCalendar.set(Calendar.MILLISECOND,0); + blockCalendar.add(Calendar.DATE, this.daysInMonth); + this.endDate = blockCalendar.getTime(); + } + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i 15) { + blockCalendar.add(Calendar.DATE, 7); + } + int startField = blockCalendar.get(Calendar.DATE) -1; + for ( int i=startField;i < slots.length;i+=7 ) { + if (!slots[i].isEmpty() ) { + return false; + } + } + return true; + } + + public void rebuild() { + String[] headerNames = weekdayMapper.getNames(); + // we need to clone the calendar, because we modify the calendar object int the getExclude() method + Calendar counter = (Calendar) blockCalendar.clone(); + + // calculate the blocks + Iterator it= builders.iterator(); + while (it.hasNext()) { + Builder b= (Builder)it.next(); + b.prepareBuild(getStartDate(),getEndDate()); + } + slots = new HTMLSmallDaySlot[ daysInMonth ]; + for (int i=0;i" + monthYearFormat.format(startDate) + "\n"); + + result.append("\n"); + result.append("\n"); + for (int i=0;i"); + result.append(""); + result.append(headerNames[i]); + result.append(""); + result.append(""); + } + result.append("\n"); + + for (int row=0; row<=lastRow; row++) { + boolean excludeRow = true; + // calculate if we can exclude the row + for (int column = 0; column\n"); + for (int column = 0; column\n"); + } else { + result.append("\n"); + } + } + result.append("\n"); + } + result.append("
    \n"); + slot.paint( result ); + result.append("
    "); + m_html = result.toString(); + } + + public void addBlock(Block block,int slot) { + checkBlock( block ); + blockCalendar.setTime(block.getStart()); + int day = blockCalendar.get(Calendar.DATE); + slots[day-1].putBlock( block ); + } +} diff --git a/src/org/rapla/components/calendarview/html/HTMLPeriodView.java b/src/org/rapla/components/calendarview/html/HTMLPeriodView.java new file mode 100644 index 0000000..6c4dd27 --- /dev/null +++ b/src/org/rapla/components/calendarview/html/HTMLPeriodView.java @@ -0,0 +1,319 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | Copyright (C) 2005 Thierry Excoffier, Universite Claude Bernard Lyon | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.calendarview.html; + +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.Locale; +import java.util.TimeZone; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; +import org.rapla.components.util.Tools; + +public class HTMLPeriodView extends AbstractHTMLView { + /** shared calendar instance. Only used for temporary stored values. */ + protected HTMLSmallDaySlot[] slots; + int weeksNr; + int startHour, endHour; + double cellHeight = 1.8, cellWidth = 10; + + /** formats the date and month in the selected locale and timeZone*/ + public static String formatDateMonth(Date date, Locale locale, TimeZone timeZone) { + FieldPosition fieldPosition = new FieldPosition( DateFormat.YEAR_FIELD ); + StringBuffer buf = new StringBuffer(); + DateFormat format = DateFormat.getDateInstance( DateFormat.SHORT, locale); + format.setTimeZone( timeZone ); + buf = format.format(date, + buf, + fieldPosition + ); + if ( fieldPosition.getEndIndex()=0) ) { + buf.delete( fieldPosition.getBeginIndex(), fieldPosition.getEndIndex() ); + } + if (buf.charAt(buf.length()-1) == '/') + return buf.substring(0,buf.length()-1); + else + return buf.toString(); + } + + /** formats the day of week, date and month in the selected locale and timeZone*/ + public static String formatDayOfWeekDateMonth(Date date, Locale locale, TimeZone timeZone) { + SimpleDateFormat format = new SimpleDateFormat("EEE", locale); + format.setTimeZone(timeZone); + return format.format(date) + " " + formatDateMonth( date,locale,timeZone ) ; + } + + /** returns the name of the weekday */ + String formatDayOfWeek(Date date) { + SimpleDateFormat format = new SimpleDateFormat("EEEEE", locale); + format.setTimeZone(getTimeZone()); + return format.format(date); + } + + public void findWorkHour() { + Calendar calendar = createCalendar(); + startHour = 24; + endHour = 0; + for(int i=0; i = endHour ) { + endHour = calendar.get(Calendar.HOUR_OF_DAY); + if ( calendar.get(Calendar.MINUTE) > 0 ) + endHour++; + } + } + } + } + + + public void setEndDate(Date endDate) { + if ( endDate == null ) { + this.endDate = null; + return; + } + Calendar calendar = createCalendar(); + calendar.setTime( endDate ); + // calendar.set(Calendar.DAY_OF_WEEK, 6); + calendar.set(Calendar.HOUR_OF_DAY,23); + calendar.set(Calendar.MINUTE,59); + calendar.set(Calendar.SECOND,59); + calendar.set(Calendar.MILLISECOND,999); + this.endDate = calendar.getTime(); + } + + void calcMinMaxDates(Date date) { + Calendar calendar = createCalendar(); + calendar.setTime( date ); + // calendar.set(Calendar.DAY_OF_WEEK, 0); + calendar.set(Calendar.HOUR_OF_DAY,0); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + this.startDate = calendar.getTime(); + + if ( this.endDate == null ) { + calendar.add(Calendar.DATE, 7*7); // 7 weeks + this.endDate = calendar.getTime(); + } + } + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i"); + result.append(formatDayOfWeekDateMonth(calendar.getTime(),locale,getTimeZone())); + result.append("\n"); + calendar.add(Calendar.DATE, 7); + } + calendar.add(Calendar.DATE, -7*weeksNr); + y += label_height; + + for(int h=startHour; h", ", "); + content = Tools.replaceAll(content, "\n", ""); + result.append("" + + "" + hour + ":" + minutes + + "-" + + hour_end + ":" + minutes_end + " " + + content + + "\n" + ); + it.remove(); + } + } + } + y++ ; + } + } + m_html = result.toString(); + } + + public void addBlock(Block bl, int slot) { + //if ( ((AbstractRaplaBlock)bl).isException() ) + // return; + + checkBlock( bl ); + + int day = (int)((bl.getStart().getTime() - startDate.getTime())/(1000*3600*24)); + if ( day >= slots.length ) + return; + + slots[day].putBlock(bl); + } + +} diff --git a/src/org/rapla/components/calendarview/html/HTMLWeekView.java b/src/org/rapla/components/calendarview/html/HTMLWeekView.java new file mode 100644 index 0000000..4fc7da0 --- /dev/null +++ b/src/org/rapla/components/calendarview/html/HTMLWeekView.java @@ -0,0 +1,375 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.calendarview.html; + +import java.util.*; +import java.text.*; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; +import org.rapla.components.calendarview.swing.SwingWeekView; + +public class HTMLWeekView extends AbstractHTMLView { + private int endHour; + private int minRow; + private int maxRow; + private int startHour; + private boolean showNonEmptyExcluded; + int m_rowsPerHour = 2; + int COLUMNS = 7; + HTMLDaySlot[] multSlots = new HTMLDaySlot[COLUMNS]; + ArrayList blocks = new ArrayList(); + ArrayList blockStart = new ArrayList(); + ArrayList blockSize = new ArrayList(); + + /** The granularity of the selection rows. + *
      + *
    • 1: 1 rows per hour = 1 Hour
    • + *
    • 2: 2 rows per hour = 1/2 Hour
    • + *
    • 3: 3 rows per hour = 20 Minutes
    • + *
    • 4: 4 rows per hour = 15 Minutes
    • + *
    • 6: 6 rows per hour = 10 Minutes
    • + *
    • 12: 12 rows per hour = 5 Minutes
    • + *
    + * Default is 2. + */ + public void setRowsPerHour(int rows) { + m_rowsPerHour = rows; + } + + public int getRowsPerHour() { + return m_rowsPerHour; + } + + void calcMinMaxDates(Date date) { + blockCalendar.setTime(date); + blockCalendar.set(Calendar.MINUTE,0); + blockCalendar.set(Calendar.HOUR_OF_DAY,0); + blockCalendar.set(Calendar.SECOND,0); + blockCalendar.set(Calendar.MILLISECOND,0); + blockCalendar.set(Calendar.DAY_OF_WEEK,blockCalendar.getFirstDayOfWeek()); + startDate = null; + endDate = null; + for (int i=0;i24) + throw new IllegalStateException("builder.getMax() is greater than 24"); + } + minRow = start * m_rowsPerHour; + maxRow = end * m_rowsPerHour; + for (int i=0;i\n"); + result.append("\n"); + result.append(""+getWeekNumberRow()+""); + for (int i=0;i<7;i++) { + if ( isExcluded ( i ) ) + continue; + result.append(""); + result.append(""); + result.append(headerNames[i]); + result.append(""); + result.append(""); + } + result.append("\n"); + result.append(""); + boolean useAM_PM = org.rapla.components.calendarview.swing.TimeScale.isAmPmFormat( locale ); + //System.out.println("USING AM_PM" + useAM_PM); + for (int row = minRow;row\n"); + if ( row % m_rowsPerHour == 0) { + result.append(""); + result.append(timeString); + result.append(""); + result.append("  \n"); + } + + + + for (int day=0;day<7;day++) { + if (isExcluded(day)) + continue; + if (multSlots[day].size() == 0) + { + // Rapla 1.4: Make line for full hours darker than others + if ((row - minRow) % m_rowsPerHour == 0) + { + result.append(" "); + result.append(" \n"); + } + else + { + result.append(" "); + result.append(" \n"); + } + } + for (int slotnr = 0; slotnr < multSlots[day].size(); slotnr++) + { + // Rapla 1.4: Make line for full hours darker than others + if ((row - minRow) % m_rowsPerHour == 0) + { + result.append(" "); + } + else + { + result.append(" "); + } + + Slot slot = multSlots[day].getSlotAt(slotnr); + if (slot.isSkip(row)) + { + // Do nothing + } + else if (slot.isEmpty(row)) + { + // Rapla 1.4: Make line for full hours darker than others + if ((row - minRow) % m_rowsPerHour == 0 || (!slot.isEmpty(row-1) && (row-minRow) > 0)) + { + result.append(" \n"); + } + else + { + result.append(" \n"); + } + } + else + { + Block block = slot.getBlock(row); + int rowspan = slot.getBlockSize(row) - Math.max(minRow - slot.getBlockStart(row), 0); + result.append(""); + result.append(block.toString()); + result.append("\n"); + } + } + + // Rapla 1.4: Make line for full hours darker than others + if ((row - minRow) % m_rowsPerHour == 0) + { + result.append(" "); + } + else + { + result.append(" "); + } + } + + result.append("\n\n"); + } + result.append("\n"); + m_html = result.toString(); + } + + protected String getWeekNumberRow() { + return ""; //To change body of created methods use File | Settings | File Templates. + } + + public void addBlock(Block block,int slot) { + checkBlock ( block ); + blockCalendar.setTime(block.getStart()); + int day = blockCalendar.get(Calendar.DAY_OF_WEEK); + HTMLDaySlot multiSlot = multSlots[weekdayMapper.indexForDay(day)]; + blockCalendar.setTime( block.getStart()); + int row = (int) ( + blockCalendar.get(Calendar.HOUR_OF_DAY)* m_rowsPerHour + + Math.round((blockCalendar.get(Calendar.MINUTE) * m_rowsPerHour)/60.0) + ); + blockCalendar.setTime(block.getEnd()); + row = Math.max( minRow, row ); + int endRow = (int) ( + blockCalendar.get(Calendar.HOUR_OF_DAY)* m_rowsPerHour + + Math.round((blockCalendar.get(Calendar.MINUTE) * m_rowsPerHour)/60.0) + ); + endRow = Math.min( maxRow, endRow ); + int rowCount = endRow -row; + blocks.add(block); + blockStart.add(new Integer(row)); + blockSize.add(new Integer( rowCount)); + multiSlot.putBlock( blocks.size() - 1, slot, row, rowCount); + } + + private String formatTime(int minuteOfDay,boolean useAM_PM) { + blockCalendar.set(Calendar.MINUTE, minuteOfDay%60); + int hour = minuteOfDay/60; + blockCalendar.set(Calendar.HOUR_OF_DAY, hour); + SimpleDateFormat format = new SimpleDateFormat(useAM_PM ? "h:mm" : "H:mm", locale); + format.setTimeZone(blockCalendar.getTimeZone()); + if (useAM_PM && hour == 12 && minuteOfDay%60 == 0) { + return format.format(blockCalendar.getTime()) + " PM"; + } else { + return format.format(blockCalendar.getTime()); + } + } + + protected class HTMLDaySlot extends ArrayList { + private static final long serialVersionUID = 1L; + + int minSlotRow = 0; + private boolean empty = true; + + public HTMLDaySlot(int minRow,int size) { + super(size); + this.minSlotRow = minRow; + } + + public void putBlock(int blockNr,int slotnr, int row,int size) { + while (slotnr >= size()) { + addSlot(); + } + getSlotAt(slotnr).putBlock( blockNr, row, size); + empty = false; + } + + public int addSlot() { + Slot slot = new Slot(minSlotRow); + add(slot); + return size(); + } + public Slot getSlotAt(int index) { + return (Slot) get(index); + } + + public boolean isEmpty() { + return empty; + } + } + + protected class Slot { + int EMPTY = -2; + int SKIP = -1; + int[] rows = new int[24 * m_rowsPerHour]; + int minSlotRow = 0; + + public Slot(int minRow) { + this.minSlotRow = minRow; + for (int i = 0;i < rows.length;i++) { + rows[i] = EMPTY; + } + } + + public void putBlock(int blockNr, int row, int size) { + int start = Math.max(minSlotRow , row ); + rows[start] = blockNr; + for (int i = start + 1;i < row + size;i++) { + rows[i] = SKIP; + } + } + + public boolean isSkip(int row) { + return rows[row]==SKIP; + } + + public boolean isEmpty(int row) { + return rows[row]==EMPTY; + } + + public Block getBlock(int row) { + if (rows[row] == SKIP || rows[row] == EMPTY ) + return null; + else + return (Block) blocks.get(rows[row]); + } + + public int getBlockStart(int row) { + return ((Integer)blockStart.get(rows[row])).intValue(); + } + public int getBlockSize(int row) { + return ((Integer)blockSize.get(rows[row])).intValue(); + } + + } +} diff --git a/src/org/rapla/components/calendarview/package.html b/src/org/rapla/components/calendarview/package.html new file mode 100644 index 0000000..143ce1e --- /dev/null +++ b/src/org/rapla/components/calendarview/package.html @@ -0,0 +1,7 @@ + +Provides basic functionality for displaying and editing appointment blocks, +in table-like components. + + + + diff --git a/src/org/rapla/components/calendarview/swing/AbstractDaySlot.java b/src/org/rapla/components/calendarview/swing/AbstractDaySlot.java new file mode 100644 index 0000000..bae6da9 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/AbstractDaySlot.java @@ -0,0 +1,227 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Graphics; +import java.awt.Point; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.JPanel; +import javax.swing.UIManager; + +abstract class AbstractDaySlot extends JPanel implements DaySlot +{ + private static final long serialVersionUID = 1L; + private boolean bEditable = true; + boolean paintDraggingGrid; + int draggingSlot; + int draggingY; + SwingBlock draggingView; + int draggingHeight; + protected Map blockViewMapper = new HashMap(); + protected Method getButtonMethod = null; + + AbstractDaySlot() { + try { + //is only available sind 1.4 + getButtonMethod = MouseEvent.class.getMethod("getButton", new Class[] {}); + } catch (Exception ex) { + } + } + + public void setEditable(boolean b) { + bEditable = b; + } + + public boolean isEditable() { + return bEditable; + } + + SwingBlock getBlockFor(Object component) { + return (SwingBlock) blockViewMapper.get(component); + } + + protected void showPopup(MouseEvent evt) { + Point p = new Point(evt.getX(),evt.getY()); + SwingBlock block = getBlockFor(evt.getSource()); + if (block != null) + draggingHandler.blockPopup(block,p); + } + + protected Color getSelectionColor() { + return UIManager.getColor("Table.selectionBackground"); + } + + public void paintDraggingGrid(int slot,int y, int height,SwingBlock draggingView,int oldY,int oldHeight,boolean bPaint) { + this.paintDraggingGrid = bPaint; + this.draggingSlot = slot; + this.draggingY = y; + this.draggingHeight = height; + this.draggingView = draggingView; + this.invalidateDragging(oldY, oldHeight); + } + + public int getX(Component component) { + return component.getParent().getLocation().x; + } + + void invalidateDragging(int oldY, int oldHeight) { + repaint(); + } + + void setDraggingHandler(DraggingHandler draggingHandler) { + this.draggingHandler = draggingHandler; + } + + private DraggingHandler draggingHandler; + /** BlockListener handles the dragging events and the Block + * Context Menu (right click). + */ + class BlockListener extends MouseAdapter implements MouseMotionListener{ + boolean preventDragging = false; + + public void mouseClicked(MouseEvent evt) { + if (evt.isPopupTrigger()) { + showPopup(evt); + } else { + if (evt.getClickCount()>1) + blockEdit(evt); + } + //draggingPointOffset = evt.getY(); + } + + private int calcResizeDirection( MouseEvent evt ) { + if ( !draggingHandler.supportsResizing()) + return 0; + int height = ((Component)evt.getSource()).getHeight(); + int diff = height- evt.getY() ; + if ( diff <= 5 && diff >=0 ) + return 1; + if (evt.getY() >=0 && evt.getY() < 5) + return -1; + return 0; + } + + public void mousePressed(MouseEvent evt) { + if (evt.isPopupTrigger()) { + showPopup(evt); + } + //System.out.println ("Button:" +evt.getButton() ); + preventDragging = false; + if ( getButtonMethod != null) { + try { + Integer button = (Integer) getButtonMethod.invoke( evt, new Object [] {}); + preventDragging = button.intValue() != 1; + } catch (Exception ex) { + } + } + if ( preventDragging ) + return; + SwingBlock block = getBlockFor(evt.getSource()); + int resizeDirection = calcResizeDirection( evt ); + if ( resizeDirection != 0) { + draggingHandler.blockBorderPressed( AbstractDaySlot.this,block, evt, resizeDirection ); + } + } + + public void mouseReleased(MouseEvent evt) { + if (evt.isPopupTrigger()) { + showPopup(evt); + } + preventDragging = false; + SwingBlock block = getBlockFor(evt.getSource()); + draggingHandler.mouseReleased( AbstractDaySlot.this, block, evt); + } + + public void mouseEntered(MouseEvent evt) { + } + + public void mouseExited(MouseEvent evt) { + if ( draggingHandler.isDragging()) + return; + setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + + public void mouseMoved(MouseEvent evt) { + if ( draggingHandler.isDragging()) { + return; + } + SwingBlock block = getBlockFor(evt.getSource()); + if ( calcResizeDirection( evt ) == 1 && block.isEndResizable()) { + setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR)); + } else if (calcResizeDirection( evt ) == -1 && block.isStartResizable()){ + setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR)); + } else { + setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + } + + public void mouseDragged(MouseEvent evt) { + if ( preventDragging || !isEditable()) + return; + + SwingBlock block = getBlockFor(evt.getSource()); + + draggingHandler.mouseDragged( AbstractDaySlot.this, block, evt); + } + + + private void blockEdit(MouseEvent evt) { + SwingBlock block = getBlockFor(evt.getSource()); + draggingHandler.blockEdit(block,new Point(evt.getX(),evt.getY())); + } + } + + protected void paintDraggingGrid(Graphics g, int x, int y, int width, int height) { + /* + Rectangle rect = g.getClipBounds(); + int startx = draggingView.getView().getX(); + int starty = draggingView.getView().getY(); + g.setColor(Color.gray); + for (int y1=10;y1= rect.x + && x2 <= rect.x + rect.width + && y2 >= rect.y + && y2 <= rect.y + rect.height + ) + g.drawRect(x2,y2,2,2); + } + */ + g.translate( x-1, y-1); + + if ( draggingView != null) { + draggingView.paintDragging( g, width , height +1 ); + } + g.translate( -(x-1), -(y-1)); + + + } + + static int count = 0; +} + + + + diff --git a/src/org/rapla/components/calendarview/swing/AbstractSwingCalendar.java b/src/org/rapla/components/calendarview/swing/AbstractSwingCalendar.java new file mode 100644 index 0000000..79f7273 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/AbstractSwingCalendar.java @@ -0,0 +1,367 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Point; +import java.awt.Rectangle; +import java.text.DateFormat; +import java.text.FieldPosition; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.Locale; +import java.util.TimeZone; + +import javax.swing.BoxLayout; +import javax.swing.JPanel; +import javax.swing.JScrollBar; +import javax.swing.JScrollPane; +import javax.swing.JViewport; +import javax.swing.ScrollPaneConstants; +import javax.swing.border.Border; +import javax.swing.border.EtchedBorder; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; +import org.rapla.components.calendarview.CalendarView; +import org.rapla.components.calendarview.WeekdayMapper; +import org.rapla.components.layout.TableLayout; + + +public abstract class AbstractSwingCalendar extends JPanel implements CalendarView { + + private static final long serialVersionUID = 1L; + static Border SLOTHEADER_BORDER = new EtchedBorder(); + int slotSize = 100; + boolean bEditable = true; + protected Collection excludeDays = Collections.EMPTY_SET; + + WeekdayMapper weekdayMapper; + TimeZone timeZone; + private Date startDate; + private Date endDate; + + ArrayList listenerList = new ArrayList(); + + JScrollPane scrollPane = new JScrollPane(); + JPanel jHeader = new JPanel(); + BoxLayout boxLayout1 = new BoxLayout(jHeader, BoxLayout.X_AXIS); + JPanel jCenter = new JPanel(); + Locale locale; + + + Collection builders = new ArrayList(); + + /** Calendar used by the put block method */ + protected Calendar blockCalendar; + /** Differing slot size for resource column */ + private int resourceSlotSize; + + AbstractSwingCalendar(boolean showScrollPane) { + jHeader.setLayout(boxLayout1); + jHeader.setOpaque( false ); + jCenter.setOpaque( false ); + if (showScrollPane) { + setLayout(new BorderLayout()); + add(scrollPane,BorderLayout.CENTER); + scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); + scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setViewportView(jCenter); + scrollPane.setColumnHeaderView(jHeader); + scrollPane.getVerticalScrollBar().setUnitIncrement(10); + scrollPane.getHorizontalScrollBar().setUnitIncrement(10); + scrollPane.setBorder(null); + } else { + setLayout(new TableLayout(new double[][] { + {TableLayout.PREFERRED,TableLayout.FILL} + ,{TableLayout.PREFERRED,TableLayout.FILL} + })); + add(jHeader,"1,0"); + add(jCenter,"1,1"); + } + this.timeZone = TimeZone.getDefault(); + setLocale( Locale.getDefault() ); + } + + public void setTimeZone(TimeZone timeZone) { + this.timeZone = timeZone; + blockCalendar = createCalendar(); + } + + Calendar createCalendar() { + return Calendar.getInstance(getTimeZone(),locale); + } + + public TimeZone getTimeZone() { + return timeZone; + } + + public void setLocale(Locale locale) { + this.locale = locale; + weekdayMapper = new WeekdayMapper( locale ); + super.setLocale( locale); + // Constructor called? + if (timeZone != null) { + setTimeZone( timeZone ); + blockCalendar = createCalendar(); + } + } + + public void setToDate(Date date) { + calcMinMaxDates( date ); + } + + protected void setStartDate( Date startDate ) + { + this.startDate = startDate; + } + + public Date getStartDate() + { + return startDate; + } + + protected void setEndDate( Date endDate ) + { + this.endDate = endDate; + } + + public Date getEndDate() + { + return endDate; + } + + public void setExcludeDays(Collection excludeDays) { + this.excludeDays = excludeDays; + if (getStartDate() != null) + calcMinMaxDates( getStartDate() ); + } + + abstract void calcMinMaxDates(Date date); + + void checkBlock( Block bl ) { + if ( !bl.getStart().before(this.getEndDate())) { + throw new IllegalStateException("Start-date " +bl.getStart() + " must be before calendar end at " +this.getEndDate()); + } + } + + public boolean isEditable() { + return bEditable; + } + + public void setEditable( boolean editable ) { + bEditable = editable; + } + + /** + Width of a single slot in pixel. + */ + public void setSlotSize(int slotSize) { + this.slotSize = Math.max(40, Math.min(300,slotSize)); + } + + public int getSlotSize() { + return slotSize; + } + + public void setBackground(Color color) { + super.setBackground(color); + if (scrollPane != null) + scrollPane.setBackground(color); + if (jCenter != null) + jCenter.setBackground(color); + if (jHeader != null) + jHeader.setBackground(color); + } + + public Iterator getBuilders() { + return builders.iterator(); + } + + public void addBuilder(Builder b) { + builders.add(b); + } + + public void removeBuilder(Builder b) { + builders.remove(b); + } + + public void addCalendarViewListener(ViewListener listener) { + listenerList.add(listener); + } + + public void removeCalendarViewListener(ViewListener listener) { + listenerList.remove(listener); + } + + JScrollPane getScrollPane() { + return scrollPane; + } + + void scrollTo(int x, int y) { + JViewport viewport = scrollPane.getViewport(); + Rectangle rect = viewport.getViewRect(); + + int leftBound = rect.x; + int upperBound = rect.y; + int lowerBound = rect.y + rect.height; + int rightBound = rect.x + rect.width; + int maxX = viewport.getView().getWidth(); + int maxY = viewport.getView().getHeight(); + + + JScrollBar scrollBar = scrollPane.getVerticalScrollBar(); + if ( y > lowerBound && lowerBound < maxY) { + scrollBar.setValue(scrollBar.getValue() + 20); + } + if ( y < upperBound && upperBound >0) { + scrollBar.setValue(scrollBar.getValue() - 20); + } + + scrollBar = scrollPane.getHorizontalScrollBar(); + if ( x > rightBound && rightBound < maxX) { + scrollBar.setValue(scrollBar.getValue() + 20); + } + if ( x < leftBound && leftBound >0) { + scrollBar.setValue(scrollBar.getValue() - 20); + } + } + + public void rebuild(Builder builder) { + try { + addBuilder( builder); + rebuild(); + } finally { + removeBuilder( builder ); + } + } + + public ViewListener[] getWeekViewListeners() { + return (ViewListener[])listenerList.toArray(new ViewListener[]{}); + } + + final void fireSelectionChanged(Date start, Date end) { + // Fire the popup event + ViewListener[] listeners = getWeekViewListeners(); + for (int i=0;i=0) ) { + buf.delete( fieldPosition.getBeginIndex(), fieldPosition.getEndIndex() ); + } + if (buf.charAt(buf.length()-1) == '/') + return buf.substring(0,buf.length()-1); + else + return buf.toString(); + } + + /** formats the day of week, date and month in the selected locale and timeZone*/ + public static String formatDayOfWeekDateMonth(Date date, Locale locale, TimeZone timeZone) { + SimpleDateFormat format = new SimpleDateFormat("EEE", locale); + format.setTimeZone(timeZone); + return format.format(date) + " " + formatDateMonth( date,locale,timeZone ) ; + } + + /** returns the name of the weekday */ + String formatDayOfWeek(Date date) { + SimpleDateFormat format = new SimpleDateFormat("EEEEE", locale); + format.setTimeZone(getTimeZone()); + return format.format(date); + } + + abstract int getDayCount(); + abstract DaySlot getDay(int num); + abstract int calcSlotNr( int x, int y); + abstract int getSlotNr( DaySlot slot); + abstract int getRowsPerDay(); + abstract Date createDate( DaySlot slot, int row, boolean startOfRow); + + public int getResourceSlotSize() { + return resourceSlotSize; + } + + public void setResourceSlotSize(int resourceSlotSize) { + this.resourceSlotSize = resourceSlotSize; + } + + +} diff --git a/src/org/rapla/components/calendarview/swing/DaySlot.java b/src/org/rapla/components/calendarview/swing/DaySlot.java new file mode 100644 index 0000000..56086a0 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/DaySlot.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Point; + +interface DaySlot { + void paintDraggingGrid(int x,int y, int height,SwingBlock block, int oldY,int oldHeight,boolean bPaint); + Point getLocation(); + void unselectAll(); + int calcRow(int y); + int calcSlot(int x); + int getX(Component component); + void select(int startRow,int endRow); + void setCursor(Cursor cursor); +} diff --git a/src/org/rapla/components/calendarview/swing/DraggingHandler.java b/src/org/rapla/components/calendarview/swing/DraggingHandler.java new file mode 100644 index 0000000..b412825 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/DraggingHandler.java @@ -0,0 +1,245 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Cursor; +import java.awt.Point; +import java.awt.event.MouseEvent; +import java.util.Date; + +import org.rapla.components.calendarview.swing.scaling.IRowScaleSmall; +import org.rapla.components.calendarview.swing.scaling.OneRowScale; + + +/** DraggingHandler coordinates the drag events from the Block-Components + * between the different MultiSlots of a weekview. + */ +class DraggingHandler { + int draggingPointOffset = 0; + DaySlot oldSlot; + int oldY = 0; + int oldHeight = 0; + AbstractSwingCalendar m_cv; + Date start = null; + Date newStart = null; + Date end = null; + Date newEnd = null; + int resizeDirection; + boolean bMoving; + boolean bResizing; + boolean supportsResizing; + IRowScaleSmall rowScale; + + public DraggingHandler(AbstractSwingCalendar wv,IRowScaleSmall rowScale, boolean supportsResizing) { + this.supportsResizing = supportsResizing; + this.rowScale = rowScale; + m_cv = wv; + } + + public DraggingHandler(AbstractSwingCalendar wv, boolean supportsResizing) { + this ( wv, new OneRowScale(), supportsResizing ); + } + + public boolean supportsResizing() { + return supportsResizing; + } + + public void blockPopup(SwingBlock block,Point p) { + m_cv.fireBlockPopup(block,p); + } + + public void blockEdit(SwingBlock block,Point p) { + m_cv.fireBlockEdit(block,p); + } + + public void mouseReleased(DaySlot slot, SwingBlock block, MouseEvent evt) { + if ( isDragging() ) + stopDragging(slot, block, evt); + } + + public void blockBorderPressed(DaySlot slot,SwingBlock block,MouseEvent evt, int direction) { + if (!bResizing && supportsResizing ) { + this.resizeDirection = direction; + startResize( slot, block, evt); + } + } + + public boolean isDragging() { + return bResizing || bMoving; + } + + public void mouseDragged(DaySlot slot,SwingBlock block,MouseEvent evt) { + if ( bResizing ) + startResize( slot, block, evt ); + else + startMoving( slot, block, evt ); + } + + private void dragging(DaySlot slot,SwingBlock block,int _x,int _y,boolean bDragging) { + // 1. Calculate slot + DaySlot newSlot = null; + if ( bResizing ) { + newSlot = slot; + } else { + int slotNr = m_cv.calcSlotNr( + slot.getLocation().x + _x + , slot.getLocation().y + _y); + newSlot = m_cv.getDay( slotNr ); + if (newSlot == null) + return; + } + + // 2. Calculate new x relative to slot + + int y = _y; + int xslot = 0; + int height = block.getView().getHeight(); + xslot = newSlot.calcSlot( slot.getLocation().x + _x - newSlot.getLocation().x ); + if ( bResizing ) { + if ( resizeDirection == 1) { + y = block.getView().getLocation().y; + // we must trim the endRow + int endrow = newSlot.calcRow(_y ) + 1; + endrow = Math.max( newSlot.calcRow(y) + 2, endrow); + height = rowScale.getYCoordForRow(endrow) - y; + if ( bDragging ) { + start = block.getStart(); + end = m_cv.createDate( newSlot, endrow, true); + //System.out.println ( "Resizeing@end: start=" + start + ", end=" + end) ; + } + } else if (resizeDirection == -1){ + // we must trim y + y = rowScale.trim( y ); + int row = newSlot.calcRow( y ) ; + int rowSize = rowScale.getRowSizeForRow( row ); + y = Math.min ( block.getView().getLocation().y + block.getView().getHeight() - rowSize, y ); + height = block.getView().getLocation().y + block.getView().getHeight() - y; + if ( bDragging ) { + row = newSlot.calcRow( y ); + if(y==0) + start = m_cv.createDate( newSlot, row, true); + else + start = m_cv.createDate( newSlot, row, false); + + end = block.getEnd(); + //System.out.println ( "Resizeing@start: start=" + start + ", end=" + end) ; + } + } + } else if (bMoving){ + // we must trim y + //y = rowScale.trim( y); + if ( bDragging ) { + start = m_cv.createDate( newSlot, newSlot.calcRow( y ), true); + //System.out.println ( "Moving: start=" + start + ", end=" + end +" row: " + row) ; + } + } + if (oldSlot != null && oldSlot != newSlot) + oldSlot.paintDraggingGrid(xslot, y, height, block, oldY, oldHeight, false); + + newSlot.paintDraggingGrid(xslot, y, height, block, oldY, oldHeight, bDragging); + oldSlot = newSlot; + oldY = y; + oldHeight = height; + } + + private void startMoving(DaySlot slot,SwingBlock block,MouseEvent evt) { + if (!bMoving) { + draggingPointOffset = evt.getY(); + if (block.isMovable()) { + bMoving = true; + slot.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + } else { + bMoving = false; + slot.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + return; + } + } + if ( block == null) + return; + int x = evt.getX() + slot.getX(block.getView()); + int y = evt.getY() + block.getView().getLocation().y; + + scrollTo( slot, x, y); + // Correct y with the draggingPointOffset + y = evt.getY() - draggingPointOffset + block.getView().getLocation().y ; + + y += rowScale.getDraggingCorrection(y ) ; + dragging( slot, block, x, y, bMoving); + } + + private void startResize(DaySlot slot,SwingBlock block, MouseEvent evt) { + if ( block == null) + return; + int x = evt.getX() + slot.getX(block.getView()); + int y = evt.getY() + block.getView().getLocation().y; + if (!bResizing) { + if (block.isMovable() && ( ( resizeDirection == -1 && block.isStartResizable() ) + || ( resizeDirection == 1 && block.isEndResizable()))) { + bResizing = true; + } else { + bResizing = false; + return; + } + } + + scrollTo( slot, x, y); + dragging( slot, block, x, y, bResizing); + } + + private void stopDragging(DaySlot slot, SwingBlock block,MouseEvent evt) { + slot.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if ( block == null) { + return ; + } + + if (!m_cv.isEditable()) + return; + try { + int x = evt.getX() + slot.getX( block.getView() ); + int y = evt.getY() - draggingPointOffset + block.getView().getLocation().y ; + y += rowScale.getDraggingCorrection(y ); + + dragging(slot,block,x,y,false); + Point upperLeft = m_cv.getScrollPane().getViewport().getViewPosition(); + Point newPoint = new Point(slot.getLocation().x + x -upperLeft.x + ,y-upperLeft.y); + if ( bMoving ) { + // Has the block moved + //System.out.println("Moved to " + newStart + " - " + newEnd); + if ( !start.equals( block.getStart() ) ) { + m_cv.fireMoved(block, newPoint, start); + } + } + if ( bResizing ) { + // System.out.println("Resized to " + start + " - " + end); + if ( !( start.equals( block.getStart() ) && end.equals( block.getEnd()) )) { + m_cv.fireResized(block, newPoint, start, end); + } + } + } finally { + bResizing = false; + bMoving = false; + start = null; + end = null; + } + } + + // Begin scrolling when hitting the upper or lower border while + // dragging or selecting. + private void scrollTo(DaySlot slot,int x,int y) { + // 1. Transfer p.x relative to jCenter + m_cv.scrollTo(slot.getLocation().x + x, slot.getLocation().y + y); + } + +} + diff --git a/src/org/rapla/components/calendarview/swing/LargeDaySlot.java b/src/org/rapla/components/calendarview/swing/LargeDaySlot.java new file mode 100644 index 0000000..9d6df56 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/LargeDaySlot.java @@ -0,0 +1,374 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Vector; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JComponent; +import javax.swing.JPanel; + +import org.rapla.components.calendarview.swing.scaling.IRowScale; + + +/** Komponente, welche eine beliebige anzahl von Slot-komponenten zusammenfasst. +* die slots koennen zur laufzeit hinzugefuegt oder auch dynamisch bei bedarf +*erzeugt werden. sie werden horizontal nebeneinander angeordnet. +*/ +class LargeDaySlot extends AbstractDaySlot implements DaySlot +{ + private static final long serialVersionUID = 1L; + + public static Color THICK_LINE_COLOR = Color.black; + public static Color LINE_COLOR = new Color(0xaa, 0xaa, 0xaa); + public static Color WORKTIME_BACKGROUND = Color.white; + public static Color NON_WORKTIME_BACKGROUND = new Color(0xcc, 0xcc, 0xcc); + + private Vector slots= new Vector(); + private int slotxsize; + + private int selectionStart = -1; + private int selectionEnd = -1; + private int oldSelectionStart = -1; + private int oldSelectionEnd = -1; + + BoxLayout boxLayout1 = new BoxLayout(this, BoxLayout.X_AXIS); + int right_gap = 8; + int left_gap = 5; + int slot_space = 3; + JComponent header; + IRowScale rowScale; + + private BlockListener blockListener = new BlockListener(); + /** + es muss auch noch setTimeIntervall() aufgerufen werden, um die initialisierung + fertig zu stellen (wie beim konstruktor von Slot). + slotxsize ist die breite der einzelnen slots. + "date" legt das Datum fest, fuer welches das Slot anzeigt (Uhrzeit bleibt unberuecksichtigt) + */ + public LargeDaySlot( + int slotxsize + ,IRowScale rowScale + ,JComponent header) { + this.slotxsize= slotxsize; + this.rowScale = rowScale; + this.header = header; + setLayout(boxLayout1); + this.add(Box.createHorizontalStrut(left_gap)); + addSlot(); + setBackground(getBackground()); + setAlignmentX(0); + setAlignmentY(TOP_ALIGNMENT); + this.setBackground(Color.white); + } + + public boolean isBorderVisible() { + return true; +// return getBackground() != Color.white; + } + + public void setVisible(boolean b) { + super.setVisible(b); + header.setVisible(b); + } + + public JComponent getHeader() { + return header; + } + + public int calcSlot(int x) { + int slot = ((x - left_gap) / (slotxsize + slot_space)); + //System.out.println ( x + " slot " + slot); + if (slot<0) + slot = 0; + if (slot >= slots.size()) + slot = slots.size() -1; + return slot; + } + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i= slots.size()) { + addSlot(); + } + ((Slot)slots.elementAt(slotnr)).putBlock(bl); + // The blockListener can be shared among all blocks, + // as long es we can only click on one block simultanously + bl.getView().addMouseListener(blockListener); + bl.getView().addMouseMotionListener(blockListener); + blockViewMapper.put(bl.getView(),bl); + } + + public Dimension getMinimumSize() { return getPreferredSize(); } + public Dimension getMaximumSize() { return getPreferredSize(); } + Insets insets = new Insets(0,0,0, right_gap); + Insets slotInsets = new Insets(0,0,0,0); + + public Insets getInsets() { + return insets; + } + + SwingBlock getBlockFor(Object component) { + return (SwingBlock) blockViewMapper.get(component); + } + + int getBlockCount() { + int count = 0; + Iterator it = slots.iterator(); + while (it.hasNext()) + count += ((Slot)it.next()).getBlockCount(); + return count; + } + + boolean isEmpty() { + return getBlockCount() == 0; + } + + protected void invalidateDragging(Point oldPoint) { + int width = (int) getSize().width; + int startRow = Math.min(calcRow(draggingY),calcRow(oldPoint.y )); + int endRow = Math.max(calcRow(draggingY),calcRow(oldPoint.y )) + 1; + repaint(0 + , rowScale.getYCoordForRow(startRow) -10 + , width + , rowScale.getSizeInPixelBetween(startRow, endRow) + draggingHeight + 20 + ); + } + + private void invalidateSelection() { + int width = (int) getSize().width; + int startRow = Math.min(selectionStart,oldSelectionStart); + int endRow = Math.max(selectionEnd,oldSelectionEnd) + 1; + repaint(0,rowScale.getYCoordForRow(startRow ), width, rowScale.getSizeInPixelBetween(startRow, endRow )); + // Update the values after calling repaint, because paint needs the old values. + oldSelectionStart = selectionStart; + oldSelectionEnd = selectionEnd; + } + + public void paint(Graphics g) { + Dimension dim = getSize(); + Rectangle rect = g.getClipBounds(); + if (!isEditable()) { + g.setColor(Color.white); + g.fillRect(rect.x + ,rect.y + ,rect.width + ,rect.height); + } else { + int starty = rowScale.getStartWorktimePixel(); + int endy = rowScale.getEndWorktimePixel(); + int height = rowScale.getSizeInPixel(); + Color firstColor = NON_WORKTIME_BACKGROUND; + Color secondColor = WORKTIME_BACKGROUND; + + if ( starty >= endy) + { + int c = starty; + starty = endy; + endy = c; + secondColor = NON_WORKTIME_BACKGROUND; + firstColor = WORKTIME_BACKGROUND; + } + + if (rect.y - rect.height <= starty) { + g.setColor( firstColor ); + g.fillRect(rect.x + ,Math.max(rect.y,0) + ,rect.width + ,Math.min(rect.height,starty)); + } + if (rect.y + rect.height >= starty && rect.y <= endy ) { + g.setColor( secondColor ); + g.fillRect(rect.x + ,Math.max(rect.y,starty) + ,rect.width + ,Math.min(rect.height,endy - starty)); + } + if (rect.y + rect.height >= endy) { + g.setColor( firstColor ); + g.fillRect(rect.x + ,Math.max(rect.y,endy) + ,rect.width + ,Math.min(rect.height, height - endy)); + } + } + + if (isBorderVisible()) { + g.setColor(LINE_COLOR); + g.drawLine(0,rect.y,0,rect.y + rect.height); + g.drawLine(dim.width - 1,rect.y,dim.width - 1 ,rect.y + rect.height); + } + + int max = rowScale.getMaxRows() ; + // Paint selection + for (int i=0; i < max ; i++) { + int rowSize = rowScale.getRowSizeForRow( i); + int y = rowScale.getYCoordForRow( i); + if ((y + rowSize) >= rect.y && y < (rect.y + rect.height)) { + if (i>= selectionStart && i<=selectionEnd) { + g.setColor(getSelectionColor()); + g.fillRect(Math.max (rect.x,1) + , y + , Math.min (rect.width,dim.width - Math.max (rect.x,1) - 1) + , rowSize); + } + boolean bPaintRowThick = (rowScale.isPaintRowThick(i)); + g.setColor((bPaintRowThick) ? THICK_LINE_COLOR : LINE_COLOR); + if (isEditable() || (bPaintRowThick && (i getMaximumSize().height) + y2 = getMaximumSize().height; + b.getView().setBounds(0, y1, slotxsize, y2 - y1 + 1); + add(b.getView()); + } + + public int getBlockCount() { + return blocks.size(); + } + + public Dimension getMinimumSize() { return getPreferredSize(); } + public Dimension getMaximumSize() { return getPreferredSize(); } + + public Insets getInsets() { + return slotInsets; + } + + public Collection getBlocks() { + return blocks; + } + } + + + + public int calcRow( int y ) + { + return rowScale.calcRow( y); + } +} + + + diff --git a/src/org/rapla/components/calendarview/swing/PeriodDaySlot.java b/src/org/rapla/components/calendarview/swing/PeriodDaySlot.java new file mode 100644 index 0000000..b456f13 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/PeriodDaySlot.java @@ -0,0 +1,401 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.TimeZone; +import java.util.Vector; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JPanel; + + +class PeriodDaySlot extends AbstractDaySlot implements DaySlot +{ + private static final long serialVersionUID = 1L; + + private int rowsPerHour = 4; + + public static Color THICK_LINE_COLOR = Color.black; + public static Color LINE_COLOR = new Color(0xaa, 0xaa, 0xaa); + public static Color WORKTIME_BACKGROUND = Color.white; + public static Color NON_WORKTIME_BACKGROUND = new Color(0xcc, 0xcc, 0xcc); + + private Vector slots= new Vector(); + private int mintime, maxtime; + private int slotxsize; + private TimeZone timeZone; + + private int selectionStart = -1; + private int selectionEnd = -1; + private int oldSelectionStart = -1; + private int oldSelectionEnd = -1; + + BoxLayout boxLayout1 = new BoxLayout(this, BoxLayout.X_AXIS); + int right_gap = 5; + int left_gap = 3; + int slot_space = 3; + int rowSize; + + private BlockListener blockListener = new BlockListener(); + /** + es muss auch noch setTimeIntervall() aufgerufen werden, um die initialisierung + fertig zu stellen (wie beim konstruktor von Slot). + slotxsize ist die breite der einzelnen slots. + "date" legt das Datum fest, fuer welches das Slot anzeigt (Uhrzeit bleibt unberuecksichtigt) + */ + public PeriodDaySlot( + TimeZone timeZone + ,int slotxsize + ,int rowsPerHour + ,int rowSize + ) { + this.timeZone = timeZone; + this.slotxsize= slotxsize; + this.rowsPerHour = rowsPerHour; + this.rowSize = rowSize; + setLayout(boxLayout1); + this.add(Box.createHorizontalStrut(left_gap)); + addSlot(); + setBackground(getBackground()); + setAlignmentX(0); + setAlignmentY(TOP_ALIGNMENT); + this.setBackground(Color.white); + } + + private Calendar calendar = null; + private Calendar getCalendar() { + // Lazy creation of the calendar + if (calendar == null) + calendar = Calendar.getInstance(timeZone); + return calendar; + } + + public boolean isBorderVisible() { + return true; +// return getBackground() != Color.white; + } + + // override + public int calcRow(int y) { + y -= 3 ; // Excoffier: Why ? + if ( y < 0 ) + y -= rowSize - 1; + int row = y / rowSize; + return row; + } + + // override + public int calcHour(int index) { + index += 7 * this.rowsPerHour * (maxtime - mintime) ; // Goto positives + index = index % (this.rowsPerHour * (maxtime - mintime)) ; + return index / rowsPerHour; + } + + // override + public int calcMinute(int index) { + int minutesPerRow = 60 / rowsPerHour; + index += rowsPerHour * 24 * 7 ; // So it is positive + return (index % rowsPerHour) * (minutesPerRow); + } + + // override + private int addSlot() { + Slot slot= new Slot(); + slot.setTimeIntervall(mintime,maxtime); + slots.addElement(slot); + this.add(slot); + this.add(Box.createHorizontalStrut(slot_space)); + return slots.size()-1; + } + + // XXX Thierry Excoffier, this draggingY correction should be + // implemented in AbstractDaySlot? + // It is badly implemented here. + public int dragY() { + int h = this.rowsPerHour * ((maxtime - mintime) * rowSize) ; + return (draggingY + 7*h) % h; + } + + public int calcSlot(int x) { + int slot = ((x - left_gap) / (slotxsize + slot_space)); + //System.out.println ( x + " slot " + slot); + if (slot<0) + slot = 0; + if (slot >= slots.size()) + slot = slots.size() -1; + return slot; + } + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i= slots.size()) { + addSlot(); + } + ((Slot)slots.elementAt(slotnr)).putBlock(bl); + // The blockListener can be shared among all blocks, + // as long es we can only click on one block simultanously + bl.getView().addMouseListener(blockListener); + bl.getView().addMouseMotionListener(blockListener); + blockViewMapper.put(bl.getView(),bl); + } + + public Dimension getMinimumSize() { return getPreferredSize(); } + public Dimension getMaximumSize() { return getPreferredSize(); } + Insets insets = new Insets(0,0,0, right_gap); + Insets slotInsets = new Insets(0,0,0,0); + + public Insets getInsets() { + return insets; + } + + SwingBlock getBlockFor(Object component) { + return (SwingBlock) blockViewMapper.get(component); + } + + int getBlockCount() { + int count = 0; + Iterator it = slots.iterator(); + while (it.hasNext()) + count += ((Slot)it.next()).getBlockCount(); + return count; + } + + boolean isEmpty() { + return getBlockCount() == 0; + } + + protected void invalidateDragging(Point oldPoint) { + int width = (int) getSize().width; + int start = Math.min(calcRow(dragY()),calcRow(oldPoint.y )); + int end = Math.max(calcRow(dragY()),calcRow(oldPoint.y )) + 1; + repaint(0 + , start * rowSize -10 + , width + , (end - start) * rowSize + draggingHeight + 20 + ); + } + + private void invalidateSelection() { + int width = (int) getSize().width; + int start = Math.min(selectionStart,oldSelectionStart); + int end = Math.max(selectionEnd,oldSelectionEnd) + 1; + repaint(0,start * rowSize, width, (end - start) * rowSize); + // Update the values after calling repaint, because paint needs the old values. + oldSelectionStart = selectionStart; + oldSelectionEnd = selectionEnd; + } + + int max; + public void paint(Graphics g) { + Dimension dim = getSize(); + Rectangle rect = g.getClipBounds(); + + g.setColor(Color.white); + g.fillRect(rect.x + ,rect.y + ,rect.width + ,rect.height); + + if (isBorderVisible()) { + g.setColor(LINE_COLOR); + g.drawLine(0,rect.y,0,rect.y + rect.height); + g.drawLine(dim.width - 1,rect.y,dim.width - 1 ,rect.y + rect.height); + } + + max = rowsPerHour * (maxtime - mintime); + + // System.out.println (g + " start=" + selectionStart + " end=" + selectionEnd); + + + for (int i=0; i <= max ; i++) { + int y = rowSize * i; + if ((y + rowSize) >= rect.y && y < (rect.y + rect.height)) { + if (i>= selectionStart && i<=selectionEnd) { + g.setColor(getSelectionColor()); + g.fillRect(Math.max (rect.x,1) + , y + , Math.min (rect.width,dim.width - Math.max (rect.x,1) - 1) + , rowSize); + } + boolean bFullHour = (i % rowsPerHour == 0); + g.setColor((bFullHour) ? THICK_LINE_COLOR : LINE_COLOR); + if (isEditable() || (bFullHour && (i= y2) + { + x += 4; + y1 -= 4; + y2 -= 4; + } + } + + blocks.add(b); + if ( y1 < 0) + y1 = 0; + if ( y2 > getMaximumSize().height) + y2 = getMaximumSize().height; + b.getView().setBounds(x, y1, slotxsize - right_gap - left_gap, y2 - y1 + 1); + add(b.getView()); + } + + public int getBlockCount() { + return blocks.size(); + } + + public Dimension getMinimumSize() { return getPreferredSize(); } + public Dimension getMaximumSize() { return getPreferredSize(); } + + public Insets getInsets() { + return slotInsets; + } + + public ArrayList getBlocks() { + return blocks; + } + } +} \ No newline at end of file diff --git a/src/org/rapla/components/calendarview/swing/SelectionHandler.java b/src/org/rapla/components/calendarview/swing/SelectionHandler.java new file mode 100644 index 0000000..db57ed1 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/SelectionHandler.java @@ -0,0 +1,248 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.util.Date; +import java.awt.Point; +import java.awt.Component; +import javax.swing.SwingUtilities; +import java.awt.event.*; + +/** SelectionHandler handles the selection events and the Slot + * Context Menu (right click). + * This is internally used by the weekview to communicate with its slots. + */ +class SelectionHandler extends MouseAdapter implements MouseMotionListener { + Date start; + Date end; + boolean bPopupClicked = false; + boolean bSelecting = false; + public int selectionStart = -1; + public int selectionEnd = -1; + private int oldIndex = -1; + private int oldSlotNr = -1; + private int startSlot = -1; + private int endSlot = -1; + private int draggingSlot = -1; + private int draggingIndex = -1; + AbstractSwingCalendar m_wv; + boolean periodSelection; + + public SelectionHandler(AbstractSwingCalendar wv) { + m_wv = wv; + } + + public void mouseClicked(MouseEvent evt) { + if (evt.isPopupTrigger()) { + bPopupClicked = true; + slotPopup(evt); + } else { + /* We don't check click here + if (SwingUtilities.isLeftMouseButton(evt)) + move(evt); + */ + } + } + public void mousePressed(MouseEvent evt) { + if (evt.isPopupTrigger()) { + bPopupClicked = true; + slotPopup(evt); + } else { + if (SwingUtilities.isLeftMouseButton(evt)) + move(evt); + } + } + + public void mouseReleased(MouseEvent evt) { + if (evt.isPopupTrigger()) { + bPopupClicked = true; + slotPopup(evt); + } + if (SwingUtilities.isLeftMouseButton(evt) && !bPopupClicked) + move(evt); + bPopupClicked = false; + bSelecting = false; + } + + public void mouseDragged(MouseEvent evt) { + if (SwingUtilities.isLeftMouseButton(evt) && !bPopupClicked) + move(evt); + } + public void mouseMoved(MouseEvent evt) { + } + + public void setPeriodSelection(boolean period) { + periodSelection = period; + } + + private void clearSelection() { + for (int i=0;i draggingIndex ) { + selectionStart = draggingIndex; + selectionEnd = selectedIndex; + } else if (selectedIndex < draggingIndex ){ + selectionStart = selectedIndex; + selectionEnd = draggingIndex; + } + } else if (slotNr > draggingSlot) { + startSlot = draggingSlot; + selectionStart = draggingIndex; + endSlot = slotNr; + selectionEnd = selectedIndex; + } else if (slotNr < draggingSlot) { + startSlot = slotNr; + selectionStart = selectedIndex; + endSlot = draggingSlot; + selectionEnd = draggingIndex; + } + if (selectedIndex == oldIndex && slotNr == oldSlotNr) + return; + int rowsPerDay = m_wv.getRowsPerDay(); + if (selectedIndex >= rowsPerDay-1) + selectedIndex = rowsPerDay-1; + } + oldSlotNr = slotNr; + oldIndex = selectedIndex; + setSelection(); + m_wv.scrollTo( + m_wv.getDay(slotNr).getLocation().x + evt.getX() + ,m_wv.getDay(slotNr).getLocation().y + evt.getY() + ); + } + + private void setSelection() { + + int startRow = selectionStart; + int endRow = m_wv.getRowsPerDay() -1; + + + for (int i=0;i selectionEnd ) { + startRow = selectionEnd; + endRow = selectionStart; + } else { + startRow = selectionStart; + endRow = selectionEnd; + } + int startSlotDay = startSlot % 7; + int endSlotDay = endSlot % 7; + int startDayOfWeek = Math.min(startSlotDay, endSlotDay); + int endDayOfWeek = Math.max(startSlotDay, endSlotDay); + int maxRow = m_wv.getRowsPerDay(); + int realEndSlot = (endSlot/7)*7 + endDayOfWeek + 1; + // System.out.println("selectionStart=" + selectionStart + " selectionEnd=" + selectionEnd + " startslot=" + startSlot + " endSlot=" + endSlot + " maxrow=" + maxRow) ; + for (int i=(startSlot/7)*7;i<=realEndSlot;i++) { + if (m_wv.getDay(i) == null) + continue; + int dayOfWeek = i % 7; + if ( dayOfWeek < startDayOfWeek + || dayOfWeek > endDayOfWeek + ) + m_wv.getDay(i).unselectAll(); + else if ( dayOfWeek > startDayOfWeek + && dayOfWeek < endDayOfWeek) + m_wv.getDay(i).select(0, 10000); // XXX Excoffier + else if ( dayOfWeek == startDayOfWeek + && dayOfWeek == endDayOfWeek) + m_wv.getDay(i).select(startRow,endRow); + else if ( dayOfWeek == startDayOfWeek + && dayOfWeek < endDayOfWeek) + m_wv.getDay(i).select((startRow+7*maxRow) % maxRow,10000); // XXX + else if ( dayOfWeek > startDayOfWeek + && dayOfWeek == endDayOfWeek) + m_wv.getDay(i).select(0, endRow % maxRow); + else + System.out.println("Should raise an error"); // XXX + } + for (int i=realEndSlot;i startSlot) + startRow = 0; + if (i == endSlot) + endRow = selectionEnd; + if (m_wv.getDay(i) != null) + m_wv.getDay(i).select(startRow,endRow); + } + startRow = selectionStart ; + endRow = selectionEnd ; + for (int i=endSlot+1;i=0 || endRow>=0); + if (this.selected == selected) + return; + this.selected = selected; + invalidateSelection(); + } + + public void unselectAll() { + if (!selected ) + return; + selected = false; + invalidateSelection(); + } + + private void invalidateSelection() { + repaint(); + // Update the values after calling repaint, because paint needs the old values. + } + + + /** + fuegt einen block im gewuenschten slot ein + (konflikte werden ignoriert). + */ + public void putBlock(SwingBlock bl) { + add( bl.getView() ); + blocks.add( bl ); + // The blockListener can be shared among all blocks, + // as long es we can only click on one block simultanously + bl.getView().addMouseListener( blockListener ); + bl.getView().addMouseMotionListener( blockListener ); + blockViewMapper.put( bl.getView(), bl ); + int height = Math.max( 50, blocks.size() * BLOCK_HEIGHT + START_GAP ); + Dimension newSize = new Dimension( slotxsize, height ); + setPreferredSize( newSize ); + } + + void sort() { + Collections.sort( blocks, BlockComparator.COMPARATOR); + updateBounds(); + } + + private void updateBounds() { + for (int i=0;i< blocks.size();i++) { + int y = i * BLOCK_HEIGHT + START_GAP; + SwingBlock bl = (SwingBlock) blocks.get(i); + bl.getView().setBounds( 1 ,y, slotxsize -1, BLOCK_HEIGHT -1); + } + } + + public Dimension getMinimumSize() { return getPreferredSize(); } + public Dimension getMaximumSize() { return getPreferredSize(); } + Insets insets = new Insets(0,0,0, 0); + + public Insets getInsets() { + return insets; + } + + int getBlockCount() { + return blocks.size(); + } + + public boolean isEmpty() { + return getBlockCount() == 0; + } + + public int calcRow(int y) { + return 0; + } + + public int calcSlot(int x) { + return 0; + } + + public int getX(Component component) { + return component.getLocation().x; + } + + int max; + public void paint(Graphics g) { + Dimension dim = getSize(); + Rectangle rect = g.getClipBounds(); + g.setColor(Color.white); + + if ( selected ) { + g.setColor(getSelectionColor()); + } else { + g.setColor(getBackground()); + } + + g.fillRect(rect.x + , rect.y + , rect.x + rect.width + , rect.y + rect.height); + + if (isBorderVisible()) { + g.setColor(LINE_COLOR); + g.drawLine(0,rect.y,0,rect.y + rect.height); + g.drawLine(dim.width - 1,rect.y,dim.width - 1 ,rect.y + rect.height); + g.drawLine(rect.x,0, rect.x + rect.width,0); + g.drawLine(rect.x, dim.height -1, rect.x + rect.width, dim.height -1); + } + + g.setColor( dateNumberColor ); + int numberWidth = g.getFontMetrics().stringWidth( number ); + g.drawString( number , dim.width - numberWidth - 5, Math.max( START_GAP, 10 ) ); + + super.paintChildren(g); + if ( paintDraggingGrid ) { + int height = draggingView.getView().getHeight() - 1; + int x = 0; + int y = draggingView.getView().getBounds().y; + if ( y + height + 2> getHeight()) { + y = getHeight() - height -2; + } + paintDraggingGrid(g, x, y, slotxsize -1, height ); + } + } + + public int getRowSize() + { + return rowSize; + } + +} + + + diff --git a/src/org/rapla/components/calendarview/swing/SwingBlock.java b/src/org/rapla/components/calendarview/swing/SwingBlock.java new file mode 100644 index 0000000..24cbc32 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/SwingBlock.java @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Component; +import java.awt.Graphics; + +import org.rapla.components.calendarview.Block; + +public interface SwingBlock extends Block { + Component getView(); + public void paintDragging(Graphics g, int width, int height); + boolean isMovable(); + boolean isStartResizable(); + boolean isEndResizable(); +} diff --git a/src/org/rapla/components/calendarview/swing/SwingCompactWeekView.java b/src/org/rapla/components/calendarview/swing/SwingCompactWeekView.java new file mode 100644 index 0000000..9ddb5ed --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/SwingCompactWeekView.java @@ -0,0 +1,328 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Point; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import javax.swing.JComponent; +import javax.swing.JLabel; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.Builder; +import org.rapla.components.layout.TableLayout; + +/** Graphical component for displaying a calendar like weekview. + * This view doesn't show the times and arragenes the different slots + * verticaly. +*/ +public class SwingCompactWeekView extends AbstractSwingCalendar +{ + private static final long serialVersionUID = 1L; + + public final static int COLUMNS = 7; + private SmallDaySlot[] slots = new SmallDaySlot[0]; + private ArrayList rows = new ArrayList(); + DraggingHandler draggingHandler = new DraggingHandler(this, false); + SelectionHandler selectionHandler = new SelectionHandler(this); + String[] slotNames = new String[] {}; + private boolean[] excluded = new boolean[COLUMNS]; + + public SwingCompactWeekView() { + this(true); + } + + public SwingCompactWeekView(boolean showScrollPane) { + super( showScrollPane ); + } + + void calcMinMaxDates(Date date) { + Calendar calendar = createCalendar(); + calendar.setTime(date); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.HOUR_OF_DAY,0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + calendar.set(Calendar.DAY_OF_WEEK,calendar.getFirstDayOfWeek()); + this.setStartDate( null ); + this.setEndDate( null ); + for (int i=0;i 0) { + tableLayout.insertColumn(0, getResourceSlotSize()); + jHeader.add( createSlotHeader( null ), "0,0,l,t" ); + } else { + tableLayout.insertColumn(0, 0); + } + + // add headers + for (int column=0;column=0 && nr< slots.length) + return slots[nr]; + else + return null; + } + + int getDayCount() { + return slots.length; + } + + int calcSlotNr(int x, int y) { + for (int i=0;i 15) { + calendar.add(Calendar.DATE, 7); + } + int startField = calendar.get(Calendar.DATE) -1; + for ( int i=startField;i < slots.length;i+=7 ) { + if (!slots[i].isEmpty() ) { + return false; + } + } + return true; + } + + public Collection getBlocks(int dayOfMonth) { + int index = dayOfMonth-1; + return Collections.unmodifiableCollection(slots[ index ].getBlocks()); + } + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i=0 && nr< slots.length) + return slots[nr]; + else + return null; + } + + int getDayCount() { + return slots.length; + } + + int calcSlotNr(int x, int y) { + for (int i=0;i + *
  • 1: 1 rows per hour = 1 Hour
  • + *
  • 2: 2 rows per hour = 1/2 Hour
  • + *
  • 3: 3 rows per hour = 20 Minutes
  • + *
  • 4: 4 rows per hour = 15 Minutes
  • + *
  • 6: 6 rows per hour = 10 Minutes
  • + *
  • 12: 12 rows per hour = 5 Minutes
  • + * + * Default is 4. + */ + public void setRowsPerHour(int rowsPerHour) { + this.rowsPerHour = rowsPerHour; + } + + /** @see #setRowsPerHour */ + public int getRowsPerHour() { + return rowsPerHour; + } + + /** The size of each row (in pixel). Default is 15.*/ + public void setRowSize(int rowSize) { + this.rowSize = rowSize; + } + + public int getRowSize() { + return rowSize; + } + + public void setWorktime(int startHour, int endHour) { + this.startHour = startHour; + this.endHour = endHour; + if (getStartDate() != null) + calcMinMaxDates( getStartDate() ); + } + + + void calcMinMaxDates(Date date) { + Calendar calendar = createCalendar(); + calendar.setTime( date ); + // calendar.set(Calendar.DAY_OF_WEEK, 0); + calendar.set(Calendar.HOUR_OF_DAY,0); + calendar.set(Calendar.MINUTE,0); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + this.setStartDate( calendar.getTime() ); + + if ( this.getEndDate() == null + || (this.getEndDate().getTime() - this.getStartDate().getTime())<7L*7*24*3600*1000 + ) { + calendar.add(Calendar.DATE, 7*7); // 7 weeks (no scroll bar) + this.setEndDate( calendar.getTime() ); + } + } + + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i=0 && nr< slots.length) { + return slots[nr]; + } else { + return null; + } + } + + int getDayCount() { + return weeksNr * 7; + } + + + int calcSlotNr(int x, int y) { + for (int i=0;i=viewRect.x && + (slotRect.x + slotRect.width)< + (viewRect.x + viewRect.width ) + ) + { + return; + } + + scrollSlot.scrollRectToVisible(new Rectangle(0 + ,viewRect.y + ,scrollSlot.getWidth() + ,10)); + } + + public void scrollToStart() { + int y = rowScale.getStartWorktimePixel(); + int x = 0; + scrollPane.getViewport().setViewPosition(new Point(x,y)); + } + + public Collection getBlocks() { + ArrayList list = new ArrayList(); + for (int i=0;i + *
  • 1: 1 rows per hour = 1 Hour
  • + *
  • 2: 2 rows per hour = 1/2 Hour
  • + *
  • 3: 3 rows per hour = 20 Minutes
  • + *
  • 4: 4 rows per hour = 15 Minutes
  • + *
  • 6: 6 rows per hour = 10 Minutes
  • + *
  • 12: 12 rows per hour = 5 Minutes
  • + * + * Default is 4. + */ + public void setRowsPerHour(int rowsPerHour) { + if ( rowScale instanceof LinearRowScale) + ((LinearRowScale)rowScale).setRowsPerHour(rowsPerHour); + } + + /** @see #setRowsPerHour */ + public int getRowsPerHour() { + if ( rowScale instanceof LinearRowScale) + return ((LinearRowScale)rowScale).getRowsPerHour(); + return 0; + } + + /** The size of each row (in pixel). Default is 15.*/ + public void setRowSize(int rowSize) { + if ( rowScale instanceof LinearRowScale) + ((LinearRowScale)rowScale).setRowSize(rowSize); + } + + public int getRowSize() { + if ( rowScale instanceof LinearRowScale) + return ((LinearRowScale)rowScale).getRowSize(); + return 0; + } + + public void setBackground(Color color) { + super.setBackground(color); + if (timeScale != null) + timeScale.setBackground(color); + } + + public void setEditable(boolean b) { + super.setEditable( b ); + // Hide the rest + for (int i= 0;i24) + throw new IllegalStateException("builder.getMax() is greater than 24"); + } + } + + //rowScale = new VariableRowScale(); + if ( rowScale instanceof LinearRowScale) + { + LinearRowScale linearScale = (LinearRowScale) rowScale; + int pixelPerHour = linearScale.getRowsPerHour() * linearScale.getRowSize(); + + timeScale.setBackground(getBackground()); + + linearScale.setTimeZone( timeZone ); + if ( isEditable()) + { + ((TimeScale)timeScale).setTimeIntervall(0, 24, pixelPerHour); + linearScale.setTimeIntervall( 0, 24); + } + else + { + ((TimeScale)timeScale).setTimeIntervall(start, end, pixelPerHour); + linearScale.setTimeIntervall( start, end); + } + linearScale.setWorktime( this.startHour, this.endHour); + } + else + { + timeScale.setBackground(getBackground()); + + ((TimeScale)timeScale).setTimeIntervall(0, 24, 60); + VariableRowScale periodScale = (VariableRowScale) rowScale; + periodScale.setTimeZone( timeZone ); + } + + // create Slots + Calendar calendar = createCalendar(); + calendar.setTime(getStartDate()); + calendar.set( Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); + DraggingHandler draggingHandler = new DraggingHandler(this, rowScale,true); + SelectionHandler selectionHandler = new SelectionHandler(this); + + for (int i=0; i=0 && nr< daySlots.length) + return daySlots[nr]; + else + return null; + } + + int getDayCount() { + return daySlots.length; + } + + int calcSlotNr(int x, int y) { + for (int i=0;i0); + } + + + + /** + mintime und maxtime definieren das zeitintevall in vollen stunden. + die skalen-einteilung wird um vgap pixel nach unten verschoben + (um ggf. zu justieren). + */ + public void setTimeIntervall(int mintime, int maxtime, int pixelPerHour) { + removeAll(); + this.mintime = mintime; + this.maxtime = maxtime; + this.pixelPerHour = pixelPerHour; + //setBackground(Color.yellow); + //super(JSeparator.VERTICAL); + setLayout(null); + setPreferredSize(new Dimension( SCALE_WIDTH, (maxtime-mintime + 1) * pixelPerHour * repeat)); + } + + private void createHours(Locale locale) { + hours = new String[24]; + Calendar cal = Calendar.getInstance(locale); + SimpleDateFormat format = new SimpleDateFormat(useAM_PM ? "h" : "H",locale); + for (int i=0;i<24;i++) { + cal.set(Calendar.HOUR_OF_DAY,i); + hours[i] = format.format(cal.getTime()); + } + } + + + public void setSmallSize(boolean smallSize) { + this.smallSize = smallSize; + } + + public void setRepeat(int repeat, String[] days) { + this.repeat = repeat; + this.days = days; + } + + public void paint(Graphics g) { + super.paint(g); + int indent[]; + int heightHour = (int) fm1.getLineMetrics("12",g).getHeight() ; + int heightEnding = (int) fm2.getLineMetrics("12",g).getHeight() ; + int current_y ; + + // Compute indentations + FontMetrics fm; + String[] indent_string = new String[3] ; + if ( days != null ) { + indent_string[0] = "M"; + indent_string[1] = "M2"; + indent_string[2] = "M22"; + } else { + indent_string[0] = ""; + indent_string[1] = "2"; + indent_string[2] = "22"; + } + if ( smallSize ) { + fm = fm2; + } else { + fm = fm1; + } + + indent = new int[3]; + for(int i=0; i<3; i++) { + indent[i] = (int) fm.stringWidth(indent_string[i]) ; + } + + Rectangle rect = g.getClipBounds(); + //System.out.println(mintime + " - " + maxtime); + int height = (maxtime - mintime) * pixelPerHour + 1 ; + + if ( days != null ) { + g.drawLine(indent[0]+1,0,indent[0]+1,repeat*height); + } + + for (int r=0; r= pad ) { + prefix = days[r].substring(i-mintime-pad,i-mintime+1-pad); + } else { + prefix = null; + } + + if (y >= rect.y && y <= (rect.y + rect.height)) { + g.drawLine(i == mintime ? 0:indent[0]+1,y,SCALE_WIDTH ,y); + } + if (y >= rect.y -heightHour && y <= (rect.y + rect.height) + heightHour ) { + if ( smallSize ) { + g.setFont(fontSmall); + } else { + g.setFont(fontLarge); + } + if ( prefix != null ) { + g.drawString(prefix, (indent[0]-fm.stringWidth(prefix)+1)/2,y + heightEnding); + } + g.drawString(hours[i],(hour < 10) ? indent[1]+2:indent[0]+2,y + ( smallSize ? heightEnding : heightHour)); + if ( !smallSize ) { + g.setFont(fontSmall); + } + g.drawString(ending, indent[2]+2,y + heightEnding); + } + } + } + } +} + diff --git a/src/org/rapla/components/calendarview/swing/ViewListener.java b/src/org/rapla/components/calendarview/swing/ViewListener.java new file mode 100644 index 0000000..2f12b1b --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/ViewListener.java @@ -0,0 +1,46 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.calendarview.swing; + +import java.awt.Point; +import java.awt.Component; +import java.util.Date; + +import org.rapla.components.calendarview.Block; + +/** Listeners for user-changes in the weekview.*/ +public interface ViewListener { + /** Invoked when the user invokes the slot-contex (right-clicks on slot). + The selected area and suggested + coordinates at which the popup menu can be shown are passed.*/ + void selectionPopup(Component slotComponent,Point p,Date start,Date end, int slotNr); + /** Invoked when the selection has changed.*/ + void selectionChanged(Date start,Date end); + /** Invoked when the user invokes a block-context (right-clicks on a block). + The suggested coordinates at which the popup menu can be shown are passed.*/ + void blockPopup(Block block,Point p); + /** Invoked when the user invokes a block-edit (double-clicks on a block). + The suggested coordinates at which the popup menu can be shown are passed.*/ + void blockEdit(Block block,Point p); + /** Invoked when the user has dragged/moved a block */ + void moved(Block block,Point p,Date newStart); + /** Invoked when the user has resized a block */ + void resized(Block block,Point p,Date newStart, Date newEnd); +} + + + + + + + diff --git a/src/org/rapla/components/calendarview/swing/scaling/IRowScale.java b/src/org/rapla/components/calendarview/swing/scaling/IRowScale.java new file mode 100644 index 0000000..8c1793c --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/scaling/IRowScale.java @@ -0,0 +1,20 @@ +package org.rapla.components.calendarview.swing.scaling; + +import java.util.Date; + + + +public interface IRowScale extends IRowScaleSmall +{ + int calcHour( int index ); + int calcMinute( int index ); + int getSizeInPixel(); + int getMaxRows(); + int getRowsPerDay(); + int getYCoord( Date time ); + int getStartWorktimePixel(); + int getEndWorktimePixel(); + int getSizeInPixelBetween( int startRow, int endRow ); + + boolean isPaintRowThick( int row ); +} \ No newline at end of file diff --git a/src/org/rapla/components/calendarview/swing/scaling/IRowScaleSmall.java b/src/org/rapla/components/calendarview/swing/scaling/IRowScaleSmall.java new file mode 100644 index 0000000..9588640 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/scaling/IRowScaleSmall.java @@ -0,0 +1,11 @@ +package org.rapla.components.calendarview.swing.scaling; + + +public interface IRowScaleSmall +{ + int getYCoordForRow( int row ); + int getRowSizeForRow( int row ); + int calcRow( int y ); + int trim( int y ); + int getDraggingCorrection(int y); +} \ No newline at end of file diff --git a/src/org/rapla/components/calendarview/swing/scaling/LinearRowScale.java b/src/org/rapla/components/calendarview/swing/scaling/LinearRowScale.java new file mode 100644 index 0000000..b8597a8 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/scaling/LinearRowScale.java @@ -0,0 +1,161 @@ +package org.rapla.components.calendarview.swing.scaling; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + + + +public class LinearRowScale implements IRowScale +{ + private int rowSize = 15; + private int rowsPerHour = 4; + final private static int MINUTES_PER_HOUR= 60; + private TimeZone timeZone = TimeZone.getDefault(); + + private int mintime; + private int maxtime; + private int workstart; + private int workend; + + public LinearRowScale() + { + } + + public void setTimeZone( TimeZone timeZone) + { + this.timeZone = timeZone; + } + + public int getRowsPerDay() + { + return rowsPerHour * 24; + } + + public void setRowSize( int rowSize ) + { + this.rowSize = rowSize; + } + + public int getRowSize() + { + return rowSize; + } + + public int getRowsPerHour() + { + return rowsPerHour; + } + + public void setRowsPerHour( int rowsPerHour ) + { + this.rowsPerHour = rowsPerHour; + } + + public int calcHour(int index) { + return index / rowsPerHour; + } + + public int calcMinute(int index) { + int minutesPerRow = 60 / rowsPerHour; + return (index % rowsPerHour) * (minutesPerRow); + } + + public int getSizeInPixel() + { + return rowSize * getMaxRows(); + } + + public int getMaxRows() + { + int max; + max = rowsPerHour * (maxtime - mintime) ; + return max; + } + + private int getMinuteOfDay(Date time) { + Calendar cal = getCalendar(); + cal.setTime(time); + return (cal.get(Calendar.HOUR_OF_DAY )) * MINUTES_PER_HOUR + cal.get(Calendar.MINUTE); + } + + public int getYCoord(Date time) { + int diff = getMinuteOfDay(time) - mintime * MINUTES_PER_HOUR ; + int pixelPerHour= rowSize * rowsPerHour; + return (diff * pixelPerHour) / MINUTES_PER_HOUR; + } + + public int getStartWorktimePixel() + { + int pixelPerHour= rowSize * rowsPerHour; + int starty = pixelPerHour * workstart; + return starty; + } + + public int getEndWorktimePixel() + { + int pixelPerHour= rowSize * rowsPerHour; + int endy = pixelPerHour * workend; + return endy; + } + + + private Calendar calendar = null; + private Calendar getCalendar() { + // Lazy creation of the calendar + if (calendar == null) + calendar = Calendar.getInstance(timeZone); + return calendar; + } + + public boolean isPaintRowThick( int row ) + { + return row % rowsPerHour == 0; + } + + public void setTimeIntervall( int startHour, int endHour ) + { + mintime = startHour; + maxtime = endHour; + } + + public void setWorktime( int startHour, int endHour ) + { + workstart = startHour; + workend = endHour; + } + + public int getYCoordForRow( int row ) + { + return row * rowSize; + } + + public int getSizeInPixelBetween( int startRow, int endRow ) + { + return (endRow - startRow) * rowSize; + } + + public int getRowSizeForRow( int row ) + { + return rowSize; + } + + public int calcRow(int y) { + int rowsPerDay = getRowsPerDay(); + int row = (y-3) / rowSize; + return Math.min(Math.max(0, row), rowsPerDay -1); + } + + public int trim(int y ) + { + return (y / rowSize) * rowSize; + } + + public int getDraggingCorrection( int y) + { + return rowSize / 2; + } + + + +} diff --git a/src/org/rapla/components/calendarview/swing/scaling/OneRowScale.java b/src/org/rapla/components/calendarview/swing/scaling/OneRowScale.java new file mode 100644 index 0000000..d7d23c7 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/scaling/OneRowScale.java @@ -0,0 +1,38 @@ +package org.rapla.components.calendarview.swing.scaling; + + + +public class OneRowScale implements IRowScaleSmall +{ + + public int getYCoordForRow( int row ) + { + return 0; + } + + public int getSizeInPixelBetween( int startRow, int endRow ) + { + return 0; + } + + public int getRowSizeForRow( int row ) + { + return 15; + } + + public int calcRow( int y ) + { + return 0; + } + + public int trim( int y ) + { + return 0; + } + + public int getDraggingCorrection( int y) + { + return 15 / 2; + } + +} diff --git a/src/org/rapla/components/calendarview/swing/scaling/VariableRowScale.java b/src/org/rapla/components/calendarview/swing/scaling/VariableRowScale.java new file mode 100644 index 0000000..cd2fa69 --- /dev/null +++ b/src/org/rapla/components/calendarview/swing/scaling/VariableRowScale.java @@ -0,0 +1,197 @@ +package org.rapla.components.calendarview.swing.scaling; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + + + +public class VariableRowScale implements IRowScale +{ + PeriodRow[] periodRows; + private int hourSize = 60; + final private static int MINUTES_PER_HOUR= 60; + private TimeZone timeZone = TimeZone.getDefault(); + + private int mintime =0 ; + /* + private int maxtime = 24; + private int workstart = 0; + private int workend = 24; + */ + class PeriodRow + { + int minutes; + int ypos; + int startMinute; + PeriodRow( int minutes ) + { + this.minutes = minutes; + } + + public int getRowSize() + { + return (minutes * hourSize) / 60; + } + + } + + public VariableRowScale() + { + periodRows = new PeriodRow[] { + new PeriodRow( 60 * 8 ), + new PeriodRow( 45 ), + new PeriodRow( 60 ), + new PeriodRow( 10 ), + new PeriodRow( 110 ), + new PeriodRow( 60 + 15), + new PeriodRow( 60 * 3 ), + new PeriodRow( 60 * 8 ) + }; + + for ( int i=0;i< periodRows.length-1;i++) + { + periodRows[i+1].ypos = periodRows[i].ypos + periodRows[i].getRowSize(); + periodRows[i+1].startMinute = periodRows[i].startMinute + periodRows[i].minutes; + } + } + + public void setTimeZone( TimeZone timeZone) + { + this.timeZone = timeZone; + } + + public int getRowsPerDay() + { + return periodRows.length; + } + + + + public int getSizeInPixel() + { + PeriodRow lastRow = getLastRow(); + return lastRow.ypos + lastRow.getRowSize(); + } + + public int getMaxRows() + { + return periodRows.length; + } + + private int getMinuteOfDay(Date time) { + Calendar cal = getCalendar(); + cal.setTime(time); + return (cal.get(Calendar.HOUR_OF_DAY )) * MINUTES_PER_HOUR + cal.get(Calendar.MINUTE); + } + + public int calcHour(int index) { + return periodRows[index].startMinute / MINUTES_PER_HOUR; + } + + public int calcMinute(int index) { + return periodRows[index].startMinute % MINUTES_PER_HOUR; + } + + public int getYCoord(Date time) { + int diff = getMinuteOfDay(time) - mintime * MINUTES_PER_HOUR ; + return (diff * hourSize) / MINUTES_PER_HOUR; + } + + public int getStartWorktimePixel() + { + return periodRows[0].getRowSize(); + } + + public int getEndWorktimePixel() + { + PeriodRow lastRow = getLastRow(); + return lastRow.ypos; + } + + private PeriodRow getLastRow() + { + PeriodRow lastRow = periodRows[periodRows.length-1]; + return lastRow; + } + + + private Calendar calendar = null; + private Calendar getCalendar() { + // Lazy creation of the calendar + if (calendar == null) + calendar = Calendar.getInstance(timeZone); + return calendar; + } + + public boolean isPaintRowThick( int row ) + { + return true; + } +/* + public void setTimeIntervall( int startHour, int endHour ) + { + mintime = startHour; + maxtime = endHour; + } + + public void setWorktime( int startHour, int endHour ) + { + workstart = startHour; + workend = endHour; + } +*/ + public int getYCoordForRow( int row ) + { + if ( row < 0 || row >= periodRows.length) + { + return row* 400; + } + return periodRows[row].ypos; + } + + public int getSizeInPixelBetween( int startRow, int endRow ) + { + if ( startRow < 0 || endRow < 0 || startRow >= periodRows.length || endRow >=periodRows.length) + { + return (endRow - startRow) * 400; + } + + return periodRows[endRow].ypos - periodRows[startRow].ypos; + } + + public int getRowSizeForRow( int row ) + { + /* if ( row < 0 || row >= periodRows.length) + { + return 60; + } + */ + return periodRows[row].getRowSize(); + } + + public int calcRow(int y) { + for ( int i=0;i< periodRows.length;i++) + { + PeriodRow row =periodRows[i]; + if (row.ypos + row.getRowSize() >=y) + return i; + } + return 0; + } + + public int trim(int y ) + { + int row = calcRow( y ); + int rowSize = getRowSizeForRow( row); + return (y / rowSize) * rowSize; + } + + public int getDraggingCorrection(int y) + { + return 0; + } + + + +} diff --git a/src/org/rapla/components/iolayer/ComponentPrinter.java b/src/org/rapla/components/iolayer/ComponentPrinter.java new file mode 100644 index 0000000..4518803 --- /dev/null +++ b/src/org/rapla/components/iolayer/ComponentPrinter.java @@ -0,0 +1,67 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.iolayer; + +import java.awt.*; +import java.awt.print.*; +import javax.swing.*; + +/** Use this to print an awt-Component on one page. + */ +public class ComponentPrinter implements Printable +{ + private Component component; + private boolean scaleToFit; + + public ComponentPrinter(Component c, boolean scaleToFit) + { + component= c; + this.scaleToFit = scaleToFit; + } + + + public int print(Graphics g, PageFormat format, int pagenumber) throws PrinterException + { + if (pagenumber>0) { return Printable.NO_SUCH_PAGE; } + Graphics2D g2 = (Graphics2D) g; + if ( scaleToFit) { + g2.translate(format.getImageableX(), format.getImageableY()); + scaleToFit(g2, format, component); + } + component.printAll(g2); + RepaintManager rm = RepaintManager.currentManager(component); + boolean db= rm.isDoubleBufferingEnabled(); + try { + rm.setDoubleBufferingEnabled(false); + component.printAll(g2); + } finally { + rm.setDoubleBufferingEnabled(db); + } + return Printable.PAGE_EXISTS; + } + + private static void scaleToFit(Graphics2D g, PageFormat format, Component c) + { + Dimension dim = c.getPreferredSize(); + double sx = format.getImageableWidth() / dim.width; + double sy = format.getImageableHeight() / dim.height; + if (sx < sy) { sy = sx; } else { sx = sy; } + g.scale(sx, sy); + } +} + + + + + + diff --git a/src/org/rapla/components/iolayer/DEPENDECIES b/src/org/rapla/components/iolayer/DEPENDECIES new file mode 100644 index 0000000..006c692 --- /dev/null +++ b/src/org/rapla/components/iolayer/DEPENDECIES @@ -0,0 +1,5 @@ +This component depends on the following packages (including subpackages): +java.* +javax.jnlp.* (For the WebstartPrinter) +javax.print.* (For the saving in postscript-format) +org.apache.avalon.framework.* diff --git a/src/org/rapla/components/iolayer/DefaultIO.java b/src/org/rapla/components/iolayer/DefaultIO.java new file mode 100644 index 0000000..c99ee22 --- /dev/null +++ b/src/org/rapla/components/iolayer/DefaultIO.java @@ -0,0 +1,329 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.iolayer; + +import java.awt.Component; +import java.awt.FileDialog; +import java.awt.Frame; +import java.awt.Toolkit; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.Transferable; +import java.awt.print.PageFormat; +import java.awt.print.Paper; +import java.awt.print.Printable; +import java.awt.print.PrinterException; +import java.awt.print.PrinterJob; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import javax.swing.JFileChooser; +import javax.swing.filechooser.FileFilter; + +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; + +public class DefaultIO extends AbstractLogEnabled implements IOInterface{ + /** + * Name of all Rapla printjobs (used in dialogs, printerqueue, etc). + */ + public final static String RAPLA_JOB= "Rapla Printjob"; + public final static String PRINT_EXPORT_CLASS = DefaultIO.class.getPackage().getName() + ".PrintExport"; + public PrinterJob job; + + public DefaultIO(Logger logger) { + enableLogging( logger); + } + + private PrinterJob getJob() { + if (job == null) + job = PrinterJob.getPrinterJob(); + return job; + } + + public PageFormat defaultPage() throws UnsupportedOperationException { + try { + PageFormat format = getJob().defaultPage(); + return format; + } catch (SecurityException ex) { + return new PageFormat(); + } + } + + public PageFormat showFormatDialog(PageFormat format) throws UnsupportedOperationException { + logPaperSize (format.getPaper()); + format = getJob().pageDialog(format); + logPaperSize (format.getPaper()); + return format; + } + + public void setContents(Transferable transferable, ClipboardOwner owner) { + Toolkit.getDefaultToolkit().getSystemClipboard().setContents( transferable, owner ); + } + + public Transferable getContents( ClipboardOwner owner) { + return Toolkit.getDefaultToolkit().getSystemClipboard().getContents( owner); + } + + public boolean supportsPostscriptExport() { + if (!supportsPrintService()) + return false; + + Object exporter; + try { + exporter = getClass().getClassLoader().loadClass( PRINT_EXPORT_CLASS ).newInstance(); + } catch (ClassNotFoundException ex) { + getLogger().warn("No support for " + PRINT_EXPORT_CLASS + ". Compile with jdk >=1.4."); + return false; + } catch (Exception ex) { + getLogger().warn("No support for " + PRINT_EXPORT_CLASS + ". Run with jdk >= 1.4.1 : " + ex.getMessage()); + return false; + } + try { + Method method = exporter.getClass().getMethod("supportsPostscriptExport",new Class[] {}); + boolean bExport = ((Boolean) method.invoke(exporter, new Object[] {})).booleanValue(); + if (!bExport) + getLogger().warn("No support for PostscriptExport"); + return bExport; + } catch (NoSuchMethodException ex) { + getLogger().error(ex.getMessage()); + } catch (IllegalAccessException ex) { + getLogger().error(ex.getMessage()); + } catch (InvocationTargetException excont) { + Throwable ex = excont.getTargetException(); + getLogger().error(ex.getMessage(),ex); + } + return false; + } + + private boolean supportsPrintService() { + try { + getClass().getClassLoader().loadClass("javax.print.StreamPrintServiceFactory"); + return true; + } catch (ClassNotFoundException ex) { + getLogger().warn("No support for javax.print.StreamPrintServiceFactory"); + return false; + } + } + + protected void callExport(Printable printable, PageFormat format,OutputStream out) throws UnsupportedOperationException,IOException { + Object exporter; + try + { + exporter = getClass().getClassLoader().loadClass( PRINT_EXPORT_CLASS ).newInstance(); + } + catch (Exception ex) + { + throw new UnsupportedOperationException("JDK < 1.4 PrintService unavailable"); + } + try + { + Method method = exporter.getClass().getMethod("save",new Class[] {Printable.class,PageFormat.class,OutputStream.class}); + method.invoke(exporter, new Object[] {printable,format,out}); + } + catch (InvocationTargetException excont) + { + Throwable ex = excont.getTargetException(); + if (ex instanceof IOException) + { + throw (IOException)ex; + } + if (ex instanceof UnsupportedOperationException) + { + throw (UnsupportedOperationException)ex; + } + getLogger().error(ex.getMessage(),ex); + throw new IOException(ex.getMessage()); + } + catch (Exception ex) + { + throw new UnsupportedOperationException(ex.getMessage()); + } + } + + public String saveAsPostscriptShowDialog(String dir,Printable printable,PageFormat format,boolean askFormat,Component owner) throws UnsupportedOperationException,IOException { + if (askFormat) { format= showFormatDialog(format); } + JFileChooser chooser = new JFileChooser(); + + if (dir != null) + chooser.setCurrentDirectory(new File(dir)); + + // Note: source for ExampleFileFilter can be found in FileChooserDemo, + // under the demo/jfc directory in the Java 2 SDK, Standard Edition. + chooser.setFileFilter( new PSFileFilter()); + int returnVal = chooser.showOpenDialog(owner); + if(returnVal != JFileChooser.APPROVE_OPTION) + return null; + + OutputStream out = new FileOutputStream(chooser.getSelectedFile()); + callExport(printable,format,out); + return chooser.getSelectedFile().getPath(); + } + + private class PSFileFilter extends FileFilter { + public boolean accept(File file) { + return (file.isDirectory() || file.getName().toLowerCase().endsWith(".ps")); + } + + public String getDescription() { + return "Postscript Files"; + } + } + public void saveAsPostscript(Printable printable,PageFormat format,OutputStream out) throws UnsupportedOperationException,IOException { + callExport(printable,format,out); + } + + /** + Prints an awt or swing component. + @param askFormat If true a dialog will show up to allow the user to edit printformat. + */ + public boolean print(Printable printable, PageFormat format, boolean askFormat) throws PrinterException { + getJob().setPrintable(printable, format); + getJob().setJobName(RAPLA_JOB); + + if (askFormat) { + if (getJob().printDialog()) { + logPaperSize (format.getPaper()); + getJob().print(); + return true; + } + } else { + getJob().print(); + return true; + } + getJob().cancel(); + return false; + } + + void logPaperSize(Paper paper) { + if (getLogger().isDebugEnabled()) + getLogger().debug( + (paper.getImageableX()/72) * INCH_TO_MM + +", " +(paper.getImageableY()/72) * INCH_TO_MM + +", " +(paper.getImageableWidth() /72) * INCH_TO_MM + +", " +(paper.getImageableHeight() /72) * INCH_TO_MM + ); + } + + public String saveFile(Frame frame,String dir,final String[] fileExtensions, String filename, byte[] content) throws IOException { + final FileDialog fd = new FileDialog(frame, "Save File", FileDialog.SAVE); + + if ( dir == null) + { + try + { + dir = getDirectory(); + } + catch (Exception ex) + { + + } + } + if ( dir != null) + { + fd.setDirectory(dir); + } + fd.setFile(filename); + if ( fileExtensions.length > 0) + { + fd.setFilenameFilter( new FilenameFilter() { + + public boolean accept(File dir, String name) { + final String[] split = name.split("."); + if ( split.length > 1) + { + String extension = split[split.length -1].toLowerCase(); + for ( String ext: fileExtensions) + { + if ( ext.toLowerCase().equals(extension )) + { + return true; + } + } + } + return false; + } + }); + } + fd.setLocation(50, 50); + fd.setVisible( true); + final String savedFileName = fd.getFile(); + + if (savedFileName == null) { + return null; + } + + String path = createFullPath(fd); + final File savedFile = new File( path); + writeFile(savedFile, content); + return path; + } + + public FileContent openFile(Frame frame,String dir, String[] fileExtensions) throws IOException { + final FileDialog fd = new FileDialog(frame, "Open File", FileDialog.LOAD); + + if ( dir == null) + { + dir = getDirectory(); + } + fd.setDirectory(dir); + fd.setLocation(50, 50); + fd.setVisible( true); + final String openFileName = fd.getFile(); + + if (openFileName == null) { + return null; + } + String path = createFullPath(fd); + final FileInputStream openFile = new FileInputStream( path); + FileContent content = new FileContent(); + content.setName( openFileName); + content.setInputStream( openFile ); + return content; + } + + + private String getDirectory() { + final String userHome = System.getProperty("user.home"); + + if (userHome == null) { + final File execDir = new File(""); + return execDir.getAbsolutePath(); + } + + return userHome; + } + + private String createFullPath(final FileDialog fd) { + return fd.getDirectory() + + System.getProperty("file.separator").charAt(0) + fd.getFile(); + } + + private void writeFile(final File savedFile, byte[] content) throws IOException { + final FileOutputStream out; + out = new FileOutputStream(savedFile); + out.write( content); + out.flush(); + out.close(); + } + +} + + + + diff --git a/src/org/rapla/components/iolayer/FileContent.java b/src/org/rapla/components/iolayer/FileContent.java new file mode 100644 index 0000000..51021d7 --- /dev/null +++ b/src/org/rapla/components/iolayer/FileContent.java @@ -0,0 +1,23 @@ +package org.rapla.components.iolayer; + +import java.io.InputStream; + +public class FileContent { + String name; + InputStream inputStream; + public InputStream getInputStream() { + return inputStream; + } + + void setInputStream(InputStream inputStream) { + this.inputStream = inputStream; + } + + public String getName() { + return name; + } + + void setName(String name) { + this.name = name; + } +} diff --git a/src/org/rapla/components/iolayer/IOInterface.java b/src/org/rapla/components/iolayer/IOInterface.java new file mode 100644 index 0000000..03403b1 --- /dev/null +++ b/src/org/rapla/components/iolayer/IOInterface.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.iolayer; + +import java.awt.Frame; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.Transferable; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import java.awt.print.PrinterException; +import java.io.IOException; +import java.io.OutputStream; + +/** The IO layer is an abstraction from the io differences in webstart or desktop mode */ +public interface IOInterface { + String ROLE = IOInterface.class.getName(); + + String saveAsPostscriptShowDialog( + String toDir + ,Printable printable + ,PageFormat format + ,boolean askFormat + ,java.awt.Component owner + ) + throws IOException,UnsupportedOperationException; + + void saveAsPostscript( + Printable printable + ,PageFormat format + ,OutputStream out + ) + throws IOException,UnsupportedOperationException; + + boolean print( + Printable printable + ,PageFormat format + ,boolean askFormat + ) + throws PrinterException,UnsupportedOperationException; + + PageFormat defaultPage() + throws UnsupportedOperationException; + + PageFormat showFormatDialog(PageFormat format) + throws UnsupportedOperationException; + + void setContents(Transferable transferable, ClipboardOwner owner); + Transferable getContents( ClipboardOwner owner); + public String saveFile(Frame frame,String dir, String[] fileExtensions,String path, byte[] content) throws IOException; + public FileContent openFile(Frame frame,String dir, String[] fileExtensions) throws IOException; + + boolean supportsPostscriptExport(); + + public double INCH_TO_MM = 25.40006; + public double MM_TO_INCH = 1.0 / INCH_TO_MM; +} + + + + + diff --git a/src/org/rapla/components/iolayer/PrintExport.java b/src/org/rapla/components/iolayer/PrintExport.java new file mode 100644 index 0000000..9b3bfe3 --- /dev/null +++ b/src/org/rapla/components/iolayer/PrintExport.java @@ -0,0 +1,102 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.iolayer; + +import java.awt.print.*; +import javax.print.*; +import javax.print.attribute.*; +import javax.print.attribute.standard.*; +import java.io.*; + +/** This class will only work with JDK 1.4 and above, it + uses javax.print.PrintService for exporting to postscript format + */ + +public class PrintExport { + static DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE; + + private static StreamPrintServiceFactory getPSExportServiceFactory() { + StreamPrintServiceFactory []factories = + StreamPrintServiceFactory.lookupStreamPrintServiceFactories(flavor,"application/postscript"); + + if (factories.length == 0) { + return null; + } + /* + for (int i=0;i +The IO layer is an abstraction from the io differences in webstart or desktop mode. +With JDK 1.4 or higher PS export is supported. + + + + diff --git a/src/org/rapla/components/layout/DEPENDENCIES b/src/org/rapla/components/layout/DEPENDENCIES new file mode 100644 index 0000000..c09c982 --- /dev/null +++ b/src/org/rapla/components/layout/DEPENDENCIES @@ -0,0 +1,3 @@ +This component depends on the following packages (including subpackages): +java.* + diff --git a/src/org/rapla/components/layout/TableLayout.java b/src/org/rapla/components/layout/TableLayout.java new file mode 100644 index 0000000..414229e --- /dev/null +++ b/src/org/rapla/components/layout/TableLayout.java @@ -0,0 +1,2133 @@ +package org.rapla.components.layout; + + + +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Insets; +import java.util.LinkedList; +import java.util.ListIterator; + + +/** + * TableLayout is a layout manager that arranges components in rows and columns + * like a spreadsheet. TableLayout allows each row or column to be a different + * size. A row or column can be given an absolute size in pixels, a percentage + * of the available space, or it can grow and shrink to fill the remaining space + * after other rows and columns have been resized. + * + *

    Using spreadsheet terminology, a cell is the intersection of a row and + * column. Cells have finite, non-negative sizes measured in pixels. The + * dimensions of a cell depend solely upon the dimensions of its row and column. + *

    + * + *

    A component occupies a rectangular group of one or more cells. If the + * component occupies more than one cell, the component is resized to fit + * perfectly in the rectangular region of cells. If the component occupies a + * single cell, it can be aligned in four ways within that cell.

    + * + *

    A single cell component can be stretched horizontally to fit the cell + * (full justification), or it can be placed in the center of the cell. The + * component could also be left justified or right justified. Similarly, the + * component can be full, center, top, or bottom justified in the vertical.

    + * + *
    + * public static void main (String args[])
    + * {
    + *     // Create a frame
    + *     Frame frame = new Frame("Example of TableLayout");
    + *     frame.setBounds (100, 100, 300, 300);
    + * 
    + *     // Create a TableLayout for the frame
    + *     double border = 10;
    + *     double size[][] =
    + *         {{border, 0.10, 20, TableLayout.FILL, 20, 0.20, border},  // Columns
    + *          {border, 0.20, 20, TableLayout.FILL, 20, 0.20, border}}; // Rows
    + * 
    + *     frame.setLayout (new TableLayout(size));
    + * 
    + *     // Create some buttons
    + *     String label[] = {"Top", "Bottom", "Left", "Right", "Center", "Overlap"};
    + *     Button button[] = new Button[label.length];
    + * 
    + *     for (int i = 0; i < label.length; i++)
    + *         button[i] = new Button(label[i]);
    + * 
    + *     // Add buttons
    + *     frame.add (button[0], "1, 1, 5, 1"); // Top
    + *     frame.add (button[1], "1, 5, 5, 5"); // Bottom
    + *     frame.add (button[2], "1, 3      "); // Left
    + *     frame.add (button[3], "5, 3      "); // Right
    + *     frame.add (button[4], "3, 3, c, c"); // Center
    + *     frame.add (button[5], "3, 3, 3, 5"); // Overlap
    + * 
    + *     // Allow user to close the window to terminate the program
    + *     frame.addWindowListener
    + *         (new WindowListener()
    + *             {
    + *                 public void windowClosing (WindowEvent e)
    + *                 {
    + *                     System.exit (0);
    + *                 }
    + * 
    + *                 public void windowOpened (WindowEvent e) {}
    + *                 public void windowClosed (WindowEvent e) {}
    + *                 public void windowIconified (WindowEvent e) {}
    + *                 public void windowDeiconified (WindowEvent e) {}
    + *                 public void windowActivated (WindowEvent e) {}
    + *                 public void windowDeactivated (WindowEvent e) {}
    + *             }
    + *         );
    + * 
    + *     // Show frame
    + *     frame.show();
    + * }
    + * 
    + * + * @author Daniel E. Barbalace + */ + +public class TableLayout implements + java.awt.LayoutManager2, + TableLayoutConstants +{ + + + +/** Default row/column size */ +protected static final double defaultSize[][] = {{}, {}}; + + + +/** Widths of columns expressed in absolute and relative terms */ +protected double columnSpec[]; + +/** Heights of rows expressed in absolute and relative terms */ +protected double rowSpec[]; + +/** Widths of columns in pixels */ +protected int columnSize[]; + +/** Heights of rows in pixels */ +protected int rowSize[]; + +/** Offsets of columns in pixels. The left boarder of column n is at + columnOffset[n] and the right boarder is at columnOffset[n + 1] for all + columns including the last one. columnOffset.length = columnSize.length + 1 */ +protected int columnOffset[]; + +/** Offsets of rows in pixels. The left boarder of row n is at + rowOffset[n] and the right boarder is at rowOffset[n + 1] for all + rows including the last one. rowOffset.length = rowSize.length + 1 */ +protected int rowOffset[]; + +/** List of components and their sizes */ +protected LinkedList list; + +/** Indicates whether or not the size of the cells are known for the last known + size of the container. If dirty is true or the container has been resized, + the cell sizes must be recalculated using calculateSize. */ +protected boolean dirty; + +/** Previous known width of the container */ +protected int oldWidth; + +/** Previous known height of the container */ +protected int oldHeight; + + + +//****************************************************************************** +//** Constructors *** +//****************************************************************************** + + + +/** + * Constructs an instance of TableLayout. This TableLayout will have one row + * and one column. + */ + +public TableLayout () +{ + this (defaultSize); +} + + + +/** + * Constructs an instance of TableLayout. + * + * @param size widths of columns and heights of rows in the format, + * {{col0, col1, col2, ..., colN}, {row0, row1, row2, ..., rowM}} + * If this parameter is invalid, the TableLayout will have + * exactly one row and one column. + */ + +public TableLayout (double size[][]) +{ + // Make sure rows and columns and nothing else is specified + if ((size != null) && (size.length == 2)) + { + // Get the rows and columns + double tempCol[] = size[0]; + double tempRow[] = size[1]; + + // Create new rows and columns + columnSpec = new double[tempCol.length]; + rowSpec = new double[tempRow.length]; + + // Copy rows and columns + System.arraycopy (tempCol, 0, columnSpec, 0, columnSpec.length); + System.arraycopy (tempRow, 0, rowSpec, 0, rowSpec.length); + + // Make sure rows and columns are valid + for (int counter = 0; counter < columnSpec.length; counter++) + if ((columnSpec[counter] < 0.0) && + (columnSpec[counter] != FILL) && + (columnSpec[counter] != PREFERRED) && + (columnSpec[counter] != MINIMUM)) + { + columnSpec[counter] = 0.0; + } + + for (int counter = 0; counter < rowSpec.length; counter++) + if ((rowSpec[counter] < 0.0) && + (rowSpec[counter] != FILL) && + (rowSpec[counter] != PREFERRED) && + (rowSpec[counter] != MINIMUM)) + { + rowSpec[counter] = 0.0; + } + } + else + { + double tempCol[] = {FILL}; + double tempRow[] = {FILL}; + + setColumn (tempCol); + setRow (tempRow); + } + + // Create an empty list of components + list = new LinkedList(); + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +//****************************************************************************** +//** Get/Set methods *** +//****************************************************************************** + + + +/** + * Gets the constraints of a given component. + * + * @param component desired component + * + * @return If the given component is found, the constraints associated with + * that component. If the given component is null or is not found, + * null is returned. + */ + +public TableLayoutConstraints getConstraints (Component component) +{ + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if (entry.component == component) + return new TableLayoutConstraints + (entry.col1, entry.row1, entry.col2, entry.row2, + entry.hAlign, entry.vAlign); + } + + return null; +} + + + +/** + * Sets the constraints of a given component. + * + * @param component desired component. This parameter cannot be null. + * @param constraint new set of constraints. This parameter cannot be null. + * + */ + +public void setConstraints + (Component component, TableLayoutConstraints constraint) +{ + // Check parameters + if (component == null) + throw new IllegalArgumentException + ("Parameter component cannot be null."); + else if (constraint == null) + throw new IllegalArgumentException + ("Parameter constraint cannot be null."); + + // Find and update constraints for the given component + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if (entry.component == component) + iterator.set (new Entry(component, constraint)); + } +} + + + +/** + * Adjusts the number and sizes of rows in this layout. After calling this + * method, the caller should request this layout manager to perform the + * layout. This can be done with the following code: + * + *
    + *     layout.layoutContainer(container);
    + *     container.repaint();
    + * 
    + * + * or + * + *
    + *     window.pack()
    + * 
    + * + * If this is not done, the changes in the layout will not be seen until the + * container is resized. + * + * @param column heights of each of the columns + * + * @see #getColumn + */ + +public void setColumn (double column[]) +{ + // Copy columns + columnSpec = new double[column.length]; + System.arraycopy (column, 0, columnSpec, 0, columnSpec.length); + + // Make sure columns are valid + for (int counter = 0; counter < columnSpec.length; counter++) + if ((columnSpec[counter] < 0.0) && + (columnSpec[counter] != FILL) && + (columnSpec[counter] != PREFERRED) && + (columnSpec[counter] != MINIMUM)) + { + columnSpec[counter] = 0.0; + } + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Adjusts the number and sizes of rows in this layout. After calling this + * method, the caller should request this layout manager to perform the + * layout. This can be done with the following code: + * + * + * layout.layoutContainer(container); + * container.repaint(); + * + * + * or + * + *
    + *     window.pack()
    + * 
    + * + * If this is not done, the changes in the layout will not be seen until the + * container is resized. + * + * @param row widths of each of the rows. This parameter cannot be null. + * + * @see #getRow + */ + +public void setRow (double row[]) +{ + // Copy rows + rowSpec = new double[row.length]; + System.arraycopy (row, 0, rowSpec, 0, rowSpec.length); + + // Make sure rows are valid + for (int counter = 0; counter < rowSpec.length; counter++) + if ((rowSpec[counter] < 0.0) && + (rowSpec[counter] != FILL) && + (rowSpec[counter] != PREFERRED) && + (rowSpec[counter] != MINIMUM)) + { + rowSpec[counter] = 0.0; + } + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Adjusts the width of a single column in this layout. After calling this + * method, the caller should request this layout manager to perform the + * layout. This can be done with the following code: + * + * + * layout.layoutContainer(container); + * container.repaint(); + * + * + * or + * + *
    + *     window.pack()
    + * 
    + * + * If this is not done, the changes in the layout will not be seen until the + * container is resized. + * + * @param i zero-based index of column to set. If this parameter is not + * valid, an ArrayOutOfBoundsException will be thrown. + * @param size width of the column. This parameter cannot be null. + * + * @see #getColumn + */ + +public void setColumn (int i, double size) +{ + // Make sure size is valid + if ((size < 0.0) && + (size != FILL) && + (size != PREFERRED) && + (size != MINIMUM)) + { + size = 0.0; + } + + // Copy new size + columnSpec[i] = size; + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Adjusts the height of a single row in this layout. After calling this + * method, the caller should request this layout manager to perform the + * layout. This can be done with the following code: + * + * + * layout.layoutContainer(container); + * container.repaint(); + * + * + * or + * + *
    + *     window.pack()
    + * 
    + * + * If this is not done, the changes in the layout will not be seen until the + * container is resized. + * + * @param i zero-based index of row to set. If this parameter is not + * valid, an ArrayOutOfBoundsException will be thrown. + * @param size height of the row. This parameter cannot be null. + * + * @see #getRow + */ + +public void setRow (int i, double size) +{ + // Make sure size is valid + if ((size < 0.0) && + (size != FILL) && + (size != PREFERRED) && + (size != MINIMUM)) + { + size = 0.0; + } + + // Copy new size + rowSpec[i] = size; + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Gets the sizes of columns in this layout. + * + * @return widths of each of the columns + * + * @see #setColumn + */ + +public double [] getColumn () +{ + // Copy columns + double column[] = new double[columnSpec.length]; + System.arraycopy (columnSpec, 0, column, 0, column.length); + + return column; +} + + + +/** + * Gets the height of a single row in this layout. + * + * @return height of the requested row + * + * @see #setRow + */ + +public double [] getRow () +{ + // Copy rows + double row[] = new double[rowSpec.length]; + System.arraycopy (rowSpec, 0, row, 0, row.length); + + return row; +} + + + +/** + * Gets the width of a single column in this layout. + * + * @param i zero-based index of row to get. If this parameter is not valid, + * an ArrayOutOfBoundsException will be thrown. + * + * @return width of the requested column + * + * @see #setRow + */ + +public double getColumn (int i) +{ + return columnSpec[i]; +} + + + +/** + * Gets the sizes of a row in this layout. + * + * @param i zero-based index of row to get. If this parameter is not valid, + * an ArrayOutOfBoundsException will be thrown. + * + * @return height of each of the requested row + * + * @see #setRow + */ + +public double getRow (int i) +{ + return rowSpec[i]; +} + + + +/** + * Gets the number of columns in this layout. + * + * @return the number of columns + */ + +public int getNumColumn () +{ + return columnSpec.length; +} + + + +/** + * Gets the number of rows in this layout. + * + * @return the number of rows + */ + +public int getNumRow () +{ + return rowSpec.length; +} + + + +//****************************************************************************** +//** Insertion/Deletion methods *** +//****************************************************************************** + + + +/** + * Inserts a column in this layout. All components to the right of the + * insertion point are moved right one column. The container will need to + * be laid out after this method returns. See setColumn. + * + * @param i zero-based index at which to insert the column. + * @param size size of the column to be inserted + * + * @see #setColumn + * @see #deleteColumn + */ + +public void insertColumn (int i, double size) +{ + // Make sure position is valid + if ((i < 0) || (i > columnSpec.length)) + throw new IllegalArgumentException + ("Parameter i is invalid. i = " + i + ". Valid range is [0, " + + columnSpec.length + "]."); + + // Make sure column size is valid + if ((size < 0.0) && + (size != FILL) && + (size != PREFERRED) && + (size != MINIMUM)) + { + size = 0.0; + } + + // Copy columns + double column[] = new double[columnSpec.length + 1]; + System.arraycopy (columnSpec, 0, column, 0, i); + System.arraycopy (columnSpec, i, column, i + 1, columnSpec.length - i); + + // Insert column + column[i] = size; + columnSpec = column; + + // Move all components that are to the right of new row + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Is the first column to the right of the new column + if (entry.col1 >= i) + // Move first column + entry.col1++; + + // Is the second column to the right of the new column + if (entry.col2 >= i) + // Move second column + entry.col2++; + } + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Inserts a row in this layout. All components below the insertion point + * are moved down one row. The container will need to be laid out after this + * method returns. See setRow. + * + * @param i zero-based index at which to insert the column. + * @param size size of the row to be inserted + * + * @see #setRow + * @see #deleteRow + */ + +public void insertRow (int i, double size) +{ + // Make sure position is valid + if ((i < 0) || (i > rowSpec.length)) + throw new IllegalArgumentException + ("Parameter i is invalid. i = " + i + ". Valid range is [0, " + + rowSpec.length + "]."); + + // Make sure row size is valid + if ((size < 0.0) && + (size != FILL) && + (size != PREFERRED) && + (size != MINIMUM)) + { + size = 0.0; + } + + // Copy rows + double row[] = new double[rowSpec.length + 1]; + System.arraycopy (rowSpec, 0, row, 0, i); + System.arraycopy (rowSpec, i, row, i + 1, rowSpec.length - i); + + // Insert row + row[i] = size; + rowSpec = row; + + // Move all components that are below the new row + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Is the first row to the right of the new row + if (entry.row1 >= i) + // Move first row + entry.row1++; + + // Is the second row to the right of the new row + if (entry.row2 >= i) + // Move second row + entry.row2++; + } + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Deletes a column in this layout. All components to the right of the + * deletion point are moved left one column. The container will need to + * be laid out after this method returns. See setColumn. + * + * @param i zero-based index of column to delete + * + * @see #setColumn + * @see #deleteColumn + */ + +public void deleteColumn (int i) +{ + // Make sure position is valid + if ((i < 0) || (i >= columnSpec.length)) + throw new IllegalArgumentException + ("Parameter i is invalid. i = " + i + ". Valid range is [0, " + + (columnSpec.length - 1) + "]."); + + // Copy columns + double column[] = new double[columnSpec.length - 1]; + System.arraycopy (columnSpec, 0, column, 0, i); + System.arraycopy (columnSpec, i + 1, column, i, columnSpec.length - i - 1); + + // Delete column + columnSpec = column; + + // Move all components that are to the right of row deleted + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Is the first column to the right of the new column + if (entry.col1 >= i) + // Move first column + entry.col1--; + + // Is the second column to the right of the new column + if (entry.col2 >= i) + // Move second column + entry.col2--; + } + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +/** + * Deletes a row in this layout. All components below the deletion point are + * moved up one row. The container will need to be laid out after this method + * returns. See setRow. There must be at least two rows in order + * to delete a row. + * + * @param i zero-based index of column to delete + * + * @see #setRow + * @see #deleteRow + */ + +public void deleteRow (int i) +{ + // Make sure position is valid + if ((i < 0) || (i >= rowSpec.length)) + throw new IllegalArgumentException + ("Parameter i is invalid. i = " + i + ". Valid range is [0, " + + (rowSpec.length - 1) + "]."); + + // Copy rows + double row[] = new double[rowSpec.length - 1]; + System.arraycopy (rowSpec, 0, row, 0, i); + System.arraycopy (rowSpec, i + 1, row, i, rowSpec.length - i - 1); + + // Delete row + rowSpec = row; + + // Move all components that are to below the row deleted + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Is the first row below the new row + if (entry.row1 >= i) + // Move first row + entry.row1--; + + // Is the second row below the new row + if (entry.row2 >= i) + // Move second row + entry.row2--; + } + + // Indicate that the cell sizes are not known + dirty = true; +} + + + +//****************************************************************************** +//** Misc methods *** +//****************************************************************************** + + + +/** + * Converts this TableLayout to a string. + * + * @return a string representing the columns and row sizes in the form + * "{{col0, col1, col2, ..., colN}, {row0, row1, row2, ..., rowM}}" + */ + +public String toString () +{ + int counter; + + String value = "TableLayout {{"; + + if (columnSpec.length > 0) + { + for (counter = 0; counter < columnSpec.length - 1; counter++) + value += columnSpec[counter] + ", "; + + value += columnSpec[columnSpec.length - 1] + "}, {"; + } + else + value += "}, {"; + + if (rowSpec.length > 0) + { + for (counter = 0; counter < rowSpec.length - 1; counter++) + value += rowSpec[counter] + ", "; + + value += rowSpec[rowSpec.length - 1] + "}}"; + } + else + value += "}}"; + + return value; +} + + + +/** + * Draws a grid on the given container. This is useful for seeing where the + * rows and columns go. In the container's paint method, call this method. + * + * @param container container using this TableLayout + * @param g graphics content of container (can be offscreen) + */ + +public void drawGrid (Container container, Graphics g) +{ + + // Calculate the sizes of the rows and columns + Dimension d = container.getSize(); + + if (dirty || (d.width != oldWidth) || (d.height != oldHeight)) + calculateSize (container); + + // Initialize y + int y = 0; + + for (int row = 0; row < rowSize.length; row++) + { + // Initialize x + int x = 0; + + for (int column = 0; column < columnSize.length; column++) + { + // Use a random color to make things easy to see + Color color = new Color((int) (Math.random() * 0xFFFFFFL)); + g.setColor (color); + + // Draw the cell as a solid rectangle + g.fillRect (x, y, columnSize[column], rowSize[row]); + + // Increment x + x += columnSize[column]; + } + + // Increment y + y += rowSize[row]; + } +} + + + +/** + * Determines whether or not there are any hidden components. A hidden + * component is one that will not be shown with this layout's current + * configuration. Such a component is, at least partly, in an invalid row + * or column. For example, on a table with five rows, row -1 and row 5 are both + * invalid. Valid rows are 0 through 4, inclusively. + * + * @return True, if there are any hidden components. False, otherwise. + * + * @see #overlapping + */ + +public boolean hidden () +{ + // Assume no components are hidden + boolean hidden = false; + + // Check all components + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Is this component valid + if ((entry.row1 < 0) || (entry.col1 < 0) || + (entry.row2 > rowSpec.length) || + (entry.col2 > columnSpec.length)) + { + hidden = true; + break; + } + } + + return hidden; +} + + + +/** + * Determines whether or not there are any overlapping components. Two + * components overlap if they cover at least one common cell. + * + * @return True, if there are any overlapping components. False, otherwise. + * + * @see #hidden + */ + +public boolean overlapping () +{ + // Count contraints + int numEntry = list.size(); + + // If there are no components, they can't be overlapping + if (numEntry == 0) + return false; + + // Assume no components are overlapping + boolean overlapping = false; + + // Put entries in an array + Entry entry[] = (Entry[]) list.toArray(new Entry[numEntry]); + + // Check all components + for (int knowUnique = 1; knowUnique < numEntry; knowUnique++) + for (int checking = knowUnique - 1; checking >= 0; checking--) + if + ( + ( + (entry[checking].col1 >= entry[knowUnique].col1) && + (entry[checking].col1 <= entry[knowUnique].col2) && + (entry[checking].row1 >= entry[knowUnique].row1) && + (entry[checking].row1 <= entry[knowUnique].row2) + ) + || + ( + (entry[checking].col2 >= entry[knowUnique].col1) && + (entry[checking].col2 <= entry[knowUnique].col2) && + (entry[checking].row2 >= entry[knowUnique].row1) && + (entry[checking].row2 <= entry[knowUnique].row2) + ) + ) + { + overlapping = true; + break; + } + + return overlapping; +} + + + +/** + * Calculates the sizes of the rows and columns based on the absolute and + * relative sizes specified in rowSpec and columnSpec + * and the size of the container. The result is stored in rowSize + * and columnSize. + * + * @param container container using this TableLayout + */ + +protected void calculateSize (Container container) +{ + int counter; // Counting variable; + + // Get number of rows and columns + int numColumn = columnSpec.length; + int numRow = rowSpec.length; + + // Create array to hold actual sizes in pixels + columnSize = new int[numColumn]; + rowSize = new int[numRow]; + + // Get the container's insets + Insets inset = container.getInsets(); + + // Get the size of the container's available space + Dimension d = container.getSize(); + int totalWidth = d.width - inset.left - inset.right; + int totalHeight = d.height - inset.top - inset.bottom; + + // Initially, the available space is the total space + int availableWidth = totalWidth; + int availableHeight = totalHeight; + + // Assign absolute widths; this reduces available width + for (counter = 0; counter < numColumn; counter++) + // Is the current column an absolue size + if ((columnSpec[counter] >= 1.0) || (columnSpec[counter] == 0.0)) + { + // Assign absolute width + columnSize[counter] = (int) (columnSpec[counter] + 0.5); + + // Reduce available width + availableWidth -= columnSize[counter]; + } + + // Assign absolute heights; this reduces available height + for (counter = 0; counter < numRow; counter++) + // Is the current column an absolue size + if ((rowSpec[counter] >= 1.0) || (rowSpec[counter] == 0.0)) + { + // Assign absolute width + rowSize[counter] = (int) (rowSpec[counter] + 0.5); + + // Reduce available width + availableHeight -= rowSize[counter]; + } + + // Assign preferred and minimum widths; this reduces available width. + // Assignment of preferred/minimum with is like assignment of absolute + // widths except that each column must determine the maximum + // preferred/minimum width of the components that are completely contained + // within the column. + for (counter = 0; counter < numColumn; counter++) + // Is the current column a preferred size + if ((columnSpec[counter] == PREFERRED) || + (columnSpec[counter] == MINIMUM)) + { + // Assume a maximum width of zero + int maxWidth = 0; + + // Find maximum preferred width of all components completely + // contained within this column + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if ((entry.col1 == counter) && (entry.col2 == counter)) + { + Dimension p = (columnSpec[counter] == PREFERRED) ? + entry.component.getPreferredSize() : + entry.component.getMinimumSize(); + + int width = (p == null) ? 0 : p.width; + + if (maxWidth < width) + maxWidth = width; + } + } + + // Assign preferred width + columnSize[counter] = maxWidth; + + // Reduce available width + availableWidth -= maxWidth; + } + + // Assign preferred and minimum heights; this reduces available height. + // Assignment of preferred/minimum with is like assignment of absolute + // heights except that each row must determine the maximum + // preferred/minimum height of the components that are completely contained + // within the row. + for (counter = 0; counter < numRow; counter++) + // Is the current row a preferred size + if ((rowSpec[counter] == PREFERRED) || + (rowSpec[counter] == MINIMUM)) + { + // Assume a maximum height of zero + int maxHeight = 0; + + // Find maximum preferred height of all components completely + // contained within this row + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if ((entry.row1 == counter) && (entry.row2 == counter)) + { + Dimension p = (rowSpec[counter] == PREFERRED) ? + entry.component.getPreferredSize() : + entry.component.getMinimumSize(); + + int height = (p == null) ? 0 : p.height; + + if (maxHeight < height) + maxHeight = height; + } + } + + // Assign preferred height + rowSize[counter] = maxHeight; + + // Reduce available height + availableHeight -= maxHeight; + } + + // Remember how much space is available for relatively sized cells + int relativeWidth = availableWidth; + int relativeHeight = availableHeight; + + // Make sure relativeWidth and relativeHeight are non-negative + if (relativeWidth < 0) + relativeWidth = 0; + + if (relativeHeight < 0) + relativeHeight = 0; + + // Assign relative widths + for (counter = 0; counter < numColumn; counter++) + // Is the current column an relative size + if ((columnSpec[counter] > 0.0) && (columnSpec[counter] < 1.0)) + { + // Assign relative width + columnSize[counter] = + (int) (columnSpec[counter] * relativeWidth + 0.5); + + // Reduce available width + availableWidth -= columnSize[counter]; + } + + // Assign relative widths + for (counter = 0; counter < numRow; counter++) + // Is the current column an relative size + if ((rowSpec[counter] > 0.0) && (rowSpec[counter] < 1.0)) + { + // Assign relative width + rowSize[counter] = (int) (rowSpec[counter] * relativeHeight + 0.5); + + // Reduce available width + availableHeight -= rowSize[counter]; + } + + // Make sure availableWidth and availableHeight are non-negative + if (availableWidth < 0) + availableWidth = 0; + + if (availableHeight < 0) + availableHeight = 0; + + // Count the number of "fill" cells + int numFillWidth = 0; + int numFillHeight = 0; + + for (counter = 0; counter < numColumn; counter++) + if (columnSpec[counter] == FILL) + numFillWidth++; + + for (counter = 0; counter < numRow; counter++) + if (rowSpec[counter] == FILL) + numFillHeight++; + + // If numFillWidth (numFillHeight) is zero, the cooresponding if statements + // will always evaluate to false and the division will not occur. + + // If there are more than one "fill" cell, slack may occur due to rounding + // errors + int slackWidth = availableWidth; + int slackHeight = availableHeight; + + // Assign "fill" cells equal amounts of the remaining space + for (counter = 0; counter < numColumn; counter++) + if (columnSpec[counter] == FILL) + { + columnSize[counter] = availableWidth / numFillWidth; + slackWidth -= columnSize[counter]; + } + + for (counter = 0; counter < numRow; counter++) + if (rowSpec[counter] == FILL) + { + rowSize[counter] = availableHeight / numFillHeight; + slackHeight -= rowSize[counter]; + } + + // Add slack to the last "fill" cell + for (counter = numColumn - 1; counter >= 0; counter--) + { + if (columnSpec[counter] == FILL) + { + columnSize[counter] += slackWidth; + break; + } + } + + for (counter = numRow - 1; counter >= 0; counter--) + { + if (rowSpec[counter] == FILL) + { + rowSize[counter] += slackHeight; + break; + } + } + + // Calculate offsets of each column (done for effeciency) + columnOffset = new int[numColumn + 1]; + columnOffset[0] = inset.left; + + for (counter = 0; counter < numColumn; counter++) + columnOffset[counter + 1] = + columnOffset[counter] + columnSize[counter]; + + // Calculate offsets of each row (done for effeciency) + rowOffset = new int[numRow + 1]; + rowOffset[0] = inset.top; + + for (counter = 0; counter < numRow; counter++) + rowOffset[counter + 1] = + rowOffset[counter] + rowSize[counter]; + + // Indicate that the size of the cells are known for the container's + // current size + dirty = false; + oldWidth = totalWidth; + oldHeight = totalHeight; +} + + + +//****************************************************************************** +//** java.awt.event.LayoutManager methods *** +//****************************************************************************** + + + +/** + * To lay out the specified container using this layout. This method reshapes + * the components in the specified target container in order to satisfy the + * constraints of all components. + * + *

    User code should not have to call this method directly.

    + * + * @param container container being served by this layout manager + */ + +public void layoutContainer (Container container) +{ + int x, y; // Coordinates of the currnet component in pixels + int w, h; // Width and height of the current component in pixels + + // Calculate sizes if container has changed size or components were added + Dimension d = container.getSize(); + + if (dirty || (d.width != oldWidth) || (d.height != oldHeight)) + calculateSize (container); + + // Get components + Component component[] = container.getComponents(); + + // Layout components + for (int counter = 0; counter < component.length; counter++) + { + try + { + // Get the entry entry for the next component + ListIterator iterator = list.listIterator(0); + Entry entry = null; + + while (iterator.hasNext()) + { + entry = (Entry) iterator.next(); + + if (entry.component == component[counter]) + break; + else + entry = null; + } + + // Skip any components that have not been place in a specific cell + if (entry == null) + break; + + // Does the entry occupy a single cell + if (entry.singleCell) + { + // The following block of code has been optimized so that the + // preferred size of the component is only obtained if it is + // needed. There are components in which the getPreferredSize + // method is extremely expensive, such as data driven controls + // with a large amount of data. + + // Get the preferred size of the component + int preferredWidth = 0; + int preferredHeight = 0; + + if ((entry.hAlign != FULL) || (entry.vAlign != FULL)) + { + Dimension preferredSize = + component[counter].getPreferredSize(); + + preferredWidth = preferredSize.width; + preferredHeight = preferredSize.height; + } + + // Determine cell width and height + int cellWidth = columnSize[entry.col1]; + int cellHeight = rowSize[entry.row1]; + + // Determine the width of the component + if ((entry.hAlign == FULL) || + (cellWidth < preferredWidth)) + // Use the width of the cell + w = cellWidth; + else + // Use the prefered width of the component + w = preferredWidth; + + // Determine left and right boarders + switch (entry.hAlign) + { + case LEFT : + // Align left side along left edge of cell + x = columnOffset[entry.col1]; + break; + + case RIGHT : + // Align right side along right edge of cell + x = columnOffset[entry.col1 + 1] - w; + break; + + case CENTER : + // Center justify component + x = columnOffset[entry.col1] + ((cellWidth - w) >> 1); + break; + + case FULL : + // Align left side along left edge of cell + x = columnOffset[entry.col1]; + break; + + default : + // This is a never should happen case, but just in case + x = 0; + } + + // Determine the height of the component + if ((entry.vAlign == FULL) || + (cellHeight < preferredHeight)) + // Use the height of the cell + h = cellHeight; + else + // Use the prefered height of the component + h = preferredHeight; + + // Determine top and bottom boarders + switch (entry.vAlign) + { + case TOP : + // Align top side along top edge of cell + y = rowOffset[entry.row1]; + break; + + case BOTTOM : + // Align right side along right edge of cell + y = rowOffset[entry.row1 + 1] - h; + break; + + case CENTER : + // Center justify component + y = rowOffset[entry.row1] + ((cellHeight - h) >> 1); + break; + + case FULL : + // Align right side along right edge of cell + y = rowOffset[entry.row1]; + break; + + default : + // This is a never should happen case, but just in case + y = 0; + } + } + else + { + // Align left side with left boarder of first column + x = columnOffset[entry.col1]; + + // Align top side along top edge of first row + y = rowOffset[entry.row1]; + + // Align right side with right boarder of second column + w = columnOffset[entry.col2 + 1] - + columnOffset[entry.col1]; + + // Align bottom side with bottom boarder of second row + h = rowOffset[entry.row2 + 1] - rowOffset[entry.row1]; + } + + // Move and resize component + component[counter].setBounds (x, y, w, h); + } + catch (Exception error) + { + // If any error occurs, skip this component + continue; + } + } +} + + + +/** + * Determines the preferred size of the container argument using this layout. + * The preferred size is the smallest size that, if used for the container's + * size, will ensure that all components are at least as large as their + * preferred size. This method cannot guarantee that all components will be + * their preferred size. For example, if component A and component B are each + * allocate half of the container's width and component A wants to be 10 pixels + * wide while component B wants to be 100 pixels wide, they cannot both be + * accommodated. Since in general components rather be larger than their + * preferred size instead of smaller, component B's request will be fulfilled. + * The preferred size of the container would be 200 pixels. + * + * @param container container being served by this layout manager + * + * @return a dimension indicating the container's preferred size + */ + +public Dimension preferredLayoutSize (Container container) +{ + Dimension size; // Preferred size of current component + int scaledWidth = 0; // Preferred width of scalled components + int scaledHeight = 0; // Preferred height of scalled components + int temp; // Temporary variable used to compare sizes + int counter; // Counting variable + + // Determine percentage of space allocated to fill components. This is + // one minus the sum of all scalable components. + double fillWidthRatio = 1.0; + double fillHeightRatio = 1.0; + int numFillWidth = 0; + int numFillHeight = 0; + + for (counter = 0; counter < columnSpec.length; counter++) + if ((columnSpec[counter] > 0.0) && (columnSpec[counter] < 1.0)) + fillWidthRatio -= columnSpec[counter]; + else if (columnSpec[counter] == FILL) + numFillWidth++; + + for (counter = 0; counter < rowSpec.length; counter++) + if ((rowSpec[counter] > 0.0) && (rowSpec[counter] < 1.0)) + fillHeightRatio -= rowSpec[counter]; + else if (rowSpec[counter] == FILL) + numFillHeight++; + + // Adjust fill ratios to reflect number of fill rows/columns + if (numFillWidth > 1) + fillWidthRatio /= numFillWidth; + + if (numFillHeight > 1) + fillHeightRatio /= numFillHeight; + + // Cap fill ratio bottoms to 0.0 + if (fillWidthRatio < 0.0) + fillWidthRatio = 0.0; + + if (fillHeightRatio < 0.0) + fillHeightRatio = 0.0; + + // Calculate preferred/minimum column widths + int columnPrefMin[] = new int[columnSpec.length]; + + for (counter = 0; counter < columnSpec.length; counter++) + // Is the current column a preferred/minimum size + if ((columnSpec[counter] == PREFERRED) || + (columnSpec[counter] == MINIMUM)) + { + // Assume a maximum width of zero + int maxWidth = 0; + + // Find maximum preferred/minimum width of all components completely + // contained within this column + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if ((entry.col1 == counter) && (entry.col2 == counter)) + { + Dimension p = (columnSpec[counter] == PREFERRED) ? + entry.component.getPreferredSize() : + entry.component.getMinimumSize(); + + int width = (p == null) ? 0 : p.width; + + if (maxWidth < width) + maxWidth = width; + } + } + + // Set column's preferred/minimum width + columnPrefMin[counter] = maxWidth; + } + + + // Calculate preferred/minimum row heights + int rowPrefMin[] = new int[rowSpec.length]; + + for (counter = 0; counter < rowSpec.length; counter++) + // Is the current row a preferred/minimum size + if ((rowSpec[counter] == PREFERRED) || + (rowSpec[counter] == MINIMUM)) + { + // Assume a maximum height of zero + int maxHeight = 0; + + // Find maximum preferred height of all components completely + // contained within this row + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if ((entry.row1 == counter) && (entry.row1 == counter)) + { + Dimension p = (rowSpec[counter] == PREFERRED) ? + entry.component.getPreferredSize() : + entry.component.getMinimumSize(); + + int height = (p == null) ? 0 : p.height; + + if (maxHeight < height) + maxHeight = height; + } + } + + // Add preferred height + rowPrefMin[counter] += maxHeight; + } + + // Find maximum preferred size of all scaled components + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Make sure entry is in valid rows and columns + if ((entry.col1 < 0) || (entry.col1 >= columnSpec.length) || + (entry.col2 >= columnSpec.length) || + (entry.row1 < 0) || (entry.row1 >= rowSpec.length) || + (entry.row2 >= rowSpec.length)) + { + // Skip the bad component + continue; + } + + // Get preferred size of current component + size = entry.component.getPreferredSize(); + + // Calculate portion of component that is not absolutely sized + int scalableWidth = size.width; + int scalableHeight = size.height; + + for (counter = entry.col1; counter <= entry.col2; counter++) + if (columnSpec[counter] >= 1.0) + scalableWidth -= columnSpec[counter]; + else if ((columnSpec[counter] == PREFERRED) || + (columnSpec[counter] == MINIMUM)) + { + scalableWidth -= columnPrefMin[counter]; + } + + for (counter = entry.row1; counter <= entry.row2; counter++) + if (rowSpec[counter] >= 1.0) + scalableHeight -= rowSpec[counter]; + else if ((rowSpec[counter] == PREFERRED) || + (rowSpec[counter] == MINIMUM)) + { + scalableHeight -= rowPrefMin[counter]; + } + + //---------------------------------------------------------------------- + + // Determine total percentage of scalable space that the component + // occupies by adding the relative columns and the fill columns + double relativeWidth = 0.0; + + for (counter = entry.col1; counter <= entry.col2; counter++) + { + // Column is scaled + if ((columnSpec[counter] > 0.0) && (columnSpec[counter] < 1.0)) + // Add scaled size to relativeWidth + relativeWidth += columnSpec[counter]; + // Column is fill + else if ((columnSpec[counter] == FILL) && (fillWidthRatio != 0.0)) + // Add fill size to relativeWidth + relativeWidth += fillWidthRatio; + } + + // Determine the total scaled width as estimated by this component + if (relativeWidth == 0) + temp = 0; + else + temp = (int) (scalableWidth / relativeWidth + 0.5); + + // If the container needs to be bigger, make it so + if (scaledWidth < temp) + scaledWidth = temp; + + //---------------------------------------------------------------------- + + // Determine total percentage of scalable space that the component + // occupies by adding the relative columns and the fill columns + double relativeHeight = 0.0; + + for (counter = entry.row1; counter <= entry.row2; counter++) + { + // Row is scaled + if ((rowSpec[counter] > 0.0) && (rowSpec[counter] < 1.0)) + // Add scaled size to relativeHeight + relativeHeight += rowSpec[counter]; + // Row is fill + else if ((rowSpec[counter] == FILL) && (fillHeightRatio != 0.0)) + // Add fill size to relativeHeight + relativeHeight += fillHeightRatio; + } + + // Determine the total scaled width as estimated by this component + if (relativeHeight == 0) + temp = 0; + else + temp = (int) (scalableHeight / relativeHeight + 0.5); + + // If the container needs to be bigger, make it so + if (scaledHeight < temp) + scaledHeight = temp; + } + + // totalWidth is the scaledWidth plus the sum of all absolute widths and all + // preferred widths + int totalWidth = scaledWidth; + + for (counter = 0; counter < columnSpec.length; counter++) + // Is the current column an absolute size + if (columnSpec[counter] >= 1.0) + totalWidth += (int) (columnSpec[counter] + 0.5); + // Is the current column a preferred/minimum size + else if ((columnSpec[counter] == PREFERRED) || + (columnSpec[counter] == MINIMUM)) + { + // Add preferred/minimum width + totalWidth += columnPrefMin[counter]; + } + + // totalHeight is the scaledHeight plus the sum of all absolute heights and + // all preferred widths + int totalHeight = scaledHeight; + + for (counter = 0; counter < rowSpec.length; counter++) + // Is the current row an absolute size + if (rowSpec[counter] >= 1.0) + totalHeight += (int) (rowSpec[counter] + 0.5); + // Is the current row a preferred size + else if ((rowSpec[counter] == PREFERRED) || + (rowSpec[counter] == MINIMUM)) + { + // Add preferred/minimum width + totalHeight += rowPrefMin[counter]; + } + + // Compensate for container's insets + Insets inset = container.getInsets(); + totalWidth += inset.left + inset.right; + totalHeight += inset.top + inset.bottom; + + return new Dimension(totalWidth, totalHeight); +} + + + +/** + * Determines the minimum size of the container argument using this layout. + * The minimum size is the smallest size that, if used for the container's + * size, will ensure that all components are at least as large as their + * minimum size. This method cannot guarantee that all components will be + * their minimum size. For example, if component A and component B are each + * allocate half of the container's width and component A wants to be 10 pixels + * wide while component B wants to be 100 pixels wide, they cannot both be + * accommodated. Since in general components rather be larger than their + * minimum size instead of smaller, component B's request will be fulfilled. + * The minimum size of the container would be 200 pixels. + * + * @param container container being served by this layout manager + * + * @return a dimension indicating the container's minimum size + */ + +public Dimension minimumLayoutSize (Container container) +{ + Dimension size; // Minimum size of current component + int scaledWidth = 0; // Minimum width of scalled components + int scaledHeight = 0; // Minimum height of scalled components + int temp; // Temporary variable used to compare sizes + int counter; // Counting variable + + // Determine percentage of space allocated to fill components. This is + // one minus the sum of all scalable components. + double fillWidthRatio = 1.0; + double fillHeightRatio = 1.0; + int numFillWidth = 0; + int numFillHeight = 0; + + for (counter = 0; counter < columnSpec.length; counter++) + if ((columnSpec[counter] > 0.0) && (columnSpec[counter] < 1.0)) + fillWidthRatio -= columnSpec[counter]; + else if (columnSpec[counter] == FILL) + numFillWidth++; + + for (counter = 0; counter < rowSpec.length; counter++) + if ((rowSpec[counter] > 0.0) && (rowSpec[counter] < 1.0)) + fillHeightRatio -= rowSpec[counter]; + else if (rowSpec[counter] == FILL) + numFillHeight++; + + // Adjust fill ratios to reflect number of fill rows/columns + if (numFillWidth > 1) + fillWidthRatio /= numFillWidth; + + if (numFillHeight > 1) + fillHeightRatio /= numFillHeight; + + // Cap fill ratio bottoms to 0.0 + if (fillWidthRatio < 0.0) + fillWidthRatio = 0.0; + + if (fillHeightRatio < 0.0) + fillHeightRatio = 0.0; + + // Find maximum minimum size of all scaled components + ListIterator iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + // Get next entry + Entry entry = (Entry) iterator.next(); + + // Make sure entry is in valid rows and columns + if ((entry.col1 < 0) || (entry.col1 >= columnSpec.length) || + (entry.col2 >= columnSpec.length) || + (entry.row1 < 0) || (entry.row1 >= rowSpec.length) || + (entry.row2 >= rowSpec.length)) + { + // Skip the bad component + continue; + } + + // Get minimum size of current component + size = entry.component.getMinimumSize(); + + // Calculate portion of component that is not absolutely sized + int scalableWidth = size.width; + int scalableHeight = size.height; + + for (counter = entry.col1; counter <= entry.col2; counter++) + if (columnSpec[counter] >= 1.0) + scalableWidth -= columnSpec[counter]; + + for (counter = entry.row1; counter <= entry.row2; counter++) + if (rowSpec[counter] >= 1.0) + scalableHeight -= rowSpec[counter]; + + //---------------------------------------------------------------------- + + // Determine total percentage of scalable space that the component + // occupies by adding the relative columns and the fill columns + double relativeWidth = 0.0; + + for (counter = entry.col1; counter <= entry.col2; counter++) + { + // Column is scaled + if ((columnSpec[counter] > 0.0) && (columnSpec[counter] < 1.0)) + // Add scaled size to relativeWidth + relativeWidth += columnSpec[counter]; + // Column is fill + else if ((columnSpec[counter] == FILL) && (fillWidthRatio != 0.0)) + // Add fill size to relativeWidth + relativeWidth += fillWidthRatio; + } + + // Determine the total scaled width as estimated by this component + if (relativeWidth == 0) + temp = 0; + else + temp = (int) (scalableWidth / relativeWidth + 0.5); + + // If the container needs to be bigger, make it so + if (scaledWidth < temp) + scaledWidth = temp; + + //---------------------------------------------------------------------- + + // Determine total percentage of scalable space that the component + // occupies by adding the relative columns and the fill columns + double relativeHeight = 0.0; + + for (counter = entry.row1; counter <= entry.row2; counter++) + { + // Row is scaled + if ((rowSpec[counter] > 0.0) && (rowSpec[counter] < 1.0)) + // Add scaled size to relativeHeight + relativeHeight += rowSpec[counter]; + // Row is fill + else if ((rowSpec[counter] == FILL) && (fillHeightRatio != 0.0)) + // Add fill size to relativeHeight + relativeHeight += fillHeightRatio; + } + + // Determine the total scaled width as estimated by this component + if (relativeHeight == 0) + temp = 0; + else + temp = (int) (scalableHeight / relativeHeight + 0.5); + + // If the container needs to be bigger, make it so + if (scaledHeight < temp) + scaledHeight = temp; + } + + // totalWidth is the scaledWidth plus the sum of all absolute widths and all + // preferred widths + int totalWidth = scaledWidth; + + for (counter = 0; counter < columnSpec.length; counter++) + // Is the current column an absolute size + if (columnSpec[counter] >= 1.0) + totalWidth += (int) (columnSpec[counter] + 0.5); + // Is the current column a preferred size + else if ((columnSpec[counter] == PREFERRED) || + (columnSpec[counter] == MINIMUM)) + { + // Assume a maximum width of zero + int maxWidth = 0; + + // Find maximum preferred width of all components completely + // contained within this column + iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if ((entry.col1 == counter) && (entry.col2 == counter)) + { + Dimension p = (columnSpec[counter] == PREFERRED) ? + entry.component.getPreferredSize() : + entry.component.getMinimumSize(); + + int width = (p == null) ? 0 : p.width; + + if (maxWidth < width) + maxWidth = width; + } + } + + // Add preferred width + totalWidth += maxWidth; + } + + // totalHeight is the scaledHeight plus the sum of all absolute heights and + // all preferred widths + int totalHeight = scaledHeight; + + for (counter = 0; counter < rowSpec.length; counter++) + // Is the current row an absolute size + if (rowSpec[counter] >= 1.0) + totalHeight += (int) (rowSpec[counter] + 0.5); + // Is the current row a preferred size + else if ((rowSpec[counter] == PREFERRED) || + (rowSpec[counter] == MINIMUM)) + { + // Assume a maximum height of zero + int maxHeight = 0; + + // Find maximum preferred height of all components completely + // contained within this row + iterator = list.listIterator(0); + + while (iterator.hasNext()) + { + Entry entry = (Entry) iterator.next(); + + if ((entry.row1 == counter) && (entry.row1 == counter)) + { + Dimension p = (rowSpec[counter] == PREFERRED) ? + entry.component.getPreferredSize() : + entry.component.getMinimumSize(); + + int height = (p == null) ? 0 : p.height; + + if (maxHeight < height) + maxHeight = height; + } + } + + // Add preferred height + totalHeight += maxHeight; + } + + // Compensate for container's insets + Insets inset = container.getInsets(); + totalWidth += inset.left + inset.right; + totalHeight += inset.top + inset.bottom; + + return new Dimension(totalWidth, totalHeight); +} + + + +/** + * Adds the specified component with the specified name to the layout. + * + * @param name indicates entry's position and anchor + * @param component component to add + */ + +public void addLayoutComponent (String name, Component component) +{ + addLayoutComponent (component, name); +} + + + +//****************************************************************************** +//** java.awt.event.LayoutManager2 methods *** +//****************************************************************************** + + + +/** + * Adds the specified component with the specified name to the layout. + * + * @param component component to add + * @param constraint indicates entry's position and alignment + */ + +public void addLayoutComponent (Component component, Object constraint) +{ + if (constraint instanceof String) + { + // Create an entry to associate component with its constraints + constraint = new TableLayoutConstraints((String) constraint); + + // Add component and constraints to the list + list.add (new Entry(component, (TableLayoutConstraints) constraint)); + } + else if (constraint instanceof TableLayoutConstraints) + { + // Add component and constraints to the list + list.add (new Entry(component, (TableLayoutConstraints) constraint)); + } + else if (constraint == null) + throw new IllegalArgumentException("No constraint for the component"); + else + throw new IllegalArgumentException + ("Cannot accept a constraint of class " + constraint.getClass()); +} + + + +/** + * Removes the specified component from the layout. + * + * @param component component being removed + */ + +public void removeLayoutComponent (Component component) +{ + list.remove (component); +} + + + +/** + * Returns the maximum dimensions for this layout given the components in the + * specified target container. + * + * @param target the component which needs to be laid out + * + * @return unconditionally, a Dimension of Integer.MAX_VALUE by + * Integer.MAX_VALUE since TableLayout does not limit the + * maximum size of a container + */ + +public Dimension maximumLayoutSize (Container target) +{ + return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE); +} + + + +/** + * Returns the alignment along the x axis. This specifies how the component + * would like to be aligned relative to other components. The value should be + * a number between 0 and 1 where 0 represents alignment along the origin, 1 is + * aligned the furthest away from the origin, 0.5 is centered, etc. + * + * @return unconditionally, 0.5 + */ + +public float getLayoutAlignmentX (Container parent) +{ + return 0.5f; +} + + + +/** + * Returns the alignment along the y axis. This specifies how the component + * would like to be aligned relative to other components. The value should be + * a number between 0 and 1 where 0 represents alignment along the origin, 1 is + * aligned the furthest away from the origin, 0.5 is centered, etc. + * + * @return unconditionally, 0.5 + */ + +public float getLayoutAlignmentY (Container parent) +{ + return 0.5f; +} + + + +/** + * Invalidates the layout, indicating that if the layout manager has cached + * information it should be discarded. + */ + +public void invalidateLayout (Container target) +{ + dirty = true; +} + + + +//****************************************************************************** +//*** Inner Class *** +//****************************************************************************** + + + + // The following inner class is used to bind components to their constraints + protected class Entry extends TableLayoutConstraints + { + /** Component bound by the constraints */ + protected Component component; + + /** Does the component occupy a single cell */ + protected boolean singleCell; + + /** + * Constructs an Entry that binds a component to a set of constraints. + * + * @param component component being bound + * @param constraint constraints being applied + */ + + public Entry (Component component, TableLayoutConstraints constraint) + { + super (constraint.col1, constraint.row1, + constraint.col2, constraint.row2, + constraint.hAlign, constraint.vAlign); + + singleCell = ((row1 == row2) && (col1 == col2)); + this.component = component; + } + + /** + * Determines whether or not two entries are equal. + * + * @param object object being compared to; must be a Component if it + * is equal to this TableLayoutConstraints. + * + * @return True, if the entries refer to the same component object. + * False, otherwise. + */ + + public boolean equals (Object object) + { + boolean equal = false; + + if (object instanceof Component) + { + Component component = (Component) object; + equal = (this.component == component); + } + + return equal; + } + } + + + +} diff --git a/src/org/rapla/components/layout/TableLayoutConstants.java b/src/org/rapla/components/layout/TableLayoutConstants.java new file mode 100644 index 0000000..fbb3602 --- /dev/null +++ b/src/org/rapla/components/layout/TableLayoutConstants.java @@ -0,0 +1,55 @@ +package org.rapla.components.layout; + + + +/** + * Constants used by TableLayout. + * + * @author Daniel E. Barbalace + */ + +public interface TableLayoutConstants +{ + + + +/** Indicates that the component is left justified in its cell */ +public static final int LEFT = 0; + +/** Indicates that the component is top justified in its cell */ +public static final int TOP = 0; + +/** Indicates that the component is centered in its cell */ +public static final int CENTER = 1; + +/** Indicates that the component is full justified in its cell */ +public static final int FULL = 2; + +/** Indicates that the component is bottom justified in its cell */ +public static final int BOTTOM = 3; + +/** Indicates that the component is right justified in its cell */ +public static final int RIGHT = 3; + +/** Indicates that the row/column should fill the available space */ +public static final double FILL = -1.0; + +/** Indicates that the row/column should be allocated just enough space to + accomidate the preferred size of all components contained completely within + this row/column. */ +public static final double PREFERRED = -2.0; + +/** Indicates that the row/column should be allocated just enough space to + accomidate the minimum size of all components contained completely within + this row/column. */ +public static final double MINIMUM = -3.0; + +/** Minimum value for an alignment */ +public static final int MIN_ALIGN = 0; + +/** Maximum value for an alignment */ +public static final int MAX_ALIGN = 3; + + + +} diff --git a/src/org/rapla/components/layout/TableLayoutConstraints.java b/src/org/rapla/components/layout/TableLayoutConstraints.java new file mode 100644 index 0000000..0e8b925 --- /dev/null +++ b/src/org/rapla/components/layout/TableLayoutConstraints.java @@ -0,0 +1,206 @@ +package org.rapla.components.layout; + + +import java.util.*; + + +/** + * The following inner class is used to bind components to their + * constraints. + * + * @author Daniel E. Barbalace + */ + +public class TableLayoutConstraints implements TableLayoutConstants +{ + + + +/** Cell in which the upper left corner of the component lays */ +public int col1, row1; + +/** Cell in which the lower right corner of the component lays */ +public int col2, row2; + +/** Horizontal justification if component occupies just one cell */ +public int hAlign; + +/** Verical justification if component occupies just one cell */ +public int vAlign; + + + +/** + * Constructs an TableLayoutConstraints with the default settings. This + * constructor is equivalent to TableLayoutConstraints(0, 0, 0, 0, FULL, FULL). + */ + +public TableLayoutConstraints () +{ + col1 = row1 = col2 = row2 = 0; + hAlign = vAlign = FULL; +} + + + +/** + * Constructs an TableLayoutConstraints from a string. + * + * @param constraints indicates TableLayoutConstraints's position and justification + * as a string in the form "row, column" or + * "row, column, horizontal justification, vertical + * justification" or "row 1, column 1, row 2, column 2". + * It is also acceptable to delimit the paramters with + * spaces instead of commas. + */ + +public TableLayoutConstraints (String constraints) +{ + // Parse constraints using spaces or commas + StringTokenizer st = new StringTokenizer(constraints, ", "); + + // Use default values for any parameter not specified or specified + // incorrectly. The default parameters place the component in a single + // cell at column 0, row 0. The component is fully justified. + col1 = 0; + row1 = 0; + col2 = 0; + row2 = 0; + hAlign = FULL; + vAlign = FULL; + + String token = null; + + try + { + // Get the first column (assume component is in only one column) + token = st.nextToken(); + col1 = new Integer(token).intValue(); + col2 = col1; + + // Get the first row (assume component is in only one row) + token = st.nextToken(); + row1 = new Integer(token).intValue(); + row2 = row1; + + // Get the second column + token = st.nextToken(); + col2 = new Integer(token).intValue(); + + // Get the second row + token = st.nextToken(); + row2 = new Integer(token).intValue(); + } + catch (NoSuchElementException error) {} + catch (NumberFormatException error) + { + try + { + // Check if token means horizontally justification the component + if (token.equalsIgnoreCase("L")) + hAlign = LEFT; + else if (token.equalsIgnoreCase("C")) + hAlign = CENTER; + else if (token.equalsIgnoreCase("F")) + hAlign = FULL; + else if (token.equalsIgnoreCase("R")) + hAlign = RIGHT; + + // There can be one more token for the vertical justification even + // if the horizontal justification is invalid + token = st.nextToken(); + + // Check if token means horizontally justification the component + if (token.equalsIgnoreCase("T")) + vAlign = TOP; + else if (token.equalsIgnoreCase("C")) + vAlign = CENTER; + else if (token.equalsIgnoreCase("F")) + vAlign = FULL; + else if (token.equalsIgnoreCase("B")) + vAlign = BOTTOM; + } + catch (NoSuchElementException error2) {} + } + + // Make sure row2 >= row1 + if (row2 < row1) + row2 = row1; + + // Make sure col2 >= col1 + if (col2 < col1) + col2 = col1; +} + + + +/** + * Constructs an TableLayoutConstraints a set of constraints. + * + * @param col1 column where upper-left cornor of the component is placed + * @param row1 row where upper-left cornor of the component is placed + * @param col2 column where lower-right cornor of the component is placed + * @param row2 row where lower-right cornor of the component is placed + * @param hAlign horizontal justification of a component in a single cell + * @param vAlign vertical justification of a component in a single cell + */ + +public TableLayoutConstraints + (int col1, int row1, int col2, int row2, int hAlign, int vAlign) +{ + this.col1 = col1; + this.row1 = row1; + this.col2 = col2; + this.row2 = row2; + + if ((hAlign < MIN_ALIGN) || (hAlign > MAX_ALIGN)) + this.hAlign = FULL; + else + this.hAlign = hAlign; + + if ((vAlign < MIN_ALIGN) || (vAlign > MAX_ALIGN)) + this.vAlign = FULL; + else + this.vAlign = vAlign; +} + + + +/** + * Gets a string representation of this TableLayoutConstraints. + * + * @return a string in the form "row 1, column 1, row 2, column 2" or + * "row, column, horizontal justification, vertical justification" + */ + +public String toString () +{ + StringBuffer buffer = new StringBuffer(); + + buffer.append (row1); + buffer.append (", "); + buffer.append (col1); + buffer.append (", "); + + if ((row1 == row2) && (col1 == col2)) + { + final char h[] = {'L', 'C', 'F', 'R'}; + final char v[] = {'T', 'C', 'F', 'B'}; + + buffer.append (h[hAlign]); + buffer.append (", "); + buffer.append (v[vAlign]); + } + else + { + buffer.append (row2); + buffer.append (", "); + buffer.append (col2); + } + + return buffer.toString(); +} + + + +} diff --git a/src/org/rapla/components/layout/package.html b/src/org/rapla/components/layout/package.html new file mode 100644 index 0000000..b7d8a01 --- /dev/null +++ b/src/org/rapla/components/layout/package.html @@ -0,0 +1,6 @@ + +This package contains additional LayoutManagers. + + + + diff --git a/src/org/rapla/components/mail/Convert.java b/src/org/rapla/components/mail/Convert.java new file mode 100644 index 0000000..c93e050 --- /dev/null +++ b/src/org/rapla/components/mail/Convert.java @@ -0,0 +1,96 @@ +package org.rapla.components.mail; +/* + * Permission to use, copy, modify, and distribute this software + * and its documentation for commercial or non-commercial purposes + * is hereby granted provided that this copyright notice appears + * in all copies. + * + * LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO + * LEGAL THEORY, SHALL THE AUTHOR OF THIS CLASS BE LIABLE TO YOU + * OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR + * CONSEQUENTIAL DAMAGES OF ANY KIND. + * + */ + +/** Class with a few static methods used by pop3 and apop classes in this package. + *

    Get the latest version of this and other classes on + * + * Stefano Locati's Java page. + * + * + * @author Stefano Locati + * slocati@geocities.com or + * stefano.locati@usa.net + * @version $Revision: 713 $ $Date: 2004-11-16 09:37:01 -0500 (Tue, 16 Nov 2004) $ + */ +public class Convert +{ + +//--------------------------------------------------------------------------- + /** This class is a library of static methods so can't be + * istantiated. + */ + private Convert() + { + } + +//--------------------------------------------------------------------------- + /** + * Convert a String into an int, giving 0 as default value. + * @param s a String to be converted + * @return int value represented by the argument, or 0 if the argument + * isn't a valid number. + */ + public static final int toInt(String s) + { + // or try: return Integer.parseInt(s); + try { + // return (Integer.valueOf(s)).intValue(); + return Integer.parseInt(s); + } catch (NumberFormatException e) { + return 0; + } + } + +//--------------------------------------------------------------------------- + /** + * Convert a byte into an hexadecimal number. + * The output is always lowercase, two digit long in the range + * 00-ff. + *

    Example: 12 gives 0c, + * 18 gives 12, + * 255 gives ff, ... + * @param n a byte value to be converted. + * @return a two digit hexadecimal number. + */ + public static final String toHexString(byte n) + { + // note: & 0xff is used to reset high bits + if ( (n >= 0) && (n <= 15) ) + return "0" + Integer.toHexString( n & 0xff ); + else return Integer.toHexString( n & 0xff ); + } + +//--------------------------------------------------------------------------- + /** + * Convert a number represented by the given byte array into a + * hexadecimal number String. + *

    Example: { 12, 22, 16 } gives + * 0c1610. That means 12 is 0c, + * 22 is 16, + * 16 is 10 or, if you prefer all together,
    + * 12 * 256^2 + 22 * 256^1 + 16 * 256 = 792080 + * gives c1610. + * @param n the byte array to be converted. + * @return a hexadecimal String with an even number of digits. + */ + public static final String toHexString(byte[] n) + { + StringBuffer hex = new StringBuffer(2*n.length); + for (int i = 0; i < n.length; i++) { + hex.append(toHexString(n[i])); + } + return hex.toString(); + } + +} diff --git a/src/org/rapla/components/mail/MailException.java b/src/org/rapla/components/mail/MailException.java new file mode 100644 index 0000000..12f4c49 --- /dev/null +++ b/src/org/rapla/components/mail/MailException.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.mail; + +import org.apache.avalon.framework.CascadingException; + +public class MailException extends CascadingException { + private static final long serialVersionUID = 1L; + + public MailException(String text,Exception ex) { + super(text,ex); + } + + public MailException(String text) { + super(text); + } + +} + + + + + + + diff --git a/src/org/rapla/components/mail/MailInterface.java b/src/org/rapla/components/mail/MailInterface.java new file mode 100644 index 0000000..ce0e610 --- /dev/null +++ b/src/org/rapla/components/mail/MailInterface.java @@ -0,0 +1,18 @@ +package org.rapla.components.mail; + +public interface MailInterface { + String ROLE = MailInterface.class.getName(); + /* Sends the mail. + Callers should check if the parameters are all valid + according to the SMTP RFC at http://www.ietf.org/rfc/rfc821.txt + because the implementing classes may not check for validity + */ + public void sendMail + ( + String senderMail + ,String recipient + ,String subject + ,String mailBody + ) + throws MailException; +} diff --git a/src/org/rapla/components/mail/MailToFile.java b/src/org/rapla/components/mail/MailToFile.java new file mode 100644 index 0000000..5d5afd5 --- /dev/null +++ b/src/org/rapla/components/mail/MailToFile.java @@ -0,0 +1,82 @@ +package org.rapla.components.mail; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; + +import org.apache.avalon.framework.configuration.Configurable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; + +/** +Dummy Implementation of the MailInterface writes Mail to a file. +This can be used for testing the notification service without sending +an email. + +Sample Configuration. +

    +    <mail-to-file id="mail-to-file">
    +       <dir>/tmp/rapla-mails/</dir>
    +    </mail-to-file>
    +
    + + +*/ +public class MailToFile implements Configurable,MailInterface { + String dirPath; + + public MailToFile( ) throws ConfigurationException{ + } + + public MailToFile( Configuration config) throws ConfigurationException{ + configure( config); + } + + + public void configure(Configuration config) throws ConfigurationException { + // get the configuration entry text with the default-value "Welcome" + dirPath = config.getChild("dir").getValue(); + } + + public void sendMail(String senderMail,String recipient, String subject, String mailBody) throws MailException { + File dir = null; + File file = null; + PrintWriter writer = null; + try { + dir = new File(dirPath); + if (!dir.exists()) + throw new MailException(dirPath + " doesn't exist."); + } catch (SecurityException e) { + throw new MailException("Can't access " + dirPath + " \n" + e.getMessage()); + } + + try { + int messageNumber = 1; + while (file == null || file.exists()) { + file = new File(dir,"msg" + messageNumber); + messageNumber ++; + } + writer = new PrintWriter(new FileWriter(file)); + writer.println("From: " + senderMail); + writer.println("To: " + recipient); + writer.println("Subject: " + subject); + writer.println(""); + writer.print(mailBody); + } catch (SecurityException e) { + throw new MailException("Can't access " + file + " \n" + e.getMessage()); + } catch (IOException e) { + throw new MailException("I/O Error while writing file: " + + file + " \n" + e.getMessage()); + } finally { + if (writer != null) + writer.close(); + } + return; + } + +} + + + + + diff --git a/src/org/rapla/components/mail/MailapiClient.java b/src/org/rapla/components/mail/MailapiClient.java new file mode 100644 index 0000000..60a1977 --- /dev/null +++ b/src/org/rapla/components/mail/MailapiClient.java @@ -0,0 +1,145 @@ +package org.rapla.components.mail; + + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.Properties; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; + + + +public class MailapiClient implements MailInterface +{ + + String mailhost = "localhost"; + int port = 25; + String username; + String password; + + public MailapiClient(Configuration config) throws ConfigurationException { + // get the configuration entry text with the default-value "Welcome" + setPort(config.getChild("smtp-port").getValueAsInteger(25)); + setSmtpHost(config.getChild("smtp-host").getValue()); + setUsername( config.getChild("username").getValue("")); + setPassword( config.getChild("password").getValue("")); + } + + public MailapiClient() + { + } + + + public void sendMail( String senderMail, String recipient, String subject, String mailBody ) throws MailException + { + Properties props = new Properties(); + props.put("mail.smtp.host", mailhost); + props.put("mail.smtp.port", new Integer(port)); + + try { + Class TransportC = Class.forName("javax.mail.Transport"); + Class SessionC = Class.forName("javax.mail.Session"); + Class MessageC = Class.forName("javax.mail.Message"); + Class RecipientTypeC = Class.forName("javax.mail.Message$RecipientType"); + Class MimeMessageC = Class.forName("javax.mail.internet.MimeMessage"); + Class InternetAddressC = Class.forName("javax.mail.internet.InternetAddress"); + Class AddressC = Class.forName("javax.mail.Address"); + Method GetInstanceM = SessionC.getMethod("getInstance", new Class[] {Properties.class}); + Constructor MimeMessageConst = MimeMessageC.getConstructor(new Class[] {SessionC}); + Constructor InternetAdressConst = InternetAddressC.getConstructor(new Class[] {String.class}); + Method SetFromM = MessageC.getMethod("setFrom", new Class[] {AddressC}); + Method SetSubjectM = MessageC.getMethod("setSubject", new Class[] {String.class}); + Method SetTextM = MessageC.getMethod("setText", new Class[] {String.class}); + Method SetRecipientM = MessageC.getMethod("setRecipient", new Class[] {RecipientTypeC,AddressC}); + Method SendM = TransportC.getMethod("send", new Class[] {MessageC}); + Object RecipientTypeTo = RecipientTypeC.getField("TO").get( null); + + // Session session = Session.getInstance(props, null); + Object session = GetInstanceM.invoke( null, new Object[] {props}); + + //MimeMessage msg = new MimeMessage(session); + Object msg = MimeMessageConst.newInstance( new Object[] {session}); + //msg.setFrom(new InternetAddress( senderMail)); + Object senderMailAddr = InternetAdressConst.newInstance( new Object[] { senderMail}); + SetFromM.invoke( msg, new Object[] {senderMailAddr} ); + // msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress( recipient)); + Object recipientAddr = InternetAdressConst.newInstance( new Object[] { recipient}); + SetRecipientM.invoke( msg, new Object[] { RecipientTypeTo, recipientAddr} ); + //msg.setSubject(subject); + SetSubjectM.invoke( msg, new Object[] {subject} ); + //msg.setText(mailBody); + SetTextM.invoke( msg, new Object[] {mailBody} ); + //Transport.send(msg); + SendM.invoke( null, new Object[] {msg}); + + } catch (ClassNotFoundException ex ) { + throw new MailException( "Mail API not available (please provide the mailapi jars from sun in the classpath):" + ex.getMessage()); + } + catch (Exception e) + { + throw new MailException( e.getMessage(), e); + } + } + + /* + final PasswordAuthentication passw = new PasswordAuthentication(username, password); + Authenticator auth = new Authenticator() + { + protected PasswordAuthentication getPasswordAuthentication() + { + return passw; + } + }; + Session session = Session.getInstance(props, auth); + */ + + + public String getSmtpHost() + { + return mailhost; + } + + + public void setSmtpHost( String mailhost ) + { + this.mailhost = mailhost; + } + + + public String getPassword() + { + return password; + } + + + public void setPassword( String password ) + { + this.password = password; + } + + + public int getPort() + { + return port; + } + + + public void setPort( int port ) + { + this.port = port; + } + + + public String getUsername() + { + return username; + } + + + public void setUsername( String username ) + { + this.username = username; + } + +} \ No newline at end of file diff --git a/src/org/rapla/components/mail/MockMailServer.java b/src/org/rapla/components/mail/MockMailServer.java new file mode 100644 index 0000000..bec6431 --- /dev/null +++ b/src/org/rapla/components/mail/MockMailServer.java @@ -0,0 +1,104 @@ +package org.rapla.components.mail; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.ServerSocket; +import java.net.Socket; + +public class MockMailServer +{ + String senderMail; + String recipient; + int port = 25; + + public int getPort() + { + return port; + } + + public void setPort( int port ) + { + this.port = port; + } + + public static void main(String[] args) + { + new MockMailServer().startMailer(false); + } + + public void startMailer(boolean deamon) + { + Thread serverThread = new Thread() + { + public void run() + { + try + { + ServerSocket socket = new ServerSocket(port); + System.out.println("MockMail server started and listening on port " + port); + Socket smtpSocket = socket.accept(); + smtpSocket.setKeepAlive(true); + BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(smtpSocket.getOutputStream())); + BufferedReader reader = new BufferedReader(new InputStreamReader(smtpSocket.getInputStream())); + writer.write("220\n"); + writer.flush(); + + String helloString = reader.readLine(); + System.out.println( helloString ); + writer.write("250\n"); + writer.flush(); + + senderMail = reader.readLine().substring("MAIL FROM:".length()); + System.out.println( senderMail ); + writer.write("250\n"); + writer.flush(); + + recipient = reader.readLine().substring("RCPT TO: ".length()); + System.out.println( recipient ); + writer.write("250\n"); + writer.flush(); + + String dataHeader = reader.readLine(); + System.out.println( dataHeader ); + + writer.write("354\n"); + writer.flush(); + String line; + do + { + line = reader.readLine(); + System.out.println( line ); + } while ( line.length() == 1 && line.charAt( 0) == 46); + reader.readLine(); + writer.write("250\n"); + writer.flush(); + String quit = reader.readLine(); + System.out.println( quit ); + writer.write("221\n"); + writer.flush(); + + } + catch (IOException e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }; + serverThread.setDaemon( deamon); + serverThread.start(); + } + + public String getRecipient() + { + return recipient; + } + + public String getSenderMail() + { + return senderMail; + } +} diff --git a/src/org/rapla/components/mail/Pop3.java b/src/org/rapla/components/mail/Pop3.java new file mode 100644 index 0000000..e413629 --- /dev/null +++ b/src/org/rapla/components/mail/Pop3.java @@ -0,0 +1,812 @@ +package org.rapla.components.mail; + +/* + * Pop3.java + * Copyright (c) 1996 John Thomas jthomas@cruzio.com + * All Rights Reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for commercial or non-commercial purposes + * is hereby granted provided that this copyright notice + * appears in all copies. + * + * LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO + * LEGAL THEORY, SHALL THE AUTHOR OF THIS CLASS BE LIABLE TO YOU + * OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR + * CONSEQUENTIAL DAMAGES OF ANY KIND. + * + */ + +import java.io.*; +import java.util.*; +import java.net.*; + +/** Interface to a Pop3 mail server. Can be used to check, fetch and delete mail messages. + *

    Get the latest version of this and other classes in + * + * Stefano Locati's Java page. + * + * Based on the + * rfc1939.txt + * definition for the Post Office Protocol - Version 3 (obsoletes + * RFC 1725). + * If mailhost, user, password are not supplied to the + * constructor, then they must be specified on the connect and + * login calls. + * + *

    The Apop command is not supported by the + * Pop3 class. But there is an Apop class + * that extends Pop3 to add Apop support. + * It can be used just like the pop class, just create an Apop object + * instead a pop object. The Apop class still works even if the + * Pop3 server doesn't support Apop login. + * + *

    Simple Usage Example to display the size of each message. + *

    + *   Pop3 pop = new Pop3(host, user, password);
    + *   PopStatus status = pop.connect();
    + *   if ( status.OK() )
    + *      status = pop.login();
    + *   if ( status.OK() ) {
    + *       status = pop.list();
    + *       String[] responses = status.Responses();
    + *       for(int i=0; i< responses.length; i++) {
    + *         System.out.println("Message[" + i + "]='" + responses[i] + "'");
    + *       }
    + *       status = pop.quit();
    + *   }
    + * 
    + * + *

    The following methods try to closely implement the corresponding + * Pop3 server commands. See RFC1939. + * + *

    + *   PopStatus     stat()
    + *   PopStatus     list()
    + *   PopStatus     list(msgnum)
    + *   PopStatus     retr(msgnum)
    + *   PopStatus     dele(msgnum)
    + *   PopStatus     noop()
    + *   PopStatus     quit()
    + *   PopStatus     top(msgnum,numlines)
    + *   PopStatus     uidl(msgnum)
    + * 
    + * + *
    • The indicated methods have additional multiline output + * that can be retrieved with the get_Responses method for + * the PopStatus object. i.e. + *
      + *       PopStatus status = mypopserver.list()
      + *       String[] list = status.get_Responses()
      + *  
      + * + *
    • The following methods are convenience functions for the client + *
      + *       PopStatus  appendFile(filename,msgnum)
      + *
      + *       int get_TotalMsgs() Number of mail messages on server
      + *       int get_TotalSize() Total size of all mail messages
      + *                           _TotalSize and _TotalMsgs are set during
      + *                           login() by an internal stat() command
      + *  
      + * + *
    • The status of a POP request is returned in an instance of + * the PopStatus class. + * PopStatus has the following methods to extract the returned info. + *
      + *       boolean    OK()        True if request had no errors
      + *       String     Response()  The initial line returned by POP server
      + *                              that starts with either +OK or -ERR
      + *       String[]   Responses() If command returns multiple lines of
      + *                              data (RETR, TOP, LIST) then this method
      + *                              will return the lines in an array.
      + *  
      + * + *
    • Public debugging Methods. + *
      + *       void     setDebugOn(boolean)      turn on debug output
      + *       void     set_DebugFile(filename)  Set filename for debug output
      + *       void     debug(String DebugInfo)  Display string on stdout
      + *  
      + *
    + * + * @author Original author: John Thomas + * jthomas@cruzio.com + * @author Current maintainer: Stefano Locati + * slocati@geocities.com or + * stefano.locati@usa.net + * @version $Revision: 710 $ $Date: 2004-09-28 05:34:50 -0400 (Tue, 28 Sep 2004) $ + * + * + */ + +public +class Pop3 { + + /** Authorization State */ + protected final int AUTHORIZATION = 1; + + /** Transaction State */ + protected final int TRANSACTION = 2; + + /** Update State */ + protected final int UPDATE = 3; + + + /** Number of mail messages on server */ + protected int _TotalMsgs = 0; + + /** Total size of all messages on server */ + protected int _TotalSize = 0; + + /** status used by Send/Recv */ + protected boolean _StatusOK = false; + + /** Session State */ + protected int State = 0; + + /** The last Pop3 command sent to the server */ + protected String LastCmd; + + /** Pop3 server host name */ + protected String Host = null; + + /** Port on which the Pop3 server listens to */ + protected int Port = 110; + + /** Mailbox user name */ + protected String User = null; + + /** Mailbox password */ + protected String Password = null; + + /** Socket connected to the server */ + protected Socket server; + + /** Input stream connected to the server socket */ + protected BufferedReader serverInputStream; + + /** Output stream connected to the server socket */ + protected DataOutputStream serverOutputStream; + + /** debug On switch */ + private boolean debugOn=false; + + + /** + * Creates the object. No work is done. + * @param host a Pop3 server host name + * @param user a mailbox user name + * @param password a mailbox password + */ + public Pop3(String host, String user, String password) { + Host = host; + User = user; + Password = password; + } + + + /** + * Creates the object. No work is done + * You will have to supply host, user and password through + * connect() and login() methods. + * @see #connect(java.lang.String) + * @see #login(java.lang.String, java.lang.String) + */ + public Pop3() { + } + + + /** + * Makes a socket connection to the specified + * host (port 110). + * @param host a Pop3 server host name + * @return PopStatus: result of this operation + */ + public PopStatus connect(String host) { + // If method specifies the host name then save it and + // call the default connect method + Host = host; + return this.connect(); + } + + /** + * Makes a socket connection to the specified + * host and port. + * @param host Pop3 server host name + * @param port TCP port to connect to + * @return PopStatus: result of this operation + */ + public PopStatus connect(String host, int port) { + // If both host and port are specified then save them + // and then call the default connect method + Host = host; + Port = port; // Normally this would be 110 (RFC 1725) + return this.connect(); + } + + /** + * Makes a socket connection to the host specified + * in the constructor (port 110). + * @return PopStatus: result of this operation + */ + public synchronized PopStatus connect() { + PopStatus status = new PopStatus(); + debug("Connecting to " + Host + " at port " + Port); + if (Host == null) { + status._Response = "-ERR Host not specified"; + status._OK = false; + return status; + } + + try { + server = new Socket(Host,Port); + if (server == null) { // a failure with no exception???? + debug("-ERR Error while connecting to Pop3 server"); + status._OK = false; + status._Response = "-ERR Error while connecting to Pop3 server"; + } else { + debug("Connected"); + // get the input stream that we will use to read from the server + serverInputStream = new BufferedReader( + new InputStreamReader(server.getInputStream())); + if (serverInputStream == null) { + debug("Failed to setup an input stream."); + status._OK = false; + status._Response = "-ERR Error setting up input stream"; + server = null; + } + serverOutputStream = new DataOutputStream( + server.getOutputStream() ); + if (serverOutputStream == null) { + debug("Failed to setup an output stream."); + status._OK = false; + status._Response = "-ERR Error setting up output stream"; + server = null; + } + } + } + catch (Exception e) { + String msg = "Exception! " + e.toString(); + debug(msg); + status._OK = false; + status._Response = msg; + server = null; + } + + if (server != null) { + status._OK = true; + // POP protocol requires server to send a response on the + // connect. We will now get that response and parse it + _StatusOK = true; // Fake doing send() before recv() + status._Response = recv(); + Parse(status,2); + debug("Response=" + status._Response); + } + + if (status._OK) + State = AUTHORIZATION; + + return status; + } + + /** Login the specified user with the specified password. + * If the login is successful, a STAT command is issued + * to get the current number of messages. + * @param user a mailbox user name + * @param password a mailbox password + * @return PopStatus: result of this operation + */ + public PopStatus + login(String user, String password) { + User = user; + Password = password; + return login(); + } + + /** Login with the user and password specified in the constructor. + * If the login is successful, a STAT + * command is issued to get the current number of + * messages. + * @return PopStatus: result of this operation + */ + public synchronized PopStatus login() { + PopStatus status = new PopStatus(); + + if (User == null || Password == null) { + status._Response = "-ERR Userid or Password not specified"; + return status; + } + if ( server != null ) { + send("USER " + User); + status._Response = recv(); + Parse(status,1); + if (status._OK) { + send("PASS " + Password); + status._Response = recv(); + Parse(status,1); + if (status._OK) { + State = TRANSACTION; + // Now we will do an internal STAT function + stat(); + } + } + } + return status; + } + + /** Closes the socket connection. + * Use quit for a normal termination. + * @see #quit() + */ + public synchronized void close() { + debug("Closing socket"); + try { + server.close(); + State = 0; + } catch (IOException e) { + debug("Failure in server.close()"); + } + } + + /** Gets the number of messages and their total size from the server. + * @return PopStatus: result of this operation + */ + public synchronized PopStatus stat() { + PopStatus status = new PopStatus(); + if (State != TRANSACTION) { + status._Response = "-ERR Server not in transaction mode"; + return status; + } + send("STAT"); // Issue the STAT command + status._Response = recv(); // read the response + String[] tokens = Parse(status, 4); + + if (status._OK) { + _TotalMsgs = Convert.toInt(tokens[1]); + _TotalSize = Convert.toInt(tokens[2]); + } + + return status; + } + + /** + * Quits the session with the Pop3 server. + * After receiving a goodbye message from the server, + * the socket is closed. + * @return PopStatus + */ + public synchronized PopStatus quit() { + PopStatus status = new PopStatus(); + send("QUIT"); // Issue the STAT command + State = UPDATE; + status._Response = recv(); // read the response + Parse(status,2); + close(); + + return status; + } + + /** + * Gets the size of the specified mail message. + * @param msgnum message number + * @return PopStatus: result of this operation + */ + public synchronized PopStatus list(int msgnum) { + PopStatus status = new PopStatus(); + + send("LIST " + msgnum); // Issue the LIST n command + status._Response = recv(); // read the response + Parse(status,2); + return status; + } + + /** Gets a list of messages and the size of each one. + * @return PopStatus: result of this operation + */ + public synchronized PopStatus list() { + + PopStatus status = new PopStatus(); + send("LIST"); // Issue the LIST command + + recvN(status); // read the response + Parse(status,2); + + return status; + } + + /** Gets the uidl of the specified mail msg. + * @param msgnum message number + * @return PopStatus: result of this operation + */ + public synchronized PopStatus uidl(int msgnum) { + PopStatus status = new PopStatus(); + send("UIDL " + msgnum); // Issue the UIDL msgnum command + status._Response = recv(); // read the response + Parse(status,2); + + return status; + } + + /** Gets a list of messages and the UIDL of + * each one. + * UIDL is a message identifier that is + * garanteed to remain the same even across different + * sessions. + * @return PopStatus: result of this operation + */ + public synchronized PopStatus uidl() { + + PopStatus status = new PopStatus(); + send("UIDL"); // Issue the UIDL command + + recvN(status); // read the responses + Parse(status,2); + + return status; + } + + /** Gets the contents of a mail message. + * The array of strings obtained are the lines of the + * specified mail message. + * The lines have CR/LF stripped, any leading + * "." fixed up and the ending "." + * removed.
    + * The array can be retrieved with the status.Responses() method. + * The +OK or -ERR status line is + * returned. + * @param msgnum message number + * @return PopStatus: result of this operation + */ + public synchronized PopStatus retr(int msgnum) { + + PopStatus status = new PopStatus(); + send("RETR " + msgnum); // Issue the RETR n command + + // This may produce more than one response so we call the + // recvN method and save an array of strings in status._Responses. + recvN(status); // read the response + // The initial string that contains the status is in the + // status._Response state variable. + Parse(status,2); + + return status; + } + + + /** Gets the top n lines of a mail message. + * The array of strings obtained are the lines of the + * mail headers and the top N lines of the indicated mail msg. + * The lines have CR/LF striped, any leading + * "." fixed up and the ending "." + * removed.
    + * The array can be retrieved with status.Responses() method. + * The +OK or -ERR status line is + * returned. + * @param msgnum the message number + * @param n how many body lines should be retrieved. + * If n=0, you'll get just the headers, + * unfortunately I've bumped into a buggy Pop3 server that + * didn't like zeroes, so I suggest to use n=1 + * if you want just headers. + * @return PopStatus: result of this operation + */ + public synchronized PopStatus top(int msgnum, int n) { + + PopStatus status = new PopStatus(); + send("TOP " + msgnum + " " + n); // Issue the TOP msgnum n command + + // This may produce more than one response so we call the + // recvN method and set multiline output into _Responses + recvN(status); // read the response + + Parse(status,2); + + return status; + } + + + /** Marks the mail message for deletion + * This mail message will be deleted when QUIT is issued. + * If you lose the connection the message is not deleted. + * @param msgnum a message number + * @return PopStatus: result of this operation + * @see #rset() + */ + public synchronized PopStatus dele(int msgnum) { + PopStatus status = new PopStatus(); + send("DELE " + msgnum); // Issue the DELE n command + + status._Response = recv(); // read the response + Parse(status,2); + + return status; + } + + /** Resets the mail messages that have been marked for deletion. + * Nothing will be deleted if QUIT is issued next. + * @return PopStatus: result of this operation + * @see #dele(int) + */ + public synchronized PopStatus rset() { + PopStatus status = new PopStatus(); + send("RSET"); // Issue the RSET command + + status._Response = recv(); // read the response + Parse(status,2); + + return status; + } + + /** Does not do anything but it will keep the server active. + * @return PopStatus: result of this operation + */ + public synchronized PopStatus noop() { + + PopStatus status = new PopStatus(); + send("NOOP"); // Issue the NOOP command + + status._Response = recv(); // read the response + Parse(status,2); + + return status; + } + + /** Returns the number of messages on the server. + * This value is set by an internal STAT + * issued at login. + * @return the number of messages on this server. + * @see #get_TotalSize() + */ + public int get_TotalMsgs() { + return _TotalMsgs; + } + + /** Returns the size of messages on the server. + * This value is set by an internal STAT + * issued at login. + * @return the total size of messages on this server. + * @see #get_TotalMsgs() + */ + public int get_TotalSize() { + return _TotalSize; + } + + /** Returns the contents of a mail message and append it to the + * specified mail file. + * It will internally call RETR and then write + * the results to the specified file. + * @param filename the name of the file to be extended + * @param msgnum a message number + * @return PopStatus: result of this operation + */ + public synchronized PopStatus appendFile(String filename, int msgnum) { + PopStatus status = new PopStatus(); + + String[] contents; + + send("RETR " + msgnum); // RETR n will return the contents + // of message n + + recvN(status); // read the response + Parse(status,2); + if (status._OK) { + RandomAccessFile openfile; + try { + openfile = new RandomAccessFile(filename,"rw"); + } catch (IOException e) { + status._OK = false; + status._Response = "-ERR File open failed"; + return status; + } + Date datestamp = new Date(); + contents = status.Responses(); + try { + openfile.seek(openfile.length()); + openfile.writeBytes("From - " + datestamp.toString() + "\r\n"); + for(int i=0; i+OK + * and return an array of strings each representing a white space + * delimited token. The remainder of the response after + * maxToParse is returned as a single String. + */ + String[] Parse(PopStatus status, int maxToParse) { + String[] tokens = null; + + status._OK = false; + String response = status._Response; + if (response != null) { + int i=0; + int max; + if (response.trim().startsWith("+OK")) + status._OK = true; + else + debug(response); + // This will break the line into a set of tokens. + StringTokenizer st = new StringTokenizer(response); + //tokens = new String[st.countTokens()]; + if (maxToParse == -1) + max = st.countTokens(); + else + max = maxToParse; + tokens = new String[max+1]; + while (st.hasMoreTokens() && i < max) { + tokens[i] = new String(st.nextToken()); + //debug("Token " + i + "= '" + tokens[i] + "'"); + i++; + } + // Now get any remaining tokens as a single string + if (st.hasMoreTokens()) { + StringBuffer rest = new StringBuffer(st.nextToken()); + while (st.hasMoreTokens() ) + rest.append(" " + st.nextToken()); + tokens[max] = new String(rest); + //debug("Token " + max + "= '" + tokens[max] + "'"); + } + } + return tokens; + } + + /** Sends the passed command to the server. + */ + void send (String cmdline) { + debug(">> " + cmdline); + LastCmd = cmdline; // Save command for error msg + + try { + // Write string as a set of bytes + serverOutputStream.writeBytes(cmdline + "\r\n"); + _StatusOK = true; + } catch (IOException i){ + System.err.println("Caught exception while sending command to server"); + _StatusOK = false; + + } catch (Exception e) { + System.err.println("Send: Unexpected exception: " + e.toString()); + _StatusOK = false; + } + } + + /** Gets the next response to a previously sent command from the server. + */ + String recv() { + //debug("entered recv"); + + String line = ""; + if ( ! _StatusOK ) { + line = "-ERR Failed sending command to server"; + return line; + } + // send() has written a command to the + // server so now we will try to read the result + try { + line = serverInputStream.readLine(); + debug("<<" + line); + } catch (IOException i){ + System.err.println("Caught exception while reading"); + line = "-ERR Caught IOException while reading from server"; + } catch (Exception e) { + System.err.println("Unexpected exception: " + e.toString()); + line = "-ERR Unexpected exception while reading from server"; + } + if (line == null) { // prevent crash if reading a null line + debug("Read a null line from server"); + line = "-ERR "; + } + if (line.trim().startsWith("-ERR")) { + debug("Result from server has error!"); + debug("Sent: '" + LastCmd + "'"); + debug("Received: '" + line + "'"); + return line; + } else { + if (line.trim().startsWith("+OK")) { + return line; + } else { + debug("Received strange response"); + debug("'" + line + "'"); + line = "-ERR Invalid response"; + return line; + } + } + } + + /** Gets the responses to a previously sent command from the server. + * This is used when more than one line is expected. + * The last line of output should be ".\r\n" + */ + void recvN(PopStatus status) { + debug("entered recvN"); + Vector v = new Vector(100,100); + String line = ""; + + // send() has written a command to the + // server so now we will try to read the result + try { + boolean done = false; + int linenum=0; + while (!done) { + line = serverInputStream.readLine(); + linenum++; + debug("<<" + line.length() + " '" + line +"'"); + if (linenum == 1) { // process the initial line + if (line.trim().startsWith("-ERR ")) { + debug("Result from server has error!"); + debug("Sent: '" + LastCmd + "'"); + debug("Received: '" + line + "'"); + done = true; + status._Response = line; + } else { + if (line.trim().startsWith("+OK")) { + //Everything looks OK + status._Response = line; + } else { + debug("Received strange response"); + debug("'" + line + "'"); + done = true; + status._Response = "-ERR Invalid response"; + } + } + } else { + // process line 2 - n + if (line.startsWith(".")) { + if (line.length() == 1) + done = true; + else + v.addElement(line.substring(1)); + } else + v.addElement(line); + } + + } // end of while(!done) + } catch (IOException i){ + System.err.println("Caught exception while reading"); + status._Response = "-ERR Caught IOException while reading from server"; + } catch (Exception e) { + System.err.println("Unexpected exception: " + e.toString()); + status._Response = "-ERR Unexpected exception while reading from server"; + } + + status._Responses = new String[v.size()]; + v.copyInto(status._Responses); + return; + } + + /** Sets debug on or off. + * Debug messages are written to standard error. + * @param OnOff true to set on debugging, false to + * shut it up. + */ + public void setDebugOn(boolean OnOff) { + debugOn = OnOff; + } + + /** If debugOn switch is set, display debug info. + * @param debugstr a debug message + */ + public void debug(String debugstr) { + if (debugOn) { + System.err.println(debugstr); + } + } + + //------------------------------------------------------- + +} // end of Class Pop3 diff --git a/src/org/rapla/components/mail/PopStatus.java b/src/org/rapla/components/mail/PopStatus.java new file mode 100644 index 0000000..f39dfac --- /dev/null +++ b/src/org/rapla/components/mail/PopStatus.java @@ -0,0 +1,77 @@ +package org.rapla.components.mail; +/* + * PopStatus.java + * Copyright (c) 1996 John Thomas jthomas@cruzio.com + * All Rights Reserved. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for commercial or non-commercial purposes + * is hereby granted provided that this copyright notice + * appears in all copies. + * + * LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO + * LEGAL THEORY, SHALL THE AUTHOR OF THIS CLASS BE LIABLE TO YOU + * OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR + * CONSEQUENTIAL DAMAGES OF ANY KIND. + * + */ + +/**Class that holds the information returned from a pop request. + *

    Get the latest version of this and other classes on + * + * Stefano Locati's Java page. + * + * + * This is required so that the POP class can be thread safe. + * + * @author Original author: John Thomas + * jthomas@cruzio.com + * @author Current maintainer: Stefano Locati + * slocati@geocities.com or + * stefano.locati@usa.net + * @version $Revision: 713 $ $Date: 2004-11-16 09:37:01 -0500 (Tue, 16 Nov 2004) $ + * + */ + +public class PopStatus { + + + boolean _OK=false; // True if last command returned +OK + + String _Response; // Set to initial response from server + + String[] _Responses= new String[0]; // Set to last multiline response. + + +//---------------------------------------------------------- +/** + * Returns the multi-line output from a command. + * @return a multi-line response in an array of String. + */ +public String[] Responses() { + return _Responses; +} + +//---------------------------------------------------------- +/** + * Returns the initial status line output from a command + * @return the initial status line output from a command. + */ +public String Response() { + return _Response; +} + +//---------------------------------------------------------- +/** + * Returns the completion status (+OK true or + * -ERR false) from the last command issued + * to the server. + * @return true in case of success (+OK), + * false otherwise (-ERR). + */ +public boolean OK() { + return _OK; +} + +//------------------------------------------------------- +} // end of Class PopStatus diff --git a/src/org/rapla/components/mail/SmtpClient.java b/src/org/rapla/components/mail/SmtpClient.java new file mode 100644 index 0000000..50afec9 --- /dev/null +++ b/src/org/rapla/components/mail/SmtpClient.java @@ -0,0 +1,234 @@ +package org.rapla.components.mail; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.net.Socket; +import java.net.UnknownHostException; + +import org.apache.avalon.framework.configuration.Configurable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; + +/** +

    Default Implementation of the MailInterface with smtp protocol +at http://www.ietf.org/rfc/rfc821.txt. +

    +Sample Configuration for local Mail-server. +
    +    <smtp-service id="default-smpt-client">
    +       <smtp-host>localhost</smtp-host>
    +       <smtp-port>25</smtp-port>
    +    </smtp-service>
    +
    + + Sample Configuration with pop3 before smpt enabled. + Auhtentifies on the pop3 server before establashing a smtp connection. +
    +    <smtp-service id="default-smpt-client">
    +       <pop3-before-smtp>
    +         <host>pop-server.your.mail.provider</host>
    +         <user>your.username</user>
    +         <password>your.password</password>
    +       </pop3-before-smtp>
    +       <smtp-host>smpt-server.mail.provider</smtp-host>
    +       <smtp-port>25</smtp-port>
    +    </smtp-service>
    +
    + +*/ +public class SmtpClient extends AbstractLogEnabled implements Configurable,MailInterface { + //connection information + boolean smtpAfterPop; + String popHost; + String popUser; + String popPwd; + String smtpHost; + int smtpPort; + String localHost; + + public SmtpClient(Logger logger, Configuration config) throws ConfigurationException{ + enableLogging( logger); + configure( config); + } + + public SmtpClient(){ + smtpAfterPop = false; + smtpHost = "localhost"; + smtpPort = 25; + localHost = "localhost";//msp.getLocalHost(); + } + + public void configure(Configuration config) throws ConfigurationException { + // get the configuration entry text with the default-value "Welcome" + setSmtpPort(config.getChild("smtp-port").getValueAsInteger(25)); + setSmtpHost(config.getChild("smtp-host").getValue()); + Configuration pop3Config = config.getChild("pop3-before-smtp",false); + if (pop3Config != null) { + setPopBeforeSmtp(true); + setPopHost(pop3Config.getChild("host").getValue()); + setPopUser(pop3Config.getChild("username").getValue()); + setPopPwd(pop3Config.getChild("password").getValue()); + } + + } + + public void setPopHost(String s){ + popHost = s; + } + public void setPopUser(String s){ + popUser = s; + } + public void setPopPwd(String s){ + popPwd = s; + } + + public void setPopBeforeSmtp(boolean enable){ + smtpAfterPop = enable; + } + + public void setSmtpHost(String s){ + smtpHost = s; + } + public void setSmtpPort(int i){ + smtpPort = i; + } + + public void setLocalHost(String s){ + localHost = s; + } + public Pop3 popBeforeSmtp() throws MailException { + Pop3 pop = new Pop3(popHost, popUser, popPwd); + + getLogger().debug("Try to connect to host " + popHost + " for user " + popUser + "...."); + + PopStatus status = pop.connect(); + + if ( status.OK() ) + getLogger().debug("Connection established..."); + else + throw new MailException("Connection to pop server failed..."); + + if ( status.OK() ) status = pop.login(); + + if ( status.OK() ) + getLogger().debug("Login accepted!"); + + if ( status.OK() ) + pop.get_TotalMsgs(); + + if ( !status.OK() ) + throw new MailException("pop failed..."); + + return pop; + } + + + + private boolean isResponse(BufferedReader in, String expectedServerResponse) throws MailException,IOException { + String responseLine = in.readLine(); + if (responseLine == null) + return false; + getLogger().debug("Server: " + responseLine); + return responseLine.indexOf(expectedServerResponse)>=0; + } + + public void sendMail(String senderMail,String recipient, String subject, String mailBody) throws MailException { + Socket smtpSocket = null; //socket object + Writer out = null; //outputstream + BufferedReader reader = null; //inputStream + Pop3 pop = null; + if (smtpAfterPop){ + pop = popBeforeSmtp(); + getLogger().debug("popBeforeSmtp() has been succesfully executed, now trying to establish Smtp-connection..."); + + } + try { + smtpSocket = new Socket(smtpHost, smtpPort); + out = new OutputStreamWriter(smtpSocket.getOutputStream()); + reader = new BufferedReader(new InputStreamReader(smtpSocket.getInputStream())); + if (smtpSocket != null && out != null && reader != null) + { + if (!isResponse(reader, "220")) + throw new MailException("no greeting, return failed..."); + + + getLogger().debug("Client: HELO " + localHost); + out.write("HELO " + localHost + "\n"); + out.flush(); + if (!isResponse(reader, "250")) + throw new MailException("HELO return failed..."); + + getLogger().debug("Client: MAIL FROM: " + senderMail + ""); + out.write("MAIL FROM: " + senderMail + "\n"); + out.flush(); + if (!isResponse(reader, "250")) + throw new MailException("MAIL FROM return failed..."); + + + getLogger().debug("Client: RCPT TO: <" + recipient + ">"); + out.write("RCPT TO: " + recipient + "\n"); + out.flush(); + if (!isResponse(reader, "250")) + throw new MailException("RCPT return failed..."); + + getLogger().debug("Client: DATA"); + out.write("DATA\n"); + out.flush(); + if (!isResponse(reader, "354")) + throw new MailException("DATA return failed..."); + + getLogger().debug("Client: SUBJECT: " + subject); + out.write("Subject: " + subject); + out.write(13); + out.write(10); + /* + getLogger().debug("Client: FROM: " + senderName );} + out.writeBytes("FROM: " + senderName); + out.write(13); + out.write(10); + */ + + getLogger().debug("Client: " + mailBody); + out.write(mailBody); + getLogger().debug("Client: newline . newline"); + out.write(13); + out.write(10); + out.write(46); + out.write(13); + out.write(10); + out.flush(); + + if (isResponse(reader, "250") == true) { + getLogger().debug("Client: QUIT"); + out.write("QUIT" + "\n"); + out.flush(); + if (isResponse(reader, "221") == false) + throw new MailException("QUIT return failed..."); + } + out.close(); + reader.close(); + smtpSocket.close(); + } + } catch (UnknownHostException e) { + throw new MailException("Don't know about host: " + smtpHost); + } catch (IOException e) { + throw new MailException("I/O Error while connecting to: " + smtpHost + ":" + smtpPort + " \n" + e.getMessage()); + } finally { + if (pop != null) + pop.quit(); + } + return; + + + } + +} + + + + + diff --git a/src/org/rapla/components/mail/package.html b/src/org/rapla/components/mail/package.html new file mode 100644 index 0000000..ee7c818 --- /dev/null +++ b/src/org/rapla/components/mail/package.html @@ -0,0 +1,7 @@ + +Very simple implementation of smtp-client-protocol. Supports "Pop before smtp" authentication +with the Pop3 classed from John Thomas. + + + + diff --git a/src/org/rapla/components/package.html b/src/org/rapla/components/package.html new file mode 100644 index 0000000..a6dd249 --- /dev/null +++ b/src/org/rapla/components/package.html @@ -0,0 +1,8 @@ + +Contains all components and classes that are independant from the rest of rapla, +and can easily be reused in other projects. Dependencies with other components or +packages are explicitly stated in a file called DEPENDENCIES. + + + + diff --git a/src/org/rapla/components/tablesorter/TableSorter.java b/src/org/rapla/components/tablesorter/TableSorter.java new file mode 100644 index 0000000..c680166 --- /dev/null +++ b/src/org/rapla/components/tablesorter/TableSorter.java @@ -0,0 +1,545 @@ +/* + * Sun Microsystems grants you ("Licensee") a non-exclusive, royalty + * free, license to use, modify and redistribute this software in + * source and binary code form, provided that i) this copyright notice + * and license appear on all copies of the software; and ii) Licensee + * does not utilize the software in a manner which is disparaging to + * Sun Microsystems. + * + * The software media is distributed on an "As Is" basis, without + * warranty. Neither the authors, the software developers nor Sun + * Microsystems make any representation, or warranty, either express + * or implied, with respect to the software programs, their quality, + * accuracy, or fitness for a specific purpose. Therefore, neither the + * authors, the software developers nor Sun Microsystems shall have + * any liability to you or any other person or entity with respect to + * any liability, loss, or damage caused or alleged to have been + * caused directly or indirectly by programs contained on the + * media. This includes, but is not limited to, interruption of + * service, loss of data, loss of classroom time, loss of consulting + * or anticipatory *profits, or consequential damages from the use of + * these programs. +*/ +package org.rapla.components.tablesorter; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.swing.Icon; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; + +/** + * TableSorter is a decorator for TableModels; adding sorting + * functionality to a supplied TableModel. TableSorter does + * not store or copy the data in its TableModel; instead it maintains + * a map from the row indexes of the view to the row indexes of the + * model. As requests are made of the sorter (like getValueAt(row, col)) + * they are passed to the underlying model after the row numbers + * have been translated via the internal mapping array. This way, + * the TableSorter appears to hold another copy of the table + * with the rows in a different order. + *

    + * TableSorter registers itself as a listener to the underlying model, + * just as the JTable itself would. Events recieved from the model + * are examined, sometimes manipulated (typically widened), and then + * passed on to the TableSorter's listeners (typically the JTable). + * If a change to the model has invalidated the order of TableSorter's + * rows, a note of this is made and the sorter will resort the + * rows the next time a value is requested. + *

    + * When the tableHeader property is set, either by using the + * setTableHeader() method or the two argument constructor, the + * table header may be used as a complete UI for TableSorter. + * The default renderer of the tableHeader is decorated with a renderer + * that indicates the sorting status of each column. In addition, + * a mouse listener is installed with the following behavior: + *

      + *
    • + * Mouse-click: Clears the sorting status of all other columns + * and advances the sorting status of that column through three + * values: {NOT_SORTED, ASCENDING, DESCENDING} (then back to + * NOT_SORTED again). + *
    • + * SHIFT-mouse-click: Clears the sorting status of all other columns + * and cycles the sorting status of the column through the same + * three values, in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}. + *
    • + * CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except + * that the changes to the column do not cancel the statuses of columns + * that are already sorting - giving a way to initiate a compound + * sort. + *
    + *

    + * This is a long overdue rewrite of a class of the same name that + * first appeared in the swing table demos in 1997. + * + * @author Philip Milne + * @author Brendon McLean + * @author Dan van Enckevort + * @author Parwinder Sekhon + * @version 2.0 02/27/04 + */ + +public class TableSorter extends AbstractTableModel { + private static final long serialVersionUID = 1L; + + protected TableModel tableModel; + + public static final int DESCENDING = -1; + public static final int NOT_SORTED = 0; + public static final int ASCENDING = 1; + private Map enabled= new HashMap(); + + private static Directive EMPTY_DIRECTIVE = new Directive(-1, NOT_SORTED); + + public static final Comparator COMPARABLE_COMAPRATOR = new Comparator() { + public int compare(Object o1, Object o2) { + return ((Comparable) o1).compareTo(o2); + } + }; + public static final Comparator LEXICAL_COMPARATOR = new Comparator() { + public int compare(Object o1, Object o2) { + return o1.toString().compareTo(o2.toString()); + } + }; + + private Row[] viewToModel; + private int[] modelToView; + + private JTableHeader tableHeader; + private MouseListener mouseListener; + private TableModelListener tableModelListener; + private Map columnComparators = new HashMap(); + private List sortingColumns = new ArrayList(); + + public TableSorter() { + this.mouseListener = new MouseHandler(); + this.tableModelListener = new TableModelHandler(); + } + + public TableSorter(TableModel tableModel) { + this(); + setTableModel(tableModel); + } + + public TableSorter(TableModel tableModel, JTableHeader tableHeader) { + this(); + setTableHeader(tableHeader); + setTableModel(tableModel); + } + + private void clearSortingState() { + viewToModel = null; + modelToView = null; + } + + public TableModel getTableModel() { + return tableModel; + } + + public void setTableModel(TableModel tableModel) { + if (this.tableModel != null) { + this.tableModel.removeTableModelListener(tableModelListener); + } + + this.tableModel = tableModel; + if (this.tableModel != null) { + this.tableModel.addTableModelListener(tableModelListener); + } + + clearSortingState(); + fireTableStructureChanged(); + } + + public JTableHeader getTableHeader() { + return tableHeader; + } + + public void setTableHeader(JTableHeader tableHeader) { + if (this.tableHeader != null) { + this.tableHeader.removeMouseListener(mouseListener); + TableCellRenderer defaultRenderer = this.tableHeader.getDefaultRenderer(); + if (defaultRenderer instanceof SortableHeaderRenderer) { + this.tableHeader.setDefaultRenderer(((SortableHeaderRenderer) defaultRenderer).tableCellRenderer); + } + } + this.tableHeader = tableHeader; + if (this.tableHeader != null) { + this.tableHeader.addMouseListener(mouseListener); + this.tableHeader.setDefaultRenderer( + new SortableHeaderRenderer(this.tableHeader.getDefaultRenderer())); + } + } + + public boolean isSorting() { + return sortingColumns.size() != 0; + } + + private Directive getDirective(int column) { + for (int i = 0; i < sortingColumns.size(); i++) { + Directive directive = (Directive)sortingColumns.get(i); + if (directive.column == column) { + return directive; + } + } + return EMPTY_DIRECTIVE; + } + + public int getSortingStatus(int column) { + return getDirective(column).direction; + } + + private void sortingStatusChanged() { + clearSortingState(); + fireTableDataChanged(); + if (tableHeader != null) { + tableHeader.repaint(); + } + } + + public void setSortingStatus(int column, int status) { + Directive directive = getDirective(column); + if (directive != EMPTY_DIRECTIVE) { + sortingColumns.remove(directive); + } + if (status != NOT_SORTED) { + sortingColumns.add(new Directive(column, status)); + } + sortingStatusChanged(); + } + + protected Icon getHeaderRendererIcon(int column, int size) { + Directive directive = getDirective(column); + if (directive == EMPTY_DIRECTIVE) { + return null; + } + return new Arrow(directive.direction == DESCENDING, size, sortingColumns.indexOf(directive)); + } + + private void cancelSorting() { + sortingColumns.clear(); + sortingStatusChanged(); + } + + public void setColumnComparator(int column, Comparator comparator) { + if (comparator == null) { + columnComparators.remove(column); + } else { + columnComparators.put(column, comparator); + } + setSortingStatus(column, ASCENDING); + } + + protected Comparator getComparator(int column) { + Comparator comparator = (Comparator) columnComparators.get(column); + if (comparator != null) { + return comparator; + } + Class columnType = tableModel.getColumnClass(column); + if (Comparable.class.isAssignableFrom(columnType)) { + return COMPARABLE_COMAPRATOR; + } + return LEXICAL_COMPARATOR; + } + + private Row[] getViewToModel() { + if (viewToModel == null) { + int tableModelRowCount = tableModel.getRowCount(); + viewToModel = new Row[tableModelRowCount]; + for (int row = 0; row < tableModelRowCount; row++) { + viewToModel[row] = new Row(row); + } + + if (isSorting()) { + Arrays.sort(viewToModel); + } + } + return viewToModel; + } + + public int modelIndex(int viewIndex) { + return getViewToModel()[viewIndex].modelIndex; + } + + private int[] getModelToView() { + if (modelToView == null) { + int n = getViewToModel().length; + modelToView = new int[n]; + for (int i = 0; i < n; i++) { + modelToView[modelIndex(i)] = i; + } + } + return modelToView; + } + + // TableModel interface methods + + public int getRowCount() { + return (tableModel == null) ? 0 : tableModel.getRowCount(); + } + + public int getColumnCount() { + return (tableModel == null) ? 0 : tableModel.getColumnCount(); + } + + public String getColumnName(int column) { + return tableModel.getColumnName(column); + } + + public Class getColumnClass(int column) { + return tableModel.getColumnClass(column); + } + + public boolean isCellEditable(int row, int column) { + return tableModel.isCellEditable(modelIndex(row), column); + } + + public Object getValueAt(int row, int column) { + return tableModel.getValueAt(modelIndex(row), column); + } + + public void setValueAt(Object aValue, int row, int column) { + tableModel.setValueAt(aValue, modelIndex(row), column); + } + + // Helper classes + + private class Row implements Comparable { + private int modelIndex; + + public Row(int index) { + this.modelIndex = index; + } + + public int compareTo(Object o) { + int row1 = modelIndex; + int row2 = ((Row) o).modelIndex; + + for (Iterator it = sortingColumns.iterator(); it.hasNext();) { + Directive directive = (Directive) it.next(); + int column = directive.column; + Object o1 = tableModel.getValueAt(row1, column); + Object o2 = tableModel.getValueAt(row2, column); + + int comparison = 0; + // Define null less than everything, except null. + if (o1 == null && o2 == null) { + comparison = 0; + } else if (o1 == null) { + comparison = -1; + } else if (o2 == null) { + comparison = 1; + } else { + if ( isSortabe(column) ) + { + comparison = getComparator(column).compare(o1, o2); + } + } + if (comparison != 0) { + return directive.direction == DESCENDING ? -comparison : comparison; + } + } + return 0; + } + } + + private class TableModelHandler implements TableModelListener { + public void tableChanged(TableModelEvent e) { + // If we're not sorting by anything, just pass the event along. + if (!isSorting()) { + clearSortingState(); + fireTableChanged(e); + return; + } + + // If the table structure has changed, cancel the sorting; the + // sorting columns may have been either moved or deleted from + // the model. + if (e.getFirstRow() == TableModelEvent.HEADER_ROW) { + cancelSorting(); + fireTableChanged(e); + return; + } + + // We can map a cell event through to the view without widening + // when the following conditions apply: + // + // a) all the changes are on one row (e.getFirstRow() == e.getLastRow()) and, + // b) all the changes are in one column (column != TableModelEvent.ALL_COLUMNS) and, + // c) we are not sorting on that column (getSortingStatus(column) == NOT_SORTED) and, + // d) a reverse lookup will not trigger a sort (modelToView != null) + // + // Note: INSERT and DELETE events fail this test as they have column == ALL_COLUMNS. + // + // The last check, for (modelToView != null) is to see if modelToView + // is already allocated. If we don't do this check; sorting can become + // a performance bottleneck for applications where cells + // change rapidly in different parts of the table. If cells + // change alternately in the sorting column and then outside of + // it this class can end up re-sorting on alternate cell updates - + // which can be a performance problem for large tables. The last + // clause avoids this problem. + int column = e.getColumn(); + if (e.getFirstRow() == e.getLastRow() + && column != TableModelEvent.ALL_COLUMNS + && getSortingStatus(column) == NOT_SORTED + && modelToView != null) { + int viewIndex = getModelToView()[e.getFirstRow()]; + fireTableChanged(new TableModelEvent(TableSorter.this, + viewIndex, viewIndex, + column, e.getType())); + return; + } + + // Something has happened to the data that may have invalidated the row order. + clearSortingState(); + fireTableDataChanged(); + return; + } + } + + private class MouseHandler extends MouseAdapter { + public void mouseClicked(MouseEvent e) { + JTableHeader h = (JTableHeader) e.getSource(); + TableColumnModel columnModel = h.getColumnModel(); + int viewColumn = columnModel.getColumnIndexAtX(e.getX()); + int column = columnModel.getColumn(viewColumn).getModelIndex(); + if (column != -1) { + if ( !isSortabe( column)) + { + return; + } + int status = getSortingStatus(column); + if (!e.isControlDown()) { + cancelSorting(); + } + // Cycle the sorting states through {NOT_SORTED, ASCENDING, DESCENDING} or + // {NOT_SORTED, DESCENDING, ASCENDING} depending on whether shift is pressed. + status = status + (e.isShiftDown() ? -1 : 1); + status = (status + 4) % 3 - 1; // signed mod, returning {-1, 0, 1} + setSortingStatus(column, status); + } + } + } + + private static class Arrow implements Icon { + private boolean descending; + private int size; + private int priority; + + public Arrow(boolean descending, int size, int priority) { + this.descending = descending; + this.size = size; + this.priority = priority; + } + + public void paintIcon(Component c, Graphics g, int x, int y) { + Color color = c == null ? Color.gray : c.getBackground(); + // In a compound sort, make each succesive triangle 20% + // smaller than the previous one. + int dx = (int)(size/2*Math.pow(0.8, priority)); + int dy = descending ? dx : -dx; + // Align icon (roughly) with font baseline. + y = y + 5*size/6 + (descending ? -dy : 0); + int shift = descending ? 1 : -1; + g.translate(x, y); + + // Right diagonal. + g.setColor(color.darker()); + g.drawLine(dx / 2, dy, 0, 0); + g.drawLine(dx / 2, dy + shift, 0, shift); + + // Left diagonal. + g.setColor(color.brighter()); + g.drawLine(dx / 2, dy, dx, 0); + g.drawLine(dx / 2, dy + shift, dx, shift); + + // Horizontal line. + if (descending) { + g.setColor(color.darker().darker()); + } else { + g.setColor(color.brighter().brighter()); + } + g.drawLine(dx, 0, 0, 0); + + g.setColor(color); + g.translate(-x, -y); + } + + public int getIconWidth() { + return size; + } + + public int getIconHeight() { + return size; + } + } + + private class SortableHeaderRenderer implements TableCellRenderer { + private TableCellRenderer tableCellRenderer; + + public SortableHeaderRenderer(TableCellRenderer tableCellRenderer) { + this.tableCellRenderer = tableCellRenderer; + } + + public Component getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, + int column) { + Component c = tableCellRenderer.getTableCellRendererComponent(table, + value, isSelected, hasFocus, row, column); + if (c instanceof JLabel) { + JLabel l = (JLabel) c; + l.setHorizontalTextPosition(JLabel.LEFT); + int modelColumn = table.convertColumnIndexToModel(column); + l.setIcon(getHeaderRendererIcon(modelColumn, l.getFont().getSize())); + } + return c; + } + } + + private static class Directive { + private int column; + private int direction; + + public Directive(int column, int direction) { + this.column = column; + this.direction = direction; + } + } + + public void setSortable(int column, boolean b) { + enabled.put( column,b); + } + + public boolean isSortabe( int column) + { + final Boolean sortable = enabled.get(column); + if ( sortable == null) + { + return true; + } + return sortable; + } +} diff --git a/src/org/rapla/components/treetable/AbstractTreeTableModel.java b/src/org/rapla/components/treetable/AbstractTreeTableModel.java new file mode 100644 index 0000000..bebf467 --- /dev/null +++ b/src/org/rapla/components/treetable/AbstractTreeTableModel.java @@ -0,0 +1,210 @@ +/* + * AbstractTreeTableModel.java + * + * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. + * + * Sun Microsystems grants you ("Licensee") a non-exclusive, royalty + * free, license to use, modify and redistribute this software in + * source and binary code form, provided that i) this copyright notice + * and license appear on all copies of the software; and ii) Licensee + * does not utilize the software in a manner which is disparaging to + * Sun Microsystems. + * + * The software media is distributed on an "As Is" basis, without + * warranty. Neither the authors, the software developers nor Sun + * Microsystems make any representation, or warranty, either express + * or implied, with respect to the software programs, their quality, + * accuracy, or fitness for a specific purpose. Therefore, neither the + * authors, the software developers nor Sun Microsystems shall have + * any liability to you or any other person or entity with respect to + * any liability, loss, or damage caused or alleged to have been + * caused directly or indirectly by programs contained on the + * media. This includes, but is not limited to, interruption of + * service, loss of data, loss of classroom time, loss of consulting + * or anticipatory *profits, or consequential damages from the use of + * these programs. +*/ + +package org.rapla.components.treetable; + +import javax.swing.tree.*; +import javax.swing.event.*; + +/** + * @version 1.2 10/27/98 + * An abstract implementation of the TreeTableModel interface, handling the list + * of listeners. + * @author Philip Milne + */ + +public abstract class AbstractTreeTableModel implements TreeTableModel { + protected Object root; + protected EventListenerList listenerList = new EventListenerList(); + + public AbstractTreeTableModel(Object root) { + this.root = root; + } + + // + // Default implementations for methods in the TreeModel interface. + // + + public Object getRoot() { + return root; + } + + public boolean isLeaf(Object node) { + return getChildCount(node) == 0; + } + + public void valueForPathChanged(TreePath path, Object newValue) {} + + // This is not called in the JTree's default mode: use a naive implementation. + public int getIndexOfChild(Object parent, Object child) { + for (int i = 0; i < getChildCount(parent); i++) { + if (getChild(parent, i).equals(child)) { + return i; + } + } + return -1; + } + + public void addTreeModelListener(TreeModelListener l) { + listenerList.add(TreeModelListener.class, l); + } + + public void removeTreeModelListener(TreeModelListener l) { + listenerList.remove(TreeModelListener.class, l); + } + + /* + * Notify all listeners that have registered interest for + * notification on this event type. The event instance + * is lazily created using the parameters passed into + * the fire method. + * @see EventListenerList + */ + protected void fireTreeNodesChanged(Object source, Object[] path, + int[] childIndices, + Object[] children) { + // Guaranteed to return a non-null array + Object[] listeners = listenerList.getListenerList(); + TreeModelEvent e = null; + // Process the listeners last to first, notifying + // those that are interested in this event + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==TreeModelListener.class) { + // Lazily create the event: + if (e == null) + e = new TreeModelEvent(source, path, + childIndices, children); + ((TreeModelListener)listeners[i+1]).treeNodesChanged(e); + } + } + } + + /* + * Notify all listeners that have registered interest for + * notification on this event type. The event instance + * is lazily created using the parameters passed into + * the fire method. + * @see EventListenerList + */ + protected void fireTreeNodesInserted(Object source, Object[] path, + int[] childIndices, + Object[] children) { + // Guaranteed to return a non-null array + Object[] listeners = listenerList.getListenerList(); + TreeModelEvent e = null; + // Process the listeners last to first, notifying + // those that are interested in this event + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==TreeModelListener.class) { + // Lazily create the event: + if (e == null) + e = new TreeModelEvent(source, path, + childIndices, children); + ((TreeModelListener)listeners[i+1]).treeNodesInserted(e); + } + } + } + + /* + * Notify all listeners that have registered interest for + * notification on this event type. The event instance + * is lazily created using the parameters passed into + * the fire method. + * @see EventListenerList + */ + protected void fireTreeNodesRemoved(Object source, Object[] path, + int[] childIndices, + Object[] children) { + // Guaranteed to return a non-null array + Object[] listeners = listenerList.getListenerList(); + TreeModelEvent e = null; + // Process the listeners last to first, notifying + // those that are interested in this event + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==TreeModelListener.class) { + // Lazily create the event: + if (e == null) + e = new TreeModelEvent(source, path, + childIndices, children); + ((TreeModelListener)listeners[i+1]).treeNodesRemoved(e); + } + } + } + + /* + * Notify all listeners that have registered interest for + * notification on this event type. The event instance + * is lazily created using the parameters passed into + * the fire method. + * @see EventListenerList + */ + protected void fireTreeStructureChanged(Object source, Object[] path, + int[] childIndices, + Object[] children) { + // Guaranteed to return a non-null array + Object[] listeners = listenerList.getListenerList(); + TreeModelEvent e = null; + // Process the listeners last to first, notifying + // those that are interested in this event + for (int i = listeners.length-2; i>=0; i-=2) { + if (listeners[i]==TreeModelListener.class) { + // Lazily create the event: + if (e == null) + e = new TreeModelEvent(source, path, + childIndices, children); + ((TreeModelListener)listeners[i+1]).treeStructureChanged(e); + } + } + } + + // + // Default impelmentations for methods in the TreeTableModel interface. + // + + public Class getColumnClass(int column) { return Object.class; } + + /** By default, make the column with the Tree in it the only editable one. + * Making this column editable causes the JTable to forward mouse + * and keyboard events in the Tree column to the underlying JTree. + */ + public boolean isCellEditable(Object node, int column) { + return getColumnClass(column) == TreeTableModel.class; + } + + public void setValueAt(Object aValue, Object node, int column) {} + + + // Left to be implemented in the subclass: + + /* + * public Object getChild(Object parent, int index) + * public int getChildCount(Object parent) + * public int getColumnCount() + * public String getColumnName(Object node, int column) + * public Object getValueAt(Object node, int column) + */ +} diff --git a/src/org/rapla/components/treetable/DEPENDENCIES b/src/org/rapla/components/treetable/DEPENDENCIES new file mode 100644 index 0000000..307dd35 --- /dev/null +++ b/src/org/rapla/components/treetable/DEPENDENCIES @@ -0,0 +1,4 @@ +This component depends on the following packages (including subpackages): + +java.* +javax.swing.* diff --git a/src/org/rapla/components/treetable/JTreeTable.java b/src/org/rapla/components/treetable/JTreeTable.java new file mode 100644 index 0000000..5993471 --- /dev/null +++ b/src/org/rapla/components/treetable/JTreeTable.java @@ -0,0 +1,910 @@ +/* + * Sun Microsystems grants you ("Licensee") a non-exclusive, royalty + * free, license to use, modify and redistribute this software in + * source and binary code form, provided that i) this copyright notice + * and license appear on all copies of the software; and ii) Licensee + * does not utilize the software in a manner which is disparaging to + * Sun Microsystems. + * + * The software media is distributed on an "As Is" basis, without + * warranty. Neither the authors, the software developers nor Sun + * Microsystems make any representation, or warranty, either express + * or implied, with respect to the software programs, their quality, + * accuracy, or fitness for a specific purpose. Therefore, neither the + * authors, the software developers nor Sun Microsystems shall have + * any liability to you or any other person or entity with respect to + * any liability, loss, or damage caused or alleged to have been + * caused directly or indirectly by programs contained on the + * media. This includes, but is not limited to, interruption of + * service, loss of data, loss of classroom time, loss of consulting + * or anticipatory *profits, or consequential damages from the use of + * these programs. +*/ + +package org.rapla.components.treetable; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Shape; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.EventObject; +import java.util.List; + +import javax.swing.JComponent; +import javax.swing.JTable; +import javax.swing.JTree; +import javax.swing.KeyStroke; +import javax.swing.ListSelectionModel; +import javax.swing.LookAndFeel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.border.CompoundBorder; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.event.TreeExpansionEvent; +import javax.swing.event.TreeExpansionListener; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeSelectionModel; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; + +/** + * Original version Philip Milne and Scott Violet + * Modified by Christopher Kohlhaas to support editing and keyboard handling. + */ + +public class JTreeTable extends JTable { + private static final long serialVersionUID = 1L; + + private RendererTree tree = new RendererTree(); + private TreeTableEditor treeCellEditor; + private TableToolTipRenderer toolTipRenderer = null; + private int focusedRow = -1; + private String cachedSearchKey = ""; + + public JTreeTable(TreeTableModel model) { + super(); + + setTreeTableModel( model ); + + // Force the JTable and JTree to share their row selection models. + ListToTreeSelectionModelWrapper selectionWrapper = new + ListToTreeSelectionModelWrapper(); + setSelectionModel(selectionWrapper.getListSelectionModel()); + setShowGrid( false); + // No intercell spacing + setIntercellSpacing(new Dimension(1, 0)); + setShowVerticalLines(true); + + tree.setEditable(false); + tree.setSelectionModel(selectionWrapper); + tree.setShowsRootHandles(true); + tree.setRootVisible(false); + setDefaultRenderer( TreeTableModel.class, tree ); + setTreeCellEditor(null); + + // And update the height of the trees row to match that of + // the table. + if (tree.getRowHeight() < 1) { + // Metal looks better like this. + setRowHeight(22); + } + } + + public void setToolTipRenderer(TableToolTipRenderer renderer) { + toolTipRenderer = renderer; + } + + public TableToolTipRenderer getToolTipRenderer() { + return toolTipRenderer; + } + + public String getToolTipText(MouseEvent evt) { + if (toolTipRenderer == null) + return super.getToolTipText(evt); + Point p = new Point(evt.getX(),evt.getY()); + int column = columnAtPoint(p); + int row = rowAtPoint(p); + if (row >=0 && column>=0) + return toolTipRenderer.getToolTipText(this,row,column); + else + return super.getToolTipText(evt); + } + + /** + * Overridden to message super and forward the method to the tree. + * Since the tree is not actually in the component hierarchy it will + * never receive this unless we forward it in this manner. + */ + public void updateUI() { + super.updateUI(); + if(tree != null) { + tree.updateUI(); + } + // Use the tree's default foreground and background colors in the + // table. + LookAndFeel.installColorsAndFont(this, "Tree.background", + "Tree.foreground", "Tree.font"); + } + + /** Set a custom TreeCellEditor. The default one is a TextField.*/ + public void setTreeCellEditor(TreeTableEditor editor) { + treeCellEditor = editor; + setDefaultEditor( TreeTableModel.class, new DelegationgTreeCellEditor(treeCellEditor) ); + } + + + /** Returns the tree that is being shared between the model. + If you set a different TreeCellRenderer for this tree it should + inherit from DefaultTreeCellRenderer. Otherwise the selection-color + and focus color will not be set correctly. + */ + public JTree getTree() { + return tree; + } + + /** + * search for given search term in child nodes of selected nodes + * @param search what to search for + * @param parentNode where to search fo + * @return first childnode where its tostring representation in tree starts with search term, null if no one found + */ + private TreeNode getNextTreeNodeMatching(String search, TreeNode parentNode) { + TreeNode result = null; + + Enumeration children = parentNode.children(); + while (children.hasMoreElements()) { + TreeNode treeNode = (TreeNode) children.nextElement(); + String compareS = treeNode.toString().toLowerCase(); + if (compareS.startsWith(search)) { + result = treeNode; + break; + } + } + return result; + } + + /** + * create treepath from treenode + * @param treeNode Treenode + * @return treepath object + */ + public static TreePath getPath(TreeNode treeNode) { + List nodes = new ArrayList(); + if (treeNode != null) { + + nodes.add(treeNode); + treeNode = treeNode.getParent(); + while (treeNode != null) { + nodes.add(0, treeNode); + treeNode = treeNode.getParent(); + } + } + + return nodes.isEmpty() ? null : new TreePath(nodes.toArray()); + } + + + /** overridden to support keyboard expand/collapse for the tree.*/ + protected boolean processKeyBinding(KeyStroke ks, + KeyEvent e, + int condition, + boolean pressed) + { + if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) + { + if (tree != null && !isEditing() && getSelectedColumn() == getTreeColumnNumber()) { + + if (e.getID() == KeyEvent.KEY_PRESSED) + { + if ( (e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyChar() =='+')) { + int row = getSelectedRow(); + if (row >= 0) { + if (tree.isExpanded(row)) { + tree.collapseRow(row); + } else { + tree.expandPath(tree.getPathForRow(row)); + } + } + return true; + } + + if (e.getKeyCode() == KeyEvent.VK_LEFT) { + int row = getSelectedRow(); + if (row >= 0) { + TreePath pathForRow = tree.getPathForRow(row); + // if selected node is expanded than collapse it + // else selected parents node + if (tree.isExpanded(pathForRow)) { + // only if root is visible we should collapse first level + final boolean canCollapse = pathForRow.getPathCount() > (tree.isRootVisible() ? 0 : 1); + if (canCollapse) + tree.collapsePath(pathForRow); + } else { + // only if root is visible we should collapse first level or select parent node + final boolean canCollapse = pathForRow.getPathCount() > (tree.isRootVisible() ? 1 : 2); + + if (canCollapse) { + pathForRow = pathForRow.getParentPath(); + final int parentRow = tree.getRowForPath(pathForRow ); + tree.setSelectionInterval(parentRow, parentRow); + } + } + + if (pathForRow != null) { + Rectangle rect = getCellRect(tree.getRowForPath(pathForRow), 0, false); + scrollRectToVisible(rect ); + } + + + + } + return true; + } + if (e.getKeyCode() == KeyEvent.VK_RIGHT) { + int row = getSelectedRow(); + if (row >= 0) { + final TreePath path = tree.getPathForRow(row); + if (tree.isCollapsed(path)) { + tree.expandPath(path); + } + } + return true; + } + + // live search in current parent node + if ((Character.isLetterOrDigit(e.getKeyChar()))) { + char keyChar = e.getKeyChar(); + + + // we are searching in the current parent node + // first we assume that we have selected a parent node + // so we should have children + TreePath selectedPath = tree.getSelectionModel().getLeadSelectionPath(); + TreeNode selectedNode = (TreeNode) selectedPath.getLastPathComponent(); + + + // if we don't have children we might have selected a leaf so choose its parent + if (selectedNode.getChildCount() == 0) { + // set new selectedNode + selectedPath = selectedPath.getParentPath(); + selectedNode = (TreeNode) selectedPath.getLastPathComponent(); + } + + // search term + String search = ("" + keyChar).toLowerCase(); + + // try to find node with matching searchterm plus the search before + TreeNode nextTreeNodeMatching = getNextTreeNodeMatching(cachedSearchKey + search, selectedNode); + + // if we did not find anything, try to find search term only: restart! + if (nextTreeNodeMatching == null) { + nextTreeNodeMatching = getNextTreeNodeMatching(search, selectedNode); + cachedSearchKey = ""; + } + // if we found a node, select it, make it visible and return true + if (nextTreeNodeMatching != null) { + TreePath foundPath = getPath(nextTreeNodeMatching); + + // select our found path + this.tree.getSelectionModel().setSelectionPath(foundPath); + + //make it visible + this.tree.expandPath(foundPath); + this.tree.makeVisible(foundPath); + // Scroll to the found row + int row = tree.getRowForPath( foundPath); + int col = 0; + Rectangle rect = getCellRect(row, col, false); + scrollRectToVisible(rect ); + + // store found treepath + cachedSearchKey = cachedSearchKey + search; + + return true; + } + } + cachedSearchKey = ""; + + /* Uncomment this if you don't want to start tree-cell-editing + on a non navigation key stroke. + + if (e.getKeyCode() != e.VK_TAB && e.getKeyCode() != e.VK_F2 + && e.getKeyCode() != e.VK_DOWN && e.getKeyCode() != e.VK_UP + && e.getKeyCode() != e.VK_LEFT && e.getKeyCode() != e.VK_RIGHT + && e.getKeyCode() != e.VK_PAGE_UP && e.getKeyCode() != e.VK_PAGE_DOWN + ) + return true; + */ + } + } + } + // reset cachedkey to null if we did not find anything + + return super.processKeyBinding(ks,e,condition,pressed); + } + + public void setTreeTableModel(TreeTableModel model) { + tree.setModel(model); + super.setModel(new TreeTableModelAdapter(model)); + } + + /** + * Workaround for BasicTableUI anomaly. Make sure the UI never tries to + * resize the editor. The UI currently uses different techniques to + * paint the renderers and editors; overriding setBounds() below + * is not the right thing to do for an editor. Returning -1 for the + * editing row in this case, ensures the editor is never painted. + */ + public int getEditingRow() { + int column = getEditingColumn(); + if( getColumnClass(column) == TreeTableModel.class ) + return -1; + return editingRow; + } + + /** + * Returns the actual row that is editing as getEditingRow + * will always return -1. + */ + private int realEditingRow() { + return editingRow; + } + + /** Overridden to pass the new rowHeight to the tree. */ + public void setRowHeight(int rowHeight) { + super.setRowHeight(rowHeight); + if (tree != null && tree.getRowHeight() != rowHeight) + tree.setRowHeight( rowHeight ); + } + + private int getTreeColumnNumber() { + for (int counter = getColumnCount() - 1; counter >= 0;counter--) + if (getColumnClass(counter) == TreeTableModel.class) + return counter; + return -1; + } + + /** isCellEditable returns true for the Tree-Column, even if it is not editable. + isCellRealEditable returns true only if the underlying TreeTableModel-Cell is + editable. + */ + private boolean isCellRealEditable(int row,int column) { + TreePath treePath = tree.getPathForRow(row); + if (treePath == null) + return false; + return (((TreeTableModel)tree.getModel()).isCellEditable(treePath.getLastPathComponent() + ,column)); + + } + + class RendererTree extends JTree implements TableCellRenderer { + private static final long serialVersionUID = 1L; + + protected int rowToPaint; + Color borderColor = Color.gray; + + /** Border to draw around the tree, if this is non-null, it will + * be painted. */ + protected Border highlightBorder; + + public RendererTree() { + super(); + } + + public void setRowHeight(int rowHeight) { + if (rowHeight > 0) { + super.setRowHeight(rowHeight); + if (JTreeTable.this != null && + JTreeTable.this.getRowHeight() != rowHeight) { + JTreeTable.this.setRowHeight(getRowHeight()); + } + } + } + + // Move and resize the tree to the table position + public void setBounds( int x, int y, int w, int h ) { + super.setBounds( x, 0, w, JTreeTable.this.getHeight() ); + } + + public void paintEditorBackground(Graphics g,int row) { + tree.rowToPaint = row; + g.translate( 0, -row * getRowHeight()); + Rectangle rect = g.getClipBounds(); + if (rect.width >0 && rect.height >0) + super.paintComponent(g); + g.translate( 0, row * getRowHeight()); + } + + // start painting at the rowToPaint + public void paint( Graphics g ) { + int row = rowToPaint; + + g.translate( 0, -rowToPaint * getRowHeight() ); + super.paint(g); + + int x = 0; + TreePath path = getPathForRow(row); + Object value = path.getLastPathComponent(); + boolean isSelected = tree.isRowSelected(row); + x = tree.getRowBounds(row).x; + if (treeCellEditor != null) { + x += treeCellEditor.getGap(tree,value,isSelected,row); + } else { + TreeCellRenderer tcr = getCellRenderer(); + if (tcr instanceof DefaultTreeCellRenderer) { + DefaultTreeCellRenderer dtcr = ((DefaultTreeCellRenderer)tcr); + // super.paint must have been called before + x += dtcr.getIconTextGap() + dtcr.getIcon().getIconWidth(); + } + } + + // Draw the Table border if we have focus. + if (highlightBorder != null) { + highlightBorder.paintBorder(this, g, x, rowToPaint * + getRowHeight(), getWidth() -x, + getRowHeight() ); + } // Paint the selection rectangle + } + + public Component getTableCellRendererComponent(JTable table, + Object value, + boolean isSelected, + boolean hasFocus, + int row, int column) { + Color background; + Color foreground; + if (hasFocus) + focusedRow = row; + + if(isSelected) { + background = table.getSelectionBackground(); + foreground = table.getSelectionForeground(); + } + else { + background = table.getBackground(); + foreground = table.getForeground(); + } + highlightBorder = null; + if (realEditingRow() == row && getEditingColumn() == column) { + background = UIManager.getColor("Table.focusCellBackground"); + foreground = UIManager.getColor("Table.focusCellForeground"); + } else if (hasFocus) { + highlightBorder = UIManager.getBorder + ("Table.focusCellHighlightBorder"); + if (isCellRealEditable(row,convertColumnIndexToModel(column))) { + background = UIManager.getColor + ("Table.focusCellBackground"); + foreground = UIManager.getColor + ("Table.focusCellForeground"); + } + } + + this.rowToPaint = row; + setBackground(background); + + TreeCellRenderer tcr = getCellRenderer(); + if (tcr instanceof DefaultTreeCellRenderer) { + DefaultTreeCellRenderer dtcr = ((DefaultTreeCellRenderer)tcr); + if (isSelected) { + dtcr.setTextSelectionColor(foreground); + dtcr.setBackgroundSelectionColor(background); + } + else { + dtcr.setTextNonSelectionColor(foreground); + dtcr.setBackgroundNonSelectionColor(background); + } + } + return this; + } + } + + class DelegationgTreeCellEditor implements TableCellEditor + { + TreeTableEditor delegate; + JComponent lastComp = null; + int textOffset = 0; + + MouseListener mouseListener = new MouseAdapter() { + public void mouseClicked(MouseEvent evt) + { + if (lastComp == null) + return; + if (delegate == null) + return; + if (evt.getY() < 0 || evt.getY()>lastComp.getHeight()) + delegate.stopCellEditing(); + // User clicked left from the text + if (textOffset > 0 && evt.getX()< textOffset ) + delegate.stopCellEditing(); + } + }; + + public DelegationgTreeCellEditor(TreeTableEditor delegate) { + this.delegate = delegate; + } + + public void addCellEditorListener(CellEditorListener listener) { + delegate.addCellEditorListener(listener); + } + + public void removeCellEditorListener(CellEditorListener listener) { + delegate.removeCellEditorListener(listener); + } + + public void cancelCellEditing() { + delegate.cancelCellEditing(); + } + + public Object getCellEditorValue() { + return delegate.getCellEditorValue(); + } + + public boolean stopCellEditing() { + return delegate.stopCellEditing(); + + } + + public boolean shouldSelectCell(EventObject anEvent) { + return true; + } + + private int getTextOffset(Object value,boolean isSelected,int row) { + int gap = delegate.getGap(tree,value,isSelected,row); + TreePath path = tree.getPathForRow(row); + return tree.getUI().getPathBounds(tree,path).x + gap; + } + + public boolean inHitRegion(int x,int y) { + int row = tree.getRowForLocation(x,y); + TreePath path = tree.getPathForRow(row); + if (path == null) + return false; + int gap = (delegate != null) ? + delegate.getGap(tree,null,false,row) + :16; + + return (x - gap >= tree.getUI().getPathBounds(tree,path).x || x<0); + } + + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, + int row, + int column) + { + JTreeTable.this.tree.rowToPaint = row; + JComponent comp = (JComponent) delegate.getEditorComponent(tree,value,isSelected,row); + if (lastComp != comp) { + if (comp != null) + comp.removeMouseListener(mouseListener); + comp.addMouseListener(mouseListener); + } + lastComp = comp; + + textOffset = getTextOffset(value,isSelected,row); + Border outerBorder = new TreeBorder(0, textOffset , 0, 0,row); + Border editBorder = UIManager.getBorder("Tree.editorBorder"); + Border border = new CompoundBorder(outerBorder + ,editBorder + ); + comp.setBorder(border); + return comp; + } + + public boolean isCellEditable( EventObject evt ) { + int col = getTreeColumnNumber(); + if( evt instanceof MouseEvent ) { + MouseEvent me = (MouseEvent)evt; + if (col >= 0) { + int xPosRelativeToCell = me.getX() - getCellRect(0, col, true).x; + if (me.getClickCount() > 1 + && inHitRegion(xPosRelativeToCell,me.getY()) + && isCellRealEditable(tree.getRowForLocation(me.getX(),me.getY()) + ,convertColumnIndexToModel(col))) + return true; + MouseEvent newME = new MouseEvent(tree, me.getID(), + me.getWhen(), me.getModifiers(), + xPosRelativeToCell, + me.getY(), me.getClickCount(), + me.isPopupTrigger()); + if (! inHitRegion(xPosRelativeToCell,me.getY()) || me.getClickCount() > 1) + tree.dispatchEvent(newME); + } + return false; + } + + if (delegate != null && isCellRealEditable(focusedRow,convertColumnIndexToModel(col))) + return delegate.isCellEditable(evt); + else + return false; + } + } + + + class TreeBorder implements Border { + int row; + Insets insets; + + public TreeBorder(int top,int left,int bottom,int right,int row) { + this.row = row; + insets = new Insets(top,left,bottom,right); + } + + public Insets getBorderInsets(Component c) { + return insets; + } + + public void paintBorder(Component c,Graphics g,int x,int y,int width,int height) { + Shape originalClip = g.getClip(); + g.clipRect(0,0,insets.left -1 ,tree.getHeight()); + tree.paintEditorBackground(g,row); + g.setClip(originalClip); + } + + public boolean isBorderOpaque() { + return false; + } + + } + + + + /** + * ListToTreeSelectionModelWrapper extends DefaultTreeSelectionModel + * to listen for changes in the ListSelectionModel it maintains. Once + * a change in the ListSelectionModel happens, the paths are updated + * in the DefaultTreeSelectionModel. + */ + class ListToTreeSelectionModelWrapper extends DefaultTreeSelectionModel implements ListSelectionListener{ + private static final long serialVersionUID = 1L; + + /** Set to true when we are updating the ListSelectionModel. */ + protected boolean updatingListSelectionModel; + + public ListToTreeSelectionModelWrapper() { + super(); + getListSelectionModel().addListSelectionListener + (createListSelectionListener()); + } + + /** + * Returns the list selection model. ListToTreeSelectionModelWrapper + * listens for changes to this model and updates the selected paths + * accordingly. + */ + ListSelectionModel getListSelectionModel() { + return listSelectionModel; + } + + /** + * This is overridden to set updatingListSelectionModel + * and message super. This is the only place DefaultTreeSelectionModel + * alters the ListSelectionModel. + */ + public void resetRowSelection() { + if(!updatingListSelectionModel) { + updatingListSelectionModel = true; + try { + super.resetRowSelection(); + } + finally { + updatingListSelectionModel = false; + } + } + // Notice how we don't message super if + // updatingListSelectionModel is true. If + // updatingListSelectionModel is true, it implies the + // ListSelectionModel has already been updated and the + // paths are the only thing that needs to be updated. + } + + /** + * Creates and returns an instance of ListSelectionHandler. + */ + protected ListSelectionListener createListSelectionListener() { + return this; + } + + /** + * If updatingListSelectionModel is false, this will + * reset the selected paths from the selected rows in the list + * selection model. + */ + protected void updateSelectedPathsFromSelectedRows() { + if(!updatingListSelectionModel) { + updatingListSelectionModel = true; + try { + // This is way expensive, ListSelectionModel needs an + // enumerator for iterating. + int min = listSelectionModel.getMinSelectionIndex(); + int max = listSelectionModel.getMaxSelectionIndex(); + + clearSelection(); + if(min != -1 && max != -1) { + for(int counter = min; counter <= max; counter++) { + if(listSelectionModel.isSelectedIndex(counter)) { + TreePath selPath = tree.getPathForRow + (counter); + + if(selPath != null) { + addSelectionPath(selPath); + } + } + } + } + } finally { + updatingListSelectionModel = false; + } + } + } + /** Implemention of ListSelectionListener Interface: + * Class responsible for calling updateSelectedPathsFromSelectedRows + * when the selection of the list changse. + */ + public void valueChanged(ListSelectionEvent e) { + updateSelectedPathsFromSelectedRows(); + } + } + + class TreeTableModelAdapter extends AbstractTableModel implements TreeExpansionListener,TreeModelListener + { + private static final long serialVersionUID = 1L; + + TreeTableModel treeTableModel; + public TreeTableModelAdapter(TreeTableModel treeTableModel) { + this.treeTableModel = treeTableModel; + + tree.addTreeExpansionListener(this); + // Install a TreeModelListener that can update the table when + // tree changes. We use delayedFireTableDataChanged as we can + // not be guaranteed the tree will have finished processing + // the event before us. + treeTableModel.addTreeModelListener(this); + } + + + // Implementation of TreeExpansionListener + public void treeExpanded(TreeExpansionEvent event) { + int row = tree.getRowForPath(event.getPath()); + if (row + 1 < tree.getRowCount()) + fireTableRowsInserted(row + 1,row + 1); + } + public void treeCollapsed(TreeExpansionEvent event) { + int row = tree.getRowForPath(event.getPath()); + if (row < getRowCount()) + fireTableRowsDeleted(row + 1,row + 1); + } + + // Implementation of TreeModelLstener + public void treeNodesChanged(TreeModelEvent e) { + int firstRow = 0; + int lastRow = tree.getRowCount() -1; + delayedFireTableRowsUpdated(firstRow,lastRow); + } + + public void treeNodesInserted(TreeModelEvent e) { + delayedFireTableDataChanged(); + } + + public void treeNodesRemoved(TreeModelEvent e) { + delayedFireTableDataChanged(); + } + + public void treeStructureChanged(TreeModelEvent e) { + delayedFireTableDataChanged(); + } + + // Wrappers, implementing TableModel interface. + public int getColumnCount() { + return treeTableModel.getColumnCount(); + } + + public String getColumnName(int column) { + return treeTableModel.getColumnName(column); + } + + public Class getColumnClass(int column) { + return treeTableModel.getColumnClass(column); + } + + public int getRowCount() { + return tree.getRowCount(); + } + + private Object nodeForRow(int row) { + TreePath treePath = tree.getPathForRow(row); + if (treePath == null) + return null; + return treePath.getLastPathComponent(); + } + + public Object getValueAt(int row, int column) { + Object node = nodeForRow(row); + if (node == null) + return null; + return treeTableModel.getValueAt(node, column); + } + + public boolean isCellEditable(int row, int column) { + if (getColumnClass(column) == TreeTableModel.class) { + return true; + } else { + Object node = nodeForRow(row); + if (node == null) + return false; + return treeTableModel.isCellEditable(node, column); + } + } + + public void setValueAt(Object value, int row, int column) { + Object node = nodeForRow(row); + if (node == null) + return; + treeTableModel.setValueAt(value, node, column); + } + + /** + * Invokes fireTableDataChanged after all the pending events have been + * processed. SwingUtilities.invokeLater is used to handle this. + */ + protected void delayedFireTableRowsUpdated(int firstRow,int lastRow) { + SwingUtilities.invokeLater(new UpdateRunnable(firstRow,lastRow)); + } + + class UpdateRunnable implements Runnable { + int lastRow; + int firstRow; + UpdateRunnable(int firstRow,int lastRow) { + this.firstRow = firstRow; + this.lastRow = lastRow; + } + public void run() { + fireTableRowsUpdated(firstRow,lastRow); + } + } + /** + * Invokes fireTableDataChanged after all the pending events have been + * processed. SwingUtilities.invokeLater is used to handle this. + */ + protected void delayedFireTableDataChanged() { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + fireTableDataChanged(); + } + }); + + } + } + + + /* + public void paintComponent(Graphics g) { + super.paintComponent( g ); + Rectangle r = g.getClipBounds(); + g.setColor( Color.white); + g.fillRect(0,0, r.width, r.height ); + + } + */ + +} + + diff --git a/src/org/rapla/components/treetable/TableToolTipRenderer.java b/src/org/rapla/components/treetable/TableToolTipRenderer.java new file mode 100644 index 0000000..28068b1 --- /dev/null +++ b/src/org/rapla/components/treetable/TableToolTipRenderer.java @@ -0,0 +1,17 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.treetable; +import javax.swing.JTable; +public interface TableToolTipRenderer { + public String getToolTipText(JTable table, int row, int column); +} diff --git a/src/org/rapla/components/treetable/TreeTableEditor.java b/src/org/rapla/components/treetable/TreeTableEditor.java new file mode 100644 index 0000000..7cb76b5 --- /dev/null +++ b/src/org/rapla/components/treetable/TreeTableEditor.java @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.treetable; + +import javax.swing.JComponent; +import javax.swing.JTree; +import javax.swing.CellEditor; + +public interface TreeTableEditor extends CellEditor { + JComponent getEditorComponent(JTree tree,Object value,boolean isSelected,int row); + int getGap(JTree tree, Object value, boolean isSelected, int row); +} + diff --git a/src/org/rapla/components/treetable/TreeTableModel.java b/src/org/rapla/components/treetable/TreeTableModel.java new file mode 100644 index 0000000..797b6aa --- /dev/null +++ b/src/org/rapla/components/treetable/TreeTableModel.java @@ -0,0 +1,73 @@ +/* + * Sun Microsystems grants you ("Licensee") a non-exclusive, royalty + * free, license to use, modify and redistribute this software in + * source and binary code form, provided that i) this copyright notice + * and license appear on all copies of the software; and ii) Licensee + * does not utilize the software in a manner which is disparaging to + * Sun Microsystems. + * + * The software media is distributed on an "As Is" basis, without + * warranty. Neither the authors, the software developers nor Sun + * Microsystems make any representation, or warranty, either express + * or implied, with respect to the software programs, their quality, + * accuracy, or fitness for a specific purpose. Therefore, neither the + * authors, the software developers nor Sun Microsystems shall have + * any liability to you or any other person or entity with respect to + * any liability, loss, or damage caused or alleged to have been + * caused directly or indirectly by programs contained on the + * media. This includes, but is not limited to, interruption of + * service, loss of data, loss of classroom time, loss of consulting + * or anticipatory *profits, or consequential damages from the use of + * these programs. +*/ +package org.rapla.components.treetable; + +import javax.swing.tree.TreeModel; + +/** + * TreeTableModel is the model used by a JTreeTable. It extends TreeModel + * to add methods for getting inforamtion about the set of columns each + * node in the TreeTableModel may have. Each column, like a column in + * a TableModel, has a name and a type associated with it. Each node in + * the TreeTableModel can return a value for each of the columns and + * set that value if isCellEditable() returns true. + * + * @author Philip Milne + * @author Scott Violet + */ +public interface TreeTableModel extends TreeModel +{ + /** + * Returns the number ofs available columns. + */ + public int getColumnCount(); + + /** + * Returns the name for column number column. + */ + public String getColumnName(int column); + + /** + * Returns the type for column number column. + * Should return TreeTableModel.class for the tree-column. + */ + public Class getColumnClass(int column); + + /** + * Returns the value to be displayed for node node, + * at column number column. + */ + public Object getValueAt(Object node, int column); + + /** + * Indicates whether the the value for node node, + * at column number column is editable. + */ + public boolean isCellEditable(Object node, int column); + + /** + * Sets the value for node node, + * at column number column. + */ + public void setValueAt(Object aValue, Object node, int column); +} diff --git a/src/org/rapla/components/treetable/package.html b/src/org/rapla/components/treetable/package.html new file mode 100644 index 0000000..c58a9eb --- /dev/null +++ b/src/org/rapla/components/treetable/package.html @@ -0,0 +1,6 @@ + +Contains all classes for the treetable widget. + + + + diff --git a/src/org/rapla/components/util/Assert.java b/src/org/rapla/components/util/Assert.java new file mode 100644 index 0000000..19e3218 --- /dev/null +++ b/src/org/rapla/components/util/Assert.java @@ -0,0 +1,76 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util; + +/** Some of the assert functionality of 1.4 for 1.3 versions of Rapla*/ +public class Assert { + static String NOT_NULL_ASSERTION = "notNull-Assertion"; + static String IS_TRUE_ASSERTION = "isTrue-Assertion"; + static String ASSERTION_FAIL = "Assertion fail"; + static boolean _bActivate = true; + + public static void notNull(Object obj,String text) { + if ( obj == null && isActivated()) { + doAssert(getText(NOT_NULL_ASSERTION,text)); + } + } + + public static void notNull(Object obj) { + if ( obj == null && isActivated()) { + doAssert(getText(NOT_NULL_ASSERTION,"")); + } + } + + public static void isTrue(boolean condition,String text) { + if ( !condition && isActivated()) { + doAssert(getText(IS_TRUE_ASSERTION,text)); + } // end of if () + } + + public static void isTrue(boolean condition) { + if ( !condition && isActivated()) { + doAssert(getText(IS_TRUE_ASSERTION,"")); + } // end of if () + } + + public static void fail() throws AssertionError { + doAssert(getText(ASSERTION_FAIL,"")); + } + + public static void fail(String text) throws AssertionError { + doAssert(getText(ASSERTION_FAIL,text)); + } + + private static void doAssert(String text) throws AssertionError { + System.err.println(text); + throw new AssertionError(text); + } + + static boolean isActivated() { + return _bActivate; + } + + static void setActivated(boolean bActivate) { + _bActivate = bActivate; + } + + static String getText(String type, String text) { + return ( type + " failed '" + text + "'"); + } +} + + + + + + diff --git a/src/org/rapla/components/util/AssertionError.java b/src/org/rapla/components/util/AssertionError.java new file mode 100644 index 0000000..964dcd5 --- /dev/null +++ b/src/org/rapla/components/util/AssertionError.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util; + +public class AssertionError extends RuntimeException { + private static final long serialVersionUID = 1L; + + String text = ""; + + public AssertionError() { + } + public AssertionError(String text) { + this.text = text; + } + + public String toString() { + return text; + } +} + + + + diff --git a/src/org/rapla/components/util/Command.java b/src/org/rapla/components/util/Command.java new file mode 100644 index 0000000..e55cbc6 --- /dev/null +++ b/src/org/rapla/components/util/Command.java @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ + +package org.rapla.components.util; + +public interface Command { + public void execute() throws Exception; +} + + diff --git a/src/org/rapla/components/util/CommandQueue.java b/src/org/rapla/components/util/CommandQueue.java new file mode 100644 index 0000000..db072a3 --- /dev/null +++ b/src/org/rapla/components/util/CommandQueue.java @@ -0,0 +1,83 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ + +package org.rapla.components.util; + +import java.util.Vector; + +/** Creates a new thread that successively executes the queued command objects + * @see Command + */ +public class CommandQueue { + private Vector v = new Vector(); + public synchronized void enqueue(Command object) { + v.addElement( object ); + } + + public synchronized Command dequeue() { + if ( v.size() == 0) + return null; + Object firstElement =v.firstElement(); + if ( firstElement != null) { + v.removeElementAt( 0 ); + } + return (Command) firstElement; + } + + public void dequeueAll() { + while ( dequeue() != null); + } + + /** Creates a new Queue for Command Object. + The commands will be executed in succession in a seperate Daemonthread. + @see Command + */ + public static CommandQueue createCommandQueue() { + CommandQueue commandQueue = new CommandQueue(); + Thread eventThread= new MyEventThread(commandQueue); + eventThread.setDaemon(true); + eventThread.start(); + return commandQueue; + } + + + static class MyEventThread extends Thread { + CommandQueue commandQueue; + MyEventThread(CommandQueue commandQueue) { + this.commandQueue = commandQueue; + } + public void run() { + try { + while (true) { + Command command = commandQueue.dequeue(); + if (command == null) { + sleep(100); + continue; + } + try { + command.execute(); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } catch (InterruptedException ex) { + } + } + } + + + + +} + + diff --git a/src/org/rapla/components/util/DEPENDENCIES b/src/org/rapla/components/util/DEPENDENCIES new file mode 100644 index 0000000..b1b90bc --- /dev/null +++ b/src/org/rapla/components/util/DEPENDENCIES @@ -0,0 +1,7 @@ +All classes except the XMLUtil depend on the java.* packages. + +The classes in the xml package depend on: + +java.* +javax.xml.* +org.xml.sax.* diff --git a/src/org/rapla/components/util/DateTools.java b/src/org/rapla/components/util/DateTools.java new file mode 100644 index 0000000..21d4870 --- /dev/null +++ b/src/org/rapla/components/util/DateTools.java @@ -0,0 +1,158 @@ + /*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + +/** Tools for manipulating dates. + * At the moment of writing rapla internaly stores all appointments + * in the GMT timezone. + */ +public abstract class DateTools +{ + public static final int DAYS_PER_WEEK= 7; + public static final long MILLISECONDS_PER_MINUTE = 1000 * 60; + public static final long MILLISECONDS_PER_HOUR = MILLISECONDS_PER_MINUTE * 60; + public static final long MILLISECONDS_PER_DAY = 24 * MILLISECONDS_PER_HOUR; + public static final long MILLISECONDS_PER_WEEK = 7 * MILLISECONDS_PER_DAY; + public static TimeZone GMT = TimeZone.getTimeZone("GMT+0"); + + public static int getHourOfDay(long date) { + return (int) ((date % MILLISECONDS_PER_DAY)/ MILLISECONDS_PER_HOUR); + } + + public static int getMinuteOfHour(long date) { + return (int) ((date % MILLISECONDS_PER_HOUR)/ MILLISECONDS_PER_MINUTE); + } + + /** sets time of day to 0:00. + @see #cutDate(Date) + */ + public static long cutDate(long date) { + return (date - (date % MILLISECONDS_PER_DAY)); + } + + public static boolean isMidnight(long date) { + return cutDate( date ) == date ; + } + + public static boolean isMidnight(Date date) { + return isMidnight( date.getTime()); + } + + /** sets time of day to 0:00. + @see #cutDate(Date) + */ + public static void cutDate( Calendar calendar ) { + calendar.set( Calendar.HOUR_OF_DAY, 0 ); + calendar.set( Calendar.MINUTE, 0 ); + calendar.set( Calendar.SECOND, 0 ); + calendar.set( Calendar.MILLISECOND, 0 ); + } + + + /** sets time of day to 0:00. */ + public static Date cutDate(Date date) { + return new Date(cutDate(date.getTime())); + } + + static TimeZone timeZone =TimeZone.getTimeZone("GMT"); + /** same as TimeZone.getTimeZone("GMT"). */ + public static TimeZone getTimeZone() { + return timeZone; + } + /** sets time of day to 0:00 and increases day. + @see #fillDate(Date) + */ + public static long fillDate(long date) { + // cut date + long cuttedDate = (date - (date % MILLISECONDS_PER_DAY)); + return cuttedDate + MILLISECONDS_PER_DAY; + } + + public static Date fillDate(Date date) { + return new Date(fillDate(date.getTime())); + } + + /** Monday 24:00 = tuesday 0:00. + But the first means end of monday and the second start of tuesday. + The default DateFormat always displays tuesday. + If you want to edit the first interpretation in calendar components. + call addDay() to add 1 day to the given date before displaying + and subDay() for mapping a day back after editing. + @see #subDay + @see #addDays + */ + public static Date addDay(Date date) { + return new Date(date.getTime() + MILLISECONDS_PER_DAY); + } + + /** see #addDay*/ + public static Date addDays(Date date,int days) { + return new Date(date.getTime() + MILLISECONDS_PER_DAY * days); + } + + /** + @see #addDay + @see #subDays + */ + public static Date subDay(Date date) { + return new Date(date.getTime() - MILLISECONDS_PER_DAY); + } + + /** + @see #addDay + */ + public static Date subDays(Date date,int days) { + return new Date(date.getTime() - MILLISECONDS_PER_DAY * days); + } + /** returns if the two dates are one the same date. + * Dates must be in GMT */ + static public boolean isSameDay( long d1, long d2) { + return cutDate( d1 ) == cutDate ( d2 ); + } + + /** uses the calendar-object for date comparison. + * Use this for non GMT Dates*/ + static public boolean isSameDay( Calendar calendar, Date d1, Date d2 ) { + calendar.setTime( d1 ); + int era1 = calendar.get( Calendar.ERA ); + int year1 = calendar.get( Calendar.YEAR ); + int day_of_year1 = calendar.get( Calendar.DAY_OF_YEAR ); + calendar.setTime( d2 ); + int era2 = calendar.get( Calendar.ERA ); + int year2 = calendar.get( Calendar.YEAR ); + int day_of_year2 = calendar.get( Calendar.DAY_OF_YEAR ); + return ( era1 == era2 && year1 == year2 && day_of_year1 == day_of_year2 ); + } + + static public long countDays(Date start,Date end) { + return (cutDate(end.getTime()) - cutDate(start.getTime())) / MILLISECONDS_PER_DAY; + } + + static public Calendar createGMTCalendar() + { + return Calendar.getInstance( GMT); + } + + +} + + + + + + + diff --git a/src/org/rapla/components/util/IOUtil.java b/src/org/rapla/components/util/IOUtil.java new file mode 100644 index 0000000..67b70bf --- /dev/null +++ b/src/org/rapla/components/util/IOUtil.java @@ -0,0 +1,277 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util; + +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.StringTokenizer; + +import org.apache.avalon.framework.CascadingException; + +/** Some IOHelper methods. */ +abstract public class IOUtil { + + /** returns the path of the url without the last path component */ + public static URL getBase(URL url) { + try { + String file = url.getPath(); + String separator = "/"; + if (url.getProtocol().equals("file") && file.indexOf(File.separator)>0) { + separator = File.separator; + } + int index = file.lastIndexOf(separator); + String dir = (index<0) ? file: file.substring(0,index + 1); + return new URL(url.getProtocol() + ,url.getHost() + ,url.getPort() + ,dir); + } catch ( MalformedURLException e) { + // This should not happen + e.printStackTrace(); + throw new RuntimeException("Unknown error while getting the base of the url!"); + } // end of try-catch + } + + /** reads the content form an url into a ByteArray*/ + public static byte[] readBytes(URL url) throws IOException { + InputStream in = null; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + in = url.openStream(); + byte[] buffer = new byte[1024]; + int count = 0; + do { + out.write(buffer, 0, count); + count = in.read(buffer, 0, buffer.length); + } while (count != -1); + return out.toByteArray(); + } finally { + if ( in != null) { + in.close(); + } // end of if () + } + } + + + + /** same as {@link URLDecoder#decode}. + * But calls the deprecated method under 1.3. + */ + public static String decode(String s,String enc) throws UnsupportedEncodingException { + return callEncodeDecode(URLDecoder.class,"decode",s,enc); + } + + /** same as {@link URLEncoder#encode}. + * But calls the deprecated method under 1.3. + */ + public static String encode(String s,String enc) throws UnsupportedEncodingException { + return callEncodeDecode(URLEncoder.class,"encode",s,enc); + } + + private static String callEncodeDecode(Class clazz,String methodName,String s,String enc) throws UnsupportedEncodingException { + Assert.notNull(s); + Assert.notNull(enc); + try { + Method method = + clazz.getMethod(methodName + ,new Class[] { + String.class + ,String.class + } + ); + return (String) method.invoke(null,new Object[] {s,enc}); + } catch (NoSuchMethodException ex) { + try { + Method method = + URLDecoder.class.getMethod(methodName + ,new Class[] {String.class} + ); + return (String) method.invoke(null,new Object[] {s}); + } catch (Exception ex2) { + ex2.printStackTrace(); + throw new IllegalStateException("Should not happen" + ex2.getMessage()); + } + } catch (InvocationTargetException ex) { + throw (UnsupportedEncodingException) ex.getTargetException(); + } catch (IllegalAccessException ex) { + ex.printStackTrace(); + throw new IllegalStateException("Should not happen" + ex.getMessage()); + } + } + + + /** returns a BufferedInputStream from the url. + If the url-protocol is "file" no url connection will + be opened. + */ + public static InputStream getInputStream(URL url) throws IOException { + if (url.getProtocol().equals("file")) { + String path = decode(url.getPath(),"UTF-8"); + return new BufferedInputStream(new FileInputStream(path)); + } else { + return new BufferedInputStream(url.openStream()); + } // end of else + } + + public static File getFileFrom(URL url) throws IOException { + String path = decode(url.getPath(),"UTF-8"); + return new File( path ); + } + + + /** copies a file. + * @param srcPath the source-path. Thats the path of the file that should be copied. + * @param destPath the destination-path + */ + + public static void copy( String srcPath, String destPath) throws IOException{ + copy( srcPath, destPath, false); + } + + /** copies a file. + * @param srcPath the source-path. Thats the path of the file that should be copied. + * @param destPath the destination-path + */ + public static void copy( String srcPath, String destPath,boolean onlyOverwriteIfNewer ) throws IOException{ + copy ( new File( srcPath ) , new File( destPath ), onlyOverwriteIfNewer ); + } + + /** copies a file. + */ + public static void copy(File srcFile, File destFile, boolean onlyOverwriteIfNewer) throws IOException { + if ( ! srcFile.exists() ) { + throw new IOException( srcFile.getPath() + " doesn't exist!!"); + } + if ( destFile.exists() && destFile.lastModified() >= srcFile.lastModified() && onlyOverwriteIfNewer) + { + return; + } + FileInputStream in = null; + FileOutputStream out = null; + try { + in = new FileInputStream( srcFile ); + out = new FileOutputStream( destFile); + copyStreams ( in, out ); + } finally { + if ( in != null ) + in.close(); + + if ( out != null ) + out.close(); + } + } + + /** copies the contents of the input stream to the output stream. + * @param in + * @param out + * @throws IOException + */ + public static void copyStreams( InputStream in, OutputStream out ) throws IOException { + byte[] buf = new byte[ 32000 ]; + int n = 0; + while ( n != -1 ) { + out.write( buf, 0, n ); + n = in.read(buf, 0, buf.length ); + } + } + + /** returns the relative path of file to base. + * @throws IOException if position of file is not relative to base + */ + public static String getRelativePath(File base,File file) throws IOException { + String filePath = file.getAbsoluteFile().getCanonicalPath(); + String basePath = base.getAbsoluteFile().getCanonicalPath(); + int start = filePath.indexOf(basePath); + if (start != 0) + throw new IOException(basePath + " not ancestor of " + filePath); + return filePath.substring(basePath.length()); + } + + /** returns the relative path of file to base. + * same as {@link #getRelativePath(File, File)} but replaces windows-plattform-specific + * file separator \ with / + * @throws IOException if position of file is not relative to base + */ + public static String getRelativeURL(File base,File file) throws IOException { + StringBuffer result= new StringBuffer(getRelativePath(base,file)); + for (int i=0;i" + ex.getMessage() +"
    "); + ex.printStackTrace(writer); + while (ex instanceof CascadingException) { + ex = ((CascadingException) ex).getCause(); + if (ex != null) { + writer.println("

    Caused by: "+ ex.getMessage() + "


    "); + ex.printStackTrace(writer); + } else { + break; + } + } + return bytes.toString(); + } + + +} + + + + + + + + + + + diff --git a/src/org/rapla/components/util/InverseComparator.java b/src/org/rapla/components/util/InverseComparator.java new file mode 100644 index 0000000..8a0da10 --- /dev/null +++ b/src/org/rapla/components/util/InverseComparator.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ + +package org.rapla.components.util; + +import java.util.Comparator; + +/** + * + * Reverts the Original Comparator + * -1 -> 1 + * 1 -> -1 + * 0 -> 0 + */ +public class InverseComparator implements Comparator { + Comparator original; + public InverseComparator( Comparator original) { + this.original = original; + } + public int compare( Object arg0, Object arg1 ) + { + return -1 * original.compare( arg0, arg1); + } +} + + diff --git a/src/org/rapla/components/util/JNLPUtil.java b/src/org/rapla/components/util/JNLPUtil.java new file mode 100644 index 0000000..fb1ee98 --- /dev/null +++ b/src/org/rapla/components/util/JNLPUtil.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.util; + +import java.net.URL; +import java.lang.reflect.Method; +/** returns the codebase in an webstart application */ +abstract public class JNLPUtil { + final static String basicService = "javax.jnlp.BasicService"; + final public static URL getCodeBase() throws Exception { + try { + Class serviceManagerC = Class.forName("javax.jnlp.ServiceManager"); + Class basicServiceC = Class.forName( basicService ); + //Class unavailableServiceException = Class.forName("javax.jnlp.UnavailableServiceException"); + + Method lookup = serviceManagerC.getMethod("lookup", new Class[] {String.class}); + Method getCodeBase = basicServiceC.getMethod("getCodeBase", new Class[] {}); + Object service = lookup.invoke( null, new Object[] { basicService }); + return (URL) getCodeBase.invoke( service, new Object[] {}); + } catch (ClassNotFoundException ex ) { + throw new Exception( "Webstart not available :" + ex.getMessage()); + } + } +} diff --git a/src/org/rapla/components/util/Mutex.java b/src/org/rapla/components/util/Mutex.java new file mode 100644 index 0000000..f902ea6 --- /dev/null +++ b/src/org/rapla/components/util/Mutex.java @@ -0,0 +1,90 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util; + + +/** Mutex-lock for synchronization in multithreaded enviroments.*/ +public class Mutex { + boolean locked = false; + boolean debugging = false; + String name; + + public Mutex() { + this.name = ""; + } + + public Mutex(String name) { + this.name = name; + } + + /** tries to aquire a lock. If the lock is hold by another thread, the current thread will + * wait until the lock is released. + * */ + final public synchronized void aquire() throws InterruptedException { + aquire(0); + } + + /** Releases a lock. All threads that are waiting for the lock gets notified, but only one can + * continue executing the aquire method (because its synchronized) and get the new lock.*/ + final public synchronized void release() { + log("Lock released"); + + locked = false; + notifyAll(); + } + + + /** Tries to aquire a lock for the specified time and returns false, if the lock can't be aquired in that time.*/ + final public synchronized boolean aquire(int time) throws InterruptedException { + log("Try to aquire lock"); + + if ( time <= 0 ) { + while (locked) { + wait(); + } + } else { + long startTime = System.currentTimeMillis(); + long currentTime = startTime; + + //The synchronization monitor will be released during wait + while (locked) { + long diff = (currentTime - startTime); + if ( diff >= time) { + log("Timeout when waiting for the log"); + return false; + } + //Many Threads can be in the aquire method (but they will loose the monitor at this point) + wait( time - diff); + currentTime = System.currentTimeMillis(); + } + } + // Only one thread can get the monitor in the aquire method, + //and continue after wait. So the next state changing call is thread safe. + locked = true; + log("Lock aquired"); + return true; + } + + protected String getLoggingPrefix() { + return "Mutex " + name + " " + Thread.currentThread().toString() + " "; + } + + protected void log(String message) { + if ( debugging ) + System.out.println( getLoggingPrefix() + message); + } +} + + + + diff --git a/src/org/rapla/components/util/OrderedMap.java b/src/org/rapla/components/util/OrderedMap.java new file mode 100644 index 0000000..c490bbe --- /dev/null +++ b/src/org/rapla/components/util/OrderedMap.java @@ -0,0 +1,74 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util; + +import java.util.*; +/**

    An implemention of a map that keeps the values (not the keys) sorted.

    */ +public class OrderedMap extends HashMap { + private static final long serialVersionUID = 1L; + + SortedSet sorted; + + public OrderedMap() { + super(); + sorted = new TreeSet(); + } + + public OrderedMap(Comparator comparator) { + super(); + sorted = new TreeSet(comparator); + } + + public Object put(Object key,Object value) { + Object result = super.put(key,value); + if (result != null) { + //#TODO This is not very performant + rebuildTree(); + //sorted.add(value); + } else { + sorted.add(value); + } + return result; + } + + private void rebuildTree() { + sorted.clear(); + sorted.addAll(super.values()); + } + + public void putAll(Map all) { + super.putAll(all); + rebuildTree(); + } + + public Object remove(Object key) { + Object result = super.remove(key); + if (result != null) + if (!sorted.remove(result)) + rebuildTree(); + return result; + } + + public void clear() { + super.clear(); + sorted.clear(); + } + + public Collection values() { + return sorted; + } +} + + + + diff --git a/src/org/rapla/components/util/SerializableDateTimeFormat.java b/src/org/rapla/components/util/SerializableDateTimeFormat.java new file mode 100644 index 0000000..c261fbc --- /dev/null +++ b/src/org/rapla/components/util/SerializableDateTimeFormat.java @@ -0,0 +1,147 @@ +package org.rapla.components.util; + +import java.text.ParseException; +import java.util.Calendar; +import java.util.Date; + +import org.rapla.components.util.iterator.IntIterator; + + +/** +Provides methods for parsing and formating dates +and times in the following format:
    +2002-25-05 for dates and 13:00:00 for times. +This is according to the xschema specification for dates and time. +WARNING: Do not share instances of this class between threads. Its NOT thread safe +*/ +public class SerializableDateTimeFormat +{ + Calendar calendar; + + public SerializableDateTimeFormat() { + this( Calendar.getInstance( DateTools.getTimeZone())); + } + + public SerializableDateTimeFormat(Calendar calendar) { + this.calendar = calendar; + } + + private Date parseDate( String date, String time, boolean fillDate ) throws ParseException { + if( date == null || date.length()==0 ) + throwParseDateException("empty", 0); + IntIterator it = new IntIterator(); + it.init( date, '-' ); + if ( !it.hasNext() ) + throwParseDateException( date, it.getPos() ); + calendar.set( Calendar.YEAR, it.next() ); + if ( !it.hasNext() ) + throwParseDateException( date, it.getPos() ); + calendar.set( Calendar.MONTH, it.next() -1 ); + if ( !it.hasNext() ) + throwParseDateException( date, it.getPos() ); + calendar.set( Calendar.DATE, it.next() ); + if (fillDate ) + calendar.add( Calendar.DATE, 1 ); + + if ( time != null ) { + it.init( time, ':' ); + if ( !it.hasNext() ) + throwParseTimeException( time, it.getPos() ); + calendar.set( Calendar.HOUR_OF_DAY, it.next() ); + if ( !it.hasNext() ) + throwParseTimeException( time, it.getPos() ); + calendar.set( Calendar.MINUTE, it.next() ); + if ( !it.hasNext() ) + throwParseTimeException( time, it.getPos() ); + calendar.set( Calendar.SECOND, it.next() ); + calendar.set( Calendar.MILLISECOND, 0 ); + } else { + DateTools.cutDate( calendar ); + } + // logger.log( "parsed to " + calendar.getTime() ); + return calendar.getTime(); + } + + private void throwParseDateException( String date, int pos ) throws ParseException { + throw new ParseException( "No valid date format: " + date, pos ); + } + + private void throwParseTimeException( String time, int pos ) throws ParseException { + throw new ParseException( "No valid time format: " + time, pos ); + } + + /** The date-string must be in the following format 2001-10-21. + The format of the time-string is 18:00:00. + @return The parsed date + @throws ParseException when the date cannot be parsed. + */ + public Date parseDateTime( String date, String time) throws ParseException { + return parseDate( date, time, false); + } + + /** The date-string must be in the following format 2001-10-21. + * @param fillDate if this flag is set the time will be 24:00 instead of 0:00 + When this flag is set the time parameter should be null + @return The parsed date + @throws ParseException when the date cannot be parsed. + */ + public Date parseDate( String date, boolean fillDate ) throws ParseException { + return parseDate( date, null, fillDate); + } + + + /** returns the time object in the following format: 13:00:00.
    */ + public String formatTime( Date date ) { + StringBuffer buf = new StringBuffer(); + if ( date != null) + { + calendar.setTime( date ); + } + append( buf, calendar.get(Calendar.HOUR_OF_DAY), 2 ); + buf.append( ':' ); + append( buf, calendar.get(Calendar.MINUTE), 2 ); + buf.append( ':' ); + append( buf, calendar.get(Calendar.SECOND), 2 ); + return buf.toString(); + } + + /** returns the date object in the following format: 2001-10-21.
    + @param adaptDay if the flag is set 2001-10-21 will be stored as 2001-10-20. + This is usefull for end-dates: 2001-10-21 00:00 is then interpreted as + 2001-10-20 24:00. + */ + public String formatDate( Date date, boolean adaptDay ) { + StringBuffer buf = new StringBuffer(); + + if ( adaptDay ) + calendar.setTime( new Date( date.getTime() - DateTools.MILLISECONDS_PER_DAY)); + else + calendar.setTime( date ); + append( buf, calendar.get(Calendar.YEAR), 4 ); + buf.append( '-' ); + append( buf, calendar.get(Calendar.MONTH)+1, 2 ); + buf.append( '-' ); + append( buf, calendar.get(Calendar.DATE), 2 ); + return buf.toString(); + + } + + /** same as formatDate(date, false). + @see #formatDate(Date,boolean) + */ + public String formatDate( Date date ) { + return formatDate( date, false ); + } + + private void append( StringBuffer buf, int number, int minLength ) { + int limit = 1; + for ( int i=0;iSame as map but for small positive int-values.

    + +

    This class is useful if you want to model a 1:1 relation between +an int value and an object.

    + +

    This map is only efficient for small ints because the hashMap size +is always larger or equal to the largest key. It is optimized for get.

    +@see #get +*/ +public class SmallIntMap implements java.io.Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + Object[] positiveValues; + Object[] negativeValues; + Set keys = new TreeSet(); + public SmallIntMap() { + this(10); + } + + public SmallIntMap(int initSize) { + positiveValues = new Object[initSize]; + } + + public SmallIntMap(int[] keys,Object[] values) { + Assert.isTrue(keys.length == values.length,"number of keys is different from number of values"); + int maxSize = 0; + for (int i=0;imaxSize) + maxSize = keys[i]; + this.positiveValues = new Object[maxSize + 1]; + for (int i=0;i= 0) { + if (key < positiveValues.length) { + return positiveValues[key]; + } + } else { + if ( negativeValues != null && -key < negativeValues.length) { + return negativeValues[-key]; + } + } + return null; + } + + public Object put(int key,Object value) { + Object keyObj = new Integer(key); + if (!keys.contains(keyObj)) + keys.add(keyObj); + + Object oldValue; + if ( key >= 0) { + if (key>= positiveValues.length) { + Object[] newValues = new Object[key * 2]; + System.arraycopy(positiveValues,0,newValues,0,positiveValues.length); + positiveValues = newValues; + } + oldValue = positiveValues[key]; + positiveValues[key] = value; + } else { + if ( negativeValues == null) { + negativeValues = new Object[10]; + } + if (-key>= negativeValues.length) { + Object[] newValues = new Object[(-key) * 2]; + System.arraycopy(negativeValues,0,newValues,0,negativeValues.length); + negativeValues = newValues; + } + oldValue = negativeValues[- key]; + negativeValues[ -key] = value; + } + + return oldValue; + } + + public void clear() { + positiveValues = new Object[10]; + negativeValues = null; + keys.clear(); + } + + public Object remove(int key) { + keys.remove(new Integer(key)); + Object oldValue = null; + if ( key >= 0) { + if (key < positiveValues.length) { + oldValue = positiveValues[key]; + positiveValues[key] = null; + } + } else { + if ( negativeValues != null && -key < negativeValues.length) { + oldValue = negativeValues[-key]; + negativeValues[-key] = null; + } + } + return oldValue; + } + + public int[] findMatchingKeys(Object value) { + ArrayList matching = new ArrayList(); + Iterator it = keys.iterator(); + while (it.hasNext()) { + Integer key = (Integer)it.next(); + if (get(key.intValue()).equals(value)) + matching.add(key); + } + int[] result = new int[matching.size()]; + for (int i=0;iArrayIndexOutOfBoundsException if string.length()<width. + */ + public static String left(String string,int width) { + return string.substring(0, Math.min(string.length(), width -1)); + } + + /** Convert a byte array into a printable format containing aString of hexadecimal digit characters (two per byte). + * This method is taken form the apache jakarata + * tomcat project. + */ + public static String convert(byte bytes[]) { + StringBuffer sb = new StringBuffer(bytes.length * 2); + for (int i = 0; i < bytes.length; i++) { + sb.append(convertDigit((int) (bytes[i] >> 4))); + sb.append(convertDigit((int) (bytes[i] & 0x0f))); + } + return (sb.toString()); + } + + /** Convert the specified value (0-15) to the corresponding hexadecimal digit. + * This method is taken form the apache jakarata tomcat project. + */ + public static char convertDigit(int value) { + value &= 0x0f; + if (value >= 10) + return ((char) (value - 10 + 'a')); + else + return ((char) (value + '0')); + } + + public static boolean equalsOrBothNull(Object o1, Object o2) { + if (o1 == null) { + if (o2 != null) { + return false; + } + } else if ( o2 == null) { + return false; + } else if (!o1.equals( o2 ) ) { + return false; + } + return true; + } + + /** 1.3 compatibility method */ + public static String[] split(String stringToSplit, char delimiter) { + List keys = new ArrayList(); + int lastIndex = 0; + while( true ) { + int index = stringToSplit.indexOf( delimiter,lastIndex); + if ( index < 0) + { + String token = stringToSplit.substring( lastIndex ); + if ( token.length() >= 0) + { + keys.add( token ); + } + break; + } + String token = stringToSplit.substring( lastIndex , index ); + keys.add( token ); + lastIndex = index + 1; + } + return (String[])keys.toArray( new String[] {}); + + } + + /** 1.3 compatibility method */ + public static String replaceAll( String string, String stringToReplace, String newString ) { + if ( stringToReplace.equals( newString)) + return string; + int length = stringToReplace.length(); + int oldPos = 0; + while ( true ) { + int pos = string.indexOf( stringToReplace,oldPos); + if ( pos < 0 ) + return string; + + string = string.substring(0, pos) + newString + string.substring( pos + length); + oldPos = pos + 1; + if ( oldPos >= string.length() ) + return string; + + } + } + + /** reads a table from a csv file. You can specify a minimum number of columns */ + public static String[][] csvRead(Reader reader, int expectedColumns) throws IOException { + //System.out.println( "Using Encoding " + reader.getEncoding() ); + StringBuffer buf = new StringBuffer(); + while (true) { + int c = reader.read(); + if ( c == -1 ) + break; + buf.append( (char) c ); + } + String[] lines = buf.toString().split(System.getProperty("line.separator")); //BJO + //String[] lines = split( buf.toString(),'\n'); + String[][] lineEntries = new String[ lines.length ][]; + for ( int i=0;i= array.length) + throw new NoSuchElementException(); + + return array[ pos ++]; + } +} + diff --git a/src/org/rapla/components/util/iterator/FilterIterator.java b/src/org/rapla/components/util/iterator/FilterIterator.java new file mode 100644 index 0000000..faad75d --- /dev/null +++ b/src/org/rapla/components/util/iterator/FilterIterator.java @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.iterator; + +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** Filters the objects of an Iterator by overiding the isInIterator method*/ +public abstract class FilterIterator implements Iterator { + Iterator it; + Object obj; + + public FilterIterator(Iterator it) { + this.it = it; + obj = getNextObject(); + } + + public boolean hasNext() { + return obj != null; + } + + protected abstract boolean isInIterator(Object obj); + + public void remove() { + throw new UnsupportedOperationException(); + } + + private Object getNextObject() { + Object o; + do { + if ( !it.hasNext() ) { + return null; + } + o = it.next(); + } while (!isInIterator( o)); + return o; + } + + public Object next() { + if ( obj == null) + throw new NoSuchElementException(); + + Object result = obj; + obj = getNextObject(); + return result; + } +} + diff --git a/src/org/rapla/components/util/iterator/IntIterator.java b/src/org/rapla/components/util/iterator/IntIterator.java new file mode 100644 index 0000000..d48718d --- /dev/null +++ b/src/org/rapla/components/util/iterator/IntIterator.java @@ -0,0 +1,100 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.iterator; + +import java.util.NoSuchElementException; + +/** This class can iterate over a string containing a list of integers. + Its tuned for performance, so it will return int instead of Integer and + can be reused without recreating by calling the init method. +*/ +public class IntIterator { + int parsePosition = 0; + String text; + char delimiter; + int len; + int next; + boolean hasNext=false; + + public void init(String text,char delimiter) { + this.text = text; + len = text.length(); + this.delimiter = delimiter; + parsePosition = 0; + parseNext(); + } + + public boolean hasNext() { + return hasNext; + } + + public int next() { + if (!hasNext()) + throw new NoSuchElementException(); + int result = next; + parseNext(); + return result; + } + + private void parseNext() { + boolean isNegative = false; + int relativePos = 0; + + next = 0; + + if (parsePosition == len) { + hasNext = false; + return; + } + + while (parsePosition< len) { + char c = text.charAt(parsePosition ); + if (relativePos == 0 && c=='-') { + isNegative = true; + continue; + } + + if (c == delimiter) { + parsePosition++; + break; + } + + int digit = c-'0'; + if (digit<0 || digit>9) { + hasNext = false; + return; + } + + next *= 10; + next += digit; + parsePosition++; + relativePos++; + } + + if (isNegative) + next *= -1; + + hasNext = true; + } + public int getPos() { + return parsePosition; + } +} + + + + + + + + diff --git a/src/org/rapla/components/util/iterator/IteratorChain.java b/src/org/rapla/components/util/iterator/IteratorChain.java new file mode 100644 index 0000000..4f3d7d1 --- /dev/null +++ b/src/org/rapla/components/util/iterator/IteratorChain.java @@ -0,0 +1,49 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.iterator; + +import java.util.Iterator; + +/** concatenates two Iterators */ +public class IteratorChain implements Iterator { + protected Iterator firstIt; + protected Iterator secondIt; + Object nextElement; + boolean isIteratingFirst = true; + + public IteratorChain(Iterator firstIt, Iterator secondIt) { + this.firstIt = firstIt; + this.secondIt = secondIt; + } + + + public boolean hasNext() { + return (isIteratingFirst && firstIt.hasNext()) + || secondIt.hasNext(); + } + + public void remove() { + throw new UnsupportedOperationException(); + } + + public Object next() { + if (isIteratingFirst && !firstIt.hasNext()) + isIteratingFirst = false; + + if ( isIteratingFirst ) + return firstIt.next(); + else + return secondIt.next(); + } +} + diff --git a/src/org/rapla/components/util/iterator/NestedIterator.java b/src/org/rapla/components/util/iterator/NestedIterator.java new file mode 100644 index 0000000..d468111 --- /dev/null +++ b/src/org/rapla/components/util/iterator/NestedIterator.java @@ -0,0 +1,73 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.iterator; + +import java.util.NoSuchElementException; +import java.util.Iterator; + +/**Successivly iterates over the elements specified in the nested Iterators. +Example of an recursive traversal of an Entity Tree: +
    +class RecursiveEntityIterator extends NestedIterator {
    +    public RecursiveEntityIterator(Iterator it) {
    +        super(it);
    +    }
    +    public Iterator getNestedIterator(Object obj) {
    +        return new RecursiveEntityIterator(((Entity)obj).getSubEntities());
    +    }
    +}
    +
    +*/ + +public abstract class NestedIterator implements Iterator { + protected Iterator outerIt; + protected Iterator innerIt; + Object nextElement; + boolean isInitialized; + public NestedIterator(Iterator outerIt) { + this.outerIt = outerIt; + } + + private Object nextElement() { + while (outerIt.hasNext() || (innerIt != null && innerIt.hasNext())) { + if (innerIt != null && innerIt.hasNext()) + return innerIt.next(); + innerIt = getNestedIterator(outerIt.next()); + } + return null; + } + + public abstract Iterator getNestedIterator(Object obj); + + public boolean hasNext() { + if (!isInitialized) + { + nextElement = nextElement(); + isInitialized = true; + } + return nextElement != null; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + + public Object next() { + if (!hasNext()) + throw new NoSuchElementException(); + Object result = nextElement; + nextElement = nextElement(); + return result; + } +} + diff --git a/src/org/rapla/components/util/iterator/package.html b/src/org/rapla/components/util/iterator/package.html new file mode 100644 index 0000000..bac94d8 --- /dev/null +++ b/src/org/rapla/components/util/iterator/package.html @@ -0,0 +1,4 @@ + +

    Iterators used by Rapla.

    + + diff --git a/src/org/rapla/components/util/package.html b/src/org/rapla/components/util/package.html new file mode 100644 index 0000000..a3f50a5 --- /dev/null +++ b/src/org/rapla/components/util/package.html @@ -0,0 +1,4 @@ + +

    Some more helpful tools.

    + + diff --git a/src/org/rapla/components/util/xml/XMLReaderAdapter.java b/src/org/rapla/components/util/xml/XMLReaderAdapter.java new file mode 100644 index 0000000..7aa315b --- /dev/null +++ b/src/org/rapla/components/util/xml/XMLReaderAdapter.java @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------* + | (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.xml; + +import javax.xml.parsers.SAXParserFactory; + +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; + +final public class XMLReaderAdapter { + /** Here you can set the xml-reader implementation that should be + used. The default implementation is the aelfred-parser from + the saxon project: net.sf.saxon.aelfred.SAXDriver. + */ + //public static String XML_READER_IMPL ="net.sf.saxon.aelfred.SAXDriver"; + public static String XML_READER_IMPL ="java.Saxon"; + + private XMLReaderAdapter() + { + } + + private static ClassLoader getClassLoader() { + return XMLReaderAdapter.class.getClassLoader(); + } + + public static void checkXMLSupport() throws ClassNotFoundException { + try { + getClassLoader().loadClass("javax.xml.parsers.SAXParserFactory"); + } catch (ClassNotFoundException ex) { + throw new ClassNotFoundException + ("Couldn't find SAX-XML-PARSER API: javax.xml.parsers" + + " You need java 1.4 or higher. For java-versions below 1.4 please download" + + " the saxon.jar from rapla.sourceforge.net" + + " and put it into the lib directory."); + } + } + + public static XMLReader createXMLReader(boolean validating) throws SAXException { + try { + SAXParserFactory spf = SAXParserFactory.newInstance(); + spf.setNamespaceAware(true); + spf.setValidating(validating); + return spf.newSAXParser().getXMLReader(); + + } catch (Exception ex2) { + throw new SAXException("Couldn't create XMLReader '" + + XML_READER_IMPL +"' : " + ex2.getMessage()); + } + } +} diff --git a/src/org/rapla/components/util/xml/XMLTransformerAdapter.java b/src/org/rapla/components/util/xml/XMLTransformerAdapter.java new file mode 100644 index 0000000..48b1c9c --- /dev/null +++ b/src/org/rapla/components/util/xml/XMLTransformerAdapter.java @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------* + | (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.xml; + +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.sax.SAXTransformerFactory; + +import org.xml.sax.SAXException; + +final public class XMLTransformerAdapter { + /** Here you can set the xslt-transformer-factory implementation that should be used if + TransformerFactory.newInstance() fails. The default implementation + is the saxon transformer-factory from the saxon project: net.sf.saxon.TransformerFactoryImpl + */ + public static String XSLT_TRANSFORMER_FACTORY_IMPL = "com.icl.saxon.TransformerFactoryImpl"; + + private static ClassLoader getClassLoader() { + return XMLTransformerAdapter.class.getClassLoader(); + } + + public static void checkXMLSupport() throws ClassNotFoundException { + try { + getClassLoader().loadClass("javax.xml.transform.sax.SAXTransformerFactory"); + } catch (ClassNotFoundException ex) { + throw new ClassNotFoundException + ("Couldn't find Transformer-API: javax.xml.transform" + + " You need java 1.4 or higher. For java-versions below 1.4 please download" + + " the saxon.jar from rapla.sourceforge.net" + + " and put it into the lib directory."); + } + } + + public static SAXTransformerFactory getTransformerFactory() throws SAXException{ + try { + return (SAXTransformerFactory) TransformerFactory.newInstance(); + } catch (TransformerFactoryConfigurationError ex) { + System.err.println("Couldn't initialize default SAXTransformerFactory. Now trying '" + + XSLT_TRANSFORMER_FACTORY_IMPL + "'"); + try { + getClassLoader().loadClass("javax.xml.parsers.SAXParserFactory"); + return (SAXTransformerFactory) getClassLoader().loadClass(XSLT_TRANSFORMER_FACTORY_IMPL).newInstance(); + } catch (ClassNotFoundException ex2) { + throw new SAXException("Couldn't find '" + XSLT_TRANSFORMER_FACTORY_IMPL + +"' on classpath. Requiered library is missing!"); + } catch (ClassCastException ex2) { + throw new SAXException("Wrong class: " + XSLT_TRANSFORMER_FACTORY_IMPL + + " doesnt implement SAXTransformerFactory"); + } catch (Exception ex2) { + throw new SAXException("Couldn't load SAXTransformerFactory '" + + XSLT_TRANSFORMER_FACTORY_IMPL +"' : " + ex2.getMessage()); + } + } + } + +} diff --git a/src/org/rapla/components/util/xml/XMLWriter.java b/src/org/rapla/components/util/xml/XMLWriter.java new file mode 100644 index 0000000..a873a8e --- /dev/null +++ b/src/org/rapla/components/util/xml/XMLWriter.java @@ -0,0 +1,191 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.util.xml; + +import java.io.IOException; +import java.io.BufferedWriter; + +import org.xml.sax.Attributes; + +/** Provides some basic functionality for xml-file creation. This + * is the SAX like alternative to the creation of a DOM Tree.*/ +public class XMLWriter { + BufferedWriter writer; + boolean xmlSQL = false; + public void setWriter(BufferedWriter writer) { + this.writer = writer; + } + + public BufferedWriter getWriter() { + return this.writer; + } + + int level = 0; + private void indent() throws IOException { + if( !xmlSQL) //BJO do not indent for sql db, XML_VALUE column will be too small + for (int i = 0; i < level * 3; i++) writer.write(' '); + } + + protected void increaseIndentLevel() { + level ++; + } + + protected void decreaseIndentLevel() { + if (level > 0) + level --; + } + + public int getIndentLevel() { + return level; + } + + public void setIndentLevel(int level) { + this.level = level; + } + + public static String encode(String text) { + boolean needsEncoding = false; + int size = text.length(); + for ( int i= 0; i': + case '&': + case '"': + needsEncoding = true; + break; + } + } + if ( !needsEncoding ) + return text; + StringBuffer buf = new StringBuffer(); + for ( int i= 0; i': + buf.append(">"); + break; + case '&': + buf.append("&"); + break; + case '"': + buf.append("""); + break; + default: + buf.append(c); + break; + } // end of switch () + } // end of for () + return buf.toString(); + } + + protected void printEncode(String text) throws IOException { + if (text == null) + return; + writer.write( encode(text) ); + } + + protected void openTag(String start) throws IOException { + indent(); + writer.write('<'); + writer.write(start); + level++; + } + + protected void openElement(String start) throws IOException { + indent(); + writer.write('<'); + writer.write(start); + writer.write('>');writer.newLine(); + level++; + } + + protected void openElementOnLine(String start) throws IOException { + indent(); + writer.write('<'); + writer.write(start); + writer.write('>'); + level++; + } + + protected void att(Attributes attr) throws IOException{ + for (int i=0;i');writer.newLine(); + } + + protected void closeTagOnLine() throws IOException{ + writer.write('>'); + } + + protected void closeElementOnLine(String element) throws IOException { + level--; + writer.write('<'); + writer.write('/'); + writer.write(element); + writer.write('>'); + } + + protected void closeElement(String element) throws IOException { + level--; + indent(); + writer.write('<'); + writer.write('/'); + writer.write(element); + writer.write('>');writer.newLine(); + } + + protected void closeElementTag() throws IOException { + level--; + writer.write('/'); + writer.write('>');writer.newLine(); + } + + /** writes the line to the specified PrintWriter */ + public void println(String text) throws IOException { + indent(); + writer.write(text);writer.newLine(); + } + + /** writes the text to the specified PrintWriter */ + public void print(String text) throws IOException { + writer.write(text); + } + + /** writes the line to the specified PrintWriter */ + public void println() throws IOException { + writer.newLine(); + } + + public void setSQL(boolean sql) { + this.xmlSQL = sql; + } +} diff --git a/src/org/rapla/components/xmlbundle/CompoundI18n.java b/src/org/rapla/components/xmlbundle/CompoundI18n.java new file mode 100644 index 0000000..3b63502 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/CompoundI18n.java @@ -0,0 +1,84 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle; + +import java.net.URL; +import java.text.MessageFormat; +import java.util.Locale; +import java.util.MissingResourceException; + +import javax.swing.ImageIcon; +/** Allows the combination of two resource-bundles. + First the inner bundle will be searched. + If the requested resource was not found the + outer bundle will be searched. + */ +public class CompoundI18n implements I18nBundle { + I18nBundle inner; + I18nBundle outer; + public CompoundI18n(I18nBundle inner,I18nBundle outer) { + this.inner = inner; + this.outer = outer; + } + + public String format(String key,Object obj1) { + Object[] array1 = new Object[1]; + array1[0] = obj1; + return format(key,array1); + } + + public String format(String key,Object obj1,Object obj2) { + Object[] array2 = new Object[2]; + array2[0] = obj1; + array2[1] = obj2; + return format(key,array2); + } + + public String format(String key,Object[] obj) { + MessageFormat msg = new MessageFormat(getString(key)); + return msg.format(obj); + } + + public ImageIcon getIcon(String key) { + try { + return inner.getIcon(key); + } catch (MissingResourceException ex) { + return outer.getIcon(key); + } + } + + public String getString(String key) { + try { + return inner.getString(key); + } catch (MissingResourceException ex) { + return outer.getString(key); + } + } + + + public URL getResource(String key) { + try { + return inner.getResource(key); + } catch (MissingResourceException ex) { + return outer.getResource(key); + } + } + + public String getLang() { + return inner.getLang(); + } + + public Locale getLocale() { + return inner.getLocale(); + } +} diff --git a/src/org/rapla/components/xmlbundle/DEPENDENCIES b/src/org/rapla/components/xmlbundle/DEPENDENCIES new file mode 100644 index 0000000..2fac2f4 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/DEPENDENCIES @@ -0,0 +1,7 @@ +This component depends on the following packages (including subpackages): +java.* +javax.xml.* +javax.swing.Icon +org.xml.sax.* +org.rapla.components.util.* +org.apache.avalon.framework.* diff --git a/src/org/rapla/components/xmlbundle/I18nBundle.java b/src/org/rapla/components/xmlbundle/I18nBundle.java new file mode 100644 index 0000000..8d28430 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/I18nBundle.java @@ -0,0 +1,67 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle; + +import java.net.URL; +import java.util.Locale; +import java.util.MissingResourceException; + +import javax.swing.ImageIcon; + +/**The interface provides access to a resourcebundle that + can be defined in XML or as an java-object. +Example Usage: +
    +   I18nBundle i18n = (I18nBundle)serviceManager.lookup(I18nBundle.ROLE);
    +   i18n.getString("yes"); // will get the translation for yes.
    +
    +*/ + +public interface I18nBundle { + String ROLE = I18nBundle.class.getName(); + /** same as format(key,new Object[] {obj1}); + @see #format(String,Object[]) + */ + String format(String key,Object obj1) throws MissingResourceException; + /** same as format(key,new Object[] {obj1, obj2}); + @see #format(String,Object[]) + */ + String format(String key,Object obj1,Object obj2) throws MissingResourceException; + /** same as + + (new MessageFormat(getString(key))).format(obj); + + @see java.text.MessageFormat + */ + String format(String key,Object[] obj) throws MissingResourceException; + + /** returns the specified icon from the image-resource-file. + @throws MissingResourceException if not found or can't be loaded. + */ + ImageIcon getIcon(String key) throws MissingResourceException; + + /** returns the specified string from the selected resource-file. + @throws MissingResourceException if not found or can't be loaded. + */ + String getString(String key) throws MissingResourceException; + + /** returns the URL of a resource, with the specified key. Use this method to directly + * access the Image Resources instead of creating an Icon.*/ + URL getResource(String key) throws MissingResourceException; + + /** @return the selected language. */ + String getLang(); + + /** @return the selected Locale. */ + Locale getLocale(); +} diff --git a/src/org/rapla/components/xmlbundle/LocaleChangeEvent.java b/src/org/rapla/components/xmlbundle/LocaleChangeEvent.java new file mode 100644 index 0000000..f60a9c0 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/LocaleChangeEvent.java @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle; +import java.util.EventObject; +import java.util.Locale; +public class LocaleChangeEvent extends EventObject{ + private static final long serialVersionUID = 1L; + + Locale locale; + public LocaleChangeEvent(Object source,Locale locale) { + super(source); + this.locale = locale; + } + public Locale getLocale() { + return locale; + } +} diff --git a/src/org/rapla/components/xmlbundle/LocaleChangeListener.java b/src/org/rapla/components/xmlbundle/LocaleChangeListener.java new file mode 100644 index 0000000..91baf1c --- /dev/null +++ b/src/org/rapla/components/xmlbundle/LocaleChangeListener.java @@ -0,0 +1,17 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle; +import java.util.EventListener; +public interface LocaleChangeListener extends EventListener{ + void localeChanged(LocaleChangeEvent evt); +} diff --git a/src/org/rapla/components/xmlbundle/LocaleSelector.java b/src/org/rapla/components/xmlbundle/LocaleSelector.java new file mode 100644 index 0000000..cf44b34 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/LocaleSelector.java @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle; + +import java.util.Locale; + + +/** If you want to change the locales during runtime put a LocaleSelector + in the base-context. Instances of I18nBundle will then register them-self + as {@link LocaleChangeListener LocaleChangeListeners}. Change the locale + with {@link #setLocale} and all bundles will try to load the appropriate resources. + */ +public interface LocaleSelector { + String ROLE = LocaleSelector.class.getName(); + + void addLocaleChangeListener(LocaleChangeListener listener); + + void removeLocaleChangeListener(LocaleChangeListener listener); + + void setLocale(Locale locale); + + Locale getLocale(); + + void setLanguage(String language); + + void setCountry(String country); + + String getLanguage(); + +} diff --git a/src/org/rapla/components/xmlbundle/impl/DictionaryEntry.java b/src/org/rapla/components/xmlbundle/impl/DictionaryEntry.java new file mode 100644 index 0000000..a3f0376 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/impl/DictionaryEntry.java @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.xmlbundle.impl; +import java.util.*; + +class DictionaryEntry { + String key; + Map translations = new TreeMap(); + + public DictionaryEntry(String key) { + this.key = key; + } + public void add(String lang,String value) { + translations.put(lang,value); + } + + public String getKey() { + return key; + } + + public String get(String lang) { + return (String) translations.get(lang); + } + + public String get(String lang,String defaultLang) { + Object content = translations.get(lang); + if ( content == null) { + content = translations.get(defaultLang); + } // end of if () + + if ( content == null) { + Iterator it = translations.values().iterator(); + content = it.next(); + } + return (String) content; + } + + public String[] availableLanguages() { + String[] result = new String[translations.keySet().size()]; + Iterator it = translations.keySet().iterator(); + int i = 0; + while ( it.hasNext()) { + result[i++] = (String) it.next(); + } + return result; + } + +} + + diff --git a/src/org/rapla/components/xmlbundle/impl/I18nBundleImpl.java b/src/org/rapla/components/xmlbundle/impl/I18nBundleImpl.java new file mode 100644 index 0000000..c2bfb31 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/impl/I18nBundleImpl.java @@ -0,0 +1,566 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle.impl; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Method; +import java.net.URL; +import java.text.MessageFormat; +import java.util.Collections; +import java.util.Locale; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.PropertyResourceBundle; +import java.util.ResourceBundle; +import java.util.TreeMap; + +import javax.swing.ImageIcon; + +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.IOUtil; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.LocaleChangeEvent; +import org.rapla.components.xmlbundle.LocaleChangeListener; +import org.rapla.components.xmlbundle.LocaleSelector; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +/** The default implementation of the xmlbundle component allows reading from + a compiled ResourceBundle as well as directly from the source-xml-file. +

    + Sample Configuration 1: (Resources are loaded from the compiled ResourceBundles) +

    + <resource-bundle id="org.rapla.RaplaResources"/>
    + 
    +

    +

    + Sample Configuration 2: (Resources will be loaded directly from the resource-file) +

    + <resource-bundle id="org.rapla.plugin.periodwizard.WizardResources">
    + <file>/home/christopher/Rapla/src/org/rapla/periodwizard/WizardResources.xml</file>
    + </resource-bundle>
    + 
    +

    +

    + This class looks for a LocaleSelector on the context and registers itself as + a LocaleChangeListener and switches to the new Locale on a LocaleChangeEvent. +

    + @see TranslationParser + @see LocaleSelector + */ + +public class I18nBundleImpl implements I18nBundle, LocaleChangeListener, Disposable +{ + String className; + String dictionaryFile; + Locale locale; + Logger logger = null; + I18nBundle m_parentBundle; + LocaleSelectorImpl m_localeSelector; + + Map stringCache = Collections.synchronizedMap( new TreeMap() ); + Map iconCache = Collections.synchronizedMap( new TreeMap() ); + ResourceBundle resourceBundle; + RaplaDictionary dict; + String parentId = null; + + /** + * @throws RaplaException when the resource-file is missing or can't be accessed + or can't be parsed + */ + public I18nBundleImpl( RaplaContext serviceManager, Configuration config, Logger logger ) throws RaplaException + { + enableLogging( logger ); + dictionaryFile = config.getChild( "file" ).getValue( null ); + try + { + if ( dictionaryFile == null ) + { + className = config.getChild( "classname" ).getValue( null ); + if ( className == null ) + className = config.getAttribute( "id" ); + else + className = className.trim(); + } + + if ( dictionaryFile != null ) + { + try + { + TranslationParser parser = new TranslationParser(); + String path = new File( dictionaryFile ).getCanonicalPath(); + getLogger().info( "getting lanaguageResources from " + path ); + dict = parser.parse( new FileInputStream( new File( dictionaryFile ) ) ); + } + finally + { + + } + } + } + catch ( Exception ex ) + { + throw new RaplaException( ex ); + } + + m_localeSelector = ( (LocaleSelectorImpl) serviceManager.lookup( LocaleSelector.ROLE ) ); + + if ( m_localeSelector != null ) + { + m_localeSelector.addLocaleChangeListenerFirst( this ); + setLocale( m_localeSelector.getLocale() ); + } + else + { + setLocale( Locale.getDefault() ); + } + + try + { + parentId = lookup( TranslationParser.PARENT_BUNDLE_IDENTIFIER ); + } + catch ( MissingResourceException ex ) + { + } + + if ( parentId != null ) + { + m_parentBundle = (I18nBundle) serviceManager.lookup( I18nBundle.ROLE + "/" + parentId ); + } + } + + public String getParentId() + { + return parentId; + } + + public static Configuration createConfig( String resourceFile ) + { + DefaultConfiguration config = new DefaultConfiguration( "component", "auto-configuration of " + resourceFile ); + config.setAttribute( "id", resourceFile.toString() ); + return config; + } + + /* + private void init(I18nBundle parentBundle,LocaleSelector ) { + if (m_localeSelector != null) { + m_localeSelector.addLocaleChangeListenerFirst(this); + setLocale(m_localeSelector.getLocale()); + } else { + setLocale(Locale.getDefault()); + } + } + */ + + public void dispose() + { + if ( m_localeSelector != null ) + m_localeSelector.removeLocaleChangeListener( this ); + } + + public void localeChanged( LocaleChangeEvent evt ) + { + try + { + setLocale( evt.getLocale() ); + } + catch ( Exception ex ) + { + getLogger().error( "Can't set new locale " + evt.getLocale(), ex ); + } + } + + public void enableLogging( Logger logger ) + { + this.logger = logger; + } + + protected Logger getLogger() + { + return logger; + } + + public String format( String key, Object obj1 ) + { + Object[] array1 = new Object[1]; + array1[0] = obj1; + return format( key, array1 ); + } + + public String format( String key, Object obj1, Object obj2 ) + { + Object[] array2 = new Object[2]; + array2[0] = obj1; + array2[1] = obj2; + return format( key, array2 ); + } + + public String format( String key, Object[] obj ) + { + MessageFormat msg = new MessageFormat( getString( key ) ); + return msg.format( obj ); + } + + private final byte[] loadResource( String fileName ) throws IOException + { + return IOUtil.readBytes( getResourceFromFile( fileName ) ); + } + + private URL getResourceFromFile( String fileName ) throws IOException + { + URL resource = null; + String base; + if ( dict == null ) + { + base = resourceBundle.getClass().getName(); + resource = resourceBundle.getClass().getResource( fileName ); + } + else + { + base = ( new File( dictionaryFile ) ).getParent(); + if ( getLogger().isDebugEnabled() ) + getLogger().debug( "Looking for resourcefile " + fileName + " in directory " + base ); + File resourceFile = new File( base, fileName ); + if ( resourceFile.exists() ) + resource = resourceFile.toURI().toURL(); + } + if ( resource == null ) + throw new IOException( "File '" + + fileName + + "' not found. " + + " in bundle " + + className + + " It must be in the same location as '" + + base + + "'" ); + return resource; + } + + public URL getResource( String key ) throws MissingResourceException + { + String resourceFile; + try + { + resourceFile = lookup( key ); + } + catch ( MissingResourceException ex ) + { + if ( m_parentBundle != null ) + return m_parentBundle.getResource( key ); + throw ex; + } + try + { + return getResourceFromFile( resourceFile ); + } + catch ( Exception ex ) + { + String message = "Resourcefile " + resourceFile + " not found: " + ex.getMessage(); + getLogger().error( message ); + throw new MissingResourceException( message, className, key ); + } + + } + + public ImageIcon getIcon( String key ) throws MissingResourceException + { + String iconfile; + try + { + iconfile = lookup( key ); + } + catch ( MissingResourceException ex ) + { + if ( m_parentBundle != null ) + return m_parentBundle.getIcon( key ); + throw ex; + } + try + { + ImageIcon icon = (ImageIcon) iconCache.get( iconfile ); + if ( icon == null ) + { + icon = new ImageIcon( loadResource( iconfile ), key ); + iconCache.put( iconfile, icon ); + } // end of if () + return icon; + } + catch ( Exception ex ) + { + String message = "Icon " + iconfile + " can't be created: " + ex.getMessage(); + getLogger().error( message ); + throw new MissingResourceException( message, className, key ); + } + } + + public Locale getLocale() + { + if ( locale == null ) + throw new IllegalStateException( "Call setLocale first!" ); + return locale; + } + + public String getLang() + { + if ( locale == null ) + throw new IllegalStateException( "Call setLocale first!" ); + return locale.getLanguage(); + } + + /** this method imitates the orginal + * ResourceBundle.getBundle(String className,Locale + * locale) which causes problems when the locale is changed + * to the base locale (english). For a full description see + * ResourceBundle.getBundle(String className) in the java-api.*/ + protected ResourceBundle loadResourceBundle( String className, Locale locale ) + { + String tries[] = new String[7]; + StringBuffer buf = new StringBuffer(); + tries[6] = className; + buf.append( className ); + if ( locale.getLanguage().length() > 0 ) + { + buf.append( '_' ); + buf.append( locale.getLanguage() ); + tries[2] = buf.toString(); + } + if ( locale.getCountry().length() > 0 ) + { + buf.append( '_' ); + buf.append( locale.getCountry() ); + tries[1] = buf.toString(); + } + if ( locale.getVariant().length() > 0 ) + { + buf.append( '_' ); + buf.append( locale.getVariant() ); + tries[0] = buf.toString(); + } + buf.delete( className.length(), buf.length() - 1 ); + Locale defaultLocale = Locale.getDefault(); + if ( defaultLocale.getLanguage().length() > 0 ) + { + buf.append( defaultLocale.getLanguage() ); + tries[5] = buf.toString(); + } + if ( defaultLocale.getCountry().length() > 0 ) + { + buf.append( '_' ); + buf.append( defaultLocale.getCountry() ); + tries[4] = buf.toString(); + } + if ( defaultLocale.getVariant().length() > 0 ) + { + buf.append( '_' ); + buf.append( defaultLocale.getVariant() ); + tries[3] = buf.toString(); + } + + ResourceBundle bundle = null; + for ( int i = 0; i < tries.length; i++ ) + { + if ( tries[i] == null ) + continue; + bundle = loadBundle( tries[i] ); + if ( bundle != null ) + { + loadParent( tries, i, bundle ); + return bundle; + } + } + throw new MissingResourceException( "'" + className + "' not found. The resource-file is missing.", className, + "" ); + } + + private String getPropertyFileNameFromClassName( String classname ) + { + StringBuffer result = new StringBuffer( classname ); + for ( int i = 0; i < result.length(); i++ ) + { + if ( result.charAt( i ) == '.' ) + result.setCharAt( i, '/' ); + } + result.insert( 0, '/' ); + result.append( ".properties" ); + return result.toString(); + } + + private ResourceBundle loadBundle( String name ) + { + try + { + getLogger().debug( "Trying to load bundle " + name ); + String pathName = getPropertyFileNameFromClassName( name ); + InputStream io = this.getClass().getResourceAsStream( pathName ); + if ( io != null ) + { + return new PropertyResourceBundle( io ); + } + ResourceBundle bundle = (ResourceBundle) Class.forName( name ).newInstance(); + getLogger().debug( "Bundle found " + name ); + return bundle; + } + catch ( Exception ex ) + { + return null; + } + catch ( ClassFormatError ex ) + { + return null; + } + } + + private void loadParent( String[] tries, int i, ResourceBundle bundle ) + { + ResourceBundle parent = null; + if ( i == 0 || i == 3 ) + { + parent = loadBundle( tries[i++] ); + if ( parent != null ) + setParent( bundle, parent ); + bundle = parent; + } + if ( i == 1 || i == 4 ) + { + parent = loadBundle( tries[i++] ); + if ( parent != null ) + setParent( bundle, parent ); + bundle = parent; + } + if ( i == 2 || i == 5 ) + { + parent = loadBundle( tries[6] ); + if ( parent != null ) + setParent( bundle, parent ); + } + } + + private void setParent( ResourceBundle bundle, ResourceBundle parent ) + { + try + { + Method method = bundle.getClass().getMethod( "setParent", new Class[] + { ResourceBundle.class } ); + method.invoke( bundle, new Object[] + { parent } ); + } + catch ( Exception ex ) + { + } + } + + private String lookup( String key ) throws MissingResourceException + { + if ( dict == null ) + { + return resourceBundle.getString( key ); + } + else + { + String result = dict.lookup( key, getLang() ); + if ( result != null ) + return result; + String message = "Can't find resourcestring " + key + " in class " + className; + throw new MissingResourceException( message, className, key ); + } // end of else + } + + public String getString( String key ) throws MissingResourceException + { + String result = (String) stringCache.get( key ); + if ( result != null ) + return result; + result = getUncachedString( key ); + stringCache.put( key, result ); + return result; + } + + private String getUncachedString( String key ) throws MissingResourceException + { + String result; + try + { + result = lookup( key ); + } + catch ( MissingResourceException ex ) + { + if ( m_parentBundle != null ) + return m_parentBundle.getString( key ); + throw ex; + } + + if ( getLogger() != null && getLogger().isDebugEnabled() ) + getLogger().debug( "string requested: " + result ); + + return filterXHTML( result ); + } + + public I18nBundle getParentBundle() + { + return m_parentBundle; + } + + /* replaces XHTML with HTML because swing can't display proper XHTML*/ + String filterXHTML( String text ) + { + if ( text.indexOf( "
    " ) >= 0 ) + { + return applyXHTMLFilter( text ); + } + else + { + return text; + } // end of else + } + + public static String replaceAll( String text, String token, String with ) + { + StringBuffer buf = new StringBuffer(); + int i = 0; + int lastpos = 0; + while ( ( i = text.indexOf( token, lastpos ) ) >= 0 ) + { + if ( i > 0 ) + buf.append( text.substring( lastpos, i ) ); + buf.append( with ); + i = ( lastpos = i + token.length() ); + } // end of if () + buf.append( text.substring( lastpos, text.length() ) ); + return buf.toString(); + } + + private String applyXHTMLFilter( String text ) + { + return replaceAll( text, "
    ", "

    " ); + } + + public void setLocale( Locale locale ) + { + this.locale = locale; + stringCache.clear(); + iconCache.clear(); + getLogger().debug( "Locale changed to " + locale ); + if ( dict == null ) + { + resourceBundle = loadResourceBundle( className, locale ); + //resourceBundle = ResourceBundle.getBundle(className, locale); + } + } + +} diff --git a/src/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.java b/src/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.java new file mode 100644 index 0000000..fe7a4f7 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/impl/LocaleSelectorImpl.java @@ -0,0 +1,86 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle.impl; + +import java.util.Locale; +import java.util.Vector; + +import org.rapla.components.xmlbundle.LocaleChangeEvent; +import org.rapla.components.xmlbundle.LocaleChangeListener; +import org.rapla.components.xmlbundle.LocaleSelector; + + +/** If you want to change the locales during runtime put a LocaleSelector + in the base-context. Instances of {@link I18nBundleImpl} will then register them-self + as {@link LocaleChangeListener LocaleChangeListeners}. Change the locale + with {@link #setLocale} and all bundles will try to load the appropriate resources. + */ +public class LocaleSelectorImpl implements LocaleSelector { + public static final String ROLE = LocaleSelectorImpl.class.getName(); + Locale locale; + Vector localeChangeListeners = new Vector(); + + public LocaleSelectorImpl() { + locale = Locale.getDefault(); + } + + public void addLocaleChangeListener(LocaleChangeListener listener) { + localeChangeListeners.add(listener); + } + public void removeLocaleChangeListener(LocaleChangeListener listener) { + localeChangeListeners.remove(listener); + } + + public void setLocale(Locale locale) { + this.locale = locale; + fireLocaleChanged(); + } + + public Locale getLocale() { + return this.locale; + } + + public LocaleChangeListener[] getLocaleChangeListeners() { + return (LocaleChangeListener[])localeChangeListeners.toArray(new LocaleChangeListener[]{}); + } + + public void setLanguage(String language) { + setLocale(new Locale(language,locale.getCountry())); + } + + public void setCountry(String country) { + setLocale(new Locale(locale.getLanguage(),country)); + } + + public String getLanguage() { + return locale.getLanguage(); + } + + protected void fireLocaleChanged() { + if (localeChangeListeners.size() == 0) + return; + LocaleChangeListener[] listeners = getLocaleChangeListeners(); + LocaleChangeEvent evt = new LocaleChangeEvent(this,getLocale()); + for (int i=0;i0 && i> 4) & 0x0f], hexDigit[b & 0x0f] }; + return new String(array); + } + + static public String charToHex(char c) { + // Returns hex String representation of char c + byte hi = (byte) (c >>> 8); + byte lo = (byte) (c & 0xff); + return byteToHex(hi) + byteToHex(lo); + } + + private String convertToJava(String text) { + StringBuffer result = new StringBuffer(); + for ( int i = 0;i< text.length();i++) { + char c = text.charAt(i); + + switch ( c) { + case '\n': // LineBreaks + result.append("\" \n + \""); + break; + case '\\': // \ + result.append("\\\\"); + break; + case '\"': // " + result.append("\\\""); + break; + default: + if ( (int)c > 127) { + result.append("\\u" + charToHex(c)); + } else { + result.append(c); + } // end of else + break; + } // end of switch () + } // end of for () + return result.toString(); + } + +} + + diff --git a/src/org/rapla/components/xmlbundle/impl/TranslationParser.java b/src/org/rapla/components/xmlbundle/impl/TranslationParser.java new file mode 100644 index 0000000..58a57bb --- /dev/null +++ b/src/org/rapla/components/xmlbundle/impl/TranslationParser.java @@ -0,0 +1,398 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.xmlbundle.impl; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.HashSet; +import java.util.Set; +import java.util.Stack; + +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.Assert; +import org.rapla.components.util.IOUtil; +import org.rapla.components.util.xml.XMLReaderAdapter; +import org.xml.sax.Attributes; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.DefaultHandler; + +/** This class reads *Resources.xml files and generates + the appropriate ResourceBundle java-files. +
    + Usage :
    + org.rapla.components.xmlbundle.TranslationParser PATH_TO_SOURCES [DESTINATION_PATH]
    +
    + Note: a xml-parser must be on your classpath.
    +
    + Example usage under windows:
    + java -classpath lib\saxon.jar;lib\fortress.jar;build\classes org.rapla.components.xmlbundle.TranslationParser src
    + 
    + + */ +public class TranslationParser extends DefaultHandler +{ + RaplaDictionary dict; + DictionaryEntry currentEntry = null; + String currentLang = null; + String defaultLang = null; + String currentIconSrc = null; + + static Logger log = new ConsoleLogger( ConsoleLogger.LEVEL_INFO ); + int level = 0; + + // used to store the nested content in the translation element + StringBuffer charBuffer; + XMLReader xmlReader; + /** The translation parser will add an extra identifer {$i18nbundle_parent$} to + the translation table if a parentbundle is specified. + */ + public final static String PARENT_BUNDLE_IDENTIFIER = "{$i18nbundle_parent$}"; + DefaultHandler handler = new DefaultHandler() + { + public InputSource resolveEntity( String publicId, String systemId ) throws SAXException + { + if ( systemId.endsWith( "resources.dtd" ) ) + { + try + { + URL resource = getClass().getResource( "/org/rapla/components/xmlbundle/resources.dtd" ); + Assert.notNull( resource, "resources.dtd not found on classpath" ); + return new InputSource( IOUtil.getInputStream( resource ) ); + } + catch ( IOException ex ) + { + throw new SAXException( ex ); + } + } + else + { + // use the default behaviour + try + { + return super.resolveEntity( publicId, systemId ); + } + catch ( SAXException ex ) + { + throw ex; + } + catch ( Exception ex ) + { + throw new SAXException( ex ); + } + } + } + + public void startElement( String uri, String name, String qName, Attributes atts ) throws SAXException + { + if ( log.isDebugEnabled() ) + log.debug( indent() + "Start element: " + qName + "(" + name + ")" ); + + level: + { + if ( name.equals( "resources" ) ) + { + String defaultLang = atts.getValue( "", "default" ); + String parentDict = atts.getValue( "", "parent" ); + dict = new RaplaDictionary( defaultLang ); + if ( parentDict != null && parentDict.trim().length() > 0 ) + { + DictionaryEntry entry = new DictionaryEntry( PARENT_BUNDLE_IDENTIFIER ); + entry.add( "en", parentDict.trim() ); + try + { + dict.addEntry( entry ); + } + catch ( UniqueKeyException ex ) + { + //first entry must be unique + } + } + break level; + } + + if ( name.equals( "entry" ) ) + { + String key = atts.getValue( "", "key" ); + currentEntry = new DictionaryEntry( key ); + break level; + } + + if ( name.equals( "text" ) ) + { + currentLang = atts.getValue( "", "lang" ); + if ( currentLang == null ) + currentLang = dict.getDefaultLang();; + charBuffer = new StringBuffer(); + break level; + } + + if ( name.equals( "icon" ) ) + { + currentLang = atts.getValue( "", "lang" ); + if ( currentLang == null ) + currentLang = dict.getDefaultLang(); + currentIconSrc = atts.getValue( "", "src" ); + charBuffer = new StringBuffer(); + break level; + } + + // copy startag + if ( charBuffer != null ) + { + copyStartTag( name, atts ); + } + } + level++; + } + + public void endElement( String uri, String name, String qName ) throws SAXException + { + level--; + if ( log.isDebugEnabled() ) + log.debug( indent() + "End element: " + qName + "(" + name + ")" ); + + level: + { + if ( name.equals( "icon" ) ) + { + if ( currentIconSrc != null ) + currentEntry.add( currentLang, currentIconSrc ); + break level; + } + + if ( name.equals( "text" ) ) + { + removeWhiteSpaces( charBuffer ); + currentEntry.add( currentLang, charBuffer.toString() ); + break level; + } + + if ( name.equals( "entry" ) ) + { + try + { + dict.addEntry( currentEntry ); + } + catch ( UniqueKeyException e ) + { + throw new SAXException( e.getMessage() ); + } // end of try-catch + currentEntry = null; + break level; + } + + // copy endtag + if ( charBuffer != null ) + { + copyEndTag( name ); + } // end of if () + } + } + + public void characters( char ch[], int start, int length ) + { + // copy nested content + if ( charBuffer != null ) + { + charBuffer.append( ch, start, length ); + } // end of if () + } + }; + + TranslationParser() throws ConfigurationException + { + super(); + try + { + xmlReader = XMLReaderAdapter.createXMLReader( false ); + xmlReader.setContentHandler( handler ); + xmlReader.setErrorHandler( handler ); + xmlReader.setDTDHandler( handler ); + xmlReader.setEntityResolver( handler ); + } + catch ( SAXException ex ) + { + if ( ex.getException() != null ) + { + throw new ConfigurationException( "", ex.getException() ); + } + else + { + throw new ConfigurationException( "", ex ); + } // end of else + } + } + + RaplaDictionary parse( InputStream in ) throws IOException, SAXException + { + dict = null; + xmlReader.parse( new InputSource( in ) ); + checkDict(); + return dict; + } + + RaplaDictionary parse( String systemID ) throws IOException, SAXException + { + dict = null; + xmlReader.parse( systemID ); + checkDict(); + return dict; + } + + private void checkDict() throws IOException + { + if ( dict == null ) + { + throw new IOException( "Dictionary file empty " ); + } + } + + private void copyStartTag( String name, Attributes atts ) + { + charBuffer.append( '<' ); + charBuffer.append( name ); + for ( int i = 0; i < atts.getLength(); i++ ) + { + charBuffer.append( ' ' ); + charBuffer.append( atts.getLocalName( i ) ); + charBuffer.append( '=' ); + charBuffer.append( '\"' ); + charBuffer.append( atts.getValue( i ) ); + charBuffer.append( '\"' ); + } + charBuffer.append( '>' ); + } + + private void copyEndTag( String name ) + { + if ( ( charBuffer != null ) + && ( charBuffer.length() > 0 ) + && ( charBuffer.charAt( charBuffer.length() - 1 ) == '>' ) ) + { + // --> + charBuffer.insert( charBuffer.length() - 1, "/" ); + } + else + { + // + charBuffer.append( "" ); + } // end of else + + } + + private void removeWhiteSpaces( StringBuffer buf ) + { + for ( int i = 1; i < buf.length(); i++ ) + { + if ( ( buf.charAt( i ) == ' ' ) && ( buf.charAt( i - 1 ) == ' ' ) ) + buf.deleteCharAt( --i ); + } // end of for () + } + + private String indent() + { + StringBuffer buffer = new StringBuffer(); + for ( int i = 0; i <= level; i++ ) + buffer.append( ' ' ); + return buffer.toString(); + } + + public static final String USAGE = new String( "Usage : \n" + + "PATH_TO_SOURCES [DESTINATION_PATH]\n" + + "Note: a xml-parser must be on your classpath.\n" + + "Example usage under windows:\n" + + "java -classpath lib\\saxon.jar;lib\\fortress.jar;build\\classes " + + "org.rapla.components.xmlbundle.TranslationParser " + + "src \n" ); + + public static void processDir( String srcDir, String destDir ) throws IOException, SAXException, + ConfigurationException + { + TranslationParser parser = new TranslationParser(); + ResourceFileGenerator generator = new ResourceFileGenerator(); + Set languages = new HashSet(); + Stack stack = new Stack(); + File topDir = new File( srcDir ); + stack.push( topDir ); + while ( !stack.empty() ) + { + File file = (File) stack.pop(); + if ( file.isDirectory() ) + { + // System.out.println("Checking Dir: " + file.getName()); + File[] files = file.listFiles(); + for ( int i = 0; i < files.length; i++ ) + stack.push( files[i] ); + } + else + { + // System.out.println("Checking File: " + file.getName()); + if ( file.getName().endsWith( "Resources.xml" ) ) + { + String absolut = file.getAbsolutePath(); + System.out.println( "Transforming source:" + file ); + String relativePath = absolut.substring( topDir.getAbsolutePath().length() ); + String prefix = file.getName().substring( 0, file.getName().length() - "Resources.xml".length() ); + String pathName = relativePath.substring( 0, relativePath.indexOf( file.getName() ) ); + RaplaDictionary dict = parser.parse( file.toURI().toURL().toExternalForm() ); + + File dir = new File( destDir, pathName ); + System.out.println( "destination:" + dir ); + dir.mkdirs(); + + String packageName = ResourceFileGenerator.toPackageName( pathName ); + generator.transform( dict, packageName, prefix + "Resources", "en", dir ); + String[] langs = dict.getAvailableLanguages(); + for ( int i = 0; i < langs.length; i++ ) + languages.add( langs[i] ); + } + } + } + } + + public static void main( String[] args ) + { + try + { + if ( args.length < 1 ) + { + System.out.println( USAGE ); + return; + } // end of if () + + String sourceDir = args[0]; + String destDir = ( args.length > 1 ) ? args[1] : sourceDir; + processDir( sourceDir, destDir ); + + } + catch ( SAXParseException ex ) + { + log.error( "Line:" + ex.getLineNumber() + " Column:" + ex.getColumnNumber() + " " + ex.getMessage(), ex ); + System.exit( 1 ); + } + catch ( Throwable e ) + { + log.error( e.getMessage(), e ); + System.exit( 1 ); + } + } // end of main () + +} diff --git a/src/org/rapla/components/xmlbundle/impl/UniqueKeyException.java b/src/org/rapla/components/xmlbundle/impl/UniqueKeyException.java new file mode 100644 index 0000000..c0417cb --- /dev/null +++ b/src/org/rapla/components/xmlbundle/impl/UniqueKeyException.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.components.xmlbundle.impl; + +/** thrown by the RaplaDictionary when a duplicated entry is found */ +class UniqueKeyException extends Exception { + private static final long serialVersionUID = 1L; + + public UniqueKeyException(String text) { + super(text); + } +} + diff --git a/src/org/rapla/components/xmlbundle/package.html b/src/org/rapla/components/xmlbundle/package.html new file mode 100644 index 0000000..f0624d0 --- /dev/null +++ b/src/org/rapla/components/xmlbundle/package.html @@ -0,0 +1,10 @@ + +

    Components for storing locale-specific resources in xml-files. +Java Resource-Bundles can be created automatically. +

    +

    +For adding a new language to Rapla take a look at resources.xml. +

    +@see rapla.sourceforge.net + + diff --git a/src/org/rapla/components/xmlbundle/resources.dtd b/src/org/rapla/components/xmlbundle/resources.dtd new file mode 100644 index 0000000..407c87b --- /dev/null +++ b/src/org/rapla/components/xmlbundle/resources.dtd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/org/rapla/entities/Annotatable.java b/src/org/rapla/entities/Annotatable.java new file mode 100644 index 0000000..c93f58a --- /dev/null +++ b/src/org/rapla/entities/Annotatable.java @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; + + + +public interface Annotatable { + void setAnnotation(String key, String annotation) throws IllegalAnnotationException; + String getAnnotation(String key); + String getAnnotation(String key, String defaultValue); + String[] getAnnotationKeys(); +} + + + + diff --git a/src/org/rapla/entities/Category.java b/src/org/rapla/entities/Category.java new file mode 100644 index 0000000..8dda440 --- /dev/null +++ b/src/org/rapla/entities/Category.java @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; +import java.util.Locale; + +/** Hierarchical categorization of information. + * Categories can be used as attribute values. + * @see org.rapla.entities.dynamictype.Attribute + */ +public interface Category extends MultiLanguageNamed,Entity,RaplaObject, Annotatable +{ + final RaplaType TYPE = new RaplaType(Category.class, "category"); + + /** add a sub-category. + * This category is set as parent of the passed category.*/ + void addCategory(Category category); + /** remove a sub-category */ + void removeCategory(Category category); + /** returns all subcategories */ + Category[] getCategories(); + /** returns the subcategory with the specified key. + * null if subcategory was not found. */ + Category getCategory(String key); + /** find a sub-category in that equals the specified category. */ + Category findCategory(Category copy); + /** Returns the parent of this category or null if the category has no parent.*/ + Category getParent(); + /** returns true if the passed category is a direct child of this category */ + boolean hasCategory(Category category); + /** set the key of the category. The can be used in the getCategory() method for lookup. */ + void setKey(String key); + /** returns the key of the category */ + String getKey(); + /** returns true this category is an ancestor + * (parent or parent of parent, ...) of the specified + * category */ + boolean isAncestorOf(Category category); + /** returns the path form the rootCategory to this category. + * Path elements are the category-names in the selected locale separated + * with the / operator. If the rootCategory is null the path will be calculated + * to the top-most parent. + * Example: area51/aliencell + */ + String getPath(Category rootCategory,Locale locale); + + /** returns the number of ancestors. + * (How many Time you must call getParent() until you receive null) */ + int getDepth(); + + Category[] CATEGORY_ARRAY = new Category[0]; +} diff --git a/src/org/rapla/entities/CategoryAnnotations.java b/src/org/rapla/entities/CategoryAnnotations.java new file mode 100644 index 0000000..c4e57e3 --- /dev/null +++ b/src/org/rapla/entities/CategoryAnnotations.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; + +public interface CategoryAnnotations{ + String KEY_NAME_COLOR="color"; +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/DependencyException.java b/src/org/rapla/entities/DependencyException.java new file mode 100644 index 0000000..ea5ac6a --- /dev/null +++ b/src/org/rapla/entities/DependencyException.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; +import java.util.Collection; + +import org.rapla.framework.RaplaException; + +public class DependencyException extends RaplaException { + private static final long serialVersionUID = 1L; + + Collection dependentObjects; + public DependencyException(Collection dependentObjectsNames) { + super("Dependencies exist for this objects"); + this.dependentObjects = dependentObjectsNames; + } + + public Collection getDependencies() { + return dependentObjects; + } +} + + + + + + + diff --git a/src/org/rapla/entities/Entity.java b/src/org/rapla/entities/Entity.java new file mode 100644 index 0000000..87ef71e --- /dev/null +++ b/src/org/rapla/entities/Entity.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; + +public interface Entity extends RaplaObject { + /** To identities are identical, if they represent + the same object. */ + boolean isIdentical(Entity id2); + + /** returns if the instance of the entity is persisant and the cache or just a local copy. + * Persistant objects are usably not editable and are updated in a multiuser system. + * Persistant instances with the same id should therefore have the same content and + * persistant1.isIdentical(persistant2) implies persistant1 == persistant2. + * A non persistant instance has never the same reference as the persistant entity with the same id. + * persistant1.isIdentical(nonPersitant1) implies persistant1 != nonPersistant2. + */ + boolean isPersistant(); + + public static Entity[] ENTITY_ARRAY = new Entity[0]; + +} + + + + + + + diff --git a/src/org/rapla/entities/EntityNotFoundException.java b/src/org/rapla/entities/EntityNotFoundException.java new file mode 100644 index 0000000..cc8a479 --- /dev/null +++ b/src/org/rapla/entities/EntityNotFoundException.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; +import org.rapla.framework.RaplaException; +public class EntityNotFoundException extends RaplaException { + private static final long serialVersionUID = 1L; + + public EntityNotFoundException(String text) + { + super(text); + } +} + + + + + + + diff --git a/src/org/rapla/entities/IllegalAnnotationException.java b/src/org/rapla/entities/IllegalAnnotationException.java new file mode 100644 index 0000000..585a9b7 --- /dev/null +++ b/src/org/rapla/entities/IllegalAnnotationException.java @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; +import org.rapla.framework.RaplaException; + +public class IllegalAnnotationException extends RaplaException { + private static final long serialVersionUID = 1L; + + public IllegalAnnotationException(String text) + { + super(text); + } + public IllegalAnnotationException(String text, Exception ex) + { + super(text, ex); + } +} + + + + + + + diff --git a/src/org/rapla/entities/MultiLanguageName.java b/src/org/rapla/entities/MultiLanguageName.java new file mode 100644 index 0000000..6a5355b --- /dev/null +++ b/src/org/rapla/entities/MultiLanguageName.java @@ -0,0 +1,106 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities; +import java.util.Collection; +import java.util.Iterator; +import java.util.TreeMap; + + + + + +/** Some entities (especially dynamic-types and attributes) + can have multiple names to allow easier reuse of created schemas or + support for multi-language-environments. + @see MultiLanguageNamed +*/ +public class MultiLanguageName implements java.io.Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + private boolean readOnly; + TreeMap mapLocales = new TreeMap(); + + public MultiLanguageName(String language,String translation) { + setName(language,translation); + } + + public MultiLanguageName(String[][] data) { + for (int i=0;i newFilter = new ArrayList(Arrays.asList( filters)); + for (Iterator f=newFilter.iterator();f.hasNext();) { + ClassificationFilter filter = f.next(); + if (filter.getType().equals(type)) + { + f.remove(); + break; + } + } + classificationFilters = newFilter.toArray( ClassificationFilter.CLASSIFICATIONFILTER_ARRAY); + + } + + public ClassificationFilter[] getFilter() { + return classificationFilters; + } + + + +} + + + + + + + diff --git a/src/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.java b/src/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.java new file mode 100644 index 0000000..3c6bcaf --- /dev/null +++ b/src/org/rapla/entities/configuration/internal/CalendarModelConfigurationImpl.java @@ -0,0 +1,167 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ +package org.rapla.entities.configuration.internal; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; + +import org.rapla.components.util.iterator.IteratorChain; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.CannotExistWithoutTypeException; +import org.rapla.entities.storage.DynamicTypeDependant; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; + +/** + * + * @author ckohlhaas + * @version 1.00.00 + * @since 2.03.00 + */ +public class CalendarModelConfigurationImpl extends AbstractClassifiableFilter implements CalendarModelConfiguration, Serializable,EntityReferencer, DynamicTypeDependant { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + RaplaMapImpl selected; + String title; + Date startDate; + Date endDate; + Date selectedDate; + String view; + RaplaMapImpl optionMap; + boolean defaultEventTypes; + boolean defaultResourceTypes; + + public CalendarModelConfigurationImpl( RaplaMap selected, ClassificationFilter[] filter, + boolean defaultResourceTypes, boolean defaultEventTypes,String title, Date startDate, Date endDate, Date selectedDate,String view,RaplaMap extensionMap) { + this.view = view; + this.defaultEventTypes = defaultEventTypes; + this.defaultResourceTypes = defaultResourceTypes; + this.title = title; + this.startDate = startDate; + this.endDate = endDate; + this.selectedDate = selectedDate; + super.setClassificationFilter( filter ); + this.selected = (RaplaMapImpl)selected; + if (selected == null) + { + this.selected = new RaplaMapImpl(); + } + this.optionMap = (RaplaMapImpl)extensionMap; + if (optionMap == null) + { + this.optionMap= new RaplaMapImpl(); + } + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + super.resolveEntities( resolver ); + selected.resolveEntities( resolver ); + optionMap.resolveEntities( resolver ); + } + + + public RaplaType getRaplaType() { + return TYPE; + } + + public Date getStartDate() { + return startDate; + } + + public Date getEndDate() { + return endDate; + } + + public Date getSelectedDate() { + return selectedDate; + } + + public String getTitle() { + return title; + } + + public String getView() { + return view; + } + + public Collection getSelected() { + return selected.values(); + } + + public RaplaMap getSelectedMap() { + return selected; + } + + /** + * @see org.rapla.entities.storage.EntityReferencer#getReferences() + */ + public Iterator getReferences() { + RaplaMapImpl map = (RaplaMapImpl)selected; + return new IteratorChain(super.getReferences(), map.getReferences()); + + } + + /** + * @see org.rapla.entities.storage.EntityReferencer#isRefering(org.rapla.entities.storage.RefEntity) + */ + public boolean isRefering(RefEntity object) { + RaplaMapImpl map = (RaplaMapImpl)selected; + if ( map.isRefering( object ) ) + return true; + if ( super.isRefering(object)) { + return true; + } + return false; + } + + public boolean needsChange(DynamicType type) { + if ( super.needsChange( type )) + return true; + return selected.needsChange( type ); + } + + public void commitChange(DynamicType type) { + super.commitChange( type ); + selected.commitChange( type ); + } + + public void commitRemove(DynamicType type) throws CannotExistWithoutTypeException { + super.commitRemove( type ); + selected.commitRemove( type ); + } + + public RaplaMap getOptionMap() + { + return optionMap; + } + + public boolean isDefaultEventTypes() + { + return defaultEventTypes; + } + + public boolean isDefaultResourceTypes() + { + return defaultResourceTypes; + } + +} diff --git a/src/org/rapla/entities/configuration/internal/PreferencesImpl.java b/src/org/rapla/entities/configuration/internal/PreferencesImpl.java new file mode 100644 index 0000000..097621b --- /dev/null +++ b/src/org/rapla/entities/configuration/internal/PreferencesImpl.java @@ -0,0 +1,238 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.configuration.internal; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; + +import org.rapla.components.util.iterator.FilterIterator; +import org.rapla.components.util.iterator.NestedIterator; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.CannotExistWithoutTypeException; +import org.rapla.entities.storage.DynamicTypeDependant; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; + +public class PreferencesImpl extends SimpleEntity + implements + Preferences + , DynamicTypeDependant + ,Mementable + ,java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + HashMap map = new HashMap(); + + final public RaplaType getRaplaType() {return TYPE;} + + public void putEntry(String role,RaplaObject entry) { + checkWritable(); + if ( entry == null) + { + map.remove( role); + } + else + { + map.put( role ,entry); + } + } + + public void putEntry(String role,String entry) { + checkWritable(); + if ( entry == null) + { + map.remove( role); + } + else + { + map.put( role ,entry); + } + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + super.resolveEntities( resolver); + for (Iterator it = getEntityReferencers();it.hasNext();){ + Object obj = it.next(); + ((EntityReferencer) obj).resolveEntities( resolver); + } + } + + public Object getEntry(String role) { + return map.get( role ); + } + + public boolean hasEntry(String role) { + return map.get( role ) != null; + } + + public String getEntryAsString(String role) { + return (String) map.get( role ); + } + + public String getEntryAsString(String role, String defaultValue) { + String value = getEntryAsString( role); + if ( value != null) + return value; + return defaultValue; + } + + public Iterator getPreferenceEntries() { + return map.keySet().iterator(); + } + + private Iterator getEntityReferencers() { + return new FilterIterator( map.values().iterator()) { + protected boolean isInIterator(Object obj) { + return obj instanceof EntityReferencer; + } + }; + } + + public Iterator getReferences() { + return new NestedIterator( getEntityReferencers() ) { + public Iterator getNestedIterator(Object obj) { + return ((EntityReferencer) obj).getReferences(); + } + }; + } + + public boolean isRefering(RefEntity object) { + for (Iterator it = getEntityReferencers();it.hasNext();) { + final EntityReferencer entityReferencer = (EntityReferencer) it.next(); + if (entityReferencer.isRefering( object)) { + return true; + } + } + return false; + } + + public boolean isEmpty() { + return map.keySet().isEmpty(); + } + + static private void copy(PreferencesImpl source,PreferencesImpl dest) { + dest.map.clear(); + for (Iterator it = source.map.keySet().iterator();it.hasNext();) + { + String role = (String) it.next(); + Object entry = source.map.get( role ); + dest.map.put( role , entry ); + } + } + + public void copy(Object obj) { + super.copy((PreferencesImpl) obj); + copy((PreferencesImpl) obj,this); + } + + public Object deepClone() { + PreferencesImpl clone = new PreferencesImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Object clone() { + PreferencesImpl clone = new PreferencesImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } + + /** + * @see org.rapla.entities.Named#getName(java.util.Locale) + */ + public String getName(Locale locale) { + StringBuffer buf = new StringBuffer(); + if ( getOwner() != null) { + buf.append( "Preferences of "); + buf.append( getOwner().getName( locale)); + } else { + buf.append( "Rapla Preferences!"); + } + return buf.toString(); + } + /* (non-Javadoc) + * @see org.rapla.entities.configuration.Preferences#getEntryAsBoolean(java.lang.String, boolean) + */ + public boolean getEntryAsBoolean(String role, boolean defaultValue) { + String entry = getEntryAsString( role); + if ( entry == null) + return defaultValue; + return Boolean.valueOf(entry).booleanValue(); + } + + /* (non-Javadoc) + * @see org.rapla.entities.configuration.Preferences#getEntryAsInteger(java.lang.String, int) + */ + public int getEntryAsInteger(String role, int defaultValue) { + String entry = getEntryAsString( role); + if ( entry == null) + return defaultValue; + return Integer.parseInt(entry); + } + + public boolean needsChange(DynamicType type) { + for (Iterator it = map.values().iterator();it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof DynamicTypeDependant) { + if (((DynamicTypeDependant) obj).needsChange( type )) + return true; + } + } + return false; + } + + public void commitChange(DynamicType type) { + for (Iterator it = map.values().iterator();it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof DynamicTypeDependant) { + ((DynamicTypeDependant) obj).commitChange( type ); + } + } + } + + + public void commitRemove(DynamicType type) throws CannotExistWithoutTypeException + { + for (Iterator it = map.values().iterator();it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof DynamicTypeDependant) { + ((DynamicTypeDependant) obj).commitRemove( type ); + } + } + } + +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/configuration/internal/RaplaMapImpl.java b/src/org/rapla/entities/configuration/internal/RaplaMapImpl.java new file mode 100644 index 0000000..33af55b --- /dev/null +++ b/src/org/rapla/entities/configuration/internal/RaplaMapImpl.java @@ -0,0 +1,275 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ +package org.rapla.entities.configuration.internal; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.iterator.FilterIterator; +import org.rapla.components.util.iterator.IteratorChain; +import org.rapla.components.util.iterator.NestedIterator; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.ReadOnlyException; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.CannotExistWithoutTypeException; +import org.rapla.entities.storage.DynamicTypeDependant; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.internal.ReferenceHandler; + +public class RaplaMapImpl implements RaplaMap,RaplaObject, Serializable,EntityReferencer, DynamicTypeDependant { + private static final long serialVersionUID = 1; + + private Map map; + private ReferenceHandler referenceHandler = new ReferenceHandler(); + private Map childMap = new HashMap(); + + public RaplaMapImpl() { + this.map = new TreeMap(); + } + + public RaplaMapImpl( Collection list) { + this( makeMap(list) ); + } + + private static Map makeMap(Collection list) { + Map map = new TreeMap(); + int key = 0; + for ( Iterator it = list.iterator();it.hasNext();) { + map.put( new String( String.valueOf(key++)), it.next()); + } + return map; + } + + public RaplaMapImpl( Map map) { + this.map = Collections.unmodifiableMap(map); + for ( Iterator it = this.map.keySet().iterator();it.hasNext();) { + String key = (String)it.next(); + Object o = this.map.get(key ); + if ( ! (o instanceof RaplaObject ) && !(o instanceof String) ) + { + throw new IllegalArgumentException("Only map entries of type RaplaObject are allowed."); + } + if ( o instanceof RefEntity) { + getReferenceHandler().put( key, o); + } else { + childMap.put( key, o ); + } + } + } + + public Map getChildMap() { + return childMap; + } + + /** This method is only used in storage operations, please dont use it from outside*/ + public void putString(String key, String value) + { + childMap.put( key, value); + } + + public Iterator getReferences() { + Iterator refIt = new NestedIterator( getEntityReferencers()) { + public Iterator getNestedIterator(Object obj) { + return ((EntityReferencer) obj).getReferences(); + } + }; + return new IteratorChain( refIt, getReferenceHandler().getReferences()); + } + + private Iterator getEntityReferencers() { + return new FilterIterator( map.values().iterator()) { + protected boolean isInIterator(Object obj) { + return obj instanceof EntityReferencer; + } + }; + } + + + public boolean isRefering(RefEntity object) { + if ( getReferenceHandler().isRefering( object )) { + return true; + } + for (Iterator it = getEntityReferencers();it.hasNext();) { + if (((EntityReferencer) it.next()).isRefering( object)) { + return true; + } + } + return false; + } + /* + public Iterator getReferences() { + return getReferenceHandler().getReferences(); + } + + public boolean isRefering(Entity entity) { + return getReferenceHandler().isRefering( entity); + }*/ + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + referenceHandler.resolveEntities( resolver ); + Map map = new HashMap(); + for ( Iterator it = childMap.keySet().iterator();it.hasNext();) { + String key = (String)it.next(); + Object entity = childMap.get(key) ; + if ( entity instanceof EntityReferencer) { + ((EntityReferencer) entity).resolveEntities( resolver); + } + map.put( key, entity); + } + for ( Iterator it = getReferenceHandler().getReferenceKeys();it.hasNext();) { + String key = (String)it.next(); + RefEntity entity = (RefEntity)getReferenceHandler().get(key) ; + Assert.notNull( entity ); + map.put( key, entity); + } + this.map = Collections.unmodifiableMap( map ); + } + + public ReferenceHandler getReferenceHandler() { + return referenceHandler; + } + + public RaplaType getRaplaType() { + return TYPE; + } + + public boolean needsChange(DynamicType type) { + for (Iterator it = childMap.values().iterator();it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof DynamicTypeDependant) { + if (((DynamicTypeDependant) obj).needsChange( type )) + return true; + } + } + return false; + } + + public void commitChange(DynamicType type) { + for (Iterator it = childMap.values().iterator();it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof DynamicTypeDependant) { + ((DynamicTypeDependant) obj).commitChange( type ); + } + } + } + + public void commitRemove(DynamicType type) throws CannotExistWithoutTypeException { + for (Iterator it = childMap.values().iterator();it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof DynamicTypeDependant) { + ((DynamicTypeDependant) obj).commitRemove( type ); + } + } + } + /** + * @see java.util.Map#size() + */ + public int size() { + return map.size(); + } + + /** + * @see java.util.Map#isEmpty() + */ + public boolean isEmpty() { + return map.isEmpty(); + } + + /** + * @see java.util.Map#containsKey(java.lang.Object) + */ + public boolean containsKey(Object key) { + return map.containsKey( key); + } + + /** + * @see java.util.Map#containsValue(java.lang.Object) + */ + public boolean containsValue(Object key) { + return map.containsValue( key); + } + + /** + * @see java.util.Map#get(java.lang.Object) + */ + public Object get(Object key) { + return map.get(key); + } + + /** + * @see java.util.Map#put(java.lang.Object, java.lang.Object) + */ + public Object put(Object arg0, Object arg1) { + throw createReadOnlyException(); + } + + /** + * @see java.util.Map#remove(java.lang.Object) + */ + public Object remove(Object arg0) { + throw createReadOnlyException(); + } + + /** + * @see java.util.Map#putAll(java.util.Map) + */ + public void putAll(Map arg0) { + throw createReadOnlyException(); + } + + /** + * @see java.util.Map#clear() + */ + public void clear() { + throw createReadOnlyException(); + } + + ReadOnlyException createReadOnlyException() { + return new ReadOnlyException("RaplaMap is readonly you must create a new Object"); + } + /** + * @see java.util.Map#keySet() + */ + public Set keySet() { + return map.keySet(); + } + + /** + * @see java.util.Map#values() + */ + public Collection values() { + return map.values(); + } + + /** + * @see java.util.Map#entrySet() + */ + public Set entrySet() { + return map.entrySet(); + } + + + +} diff --git a/src/org/rapla/entities/domain/Allocatable.java b/src/org/rapla/entities/domain/Allocatable.java new file mode 100644 index 0000000..5cecd2f --- /dev/null +++ b/src/org/rapla/entities/domain/Allocatable.java @@ -0,0 +1,68 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; + +import java.util.Date; + +import org.rapla.entities.Entity; +import org.rapla.entities.Named; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.Timestamp; +import org.rapla.entities.User; +import org.rapla.entities.dynamictype.Classifiable; + +/** Objects that implement allocatable can be allocated by reservations. + @see Reservation + */ +public interface Allocatable extends Entity,RaplaObject,Named,Classifiable,Ownable,Timestamp { + final RaplaType TYPE = new RaplaType(Allocatable.class, "resource"); + + /** Conflicts for this allocatable should be ignored, if this flag is enabled.*/ + void setHoldBackConflicts(boolean enable); + boolean isHoldBackConflicts(); + /** Static empty dummy Array. Mainly for using the toArray() method of the collection interface */ + Allocatable[] ALLOCATABLE_ARRAY = new Allocatable[0]; + void addPermission( Permission permission ); + boolean removePermission( Permission permission ); + + /** returns if the user has the permission to allocate the resource in the given + time. It returns true if for at least one permission calling + permission.covers() + and permission.affectsUser yields true. + */ + boolean canAllocate( User user, Date start, Date end, Date today ); + /** returns if the user has the permission to create a conflict for the resource.*/ + boolean canCreateConflicts( User user ); + /** returns if the user has the permission to modify the allocatable (and also its permission-table).*/ + boolean canModify( User user ); + /** returns if the user has the permission to read the allocations of this resource.*/ + boolean canRead( User user ); + + Permission[] getPermissions(); + Permission newPermission(); + boolean isPerson(); +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/domain/Appointment.java b/src/org/rapla/entities/domain/Appointment.java new file mode 100644 index 0000000..42d5e8e --- /dev/null +++ b/src/org/rapla/entities/domain/Appointment.java @@ -0,0 +1,126 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; +import java.util.Collection; +import java.util.Date; + +import org.rapla.entities.Entity; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaType; +/** The basic building blocks of reservations. + @see Reservation + @see Repeating*/ +public interface Appointment extends Entity, Comparable,Ownable { + final RaplaType TYPE = new RaplaType(Appointment.class, "appointment" ); + Date getStart(); + Date getEnd(); + /**

    + If no repeating is set this method will return the same + as getEnd(). +

    +

    + If the repeating has no end the method will return Null. + Oterwise the maximum of getEnd() and repeating.getEnd() will be returned. +

    + @see #getEnd + @see Repeating + */ + Date getMaxEnd(); + + /** returns the reservation that owns the appointment. + @return the reservation that owns the appointment or null if + the appointment does not belong to a reservation. + */ + Reservation getReservation(); + + /** @return null if the appointment has no repeating + */ + Repeating getRepeating(); + + /** Enables repeating for this appointment. + Use getRepeating() to manipulate the repeating. */ + void setRepeatingEnabled(boolean enableRepeating); + + /** returns if the appointment has a repeating */ + boolean isRepeatingEnabled(); + + /** Changes the start- and end-time of the appointment. + */ + void move(Date start,Date end); + /** Moves the start-time of the appointment. + The end-time will be adjusted accordingly to the duration of the appointment. + */ + void move(Date newStart); + + /** Tests two appointments for overlap. + Important: Times like 13:00-14:00 and 14:00-15:00 do not overlap + The overlap-relation must be symmetric a1.overlaps(a2) == a2.overlaps(a1) + @return true if the appointment overlaps the given appointment. + */ + boolean overlaps(Appointment appointment); + + /** Test for overlap with a period. + * same as overlaps( start, end, true) + * @return true if the overlaps with the given period. + */ + boolean overlaps(Date start,Date end); + + /** Test for overlap with a period. You can specify if exceptions should be considered in the overlapping algorithm. + @return true if the overlaps with the given period. + */ + boolean overlaps(Date start,Date end, boolean considerExceptions); + + /** Returns if the exceptions, repeatings, start and end dates of the Appoinemnts are the same.*/ + boolean matches(Appointment appointment); + + /** @param maxDate must not be null, specifies the last date that should be searched + + returns the first date at which the two appointments differ (dates after maxDate will not be calculated) + */ + Date getFirstDifference( Appointment a2, Date maxDate ); + + /** @param maxDate must not be null, specifies the last date that should be searched + + returns the last date at which the two appointments differ. (dates after maxDate will not be calculated)*/ + Date getLastDifference( Appointment a2, Date maxDate ); + + /** this method will be used for future enhancements */ + boolean isWholeDaysSet(); + + /** this method will be used for future enhancements */ + void setWholeDays(boolean enable); + + /** adds all Appointment-blocks in the given period to the appointmentBlockArray. + A block is in the period if its starttimestart. Exceptions are excluded, i.e. there is no block on an exception date. + */ + void createBlocks(Date start,Date end,Collection blocks); + + /** adds all Appointment-blocks in the given period to the appointmentBlockArray. + A block is in the period if its starttimestart. You can specify if exceptions should be excluded. + */ + void createBlocks(Date start,Date end,Collection blocks, boolean excludeExceptions); + + final Appointment[] EMPTY_ARRAY = new Appointment[0]; +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/domain/AppointmentBlock.java b/src/org/rapla/entities/domain/AppointmentBlock.java new file mode 100644 index 0000000..8d441f8 --- /dev/null +++ b/src/org/rapla/entities/domain/AppointmentBlock.java @@ -0,0 +1,98 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; + + + +/** + * This class represents a time block of an appointment and is currently only used for performance + * reasons + * + * @since Rapla 1.4 + */ +public class AppointmentBlock implements Comparable +{ + long start; + long end; + boolean isException; + private Appointment appointment; + + /** + * Basic constructor + */ + public AppointmentBlock(long start, long end, Appointment appointment, boolean isException) + { + this.start = start; + this.end = end; + this.appointment = appointment; + this.isException = isException; + } + + /** + * Returns the start date of this block + * + * @return Date + */ + public long getStart() + { + return start; + } + + /** + * Returns the end date of this block + * + * @return Date + */ + public long getEnd() + { + return end; + } + + /** + * Returns if the block is an exception from the appointment rule + * + */ + public boolean isException() + { + return isException; + } + /** + * Returns the appointment to which this block belongs + * + * @return Appointment + */ + public Appointment getAppointment() + { + return appointment; + } + + /** + * This method is used to compare two appointment blocks by their start dates + */ + public int compareTo(AppointmentBlock other) + { + if (other.start > start) + return -1; + if (other.start < start) + return 1; + if (other.end > end) + return 1; + if (other.end < end) + return -1; + if ( other == this) + { + return 0; + } + return appointment.compareTo(other.appointment); + } +} diff --git a/src/org/rapla/entities/domain/AppointmentFormater.java b/src/org/rapla/entities/domain/AppointmentFormater.java new file mode 100644 index 0000000..429a221 --- /dev/null +++ b/src/org/rapla/entities/domain/AppointmentFormater.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; +import java.util.List; + + + +/** Formats the different appointment outputs. */ +public interface AppointmentFormater +{ + public final static String ROLE = AppointmentFormater.class.getName(); + String getShortSummary(Appointment appointment); + String getVeryShortSummary(Appointment appointment); + String getSummary( Appointment a ); + String getSummary( Repeating r , List periods); + String getSummary( Repeating r ); + String getExceptionSummary( Repeating r ); +} diff --git a/src/org/rapla/entities/domain/AppointmentStartComparator.java b/src/org/rapla/entities/domain/AppointmentStartComparator.java new file mode 100644 index 0000000..e695da8 --- /dev/null +++ b/src/org/rapla/entities/domain/AppointmentStartComparator.java @@ -0,0 +1,55 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; +import java.util.*; + + +public class AppointmentStartComparator implements Comparator { + public int compare(Object o1,Object o2) { + if (o1 instanceof Date) + return compare((Date) o1, o2); + if (o2 instanceof Date) + return -1 * compare((Date) o2, o1 ); + + if ( o1.equals(o2)) return 0; + Appointment a1 = (Appointment) o1; + Appointment a2 = (Appointment) o2; + if (a1.getStart().before(a2.getStart())) + return -1; + if (a1.getStart().after(a2.getStart())) + return 1; + + return (o1.hashCode() < o2.hashCode()) ? -1 : 1; + } + public int compare(Date d1,Object o2) { + if (o2 instanceof Date) + return d1.compareTo((Date) o2); + + Appointment a2 = (Appointment) o2; + if (d1.before(a2.getStart())) { + //System.out.println(a2 + ">" + d1); + return -1; + } + if (d1.after(a2.getStart())) { + // System.out.println(a2 + "<" + d1); + return 1; + } + + // If appointment.getStart().equals(date) + // set the appointment before the date + return 1; + } + +} + + \ No newline at end of file diff --git a/src/org/rapla/entities/domain/Period.java b/src/org/rapla/entities/domain/Period.java new file mode 100644 index 0000000..ac2b66a --- /dev/null +++ b/src/org/rapla/entities/domain/Period.java @@ -0,0 +1,73 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; + +import java.util.*; + +import org.rapla.entities.Entity; +import org.rapla.entities.Named; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +/** +Most universities and schools are planning for fixed periods/terms +rather than arbitrary dates. Rapla provides support for this periods. +*/ +public interface Period extends Entity,RaplaObject,Comparable,Named { + final RaplaType TYPE = new RaplaType(Period.class, "period"); + + Date getStart(); + Date getEnd(); + int getWeeks(); + String getName(); + + void setStart(Date start); + void setEnd(Date end); + void setName(String name); + + boolean contains(Date date); + /** returns the week of the specified date relative to the period. + @throws NoSuchElementException if the period doesn't contain the date + */ + int weekOf(Date date); + String toString(); + + /** compares the period to a date. + Compares endDates with date. + If dates are equal 1 will be returned: + The date is before the endDate and therefore in the period. + */ + int compareTo(Date date); + /** compares the period to another period. + First compares startDates and if they are equal + compares endDates. If endDates are equal the hashValues, names + or some other unique value should be compared to ensure: + equals() is true <=> compareTo() returns 0; + */ + int compareTo(Period period); + + /** compares the period to another period or a date object. + @see #compareTo(Date) + @see #compareTo(Period) + */ + int compareTo(Object object); + + public static Period[] PERIOD_ARRAY = new Period[0]; +} + + + + + + + + diff --git a/src/org/rapla/entities/domain/Permission.java b/src/org/rapla/entities/domain/Permission.java new file mode 100644 index 0000000..3c1967f --- /dev/null +++ b/src/org/rapla/entities/domain/Permission.java @@ -0,0 +1,98 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.entities.domain; + +import java.util.Date; +import org.rapla.components.util.SmallIntMap; +import org.rapla.entities.Category; +import org.rapla.entities.User; + +/** New feature to restrict the access to allocatables on a per user/group basis. + * Specify absolute and relative booking-timeframes for each resource + * per user/group. You can, for example, prevent modifing appointments + * in the past, by setting the relative start-time to 0. +*/ +public interface Permission +{ + String GROUP_CATEGORY_KEY = "user-groups"; + String GROUP_REGISTERER_KEY = "registerer"; + String GROUP_MODIFY_PREFERENCES_KEY = "modify-preferences"; + String GROUP_CAN_READ_EVENTS_FROM_OTHERS = "read-events-from-others"; + int DENIED = 0; + int READ = 1; + int ALLOCATE =2; + int ALLOCATE_CONFLICTS = 3; + int ADMIN = 4; + + String[] ACCESS_LEVEL_NAMES = {"denied","read","allocate","allocate-conflicts","admin"}; + final static int[] ACCESS_LEVEL_TYPES = {DENIED,READ,ALLOCATE,ALLOCATE_CONFLICTS,ADMIN}; + + final static SmallIntMap ACCESS_LEVEL_NAMEMAP = new SmallIntMap(ACCESS_LEVEL_TYPES,ACCESS_LEVEL_NAMES); + + /** sets a user for the permission. + * If a user is not null, the group will be set to null. + */ + void setUser(User user); + User getUser(); + + /** sets a group for the permission. + * If the group ist not null, the user will be set to null. + */ + void setGroup(Category category); + Category getGroup(); + + /** set the minumum number of days a resource must be booked in advance. If days is null, a reservation can be booked anytime. + * Example: If you set days to 7, a resource must be allocated 7 days before its acutual use */ + void setMinAdvance(Long days); + Long getMinAdvance(); + + /** set the maximum number of days a reservation can be booked in advance. If days is null, a reservation can be booked anytime. + * Example: If you set days to 7, a resource can only be for the next 7 days. */ + void setMaxAdvance(Long days); + Long getMaxAdvance(); + + /** sets the starttime of the period in which the resource can be booked*/ + void setStart(Date end); + Date getStart(); + + /** sets the endtime of the period in which the resource can be booked*/ + void setEnd(Date end); + Date getEnd(); + + /** Convenince Method: returns the last date for which the resource can be booked */ + Date getMaxAllowed(Date today); + /** Convenince Method: returns the first date for which the resource can be booked */ + Date getMinAllowed(Date today); + + /** returns if the user or a group of the user is affected by the permission. + * Groups are hierarchical. If the user belongs + * to a subgroup of the permission-group the user is also + * affected by the permission. + */ + boolean affectsUser( User user); + + /** returns if the permission covers the interval specified by the start and end date. + * The current date must be passed to calculate the permissable + * interval from minAdvance and maxAdvance. + */ + boolean covers( Date start, Date end, Date currentDate); + + void setAccessLevel(int access); + int getAccessLevel(); + + /** Static empty dummy Array. + * Mainly for using the toArray() method of the collection interface */ + Permission[] PERMISSION_ARRAY = new Permission[0]; + +} diff --git a/src/org/rapla/entities/domain/Repeating.java b/src/org/rapla/entities/domain/Repeating.java new file mode 100644 index 0000000..47fcb18 --- /dev/null +++ b/src/org/rapla/entities/domain/Repeating.java @@ -0,0 +1,86 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; +import java.util.Date; + +/** Encapsulates the repeating rule for an appointment. + @see Appointment*/ +public interface Repeating { + RepeatingType DAILY = RepeatingType.DAILY; + RepeatingType WEEKLY = RepeatingType.WEEKLY; + RepeatingType MONTHLY = RepeatingType.MONTHLY; + RepeatingType YEARLY = RepeatingType.YEARLY; + + void setInterval(int interval); + /** returns the number of intervals between two repeatings. + * That are in the selected context: + *
  • For weekly repeatings: Number of weeks.
  • + *
  • For dayly repeatings: Number of days.
  • + */ + int getInterval(); + /** The value returned depends which method was called last. + * If setNumber() has been called with a parameter + * >=0 fixedNumber() will return true. If + * setEnd() has been called + * fixedNumber() will return false. + * @see #setEnd + * @see #setNumber + */ + boolean isFixedNumber(); + /** Set the end of repeating. + * If this value is set to null and the + * number is set to -1 the appointment will repeat + * forever. + * @param end If not null isFixedNumber will return true. + * @see #setNumber + */ + void setEnd(Date end); + /* @return end of repeating or null if unlimited */ + Date getEnd(); + /** Set a fixed number of repeating. + * If this value is set to -1 + * and the repeating end is set to null the appointment will + * repeat forever. + * @param number If >=0 isFixedNumber will return true. + * @see #setEnd + * @see #isFixedNumber + */ + void setNumber(int number); + /* @return number of repeating or -1 if it repeats forever. */ + int getNumber(); + /* daily,weekly, monthly */ + RepeatingType getType(); + /* daily,weekly, monthly */ + void setType(RepeatingType type); + /* exceptions for this repeating. */ + Date[] getExceptions(); + boolean hasExceptions(); + + boolean isWeekly(); + boolean isDaily(); + boolean isMonthly(); + boolean isYearly(); + void addException(Date date); + void removeException(Date date); + void clearExceptions(); + + /** returns the appointment of this repeating. + @see Appointment + */ + Appointment getAppointment(); + + /* tests if an exception is added for the given date */ + boolean isException(long date); + Object clone(); +} + diff --git a/src/org/rapla/entities/domain/RepeatingEnding.java b/src/org/rapla/entities/domain/RepeatingEnding.java new file mode 100644 index 0000000..6f0ace1 --- /dev/null +++ b/src/org/rapla/entities/domain/RepeatingEnding.java @@ -0,0 +1,71 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/**Currently Rapla supports the following types: +
  • weekly
  • +
  • daily
  • + */ +public class RepeatingEnding implements Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private String type; + + final static public RepeatingEnding END_DATE = new RepeatingEnding("repeating.end_date"); + final static public RepeatingEnding N_TIMES = new RepeatingEnding("repeating.n_times"); + final static public RepeatingEnding FOREVEVER = new RepeatingEnding("repeating.forever"); + + private static Map types; + + private RepeatingEnding(String type) { + this.type = type; + if (types == null) { + types = new HashMap(); + } + types.put( type, this); + } + + public boolean is(RepeatingEnding other) { + if ( other == null) + return false; + return type.equals( other.type); + } + + public static RepeatingEnding findForString(String string ) { + RepeatingEnding type = (RepeatingEnding) types.get( string ); + return type; + } + + public String toString() { + return type; + } + + public boolean equals( Object other) { + if ( !(other instanceof RepeatingEnding)) + return false; + return is( (RepeatingEnding)other); + } + + public int hashCode() { + return type.hashCode(); + } +} + + + + diff --git a/src/org/rapla/entities/domain/RepeatingType.java b/src/org/rapla/entities/domain/RepeatingType.java new file mode 100644 index 0000000..79451d5 --- /dev/null +++ b/src/org/rapla/entities/domain/RepeatingType.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/**Currently Rapla supports the following types: +
  • weekly
  • +
  • daily
  • + */ +public class RepeatingType implements Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private String type; + + final static public RepeatingType WEEKLY = new RepeatingType("weekly"); + final static public RepeatingType DAILY = new RepeatingType("daily"); + final static public RepeatingType MONTHLY = new RepeatingType("monthly"); + final static public RepeatingType YEARLY = new RepeatingType("yearly"); + + private static Map types; + + private RepeatingType(String type) { + this.type = type; + if (types == null) { + types = new HashMap(); + } + types.put( type, this); + } + + public boolean is(RepeatingType other) { + if ( other == null) + return false; + return type.equals( other.type); + } + + public static RepeatingType findForString(String string ) { + RepeatingType type = (RepeatingType) types.get( string ); + return type; + } + + public String toString() { + return type; + } + + public boolean equals( Object other) { + if ( !(other instanceof RepeatingType)) + return false; + return is( (RepeatingType)other); + } + + public int hashCode() { + return type.hashCode(); + } +} + + + + diff --git a/src/org/rapla/entities/domain/Reservation.java b/src/org/rapla/entities/domain/Reservation.java new file mode 100644 index 0000000..92cbea2 --- /dev/null +++ b/src/org/rapla/entities/domain/Reservation.java @@ -0,0 +1,100 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.entities.domain; + +import java.util.Date; +import org.rapla.entities.Entity; +import org.rapla.entities.Named; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.Timestamp; +import org.rapla.entities.dynamictype.Classifiable; + +/** The Reservation interface is the central interface of + * Rapla. Objects implementing this interface are the courses or + * events to be scheduled. A Reservation consist + * of a group of appointments and a set of allocated + * resources (rooms, notebooks, ..) and persons. + * By default all resources and persons are allocated on every appointment. + * If you want to associate allocatable objects to special appointments + * use Restrictions. + * + * @see Classifiable + * @see Appointment + * @see Allocatable + */ +public interface Reservation extends Entity,RaplaObject,Classifiable,Named,Ownable,Timestamp +{ + final RaplaType TYPE = new RaplaType(Reservation.class,"reservation"); + + public final int MAX_RESERVATION_LENGTH = 100; + + void addAppointment(Appointment appointment); + void removeAppointment(Appointment appointment); + /** returns all appointments that are part off the reservation.*/ + Appointment[] getAppointments(); + /** Restrict an allocation to one ore more appointments. + * By default all objects of a reservation are allocated + * on every appointment. Restrictions allow to model + * relations between allocatables and appointments. + * A resource or person is restricted if its connected to + * one or more appointments instead the whole reservation. + */ + void setRestriction(Allocatable alloc,Appointment[] appointments); + Appointment[] getRestriction(Allocatable alloc); + + /** returns all appointments for an allocatable. This are either the restrictions, if there are any or all appointments + * @see #getRestriction + * @see #getAppointments*/ + Appointment[] getAppointmentsFor(Allocatable alloc); + + /** find an appointment in the reservation that equals the specified appointment. This is usefull if you have the + * persistant version of an appointment and want to discover the editable appointment in the working copy of a reservation */ + Appointment findAppointment(Appointment appointment); + + void addAllocatable(Allocatable allocatable); + void removeAllocatable(Allocatable allocatable); + Allocatable[] getAllocatables(); + + Allocatable[] getRestrictedAllocatables(Appointment appointment); + + /** returns if an the reservation has allocated the specified object. */ + boolean hasAllocated(Allocatable alloc); + + /** returns if the allocatable is reserved on the specified appointment. */ + boolean hasAllocated(Allocatable alloc,Appointment appointment); + + /** returns all persons that are associated with the reservation. + Need not necessarily to be users of the System. + */ + Allocatable[] getPersons(); + + /** returns all resources that are associated with the reservation. */ + Allocatable[] getResources(); + + public static final Reservation[] RESERVATION_ARRAY = new Reservation[0]; + + /** @deprecated This are only used during the integration period of the occupation plugin. Will be removed in the next version*/ + void setSelectedSlotDate(Date start); + /** @deprecated This are only used during the integration period of the occupation plugin. Will be removed in the next version*/ + Date getSelectedSlotDate(); +} + + + + + + + diff --git a/src/org/rapla/entities/domain/ReservationHelper.java b/src/org/rapla/entities/domain/ReservationHelper.java new file mode 100644 index 0000000..014a231 --- /dev/null +++ b/src/org/rapla/entities/domain/ReservationHelper.java @@ -0,0 +1,62 @@ +package org.rapla.entities.domain; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import org.rapla.facade.PeriodModel; + +public class ReservationHelper +{ + + static public void makeRepeatingForPeriod(PeriodModel model, Appointment appointment, RepeatingType repeatingType, int repeatings) { + appointment.setRepeatingEnabled(true); + Repeating repeating = appointment.getRepeating(); + repeating.setType( repeatingType ); + Period period = model.getNearestPeriodForStartDate( appointment.getStart()); + if ( period != null && repeatings <=1) { + repeating.setEnd(period.getEnd()); + } else { + repeating.setNumber( repeatings ); + } + } + + /** find the first visible reservation*/ + static public Date findFirst( List reservationList) { + Date firstStart = null; + Iterator it = reservationList.iterator(); + while (it.hasNext()) { + Appointment[] appointments = ((Reservation) it.next()).getAppointments(); + for (int i=0;i blocks = new ArrayList(); + appointments[i].createBlocks( start, firstStart, blocks ); + for (AppointmentBlock block: blocks) { + if (block.getStart()" + d1); + return -1; + } + if (d1.after(getStart(r2))) { + // System.out.println(a2 + "<" + d1); + return 1; + } + + // If appointment.getStart().equals(date) + // set the appointment before the date + return 1; + } + +} + diff --git a/src/org/rapla/entities/domain/internal/AllocatableImpl.java b/src/org/rapla/entities/domain/internal/AllocatableImpl.java new file mode 100644 index 0000000..5c2aad6 --- /dev/null +++ b/src/org/rapla/entities/domain/internal/AllocatableImpl.java @@ -0,0 +1,299 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain.internal; + +import java.util.ArrayList; +import java.util.Date; +import java.util.Iterator; +import java.util.Locale; + +import org.rapla.components.util.iterator.IteratorChain; +import org.rapla.components.util.iterator.NestedIterator; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.entities.dynamictype.internal.ClassificationImpl; +import org.rapla.entities.internal.ModifiableTimestamp; +import org.rapla.entities.storage.CannotExistWithoutTypeException; +import org.rapla.entities.storage.DynamicTypeDependant; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; + +public class AllocatableImpl extends SimpleEntity implements Allocatable,Mementable,java.io.Serializable, DynamicTypeDependant, ModifiableTimestamp, Ownable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private ClassificationImpl classification; + private boolean holdBackConflicts; + private ArrayList permissions = new ArrayList(); + private Date lastChanged; + private Date createDate; + + transient private boolean permissionArrayUpToDate = false; + transient private Permission[] permissionArray; + + AllocatableImpl() { + this (null, null); + } + + public AllocatableImpl(Date createDate, Date lastChanged ) { + this.createDate = createDate; + this.lastChanged = lastChanged; + if (lastChanged == null) + this.lastChanged = this.createDate; + } + + + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + super.resolveEntities( resolver); + classification.resolveEntities( resolver); + for (Iterator it = permissions.iterator();it.hasNext();) + { + ((PermissionImpl) it.next()).resolveEntities( resolver); + } + } + + public void setReadOnly(boolean enable) { + super.setReadOnly( enable ); + classification.setReadOnly( enable ); + Iterator it = permissions.iterator(); + while (it.hasNext()) { + ((PermissionImpl) it.next()).setReadOnly(enable); + } + } + + public Date getLastChangeTime() { + return lastChanged; + } + + public Date getCreateTime() { + return createDate; + } + + public void setLastChanged(Date date) { + lastChanged = date; + } + + public RaplaType getRaplaType() { + return TYPE; + } + + // Implementation of interface classifiable + public Classification getClassification() { return classification; } + public void setClassification(Classification classification) { + this.classification = (ClassificationImpl) classification; + } + + public void setHoldBackConflicts(boolean enable) { + holdBackConflicts = enable; + } + public boolean isHoldBackConflicts() { + return holdBackConflicts; + } + + public String getName(Locale locale) { + Classification c = getClassification(); + if (c == null) + return ""; + return c.getName(locale); + } + + public boolean isPerson() { + final Classification classification2 = getClassification(); + if ( classification2 == null) + { + return false; + } + final String annotation = classification2.getType().getAnnotation(DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE); + return annotation != null && annotation.equals( DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION); + } + + private boolean hasAccess( User user, int accessLevel ) { + Permission[] permissions = getPermissions(); + if ( user == null || user.isAdmin() ) + return true; + + for ( int i = 0; i < permissions.length; i++ ) { + Permission p = permissions[i]; + if ( p.affectsUser(user) + && (p.getAccessLevel() >= accessLevel )) + { + return true; + } + } + return false; + } + + public boolean canCreateConflicts( User user ) { + return hasAccess( user, Permission.ALLOCATE_CONFLICTS); + } + + public boolean canModify(User user) { + return hasAccess( user, Permission.ADMIN); + } + + public boolean canRead(User user) { + return hasAccess( user, Permission.READ ); + } + + public boolean canAllocate( User user, Date start, Date end, Date today ) { + if (user == null) + return false; + + Permission[] permissions = getPermissions(); + if ( user.isAdmin() ) + return true; + + for ( int i = 0; i < permissions.length; i++ ) { + Permission p = permissions[i]; + if ( p.affectsUser(user) + && p.getAccessLevel() >= Permission.ALLOCATE + && (p.getAccessLevel() == Permission.ADMIN || p.covers( start, end, today ) )) + { + return true; + } + } + return false; + } + + public void addPermission(Permission permission) { + checkWritable(); + permissionArrayUpToDate = false; + permissions.add(permission); + } + + public boolean removePermission(Permission permission) { + checkWritable(); + permissionArrayUpToDate = false; + return permissions.remove(permission); + } + + public Permission newPermission() { + return new PermissionImpl(); + } + + public Permission[] getPermissions() { + updatePermissionArray(); + return permissionArray; + } + + private void updatePermissionArray() { + if ( permissionArrayUpToDate ) + return; + + permissionArray = (Permission[])permissions.toArray(Permission.PERMISSION_ARRAY); + permissionArrayUpToDate = true; + } + + public Iterator getReferences() { + return new IteratorChain + ( + classification.getReferences() + ,new NestedIterator( permissions.iterator() ) { + public Iterator getNestedIterator(Object obj) { + return ((PermissionImpl)obj).getReferences(); + } + } + ); + } + + public boolean needsChange(DynamicType type) { + return classification.needsChange( type ); + } + + public void commitChange(DynamicType type) { + classification.commitChange( type ); + } + + public void commitRemove(DynamicType type) throws CannotExistWithoutTypeException + { + classification.commitRemove(type); + } + + public boolean isRefering(RefEntity object) { + if (super.isRefering(object)) + return true; + if (classification.isRefering(object)) + return true; + Permission[] permissions = getPermissions(); + for ( int i = 0; i < permissions.length; i++ ) { + if ( ((PermissionImpl) permissions[i]).isRefering( object ) ) + return true; + } + return false; + } + + static private void copy(AllocatableImpl source,AllocatableImpl dest) { + dest.permissionArrayUpToDate = false; + dest.classification = (ClassificationImpl) source.classification.clone(); + + dest.permissions.clear(); + Iterator it = source.permissions.iterator(); + while ( it.hasNext() ) { + dest.permissions.add(((PermissionImpl)it.next()).clone()); + } + + dest.holdBackConflicts = source.holdBackConflicts; + dest.createDate = source.createDate; + dest.lastChanged = source.lastChanged; + } + + public void copy(Object obj) { + super.copy((AllocatableImpl)obj); + copy((AllocatableImpl)obj,this); + } + + public Object deepClone() { + AllocatableImpl clone = new AllocatableImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Object clone() { + AllocatableImpl clone = new AllocatableImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } + public String toString() { + StringBuffer buf = new StringBuffer(); + buf.append(" ["); + buf.append(super.toString()); + buf.append(","); + buf.append(super.getVersion()); + buf.append("] "); + if ( getClassification() != null) { + buf.append (getClassification().toString()) ; + } + return buf.toString(); + } + + +} + + + + + + + diff --git a/src/org/rapla/entities/domain/internal/AppointmentImpl.java b/src/org/rapla/entities/domain/internal/AppointmentImpl.java new file mode 100644 index 0000000..358b3d9 --- /dev/null +++ b/src/org/rapla/entities/domain/internal/AppointmentImpl.java @@ -0,0 +1,714 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain.internal; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.DateTools; +import org.rapla.components.util.Tools; +import org.rapla.entities.RaplaType; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentBlock; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; + +public class AppointmentImpl extends SimpleEntity implements Appointment,java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private Date start; + private Date end; + private RepeatingImpl repeating; + private boolean isWholeDaysSet = false; + /** set DE (DebugDisabled) to false for debuging output. You must change in code + because this flag is final for efficience reasons.*/ + public final static boolean DE = true; + public final static String BUG = null; + public static String DD = null; + + final public RaplaType getRaplaType() {return TYPE;} + + private AppointmentImpl() { + } + + public AppointmentImpl(Date start,Date end) { + this.start = start; + this.end = end; + if ( start != null && end!= null && DateTools.cutDate( start ).equals( start) && DateTools.cutDate( end).equals(end)) + { + isWholeDaysSet = true; + } + + } + + public AppointmentImpl(Date start,Date end, RepeatingType type, int repeatingDuration) { + this(start,end); + this.repeating = new RepeatingImpl(type,this); + repeating.setNumber(repeatingDuration); + } + + + + + void setParent(Reservation parent) { + getReferenceHandler().put("parent",parent); + if (parent != null) + setOwner(parent.getOwner()); + } + + public void removeParent() + { + getReferenceHandler().removeId("parent"); + setOwner( null ); + } + + + public Date getStart() { return start;} + public Date getEnd() { return end;} + + public void setReadOnly(boolean enable) { + super.setReadOnly( enable ); + if ( repeating != null ) + repeating.setReadOnly( enable ); + } + + public void move(Date newStart) { + long diff = this.end.getTime() - this.start.getTime(); + move(newStart, new Date(newStart.getTime() + diff)); + } + + public void move(Date start,Date end) { + checkWritable(); + this.start = start; + this.end = end; + if ( isWholeDaysSet) + { + if (start.getTime() != DateTools.cutDate(start.getTime()) || end.getTime() != DateTools.cutDate(end.getTime())) + { + isWholeDaysSet = false; + } + } + } + + public String toString() { + if (start != null && end != null) + return f(start.getTime(),end.getTime()) + + ((repeating != null) ? (" [" + repeating.toString()) + "]": ""); + else + return start + "-" + end; + } + + public Reservation getReservation() { + return (Reservation)getReferenceHandler().get("parent"); + } + + public boolean isWholeDaysSet() { + return isWholeDaysSet; + } + + public void setWholeDays(boolean enable) { + checkWritable(); + if (enable) { + if (start.getTime() != DateTools.cutDate(start.getTime())) + this.start = DateTools.cutDate(this.start); + if (end.getTime() != DateTools.cutDate(end.getTime())) + this.end = DateTools.fillDate(this.end); + if ( end.getTime() <= start.getTime()) + { + this.end = DateTools.fillDate(this.start); + } + } + isWholeDaysSet = enable; + } + + public int compareTo(Appointment a2) { + Date start2 = a2.getStart(); + Date end2 = a2.getEnd(); + if (start.before( start2)) + return -1; + if (start.after( start2)) + return 1; + if (getEnd().before( end2)) + return -1; + if (getEnd().after( end2)) + return 1; + if ( a2 == this) + { + return 0; + } + + SimpleIdentifier id1 = (SimpleIdentifier) getId(); + SimpleIdentifier id2 = (SimpleIdentifier)((RefEntity)a2).getId(); + if ( id1 == null || id2 == null) + { + return hashCode() < a2.hashCode() ? -1 : 1; + } + if ( id1.getKey() == id2.getKey()) + return 0; + return (id1.getKey() < id2.getKey()) ? -1 : 1; + } + + transient Date maxDate; + + /** returns the largest date that covers the appointment + and null if the appointments repeats forever. + */ + public Date getMaxEnd() { + long end = (this.end!= null) ? this.end.getTime():0; + if (repeating != null) + if (repeating.getEnd() != null) + end = Math.max(end + ,repeating.getEnd().getTime()); + else + end = 0; + if (end == 0) + return null; + + // cache max date object + if (maxDate == null || maxDate.getTime() != end) + maxDate = new Date(end); + return maxDate; + } + + public Repeating getRepeating() { + return repeating; + } + + public void setRepeatingEnabled(boolean enableRepeating) { + checkWritable(); + if (this.repeating == null) { + if (enableRepeating) { + this.repeating = new RepeatingImpl(Repeating.WEEKLY,this); + } + } else { + if (!enableRepeating) { + this.repeating = null; + } + } + } + + public boolean isRepeatingEnabled() { + return repeating != null; + } + + public Date getFirstDifference( Appointment a2, Date maxDate ) { + List blocks1 = new ArrayList(); + createBlocks( start, maxDate, blocks1); + List blocks2 = new ArrayList(); + a2.createBlocks(a2.getStart(), maxDate, blocks2); + // System.out.println("block sizes " + blocks1.size() + ", " + blocks2.size() ); + int i=0; + for ( AppointmentBlock block:blocks1) { + long a1Start = block.getStart(); + long a1End = block.getEnd(); + if ( i >= blocks2.size() ) { + return new Date( a1Start ); + } + long a2Start = blocks2.get( i ).getStart(); + long a2End = blocks2.get( i ).getEnd(); + //System.out.println("a1Start " + a1Start + " a1End " + a1End); + //System.out.println("a2Start " + a2Start + " a2End " + a2End); + if ( a1Start != a2Start ) + return new Date( Math.min ( a1Start, a2Start ) ); + + if ( a1End != a2End ) + return new Date( Math.min ( a1End, a2End ) ); + i++; + } + if ( blocks2.size() > blocks1.size() ) { + return new Date( blocks2.get( blocks1.size() ).getStart() ); + } + return null; + } + + public Date getLastDifference( Appointment a2, Date maxDate ) { + List blocks1 = new ArrayList(); + createBlocks( start, maxDate, blocks1); + List blocks2 = new ArrayList(); + a2.createBlocks(a2.getStart(), maxDate, blocks2); + if ( blocks2.size() > blocks1.size() ) { + return new Date( blocks2.get( blocks1.size() ).getEnd() ); + } + if ( blocks1.size() > blocks2.size() ) { + return new Date( blocks1.get( blocks2.size() ).getEnd() ); + } + for ( int i = blocks1.size() - 1 ; i >= 0; i-- ) { + long a1Start = blocks1.get( i ).getStart(); + long a1End = blocks1.get( i ).getEnd(); + long a2Start = blocks2.get( i ).getStart(); + long a2End = blocks2.get( i ).getEnd(); + if ( a1End != a2End ) + return new Date( Math.max ( a1End, a2End ) ); + + if ( a1Start != a2Start ) + return new Date( Math.max ( a1Start, a2Start ) ); + } + return null; + } + + public boolean matches(Appointment a2) { + if (!Tools.equalsOrBothNull(this.start, a2.getStart())) + return false; + + if (!Tools.equalsOrBothNull(this.end, a2.getEnd())) + return false; + + Repeating r1 = this.repeating; + Repeating r2 = a2.getRepeating(); + + // No repeatings. The two appointments match + if (r1 == null && r2 == null) { + return true; + } else if (r1 == null || r2 == null) { + // one repeating is null the other not so the appointments don't match + return false; + } + + if (!r1.getType().equals(r2.getType())) + return false; + + if (r1.getInterval() != r2.getInterval()) + return false; + + if (!Tools.equalsOrBothNull(r1.getEnd(), r2.getEnd())) + return false; + + // The repeatings match regulary, so we must test the exceptions + Date[] e1 = r1.getExceptions(); + Date[] e2 = r2.getExceptions(); + if (e1.length != e2.length) { + //System.out.println("Exception-length don't match"); + return false; + } + + for (int i=0;i blocks) { + createBlocks(start,end, blocks, true); + } + + + public void createBlocks(Date start,Date end,Collection blocks, boolean excludeExceptions) { + Assert.notNull(blocks); + Assert.notNull(start,"You must set a startDate"); + Assert.notNull(end, "You must set an endDate"); + processBlocks(start.getTime(), end.getTime(), blocks, excludeExceptions); + } + /* returns true if there is at least one block in an array. If the passed blocks array is not null it will contain all blocks + * that overlap the start,end period after a call.*/ + private boolean processBlocks(long start,long end,Collection blocks, boolean excludeExceptions) { + boolean checkOnly = (blocks == null); + long c1 = start; + long c2 = end; + long s = this.start.getTime(); + long e = this.end.getTime(); + // if there is no repeating + if (repeating==null) { + if (s c1) { + if ( !checkOnly ) + blocks.add(new AppointmentBlock(s,e,this, false)); + return true; + } + return false; + } + + DD=DE?BUG: print("s = appointmentstart, e = appointmentend, c1 = intervalstart c2 = intervalend"); + DD=DE?BUG: print("s:" + n(s) + " e:" + n(e) + " c2:" + n(c2) + " c1:" + n(c1)); + if (s c1 && (!repeating.isException(s) || !excludeExceptions)) { + if (checkOnly) { + return true; + } else { + blocks.add(new AppointmentBlock(s,e,this, repeating.isException(s))); + } + } + + long l = repeating.getIntervalLength( s ); + //System.out.println( "l in days " + l / DateTools.MILLISECONDS_PER_DAY ); + Assert.isTrue(l>0); + long timeFromStart = l ; + if ( repeating.isFixedIntervalLength()) + { + timeFromStart = Math.max(l,((c1-e) / l)* l); + } + int maxNumber = repeating.getNumber(); + long maxEnding = Long.MAX_VALUE; + if ( maxNumber >= 0) + { + maxEnding = repeating.getEnd().getTime(); + } + + DD=DE?BUG: print("l = repeatingInterval (in minutes), x = stepcount"); + DD=DE?BUG: print("Maxend " + f( maxEnding)); + long currentPos = s + timeFromStart; + DD=DE?BUG: print( " currentPos:" + n(currentPos) + " c2-s:" + n(c2-s) + " c1-e:" + n(c1-e)); + long blockLength = Math.max(0, e - s); + while (currentPos <= c2 && (maxNumber<0 || (currentPos<=maxEnding ))) { + DD=DE?BUG: print(" current pos:" + f(currentPos)); + if (( currentPos + blockLength > c1 ) && ( currentPos < c2 ) && (( end!=DateTools.cutDate(end) || !repeating.isDaily() || currentPos < maxEnding))) { + boolean isException =repeating.isException( currentPos ); + if ((!isException || !excludeExceptions)) { + if ( checkOnly ) { + return true; + } else { + blocks.add( new AppointmentBlock(currentPos,currentPos + blockLength,this, isException)); + } + } + } + currentPos += repeating.getIntervalLength( currentPos) ; + + } + return false; + } + + public boolean overlaps(Date start,Date end) { + return overlaps( start, end , true ); + } + + public boolean overlaps(Date start,Date end, boolean excludeExceptions) { + if (start == null && end == null) + return true; + if (start == null) + start = this.start; + if (end == null) + { + // there must be an overlapp because there can't be infinity exceptions + if (getMaxEnd() == null) + return true; + end = getMaxEnd(); + } + + if (getMaxEnd() != null && getMaxEnd().before(start)) + return false; + + if (this.start.after(end)) + return false; + + boolean overlaps = processBlocks( start.getTime(), end.getTime(), null, excludeExceptions ); + return overlaps; + } + + public boolean overlaps(long start,long end, boolean excludeExceptions) { + if (getMaxEnd() != null && getMaxEnd().getTime() end) + return false; + + boolean overlaps = processBlocks( start, end, null, excludeExceptions ); + return overlaps; + } + + private static Date getOverlappingEnd(Repeating r1,Repeating r2) { + Date maxEnd = null; + if (r1.getEnd() != null) + maxEnd = r1.getEnd(); + if (r2.getEnd() != null) + if (maxEnd != null && r2.getEnd().before(maxEnd)) + maxEnd = r2.getEnd(); + return maxEnd; + } + + public boolean overlaps(Appointment a2) { + if ( a2 == this) + return true; + Date start2 =a2.getStart(); + Date end2 =a2.getEnd(); + long s1 = this.start.getTime(); + long s2 = start2.getTime(); + long e1 = this.end.getTime(); + long e2 = a2.getEnd().getTime(); + RepeatingImpl r1 = this.repeating; + RepeatingImpl r2 = (RepeatingImpl)a2.getRepeating(); + DD=DE?BUG: print("Testing overlap of"); + DD=DE?BUG: print(" A1: " + toString()); + DD=DE?BUG: print(" A2: " + a2.toString()); + + if (r1 == null && r2 == null) { + if (e2<=s1 || e1<=s2) + return false; + return true; + } + if (r1 == null) { + return a2.overlaps(this.start,this.end); + } + if (r2 == null) { + return overlaps(start2,end2); + } + + // So both appointments have a repeating + + // If r2 has no exceptions we can check if a1 overlaps the first appointment of a2 + if (overlaps(start2,end2) && !r2.isException(start2.getTime())) { + DD=DE?BUG: print("Primitive overlap for " + getReservation() + " with " + a2.getReservation()); + return true; + } + + // Check if appointments could overlap because of the end-dates of an repeating + Date end = getOverlappingEnd(r1,r2); + if (end != null && (end.getTime()<=s1 || end.getTime()<=s2)) + return false; + + // We cant compare the fixed interval length here so we have to compare the blocks + if ( !r1.isFixedIntervalLength()) + { + return overlapsHard( (AppointmentImpl)a2); + } + if ( !r2.isFixedIntervalLength()) + { + return ((AppointmentImpl)a2).overlapsHard( this); + } + // O.K. we found 2 Candidates for the hard way + long l1 = r1.getFixedIntervalLength(); + long l2 = r2.getFixedIntervalLength(); + // The greatest common divider of the two intervals + long gcd = gcd(l1,l2); + long startx1 = Math.max(0,(s2-e1))/l1; + long startx2 = Math.max(0,(s1-e2))/l2; + + DD=DE?BUG: print("l? = intervalsize for A?, x? = stepcount for A? "); + long max_x1 = l2/gcd + startx1; + if (end!= null && (end.getTime()-s1)/l1 + startx1 < max_x1) + max_x1 = (end.getTime()-s1)/l1 + startx1; + long max_x2 = l1/gcd + startx2; + if (end!= null && (end.getTime()-s2)/l2 + startx2 < max_x2) + max_x2 = (end.getTime()-s2)/l2 + startx2; + long x1 =startx1; + long x2 =startx2; + + DD=DE?BUG: print( + "l1: " + n(l1) + + " l2: " + n(l2) + + " gcd: " + n(gcd) + + " start_x1: " + startx1 + + " start_x2: " + startx2 + + " max_x1: " + max_x1 + + " max_x2: " + max_x2 + ); + boolean overlaps = false; + long current1 = x1 *l1; + long current2 = x2 *l2; + long maxEnd1 = max_x1*l1; + long maxEnd2 = max_x2*l2; + + while (current1<=maxEnd1 && current2<=maxEnd2) { + // DD=DE?BUG: print("x1: " + x1 + " x2:" + x2); + DD=DE?BUG: print(" A1: " + f(s1 + current1, e1 + current1)); + DD=DE?BUG: print(" A2: " + f(s2 + current2, e2 + current2)); + if ((s1 + current1) < (e2 + current2) && + (e1 + current1) > (s2 + current2)) { + if (!isException(s1 + current1,s2 + current2,r2)) { + overlaps = true; + break; + } + } + if ((s1 + current1) < (s2 + current2)) + current1+=l1; + else + current2+=l2; + } + if (overlaps) + DD=DE?BUG: print("Appointments overlap"); + else + DD=DE?BUG: print("Appointments don't overlap"); + return overlaps; + } + + private boolean overlapsHard( AppointmentImpl a2 ) + { + RepeatingImpl r2 = (RepeatingImpl)a2.getRepeating(); + Collection array = new ArrayList(); + Date maxEnd =r2.getEnd(); + if ( maxEnd == null) + { + // overlaps will be checked two 250 weeks (5 years) from now on + maxEnd = new Date(a2.getStart().getTime() + DateTools.MILLISECONDS_PER_WEEK * 250); + } + createBlocks( getStart(), maxEnd, array); + for ( AppointmentBlock block:array) + { + long start = block.getStart(); + long end = block.getEnd(); + if (a2.overlaps( start, end, true)) + { + return true; + } + } + return false; + } + + /** the greatest common divider of a and b (Euklids Algorithm) */ + public static long gcd(long a,long b){ + return (b == 0) ? a : gcd(b, a%b); + } + + + /* Prueft im Abstand von "gap" millisekunden das Intervall von start bis ende + auf Ausnahmen. Gibt es fuer einen Punkt keine Ausnahme wird false zurueckgeliefert. + */ + private boolean isException(long s1,long s2,RepeatingImpl r2) { + RepeatingImpl r1 = repeating; + Date end= getOverlappingEnd(r1,r2); + if (end == null) + return false; + + if ((!r1.hasExceptions() && !r2.hasExceptions())) + return false; + + long l1 = r1.getFixedIntervalLength(); + long l2 = r2.getFixedIntervalLength(); + long gap = (l1 * l2) / gcd(l1,l2); + Date[] exceptions1 = r1.getExceptions(); + Date[] exceptions2 = r2.getExceptions(); + DD=DE?BUG: print(" Testing Exceptions for overlapp " + f(s1) + " with " + f(s2) + " gap " + n(gap)); + int i1 = 0; + int i2 = 0; + long x = 0; + if (exceptions1.length>i1) + DD=DE?BUG: print("Exception a1: " + fe(exceptions1[i1].getTime())); + if (exceptions2.length>i2) + DD=DE?BUG: print("Exception a2: " + fe(exceptions2[i2].getTime())); + while (s1 + x * gap < end.getTime()) { + DD=DE?BUG: print("Looking for exception for gap " + x + " s1: " + fe(s1+x*gap) + " s2: " + fe(s2+x*gap)); + while ((i1i1) { + DD=DE?BUG: print("Exception a1: " + fe(exceptions1[i1].getTime())); + } + } + while ((exceptions2.length>i2) + && (exceptions2[i2].getTime() + DateTools.MILLISECONDS_PER_DAY <= s2 + x*gap)) { + i2 ++; + if (exceptions2.length>i2) { + DD=DE?BUG: print("Exception a2: " + fe(exceptions2[i2].getTime())); + } + } + if ((exceptions1.length==i1) + || (s1 + x*gap >= exceptions1[i1].getTime() + DateTools.MILLISECONDS_PER_DAY)) { + DD=DE?BUG: print("Exception from a1 doesnt match "); + if ((exceptions2.length==i2) + || (s2 + x*gap >= exceptions2[i2].getTime() + DateTools.MILLISECONDS_PER_DAY)) { + DD=DE?BUG: print("Exception from a2 doesnt match. !"); + return false; + } else { + DD=DE?BUG: print("Exception from a2 matches!"); + } + } else { + DD=DE?BUG: print("Exception from a1 matches!"); + } + DD=DE?BUG: print("Exception found for gap " + x); + x ++; + } + DD=DE?BUG: print("Exceptions found for every gap. No overlapping. "); + return true; + } + + private static String print(String string) { + if (string != null) + System.out.println(string); + return string; + } + + /* cuts the milliseconds and seconds. Usefull for debugging output.*/ + private long n(long n) { + return n / (1000 * 60); + } + + /* Formats milliseconds as date. Usefull for debugging output.*/ + static String f(long n) { + SimpleDateFormat format = new SimpleDateFormat("E yyyy-MM-dd HH:mm"); + format.setTimeZone(DateTools.getTimeZone()); + return format.format(new Date(n)); + } + + /* Formats milliseconds as date without time. Usefull for debugging output.*/ + static String fe(long n) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + format.setTimeZone(DateTools.getTimeZone()); + return format.format(new Date(n)); + } + + /* Formats 2 dates in milliseconds as appointment. Usefull for debugging output.*/ + static String f(long s,long e) { + Date start = new Date(s); + Date end = new Date(e); + SimpleDateFormat formatLong = new SimpleDateFormat("E yyyy-MM-dd HH:mm"); + formatLong.setTimeZone(DateTools.getTimeZone()); + SimpleDateFormat formatTime = new SimpleDateFormat("HH:mm"); + formatTime.setTimeZone(DateTools.getTimeZone()); + if (DateTools.isSameDay(s,e)) { + return formatLong.format(start) + "-" + formatTime.format(end); + } else { + return formatLong.format(start) + "-" + formatLong.format(end); + } + } + + static private void copy(AppointmentImpl source,AppointmentImpl dest) { + dest.isWholeDaysSet = source.isWholeDaysSet; + dest.start = source.start; + dest.end = source.end; + dest.repeating = (RepeatingImpl) ((source.repeating != null) ? + source.repeating.clone() + : null); + if (dest.repeating != null) + dest.repeating.setAppointment(dest); + } + + public void copy(Appointment obj) { + super.copy((SimpleEntity)obj); + copy((AppointmentImpl) obj,this); + } + + public Appointment deepClone() { + AppointmentImpl clone = new AppointmentImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Appointment clone() { + AppointmentImpl clone = new AppointmentImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } + +} + + + + + + + + + diff --git a/src/org/rapla/entities/domain/internal/PeriodImpl.java b/src/org/rapla/entities/domain/internal/PeriodImpl.java new file mode 100644 index 0000000..5616500 --- /dev/null +++ b/src/org/rapla/entities/domain/internal/PeriodImpl.java @@ -0,0 +1,165 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain.internal; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.RaplaType; +import org.rapla.entities.domain.Period; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.internal.SimpleEntity; + +public class PeriodImpl extends SimpleEntity + implements + Period + ,java.io.Serializable + ,Mementable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private final static long WEEK_MILLIS= DateTools.MILLISECONDS_PER_WEEK; + + String name; + Date start; + Date end; + transient Calendar cal; + + public PeriodImpl() { + + } + + public PeriodImpl(Date start, Date end) { + this.start = start; + this.end = end; + } + + final public RaplaType getRaplaType() {return TYPE;} + + public Date getStart() { + return start; + } + + public void setStart(Date start) { + checkWritable(); + this.start = start; + } + + public Date getEnd() { + return end; + } + public void setEnd(Date end) { + checkWritable(); + this.end = end; + } + + public int getWeeks() + { + long diff= end.getTime()-start.getTime(); + return (int)(((diff-1)/WEEK_MILLIS )+ 1); + } + + public String getName(Locale locale) { + return name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + checkWritable(); + this.name = name; + } + + public boolean contains(Date date) { + return (date.before(end) && !date.before(start)); + } + + public int weekOf(Date date) { + Calendar cal = Calendar.getInstance(DateTools.getTimeZone()); + if (!contains(date)) + return -1; + long duration = date.getTime() - start.getTime(); + long weeks = duration / (DateTools.MILLISECONDS_PER_WEEK); + // setTimeInMillis has protected access in JDK 1.3.1 + cal.setTime(new Date(date.getTime() - weeks * DateTools.MILLISECONDS_PER_WEEK)); + int week_of_year = cal.get(Calendar.WEEK_OF_YEAR); + cal.setTime(getStart()); + return ((int)weeks) + 1 + + (((week_of_year) != cal.get(Calendar.WEEK_OF_YEAR))? 1 :0); + } + + public String toString() { + return getName(); + } + + public int compareTo(Date date) { + int result = getEnd().compareTo(date); + if (result == 0) + return 1; + else + return result; + } + + public int compareTo(Period period) { + int result = getStart().compareTo(period.getStart()); + if (result != 0) return result; + + if (equals(period)) + return 0; + + return (hashCode() < period.hashCode()) ? -1 : 1; + } + + public int compareTo(Object o2) { + if (o2 instanceof Date) { + return compareTo((Date) o2); + } + if (o2 instanceof Period) { + return compareTo((Period) o2); + } + throw new ClassCastException("Object needs to be an instance of Date or Period"); + } + + static private void copy(PeriodImpl source,PeriodImpl dest) { + dest.start = source.start; + dest.end = source.end; + dest.name = source.name; + } + + public void copy(Object obj) { + super.copy((PeriodImpl)obj); + copy((PeriodImpl) obj,this); + } + + public Object deepClone() { + PeriodImpl clone = new PeriodImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Object clone() { + PeriodImpl clone = new PeriodImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } +} + + + + diff --git a/src/org/rapla/entities/domain/internal/PermissionImpl.java b/src/org/rapla/entities/domain/internal/PermissionImpl.java new file mode 100644 index 0000000..6355c3e --- /dev/null +++ b/src/org/rapla/entities/domain/internal/PermissionImpl.java @@ -0,0 +1,238 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, of which license fullfill the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.entities.domain.internal; + +import java.util.Date; +import java.util.Iterator; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.ReadOnlyException; +import org.rapla.entities.User; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.internal.ReferenceHandler; + +public class PermissionImpl + implements + Permission + ,EntityReferencer + ,java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + boolean readOnly = false; + ReferenceHandler referenceHandler = new ReferenceHandler(); + Date pEnd = null; + Date pStart = null; + Long maxAdvance = null; + Long minAdvance = null; + int accessLevel = ALLOCATE_CONFLICTS; + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + referenceHandler.resolveEntities( resolver ); + } + + public void setUser(User user) { + checkWritable(); + if (user != null) + referenceHandler.put("group",null); + referenceHandler.put("user",user); + } + + public void setEnd(Date end) { + checkWritable(); + this.pEnd = end; + if ( end != null ) + this.maxAdvance = null; + } + + public Date getEnd() { + return pEnd; + } + + public void setStart(Date start) { + checkWritable(); + this.pStart = start; + if ( start != null ) + this.minAdvance = null; + } + + public Date getStart() { + return pStart; + } + + public void setMinAdvance(Long minAdvance) { + checkWritable(); + this.minAdvance = minAdvance; + if ( minAdvance != null ) + this.pStart = null; + } + + public Long getMinAdvance() { + return minAdvance; + } + + public void setMaxAdvance(Long maxAdvance) { + checkWritable(); + this.maxAdvance = maxAdvance; + if ( maxAdvance != null ) + this.pEnd = null; + } + + public Long getMaxAdvance() { + return maxAdvance; + } + + public void setReadOnly(boolean enable) { + this.readOnly = enable; + } + + public boolean isReadOnly() { + return readOnly; + } + + public void checkWritable() { + if ( readOnly ) + throw new ReadOnlyException( this ); + } + + public boolean affectsUser(User user) { + User pUser = getUser(); + Category pGroup = getGroup(); + if ( pUser == null && pGroup == null ) { + return true; + } + if ( pUser != null && user.equals( pUser ) ) { + return true; + } else if ( pGroup != null ) { + Category[] uGroups = user.getGroups(); + for ( int i = 0; i < uGroups.length; i++ ) { + if ( pGroup.equals ( uGroups[i] ) + || pGroup.isAncestorOf ( uGroups[i] ) + ) { + return true; + } + } + } + return false; + } + + public void setAccessLevel(int accessLevel) { + this.accessLevel = accessLevel; + } + + public int getAccessLevel() { + return accessLevel; + } + + public User getUser() { + return (User) referenceHandler.get("user"); + } + + public void setGroup(Category group) { + if (group != null) + referenceHandler.put("user",null); + referenceHandler.put("group",group); + } + + public Period getPeriod() { + return (Period) referenceHandler.get("period"); + } + + public void setPeriod(Period period) { + referenceHandler.put("period",period); + } + + public ReferenceHandler getReferenceHandler() { + return referenceHandler; + } + + public Iterator getReferences() { + return referenceHandler.getReferences(); + } + + public boolean isRefering( RefEntity object ) { + return referenceHandler.isRefering( object ); + } + + public Category getGroup() { + return (Category) referenceHandler.get("group"); + } + + public Date getMinAllowed(Date today) { + if ( pStart != null ) + return pStart; + if ( minAdvance != null) + return new Date( today.getTime() + + DateTools.MILLISECONDS_PER_DAY * minAdvance.longValue() ); + return null; + } + + public Date getMaxAllowed(Date today) { + if ( pEnd != null ) + return pEnd; + if ( maxAdvance != null) + return new Date( today.getTime() + + DateTools.MILLISECONDS_PER_DAY * (maxAdvance.longValue() + 1) ); + return null; + } + + public boolean covers( Date start, Date end, Date today ) { + if ( pStart != null && (start == null || start.before ( pStart ) ) ) { + //System.out.println( " start before permission "); + return false; + } + if ( pEnd != null && ( end == null || pEnd.before ( end ) ) ) { + //System.out.println( " end before permission "); + return false; + } + if ( minAdvance != null ) { + long pStartTime = today.getTime() + + DateTools.MILLISECONDS_PER_DAY * minAdvance.longValue(); + + if ( start == null || start.getTime() < pStartTime ) { + //System.out.println( " start before permission " + start + " < " + pStartTime ); + return false; + } + } + if ( maxAdvance != null ) { + long pEndTime = today.getTime() + + DateTools.MILLISECONDS_PER_DAY * (maxAdvance.longValue() + 1); + if ( end == null || pEndTime < end.getTime() ) { + //System.out.println( " end after permission " + end + " > " + pEndTime ); + return false; + } + } + return true; + } + + public Object clone() { + PermissionImpl clone = new PermissionImpl(); + // This must be done first + clone.referenceHandler = (ReferenceHandler) referenceHandler.clone(); + clone.accessLevel = accessLevel; + clone.pEnd = pEnd; + clone.pStart = pStart; + clone.minAdvance = minAdvance; + clone.maxAdvance = maxAdvance; + return clone; + } + +} diff --git a/src/org/rapla/entities/domain/internal/RepeatingImpl.java b/src/org/rapla/entities/domain/internal/RepeatingImpl.java new file mode 100644 index 0000000..cf3f041 --- /dev/null +++ b/src/org/rapla/entities/domain/internal/RepeatingImpl.java @@ -0,0 +1,403 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain.internal; +import java.util.Calendar; +import java.util.Date; +import java.util.TreeSet; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.DateTools; +import org.rapla.entities.ReadOnlyException; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.RepeatingType; + +class RepeatingImpl implements Repeating,java.io.Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private boolean readOnly = false; + + private int interval = 1; + private boolean isFixedNumber; + private int number = -1; + private Date end; + private RepeatingType repeatingType; + private TreeSet exceptions; + transient private Date[] exceptionArray; + transient private boolean arrayUpToDate = false; + private Appointment appointment; + private long frequency; + boolean monthly; + boolean yearly; + + RepeatingImpl(RepeatingType type,Appointment appointment) { + setType(type); + setAppointment(appointment); + setNumber( 1) ; + } + + public void setType(RepeatingType repeatingType) { + if ( repeatingType == null ) + { + throw new IllegalStateException("Repeating type cannot be null"); + } + checkWritable(); + this.repeatingType = repeatingType; + monthly = false; + yearly = false; + if (repeatingType.equals( RepeatingType.WEEKLY )) + { + frequency = 7 * DateTools.MILLISECONDS_PER_DAY; + } + else if (repeatingType.equals( RepeatingType.MONTHLY)) + { + frequency = 7 * DateTools.MILLISECONDS_PER_DAY; + monthly = true; + } + else if (repeatingType.equals( RepeatingType.DAILY)) + { + frequency = DateTools.MILLISECONDS_PER_DAY; + } + else if (repeatingType.equals( RepeatingType.YEARLY)) + { + frequency = DateTools.MILLISECONDS_PER_DAY; + yearly = true; + } + else + { + throw new UnsupportedOperationException(" repeatingType " + repeatingType + " not supported"); + } + } + + public RepeatingType getType() { + return repeatingType; + + } + + void setAppointment(Appointment appointment) { + this.appointment = appointment; + } + + public void setReadOnly(boolean enable) { + this.readOnly = enable; + } + + public boolean isReadOnly() { + return readOnly; + } + + public void checkWritable() { + if ( readOnly ) + throw new ReadOnlyException( this ); + } + + public Appointment getAppointment() { + return appointment; + } + + public void setInterval(int interval) { + checkWritable(); + if (interval<1) + interval = 1; + this.interval = interval; + } + + public int getInterval() { + return interval; + } + + public boolean isFixedNumber() { + return isFixedNumber; + } + + public boolean isWeekly() { + return RepeatingType.WEEKLY.equals( getType()); + } + + public boolean isDaily() { + return RepeatingType.DAILY.equals( getType()); + } + + public boolean isMonthly() { + return monthly; + } + + public boolean isYearly() { + return yearly; + } + + public void setEnd(Date end) { + checkWritable(); + isFixedNumber = false; + number = -1; + this.end = end; + } + + transient Date endTime; + public Date getEnd() { + if (!isFixedNumber) + return end; + if ( this.appointment == null) + return null; + + if (endTime == null) + endTime = new Date(); + + if ( number < 1 ) + { + return null; + } + + if ( !isFixedIntervalLength()) + { + int counts = (int) ((number -1) * interval) ; + Calendar cal= DateTools.createGMTCalendar(); + cal.setTime( appointment.getStart()); + for ( int i=0;i< counts;i++) + { + if ( monthly) + { + gotoNextMonth( cal, cal.getTime()); + } + else + { + gotoNextYear( cal, cal.getTime()); + } + + } + return cal.getTime(); + } + else + { + long intervalLength = frequency * interval; + endTime.setTime(DateTools.fillDate( this.appointment.getStart().getTime() + + (this.number -1)* intervalLength + )); + } + return endTime; + } + + /** returns interval-length in milliseconds. + @see #getInterval + */ + public long getFixedIntervalLength() { + return frequency * interval; + } + + public void setNumber(int number) { + checkWritable(); + if (number>-1) { + isFixedNumber = true; + this.number = Math.max(number,1); + } else { + isFixedNumber = false; + this.number = -1; + setEnd(null); + } + + } + + public boolean isException(long time) { + if (!hasExceptions()) + return false; + + Date[] exceptions = getExceptions(); + if (exceptions.length == 0) { + // System.out.println("no exceptions"); + return false; + } + for (int i=0;i-1) + return number; + if (end==null) + return -1; + // System.out.println("End " + end.getTime() + " Start " + appointment.getStart().getTime() + " Duration " + duration); + + if ( isFixedIntervalLength() ) + { + long duration = end.getTime() + - DateTools.fillDate(appointment.getStart().getTime()); + if (duration<0) + return 0; + long intervalLength = getFixedIntervalLength(); + return (int) ((duration/ intervalLength) + 1); + } + else + { + Calendar cal= DateTools.createGMTCalendar(); + int number = 0; + do + { + number ++; + if ( monthly) + { + gotoNextMonth( cal, cal.getTime()); + } + else + { + gotoNextYear( cal, cal.getTime()); + } + } + while ( cal.getTime().before( end)); + return number; + } + + } + + public void addException(Date date) { + checkWritable(); + if (exceptions == null) + exceptions = new TreeSet(); + exceptions.add(date); + arrayUpToDate = false; + } + + public void removeException(Date date) { + checkWritable(); + if (exceptions == null) + return; + exceptions.remove(date); + if (exceptions.size()==0) + exceptions = null; + arrayUpToDate = false; + } + + public void clearExceptions() { + if (exceptions == null) + return; + exceptions.clear(); + exceptions = null; + arrayUpToDate = false; + } + + public String toString() { + StringBuffer buf = new StringBuffer(); + buf.append("Repeating type="); + buf.append(repeatingType); + buf.append(" interval="); + buf.append(interval); + if (isFixedNumber()) { + buf.append(" number="); + buf.append(number); + } else { + if (end != null) { + buf.append(" end-date="); + buf.append(AppointmentImpl.fe(end.getTime())); + } + } + return buf.toString(); + } + + public Object clone() { + RepeatingImpl clone = new RepeatingImpl(repeatingType,appointment); + clone.monthly = monthly; + clone.yearly = yearly; + clone.interval = interval; + clone.isFixedNumber = isFixedNumber; + clone.number = number; + clone.end = end; + clone.interval = interval; + clone.readOnly = false;// clones are always writable + clone.exceptions = (TreeSet) ((exceptions != null) ? exceptions.clone(): null); + return clone; + } + + private static Date[] DATE_ARRAY = new Date[0]; + public Date[] getExceptions() { + if (!arrayUpToDate) { + if (exceptions != null) + exceptionArray = (Date[])exceptions.toArray(DATE_ARRAY); + else + exceptionArray = DATE_ARRAY; + arrayUpToDate = true; + } + return exceptionArray; + } + public boolean hasExceptions() { + return exceptions != null && exceptions.size()>0; + } + + final public long getIntervalLength( long s ) + { + if ( isFixedIntervalLength()) + { + return getFixedIntervalLength(); + } + + Date startDate = new Date(s); + Calendar cal= DateTools.createGMTCalendar(); + if ( monthly) + { + gotoNextMonth( cal, startDate); + } + else + { + gotoNextYear( cal, startDate); + } + Date newDate = cal.getTime(); + long newTime = newDate.getTime(); + Assert.isTrue( newTime > s ); + return newTime- s; + + // yearly + + } + + private void gotoNextMonth( Calendar cal, Date beginDate ) + { + cal.setTime( appointment.getStart()); + int dayofweekinmonth = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + cal.setTime( beginDate); + cal.add( Calendar.WEEK_OF_YEAR, 4); + while ( cal.get( Calendar.DAY_OF_WEEK_IN_MONTH) != dayofweekinmonth ) + { + //System.out.println( new MonthMapper().getName(month)); + cal.add( Calendar.WEEK_OF_YEAR, 1); + } + } + + private void gotoNextYear( Calendar cal, Date beginDate ) + { + cal.setTime( appointment.getStart()); + int dayOfMonth = cal.get( Calendar.DAY_OF_MONTH); + int month = cal.get( Calendar.MONTH); + cal.setTime( beginDate); + cal.add( Calendar.YEAR,1); + while ( cal.get( Calendar.DAY_OF_MONTH) != dayOfMonth) + { + cal.add( Calendar.YEAR,1); + cal.set( Calendar.MONTH, month); + cal.set( Calendar.DAY_OF_MONTH, dayOfMonth); + } + } + + final public boolean isFixedIntervalLength() + { + return !monthly &&!yearly; + } + + +} + diff --git a/src/org/rapla/entities/domain/internal/ReservationImpl.java b/src/org/rapla/entities/domain/internal/ReservationImpl.java new file mode 100644 index 0000000..8cd6b8e --- /dev/null +++ b/src/org/rapla/entities/domain/internal/ReservationImpl.java @@ -0,0 +1,434 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, of which license fullfill the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.domain.internal; +/** The default Implementation of the Reservation + * @see ModificationEvent + * @see org.rapla.facade.ClientFacade + */ +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.iterator.IteratorChain; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.internal.ClassificationImpl; +import org.rapla.entities.internal.ModifiableTimestamp; +import org.rapla.entities.storage.CannotExistWithoutTypeException; +import org.rapla.entities.storage.DynamicTypeDependant; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; + + +public class ReservationImpl extends SimpleEntity implements Reservation,Mementable,java.io.Serializable, ModifiableTimestamp, DynamicTypeDependant +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private ClassificationImpl classification; + private Map restrictions; + private Date lastChanged; + private Date createDate; + private Date slotDate; + transient private boolean allocatableArrayUpToDate = false; + transient private boolean appointmentArrayUpToDate = false; + // The resolved references + transient private Allocatable[] allocatables; + transient private Allocatable[] persons; + transient private Allocatable[] resources; + transient private Appointment[] appointments; + + ReservationImpl() { + this (null, null); + } + + public ReservationImpl( Date createDate, Date lastChanged ) { + this.createDate = createDate; + if (createDate == null) + this.createDate = new Date(); + this.lastChanged = lastChanged; + if (lastChanged == null) + this.lastChanged = this.createDate; + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + super.resolveEntities( resolver); + allocatableArrayUpToDate = false; + appointmentArrayUpToDate = false; + classification.resolveEntities( resolver); + } + + public void setReadOnly(boolean enable) { + super.setReadOnly( enable ); + classification.setReadOnly( enable ); + } + + final public RaplaType getRaplaType() {return TYPE;} + + // Implementation of interface classifiable + public Classification getClassification() { return classification; } + public void setClassification(Classification classification) { + checkWritable(); + this.classification = (ClassificationImpl) classification; + } + + public String getName(Locale locale) { + Classification c = getClassification(); + if (c == null) + return ""; + return c.getName(locale); + } + + public Date getLastChangeTime() { + return lastChanged; + } + + public Date getCreateTime() { + return createDate; + } + + public void setLastChanged(Date date) { + lastChanged = date; + } + + public Appointment[] getAppointments() { + updateAppointmentArray(); + return appointments; + } + + public Iterator getReferences() { + return new IteratorChain + ( + super.getReferences() + ,classification.getReferences() + ) + ; + } + + public boolean isRefering(RefEntity object) { + if (super.isRefering(object)) + return true; + return classification.isRefering(object); + } + + public void addAppointment(Appointment appointment) { + checkWritable(); + if (super.isSubEntity((RefEntity) appointment)) + return; + if (appointment.getReservation() != null + && !this.isIdentical(appointment.getReservation())) + throw new IllegalStateException("Appointment '" + appointment + + "' belongs to another reservation :" + + appointment.getReservation()); + ((AppointmentImpl) appointment).setParent(this); + appointmentArrayUpToDate = false; + super.addEntity((RefEntity)appointment); + } + + + public void removeAppointment(Appointment appointment) { + checkWritable(); + if ( findAppointment( appointment ) == null) + return; + appointmentArrayUpToDate = false; + super.removeEntity((RefEntity)appointment); + clearRestrictions(appointment); + if (this.equals(appointment.getReservation())) + ((AppointmentImpl) appointment).setParent(null); + } + + protected void clearRestrictions(Appointment appointment) { + if (restrictions == null) + return; + Iterator it = restrictions.keySet().iterator(); + ArrayList list = null; + while (it.hasNext()) { + Object key = it.next(); + Appointment[] appointments = (Appointment[]) restrictions.get(key); + for ( int i = 0; i < appointments.length; i++) { + if (list == null) + list = new ArrayList(); + list.add(key); + } + } + if (list == null) + return; + it = list.iterator(); + while (it.hasNext()) { + Object key = it.next(); + Appointment[] appointments = (Appointment[]) restrictions.get(key); + ArrayList newApps = new ArrayList(); + for ( int i=0; i< appointments.length; i++) { + if ( !appointments[i].equals( appointment ) ) { + newApps.add( appointments[i] ); + } + } + setRestrictionForId( key, (Appointment[]) newApps.toArray( Appointment.EMPTY_ARRAY) ); + } + } + + public void addAllocatable(Allocatable allocatable) { + checkWritable(); + if (getReferenceHandler().isRefering((RefEntity)allocatable)) + return; + allocatableArrayUpToDate = false; + getReferenceHandler().add((RefEntity)allocatable); + } + + public void removeAllocatable(Allocatable allocatable) { + checkWritable(); + if (!getReferenceHandler().isRefering((RefEntity)allocatable)) + return; + getReferenceHandler().remove((RefEntity)allocatable); + allocatableArrayUpToDate = false; + } + + public Allocatable[] getAllocatables() { + updateAllocatableArrays(); + return allocatables; + } + + public Allocatable[] getResources() { + updateAllocatableArrays(); + return resources; + } + + public Allocatable[] getPersons() { + updateAllocatableArrays(); + return persons; + } + + private void updateAppointmentArray() { + if (appointmentArrayUpToDate) + return; + Collection appointmentList = new ArrayList(); + Iterator it = super.getSubEntities(); + while (it.hasNext()) { + RefEntity o = (RefEntity) it.next(); + if (o.getRaplaType().equals( Appointment.TYPE) ) { + appointmentList.add(o); + // System.out.println("Appointment " + o + " belongs to reservation " + this); + } + } + + appointments = (Appointment[]) appointmentList.toArray(Appointment.EMPTY_ARRAY); + //notwendig? + //Arrays.sort(appointments, new AppointmentStartComparator()); + } + + private void updateAllocatableArrays() { + if (allocatableArrayUpToDate) + return; + Collection allocatableList = new ArrayList(); + Collection resourceList = new ArrayList(); + Collection personList = new ArrayList(); + Iterator it = super.getReferences(); + while (it.hasNext()) { + RefEntity o = (RefEntity) it.next(); + if (o.getRaplaType().equals( Allocatable.TYPE)) { + if (((Allocatable) o).isPerson()) { + personList.add(o); + } else { + resourceList.add(o); + } + allocatableList.add(o); + } + } + allocatables = (Allocatable[]) allocatableList.toArray(Allocatable.ALLOCATABLE_ARRAY); + persons = (Allocatable[]) personList.toArray(Allocatable.ALLOCATABLE_ARRAY); + resources = (Allocatable[]) resourceList.toArray(Allocatable.ALLOCATABLE_ARRAY); + allocatableArrayUpToDate = true; + } + + public boolean hasAllocated(Allocatable allocatable) { + return getReferenceHandler().isRefering((RefEntity)allocatable); + } + + public boolean hasAllocated(Allocatable allocatable,Appointment appointment) { + if (!hasAllocated(allocatable)) + return false; + Appointment[] restrictions = getRestriction(allocatable); + for ( int i = 0; i < restrictions.length; i++) { + if ( restrictions[i].equals( appointment ) ) + return true; + } + return restrictions.length == 0; + } + + public void setRestriction(Allocatable allocatable,Appointment[] appointments) { + Object id = ((RefEntity)allocatable).getId(); + Assert.notNull(id,"Allocatable object has no ID"); + setRestrictionForId(id,appointments); + } + + public void setRestrictionForId(Object id,Appointment[] appointments) { + if (restrictions == null) + restrictions = new HashMap(); + if (appointments == null || appointments.length == 0) + restrictions.remove(id); + else + restrictions.put(id, appointments); + } + + public void addRestrictionForId(Object id,Appointment appointment) { + if (restrictions == null) + restrictions = new HashMap(); + Appointment[] appointmentsNew; + Appointment[] appointments = (Appointment[])restrictions.get( id ); + if ( appointments != null) + { + appointmentsNew = new Appointment[appointments.length + 1]; + System.arraycopy( appointments, 0,appointmentsNew, 0, appointments.length ); + } + else + { + appointmentsNew = new Appointment[1]; + } + appointmentsNew[appointmentsNew.length -1] = appointment; + restrictions.put(id, appointmentsNew); + } + + public Appointment[] getRestriction(Allocatable allocatable) { + Object id = ((RefEntity)allocatable).getId(); + Assert.notNull(id,"Allocatable object has no ID"); + if (restrictions != null) { + Appointment[] restriction = (Appointment[]) restrictions.get(id); + if (restriction != null) + return restriction; + } + return Appointment.EMPTY_ARRAY; + } + + public Appointment[] getAppointmentsFor(Allocatable allocatable) { + Appointment[] restrictedAppointments = getRestriction( allocatable); + if ( restrictedAppointments.length == 0) + return getAppointments(); + else + return restrictedAppointments; + } + + public Allocatable[] getRestrictedAllocatables(Appointment appointment) { + HashSet set = new HashSet(); + Allocatable[] allocatables = getAllocatables(); + for (int i=0;istring +
  • int
  • +
  • date
  • +
  • boolean
  • +
  • rapla:category
  • +@see DynamicType */ +public interface Attribute extends RaplaObject,MultiLanguageNamed,Annotatable { + + final RaplaType TYPE = new RaplaType(Attribute.class, "attribute"); + + AttributeType getType(); + /** Set the type of the Attribute. +Warning: Changing the type after initialization can lead to data loss, + if there are already classifications that use this attribute and the classification value + can't be converted to the new type. Example a non numerical string can't be converted to an int.*/ + void setType(AttributeType type); + void setKey(String key); + /** The Key is identifier in string-form. Keys could be helpfull + for interaction with other modules. An Invoice-Plugin could + work on attributes with a "price" key. Keys also allow for a + better readability of the XML-File. Changing of a key is + possible, but should be used with care. + */ + String getKey(); + Object defaultValue(); + /** converts the passed value to fit the attributes type. + Example Conversions are: +
      +
    • to string: The result of the method toString() will be the new value.
    • +
    • boolean to int: The new value will be 1 when the oldValue is true. Otherwise it is 0.
    • +
    • other types to int: First the value will be converted to string-type. And then the + trimmed string will be parsed for Integer-values. If that is not possible the new value will + be null
    • +
    • to boolean: First the value will be converted to string-type. If the trimmed string equals + "0" or "false" the new value is false. Otherwise it is true
    • +
    + + */ + Object convertValue(Object oldValue); + /** Checks if the passed value matches the attribute type or needs conversion. + @see #convertValue + */ + boolean needsChange(Object value); + + boolean isValid(Object object); + boolean isOptional(); + void setOptional(boolean bOptional); + Object getConstraint(String key); + Class getConstraintClass(String key); + void setConstraint(String key,Object constraint); + String[] getConstraintKeys(); + DynamicType getDynamicType(); + + public static final Attribute[] ATTRIBUTE_ARRAY = new Attribute[0]; + + void setDefaultValue(Object value); + +} + + + + diff --git a/src/org/rapla/entities/dynamictype/AttributeAnnotations.java b/src/org/rapla/entities/dynamictype/AttributeAnnotations.java new file mode 100644 index 0000000..91924ed --- /dev/null +++ b/src/org/rapla/entities/dynamictype/AttributeAnnotations.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + +public interface AttributeAnnotations{ + + String KEY_EDIT_VIEW = "edit-view"; + String KEY_EXPECTED_ROWS = "expected-rows"; + String KEY_EXPECTED_COLUMNS = "expected-columns"; + String VALUE_MAIN_VIEW = "main-view"; + String VALUE_ADDITIONAL_VIEW = "additional-view"; + String VALUE_NO_VIEW = "no-view"; + + + +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/dynamictype/AttributeType.java b/src/org/rapla/entities/dynamictype/AttributeType.java new file mode 100644 index 0000000..00a0ce6 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/AttributeType.java @@ -0,0 +1,76 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** Attributes are to DynamicTypes, what properties are to Beans. +Currently Rapla supports the following types: +
  • string
  • +
  • int
  • +
  • date
  • +
  • boolean
  • +
  • rapla:category
  • +@see DynamicType */ +public class AttributeType implements Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private String type; + + static public AttributeType STRING = new AttributeType("string"); + static public AttributeType INT = new AttributeType("int"); + static public AttributeType DATE = new AttributeType("date"); + static public AttributeType BOOLEAN = new AttributeType("boolean"); + static public AttributeType CATEGORY = new AttributeType("rapla:category"); + + private static Map types; + + private AttributeType(String type) { + this.type = type; + if (types == null) { + types = new HashMap(); + } + types.put( type, this); + } + + public boolean is(AttributeType other) { + if ( other == null) + return false; + return type.equals( other.type); + } + + public static AttributeType findForString(String string ) { + return (AttributeType) types.get( string ); + } + + public String toString() { + return type; + } + + public boolean equals( Object other) { + if ( !(other instanceof AttributeType)) + return false; + return is( (AttributeType)other); + } + + public int hashCode() { + return type.hashCode(); + } +} + + + + diff --git a/src/org/rapla/entities/dynamictype/Classifiable.java b/src/org/rapla/entities/dynamictype/Classifiable.java new file mode 100644 index 0000000..684b59a --- /dev/null +++ b/src/org/rapla/entities/dynamictype/Classifiable.java @@ -0,0 +1,32 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + + +/** This Interfaces is implemented by all Rapla-Objects that can + * have classification information: Reservation, Resource, Person. + * @see Classification + */ +public interface Classifiable { + Classification getClassification(); + void setClassification(Classification classification); + + final Classifiable[] CLASSIFIABLE_ARRAY = new Classifiable[0]; +} + + + + + + + diff --git a/src/org/rapla/entities/dynamictype/Classification.java b/src/org/rapla/entities/dynamictype/Classification.java new file mode 100644 index 0000000..d0c12db --- /dev/null +++ b/src/org/rapla/entities/dynamictype/Classification.java @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; +import java.util.Locale; + +import org.rapla.entities.Named; +/** A Classification is an instance of a DynamicType. It holds the + * attribute values for the attributesof the corresponding type. You + * need one classification for each object you want to + * classify. + */ +public interface Classification extends Named,Cloneable { + DynamicType getType(); + String getName(Locale locale); + Attribute[] getAttributes(); + Attribute getAttribute(String key); + void setValue(Attribute attribute,Object value); + /** calls setValue(getAttribte(key),value)*/ + void setValue(String key,Object value); + /** calls getValue(getAttribte(key))*/ + Object getValue(Attribute attribute); + Object getValue(String key); + /** returns the value as a String in the selected locale.*/ + String getValueAsString(Attribute attribute,Locale locale); + Object clone(); +} + + + + diff --git a/src/org/rapla/entities/dynamictype/ClassificationFilter.java b/src/org/rapla/entities/dynamictype/ClassificationFilter.java new file mode 100644 index 0000000..62299c0 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/ClassificationFilter.java @@ -0,0 +1,113 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + +import java.util.Iterator; + +/**

    A new ClassificationFilter for a classifications belonging to the + same DynamicType can be created by the newClassificationFilter of + the corresponding DynamicType object. +

    + +

    You can set rules for the attributes of the DynamicType. A + Classification (object implementing Classifiable) is matched by + the filter when the conditions for each attribute-rule are + matched (AND - function).

    + +

    A condition is an array of size 2, the first field contains the + operator of the condition and the second the test value. + When an attribute-rule has more than one condition, at least + one of the conditions must be matched (OR - function ) . +

    +

    + The following Example matches all classifications + with a title-value that contains either "rapla" or "sourceforge" + ,a size-value that is > 5 and a category-department-value that + is either the departmentA or the departmentB. +

    + +
    +       DynamicType eventType = facade.getDynamicType("event");
    +       ClassificationFilter f = eventType.newClassificationFilter();
    +       f.addRule(
    +                 "title"
    +                 ,new Object {
    +                    {"contains", "rapla"}
    +                    ,{"contains", "sourceforge"}
    +                  });
    +      f.addRule(
    +                 "size"
    +                 ,new Object{
    +                      {">", new Integer(5)}
    +                  });
    +
    +	   Category departemntCategory = facade.getRootCategory().getCategory("departments");
    +       Category departmentA = departmentCategory.getCategory("departmentA");
    +       Category departmentB = departmentCategory.getCategory("departmentB");
    +       f.addRule(
    +                 "department"
    +                 ,new Object{
    +                      {"=", departmentA}
    +                     ,{ "=", departmentB}
    +                  });
    +    
    + + @see Classification + */ +public interface ClassificationFilter extends Cloneable { + DynamicType getType(); + + /** Defines a rule for the passed attribute. + */ + void setRule(int index, String attributeName,Object[][] conditions); + void setRule(int index, Attribute attribute,Object[][] conditions); + /** appends a rule. + * @see #setRule*/ + void addRule(String attributeName,Object[][] conditions); + + /** shortcut to + *
    +     * f.addRule(
    +                 attributeName
    +                 ,new Object{
    +                            {"=", object}}
    +                  });
    +     * 
    + * @param attributeName + * @param object + */ + void addEqualsRule( String attributeName,Object object); + /** shortcut to + *
    +     * f.addRule(
    +                 attributeName
    +                 ,new Object{
    +                            {"is", object}}
    +                  });
    +     * 
    + * @param attributeName + * @param object + */ + void addIsRule( String attributeName,Object object); + int ruleSize(); + Iterator ruleIterator(); + void removeAllRules(); + void removeRule(int index); + + boolean matches(Classification classification); + Object clone(); + + final ClassificationFilter[] CLASSIFICATIONFILTER_ARRAY = new ClassificationFilter[0]; + ClassificationFilter[] toArray(); +} + diff --git a/src/org/rapla/entities/dynamictype/ClassificationFilterRule.java b/src/org/rapla/entities/dynamictype/ClassificationFilterRule.java new file mode 100644 index 0000000..6482a99 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/ClassificationFilterRule.java @@ -0,0 +1,22 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + + +public interface ClassificationFilterRule { + public Attribute getAttribute(); + public String[] getOperators(); + public Object[] getValues(); + +} + diff --git a/src/org/rapla/entities/dynamictype/ConstraintIds.java b/src/org/rapla/entities/dynamictype/ConstraintIds.java new file mode 100644 index 0000000..b666841 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/ConstraintIds.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + +public interface ConstraintIds{ + String KEY_ROOT_CATEGORY="root-category"; +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/dynamictype/DynamicType.java b/src/org/rapla/entities/dynamictype/DynamicType.java new file mode 100644 index 0000000..0e7b701 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/DynamicType.java @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + +import org.rapla.entities.Annotatable; +import org.rapla.entities.Entity; +import org.rapla.entities.MultiLanguageNamed; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; + +/** In rapla it is possible to dynamicly classify a reservation, resource or person with + customized attributes. You can for example define a dynamicType called room with the + attributes name and seats and classify all your room-resources as room. + */ +public interface DynamicType extends Entity,RaplaObject,MultiLanguageNamed,Annotatable +{ + final RaplaType TYPE = new RaplaType(DynamicType.class, "dynamictype"); + + Attribute[] getAttributes(); + /** returns null if the attribute is not found */ + Attribute getAttribute(String key); + void addAttribute(Attribute attribute); + + /** find an attribute in the dynamic type that equals the specified attribute This is usefull if you have the + * persistant version of an attribute and want to discover the editable version in the working copy of a dynamic type */ + Attribute findAttribute(Attribute attribute); + + boolean hasAttribute(Attribute attribute); + void removeAttribute(Attribute attribute); + /** exchange the two attribute positions */ + void exchangeAttributes(int index1, int index2); + void setElementKey(String elementKey); + String getElementKey(); + /* creates a new classification + * @throws IllegalStateException when called from a non persistant instance of DynamicType */ + Classification newClassification(); + /* creates a new classification and tries to fill it with the values of the originalClassification. + * @throws IllegalStateException when called from a non persistant instance of DynamicType */ + Classification newClassification(Classification originalClassification); + /* @throws IllegalStateException when called from a non persistant instance of DynamicType */ + ClassificationFilter newClassificationFilter(); + + final DynamicType[] DYNAMICTYPE_ARRAY = new DynamicType[0]; +} + + + + diff --git a/src/org/rapla/entities/dynamictype/DynamicTypeAnnotations.java b/src/org/rapla/entities/dynamictype/DynamicTypeAnnotations.java new file mode 100644 index 0000000..4a0c882 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/DynamicTypeAnnotations.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype; + +public interface DynamicTypeAnnotations{ + + String KEY_NAME_FORMAT="nameformat"; + String KEY_COLOR_ATTRIBUTE_KEY="color-attribute-key"; + String KEY_CLASSIFICATION_TYPE="classification-type"; + String VALUE_RESOURCE_CLASSIFICATION="resource"; + String VALUE_RESERVATION_CLASSIFICATION="reservation"; + String VALUE_PERSON_CLASSIFICATION="person"; + + + +} + + + + + + + + + + + + diff --git a/src/org/rapla/entities/dynamictype/internal/AttributeImpl.java b/src/org/rapla/entities/dynamictype/internal/AttributeImpl.java new file mode 100644 index 0000000..1fbcbd5 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/internal/AttributeImpl.java @@ -0,0 +1,415 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype.internal; +import java.text.ParseException; +import java.util.Date; +import java.util.HashMap; +import java.util.Locale; + +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.components.util.Tools; +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.IllegalAnnotationException; +import org.rapla.entities.MultiLanguageName; +import org.rapla.entities.RaplaType; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; +import org.rapla.storage.LocalCache; + +public class AttributeImpl extends SimpleEntity implements Attribute,Mementable,java.io.Serializable { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 2; + + private MultiLanguageName name = new MultiLanguageName(); + private AttributeType type; + private String key; + private boolean bOptional = false; + private HashMap annotations = new HashMap(); + private Object defaultValue =null; + + public final static AttributeType DEFAULT_TYPE = AttributeType.STRING; + + public AttributeImpl() { + this.type = DEFAULT_TYPE; + } + + public AttributeImpl(AttributeType type) { + setType(type); + } + + void setParent(DynamicType parent) { + getReferenceHandler().put("parent",parent); + } + + public DynamicType getDynamicType() { + return (DynamicType)getReferenceHandler().get("parent"); + } + + final public RaplaType getRaplaType() {return TYPE;} + + public AttributeType getType() { + return type; + } + + public void setType(AttributeType type) + { + Object oldValue = defaultValue; + if ( type.equals( AttributeType.CATEGORY)) + { + oldValue = getReferenceHandler().get("default.category"); + } + this.type = type; + defaultValue = convertValue( oldValue); + } + + public MultiLanguageName getName() { + return name; + } + + public void setReadOnly(boolean enable) { + super.setReadOnly( enable ); + name.setReadOnly( enable ); + } + + public String getName(Locale locale) { + return name.getName(locale.getLanguage()); + } + + public String getKey() { + return key; + } + + public void setConstraint(String key,Object constraint) { + checkWritable(); + if ( getConstraintClass( key ) == Category.class ) { + getReferenceHandler().put("constraint." + key,(Category)constraint); + } + } + + public void setDefaultValue(Object object) + { + defaultValue = object; + if ( type.equals( AttributeType.CATEGORY)) + { + getReferenceHandler().put("default.category",(Category)object); + } + } + + public Object getConstraint(String key) { + if ( getConstraintClass( key ) == Category.class ) { + return getReferenceHandler().get("constraint." + key); + } + return null; + } + + public Class getConstraintClass(String key) { + if (key.equals(ConstraintIds.KEY_ROOT_CATEGORY)) { + return Category.class; + } + return String.class; + } + + public String[] getConstraintKeys() { + if (type.equals( AttributeType.CATEGORY)) { + return new String[] {ConstraintIds.KEY_ROOT_CATEGORY}; + } else { + return new String[0]; + } + } + + public void setKey(String key) { + checkWritable(); + this.key = key; + } + + public boolean isValid(Object obj) { + return true; + } + + public boolean isOptional() { + return bOptional; + } + + public void setOptional(boolean bOptional) { + checkWritable(); + this.bOptional = bOptional; + } + + public Object defaultValue() + { + return defaultValue; + } + + public boolean needsChange(Object value) { + if (value == null) + return false; + + if (type.equals( AttributeType.STRING )) { + return !(value instanceof String); + } + if (type.equals( AttributeType.INT )) { + return !(value instanceof Long); + } + if (type.equals( AttributeType.DATE )) { + return !(value instanceof Date); + } + if (type.equals( AttributeType.BOOLEAN )) { + return !(value instanceof Boolean); + } + if (type.equals( AttributeType.CATEGORY )) { + if (!(value instanceof Category)) + return true; + + Category temp = (Category) value; + + // look if the attribute category is a ancestor of the value category + Category rootCategory = (Category) getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + boolean change = ( rootCategory == null || !rootCategory.isAncestorOf( temp )); + return change; + } + return false; + } + + public Object convertValue(Object value) { + if (type.equals( AttributeType.STRING )) { + if (value == null) + return null; + return value.toString(); + } + if (type.equals( AttributeType.DATE )) { + if (value == null) + return null; + else if (value instanceof Date) + return value; + return null; + } + if (type.equals( AttributeType.INT )) { + if (value == null) + return null; + + if (value instanceof Boolean) + return ((Boolean) value).booleanValue() ? new Long(1) : new Long(0); + String str = value.toString().trim().toLowerCase(); + try { + return new Long(str); + } catch (NumberFormatException ex) { + return null; + } + } + if (type.equals( AttributeType.BOOLEAN )) { + if (value == null) + return Boolean.FALSE; + String str = value.toString().trim().toLowerCase(); + if (str.equals("")) + { + return Boolean.FALSE; + } + if (str.equals("0") || str.equals("false")) + return Boolean.FALSE; + else + return Boolean.TRUE; + } + if (type.equals( AttributeType.CATEGORY )) { + if (value == null) + return null; + if (value instanceof Category) { + Category temp = (Category) value; + Category rootCategory = (Category) getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + if ( temp != null + && rootCategory != null + && rootCategory.isAncestorOf( temp ) + ) { + return value; + } + } + } + return null; + } + + public String getAnnotation(String key) { + return (String) annotations.get(key); + } + + public String getAnnotation(String key, String defaultValue) { + String annotation = getAnnotation( key ); + return annotation != null ? annotation : defaultValue; + } + + public void setAnnotation(String key,String annotation) throws IllegalAnnotationException { + checkWritable(); + if (annotation == null) { + annotations.remove(key); + return; + } + annotations.put(key,annotation); + } + + public String[] getAnnotationKeys() { + return (String[]) annotations.keySet().toArray(Tools.EMPTY_STRING_ARRAY); + } + + + static private void copy(AttributeImpl source,AttributeImpl dest) { + dest.name = (MultiLanguageName) source.name.clone(); + dest.annotations = (HashMap) source.annotations.clone(); + dest.type = source.getType(); + dest.setKey(source.getKey()); + dest.setOptional(source.isOptional()); + String[] constraintKeys = source.getConstraintKeys(); + for ( int i = 0;i < constraintKeys.length; i++) { + String key = constraintKeys[ i ]; + dest.setConstraint( key, source.getConstraint(key)); + } + dest.setDefaultValue( source.defaultValue()); + } + + public void copy(Object obj) { + super.copy((AttributeImpl)obj); + copy((AttributeImpl) obj,this); + } + + public Object deepClone() { + AttributeImpl clone = new AttributeImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Object clone() { + AttributeImpl clone = new AttributeImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } + + public String toString() { + MultiLanguageName name = getName(); + if (name != null) { + return name.toString()+ " ID='" + getId() + "'"; + } else { + return getKey() + " " + getId(); + } + } + + /** @param idResolver if this is set the category will be resolved over the id value*/ + static public Object parseAttributeValue(Attribute attribute,String text, EntityResolver idResolver) throws ParseException { + AttributeType type = attribute.getType(); + final String trim = text.trim(); + if (type.equals( AttributeType.STRING )) { + return trim; + } + else if (type.equals( AttributeType.CATEGORY )) { + String path = trim; + if (path.length() == 0) { + return null; + } + if (idResolver != null) { + try { + Object id = LocalCache.getId( Category.TYPE, path); + return (Category) idResolver.resolve( id ); + } catch (EntityNotFoundException ex) { + throw new ParseException(ex.getMessage(), 0); + } + } else { + CategoryImpl rootCategory = (CategoryImpl)attribute.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + if (rootCategory == null) { + //System.out.println( attribute.getConstraintKeys()); + throw new ParseException("Can't find " + ConstraintIds.KEY_ROOT_CATEGORY + " for attribute " + attribute, 0); + } + try { + return rootCategory.getCategoryFromPath(path); + } catch (Exception ex) { + throw new ParseException(ex.getMessage(), 0); + } + } + } else if (trim.length() == 0) + { + return null; + } + else if (type.equals(AttributeType.BOOLEAN)) { + return trim.equals("true") ? + Boolean.TRUE : Boolean.FALSE; + } else if (type.equals( AttributeType.DATE )) { + return new SerializableDateTimeFormat().parseDate( trim, false); + } else if (type.equals( AttributeType.INT)) { + try { + return new Long( trim ); + } catch (NumberFormatException ex) { + throw new ParseException( ex.getMessage(), 0); + } + } + + throw new ParseException("Unknown attribute type: " + type , 0); + } + + public static String attributeValueToString( Attribute attribute, Object value, boolean idOnly) throws EntityNotFoundException { + AttributeType type = attribute.getType(); + if (type.equals( AttributeType.CATEGORY )) + { + CategoryImpl rootCategory = (CategoryImpl) attribute.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + if ( idOnly) { + return ((RefEntity)value).getId().toString(); + } else { + return rootCategory.getPathForCategory((Category)value) ; + } + } + else if (type.equals( AttributeType.DATE )) + { + return new SerializableDateTimeFormat().formatDate( (Date)value ) ; + } + else + { + return value.toString() ; + } + } + + static public class IntStrategy { + String[] constraintKeys = new String[] {"min","max"}; + + public String[] getConstraintKeys() { + return constraintKeys; + } + + public boolean needsChange(Object value) { + return !(value instanceof Long); + } + + public Object convertValue(Object value) { + if (value == null) + return null; + + if (value instanceof Boolean) + return ((Boolean) value).booleanValue() ? new Long(1) : new Long(0); + String str = value.toString().trim().toLowerCase(); + try { + return new Long(str); + } catch (NumberFormatException ex) { + return null; + } + } + } + +} + + + + + diff --git a/src/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl.java b/src/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl.java new file mode 100644 index 0000000..44257d8 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/internal/ClassificationFilterImpl.java @@ -0,0 +1,386 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype.internal; + +import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.iterator.IteratorChain; +import org.rapla.components.util.iterator.NestedIterator; +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.ReadOnlyException; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.ClassificationFilterRule; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.CannotExistWithoutTypeException; +import org.rapla.entities.storage.DynamicTypeDependant; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.ReferenceHandler; + +public final class ClassificationFilterImpl + implements + ClassificationFilter + ,DynamicTypeDependant + ,EntityReferencer + ,java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + boolean readOnly; + + LinkedList list = new LinkedList(); + transient boolean arrayUpToDate = false; + transient ClassificationFilterRuleImpl[] rulesArray; + ReferenceHandler referenceHandler = new ReferenceHandler(); + + ClassificationFilterImpl(DynamicType dynamicType) { + referenceHandler.put("parent",dynamicType); + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + referenceHandler.resolveEntities( resolver ); + for (Iterator it=list.iterator();it.hasNext();) + { + ((ClassificationFilterRuleImpl) it.next()).resolveEntities( resolver ); + } + } + + public DynamicType getType() { + return (DynamicType) referenceHandler.get("parent"); + } + + public boolean isRefering(RefEntity object) { + if (referenceHandler.isRefering(object)) + return true; + ClassificationFilterRuleImpl[] rules = getRules(); + for (int i=0;i")) + return; + if (operator.equals("=")) + return; + if (operator.equals("contains")) + return; + if (operator.equals("is")) + return; + if (operator.equals("<=")) + return; + if (operator.equals(">=")) + return; + if (operator.equals("<>")) + return; + throw new IllegalArgumentException("operator '" + operator + "' not supported!"); + } + + public void addEqualsRule( String attributeName, Object object ) + { + addRule( attributeName, new Object[][] {{"=",object}}); + } + + public void addIsRule( String attributeName, Object object ) + { + addRule( attributeName, new Object[][] {{"is",object}}); + } + + + public int ruleSize() { + return list.size(); + } + + public Iterator ruleIterator() { + return list.iterator(); + } + + public void removeAllRules() { + checkWritable(); + list.clear(); + arrayUpToDate = false; + } + + public void removeRule(int index) { + checkWritable(); + list.remove(index); + arrayUpToDate = false; + //System.out.println("Rule " + index + " for '" + dynamicType + "' removed."); + } + + private ClassificationFilterRuleImpl[] getRules() { + if (!arrayUpToDate) + rulesArray = (ClassificationFilterRuleImpl[]) list.toArray(new ClassificationFilterRuleImpl[0]); + arrayUpToDate = true; + return rulesArray; + } + + public boolean matches(Classification classification) { + if (!getType().equals(classification.getType())) + return false; + ClassificationFilterRule[] rules = getRules(); + for (int i=0;i=0); + } + } + else if (type.equals( AttributeType.BOOLEAN)) + { + Boolean boolean1 = (Boolean)ruleValue; + Boolean boolean2 = (Boolean)value; + if (boolean1 == null) + { + return (boolean2 == null || boolean2.booleanValue()); + } + if (boolean2 == null) + { + return !boolean1.booleanValue(); + } + return (boolean1.equals(boolean2)); + } + else if (type.equals( AttributeType.INT) || type.equals(AttributeType.DATE)) + { + if(ruleValue == null) { + if (operator.equals("<>")) + if(value == null) + return false; + else + return true; + else if (operator.equals("=")) + if(value == null) + return true; + else + return false; + else + return false; + } + + if(value == null) + return false; + + long long1 = type.equals( AttributeType.INT) ? ((Long) value).longValue() : ((Date) value).getTime(); + long long2 = type.equals( AttributeType.INT) ? ((Long) ruleValue).longValue() : ((Date) ruleValue).getTime(); + + if (operator.equals("<")) + { + return long1 < long2; + } + else if (operator.equals("=")) + { + return long1 == long2; + } + else if (operator.equals(">")) + { + return long1 > long2; + } + else if (operator.equals(">=")) + { + return long1 >= long2; + } + else if (operator.equals("<=")) + { + return long1 >= long2; + } + else if (operator.equals("<>")) + { + return long1 != long2; + } + } + + return false; + } + + boolean hasType(DynamicType type) { + return getType().equals( type); + } + + public boolean needsChange(DynamicType newType) { + if (!hasType( newType )) + return false; + + if ( !newType.getElementKey().equals( getType().getElementKey())) + return true; + + ClassificationFilterRuleImpl[] rules = getRules(); + for (int i=0;inewClassification() of class DynamicType to + * create a classification. Once created it is not possible to change the + * type of a classifiction. But you can replace the classification of an + * object implementing Classifiable with a new one. + * @see DynamicType + * @see org.rapla.entities.dynamictype.Classifiable + */ +public class ClassificationImpl implements Classification,java.io.Serializable, DynamicTypeDependant, EntityReferencer { + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + boolean readOnly = false; + + transient String nameString; + transient boolean isNameUpToDate; + transient ParsedAnnotation lastParsedAnnotation; + + /** stores the nonreference values like integers,boolean and string.*/ + HashMap attributeValueMap = new HashMap(); + + /** stores the references to the dynamictype and the reference values */ + ReferenceHandler referenceHandler = new ReferenceHandler(); + + + ClassificationImpl(DynamicType dynamicType) { + referenceHandler.put("parent",dynamicType); + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + referenceHandler.resolveEntities( resolver); + } + + public void setReadOnly(boolean enable) { + this.readOnly = enable; + } + + public boolean isReadOnly() { + return readOnly; + } + + public void checkWritable() { + if ( readOnly ) + throw new ReadOnlyException( this ); + } + + public boolean isRefering(RefEntity obj) { + return referenceHandler.isRefering(obj); + } + + public Iterator getReferences() { + return referenceHandler.getReferences(); + } + + public DynamicType getType() { + return (DynamicType) referenceHandler.get("parent"); + } + + public String getName(Locale locale) { + DynamicTypeImpl type = (DynamicTypeImpl)getType(); + ParsedAnnotation parsedAnnotation = type.getParsedAnnotation( DynamicTypeAnnotations.KEY_NAME_FORMAT ); + if ( parsedAnnotation == null) { + return type.toString(); + } + + if (isNameUpToDate) + { + if (parsedAnnotation.equals(lastParsedAnnotation)) + return nameString; + } + lastParsedAnnotation = parsedAnnotation; + nameString = parsedAnnotation.formatName(type, this, locale); + isNameUpToDate = true; + return nameString; + } + + public String getValueAsString(Attribute attribute,Locale locale) + { + Object value = getValue(attribute); + if (value == null) + return ""; + if (value instanceof Category) { + Category rootCategory = (Category) attribute.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + return ((Category) value).getPath(rootCategory, locale); + } + if (value instanceof Date) { + DateFormat format = DateFormat.getDateInstance(DateFormat.MEDIUM,locale); + format.setTimeZone(DateTools.getTimeZone()); + return format.format((Date) value); + } else { + return value.toString(); + } + } + + public Attribute getAttribute(String key) { + return getType().getAttribute(key); + } + + public Attribute[] getAttributes() { + return getType().getAttributes(); + } + + public boolean needsChange(DynamicType newType) { + if ( !hasType (newType )) { + return false; + } + if ( !newType.getElementKey().equals( getType().getElementKey())) + return true; + Iterator it = referenceHandler.getReferenceKeys(); + while (it.hasNext()) { + String referenceKey = (String)it.next(); + RefEntity attribute = ((RefEntity)findAttributeByReferenceKey( getType(), referenceKey)); + if (attribute == null) + continue; + + if (((DynamicTypeImpl)getType()).hasAttributeChanged( (DynamicTypeImpl)newType , attribute.getId())) + return true; + } + it = attributeValueMap.keySet().iterator(); + while (it.hasNext()) { + Object id = it.next(); + if (((DynamicTypeImpl)getType()).hasAttributeChanged( (DynamicTypeImpl)newType , id)) + return true; + } + return false; + } + + boolean hasType(DynamicType type) { + return getType().equals( type); + } + + public void commitChange(DynamicType type) { + if ( !hasType (type )) { + return; + } + // update referenced values + referenceHandler.put("parent", type); + Iterator it = referenceHandler.getReferenceKeys(); + Collection attributes = new ArrayList(); + Collection removedKeys = new ArrayList(); + Collection removedIds = new ArrayList(); + while (it.hasNext()) { + String referenceKey = (String)it.next(); + if ( referenceKey.equals ("parent") ) + continue; + Attribute attribute = findAttributeByReferenceKey(type, referenceKey ) ; + if (attribute != null ) + attributes.add( attribute); + else + removedKeys.add( referenceKey ); + } + it = attributeValueMap.keySet().iterator(); + while (it.hasNext()) { + Object id = it.next(); + Attribute attribute = findAttribute(type, id ); + if (attribute != null) { + attributes.add ( attribute ); + } else { + removedIds.add( id ); + } + } + + it = attributes.iterator(); + while (it.hasNext()) { + Attribute attribute = (Attribute)it.next(); + Object oldValue = getValue( attribute); + Object newValue = attribute.convertValue(oldValue); + setValue( attribute,newValue); + } + + it = removedKeys.iterator(); + while (it.hasNext()) { + referenceHandler.removeId ( it.next().toString() ); + } + it = removedIds.iterator(); + while (it.hasNext()) { + attributeValueMap.remove ( it.next().toString() ); + } + isNameUpToDate = false; + } + + /** find the attribute of the given type that matches the id */ + private Attribute findAttribute(DynamicType type,Object id) { + Attribute[] typeAttributes = type.getAttributes(); + for (int i=0; i 0) + buf.append(", "); + buf.append( att[i].getKey()); + buf.append("="); + buf.append( getValue( att[i])); + } + return buf.toString(); + } + + public void commitRemove(DynamicType type) throws CannotExistWithoutTypeException + { + throw new CannotExistWithoutTypeException(); + } +} \ No newline at end of file diff --git a/src/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.java b/src/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.java new file mode 100644 index 0000000..4a22ff0 --- /dev/null +++ b/src/org/rapla/entities/dynamictype/internal/DynamicTypeImpl.java @@ -0,0 +1,350 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.dynamictype.internal; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; + +import org.rapla.components.util.Tools; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.IllegalAnnotationException; +import org.rapla.entities.MultiLanguageName; +import org.rapla.entities.Named; +import org.rapla.entities.RaplaType; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; + +public class DynamicTypeImpl extends SimpleEntity implements DynamicType,Named,Mementable,java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 2; + + // added an attribute array for performance reasons + transient private boolean attributeArrayUpToDate = false; + transient Attribute[] attributes; + + MultiLanguageName name = new MultiLanguageName(); + String elementKey = ""; + + HashMap annotations = new HashMap(); + + public DynamicTypeImpl() { + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + super.resolveEntities( resolver); + attributeArrayUpToDate = false; + } + + public RaplaType getRaplaType() {return TYPE;} + + public Classification newClassification() { + if ( !isPersistant()) { + throw new IllegalStateException("You can only create Classifications from a persistant Version of DynamicType"); + } + final ClassificationImpl classification = new ClassificationImpl(this); + // Array could not be up todate + final Attribute[] attributes2 = getAttributes(); + for ( Attribute att: attributes2) + { + final Object defaultValue = att.defaultValue(); + if ( defaultValue != null) + { + classification.setValue(att, defaultValue); + } + } + return classification; + } + + public Classification newClassification(Classification original) { + if ( !isPersistant()) { + throw new IllegalStateException("You can only create Classifications from a persistant Version of DynamicType"); + } + final ClassificationImpl newClassification = (ClassificationImpl) newClassification(); + { + Attribute[] attributes = original.getAttributes(); + for (int i=0;i 0) + buf.append(", "); + buf.append( att[i].getKey()); + } + } + return buf.toString(); + } + + /** + * @param newType + * @param attributeId + */ + public boolean hasAttributeChanged(DynamicTypeImpl newType, Object attributeId) { + Attribute oldAttribute = findAttributeForId(attributeId ); + Attribute newAttribute = newType.findAttributeForId(attributeId ); + if ((newAttribute == null ) || ( oldAttribute == null)) { + return true; + } + if ( !newAttribute.getKey().equals( oldAttribute.getKey() )) { + return true; + } + if ( !newAttribute.getType().equals( oldAttribute.getType())) { + return true; + } + { + String[] keys = newAttribute.getConstraintKeys(); + String[] oldKeys = oldAttribute.getConstraintKeys(); + if ( keys.length != oldKeys.length) { + return true; + } + for ( int i=0;i< keys.length;i++) { + if ( !keys[i].equals( oldKeys[i]) ) + return true; + Object oldConstr = oldAttribute.getConstraint( keys[i]); + Object newConstr = newAttribute.getConstraint( keys[i]); + if ( oldConstr == null && newConstr == null) + continue; + if ( oldConstr == null || newConstr == null) + return true; + + if ( !oldConstr.equals( newConstr)) + return true; + } + } + return false; + } + +} + + diff --git a/src/org/rapla/entities/dynamictype/internal/ParsedAnnotation.java b/src/org/rapla/entities/dynamictype/internal/ParsedAnnotation.java new file mode 100644 index 0000000..6034a7b --- /dev/null +++ b/src/org/rapla/entities/dynamictype/internal/ParsedAnnotation.java @@ -0,0 +1,99 @@ +/** + * + */ +package org.rapla.entities.dynamictype.internal; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Locale; + +import org.rapla.components.util.Tools; +import org.rapla.entities.IllegalAnnotationException; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.storage.RefEntity; + +class ParsedAnnotation implements Serializable { + private static final long serialVersionUID = 1; + + /** the terminal format elements*/ + String[] nonVariables; + /** the variable format elements*/ + Object[] variables; + + public ParsedAnnotation(String formatString, DynamicTypeImpl type) throws IllegalAnnotationException { + + ArrayList variablesList = new ArrayList(); + ArrayList nonVariablesList = new ArrayList(); + int pos = 0; + int length = formatString.length(); + while (pos < length) + { + int start = formatString.indexOf('{',pos) + 1; + if (start < 1) { + nonVariablesList.add(formatString.substring(pos, length )); + break; + } + int end = formatString.indexOf('}',start) ; + if (end < 1 ) + throw new IllegalAnnotationException("Closing bracket } missing! in " + formatString); + + nonVariablesList.add(formatString.substring(pos, start -1)); + String key = formatString.substring(start,end).trim(); + Attribute attribute = type.getAttribute(key); + if (attribute != null) { + variablesList.add( ((RefEntity)attribute).getId() ); + } else if (key.equals(type.getElementKey())) { + variablesList.add( type.getId() ); + } else { + throw new IllegalAnnotationException("Attribute for key '" + key + + "' not found but defined in '" + formatString + "'" + + "\n You have probably deleted or renamed the attribute. " + ); + } + pos = end + 1; + } + nonVariables = (String[]) nonVariablesList.toArray(Tools.EMPTY_STRING_ARRAY); + variables = variablesList.toArray(); + } + + public String getExternalRepresentation(DynamicTypeImpl type) { + StringBuffer buf = new StringBuffer(); + for (int i=0; i max) + max = depth; + } + return max + 1; + } + + public void removeCategory(Category category) { + checkWritable(); + if ( findCategory( category ) == null) + return; + childArrayUpToDate = false; + super.removeEntity((RefEntity) category); + if (category.getParent().equals(this)) + ((CategoryImpl)category).setParent(null); + } + + public Category findCategory(Category copy) { + return (Category) super.findEntity((RefEntity)copy); + } + + public MultiLanguageName getName() { + return name; + } + + public void setReadOnly(boolean enable) { + super.setReadOnly( enable ); + name.setReadOnly( enable ); + } + + public String getName(Locale locale) { + return name.getName(locale.getLanguage()); + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + checkWritable(); + this.key = key; + } + + public String getPath(Category rootCategory,Locale locale) { + StringBuffer buf = new StringBuffer(); + if (rootCategory != null && this.equals(rootCategory)) + return ""; + if (this.getParent() != null) { + String path = this.getParent().getPath(rootCategory,locale); + buf.append(path); + if (path.length()>0) + buf.append('/'); + } + buf.append(this.getName(locale)); + return buf.toString(); + } + + public String toString() { + MultiLanguageName name = getName(); + if (name != null) { + return name.toString() + " ID='" + getId() + "'"; + } else { + return getKey() + " " + getId(); + } + } + + + public String getPathForCategory(Category searchCategory) throws EntityNotFoundException { + return getPathForCategory(searchCategory, true); + } + + public String getPathForCategory(Category searchCategory, boolean fail) throws EntityNotFoundException { + StringBuffer buf = new StringBuffer(); + Category category = searchCategory; + Category parent = category.getParent(); + if (category == this) + return ""; + if (parent == null) + throw new EntityNotFoundException("Category has no parents!"); + while (true) { + buf.insert(0,"']"); + buf.insert(0,category.getKey()); + buf.insert(0,"category[key='"); + parent = category.getParent(); + category = parent; + if (parent == null) + { + if ( fail) + { + throw new EntityNotFoundException("Category not found!" + searchCategory); + } + return null; + } + if (!parent.equals(this)) + buf.insert(0,'/'); + else + break; + } + return buf.toString(); + } + + public Category getCategoryFromPath(String path) throws ParseException,EntityNotFoundException { + int start = 0; + int end = 0; + int pos = 0; + Category category = this; + while (category != null) { + start = path.indexOf("'",pos) + 1; + if (start==0) + break; + end = path.indexOf("'",start); + if (end < 0) + throw new ParseException("Invalid xpath expression: " + path,start); + String key = path.substring(start,end); + category = category.getCategory(key); + pos = end + 1; + } + if (category == null) + throw new EntityNotFoundException("could not resolve category xpath expression: " + path); + return category; + } + + public Category findCategory(Object copy) { + return (Category) super.findEntity((RefEntity)copy); + } + + + public String getAnnotation(String key) { + return (String) annotations.get(key); + } + + public String getAnnotation(String key, String defaultValue) { + String annotation = getAnnotation( key ); + return annotation != null ? annotation : defaultValue; + } + + public void setAnnotation(String key,String annotation) throws IllegalAnnotationException { + checkWritable(); + if (annotation == null) { + annotations.remove(key); + return; + } + annotations.put(key,annotation); + } + + public String[] getAnnotationKeys() { + return (String[]) annotations.keySet().toArray(Tools.EMPTY_STRING_ARRAY); + } + + static private void copy(CategoryImpl source,CategoryImpl dest) { + dest.name = (MultiLanguageName) source.name.clone(); + dest.annotations = (HashMap) source.annotations.clone(); + dest.key = source.key; + Iterator it = dest.getSubEntities(); + while ( it.hasNext()) { + ((CategoryImpl)it.next()).setParent(dest); + } + dest.childArrayUpToDate = false; + } + + public void copy(Object obj) { + super.copy((CategoryImpl)obj); + copy((CategoryImpl)obj,this); + } + + public Object deepClone() { + CategoryImpl clone = new CategoryImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Object clone() { + CategoryImpl clone = new CategoryImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } + + + +} + + diff --git a/src/org/rapla/entities/internal/ModifiableTimestamp.java b/src/org/rapla/entities/internal/ModifiableTimestamp.java new file mode 100644 index 0000000..02a129a --- /dev/null +++ b/src/org/rapla/entities/internal/ModifiableTimestamp.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.entities.internal; +import java.util.Date; + +import org.rapla.entities.Timestamp; +import org.rapla.entities.User; + +public interface ModifiableTimestamp extends Timestamp { + /** updates the last-changed timestamp */ + void setLastChanged(Date date); + void setLastChangedBy( User user); +} diff --git a/src/org/rapla/entities/internal/UserImpl.java b/src/org/rapla/entities/internal/UserImpl.java new file mode 100644 index 0000000..cef45b6 --- /dev/null +++ b/src/org/rapla/entities/internal/UserImpl.java @@ -0,0 +1,239 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.internal; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.Locale; + +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.ReferenceHandler; +import org.rapla.entities.storage.internal.SimpleEntity; + +public class UserImpl extends SimpleEntity implements User,Mementable,java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private String username = ""; + private String email = ""; + private String name = ""; + private boolean bAdmin = false; + + transient private boolean groupArrayUpToDate = false; + // The resolved references + transient private Category[] groups; + + final public RaplaType getRaplaType() {return TYPE;} + + public boolean isAdmin() {return bAdmin;} + public String getName() + { + final Allocatable person = getPerson(); + if ( person != null) + { + return person.getName( null ); + } + return name; + } + public String getEmail() { + final Allocatable person = getPerson(); + if ( person != null) + { + final Classification classification = person.getClassification(); + final Attribute attribute = classification.getAttribute("email"); + return attribute != null ? (String)classification.getValue(attribute) : null; + } + return email; + } + + public String getUsername() { return username; } + + public String toString() + { + return getUsername(); + } + + public void setName(String name) { + checkWritable(); + this.name = name; + } + + public void setEmail(String email) { + checkWritable(); + this.email = email; + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + super.resolveEntities(resolver); + if ( email != null && email.trim().length() > 0) + { + try + { + final RefEntity person = resolver.resolve(email); + if ( person instanceof Allocatable) + { + setPerson((Allocatable)person); + } + } + catch (EntityNotFoundException ex) + { + + } + } + } + + public void setUsername(String username) { + checkWritable(); + this.username = username; + } + + public void setAdmin(boolean bAdmin) { + checkWritable(); + this.bAdmin=bAdmin; + } + + public String getName(Locale locale) + { + final Allocatable person = getPerson(); + if ( person != null) + { + return person.getName(locale); + } + return getUsername(); + } + + public void addGroup(Category group) { + checkWritable(); + if (getReferenceHandler().isRefering((RefEntity)group)) + return; + groupArrayUpToDate = false; + getReferenceHandler().add((RefEntity)group); + } + + public boolean removeGroup(Category group) { + checkWritable(); + if (!getReferenceHandler().isRefering((RefEntity)group)) + return false; + groupArrayUpToDate = false; + return getReferenceHandler().remove((RefEntity)group); + } + + public Category[] getGroups() { + updateGroupArray(); + return groups; + } + + public boolean belongsTo( Category group ) { + return getReferenceHandler().isRefering( (RefEntity)group ); + } + + private void updateGroupArray() { + if (groupArrayUpToDate) + return; + Collection groupList = new ArrayList(); + Iterator it = super.getReferences(); + while (it.hasNext()) { + RefEntity o = (RefEntity) it.next(); + if (o.getRaplaType().equals(Category.TYPE)) { + groupList.add(o); + } + } + groups = (Category[]) groupList.toArray(Category.CATEGORY_ARRAY); + groupArrayUpToDate = true; + } + + static private void copy(UserImpl source,UserImpl dest) { + dest.groupArrayUpToDate = false; + + dest.username = source.username; + dest.name = source.name; + dest.email = source.email; + dest.bAdmin = source.bAdmin; + } + + public void copy(Object obj) { + super.copy((UserImpl)obj); + copy((UserImpl) obj,this); + } + + public Object deepClone() { + UserImpl clone = new UserImpl(); + super.deepClone(clone); + copy(this,clone); + return clone; + } + + public Object clone() { + UserImpl clone = new UserImpl(); + super.clone(clone); + copy(this,clone); + return clone; + } + + public int compareTo(Object o) { + if ( ! (o instanceof User)) + { + return super.compareTo( o); + } + + + int result = toString().compareTo( o.toString()); + if (result != 0) + { + return result; + } + else + { + return super.compareTo( (SimpleEntity) o); + } + } + + public void setPerson(Allocatable person) + { + final ReferenceHandler referenceHandler = getReferenceHandler(); + if ( person == null) + { + referenceHandler.put("person", null); + return; + } + final Classification classification = person.getClassification(); + final Attribute attribute = classification.getAttribute("email"); + final String email = attribute != null ? (String)classification.getValue(attribute) : null; + if ( email != null) + { + this.email = email; + referenceHandler.put("person", person); + setName(person.getClassification().getName(null)); + } + } + + public Allocatable getPerson() + { + final ReferenceHandler referenceHandler = getReferenceHandler(); + final Allocatable person = (Allocatable) referenceHandler.get("person"); + return person; + } + + +} diff --git a/src/org/rapla/entities/internal/package.html b/src/org/rapla/entities/internal/package.html new file mode 100644 index 0000000..41675a3 --- /dev/null +++ b/src/org/rapla/entities/internal/package.html @@ -0,0 +1,5 @@ + +Contains the default implementations of the persistent entity-objects in rapla. +@see rapla.sourceforge.net + + diff --git a/src/org/rapla/entities/package.html b/src/org/rapla/entities/package.html new file mode 100644 index 0000000..b498316 --- /dev/null +++ b/src/org/rapla/entities/package.html @@ -0,0 +1,6 @@ + +Contains the interfaces of the persistent entity-objects in rapla. +@see rapla.sourceforge.net + + + diff --git a/src/org/rapla/entities/storage/CannotExistWithoutTypeException.java b/src/org/rapla/entities/storage/CannotExistWithoutTypeException.java new file mode 100644 index 0000000..74a7fab --- /dev/null +++ b/src/org/rapla/entities/storage/CannotExistWithoutTypeException.java @@ -0,0 +1,16 @@ +package org.rapla.entities.storage; + +import org.rapla.framework.RaplaException; + +public class CannotExistWithoutTypeException extends RaplaException { + + public CannotExistWithoutTypeException() { + super("This object cannot exist without a dynamictype. Type cannot be removed."); + } + + /** + * + */ + private static final long serialVersionUID = 1L; + +} diff --git a/src/org/rapla/entities/storage/DynamicTypeDependant.java b/src/org/rapla/entities/storage/DynamicTypeDependant.java new file mode 100644 index 0000000..6912c09 --- /dev/null +++ b/src/org/rapla/entities/storage/DynamicTypeDependant.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage; +import org.rapla.entities.dynamictype.DynamicType; + +/** DynamicTypeDependent needs to be implemented by all classes that would be affected by a change to a dynamic type. + * E.g. If you remove or modify an attribute of a dynamic resource type. All resources of this types must take certain actions.*/ +public interface DynamicTypeDependant { + /** returns true if the object needs to be changed with new dynamic type change and false if no modification of the object is requiered. + * Example: If you remove an attribute from a resource type, and one resource of the resourcetype doesnt use this attribute this resource doesnt need modifaction, so it can return false + * @param type The new dynamic type + * */ + public boolean needsChange(DynamicType type); + /** process the change in the object + *Example: If you remove an attribute from a resource type, you should remove the corresponding attriabute value in all resources of the resourcetype + * @param type The new dynamic type*/ + public void commitChange(DynamicType type); + /** throws a CannotExistWithoutTypeException when type cannot be removed*/ + public void commitRemove(DynamicType type) throws CannotExistWithoutTypeException; +} + + + + + + + diff --git a/src/org/rapla/entities/storage/EntityReferencer.java b/src/org/rapla/entities/storage/EntityReferencer.java new file mode 100644 index 0000000..536ac80 --- /dev/null +++ b/src/org/rapla/entities/storage/EntityReferencer.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage; + +import java.util.Iterator; + +import org.rapla.entities.EntityNotFoundException; + +/** transforms ids into references to + * the corresponding objects. + * @see org.rapla.entities.storage.internal.ReferenceHandler; + */ + +public interface EntityReferencer +{ + void resolveEntities( EntityResolver resolver) throws EntityNotFoundException; + /**Return all References of the object*/ + Iterator getReferences(); + /** returns if the entity is refering to the Object. */ + boolean isRefering(RefEntity object); + + +} + + + + diff --git a/src/org/rapla/entities/storage/EntityResolver.java b/src/org/rapla/entities/storage/EntityResolver.java new file mode 100644 index 0000000..bae33a4 --- /dev/null +++ b/src/org/rapla/entities/storage/EntityResolver.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage; + +import org.rapla.entities.EntityNotFoundException; + + +/** resolves the id to a proper reference to the object. + @see org.rapla.entities.storage.internal.ReferenceHandler +*/ + +public interface EntityResolver +{ + public RefEntity resolve(Object id) throws EntityNotFoundException; +} + + + + diff --git a/src/org/rapla/entities/storage/Mementable.java b/src/org/rapla/entities/storage/Mementable.java new file mode 100644 index 0000000..bc4f4b5 --- /dev/null +++ b/src/org/rapla/entities/storage/Mementable.java @@ -0,0 +1,48 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage; + +/**

    Why use a Memento here ?

    + *

    + * Problem: Realization of an undo-feature when editing a object + * The user edits only a clone of the original. + * When the user aborts, the clone will be discarded. Upon committing the + * changes, the original object should be set to the state of + * the clone and the clone should be discarded after that. + *

    + *

    + * The Memento-Pattern is used to get a clone of the original. + * The newly created clone gets the state of the original: +

    + clone = original.deepClone()
    + 
    + * To apply the changes to the original call +
    + original.copy(clone)
    + 
    + *

    + */ + +public interface Mementable extends Cloneable +{ + /** Sets the attributes of the object implementing this interface + * to the attributes stored in the passed objects. + */ + public void copy( T obj ); + + /** Clones the entity and all subentities*/ + public T deepClone(); + + /** Clones the entity while preserving the references to the subentities*/ + public T clone(); +} diff --git a/src/org/rapla/entities/storage/RefEntity.java b/src/org/rapla/entities/storage/RefEntity.java new file mode 100644 index 0000000..1405a98 --- /dev/null +++ b/src/org/rapla/entities/storage/RefEntity.java @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage; +import java.util.Iterator; + +import org.rapla.entities.Entity; +import org.rapla.entities.RaplaObject; + +/** +The id is the unique key to distinct the entity from all others. +It is needed to safely update the entities and their associations (or aggregations) +with other entities.
    +Note: Use this interface only in the +storage-backend. +*/ +public interface RefEntity extends Entity, RaplaObject, EntityReferencer, Mementable, Comparable { + Object getId(); + void setId(Object id); + + long getVersion(); + void setVersion(long version); + + /** + returns all entities that are aggregated under the entity. + This information is usefull to transparently store the + subentities along with their parent. + * The difference between subEntities and other references is, + * that the subEntities are aggregated instead of associated. That + * means SubEntities should be + *
  • stored, when the parent is stored
  • + *
  • deleted, when the parent is deleted or when they are + * removed from the parent
  • + */ + Iterator getSubEntities(); + + /** returns if the entity contains the subEntity. */ + boolean isParentEntity(RefEntity subEntity); + + /** returns true, if the passed object is an instance of Entity + * and has the same id as the object. If both Entities have + * no ids, the == operator will be applied. + */ + public boolean isIdentical(Entity id2); +} + + + + + + + diff --git a/src/org/rapla/entities/storage/internal/ReferenceHandler.java b/src/org/rapla/entities/storage/internal/ReferenceHandler.java new file mode 100644 index 0000000..6f9d886 --- /dev/null +++ b/src/org/rapla/entities/storage/internal/ReferenceHandler.java @@ -0,0 +1,302 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage.internal; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.Tools; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; + +/** The ReferenceHandler takes care of serializing and deserializing references to Entity objects. +

    + The references will be serialized to the ids of the corresponding entity. Deserialization of + the ids takes place in the contextualize method. You need to provide an EntityResolver on the Context. +

    +

    +The ReferenceHandler support both named and unnamed References. Use the latter one, if you don't need to refer to the particular reference by name and if you want to keep the order of the references. + +

    +
    +// put a named reference
    +referenceHandler.put("owner",user);
    +
    +// put unnamed reference
    +Iterator it = resources.iterator();
    +while (it.hasNext())
    +   referenceHandler.add(it.next());
    +
    +// returns
    +User referencedUser = referenceHandler.get("owner");
    +
    +// returns both the owner and the resources
    +Itertor references = referenceHandler.getReferences();
    +
    + +

    + @see EntityResolver + */ +public class ReferenceHandler implements EntityReferencer, java.io.Serializable{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + private HashMap map; + private ArrayList list; + private transient boolean contextualizeCalled; + + // added for performance reasons + private transient boolean referencesUpToDate; + private transient List referenceList; + + /** + * @see org.rapla.entities.storage.EntityReferencer#resolveEntities(org.rapla.entities.storage.EntityResolver) + */ + public void resolveEntities(EntityResolver resolver) throws EntityNotFoundException { + try { + if (map != null) { + Iterator it = map.values().iterator(); + while (it.hasNext()) { + ReferenceEntry entry = (ReferenceEntry) it.next(); + entry.reference = resolver.resolve(entry.id); + } + } + if (list != null) { + Iterator it = list.iterator(); + while (it.hasNext()) { + ReferenceEntry entry = (ReferenceEntry) it.next(); + entry.reference = resolver.resolve(entry.id); + } + } + } catch (EntityNotFoundException ex) { + clearReferences(); + throw ex; + } + contextualizeCalled = true; + referencesUpToDate = false; + } + + /** Use this method if you want to implement deserialization of the object manualy. + * You have to add the reference-ids to other entities immediatly after the constructor. + * @throws IllegalStateException if contextualize has been called before. + */ + public void addId(Object id) { + if (contextualizeCalled) + throw new IllegalStateException("Contextualize has been called before."); + if (list == null) + list = new ArrayList(3); + Assert.notNull(id); + + ReferenceEntry entry = new ReferenceEntry(); + entry.id = id ; + if ( list.contains( entry)) + { + return; + } + list.add(entry); + } + + /** Use this method if you want to implement deserialization of the object manualy. + * You have to add the reference-ids to other entities immediatly after the constructor. + * @throws IllegalStateException if contextualize has been called before. + */ + public void putId(String key,Object id) { + if (contextualizeCalled) + throw new IllegalStateException("Contextualize has been called before."); + if (map == null) + map = new HashMap(5); + + if (id == null) { + map.remove(key); + return; + } + + ReferenceEntry entry = new ReferenceEntry(); + entry.id = id; + map.put(key, entry); + } + + public boolean removeId(String key) { + if (map == null) + return false; + if ( map.remove(key) != null ) { + referencesUpToDate = false; + return true; + } else { + return false; + } + } + + + public Object getId(String key) { + if (map == null) + throw new IllegalStateException("Map is empty."); + ReferenceEntry entry = (ReferenceEntry)map.get(key); + if (entry != null) + return entry.id; + throw new IllegalStateException("Key not found." + key); + } + + public void put(String key,Object obj) { + if (map == null) + map = new HashMap(5); + if (obj == null) { + map.remove(key); + return; + } + + ReferenceEntry entry = new ReferenceEntry(); + RefEntity entity = (RefEntity) obj; + entry.id = entity.getId() ; + entry.reference = entity; + map.put(key,entry); + referencesUpToDate = false; + } + + public RefEntity get(String key) { + if (map == null) + return null; + ReferenceEntry entry = (ReferenceEntry)map.get(key); + if (entry == null) + return null; + return entry.reference; + } + + + public void add(RefEntity entity) { + if (isRefering(entity)) + return; + if (list == null) + list = new ArrayList(3); + ReferenceEntry entry = new ReferenceEntry(); + entry.id = entity.getId() ; + entry.reference = entity; + list.add(entry); + referencesUpToDate = false; + } + + public boolean remove(RefEntity entity) { + if (!isRefering(entity)) { + return false; + } + if (list != null) { + Iterator it = list.iterator(); + while (it.hasNext()) { + ReferenceEntry entry = (ReferenceEntry) it.next(); + if (entry.reference.equals(entity)) + it.remove(); + } + } + if (map != null) { + Iterator it = map.keySet().iterator(); + while (it.hasNext()) { + ReferenceEntry entry = (ReferenceEntry) map.get(it.next()); + if (entry.reference.equals(entity)) + it.remove(); + } + } + referencesUpToDate = false; + return true; + } + + private Collection getReferenceList() { + if (referencesUpToDate) + return referenceList; + referenceList = new ArrayList(5); + if (list != null) { + Iterator it = list.iterator(); + while (it.hasNext()) { + ReferenceEntry entry = (ReferenceEntry) it.next(); + if (entry.reference == null) + throw new IllegalStateException("Contextualize was not called. References need to be resolved in context."); + referenceList.add(entry.reference); + } + } + if (map != null) { + Iterator it = map.keySet().iterator(); + while (it.hasNext()) { + ReferenceEntry entry = (ReferenceEntry) map.get(it.next()); + if (entry.reference == null) + throw new IllegalStateException("Contextualize was not called. References need to be resolved in context."); + referenceList.add(entry.reference); + } + } + referencesUpToDate = true; + return referenceList; + } + + public boolean isRefering(RefEntity obj) { + if (list == null && map == null) + return false; + Collection referenceList = getReferenceList(); + return referenceList.contains(obj); + } + + public Iterator getReferences() { + if (list == null && map == null) + return Tools.EMPTY_ITERATOR; + return getReferenceList().iterator(); + } + + public Iterator getReferenceKeys() { + if (map == null) + return Tools.EMPTY_ITERATOR; + return map.keySet().iterator(); + } + + public void clearReferences() { + if (map != null) + map.clear(); + if (list != null) + list.clear(); + referencesUpToDate = false; + } + + public Object clone() { + ReferenceHandler clone = new ReferenceHandler(); + if (map != null) + clone.map = (HashMap) map.clone(); + if (list != null) + clone.list = (ArrayList) list.clone(); + clone.referencesUpToDate = false; + return clone; + } + + class ReferenceEntry implements java.io.Serializable { + private static final long serialVersionUID = 1; + transient RefEntity reference; + Object id; + public boolean equals(Object obj) + { + if ( !(obj instanceof ReferenceEntry)) + { + return false; + } + Object id2 = ((ReferenceEntry)obj).id; + if ( id2 == null) + { + return false; + } + return id2.equals( id); + } + + } + + +} diff --git a/src/org/rapla/entities/storage/internal/SimpleEntity.java b/src/org/rapla/entities/storage/internal/SimpleEntity.java new file mode 100644 index 0000000..c817866 --- /dev/null +++ b/src/org/rapla/entities/storage/internal/SimpleEntity.java @@ -0,0 +1,282 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage.internal; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.rapla.components.util.Assert; +import org.rapla.entities.Entity; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.ReadOnlyException; +import org.rapla.entities.User; +import org.rapla.entities.storage.EntityReferencer; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; + +/** Base-class for all Rapla Entity-Implementations. Provides services + * for deep cloning and serialization of references. {@link ReferenceHandler} +*/ + +public abstract class SimpleEntity implements RefEntity, EntityReferencer , java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 2; + private SimpleIdentifier id; + private long version = 0; + + ReferenceHandler subEntityHandler = new ReferenceHandler(); + ReferenceHandler referenceHandler = new ReferenceHandler(); + + transient boolean readOnly = false; + + public SimpleEntity() { + + } + + public void checkWritable() { + if ( readOnly ) + throw new ReadOnlyException( this ); + } + + public boolean isPersistant() { + return isReadOnly(); + } + + public void resolveEntities( EntityResolver resolver) throws EntityNotFoundException { + referenceHandler.resolveEntities( resolver); + subEntityHandler.resolveEntities( resolver ); + } + + public void setReadOnly(boolean enable) { + this.readOnly = enable; + Iterator it = getSubEntityHandler().getReferences(); + while (it.hasNext()) { + ((SimpleEntity) it.next()).setReadOnly(enable); + } + } + + public boolean isReadOnly() { + return readOnly; + } + + public User getOwner() { + return (User) referenceHandler.get("owner"); + } + + public void setOwner(User owner) { + referenceHandler.put("owner",owner); + } + + public User getLastChangedBy() { + return (User) referenceHandler.get("last_changed_by"); + } + + public void setLastChangedBy(User user) { + referenceHandler.put("last_changed_by",user); + } + + + protected boolean isSubEntity(RefEntity obj) { + return subEntityHandler.isRefering(obj); + } + + protected void addEntity(RefEntity entity) { + subEntityHandler.add(entity); + } + + public ReferenceHandler getReferenceHandler() { + return referenceHandler; + } + + public ReferenceHandler getSubEntityHandler() { + return subEntityHandler; + } + + protected void removeEntity(RefEntity entity) { + subEntityHandler.isRefering(entity); + subEntityHandler.remove(entity); + } + + + /** sets the identifier for an object. The identifier should be + * unique accross all entities (not only accross the entities of a + * the same type). Once set, the identifier for an object should + * not change. The identifier is necessary to store the relationsships + * between enties. + * @see SimpleIdentifier + */ + + public void setId(Object id) { + this.id= (SimpleIdentifier)id; + } + + /** @return the identifier of the object. + * @see SimpleIdentifier + */ + final public Object getId() { + return id; + } + + final public boolean isIdentical(Entity ob2) { + return equals( ob2); + } + + /** two Entities are equal if they are identical. + * @see #isIdentical + */ + final public boolean equals(Object o) { + if (!( o instanceof SimpleEntity)) + { + return false; + } + SimpleEntity e2 = (SimpleEntity) o; + SimpleIdentifier id2 = e2.id; + if ( id2== null || id == null) + return e2 == this; + return (id2.key == id.key && id2.type == id.type); + + } + + /** The hashcode of the id-object will be returned. + * @return the hashcode of the id. + * @throws IllegalStateException if no id is set. + */ + public int hashCode() { + if ( id != null) { + return id.hashCode(); + } else { + throw new IllegalStateException("Id not set for type '" + getRaplaType() + + "'. You must set an Id before you can use the hashCode method." + ); + } + } + + public void setVersion(long version) { + this.version= version; + } + + public long getVersion() { + return version; + } + + public Iterator getSubEntities() { + return getSubEntityHandler().getReferences(); + } + + public Iterator getReferences() { + return getReferenceHandler().getReferences(); + } + + public boolean isRefering(RefEntity entity) { + ReferenceHandler referenceHandler = getReferenceHandler(); + return referenceHandler.isRefering(entity); + } + + public boolean isParentEntity(RefEntity object) { + return getSubEntityHandler().isRefering(object); + } + + static private void copy(SimpleEntity source,SimpleEntity dest,boolean deepCopy) { + Assert.isTrue(source != dest,"can't copy the same object"); + + dest.referenceHandler = (ReferenceHandler) source.referenceHandler.clone(); + + ArrayList newEntities = new ArrayList(); + Iterator it = source.getSubEntityHandler().getReferences(); + if (deepCopy){ + while (it.hasNext()) { + Mementable entity = (Mementable) it.next(); + Mementable oldEntity = (Mementable) dest.findEntity((RefEntity)entity); + if (oldEntity != null) { + oldEntity.copy(entity); + newEntities.add( oldEntity); + } else { + newEntities.add( entity.deepClone()); + } + } + } else { + while (it.hasNext()) { + Mementable entity = (Mementable) it.next(); + Mementable oldEntity = (Mementable) dest.findEntity((RefEntity)entity); + if (oldEntity != null) { + newEntities.add( oldEntity); + } else { + newEntities.add( entity); + } + } + } + dest.getSubEntityHandler().clearReferences(); + it = newEntities.iterator(); + while (it.hasNext()) { + RefEntity entity = (RefEntity) it.next(); + dest.addEntity( entity ); + } + // In a copy operation the target/destination object should always be writable + dest.readOnly = false; + dest.setVersion(source.getVersion()); + } + + /** find the sub-entity that has the same id as the passed copy. Returns null, if the entity was not found. */ + public Object findEntity(RefEntity copy) { + Iterator it = getSubEntities(); + while (it.hasNext()) { + RefEntity entity = (RefEntity)it.next(); + if (entity.equals(copy)) { + return entity; + } + } + return null; + } + + /** copies the references from the entity to this */ + protected void copy(SimpleEntity entity) { + copy(entity,this,false); + } + + protected void deepClone(SimpleEntity clone) { + clone.setId(id); + copy(this,clone,true); + } + + protected void clone(SimpleEntity clone) { + clone.setId(id); + copy(this,clone,false); + } + + abstract public T clone(); + + public String toString() { + if (id != null) + return id.toString(); + return "no id for " + super.toString(); + } + + public int compareTo(T o) { + if ( o == this ) + { + return 0; + } + SimpleIdentifier id1 = id; + SimpleIdentifier id2 = (SimpleIdentifier)((RefEntity) o).getId(); + if ( equals( o)) + return 0; + return (id1.getKey() < id2.getKey()) ? -1 : 1; + + } +} + + + + diff --git a/src/org/rapla/entities/storage/internal/SimpleIdentifier.java b/src/org/rapla/entities/storage/internal/SimpleIdentifier.java new file mode 100644 index 0000000..3267595 --- /dev/null +++ b/src/org/rapla/entities/storage/internal/SimpleIdentifier.java @@ -0,0 +1,99 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.storage.internal; + +import java.io.IOException; + +import org.rapla.entities.RaplaType; + + +/* +An identifier could be something like a URI. It is used for: +
      +
    1. Lookup or store the identified objects.
    2. +
    3. Distinct the identified objects: Two objects are identical if and + only if obj1.getId().equals(obj2.getId()). +
    4. +
    5. Serialize/Deserialize relationsships (e.g. references) between + objects.
    6. +
    +Two conditions should hold for all identifiers: +
      +
    1. An identifier is an immutable object.
    2. + +
    3. Every object that has got an identifier should keep it for it's + lifetime. There is one exception: If it is possible to + serialize/deserialize the object-map that no relationship + information get's lost and obj1.getId().equals(obj2.getId()) returns + the same information with the new ids. This exception is important, + if we want to serialize data to an XML-File.
    4. +
    +*/ +public class SimpleIdentifier implements java.io.Serializable +{ + // Don't forget to increase the serialVersionUID when you change the fields + private static final long serialVersionUID = 1; + + String type = null; + int key; + transient String name; + + private void readObject(java.io.ObjectInputStream in) + throws IOException, ClassNotFoundException { + in.defaultReadObject(); + type = type.intern(); + } + + public SimpleIdentifier(RaplaType type,int key) { + this.type = type.toString().intern(); + this.key = key; + } + + public boolean equals(Object o) { + if ( o == null) + { + return false; + } + SimpleIdentifier ident = (SimpleIdentifier)o; + return (ident.key == key && ident.type == type); + } + + public int hashCode() { + int typeHc; + if ( type != null) { + typeHc = type.hashCode(); + } else { + typeHc = 0; + } + return typeHc+ typeHc * key; + } + + public int getKey() { + return key; + } + + public String getTypeName() { + return type; + } + + public String toString() { + if (name == null) + name = type + "_" + key; + return name; + } + +} + + + + diff --git a/src/org/rapla/examples/RaplaConnectorTest.java b/src/org/rapla/examples/RaplaConnectorTest.java new file mode 100644 index 0000000..4157026 --- /dev/null +++ b/src/org/rapla/examples/RaplaConnectorTest.java @@ -0,0 +1,47 @@ +package org.rapla.examples; + +import java.util.Locale; + +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.rapla.RaplaMainContainer; +import org.rapla.entities.domain.Allocatable; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.StartupEnvironment; +/* Simple demonstration for connecting your app and importing some users. See sources*/ +public class RaplaConnectorTest +{ + public static void main(String[] args) { + final ConsoleLogger logger = new ConsoleLogger( ConsoleLogger.LEVEL_INFO); + + try + { + // Connects to http://localhost:8051/ + // and calls rapla/rpc/methodNames for interacting + StartupEnvironment env = new SimpleConnectorStartupEnvironment( "localhost", 8051,"/", false, logger); + RaplaMainContainer container = new RaplaMainContainer( env); + RaplaContext context = container.getContext(); + + // get an interface to the facade and login + ClientFacade facade = (ClientFacade)context.lookup(ClientFacade.ROLE); + + if ( !facade.login( "admin", "".toCharArray()) ) { + throw new RaplaException("Can't login"); + } + + // query resouce + Allocatable firstResource = facade.getAllocatables() [0] ; + logger.info( firstResource.getName( Locale.getDefault())); + + // cleanup the Container + container.dispose(); + } + catch ( Exception e ) + { + logger.error("Could not start test ", e ); + } + + } + +} diff --git a/src/org/rapla/examples/RaplaImportUsers.java b/src/org/rapla/examples/RaplaImportUsers.java new file mode 100644 index 0000000..fc8ac94 --- /dev/null +++ b/src/org/rapla/examples/RaplaImportUsers.java @@ -0,0 +1,107 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.examples; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; + +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.rapla.RaplaMainContainer; +import org.rapla.components.util.Tools; +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.StartupEnvironment; + + +/**Demonstration for connecting your app and importing some users + */ +public class RaplaImportUsers { + + public static void main(String[] args) { + if ( args.length< 1 ) { + System.out.println("Usage: filename"); + System.out.println("Example: users.csv "); + return; + } + + final ConsoleLogger logger = new ConsoleLogger( ConsoleLogger.LEVEL_INFO); + try + { + StartupEnvironment env = new SimpleConnectorStartupEnvironment( "localhost", 8051, "/",false, logger); + RaplaMainContainer container = new RaplaMainContainer( env); + importFile( container.getContext(), args[0] ); + // cleanup the Container + container.dispose(); + } + catch ( Exception e ) + { + logger.error("Could not start test ", e ); + } + + } + + private static void importFile(RaplaContext context,String filename) throws Exception { + + System.out.println(" Please enter the admin password "); + BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); + String adminPass = stdin.readLine(); + + // get an interface to the facade and login + ClientFacade facade = (ClientFacade)context.lookup(ClientFacade.ROLE); + if ( !facade.login("admin", adminPass.toCharArray() ) ) { + throw new RaplaException("Can't login"); + } + importUsers( facade, new FileReader( filename )); + facade.logout(); + } + + public static void importUsers(ClientFacade facade, Reader reader) throws RaplaException, IOException { + String[][] entries = Tools.csvRead( reader, 5 ); + Category rootCategory = facade.getUserGroupsCategory(); + for ( int i=0;iWarning can be null + */ + public User getUser() + { + return m_user; + } + + public Allocatable getAllocatable() + { + return m_allocatable; + } + + public Appointment getNewAppointment() + { + return m_newAppointment; + } + + public Reservation getNewReservation() + { + return m_newReservation; + } + + /** only available if type is "change" */ + public Appointment getOldAppointment() + { + return m_oldAppointment; + } + +} diff --git a/src/org/rapla/facade/AllocationChangeListener.java b/src/org/rapla/facade/AllocationChangeListener.java new file mode 100644 index 0000000..aaa3f84 --- /dev/null +++ b/src/org/rapla/facade/AllocationChangeListener.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + + +/** After a store all registered ChangeListeners get notified by calling + * the trigger method. A list with all changes is passed. + * At the moment only AllocationChangeEvents are triggered. + * By this you can get notified, when any Reservation changes. + * The difference between the UpdateEvent and a ChangeEvent is, + * that the UpdateEvent contains the new Versions of all updated enties, + * while a ChangeEvent contains Information about a single change. + * That change can be calculated as with the AllocationChangeEvent, which + * represents a single allocation change for one allocatable object + * ,including information about the old allocation and the new one. + * @see AllocationChangeEvent + */ +public interface AllocationChangeListener +{ + void changed(AllocationChangeEvent[] changeEvents); + /** + * Return true if you want the notification to + * be synchronized with the awt event-queue using {@link + * javax.swing.SwingUtilities#invokeLater}. Use this to avaoid + * synchronization problems with swing guis. + */ + boolean isInvokedOnAWTEventQueue(); +} diff --git a/src/org/rapla/facade/ClientFacade.java b/src/org/rapla/facade/ClientFacade.java new file mode 100644 index 0000000..eb885d9 --- /dev/null +++ b/src/org/rapla/facade/ClientFacade.java @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import org.rapla.storage.StorageOperator; + +/** A collection of all module-interfaces +*/ + +public interface ClientFacade + extends + UserModule + ,ModificationModule + ,QueryModule + ,UpdateModule +{ + String ROLE = ClientFacade.class.getName(); + StorageOperator getOperator(); +} + + + + + diff --git a/src/org/rapla/facade/Conflict.java b/src/org/rapla/facade/Conflict.java new file mode 100644 index 0000000..c8cfa8d --- /dev/null +++ b/src/org/rapla/facade/Conflict.java @@ -0,0 +1,62 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import org.rapla.entities.Named; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; + +/** + * A conflict is the allocation of the same resource at the same time by different + * reservations. There's one conflict for each resource and each overlapping of + * two allocations. So if there are 3 reservations that allocate the same 2 resources + * on 2 days of the week, then we got ( 3 * 2 ) * 2 * 2 = 24 conflicts. Thats + * 3 reservations, each conflicting with two other 2 reservations on 2 days with 2 resources. + * + * @version 1.0 + * @author Christopher Kohlhaas + */ + +public interface Conflict extends Named, RaplaObject +{ + static public final RaplaType TYPE = new RaplaType(Conflict.class,"conflict"); + /** @return the first Reservation, that is involed in the conflict.*/ + public Reservation getReservation1(); + /** The appointment of the first reservation, that causes the conflict. */ + public Appointment getAppointment1(); + /** @return the allocatable, allocated for the same time by two different reservations. */ + public Allocatable getAllocatable(); + /** @return the second Reservation, that is involed in the conflict.*/ + public Reservation getReservation2(); + /** @return The User, who created the second Reservation.*/ + public User getUser2(); + /** The appointment of the second reservation, that causes the conflict. */ + public Appointment getAppointment2(); + + public static final Conflict[] CONFLICT_ARRAY= new Conflict[] {}; + +} + + + + + + + + + + diff --git a/src/org/rapla/facade/ModificationEvent.java b/src/org/rapla/facade/ModificationEvent.java new file mode 100644 index 0000000..d497519 --- /dev/null +++ b/src/org/rapla/facade/ModificationEvent.java @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import java.util.Set; + +/** Encapsulate the changes that are made in the backend-store.*/ +public interface ModificationEvent +{ + /** returns if the objects has changed.*/ + public boolean hasChanged(Object object); + + /** returns if the objects was removed.*/ + public boolean isRemoved(Object object); + /** returns if the objects has changed or was removed.*/ + public boolean isModified(Object object); + + public Set getRemoved(Set col); + + public Set getChanged(Set col); + + /** returns all removed objects .*/ + public Set getRemoved(); + + /** returns all changed object .*/ + public Set getChanged(); + } + + + + diff --git a/src/org/rapla/facade/ModificationListener.java b/src/org/rapla/facade/ModificationListener.java new file mode 100644 index 0000000..89c63d9 --- /dev/null +++ b/src/org/rapla/facade/ModificationListener.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; +import java.util.EventListener; + +import org.rapla.framework.RaplaException; + +/** Classes implementing this interface will be notified when changes to + * reservations or resources occurred. The listener can be registered by calling + * addModificationListener of the UpdateModule
    + * Don't forget to remove the listener by calling removeModificationLister + * when no longer needed. + * @author Christopher Kohlhaas + * @see UpdateModule + * @see ModificationEvent + */ + +public interface ModificationListener extends EventListener { + /** this notifies all listeners that data in the rapla-backend has changed. + * The {@link ModificationEvent} describes these changes. + */ + void dataChanged(ModificationEvent evt) throws RaplaException; + /** + * Return true if you want the notification to + * be synchronized with the awt event-queue using {@link + * javax.swing.SwingUtilities#invokeLater}. Use this to avaoid + * synchronization problems with swing guis. + * + */ + boolean isInvokedOnAWTEventQueue(); + +} + + + + + diff --git a/src/org/rapla/facade/ModificationModule.java b/src/org/rapla/facade/ModificationModule.java new file mode 100644 index 0000000..e704439 --- /dev/null +++ b/src/org/rapla/facade/ModificationModule.java @@ -0,0 +1,98 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import java.util.Collection; +import java.util.Date; +import java.util.Map; + +import org.rapla.entities.Category; +import org.rapla.entities.Entity; +import org.rapla.entities.User; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaException; +/** All methods that allow modifing the entity-objects. +*/ + +public interface ModificationModule { + /** check if the reservation can be saved */ + void checkReservation(Reservation reservation) throws RaplaException; + /** creates a new Rapla Map. Keep in mind that only RaplaObjects and Strings are allowed as entries for a RaplaMap!*/ + RaplaMap newRaplaMap(Map map); + /** creates an ordered RaplaMap with the entries of the collection as values and their position in the collection from 1..n as keys*/ + RaplaMap newRaplaMap(Collection col); + + /** WARNING! API could change for this method + * @param extensionMap can be null*/ + CalendarModelConfiguration newRaplaCalendarModel(RaplaMap selected , ClassificationFilter[] allocatableFilter, ClassificationFilter[] eventFilter, String title, Date startDate,Date endDate, Date selectedDate, String view, RaplaMap optionMap); + + Reservation newReservation() throws RaplaException; + Appointment newAppointment(Date startDate,Date endDate) throws RaplaException; + Appointment newAppointment(Date startDate,Date endDate, RepeatingType repeatingType, int repeatingDuration) throws RaplaException; + Allocatable newResource() throws RaplaException; + Allocatable newPerson() throws RaplaException; + Period newPeriod() throws RaplaException; + Category newCategory() throws RaplaException; + Attribute newAttribute(AttributeType attributeType) throws RaplaException; + DynamicType newDynamicType(String classificationType) throws RaplaException; + User newUser() throws RaplaException; + + /** Clones an entity. The entities will get new identifier and + won't be equal to the original. The resulting object is not persistant and therefore + can be editet. + */ + Entity clone(Entity obj) throws RaplaException; + + /** This call will be delegated to the {@link org.rapla.storage.StorageOperator}. It + * returns an editable working copy of an object. Only objects return by this method and new objects are editable. + * To get the persistant, non-editable version of a working copy use {@link #getPersistant} */ + Entity edit(Entity obj) throws RaplaException; + + /** Returns the persistant version of a working copy. + * Throws an {@link org.rapla.entities.EntityNotFoundException} when the + * object is not found + * @see #edit + * @see #clone + */ + Entity getPersistant(Entity working) throws RaplaException; + + /** This call will be delegated to the {@link org.rapla.storage.StorageOperator} */ + void storeObjects(Entity[] obj) throws RaplaException; + /** @see #storeObjects(Entity[]) */ + void store(Entity obj) throws RaplaException; + /** This call will be delegated to the {@link org.rapla.storage.StorageOperator} */ + void removeObjects(Entity[] obj) throws RaplaException; + /** @see #removeObjects(Entity[]) */ + void remove(Entity obj) throws RaplaException; + + /** stores and removes objects in the one transaction + * @throws RaplaException */ + void storeAndRemove( Entity[] storedObjects, Entity[] removedObjects) throws RaplaException; + + +} + + + + + diff --git a/src/org/rapla/facade/PeriodModel.java b/src/org/rapla/facade/PeriodModel.java new file mode 100644 index 0000000..a2ac6d0 --- /dev/null +++ b/src/org/rapla/facade/PeriodModel.java @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; +import java.util.Date; +import java.util.List; + +import org.rapla.entities.domain.Period; + +/** ListModel that contains all periods. Updates the list automatically if a period is added, changed or deleted. + * */ +public interface PeriodModel +{ + /** returns the first matching period or null if no period matches.*/ + public Period getPeriodFor(Date date); + public Period getNearestPeriodForDate(Date date); + public Period getNearestPeriodForStartDate(Date date); + public Period getNearestPeriodForStartDate(Date date, Date endDate); + public Period getNearestPeriodForEndDate(Date date); + + /** return all matching periods.*/ + public List getPeriodsFor(Date date); + public int getSize(); + public Period[] getAllPeriods(); + +} + + + diff --git a/src/org/rapla/facade/QueryModule.java b/src/org/rapla/facade/QueryModule.java new file mode 100644 index 0000000..9d190ff --- /dev/null +++ b/src/org/rapla/facade/QueryModule.java @@ -0,0 +1,128 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; +import java.util.Date; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaException; +/** Methods for quering the various entities of the backend +*/ + +public interface QueryModule +{ + /** returns all DynamicTypes matching the specified classification + possible keys are reservation, person and resource. + @see org.rapla.entities.dynamictype.DynamicTypeAnnotations + */ + DynamicType[] getDynamicTypes(String classificationType) throws RaplaException; + + /** returns the DynamicType with the passed elementKey */ + DynamicType getDynamicType(String elementKey) throws RaplaException; + + /** returns The root category. */ + Category getSuperCategory(); + + /** returns The category that contains the all user-groups of rapla */ + Category getUserGroupsCategory() throws RaplaException; + + + /** returns all users */ + User[] getUsers() throws RaplaException; + + /** returns the user with the specified username */ + User getUser(String username) throws RaplaException; + + /** returns all allocatables that match the passed ClassificationFilter. If null all readable allocatables are returned*/ + Allocatable[] getAllocatables(ClassificationFilter[] filters) throws RaplaException; + + /** returns all readable allocatables, same as getAllocatables(null)*/ + Allocatable[] getAllocatables() throws RaplaException; + + /** returns the reservations of the specified user in the specified interval + @param user A user-object or null for all users + @param start only reservations beginning after the start-date will be returned (can be null). + @param end only reservations beginning before the end-date will be returned (can be null). + @param filters you can specify classificationfilters or null for all reservations . + */ + Reservation[] getReservations(User user,Date start,Date end,ClassificationFilter[] filters) throws RaplaException; + + /**returns all reservations that have allocated at least one Resource or Person that is part of the allocatables array. + @param allocatables only reservations that allocate at least on element of this array will be returned. + @param start only reservations beginning after the start-date will be returned (can be null). + @param end only reservations beginning before the end-date will be returned (can be null). + + **/ + Reservation[] getReservations(Allocatable[] allocatables,Date start,Date end) throws RaplaException; + + Reservation[] getReservationsForAllocatable(Allocatable[] allocatables, Date start,Date end,ClassificationFilter[] filters) throws RaplaException; + + /** returns all available periods */ + Period[] getPeriods() throws RaplaException; + + /** returns an Interface for accessing the periods + * @throws RaplaException */ + PeriodModel getPeriodModel() throws RaplaException; + + /** returns the current date in GMT+0 Timezone. If rapla operates + in multi-user mode, the date should be calculated from the + server date. + */ + Date today(); + + /** returns all allocatables, that are already allocated by different parallel reservations at the time-slices, that are described by the appointment */ + Allocatable[] getAllocatableBindings(Appointment appointment) throws RaplaException; + + /** returns all existing conflicts with the reservation */ + Conflict[] getConflicts(Reservation reservation) throws RaplaException; + + /** returns all existing conflicts that are visible for the user + conflicts, since the passed Date. If startDate is null all + conflicts are shown. + */ + Conflict[] getConflicts(Date startDate) throws RaplaException; + + /** returns if the user has the permissions to change/create an + allocation on the passed appointment. Changes of an + existing appointment that are in an permisable + timeframe are allowed. Example: The extension of an exisiting appointment, + doesn't affect allocations in the past and should not create a + conflict with the permissions. + */ + boolean hasPermissionToAllocate( Appointment appointment, Allocatable allocatable ); + + /** returns the preferences for the passed user, must be admin todo this.*/ + Preferences getPreferences(User user) throws RaplaException; + + /** returns the preferences for the login user */ + Preferences getPreferences() throws RaplaException; + + /** returns if the user is allowed to exchange the allocatables of this reservation. A user can do it if he has + * at least admin privileges for one allocatable. He can only exchange or remove or insert allocatables he has admin privileges on. + * The User cannot change appointments.*/ + boolean canExchangeAllocatables(Reservation reservation); + + boolean canReadReservationsFromOthers(User user); +} + + + + + diff --git a/src/org/rapla/facade/RaplaComponent.java b/src/org/rapla/facade/RaplaComponent.java new file mode 100644 index 0000000..fe31aff --- /dev/null +++ b/src/org/rapla/facade/RaplaComponent.java @@ -0,0 +1,428 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import java.io.IOException; +import java.net.URL; +import java.util.Enumeration; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; + +import javax.swing.ImageIcon; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.xmlbundle.CompoundI18n; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.Category; +import org.rapla.entities.Named; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.AppointmentFormater; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.CalendarOptions; +import org.rapla.gui.CalendarOptionsImpl; + +/** + Base class for most components. Eases + access to frequently used services, e.g. {@link I18nBundle}. + */ +public class RaplaComponent +{ + final private ClientServiceManager serviceManager; + private String childBundleName; + private Logger logger; + + public RaplaComponent(RaplaContext context) throws RaplaException { + try { + logger = (Logger)context.lookup(Logger.class.getName() ); + this.serviceManager = new ClientServiceManager(); + this.serviceManager.parent = context; + } catch ( RaplaException ex) { + throw ex; + } catch ( Exception ex) { + throw new RaplaException(ex); + } + } + + public String getChildBundleName() { + return childBundleName; + } + + public void setChildBundleName(String childBundleName) { + this.childBundleName = childBundleName; + } + + protected Container getContainer() throws RaplaException { + return ((Container)getContext().lookup(Container.class.getName())); + } + + /** returns if the session user is admin */ + public boolean isAdmin() { + try { + return getUser().isAdmin(); + } catch (RaplaException ex) { + } + return false; + } + + /** returns if the session user is a registerer */ + public boolean isRegisterer() { + if (isAdmin()) + { + return true; + } + try { + Category registererGroup = getQuery().getUserGroupsCategory().getCategory(Permission.GROUP_REGISTERER_KEY); + return getUser().belongsTo(registererGroup); + } catch (RaplaException ex) { + } + return false; + } + + public boolean isModifyPreferencesAllowed() { + if (isAdmin()) + { + return true; + } + try { + Category modifyPreferences = getQuery().getUserGroupsCategory().getCategory(Permission.GROUP_MODIFY_PREFERENCES_KEY); + if ( modifyPreferences == null ) { + return true; + } + return getUser().belongsTo(modifyPreferences); + } catch (RaplaException ex) { + } + return false; + } + + /** returns if the user has allocation rights for one or more resource */ + public boolean canUserAllocateSomething(User user) throws RaplaException { + Allocatable[] allocatables =getQuery().getAllocatables(); + if ( user.isAdmin() ) + return true; + for ( int i=0;i Permission.READ) + { + return true; + } + } + } + return false; + } + + /** returns if the current user is allowed to modify the object. */ + public boolean canModify(Object object) { + try { + User user = getUser(); + return canModify(object, user); + } catch (RaplaException ex) { + return false; + } + } + + static public boolean canModify(Object object, User user) { + if (object == null || !(object instanceof RaplaObject)) + { + return false; + } + if ( user == null) + { + return false; + } + if (user.isAdmin()) + return true; + if (object instanceof Ownable) { + Ownable ownable = (Ownable) object; + if (ownable.getOwner() == null || user.equals(ownable.getOwner())) + { + return true; + } + } + if (object instanceof Allocatable) { + Allocatable allocatable = (Allocatable) object; + if (allocatable.canModify( user )) + { + return true; + } + } + if (checkClassifiablePermissions(object, user)) + { + return true; + } + return false; + } +/** We check if an attribute with the permission_modify exists and look if the permission is set either globaly (if boolean type is used) or for a specific user group (if category type is used)*/ + public static boolean checkClassifiablePermissions(Object object, User user) { + if (object instanceof Classifiable) { + final Classifiable classifiable = (Classifiable) object; + + Classification classification = classifiable.getClassification(); + if ( classification != null) + { + final DynamicType type = classification.getType(); + final Attribute attribute = type.getAttribute("permission_modify"); + if ( attribute != null) + { + final AttributeType type2 = attribute.getType(); + if (type2 == AttributeType.BOOLEAN) + { + final Object value = classification.getValue( attribute); + return Boolean.TRUE.equals(value); + } + if ( type2 == AttributeType.CATEGORY) + { + Category cat = (Category)classification.getValue( attribute); + if ( cat == null) + { + Category rootCat = (Category)attribute.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + if ( rootCat.getCategories().length == 0) + { + cat = rootCat; + } + } + if (user.belongsTo( cat)) + { + return true; + } + } + } + } + } + return false; + } + + public CalendarOptions getCalendarOptions() { + RaplaConfiguration conf = null; + try { + User user = getUser(); + if ( user != null) { + conf = (RaplaConfiguration)getQuery().getPreferences(user).getEntry(CalendarOptionsImpl.CALENDAR_OPTIONS); + } + if ( conf == null ) { + conf = (RaplaConfiguration)getQuery().getPreferences(null).getEntry(CalendarOptionsImpl.CALENDAR_OPTIONS); + } + if ( conf != null) { + return new CalendarOptionsImpl( conf.getConfig()); + } + } catch (RaplaException ex) { + + } + return (CalendarOptions)getService( CalendarOptions.class.getName()); + } + + protected User getUser() throws RaplaException { + return getUserModule().getUser(); + } + + protected Logger getLogger() { + return logger; + } + + /** lookup the service in the serviceManager under the specified key: + serviceManager.lookup(role). + @throws IllegalStateException if GUIComponent wasn't serviced. No service method called + @throws UnsupportedOperationException if service not available. + */ + protected Object getService(String role) { + try { + return getContext().lookup(role); + } catch (RaplaContextException ex) { + getLogger().error("Cause " , ex); + throw new UnsupportedOperationException("Service not supported in this context: " + role); + } + } + + protected RaplaContext getContext() { + return serviceManager; + } + + /** lookup RaplaLocale from the context */ + protected RaplaLocale getRaplaLocale() { + if (serviceManager.raplaLocale == null) + serviceManager.raplaLocale = (RaplaLocale) getService(RaplaLocale.ROLE); + return serviceManager.raplaLocale; + } + + + protected Locale getLocale() { + return getRaplaLocale().getLocale(); + } + + protected I18nBundle childBundle; + /** lookup I18nBundle from the serviceManager */ + protected I18nBundle getI18n() { + String childBundleName = getChildBundleName(); + if ( childBundleName != null) { + if ( childBundle == null) { + I18nBundle pluginI18n = (I18nBundle) getService(I18nBundle.ROLE + "/" + childBundleName ); + childBundle = new CompoundI18n(pluginI18n,getI18nDefault()); + } + return childBundle; + } + return getI18nDefault(); + } + + private I18nBundle getI18nDefault() { + if (serviceManager.i18n == null) + serviceManager.i18n = (I18nBundle) getService(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + return serviceManager.i18n; + } + + /** lookup AppointmentFormater from the serviceManager */ + protected AppointmentFormater getAppointmentFormater() { + if (serviceManager.appointmentFormater == null) + serviceManager.appointmentFormater = (AppointmentFormater) getService(AppointmentFormater.ROLE); + return serviceManager.appointmentFormater; + } + + /** lookup PeriodModel from the serviceManager */ + protected PeriodModel getPeriodModel() { + try { + return getQuery().getPeriodModel(); + } catch (RaplaException ex) { + throw new UnsupportedOperationException("Service not supported in this context: " ); + } + } + + /** lookup QueryModule from the serviceManager */ + protected QueryModule getQuery() { + return getClientFacade(); + } + + protected ClientFacade getClientFacade() { + if (serviceManager.facade == null) + serviceManager.facade = (ClientFacade) getService( ClientFacade.ROLE ); + return serviceManager.facade; + } + + /** lookup ModificationModule from the serviceManager */ + protected ModificationModule getModification() { + return getClientFacade(); + } + + /** lookup UpdateModule from the serviceManager */ + protected UpdateModule getUpdateModule() { + return getClientFacade(); + } + + /** lookup UserModule from the serviceManager */ + protected UserModule getUserModule() { + return getClientFacade(); + } + + /** returns a translation for the object name into the selected language. If + a translation into the selected language is not possible an english translation will be tried next. + If theres no translation for the default language, the first available translation will be used. */ + public String getName(Object object) { + if (object == null) + return ""; + if (object instanceof Named) { + String name = ((Named) object).getName(getI18n().getLocale()); + return (name != null) ? name : ""; + } + return object.toString(); + } + + /** calls getI18n().getString(key) */ + public String getString(String key) { + return getI18n().getString(key); + } + + + /** calls "<html>" + getI18n().getString(key) + "</html>"*/ + public String getStringAsHTML(String key) { + return "" + getI18n().getString(key) + ""; + } + + /** calls getI18n().getIcon(key) */ + public ImageIcon getIcon(String key) { + return getI18n().getIcon(key); + } + + private static class ClientServiceManager implements RaplaContext { + I18nBundle i18n; + ClientFacade facade; + RaplaLocale raplaLocale; + RaplaContext parent; + AppointmentFormater appointmentFormater; + public Object lookup(String role) throws RaplaContextException { + return parent.lookup(role); + } + public boolean has(String role) { + return parent.has(role); + } + } + + public Preferences newEditablePreferences() throws RaplaException { + return (Preferences) getModification().edit(getQuery().getPreferences()); + } + + public PluginDescriptor findDescriptor( String pluginClassName ) throws RaplaException + { + List pluginList = (List) getService( PluginDescriptor.PLUGIN_LIST); + for (Iterator it = pluginList.iterator();it.hasNext();) { + PluginDescriptor descriptor = (PluginDescriptor)it.next(); + if (descriptor.getClass().getName().equals( pluginClassName )) { + return descriptor; + } + } + return null; + } + + public static boolean isSigned() { + try + { + final ClassLoader classLoader = RaplaComponent.class.getClassLoader(); + { + final Enumeration resources = classLoader.getResources("META-INF/RAPLA.SF"); + if (resources.hasMoreElements() ) + return true; + } + { + final Enumeration resources = classLoader.getResources("META-INF/RAPLA.DSA"); + if (resources.hasMoreElements() ) + return true; + } + } + catch ( IOException ex) + { + + } + return false; + } + +} diff --git a/src/org/rapla/facade/UpdateErrorListener.java b/src/org/rapla/facade/UpdateErrorListener.java new file mode 100644 index 0000000..5e4f034 --- /dev/null +++ b/src/org/rapla/facade/UpdateErrorListener.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; +import org.rapla.framework.RaplaException; + +/** Classes implementing this interface will be notified when an update error + * occurred. The listener can be registered by calling + * addUpdateErrorListener of the UpdateModule
    + * Don't forget to remove the listener by calling removeUpdateErrorLister + * when no longer need. + * @author Christopher Kohlhaas + * @see UpdateModule + */ + +public interface UpdateErrorListener { + /** this notifies all listeners that the update of the data has + caused an error. A normal source for UpdateErrors is a broken + connection to the server. + */ + void updateError(RaplaException ex); + void disconnected(); +} + + + + + diff --git a/src/org/rapla/facade/UpdateModule.java b/src/org/rapla/facade/UpdateModule.java new file mode 100644 index 0000000..5034392 --- /dev/null +++ b/src/org/rapla/facade/UpdateModule.java @@ -0,0 +1,75 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import org.rapla.framework.RaplaException; +public interface UpdateModule +{ + public final static String REFRESH_INTERVAL_ENTRY = "org.rapla.refreshInterval"; + public final static String ARCHIVE_AGE = "org.rapla.archiveAge"; + + /** + * Refreshes the data that is in the cache (or on the client) + and notifies all registered {@link ModificationListener ModificationListeners} + with an update-event. + There are two types of refreshs. + +
      +
    • Incremental Refresh: Only the changes are propagated
    • +
    • Full Refresh: The complete data is reread. (Currently disabled in Rapla)
    • +
    + +

    + Incremental refreshs are the normal case if you have a client server basis. + (In a single user system no refreshs are necessary at all). + The refreshs are triggered in defined intervals if you use the webbased communication + and automaticaly if you use the old communication layer. You can change the refresh interval + via the admin options. +

    +

    + Of course you can call a refresh anytime you want to synchronize with the server, e.g. if + you want to ensure you are uptodate before editing. If you are on the server you dont need to refresh. +

    + + + WARNING: When using full refresh on a local file storage + all information will be changed. So use it + only if you modify the data from external. + You better re-get and re-draw all + the information in the Frontend after a full refresh. + + + */ + void refresh() throws RaplaException; + /** returns if the Facade is connected through a server (false if it has a local store)*/ + boolean isClientForServer(); + /** + * registers a new ModificationListener. + * A ModifictionEvent will be fired to every registered DateChangeListener + * when one or more entities have been added, removed or changed + * @see ModificationListener + * @see ModificationEvent + */ + void addModificationListener(ModificationListener listener); + void removeModificationListener(ModificationListener listener); + void addUpdateErrorListener(UpdateErrorListener listener); + void removeUpdateErrorListener(UpdateErrorListener listener); + + void addAllocationChangedListener(AllocationChangeListener triggerListener); + void removeAllocationChangedListener(AllocationChangeListener triggerListener); +} + + + + + diff --git a/src/org/rapla/facade/UserModule.java b/src/org/rapla/facade/UserModule.java new file mode 100644 index 0000000..0aed562 --- /dev/null +++ b/src/org/rapla/facade/UserModule.java @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade; + +import org.rapla.entities.User; +import org.rapla.framework.RaplaException; +/** Encapsulates the methods responsible for authentification. +*/ + +public interface UserModule { + /** The login method establishes the connection and loads data. + * It should clear the password char array. + * @return false on an invalid login. + * @throws RaplaException if the connection can't be established. + */ + boolean login(String username,char[] password) throws RaplaException; + + /** logout of the current user */ + void logout() throws RaplaException; + + /** returns if a session is active. True between a successful login and logout. */ + boolean isSessionActive(); + + + /** throws an Exception if no user has loged in. + @return the user that has loged in. */ + User getUser() throws RaplaException; + + /** the admin can switch to another user!*/ + void switchTo(User user); + /** returns true if the admin has switched to anoter user!*/ + boolean canSwitchBack(); + + void changePassword(User user,char[] oldPassword,char[] newPassword) throws RaplaException; + boolean canChangePassword(); +} + + + + + diff --git a/src/org/rapla/facade/internal/AllocationChangeFinder.java b/src/org/rapla/facade/internal/AllocationChangeFinder.java new file mode 100644 index 0000000..789b198 --- /dev/null +++ b/src/org/rapla/facade/internal/AllocationChangeFinder.java @@ -0,0 +1,219 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade.internal; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.AllocationChangeEvent; +import org.rapla.storage.UpdateResult; + +/** listens for allocation changes. + Collects AllocationChangeEvents. + */ +class AllocationChangeFinder extends AbstractLogEnabled +{ + ArrayList changeList = new ArrayList(); + UpdateResult updateResult; + + AllocationChangeFinder(Logger logger, UpdateResult updateResult) { + enableLogging( logger ); + if ( updateResult == null) + return; + User user = updateResult.getUser(); + for (Iterator it = updateResult.getOperations( UpdateResult.Add.class );it.hasNext();) { + UpdateResult.Add addOp = (UpdateResult.Add) it.next(); + added( (RaplaObject) addOp.getNew(), user ); + } + for (Iterator it = updateResult.getOperations( UpdateResult.Remove.class );it.hasNext();) { + UpdateResult.Remove removeOp = (UpdateResult.Remove) it.next(); + removed( (RaplaObject) removeOp.getCurrent(), user ); + } + for (Iterator it = updateResult.getOperations( UpdateResult.Change.class );it.hasNext();) { + UpdateResult.Change changeOp = (UpdateResult.Change) it.next(); + RaplaObject old = (RaplaObject) changeOp.getOld(); + RaplaObject newObj =(RaplaObject) changeOp.getNew(); + changed(old , newObj, user ); + } + } + + public List getTriggerEvents() { + return changeList; + } + + private void added(RaplaObject entity, User user) { + RaplaType raplaType = entity.getRaplaType(); + if ( raplaType.is( Reservation.TYPE )) { + Reservation newRes = (Reservation) entity; + addAppointmentAdd( + user + ,newRes + ,Arrays.asList(newRes.getAllocatables()) + ,Arrays.asList(newRes.getAppointments()) + ); + } + } + + private void removed(RaplaObject entity,User user) { + RaplaType raplaType = entity.getRaplaType(); + if ( raplaType.is( Reservation.TYPE )) { + if (getLogger().isDebugEnabled()) + getLogger().debug("Reservation removed: " + entity); + Reservation oldRes = (Reservation) entity; + addAppointmentRemove( + user + ,oldRes + ,oldRes + ,Arrays.asList(oldRes.getAllocatables()) + ,Arrays.asList(oldRes.getAppointments()) + ); + } + } + + private void changed(RaplaObject oldEntity,RaplaObject newEntity, User user) { + RaplaType raplaType = oldEntity.getRaplaType(); + if (raplaType.is( Reservation.TYPE )) { + if (getLogger().isDebugEnabled()) + getLogger().debug("Reservation changed: " + oldEntity); + Reservation oldRes = (Reservation) oldEntity; + Reservation newRes = (Reservation) newEntity; + List alloc1 = Arrays.asList(oldRes.getAllocatables()); + List alloc2 = Arrays.asList(newRes.getAllocatables()); + List app1 = Arrays.asList(oldRes.getAppointments()); + List app2 = Arrays.asList(newRes.getAppointments()); + + ArrayList removeList = new ArrayList(alloc1); + removeList.removeAll(alloc2); + // add removed allocations to the change list + addAppointmentRemove(user, oldRes,newRes, removeList, app1); + + ArrayList addList = new ArrayList(alloc2); + addList.removeAll(alloc1); + // add new allocations to the change list + addAppointmentAdd(user, newRes, addList, app2); + + ArrayList changeList = new ArrayList(alloc2); + changeList.retainAll(alloc1); + addAllocationDiff(user, changeList,oldRes,newRes); + } + if ( Appointment.TYPE.equals( raplaType )) { + if (getLogger().isDebugEnabled()) + getLogger().debug("Appointment changed: " + oldEntity + " to " + newEntity); + } + } + + /* + private void printList(List list) { + Iterator it = list.iterator(); + while (it.hasNext()) { + System.out.println(it.next()); + } + } + */ + + /** + * Calculates the allocations that have changed + */ + private void addAllocationDiff(User user,List allocatableList,Reservation oldRes,Reservation newRes) { + List app1 = Arrays.asList(oldRes.getAppointments()); + List app2 = Arrays.asList(newRes.getAppointments()); + ArrayList removeList = new ArrayList(app1); + removeList.removeAll(app2); + addAppointmentRemove(user, oldRes,newRes,allocatableList,removeList); + ArrayList addList = new ArrayList(app2); + addList.removeAll(app1); + addAppointmentAdd(user, newRes,allocatableList,addList); + /* + System.out.println("OLD appointments"); + printList(app1); + System.out.println("NEW appointments"); + printList(app2); + */ + ArrayList newList = new ArrayList(app2); + newList.retainAll(app1); + Collections.sort(newList); + + ArrayList oldList = new ArrayList(app1); + oldList.retainAll(app2); + Collections.sort(oldList); + + for (int i=0;iuser = null, see call hierarchy + * + * Changed in: Rapla 1.4 + */ + public Conflict[] getConflicts(Date startDate, User user) throws RaplaException + { + synchronized (operator.getLock()) + { + ArrayList conflictList = new ArrayList(); + + // Get all appointments since the startDate + SortedSet allAppointments = operator.getAppointments(null, startDate, null); + + // Create a new set of time blocks, ordered by their start dates + SortedSet allAppointmentBlocks = new TreeSet(new AppointmentBlockStartComparator()); + + // Get all time blocks of all appointments + for (Appointment appointment:allAppointments) + { + + // Get the end date of the appointment (if repeating, end date of last occurence) + Date end = appointment.getMaxEnd(); + + // Check if the appointment is repeating forever + if (end == null) + { + // If the repeating has no end, set the end to the start of the last appointment in the set + 100 weeks (~2 years) + end = new Date(((Appointment) allAppointments.last()).getStart().getTime() + DateTools.MILLISECONDS_PER_WEEK * 100); + } + + /* + * If the appointment has a repeating, get all single time blocks of it. If it is no + * repeating, this will just create one block, which is equal to the appointment + * itself. + */ + appointment.createBlocks(appointment.getStart(), DateTools.fillDate(end), allAppointmentBlocks); + } + + + + // Check the conflicts for each time block + for (Iterator it = allAppointmentBlocks.iterator();it.hasNext();) + { + AppointmentBlock appBlock = (AppointmentBlock)it.next(); + final Appointment appointment1 = appBlock.getAppointment(); + + /* + * Shrink the set of all time blocks down to those with a start date which is + * later than or equal to the start date of the block + */ + final SortedSet tailSet = allAppointmentBlocks.tailSet(new Long(appBlock.getStart())); + + // Check all time blocks which start after or at the same time as the block which is being checked + for (AppointmentBlock appBlock2:tailSet) + { + // If the start date of the compared block is after the end date of the block, quit the loop + if (appBlock2.getStart() > appBlock.getEnd()) + { + break; + } + // Check if the corresponding appointments of both blocks overlap each other + final Appointment appointment2 = appBlock2.getAppointment(); + if (appointment2.overlaps(appointment1)) + { + // Add appointments to conflict list + addConflicts(conflictList, appointment1, appointment2, startDate, user); + } + } + } + + return (Conflict[]) conflictList.toArray(Conflict.CONFLICT_ARRAY); + } + } + + public Set getAllocatableBindings(Appointment forAppointment) throws RaplaException { + Set allocatableSet = new HashSet(); + + synchronized (operator.getLock()) { + Iterator it = getOverlappingAppointments( forAppointment ).iterator(); + while (it.hasNext()) { + Appointment appointment = (Appointment) it.next(); + Reservation reservation = appointment.getReservation(); + Allocatable[] allocatables = reservation.getAllocatables(); + for (int i=0;i= Permission.ALLOCATE && p.covers( start, end, today ) ) + { + return true; + } + if ( original == null ) + { + continue; + } + + // We must check if the changes of the existing appointment + // are in a permisable timeframe (That should be allowed) + + // 1. check if appointment is old, + // 2. check if allocatable was already assigned to the appointment + Appointment originalAppointment = original.findAppointment( appointment ); + if ( originalAppointment == null + || !original.hasAllocated( allocatable, originalAppointment) + ) { + continue; + } + + // 3. check if the appointment has changed during + // that time + if ( appointment.matches( originalAppointment ) ) + { + return true; + } + if ( accessLevel >= Permission.ALLOCATE ) + { + Date maxTime = p.getMaxAllowed( today ); + if (maxTime == null) + maxTime = p.getMinAllowed( today); + + Date minChange = + appointment.getFirstDifference( originalAppointment, maxTime ); + Date maxChange = + appointment.getLastDifference( originalAppointment, maxTime ); + //System.out.println ( "minChange: " + minChange + ", maxChange: " + maxChange ); + + if ( p.covers( minChange, maxChange, today ) ) { + return true; + } + } + } + return false; + } + + private Collection getOverlappingAppointments( Appointment appointment) throws RaplaException { + ArrayList appointmentList = new ArrayList(); + Iterator it = operator.getAppointments + ( + null + ,appointment.getStart() + ,appointment.getMaxEnd() + ).iterator(); + + while (it.hasNext()) { + Appointment appointment2 = (Appointment) it.next(); + if ( appointment.getReservation() != null && appointment.getReservation().isIdentical(appointment2.getReservation())) + continue; + // System.out.println("Testing " + appointment); + // System.out.println(" for overlap with " + appointments[i]); + if (appointment.overlaps(appointment2)) { + appointmentList.add(appointment2); + // System.out.println(" Appointment overlaps"); + } + } + return appointmentList; + } + + + private Conflict createConflict(Appointment a1, + Appointment a2,Allocatable allocatable) { + + return new ConflictImpl(a1.getReservation() + ,a1 + ,allocatable + ,a2.getReservation() + ,a2.getReservation().getOwner() + ,a2); + } + + + private boolean isConflict(Appointment a1,Appointment a2,Allocatable allocatable, Date startDate) { + if (allocatable.isHoldBackConflicts()) + return false; + if ( startDate != null) { + if (a1.getMaxEnd() != null && startDate.after(a1.getMaxEnd())) + return false; + if (a2.getMaxEnd() != null && startDate.after(a2.getMaxEnd())) + return false; + } + if ( !a1.getReservation().hasAllocated( allocatable, a1 ) + || !a2.getReservation().hasAllocated( allocatable, a2 ) + ) + return false; + + return true; + } + + private void addConflicts(List conflictList, Appointment appointment1, Appointment appointment2, Date startDate, User user) + { + Reservation reservation = appointment1.getReservation(); + Reservation overlappingReservation = appointment2.getReservation(); + if (reservation.equals(overlappingReservation)) + return; + Allocatable[] all = reservation.getAllocatables(); + Allocatable[] all2 = overlappingReservation.getAllocatables(); + for (int j = 0; j < all.length; j++) + { + if (contains(all2, all[j]) ) + { + if ( isConflict(appointment1, appointment2, all[j], startDate) ) + { + if (user == null || RaplaComponent.canModify(reservation, user) || RaplaComponent.canModify(overlappingReservation, user)) + { + final Conflict conflict = createConflict(appointment2, appointment1, all[j]); + // Rapla 1.4: Don't add conflicts twice + if (!conflictList.contains(conflict) ) + { + conflictList.add(conflict); + } + } + } + } + } + } + + private boolean contains(Allocatable[] allocatables,Allocatable allocatable) { + for (int i=0;i a2.getStart()) + return 1; + // a1 before a2 + if (a1.getEnd() < a2.getEnd()) + return -1; + // a1 after a2 + if (a1.getEnd() > a2.getEnd()) + return 1; + // If a1 and a2 have equal start and end dates, sort by hash code + return (o1.hashCode() < o2.hashCode()) ? -1 : 1; + } + + /** + * This method is used to compare an appointment block with a date + */ + public int compare(Long d1, Object o2) + { + // Check if o2 is a date object + if (o2 instanceof Long) + { + return d1.compareTo((Long) o2); + } + + // If not, the object is an appointment block + AppointmentBlock a2 = (AppointmentBlock) o2; + + // Date before appointment block + if (d1 < a2.getStart()) + { + return -1; + } + // Date after appointment block + if (d1 > a2.getStart()) + { + return 1; + } + + // Date is equal to the startdate of the appointment block + return -1; + } + } + +} diff --git a/src/org/rapla/facade/internal/ConflictImpl.java b/src/org/rapla/facade/internal/ConflictImpl.java new file mode 100644 index 0000000..c4aead1 --- /dev/null +++ b/src/org/rapla/facade/internal/ConflictImpl.java @@ -0,0 +1,134 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade.internal; + +import java.util.Locale; + +import org.rapla.entities.Named; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.Conflict; + +/** + * A conflict is the allocation of the same resource at the same time by different + * reservations. There's one conflict for each resource and each overlapping of + * two allocations. So if there are 3 reservations that allocate the same 2 resources + * on 2 days of the week, then we got ( 3 * 2 ) * 2 * 2 = 24 conflicts. Thats + * 3 reservations, each conflicting with two other 2 reservations on 2 days with 2 resources. + * + * @version 1.0 + * @author Christopher Kohlhaas + */ + +public class ConflictImpl implements Named, Conflict +{ + static public final RaplaType TYPE = new RaplaType(ConflictImpl.class,"conflict"); + + Reservation reserv1; + Appointment app1; + Allocatable allocatable; + Reservation reserv2; + User user2; + Appointment app2; + + public ConflictImpl(Reservation reserv1, + Appointment app1, + Allocatable allocatable, + Reservation reserv2, + User user2, + Appointment app2) + { + this.reserv1 = reserv1; + this.app1 = app1; + this.allocatable = allocatable; + this.reserv2 = reserv2; + this.user2 = user2; + this.app2 = app2; + } + /** @return the first Reservation, that is involed in the conflict.*/ + public Reservation getReservation1() { return reserv1; } + /** The appointment of the first reservation, that causes the conflict. */ + public Appointment getAppointment1() { return app1; } + /** @return the allocatable, allocated for the same time by two different reservations. */ + public Allocatable getAllocatable() { return allocatable; } + /** @return the second Reservation, that is involed in the conflict.*/ + public Reservation getReservation2() { return reserv2; } + /** @return The User, who created the second Reservation.*/ + public User getUser2() { return user2; } + /** The appointment of the second reservation, that causes the conflict. */ + public Appointment getAppointment2() { return app2; } + + public static final ConflictImpl[] CONFLICT_ARRAY= new ConflictImpl[] {}; + + /** + * @see org.rapla.entities.Named#getName(java.util.Locale) + */ + public String getName(Locale locale) { + return reserv1.getName( locale ); + } + + public boolean contains(Appointment appointment) { + if ( appointment == null) + return false; + if ( app1 != null && app1.equals( appointment)) + return true; + if ( app2 != null && app2.equals( appointment)) + return true; + return false; + } + + public boolean equals( Object obj) { + if (!(obj instanceof Conflict) || obj == null) + return false; + Conflict secondConflict = (Conflict) obj; + + if (!contains( secondConflict.getAppointment1())) + return false; + if (!contains( secondConflict.getAppointment2())) + return false; + if ( allocatable != null && !allocatable.equals( secondConflict.getAllocatable())) { + return false; + } + return true; + } + public RaplaType getRaplaType() + { + return Conflict.TYPE; + } + + public int hashCode() { + long value = 0; + if ( allocatable != null) + value += allocatable.hashCode(); + if ( app1 != null) + value += app1.hashCode(); + if ( app2 != null) + value += app2.hashCode(); + return (int)value % Integer.MAX_VALUE; + } + + +} + + + + + + + + + + diff --git a/src/org/rapla/facade/internal/FacadeImpl.java b/src/org/rapla/facade/internal/FacadeImpl.java new file mode 100644 index 0000000..ef5fc07 --- /dev/null +++ b/src/org/rapla/facade/internal/FacadeImpl.java @@ -0,0 +1,1236 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade.internal; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; +import java.util.TreeSet; +import java.util.Vector; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.Command; +import org.rapla.components.util.CommandQueue; +import org.rapla.components.util.DateTools; +import org.rapla.components.util.Tools; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.Category; +import org.rapla.entities.Entity; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.UserComparator; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.configuration.internal.CalendarModelConfigurationImpl; +import org.rapla.entities.configuration.internal.RaplaMapImpl; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.domain.internal.AllocatableImpl; +import org.rapla.entities.domain.internal.AppointmentImpl; +import org.rapla.entities.domain.internal.PeriodImpl; +import org.rapla.entities.domain.internal.ReservationImpl; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.entities.dynamictype.internal.AttributeImpl; +import org.rapla.entities.dynamictype.internal.DynamicTypeImpl; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.entities.internal.UserImpl; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.facade.AllocationChangeEvent; +import org.rapla.facade.AllocationChangeListener; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.Conflict; +import org.rapla.facade.ModificationEvent; +import org.rapla.facade.ModificationListener; +import org.rapla.facade.PeriodModel; +import org.rapla.facade.UpdateErrorListener; +import org.rapla.facade.UpdateModule; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.RaplaSecurityException; +import org.rapla.storage.StorageOperator; +import org.rapla.storage.StorageUpdateListener; +import org.rapla.storage.UpdateResult; +/** This is the default implementation of the necessary Client-Facade to the DB-Subsystem. + *

    Sample configuration 1: +

    +   <facade id="facade">
    +      <store>file</store>
    +   </facade>
    +  
    +

    +

    Sample Configuration 2: +

    +     <facade id="facade" logger="facade">
    +        <store>remote</store>
    +        <username>homer</username>
    +        <password>duffs</password>
    +     </facade>
    +  
    + This facade automatically starts with user homer. + *

    + *

    The store entry contains the id of a storage-component. + * Storage-Components are all components that implement the + * {@link StorageOperator} interface. + *

    + */ + +public class FacadeImpl extends AbstractLogEnabled + implements + ClientFacade + ,StorageUpdateListener +{ + protected CommandQueue notifyQueue; + private Configuration operatorConfig; + private User workingUser = null; + private User originalUser = null; + private StorageOperator operator; + private Vector modificatonListenerList = new Vector(); + private Vector allocationListenerList = new Vector(); + private Vector errorListenerList = new Vector(); + private I18nBundle i18n; + private PeriodModelImpl periodModel; + private ConflictFinder conflictFinder; + String username; + String password; + Locale locale; + + public FacadeImpl(RaplaContext context,Configuration config, Logger logger) throws RaplaException + { + enableLogging( logger ); + i18n = (I18nBundle) context.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + locale = ((RaplaLocale)context.lookup(RaplaLocale.ROLE)).getLocale(); + operatorConfig = config.getChild("store"); + getLogger().debug("Facade configured with operator '" + operatorConfig.getValue("*") + "'"); + username = config.getChild("username").getValue(null); + password = config.getChild("password").getValue(""); + try { + operator = (StorageOperator) context.lookup(StorageOperator.ROLE + "/" + operatorConfig.getValue("*")); + conflictFinder = new ConflictFinder( operator ); + operator.addStorageUpdateListener(this); + } + catch (RaplaContextException ex) + { + throw new RaplaContextException + ( + CachableStorageOperator.ROLE, + "Store at " + operatorConfig.getLocation() + + " is not found (or could not be initialized)" + ,ex + ); + } + notifyQueue = org.rapla.components.util.CommandQueue.createCommandQueue(); + if (username!=null) + if (!login(username,password.toCharArray())) + throw new RaplaException(i18n.getString("error.login")); + initRefresh(); + } + + public StorageOperator getOperator() { + return operator; + } + + //Implementation of StorageUpdateListener. + /** This method is called by the storage-operator, when stored objects + have changed. + + Caution: You must not lock the storage operator during processing + of this call, because it could have been locked by the store method, causing deadlocks + */ + public void objectsUpdated(UpdateResult evt) { + if (getLogger().isDebugEnabled()) + getLogger().debug("Objects updated"); + + notifyQueue.enqueue(new UserCheckCommand()); + + fireUpdateEvent( evt ); + } + + public void switchTo(User user) { + if (user == null) { + workingUser = originalUser; + originalUser = null; + } else { + originalUser = workingUser; + workingUser = user; + } + // fireUpdateEvent(new ModificationEvent()); + } + + public boolean canSwitchBack() { + return originalUser != null; + } + + public void updateError(RaplaException ex) { + getLogger().fatalError(ex.getMessage(),ex); + fireUpdateError(ex); + } + + public void storageDisconnected() { + fireStorageDisconnected(); + } + + /****************************** + * Update-module * + ******************************/ + public boolean isClientForServer() { + return operator.supportsActiveMonitoring(); + } + + public void refresh() throws RaplaException { + synchronized (operator.getLock()) { + if ( operator.supportsActiveMonitoring()) + { + operator.refresh(); + } + } + } + + public void addModificationListener(ModificationListener listener) { + modificatonListenerList.add(listener); + } + + public void removeModificationListener(ModificationListener listener) { + modificatonListenerList.remove(listener); + } + + public ModificationListener[] getModificationListeners() { + return (ModificationListener[])modificatonListenerList.toArray(new ModificationListener[]{}); + } + + private Collection getModificationListeners(boolean invokeLater) { + if (modificatonListenerList.size() == 0) + return Tools.EMPTY_LIST; + synchronized (this) { + Collection list = new ArrayList(3); + if ( periodModel != null) { + list.add( periodModel ); + } + Iterator it = modificatonListenerList.iterator(); + while (it.hasNext()) { + ModificationListener listener = (ModificationListener) it.next(); + if (listener.isInvokedOnAWTEventQueue() == invokeLater) + list.add(listener); + } + return list; + } + } + + public void addAllocationChangedListener(AllocationChangeListener listener) { + allocationListenerList.add(listener); + } + + public void removeAllocationChangedListener(AllocationChangeListener listener) { + allocationListenerList.remove(listener); + } + + private Collection getAllocationChangeListeners(boolean invokeLater) { + if (allocationListenerList.size() == 0) + return Tools.EMPTY_LIST; + synchronized (this) { + Collection list = new ArrayList(3); + Iterator it = allocationListenerList.iterator(); + while (it.hasNext()) { + AllocationChangeListener listener = (AllocationChangeListener) it.next(); + if (listener.isInvokedOnAWTEventQueue() == invokeLater) + list.add(listener); + } + return list; + } + } + + public void addUpdateErrorListener(UpdateErrorListener listener) { + errorListenerList.add(listener); + } + + public void removeUpdateErrorListener(UpdateErrorListener listener) { + errorListenerList.remove(listener); + } + + public UpdateErrorListener[] getUpdateErrorListeners() { + return (UpdateErrorListener[])errorListenerList.toArray(new UpdateErrorListener[]{}); + } + + + protected void fireUpdateError(RaplaException ex) { + UpdateErrorListener[] listeners = getUpdateErrorListeners(); + for (int i = 0;i 0) { + ((AllocationChangeListener)listener).changed( allocationChangeEvents ); + } + + } catch (RaplaException ex) { + getLogger().error("update-exception",ex); + bError = true; + } catch (Exception ex) { + getLogger().error("update-exception",ex); + bError = true; + } + } + if (getLogger().isDebugEnabled() && !bError) + getLogger().debug("GUI update took " + (System.currentTimeMillis()- time) + " ms."); + if (hasFailed()) + getLogger().error("There was an error while refreshing the displayed data. It could be different from the data stored. Restarting Rapla is recommended."); + } + }; + + /** fires update event asynchronous. + */ + protected void fireUpdateEvent(UpdateResult evt) { + if ( periodModel != null) + { + try { + periodModel.update(); + } catch (RaplaException e) { + getLogger().error( "Can't update Period Model", e ); + } + } + Collection modificationListeners = getModificationListeners(false); + Collection allocationChangeListeners = getAllocationChangeListeners( false ); + if (modificationListeners.size()>0 || allocationChangeListeners.size() > 0) + { + notifyQueue.enqueue(new UpdateCommand(modificationListeners,allocationChangeListeners, evt)); + } + modificationListeners = getModificationListeners(true); + allocationChangeListeners = getAllocationChangeListeners( true ); + if (modificationListeners.size()>0 || allocationChangeListeners.size() > 0) + { + javax.swing.SwingUtilities.invokeLater(new UpdateCommand(modificationListeners, allocationChangeListeners, evt)); + } + if (getLogger().isDebugEnabled()) + { + getLogger().debug("Update event fired"); + } + } + + + + + /****************************** + * Query-module * + ******************************/ + private Collection getVisibleAllocatables(ClassificationFilter[] filters) throws RaplaException { + Collection allocatables = new ArrayList(); + synchronized (operator.getLock()) { + allocatables.addAll(operator.getObjects(Allocatable.TYPE)); + } + Iterator it = allocatables.iterator(); + while ( it.hasNext() ) { + Allocatable allocatable = (Allocatable) it.next(); + if ( workingUser == null || workingUser.isAdmin()) + continue; + if ( !allocatable.canRead( workingUser ) ) + it.remove(); + } + + removeFilteredClassifications( allocatables, filters); + return allocatables; + } + + private Collection getVisibleReservations(User user, Date start, Date end, ClassificationFilter[] reservationFilters) throws RaplaException { + Collection reservations = new ArrayList(); + synchronized (operator.getLock()) { + reservations.addAll(operator.getReservations(user,start, end)); + } + removeFilteredClassifications( reservations, reservationFilters); + + //Category can_see = getUserGroupsCategory().getCategory( Permission.GROUP_CAN_READ_EVENTS_FROM_OTHERS); + Iterator it = reservations.iterator(); + boolean canSeeOthers = canReadReservationsFromOthers(user); + while ( it.hasNext() ) { + Reservation r = (Reservation) it.next(); + if ( workingUser == null || r.getOwner().equals( workingUser ) || canSeeOthers) + continue; + Allocatable[] allocatables = r.getAllocatables(); + boolean oneVisibleAllocatable = false; + for ( int i=0;i filter = new ArrayList(); + if ( allocatableFilter != null) + { + filter.addAll( Arrays.asList( allocatableFilter)); + for (ClassificationFilter entry: allocatableFilter) + { + resourceTypes++; + if (entry.ruleSize()>0 ) + { + defaultResourceTypes = false; + } + } + } + if ( eventFilter != null) + { + filter.addAll( Arrays.asList( eventFilter)); + for (ClassificationFilter entry: eventFilter) + { + eventTypes++; + if (entry.ruleSize()>0 ) + { + defaultEventTypes = false; + } + } + } + + try { + DynamicType[] allEventTypes; + allEventTypes = getDynamicTypes(DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + if ( allEventTypes.length > eventTypes && eventFilter!= null) + { + defaultEventTypes = false; + } + final DynamicType[] allTypes = getDynamicTypes(null); + final int allResourceTypes = allTypes.length - allEventTypes.length; + if ( allResourceTypes > resourceTypes && allocatableFilter!= null) + { + defaultResourceTypes = false; + } + } + catch (RaplaException e) + { + getLogger().warn("Could not set default filters", e); + } + + final ClassificationFilter[] filterArray = filter.toArray(ClassificationFilter.CLASSIFICATIONFILTER_ARRAY); + return new CalendarModelConfigurationImpl( selected, filterArray, defaultResourceTypes, defaultEventTypes, title, startDate, endDate, selectedDate, view,optionMap); + } + + public Reservation newReservation() throws RaplaException + { + Date today = today(); + ReservationImpl reservation = new ReservationImpl(today ,today ); + Classification classification = getDynamicTypes(DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION)[0].newClassification(); + reservation.setClassification(classification); + setNew(reservation); + return reservation; + } + + public Appointment newAppointment(Date startDate,Date endDate) throws RaplaException + { + AppointmentImpl appointment = new AppointmentImpl(startDate,endDate); + setNew(appointment); + return appointment; + } + + public Appointment newAppointment(Date startDate,Date endDate, RepeatingType repeatingType, int repeatingDuration) throws RaplaException + { + AppointmentImpl appointment = new AppointmentImpl(startDate,endDate, repeatingType, repeatingDuration); + setNew(appointment); + return appointment; + } + + public Allocatable newResource() throws RaplaException + { + return newAllocatable( false ); + } + + public Allocatable newPerson() throws RaplaException + { + return newAllocatable( true ); + } + + private Allocatable newAllocatable( boolean isPerson ) throws RaplaException { + Date today = today(); + AllocatableImpl allocatable = new AllocatableImpl(today,today); + String classificationType = isPerson ? DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION : DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION; + DynamicType[] dynamicTypes = getDynamicTypes( classificationType ); + DynamicType dynamicType = dynamicTypes[0]; + Classification classification = dynamicType.newClassification(); + User user = getUser(); + allocatable.addPermission( allocatable.newPermission() ); + if ( !user.isAdmin() ) { + Permission permission = allocatable.newPermission(); + permission.setUser( user ); + permission.setAccessLevel( Permission.ADMIN ); + allocatable.addPermission( permission ); + } + allocatable.setClassification(classification); + setNew(allocatable); + return allocatable; + } + + public Period newPeriod() throws RaplaException + { + PeriodImpl period = new PeriodImpl(); + Date today = today(); + period.setStart(DateTools.cutDate(today)); + period.setEnd(DateTools.fillDate(today)); + setNew(period); + return period; + } + + public Date today() { + return operator.today(); + } + + public Category newCategory() throws RaplaException + { + CategoryImpl category = new CategoryImpl(); + setNew(category); + return category; + } + + + private Attribute createStringAttribute(String key, String name) throws RaplaException { + Attribute attribute = newAttribute(AttributeType.STRING); + attribute.setKey(key); + attribute.getName().setName(i18n.getLang(), i18n.getString(name)); + return attribute; + } + + public DynamicType newDynamicType(String classificationType) throws RaplaException { + DynamicTypeImpl dynamicType = new DynamicTypeImpl(); + dynamicType.setAnnotation("classification-type", classificationType ); + dynamicType.setElementKey(createDynamicTypeKey(classificationType)); + setNew(dynamicType); + if (classificationType.equals (DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION)) + { + dynamicType.addAttribute(createStringAttribute("name","name")); + dynamicType.setAnnotation("nameformat", "{name}"); + } + else if (classificationType.equals (DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION)) + + { + dynamicType.addAttribute(createStringAttribute("title","reservation.name")); + dynamicType.setAnnotation("nameformat", "{title}"); + } + else if (classificationType.equals (DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION)) + { + dynamicType.addAttribute(createStringAttribute("surname","surname")); + dynamicType.addAttribute(createStringAttribute("forename","forename")); + dynamicType.addAttribute(createStringAttribute("email","email")); + dynamicType.setAnnotation("nameformat", "{surname} {forename}"); + } + return dynamicType; + } + + public Attribute newAttribute (AttributeType attributeType) throws RaplaException { + AttributeImpl attribute = new AttributeImpl(attributeType); + setNew(attribute); + return attribute; + } + + public User newUser() throws RaplaException { + UserImpl user = new UserImpl(); + setNew(user); + Category modifyPreferences = getUserGroupsCategory().getCategory(Permission.GROUP_MODIFY_PREFERENCES_KEY); + if ( modifyPreferences != null) + { + user.addGroup( modifyPreferences); + } + Category readOthers = getUserGroupsCategory().getCategory(Permission.GROUP_CAN_READ_EVENTS_FROM_OTHERS); + if ( readOthers != null) + { + user.addGroup( readOthers); + } + return user; + } + + private String createDynamicTypeKey(String classificationType) throws RaplaException { + DynamicType[] dts = getDynamicTypes(classificationType); + int max = 1; + for (int i=0;i=0 + && key.length() > len + && Character.isDigit(key.charAt(len)) + ) + { + try { + int value = Integer.valueOf(key.substring(len)).intValue(); + if (value >= max) + max = value + 1; + } catch (NumberFormatException ex) { + } + } + } + return classificationType + (max); + } + + private void setNew(RefEntity entity) throws RaplaException { + setNew( entity, null); + } + + /** recursivly set new ids */ + private void setNew(RefEntity entity, User user) throws RaplaException { + + if ( entity.getSubEntities().hasNext() ) + { + throw new RaplaException("The current Rapla Version doesnt support cloning entities with sub-entities. (Except reservations)"); + } + + RaplaType raplaType = ((RaplaObject) entity).getRaplaType(); + synchronized (operator.getLock()) + { + entity.setId(operator.createIdentifier(raplaType)); + } + + entity.setVersion(0); + if (getLogger() != null && getLogger().isDebugEnabled()) + { + getLogger().debug("new " + entity.getId()); + } + + if (entity instanceof Ownable) + { + if ( user == null) + user = getUser(); + ((Ownable)entity).setOwner(user); + } + } + + public void checkReservation(Reservation reservation) throws RaplaException { + if (reservation.getAppointments().length == 0) + { + throw new RaplaException(i18n.getString("error.no_appointment")); + } + + if (reservation.getName(i18n.getLocale()).trim().length() ==0) + { + throw new RaplaException(i18n.getString("error.no_reservation_name")); + } + } + + public Entity edit(Entity obj) throws RaplaException { + if ( obj == null) + throw new NullPointerException("Can't edit null objects"); + synchronized (operator.getLock()) { + return operator.editObject( obj, workingUser ); + } + } + + public Entity clone(Entity obj) throws RaplaException { + if ( obj == null) + throw new NullPointerException("Can't clone null objects"); + + if ( obj instanceof Reservation) + { + return cloneReservation( (Reservation) obj ); + } + + try + { + RefEntity clone = (RefEntity) ((Mementable) obj).deepClone(); + removeParents( clone ); + setNew(clone, this.workingUser); + return clone; + } + catch (ClassCastException ex) + { + throw new RaplaException("This entity can't be cloned ",ex); + } + + } + + private void removeParents( RefEntity clone ) + { + if ( clone instanceof AppointmentImpl ) + { + ( (AppointmentImpl) clone ).removeParent(); + } + + if ( clone instanceof CategoryImpl ) + { + ( (CategoryImpl) clone ).removeParent(); + } + } + + + private Reservation cloneReservation( Reservation obj ) throws RaplaException + { + Reservation clone =(Reservation) ((Mementable) obj).deepClone(); + HashMap restrictions = new HashMap(); + Allocatable[] allocatables = clone.getAllocatables(); + + for ( int i=0;i< allocatables.length;i++) + { + restrictions.put( allocatables, clone.getRestriction( allocatables[i])); + } + + Appointment[] clonedAppointments = clone.getAppointments(); + for ( int i=0;i< clonedAppointments.length;i++) + { + setNew((RefEntity)clonedAppointments[i], this.workingUser); + clone.removeAppointment( clonedAppointments[i] ); + } + + setNew((RefEntity)clone, this.workingUser); + for ( int i=0;i< clonedAppointments.length;i++) + { + clone.addAppointment( clonedAppointments[i] ); + } + + for ( int i=0;i< allocatables.length;i++) + { + Appointment[] appointments = (Appointment[])restrictions.get( allocatables[i] ); + if ( appointments != null ) + { + clone.setRestriction( allocatables[i], appointments ); + } + } + + return clone; + } + + public Entity getPersistant(Entity obj) throws RaplaException { + synchronized (operator.getLock()) { + return operator.getPersistant( obj ); + } + } + + public void store(Entity obj) throws RaplaException { + if ( obj == null) + throw new NullPointerException("Can't store null objects"); + storeObjects(new Entity[] {obj}); + } + + public void remove(Entity obj) throws RaplaException { + if ( obj == null) + throw new NullPointerException("Can't remove null objects"); + removeObjects(new Entity[] {obj}); + } + + public void storeObjects(Entity[] obj) throws RaplaException { + storeAndRemove( obj, Entity.ENTITY_ARRAY ); + } + + public void removeObjects(Entity[] obj) throws RaplaException { + storeAndRemove( Entity.ENTITY_ARRAY , obj); + } + + + public void storeAndRemove(Entity[] obj, Entity[] removedObjects) throws RaplaException { + if (obj.length == 0 && removedObjects.length == 0) + return; + long time = System.currentTimeMillis(); + for (int i=0;i< obj.length;i++) { + if ( obj[i] == null) + { + throw new RaplaException("Stored Objects cant be null"); + } + if ( obj[i].getRaplaType().equals( Reservation.TYPE ) ) + { + checkReservation( (Reservation) obj[i] ); + } + } + + for (int i=0;i< removedObjects.length;i++) { + if ( removedObjects[i] == null) + { + throw new RaplaException("Removed Objects cant be null"); + } + } + + synchronized (operator.getLock()) { + operator.storeAndRemove( obj , removedObjects, workingUser); + } + if (getLogger().isDebugEnabled()) + getLogger().debug("Storing took " + (System.currentTimeMillis()- time) + " ms."); + } + +} + + + + + + + + diff --git a/src/org/rapla/facade/internal/ModificationEventImpl.java b/src/org/rapla/facade/internal/ModificationEventImpl.java new file mode 100644 index 0000000..f1ddb87 --- /dev/null +++ b/src/org/rapla/facade/internal/ModificationEventImpl.java @@ -0,0 +1,184 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade.internal; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +import org.rapla.components.util.Tools; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.facade.ModificationEvent; + +/** Encapsulate the changes that are made in the backend-store.*/ +public class ModificationEventImpl implements ModificationEvent +{ + Set updatedObjects; + Set removedObjects; + boolean isRefresh = false; + Map updatedIndex; + Map removedIndex; + + public ModificationEventImpl() { + isRefresh = true; + } + + public ModificationEventImpl(Set changedObjects,Set removedObjects) { + isRefresh = false; + this.updatedObjects = Collections.unmodifiableSet(changedObjects); + this.removedObjects = Collections.unmodifiableSet(removedObjects); + updatedIndex = new HashMap(); + Iterator it = updatedObjects.iterator(); + while (it.hasNext()) { + addToIndex(updatedIndex,(RaplaObject)it.next()); + } + makeIndexReadOnly(updatedIndex); + removedIndex = new HashMap(); + it = removedObjects.iterator(); + while (it.hasNext()) { + addToIndex(removedIndex,(RaplaObject)it.next()); + } + makeIndexReadOnly(removedIndex); + } + + private void addToIndex(Map index,RaplaObject type) { + Set set = (Set) index.get(type.getRaplaType()); + if (set == null) { + set = new HashSet(); + index.put(type.getRaplaType(),set); + } + set.add(type); + } + + private void makeIndexReadOnly(Map index) { + Iterator it = index.keySet().iterator(); + while (it.hasNext()) { + Object key = it.next(); + Set set = Collections.unmodifiableSet((Set) index.get(key)); + index.put(key,set); + } + } + + /** All objects in the cache are modified. This is not selective. */ + private boolean isRefresh() { + return isRefresh; + } + + + private Set retainObjects(Set set,Set col) { + HashSet tempSet = new HashSet(col.size()); + tempSet.addAll(col); + tempSet.retainAll(set); + if (tempSet.size() >0) + return tempSet; + else + return Tools.EMPTY_SET; + } + + /** returns the modified objects from a given set.*/ + public Set getChanged(Set col) { + checkNotRefresh(); + return retainObjects(updatedObjects,col); + } + + /** returns the removed objects from a given set.*/ + public Set getRemoved(Set col) { + checkNotRefresh(); + return retainObjects(removedObjects,col); + } + + /** returns if the objects has changed.*/ + public boolean hasChanged(Object object) { + if (isRefresh()) + { + return true; + } + checkNotRefresh(); + return updatedObjects.contains(object); + } + + /** returns if the objects was removed.*/ + public boolean isRemoved(Object object) { + if (isRefresh()) + { + return true; + } + checkNotRefresh(); + return removedObjects.contains(object); + } + + /** returns if the objects has changed or was removed.*/ + public boolean isModified(Object object) { + if (isRefresh()) + { + return true; + } + checkNotRefresh(); + return hasChanged(object) || isRemoved(object); + } + + /** returns if an objects of the specied type was changed or removed.*/ + public boolean isModified(RaplaType raplaType) { + if (isRefresh()) + { + return true; + } + checkNotRefresh(); + return updatedIndex.get(raplaType)!=null || removedIndex.get(raplaType)!=null; + } + + private Set getFromIndex(Map index,RaplaType raplaType) { + Set set = (Set) index.get(raplaType); + if (set != null) + return set; + else + return Tools.EMPTY_SET; + } + + /** returns if an objects of the specied type has changed .*/ + public Set getChanged(RaplaType raplaType) { + checkNotRefresh(); + return getFromIndex(updatedIndex,raplaType); + } + + /** returns if an objects of the specied type was removed .*/ + public Set getRemoved(RaplaType raplaType) { + checkNotRefresh(); + return getFromIndex(removedIndex,raplaType); + } + + /** returns all removed objects .*/ + public Set getRemoved() { + checkNotRefresh(); + return removedObjects; + } + + /** returns all changed object .*/ + public Set getChanged() { + checkNotRefresh(); + return updatedObjects; + } + + private void checkNotRefresh() { + if (isRefresh()) + throw new IllegalStateException("Refresh is set. All objects could be changed!"); + } +} + + + + diff --git a/src/org/rapla/facade/internal/PeriodModelImpl.java b/src/org/rapla/facade/internal/PeriodModelImpl.java new file mode 100644 index 0000000..ff2e20f --- /dev/null +++ b/src/org/rapla/facade/internal/PeriodModelImpl.java @@ -0,0 +1,207 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade.internal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; +import java.lang.Math; + +import org.rapla.components.util.Assert; +import org.rapla.entities.domain.Period; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.PeriodModel; +import org.rapla.facade.QueryModule; +import org.rapla.framework.RaplaException; + + +class PeriodModelImpl implements PeriodModel +{ + //public static final String ROLE = PeriodModel.class.getName(); + TreeSet m_periods = new TreeSet(new Comparator() { + public int compare(Object o1, + Object o2) { + if (o1 instanceof Date) { + if (o2 instanceof Date) + return ((Date)o1).compareTo((Date)o2); + else + + return -1 * ((Period)o2).compareTo(o1); + } else { + return ((Period)o1).compareTo(o2); + } + } + } + ); + QueryModule query; + Period defaultPeriod; + + PeriodModelImpl( ClientFacade query ) throws RaplaException { + this.query = query; + update(); + } + + public void update() throws RaplaException { + Period[] periodArray = getQuery().getPeriods(); + m_periods.clear(); + m_periods.addAll(Arrays.asList(periodArray)); + } + + /** The PeriodModel listeners may not be thread safe.*/ + public boolean isInvokedOnAWTEventQueue() { + return false; + } + + protected QueryModule getQuery() { + return query; + } + + + /** returns the first matching period or null if no period matches.*/ + public Period getPeriodFor(Date date) { + if (date == null) + return null; + SortedSet set = m_periods.tailSet(date); + if (!set.isEmpty()) { + Period period = (Period) set.first(); + if (period.contains(date)) + return period; + } + Iterator it = m_periods.tailSet(date).iterator(); + while (it.hasNext()) { + Period period = (Period) it.next(); + if (period.contains(date)) { + return period; + } + } + return null; + } + + static private long diff(Date d1,Date d2) { + long diff = d1.getTime()-d2.getTime(); + if (diff<0) + diff = diff * -1; + return diff; + } + + public Period getNearestPeriodForDate(Date date) { + return getNearestPeriodForStartDate( m_periods, date, null); + } + + public Period getNearestPeriodForStartDate(Date date) { + return getNearestPeriodForStartDate( date, null); + } + + public Period getNearestPeriodForStartDate(Date date, Date endDate) { + return getNearestPeriodForStartDate( getPeriodsFor( date ), date, endDate); + } + + public Period getNearestPeriodForEndDate(Date date) { + return getNearestPeriodForEndDate( getPeriodsFor( date ), date); + } + + static private Period getNearestPeriodForStartDate(Collection periodList, Date date, Date endDate) { + Period result = null; + long min_from_start=Long.MAX_VALUE, min_from_end=0; + long from_start, from_end=0; + Iterator it = periodList.iterator(); + while (it.hasNext()) + { + Period period = (Period) it.next(); + if ( period == null) + { // EXCO: Why this test ? + continue; + } + from_start = diff(period.getStart(),date); + if ( endDate != null ) + { + from_end = Math.abs(diff(period.getEnd(), endDate)); + } + if ( from_start < min_from_start + || (from_start == min_from_start && from_end < min_from_end) + ) + { + min_from_start = from_start; + min_from_end = from_end; + result = period; + } + } + return result; + } + + static private Period getNearestPeriodForEndDate(Collection periodList, Date date) { + Period result = null; + long min=-1; + Iterator it = periodList.iterator(); + while (it.hasNext()) { + Period period = (Period) it.next(); + if (min == -1) { + min = diff(period.getEnd(),date); + result = period; + } + if (diff(period.getEnd(),date) < min) { + min = diff(period.getStart(),date); + result = period; + } + } + return result; + } + + + /** return all matching periods.*/ + public List getPeriodsFor(Date date) { + ArrayList list = new ArrayList(); + if (date == null) + return list; + + SortedSet set = m_periods.tailSet(date); + Iterator it = set.iterator(); + while (it.hasNext()) { + Period period = (Period) it.next(); + //System.out.println(m_periods[i].getStart() + " - " + m_periods[i].getEnd()); + if (period.contains(date)) { + list.add( period ); + } + } + return list; + } + + public int getSize() { + Assert.notNull(m_periods,"Componenet not setup!"); + return m_periods.size(); + } + + public Period[] getAllPeriods() { + return (Period[])m_periods.toArray( Period.PERIOD_ARRAY); + } + + public Object getElementAt(int index) { + Assert.notNull(m_periods,"Componenet not setup!"); + Iterator it = m_periods.iterator(); + for (int i=0;it.hasNext();i++) { + Object obj = it.next(); + if (i == index) + return obj; + } + return null; + } + +} + + + diff --git a/src/org/rapla/facade/package.html b/src/org/rapla/facade/package.html new file mode 100644 index 0000000..2ec25e1 --- /dev/null +++ b/src/org/rapla/facade/package.html @@ -0,0 +1,6 @@ + +

    This package contains the facade, that encapsulate the storage and the entitie package and +provides a simple interface for accessing the rapla-system; Study this package to get a good summary of the functionality of Rapla.

    + + + diff --git a/src/org/rapla/framework/Container.java b/src/org/rapla/framework/Container.java new file mode 100644 index 0000000..395c78c --- /dev/null +++ b/src/org/rapla/framework/Container.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.framework; + +import java.util.Collection; +import java.util.Map; + +import org.apache.avalon.framework.configuration.Configuration; + +public interface Container +{ + String ROLE = Container.class.getName(); + StartupEnvironment getStartupEnvironment(); + void addContainerProvidedComponentInstance(String role,Object component); + void addContainerProvidedComponent(String role,String classname); + void addContainerProvidedComponent(String role,String classname, String hint,Configuration config); + RaplaContext getContext(); + /** returns a set with all hints to the services*/ + Collection getAllServicesFor(String role); + /** lookup all services for this role (grouped by their hint)*/ + Map lookupServicesFor(String role) throws RaplaContextException; + } + diff --git a/src/org/rapla/framework/DEPENDENCIES b/src/org/rapla/framework/DEPENDENCIES new file mode 100644 index 0000000..308fd6c --- /dev/null +++ b/src/org/rapla/framework/DEPENDENCIES @@ -0,0 +1,4 @@ +This component depends on the following packages + +org.apache.avalon.framework.* +org.rapla.components.util.* diff --git a/src/org/rapla/framework/PluginDescriptor.java b/src/org/rapla/framework/PluginDescriptor.java new file mode 100644 index 0000000..b885681 --- /dev/null +++ b/src/org/rapla/framework/PluginDescriptor.java @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.framework; + +import org.apache.avalon.framework.configuration.Configuration; + +public interface PluginDescriptor{ + public final static String PLUGIN_LIST = "plugin-list"; + + public void provideServices(Container container, Configuration configuration); + public Object getPluginMetaInfos(String key); +} + diff --git a/src/org/rapla/framework/RaplaContext.java b/src/org/rapla/framework/RaplaContext.java new file mode 100644 index 0000000..28b0f4e --- /dev/null +++ b/src/org/rapla/framework/RaplaContext.java @@ -0,0 +1,14 @@ +package org.rapla.framework; + + + +public interface RaplaContext +{ + /** Returns a reference to the requested object (e.g. a component instance). + * throws a RaplaContextException if the object can't be returned. This could have + * different reasons: For example it is not found in the context, or there has been + * a problem during the component creation. + */ + Object lookup( String key ) throws RaplaContextException; + boolean has( String key ); +} diff --git a/src/org/rapla/framework/RaplaContextException.java b/src/org/rapla/framework/RaplaContextException.java new file mode 100644 index 0000000..1a3189d --- /dev/null +++ b/src/org/rapla/framework/RaplaContextException.java @@ -0,0 +1,20 @@ +package org.rapla.framework; + + +public class RaplaContextException + extends RaplaException + +{ + private static final long serialVersionUID = 1L; + + public RaplaContextException( final String key, final String message ) { + super( key + " " + message); + } + + public RaplaContextException( final String key, final String message, final Throwable throwable ) + { + super( message, throwable ); + } + + +} diff --git a/src/org/rapla/framework/RaplaDefaultContext.java b/src/org/rapla/framework/RaplaDefaultContext.java new file mode 100644 index 0000000..a57695e --- /dev/null +++ b/src/org/rapla/framework/RaplaDefaultContext.java @@ -0,0 +1,72 @@ +package org.rapla.framework; + +import java.util.HashMap; + + + +public class RaplaDefaultContext + implements RaplaContext +{ + private final HashMap contextObjects = new HashMap(); + private final RaplaContext m_parent; + + public RaplaDefaultContext() + { + this( null ); + } + + public RaplaDefaultContext( final RaplaContext parent ) + { + m_parent = parent; + } + + + public Object lookup( final String key ) + throws RaplaContextException + { + final Object object = contextObjects.get( key ); + if( null != object ) + { + return object; + } + else if( null != m_parent ) + { + return m_parent.lookup( key ); + } + else + { + final String message = "Unable to provide implementation for " + key; + throw new RaplaContextException( key, message, null ); + } + } + + + public boolean has( final String key ) + { + if (contextObjects.get( key ) != null) + return true; + + if ( m_parent == null) + return false; + + return m_parent.has( key ); + } + + public void put( final String key, final Object object ) + { + contextObjects.put( key, object ); + } + + + protected Object getUnsave(String key) { + if ( has( key)) { + try { + return lookup( key ); + } catch (RaplaContextException ex) { + } + } + return null; + } + + +} diff --git a/src/org/rapla/framework/RaplaException.java b/src/org/rapla/framework/RaplaException.java new file mode 100644 index 0000000..d9845c9 --- /dev/null +++ b/src/org/rapla/framework/RaplaException.java @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.framework; + +import org.apache.avalon.framework.CascadingException; + +/** the base-class for all Rapla specific Exceptions */ +public class RaplaException extends CascadingException { + private static final long serialVersionUID = 1L; + + public RaplaException(String text) { + super(text); + } + + public RaplaException(Throwable throwable) { + super(throwable.getMessage(),throwable); + } + + public RaplaException(String text,Throwable ex) { + super(text,ex); + } + +} + + + + + + + diff --git a/src/org/rapla/framework/RaplaLocale.java b/src/org/rapla/framework/RaplaLocale.java new file mode 100644 index 0000000..e8916d1 --- /dev/null +++ b/src/org/rapla/framework/RaplaLocale.java @@ -0,0 +1,84 @@ +package org.rapla.framework; + +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + + +/** This class contains all locale specific information for Rapla. Like +
      +
    • Selected language.
    • +
    • Selected country.
    • +
    • Available languages (if the user has the possibility to choose a language)
    • +
    • TimeZone for appointments (This is always GMT+0)
    • +
    +

    +Also it provides basic formating information for the dates. +

    +

    +Configuration is done in the rapla.xconf: +

    +<locale>
    + <languages default="de">
    +   <language>de</language>
    +   <language>en</language>
    + </languages>
    + <country>US</country>
    +</locale>
    +
    +If languages default is not set, the system default wil be used.
    +If country code is not set, the system default will be used.
    +

    + */ + +public interface RaplaLocale +{ + String ROLE = RaplaLocale.class.getName(); + String LANGUAGE_ENTRY = "org.rapla.language"; + + String[] getAvailableLanguages(); + + /** creates a calendar initialized with the Rapla timezone ( that is always GMT+0 for Rapla ) and the selected locale*/ + Calendar createCalendar(); + + String formatTime( Date date ); + + /** sets time to 0:00:00 or 24:00:00 */ + Date toDate( Date date, boolean fillDate ); + + /** sets time to 0:00:00 */ + Date toDate( int year, int month, int date ); + + /** sets date to 0:00:00 */ + Date toTime( int hour, int minute, int second ); + + /** Uses the first date parameter for year, month, date information and + the second for hour, minutes, second, millisecond information.*/ + Date toDate( Date date, Date time ); + + /** format long with the local NumberFormat */ + String formatNumber( long number ); + + /** format without year */ + String formatDateShort( Date date ); + + /** format with locale DateFormat.SHORT */ + String formatDate( Date date ); + + /** format with locale DateFormat.MEDIUM */ + String formatDateLong( Date date ); + + /** Abbreviation of locale weekday name of date. */ + String getWeekday( Date date ); + + /** Monthname of date. */ + String getMonth( Date date ); + + String getCharsetNonUtf(); + + TimeZone getTimeZone(); + + Locale getLocale(); + +} \ No newline at end of file diff --git a/src/org/rapla/framework/ServiceListCreator.java b/src/org/rapla/framework/ServiceListCreator.java new file mode 100644 index 0000000..a16c206 --- /dev/null +++ b/src/org/rapla/framework/ServiceListCreator.java @@ -0,0 +1,78 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ +package org.rapla.framework; + + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.util.Stack; + + + +/** Helper Class for automated creation of the rapla-plugin.list in the + * META-INF directory. Can be used in the build environment. + */ +public class ServiceListCreator { + public static void main (String[] args) { + try { + String sourceDir = args[0]; + String destDir = (args.length>1) ? args[1] : sourceDir; + processDir(sourceDir,destDir); + } catch (IOException e) { + throw new RuntimeException( e.getMessage()); + } catch (ClassNotFoundException e) { + throw new RuntimeException( e.getMessage()); + } + } + + public static void processDir(String srcDir,String destFile) + throws ClassNotFoundException, IOException + { + Stack stack = new Stack(); + File topDir = new File(srcDir); + stack.push(topDir); + Writer writer = new BufferedWriter(new FileWriter( destFile )); + try { + while (!stack.empty()) { + File file = (File) stack.pop(); + if (file.isDirectory()) { + File[] files = file.listFiles(); + for (int i=0;i + [-?|-c PATH_TO_CONFIG_FILE] [ACTION] + + Possible map entries: +
      +
    • config: the config-file
    • +
    • action: the start action
    • +
    + + @return a map with the parameter-entries or null if format is invalid or -? is used + */ + public static Map parseParams( String[] args ) + { + boolean bInvalid = false; + Map map = new HashMap(); + String config = null; + String action = null; + + // Investigate the passed arguments + for ( int i = 0; i < args.length; i++ ) + { + if ( args[i].toLowerCase().equals( "-c" ) ) + { + if ( i + 1 == args.length ) + { + bInvalid = true; + break; + } + config = args[++i]; + continue; + } + if ( args[i].toLowerCase().equals( "-?" ) ) + { + bInvalid = true; + break; + } + if ( args[i].toLowerCase().substring( 0, 1 ).equals( "-" ) ) + { + bInvalid = true; + break; + } + action = args[i].toLowerCase(); + } + + if ( bInvalid ) + { + return null; + } + + if ( config != null ) + map.put( "config", config ); + if ( action != null ) + map.put( "action", action ); + return map; + } + + /** Creates a configuration from a URL.*/ + public static Configuration createConfig( String configURL ) throws RaplaException + { + try + { + + URLConnection conn = new URL( configURL).openConnection(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + InputStream stream = conn.getInputStream(); + //System.out.println( "File Content:"); + int s= -1; + do { + s = stream.read(); + // System.out.print( (char)s ); + if ( s != -1) + { + out.write( s ); + } + } while ( s != -1); + out.close(); + stream.close(); + Assert.notNull( stream ); + InputStream in = new ByteArrayInputStream(out.toByteArray()); + DefaultConfigurationBuilder configurationBuilder = new DefaultConfigurationBuilder( + XMLReaderAdapter + .createXMLReader( false ) ); + //Configuration config = configurationBuilder.build( configURL ); + Configuration config = configurationBuilder.build( in ); + in.close(); + Assert.notNull( config ); + return config; + } + catch ( org.xml.sax.SAXParseException ex ) + { + throw new RaplaException( "Error parsing configuration " + + configURL + + " Line:" + + ex.getLineNumber() + + " Column:" + + ex.getColumnNumber() + + " " + + ex.getMessage() ,ex); + } + catch ( EOFException ex ) + { + throw new RaplaException( "Can't load configuration-file at " + configURL ); + } + catch ( Exception ex ) + { + throw new RaplaException( ex ); + } + } + + /** Creates an configuration URL from a configuration path. + If path is null the URL of the defaultPropertiesFile + will be returned. + */ + public static URL configFileToURL( String path, String defaultPropertiesFile ) throws RaplaException + { + URL configURL = null; + try + { + if ( path != null ) + { + File file = new File( path ); + if ( file.exists() ) + { + configURL = ( file.getCanonicalFile() ).toURI().toURL(); + } + } + if ( configURL == null ) + { + configURL = ConfigTools.class.getClassLoader().getResource( defaultPropertiesFile ); + if ( configURL == null ) + { + File file = new File( defaultPropertiesFile ); + if ( !file.exists() ) + { + file = new File( "webapp/WEB-INF/" + defaultPropertiesFile ); + } + if ( file.exists() ) + { + configURL = file.getCanonicalFile().toURI().toURL(); + } + } + } + } + catch ( MalformedURLException ex ) + { + throw new RaplaException( "malformed config path" + path ); + } + catch ( IOException ex ) + { + throw new RaplaException( "Can't resolve config path" + path ); + } + + if ( configURL == null ) + { + throw new RaplaException( defaultPropertiesFile + + " not found on classpath and in working folder " + + " Path config file with -c argument. " + + " For more information start rapla -? or read the api-docs." ); + } + return configURL; + } + + /** Creates an configuration URL from a configuration filename and + the webstart codebae. + If filename is null the URL of the defaultPropertiesFile + will be returned. + */ + public static URL webstartConfigToURL( String config, String defaultPropertiesFilename ) throws RaplaException + { + try + { + URL base = JNLPUtil.getCodeBase(); + URL configURL; + if ( config != null && config.trim().length() > 0 ) + { + return new URL( base, config ); + } + else + { + configURL = new URL( base, defaultPropertiesFilename ); + } + return configURL; + } + catch ( Exception ex ) + { + throw new RaplaException( "Can't get configuration file in webstart mode." ); + } + } + + /** resolves a context value in the passed string. + If the string begins with ${ the method will lookup the String-Object in the context and returns it. + If it doesn't, the method returns the unmodified string. + Example: + resolveContext("${download-server}") returns the same as + context.get("download-server").toString(); + + @throws ConfigurationException when no contex-object was found for the given variable. + */ + public static String resolveContext( String s, RaplaContext sm ) throws ConfigurationException + { + int startToken = s.indexOf( "${" ); + if ( startToken < 0 ) + return s; + int endToken = s.indexOf( "}", startToken ); + String token = s.substring( startToken + 2, endToken ); + StringBuffer value = new StringBuffer(); + value.append( s.substring( 0, startToken ) ); + try + { + Object contextObject = sm.lookup( token ); + String stringRep = contextObject.toString(); + value.append( stringRep ); + } + catch ( RaplaContextException ex ) + { + throw new ConfigurationException( ex.getMessage(), ex ); + } + value.append( s.substring( endToken + 1 ) ); + return value.toString(); + } + +} diff --git a/src/org/rapla/framework/internal/ContainerImpl.java b/src/org/rapla/framework/internal/ContainerImpl.java new file mode 100644 index 0000000..371a442 --- /dev/null +++ b/src/org/rapla/framework/internal/ContainerImpl.java @@ -0,0 +1,457 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.framework.internal; + +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.container.ContainerUtil; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.framework.Container; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.framework.StartupEnvironment; + +/** Base class for the ComponentContainers in Rapla. + * Containers are the RaplaMainContainer, the Client- and the Server-Service + */ +public class ContainerImpl extends AbstractLogEnabled implements Container, Disposable +{ + protected Container m_parent; + protected RaplaContext m_context; + protected Configuration m_config; + + protected List m_componentHandler = new ArrayList(); + protected HashMap m_roleMap = new HashMap(); + protected LogManagerAdapter m_loggerManager; + + public ContainerImpl(RaplaContext parentContext, Configuration config) throws RaplaException { + m_config = config; + service( parentContext ); + init( ); + } + + + protected void init() throws RaplaException { + configure( m_config ); + addContainerProvidedComponentInstance( Container.class.getName(), this ); + addContainerProvidedComponentInstance( Logger.class.getName(), getLogger()); + } + + public StartupEnvironment getStartupEnvironment() { + try + { + return (StartupEnvironment)getContext().lookup( StartupEnvironment.ROLE); + } + catch ( RaplaContextException e ) + { + throw new IllegalStateException(" Container not initialized with a startup environment"); + } + } + + private void service(final RaplaContext parent) throws RaplaContextException { + if (parent.has( "logger-manager" )) { + m_loggerManager = (LogManagerAdapter) parent.lookup("logger-manager"); + } else { + final Logger logger; + if ( parent.has(Logger.class.getName() ) ) + { + logger = (Logger) parent.lookup( Logger.class.getName()); + } + else + { + logger = new ConsoleLogger(ConsoleLogger.LEVEL_INFO); + } + + m_loggerManager = new LogManagerAdapter() + { + public Logger getLoggerForCategory(String categoryName) + { + return logger.getChildLogger( categoryName ); + } + + public Logger getDefaultLogger() + { + return logger; + } + }; + } + enableLogging( m_loggerManager.getDefaultLogger()); + if ( parent.has(Container.ROLE )) { + m_parent = (Container) parent.lookup( Container.ROLE); + } + m_context = new RaplaContext() { + + public Object lookup(String role) throws RaplaContextException { + ComponentHandler handler = getHandler( role ); + if ( handler != null ) { + return handler.get(); + } + return parent.lookup( role); + } + + public boolean has(String role) { + if (getHandler( role ) != null) + return true; + return parent.has( role ); + + } + + ComponentHandler getHandler( String role) { + int hintSeperator = role.indexOf('/'); + String roleName = role; + String hint = null; + if ( hintSeperator > 0 ) { + roleName = role.substring( 0, hintSeperator ); + hint = role.substring( hintSeperator + 1 ); + } + return ContainerImpl.this.getHandler( roleName, hint ); + } + + }; + } + + + + protected void configure( final Configuration config ) + throws RaplaException + { + Map m_componentInfos = getComponentInfos(); + final Configuration[] elements = config.getChildren(); + for ( int i = 0; i < elements.length; i++ ) + { + final Configuration element = elements[i]; + final String id = element.getAttribute( "id", null ); + if ( null == id ) + { + // Only components with an id attribute are treated as components. + getLogger().debug( "Ignoring configuration for component, " + element.getName() + + ", because the id attribute is missing." ); + } + else + { + final String className; + final String[] roles; + if ( "component".equals( element.getName() ) ) + { + try { + className = element.getAttribute( "class" ); + Configuration[] roleConfigs = element.getChildren("roles"); + roles = new String[ roleConfigs.length ]; + for ( int j=0;j< roles.length;j++) { + roles[j] = roleConfigs[j].getValue(); + } + } catch ( ConfigurationException ex) { + throw new RaplaException( ex); + } + } + else + { + String configName = element.getName(); + final ComponentInfo roleEntry = (ComponentInfo) m_componentInfos.get( configName ); + if ( null == roleEntry ) + { + final String message = "No class found matching configuration name " + + "[name: " + element.getName() + ", location: " + element.getLocation() + "]"; + getLogger().error( message ); + + continue; + } + roles = roleEntry.getRoles(); + className = roleEntry.getClassname(); + } + if ( getLogger().isDebugEnabled() ) + { + getLogger().debug( "Configuration processed for: " + className ); + } + Logger logger = m_loggerManager.getLoggerForCategory( id ); + ComponentHandler handler =new ComponentHandler( element, className, logger); + for ( int j=0;j< roles.length;j++) { + String roleName = (roles[j]); + addHandler( roleName, id, handler ); + } + } + } + } + + protected Map getComponentInfos() { + return Collections.EMPTY_MAP; + } + + synchronized public void addContainerProvidedComponentInstance(String role,Object component) { + addContainerProvidedComponentInstance( role, component.getClass().getName(),component); + } + + synchronized public void addContainerProvidedComponentInstance(String roleName,String hint,Object component) { + addHandler( roleName, hint, new ComponentHandler(component)); + } + + synchronized public void addContainerProvidedComponent(String classname) { + addContainerProvidedComponent( classname, classname); + } + + synchronized public void addContainerProvidedComponent(String role,String classname) { + addContainerProvidedComponent( new String[] {role}, classname, classname, null); + } + + synchronized public void addContainerProvidedComponent(String role,String classname, Configuration config) { + addContainerProvidedComponent( new String[] {role}, classname, classname, config); + } + + synchronized public void addContainerProvidedComponent(String role,String classname, String hint,Configuration config) { + addContainerProvidedComponent( new String[] {role}, classname, hint, config); + } + + synchronized public void addContainerProvidedComponent(String[] roles,String classname,String hint, Configuration config) { + ComponentHandler handler = new ComponentHandler( config, classname, getLogger() ); + for ( int i=0;i +

    This package contains the framework, that is +responsible for component creation with dependency injection. +It also provides the basic services for the plugin facility +of Rapla.

    +

    +It combines functionality of the avalon framework with that +of the pico container. It was programmed to fit the need of Rapla +but contains no domain knowledge. It can also +be used in other Software. +

    + + + diff --git a/src/org/rapla/gui/CalendarModel.java b/src/org/rapla/gui/CalendarModel.java new file mode 100644 index 0000000..615f46e --- /dev/null +++ b/src/org/rapla/gui/CalendarModel.java @@ -0,0 +1,52 @@ +package org.rapla.gui; + +import java.util.Collection; +import java.util.Date; + +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaException; + +public interface CalendarModel extends Cloneable +{ + public String ROLE = CalendarModel.class.getName(); + + String getNonEmptyTitle(); + + User getUser(); + + Date getSelectedDate(); + + void setSelectedDate( Date date ); + + Date getStartDate(); + + void setStartDate( Date date ); + + int getSize(); + + Date getEndDate(); + + void setEndDate( Date date ); + + Collection getSelectedObjects(); + + /** Calendar View Plugins can use the calendar options to store their requiered optional parameters for a calendar view */ + Object getOption(String name); + + Collection getSelectedObjectsAndChildren() throws RaplaException; + + /** Convenience method to extract the allocatables from the selectedObjects and their children + * @see #getSelectedObjectsAndChildren */ + Allocatable[] getSelectedAllocatables() throws RaplaException; + + User[] getSelectedUsers() throws RaplaException; + + Reservation[] getReservations( Date startDate, Date endDate ) throws RaplaException; + + Reservation[] getReservations() throws RaplaException; + + + Object clone(); +} \ No newline at end of file diff --git a/src/org/rapla/gui/CalendarOptions.java b/src/org/rapla/gui/CalendarOptions.java new file mode 100644 index 0000000..7950370 --- /dev/null +++ b/src/org/rapla/gui/CalendarOptions.java @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; +import java.util.Set; + +import org.rapla.entities.domain.RepeatingEnding; +import org.rapla.entities.domain.RepeatingType; + + +/** This class contains the. + * Worktimes and dates (Useful for the week-view) +Configuration is done in the calendar option menu. + +Hours belonging to the worktime get a different color in the +weekview. This is also the minimum interval that will be used for +printing.
    + +Excluded Days are only visible, when there is an appointment to +display.
    + */ + +public interface CalendarOptions { + public static final String ROLE = CalendarOptions.class.getName(); + + int getWorktimeStart(); + int getRowsPerHour(); + int getWorktimeEnd(); + Set getExcludeDays(); + boolean isExceptionsVisible(); + boolean isCompactColumns(); + boolean isResourceColoring(); + boolean isEventColoring(); + //boolean isConflictsVisible(); + boolean isInfiniteRepeating(); + boolean isNtimesRepeating(); + boolean isUntilRepeating(); + int getnTimes(); + RepeatingEnding getRepeatingDuration(); + RepeatingType getRepeatingType(); + String getEventType(); +} diff --git a/src/org/rapla/gui/CalendarOptionsImpl.java b/src/org/rapla/gui/CalendarOptionsImpl.java new file mode 100644 index 0000000..2e46218 --- /dev/null +++ b/src/org/rapla/gui/CalendarOptionsImpl.java @@ -0,0 +1,177 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; +import java.util.HashSet; +import java.util.Set; +import java.util.StringTokenizer; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.entities.domain.RepeatingEnding; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.framework.RaplaException; + +/** WARNING!! This class should not be public to the outside. Please use the interface */ +public class CalendarOptionsImpl implements CalendarOptions { + public final static String CALENDAR_OPTIONS="org.rapla.calendarview"; + + public static final String WORKTIME = "worktime"; + public static final String EXCLUDE_DAYS = "exclude-days"; + public static final String ROWS_PER_HOUR = "rows-per-hour"; + public final static String EXCEPTIONS_VISIBLE="exceptions-visible"; + public final static String COMPACT_COLUMNS="compact-columns"; + public final static String COLOR_BLOCKS="color"; + public final static String COLOR_RESOURCES="resources"; + public final static String COLOR_EVENTS="reservations"; + + public final static String REPEATING="repeating"; + public final static String NTIMES="repeating.ntimes"; + public final static String CALNAME="calendar-name"; + int nTimes; + RepeatingEnding repeatingField; + RepeatingType repeatingType; + + + public final static String REPEATINGTYPE="repeatingtype"; + public final static String EVENTTYPE = "eventtype"; + + + Set excludeDays = new HashSet(); + + int maxtime = -1; + int mintime = -1; + int rowsPerHour = 4; + boolean exceptionsVisible; + boolean compactColumns = false; // use for strategy.setFixedSlotsEnabled + Configuration config; + String colorField; + String eventType; + + public CalendarOptionsImpl(Configuration config ) throws RaplaException { + this.config = config; + Configuration worktime = config.getChild( WORKTIME ); + StringTokenizer tokenizer = new StringTokenizer( worktime.getValue("8-18"), "-" ); + try { + if ( tokenizer.hasMoreTokens() ) + mintime = new Integer( tokenizer.nextToken().toLowerCase().trim()).intValue( ); + if ( tokenizer.hasMoreTokens() ) + maxtime = new Integer( tokenizer.nextToken().toLowerCase().trim()).intValue( ); + } catch ( NumberFormatException e ) { + throw new RaplaException( "Invalid time in " + worktime.getLocation( ) + + ". only numbers are allowed e.g. 8-18!"); + } + if ( mintime == -1 || maxtime == -1 /*|| mintime >= maxtime*/ ) + throw new RaplaException("Invalid intervall in " + + worktime.getLocation() + + ". Use the following format 8-16 !"); + + Configuration exclude = config.getChild( EXCLUDE_DAYS ); + tokenizer = new StringTokenizer( exclude.getValue(""), "," ); + while ( tokenizer.hasMoreTokens()) { + String token = tokenizer.nextToken().toLowerCase().trim(); + try { + excludeDays.add( new Integer(token) ); + } catch ( NumberFormatException e ) { + throw new RaplaException("Invalid day in " + + exclude.getLocation() + + ". only numbers are allowed!"); + } + } // end of while () + + rowsPerHour = config.getChild( ROWS_PER_HOUR ).getValueAsInteger( 4 ); + exceptionsVisible = config.getChild(EXCEPTIONS_VISIBLE).getValueAsBoolean(false); + + colorField = config.getChild( COLOR_BLOCKS ).getValue( COLOR_RESOURCES ); + + + repeatingField = RepeatingEnding.findForString(config.getChild( REPEATING ).getValue( RepeatingEnding.END_DATE.toString() )); + nTimes = config.getChild( NTIMES ).getValueAsInteger( 1 ); + + repeatingType = RepeatingType.findForString(config.getChild( REPEATINGTYPE ).getValue( RepeatingType.WEEKLY.toString() )); + + eventType = config.getChild( EVENTTYPE ).getValue(null); + + } + + public Configuration getConfig() { + return config; + } + + public int getWorktimeStart() { + return mintime; + } + + public int getRowsPerHour() { + return rowsPerHour; + } + + public int getWorktimeEnd() { + return maxtime; + } + + public Set getExcludeDays() { + return excludeDays; + } + +// BJO 00000012 + public RepeatingEnding getRepeatingDuration() { + return repeatingField; + } + + public boolean isInfiniteRepeating() { + return repeatingField.equals( RepeatingEnding.FOREVEVER ); + } + + public boolean isNtimesRepeating() { + boolean rt=false; + if(repeatingField.equals( RepeatingEnding.FOREVEVER )) + rt = false; + else if(repeatingField.equals( RepeatingEnding.N_TIMES )) + rt = true; + else if(repeatingField.equals( RepeatingEnding.END_DATE )) + rt = true; + return rt; + } + + public boolean isUntilRepeating() { + return repeatingField.equals( RepeatingEnding.END_DATE ); + } + + public int getnTimes() { + return nTimes; + } + + public boolean isExceptionsVisible() { + return exceptionsVisible; + } + + public boolean isCompactColumns() { + return compactColumns; + } + + public boolean isResourceColoring() { + return colorField.equals( COLOR_RESOURCES ); + } + + public boolean isEventColoring() { + return colorField.equals( COLOR_EVENTS ); + } + + public RepeatingType getRepeatingType() { + return repeatingType; + } + + public String getEventType() { + return eventType; + } + +} diff --git a/src/org/rapla/gui/DefaultPluginOption.java b/src/org/rapla/gui/DefaultPluginOption.java new file mode 100644 index 0000000..2c89d15 --- /dev/null +++ b/src/org/rapla/gui/DefaultPluginOption.java @@ -0,0 +1,121 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; + +import java.awt.BorderLayout; +import java.util.Locale; + +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JPanel; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.RaplaPluginMetaInfo; + +abstract public class DefaultPluginOption extends RaplaGUIComponent implements OptionPanel { + public DefaultPluginOption(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected JCheckBox activate = new JCheckBox("Aktivieren"); + protected Configuration config; + protected Preferences preferences; + JComponent container; + + abstract public String getDescriptorClassName(); + + protected JPanel createPanel() throws RaplaException { + JPanel panel = new JPanel(); + panel.setLayout( new BorderLayout()); + panel.add( activate, BorderLayout.NORTH ); + return panel; + } + + /** + * @see org.rapla.gui.OptionPanel#setPreferences(org.rapla.entities.configuration.Preferences) + */ + public void setPreferences(Preferences preferences) { + this.preferences = preferences; + } + + /** + * @see org.rapla.gui.OptionPanel#commit() + */ + public void commit() throws RaplaException { + RaplaConfiguration config = (RaplaConfiguration) preferences.getEntry("org.rapla.plugin"); + String className = getDescriptorClassName(); + //getDescritorClassName() + + DefaultConfiguration newChild = new DefaultConfiguration("plugin" ); + newChild.setAttribute( "enabled", activate.isSelected()); + newChild.setAttribute( "class", className); + addChildren( newChild ); + RaplaConfiguration newConfig = config.replace(config.find("class", className), newChild); + preferences.putEntry( "org.rapla.plugin",newConfig); + } + + protected void addChildren( DefaultConfiguration newConfig) { + } + + protected void readConfig( Configuration config) { + + } + + + /** + * @see org.rapla.gui.OptionPanel#show() + */ + public void show() throws RaplaException { + activate.setText( getString("selected")); + container = createPanel(); + RaplaConfiguration raplaConfig = (RaplaConfiguration)preferences.getEntry("org.rapla.plugin"); + if ( raplaConfig == null) { + throw new RaplaException("No PluginConfiguration found. Please try a reimport!" ); + } + config = raplaConfig.find( "class" ,getDescriptorClassName()); + if ( config == null) { + config = new DefaultConfiguration("plugin"); + } + + Boolean defaultValueAsBoolean = (Boolean) findDescriptor( getDescriptorClassName()).getPluginMetaInfos(RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT); + boolean defaultSelection = defaultValueAsBoolean != null ? defaultValueAsBoolean.booleanValue() : false; + activate.setSelected( config.getAttributeAsBoolean("enabled", defaultSelection)); + readConfig( config ); + } + + + /** + * @see org.rapla.gui.toolkit.RaplaWidget#getComponent() + */ + public JComponent getComponent() { + return container; + } + + + + /** + * @see org.rapla.entities.Named#getName(java.util.Locale) + */ + public String getName(Locale locale) { + return getDescriptorClassName(); + } + + +} + + diff --git a/src/org/rapla/gui/EditComponent.java b/src/org/rapla/gui/EditComponent.java new file mode 100644 index 0000000..ab3b971 --- /dev/null +++ b/src/org/rapla/gui/EditComponent.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; + +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.RaplaWidget; + +public interface EditComponent extends RaplaWidget +{ + /** maps all fields back to the current object.*/ + public void mapToObject() throws RaplaException; + public Object getObject(); + public void setObject(Object o) throws RaplaException; +} diff --git a/src/org/rapla/gui/EditController.java b/src/org/rapla/gui/EditController.java new file mode 100644 index 0000000..dccccec --- /dev/null +++ b/src/org/rapla/gui/EditController.java @@ -0,0 +1,18 @@ +package org.rapla.gui; + +import java.awt.Component; + +import org.rapla.entities.Entity; +import org.rapla.entities.RaplaObject; +import org.rapla.framework.RaplaException; + +public interface EditController +{ + public final static String ROLE = EditController.class.getName(); + + EditComponent createUI( RaplaObject obj ) throws RaplaException; + + void edit( Entity obj, Component owner ) throws RaplaException; + void edit( Entity obj, String title, Component owner ) throws RaplaException; + +} \ No newline at end of file diff --git a/src/org/rapla/gui/InfoFactory.java b/src/org/rapla/gui/InfoFactory.java new file mode 100644 index 0000000..707cc37 --- /dev/null +++ b/src/org/rapla/gui/InfoFactory.java @@ -0,0 +1,29 @@ +package org.rapla.gui; + +import java.awt.Component; +import java.awt.Point; + +import javax.swing.JComponent; + +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.DialogUI; + +public interface InfoFactory +{ + String ROLE = InfoFactory.class.getName(); + + JComponent createInfoComponent( Object object ) throws RaplaException; + + /** same as getToolTip(obj, true) */ + String getToolTip( Object obj ); + + /** @param wrapHtml wraps an html Page arround the tooltip */ + String getToolTip( Object obj, boolean wrapHtml ); + + void showInfoDialog( Object object, Component owner ) throws RaplaException; + + void showInfoDialog( Object object, Component owner, Point point ) throws RaplaException; + + DialogUI createDeleteDialog( Object[] deletables, Component owner ) throws RaplaException; + +} \ No newline at end of file diff --git a/src/org/rapla/gui/MenuContext.java b/src/org/rapla/gui/MenuContext.java new file mode 100644 index 0000000..798cb9c --- /dev/null +++ b/src/org/rapla/gui/MenuContext.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; +import java.awt.Component; +import java.awt.Point; +import java.util.Collection; +import java.util.Collections; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaDefaultContext; + +public class MenuContext extends RaplaDefaultContext +{ + public static String PARENT_COMPONENT = "parent_component"; + public static String POPUP_POINT = "popup_point"; + public static String FOCUSED_OBJECT = "menu_object"; + public static String SELECTED_OBJECTS = "selected_objects"; + + public MenuContext(RaplaContext parentContext, Object focusedObject) { + this( parentContext, focusedObject, null, null ); + } + + public MenuContext(RaplaContext parentContext, Object focusedObject, Component parent,Point p) { + super( parentContext); + put( FOCUSED_OBJECT, focusedObject ); + put( PARENT_COMPONENT, parent ); + put( POPUP_POINT, p ); + put( SELECTED_OBJECTS, Collections.EMPTY_LIST ); + } + + public void setSelectedObjects(Collection selectedObjects) { + put ( SELECTED_OBJECTS, selectedObjects); + } + + public Collection getSelectedObjects() { + return (Collection) getUnsave( SELECTED_OBJECTS); + } + + public Point getPoint() { + return (Point) getUnsave( POPUP_POINT ); + + } + + public Component getComponent() { + return (Component) getUnsave( PARENT_COMPONENT ); + } + + public Object getFocusedObject() { + return getUnsave( FOCUSED_OBJECT ); + } + + +} + + + + + + + + + diff --git a/src/org/rapla/gui/MenuExtensionPoint.java b/src/org/rapla/gui/MenuExtensionPoint.java new file mode 100644 index 0000000..26814d0 --- /dev/null +++ b/src/org/rapla/gui/MenuExtensionPoint.java @@ -0,0 +1,10 @@ +package org.rapla.gui; + +import javax.swing.JMenuItem; +import javax.swing.JSeparator; + +public interface MenuExtensionPoint +{ + public void insert(JMenuItem item); + public void insert(JSeparator seperator); +} diff --git a/src/org/rapla/gui/MenuFactory.java b/src/org/rapla/gui/MenuFactory.java new file mode 100644 index 0000000..32e953c --- /dev/null +++ b/src/org/rapla/gui/MenuFactory.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.MenuInterface; + +public interface MenuFactory +{ + public static final String ROLE = MenuFactory.class.getName(); + + public MenuInterface addObjectMenu(MenuInterface menu, MenuContext context, String afterId) throws RaplaException; + public MenuInterface addReservationWizards(MenuInterface menu, MenuContext context, String afterId) throws RaplaException; + +} + + + + + + + + + diff --git a/src/org/rapla/gui/ObjectMenuFactory.java b/src/org/rapla/gui/ObjectMenuFactory.java new file mode 100644 index 0000000..23989c3 --- /dev/null +++ b/src/org/rapla/gui/ObjectMenuFactory.java @@ -0,0 +1,9 @@ +package org.rapla.gui; + +import org.rapla.entities.RaplaObject; +import org.rapla.gui.toolkit.RaplaMenuItem; + +public interface ObjectMenuFactory +{ + RaplaMenuItem[] create(MenuContext menuContext,RaplaObject focusedObject); +} diff --git a/src/org/rapla/gui/OptionPanel.java b/src/org/rapla/gui/OptionPanel.java new file mode 100644 index 0000000..a88dd68 --- /dev/null +++ b/src/org/rapla/gui/OptionPanel.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; + +import org.rapla.entities.Named; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.RaplaWidget; + +public interface OptionPanel extends RaplaWidget, Named { + void setPreferences(Preferences preferences); + + /** commits the changes in the option Dialog.*/ + void commit() throws RaplaException; + + /** called when the option Panel is selected for displaying.*/ + void show() throws RaplaException; + + +} + diff --git a/src/org/rapla/gui/RaplaAction.java b/src/org/rapla/gui/RaplaAction.java new file mode 100644 index 0000000..9723ac6 --- /dev/null +++ b/src/org/rapla/gui/RaplaAction.java @@ -0,0 +1,81 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.Action; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public abstract class RaplaAction extends RaplaGUIComponent implements Action { + private Map values = new HashMap(); + private ArrayList listenerList = new ArrayList(); + + public RaplaAction(RaplaContext sm) throws RaplaException { + super( sm ); + setEnabled(true); + } + + public Object getValue(String key) { + return values.get(key); + } + public void putValue(String key,Object value) { + Object oldValue = getValue(key); + values.put(key,value); + firePropertyChange(key,oldValue,value); + } + + public void addPropertyChangeListener(PropertyChangeListener listener) { + listenerList.add(listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + listenerList.remove(listener); + } + + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { + if (listenerList.size() == 0) + return; + if (oldValue == newValue) + return; + + // if (oldValue != null && newValue != null && oldValue.equals(newValue)) + //return; + + PropertyChangeEvent evt = new PropertyChangeEvent(this,propertyName,oldValue,newValue); + PropertyChangeListener[] listeners = getPropertyChangeListeners(); + for (int i = 0;i
    "); + Iterator it = ex.getDependencies().iterator(); + int i = 0; + while (it.hasNext()) { + Object obj = it.next(); + buf.append((++i)); + buf.append(") "); + + + buf.append( obj); + + buf.append("
    "); + if (i == 30 && it.hasNext()) { + buf.append("... " + (ex.getDependencies().size() - 30) + " more"); + break; + } + } + return buf.toString(); + } + + /** Creates a new ErrorDialog with the specified owner and displays the waring */ + public void showWarning(String warning,Component owner) { + try { + ErrorDialog dialog = new ErrorDialog(getContext()); + dialog.showWarningDialog(warning,owner); + } catch (RaplaException ex2) { + getLogger().error(ex2.getMessage(),ex2); + } + } + + public RaplaCalendar createRaplaCalendar() { + RaplaCalendar cal = new RaplaCalendar( getI18n().getLocale() ); + cal.setDateRenderer(getDateRenderer()); + cal.setTimeZone(DateTools.getTimeZone()); + return cal; + } + + /** lookup DateRenderer from the serviceManager */ + final protected DateRenderer getDateRenderer() { + return (DateRenderer) getService(DateRenderer.class.getName()); + } + + static Color NON_WORKTIME = new Color(0xcc, 0xcc, 0xcc); + + final protected TimeRenderer getTimeRenderer() { + final int start = getCalendarOptions().getWorktimeStart(); + final int end = getCalendarOptions().getWorktimeEnd(); + return new TimeRenderer() { + public Color getBackgroundColor( int hourOfDay, int minute ) + { + if ( start >= end) + { + if ( hourOfDay >= end && hourOfDay < start) + { + return NON_WORKTIME; + } + } + else if ( hourOfDay < start || hourOfDay >= end) { + return NON_WORKTIME; + } + return null; + } + + public String getToolTipText( int hourOfDay, int minute ) + { + return null; + } + + }; + } + + + public RaplaTime createRaplaTime() { + RaplaTime cal = new RaplaTime( getI18n().getLocale() ); + cal.setTimeRenderer( getTimeRenderer() ); + int rowsPerHour =getCalendarOptions().getRowsPerHour() ; + cal.setRowsPerHour( rowsPerHour ); + cal.setTimeZone(DateTools.getTimeZone()); + return cal; + } + + + + public Map getSessionMap() { + return (Map) getService( ClientService.SESSION_MAP); + } + + protected InfoFactory getInfoFactory() { + return (InfoFactory) getService( InfoFactory.ROLE ); + } + + protected EditController getEditController() { + return (EditController) getService( EditController.ROLE ); + } + + protected ReservationController getReservationController() { + return (ReservationController) getService( ReservationController.ROLE ); + } + + public Component getMainComponent() { + return (Component) getService(ClientService.MAIN_COMPONENT); + } + + public void addCopyPaste(final JTextComponent text) throws RaplaException { + final JPopupMenu menu = new JPopupMenu(); + { + final JMenuItem copyItem = new JMenuItem(); + copyItem.addActionListener( new ActionListener() { + + public void actionPerformed(ActionEvent e) { + copy(text,e); + } + }); + copyItem.setText(getString("copy")); + + menu.add(copyItem); + } + { + final JMenuItem copyItem = new JMenuItem(); + copyItem.addActionListener( new ActionListener() { + + public void actionPerformed(ActionEvent e) { + paste(text,e); + } + }); + copyItem.setText(getString("paste")); + + menu.add(copyItem); + } + + text.add(menu); + text.addMouseListener(new MouseAdapter() + { + private void showMenuIfPopupTrigger(MouseEvent e) { + if (e.isPopupTrigger()) { + menu.show(text,e.getX() + 3, e.getY() + 3); + } + } + + public void mousePressed(MouseEvent e) { + showMenuIfPopupTrigger(e); + } + + public void mouseReleased(MouseEvent e) { + showMenuIfPopupTrigger(e); + } + } + ); + } + + + + + private IOInterface getIOService() + { + try { + return (IOInterface) getContext().lookup( IOInterface.ROLE); + } catch (RaplaContextException e) { + return null; + } + } + + protected void copy(final JTextComponent comp,ActionEvent evt) { + final IOInterface service = getIOService(); + if (service != null) { + String text = comp.getSelectedText(); + final StringSelection transferable = new StringSelection(text); + service.setContents(transferable, null); + } else { + comp.getActionMap().get(DefaultEditorKit.copyAction).actionPerformed(evt); + } + } + + private void paste(final JTextComponent comp,ActionEvent evt) { + final IOInterface service = getIOService(); + if (service != null) { + final Transferable transferable = service.getContents( null); + Object transferData; + try { + transferData = transferable.getTransferData(DataFlavor.stringFlavor); + if ( transferData != null) + { + comp.replaceSelection( transferData.toString()); + } + } catch (Exception e) { + } + + } + else + { + comp.getActionMap().get(DefaultEditorKit.pasteAction).actionPerformed(evt); + } + } + +} diff --git a/src/org/rapla/gui/ReservationController.java b/src/org/rapla/gui/ReservationController.java new file mode 100644 index 0000000..fe71d85 --- /dev/null +++ b/src/org/rapla/gui/ReservationController.java @@ -0,0 +1,52 @@ +package org.rapla.gui; + +import java.awt.Component; +import java.awt.Point; +import java.util.Date; + +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaException; + +/** Use the ReservationController to modify or create a {@link Reservation}. + This class handles all interactions with the user. Examples: +
  • + If you edit a reservation it will first check, if there is already is an + open edit-window for the reservation and will give focus to that window instead of + creating a new one. +
  • +
  • + If you move or delete an repeating appointment it will display dialogs + where the user will be asked if he wants to delete/move the complete appointment + or just the occurance on the selected date. +
  • +
  • + If conflicts are found, a conflict panel will be displayed on saving. +
  • + */ +public interface ReservationController +{ + + public final static String ROLE = ReservationController.class.getName(); + + void edit( Reservation reservation ) throws RaplaException; + void edit( Appointment appointment ) throws RaplaException; + boolean save(Reservation reservation,Component sourceComponent,boolean showOnlyWhenConflicts) throws RaplaException; + + public ReservationEdit[] getEditWindows(); + + /** copys an appointment without interaction */ + Appointment copyAppointment( Appointment appointment ) throws RaplaException; + + void deleteAppointment( Appointment appointment, Date from, Component sourceComponent, Point point ) throws RaplaException; + + Appointment copyAppointment( Appointment appointment, Date from, Component sourceComponent, Point point ) throws RaplaException; + + void pasteAppointment( Appointment appointment, Reservation reservation, Date start, Component sourceComponent, Point point,Allocatable[] restrictedAllocatables, boolean asNewReservation ) throws RaplaException; + + void moveAppointment( Appointment appointment, Date from, Date newStart, Component sourceComponent, Point point ) throws RaplaException; + + void resizeAppointment( Appointment appointment, Date from, Date newStart, Date newEnd, Component sourceComponent, Point p ) throws RaplaException; + +} \ No newline at end of file diff --git a/src/org/rapla/gui/ReservationEdit.java b/src/org/rapla/gui/ReservationEdit.java new file mode 100644 index 0000000..6e39aff --- /dev/null +++ b/src/org/rapla/gui/ReservationEdit.java @@ -0,0 +1,16 @@ +package org.rapla.gui; + +import java.util.Date; + +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaException; + +public interface ReservationEdit +{ + boolean isModifiedSinceLastChange(); + void addAppointment( Date start, Date end, RepeatingType repeatingType, int repeatings ) throws RaplaException; + Reservation getReservation(); + void save() throws RaplaException; + void delete() throws RaplaException; +} \ No newline at end of file diff --git a/src/org/rapla/gui/ReservationWizard.java b/src/org/rapla/gui/ReservationWizard.java new file mode 100644 index 0000000..160409f --- /dev/null +++ b/src/org/rapla/gui/ReservationWizard.java @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui; + +import java.awt.Component; + +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaException; + +public interface ReservationWizard { + /** Show a new wizard dialog. + @param owner the owner-component for the wizard dialog + @param model a reference to the current CalendarModel. Here you can get information about the currently selected objects and times + @param type the default reservation-type. Can be null. + */ + + void start(Component owner,CalendarModel model, DynamicType type) throws RaplaException; + /** Wizards should override this method to return a meaningful name that will be displayed in the wizard list*/ + String toString(); +} + diff --git a/src/org/rapla/gui/SwingCalendarView.java b/src/org/rapla/gui/SwingCalendarView.java new file mode 100644 index 0000000..95b29ba --- /dev/null +++ b/src/org/rapla/gui/SwingCalendarView.java @@ -0,0 +1,32 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui; + +import javax.swing.JComponent; + +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.RaplaWidget; + + +public interface SwingCalendarView extends RaplaWidget +{ + public void update( ) throws RaplaException; + /** you can provide a DateSelection component if you want */ + public JComponent getDateSelection(); + /** Most times you can only scroll programaticaly if the window is visible and the size of + * the component is known, so this method gets called when the window is visible. + * */ + public void scrollToStart(); +} diff --git a/src/org/rapla/gui/TreeFactory.java b/src/org/rapla/gui/TreeFactory.java new file mode 100644 index 0000000..28ea545 --- /dev/null +++ b/src/org/rapla/gui/TreeFactory.java @@ -0,0 +1,29 @@ +package org.rapla.gui; + +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreeModel; + +import org.rapla.entities.Category; +import org.rapla.entities.Named; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.TreeToolTipRenderer; + +public interface TreeFactory { + + String ROLE = TreeFactory.class.getName(); + + TreeModel createClassifiableModel(Classifiable[] classifiables) throws RaplaException; + + DefaultMutableTreeNode newNamedNode(Named element); + + TreeModel createModel(Category category) throws RaplaException; + + TreeModel createModelFlat(Named[] element); + + TreeToolTipRenderer createTreeToolTipRenderer(); + + TreeCellRenderer createRenderer(); + +} \ No newline at end of file diff --git a/src/org/rapla/gui/ViewFactory.java b/src/org/rapla/gui/ViewFactory.java new file mode 100644 index 0000000..9a27bdd --- /dev/null +++ b/src/org/rapla/gui/ViewFactory.java @@ -0,0 +1,33 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui; + +import javax.swing.Icon; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.servletpages.RaplaPageGenerator; + +public interface ViewFactory +{ + public String PRINT_CONTEXT = "org.rapla.PrintContext"; + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException; + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException; + public String getViewId(); + /** return the key that is responsible for placing the view in the correct position in the drop down selection menu*/ + public String getMenuSortKey(); + public String getName(); + public Icon getIcon(); +} diff --git a/src/org/rapla/gui/images/Images.java b/src/org/rapla/gui/images/Images.java new file mode 100644 index 0000000..09efecd --- /dev/null +++ b/src/org/rapla/gui/images/Images.java @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------* +| Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | +| | +| This program is free software; you can redistribute it and/or modify | +| it under the terms of the GNU General Public License as published by the | +| Free Software Foundation. A copy of the license has been included with | +| these distribution in the COPYING file, if not go to www.fsf.org | +| | +| As a special exception, you are granted the permissions to link this | +| program with every library, which license fulfills the Open Source | +| Definition as published by the Open Source Initiative (OSI). | +*--------------------------------------------------------------------------*/ + +package org.rapla.gui.images; + +import java.awt.Image; +import java.awt.Toolkit; +import java.io.InputStream; +import java.net.URL; + +import javax.swing.ImageIcon; + + + +/** + * Offers direct access to the images. + */ +public class Images +{ + public static InputStream getInputStream(String filename) + { + return Images.class.getResourceAsStream(filename); + } + + public static Image getImage(String filename) + { + try { + URL url = Images.class.getResource(filename); + if ( url == null) + return null; + return Toolkit.getDefaultToolkit().createImage( url); + } catch (Exception ex) { + return null; + } + } + + public static ImageIcon getIcon(String filename) + { + return new ImageIcon(getImage( filename)); + } +} diff --git a/src/org/rapla/gui/images/admin.png b/src/org/rapla/gui/images/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..02706e84dcdf8e6b50f91108f016060476b322c9 GIT binary patch literal 1052 zcmV+%1mpXOP)X1^@s6%>pGE00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru)dLh20xOc6XMF$w1F1!A~^8t9RR^$Hu{`b)9>uV~N z3IMrWZU7FT>pC|#H|V;~)zuX}s04fq9)b42qFgRx7zV1U^7{G;Kt7)zfR{=oG)<$? zXz>32&hhcFtNJVOgrX=TwGcu`PHoHOvIvL6sH%#`;{hNRivh5|zmF`-ZpxkQ!?hj} zmC0l{Jv|jYBS@dA?!mEb8&y>)7K?PdU2bo0IXE}~z_x7)g@W@eeW^5=Op3d^J5Ekc zP!weZE`*SV1IT1DTwGj`N~N%E+x?konm=;ygmbgGxk)G#qEe}_zP>Jcb&-bCt|*Gg z<#KFqZ@a)wr^CNl6Aup$0QmiWB9RC_pN~{3MX^}?6u!8)$kx^t^Yil~KkHZhU2}_Q zH0nCivMc~fr4j(eVv%Gr>263Q5`@EHyk0N1ZM!OcJ|AaiXBdXT(b19A%gp%nZftB2 zi^WK%(*RhO#nRG}8+js;a5p##`&9*lL8{d%v$L~!y)t=6B} zD@l?Qy~t*>tgfz7tJMHdRn@JXWm&wvy|J*cz{<)B&1REIr9!vcb<481x5vlF2fD7i zecb7Euq=yCr!zS4gTWw9jZM>}AMQl&oIIgWh)5)YVHo&)K2%k8vy#i@kY$;8JPzOn z>lkm`Dbqi^0hpeirqO7OeEV5e`aRKaNCz&BYvADk#zCFH#=-m3?!do=eizJ7;f``y zmVXcZExg<9{&(mw+<^rGfw6Fe5P$XRH&}0=2tZ`BSz(%{czJmde;xW0`2Pm|3jPmO WA9RU7lRQWO0000P)V5?2_Q*C zK~#90#hBku9M=`cKQpsGW_DR-f3W;EV917`Vq=sawXtJ2v5Xqyv{oubeTWi8RnwQg zR90Q3Qj|ZS;i2tAD=SfyxKVAXQLM&}nnsH3U=vIV7%;ztZOj5oz$^>PEPTgIp?0cuuT%60PTSIU;m0d&VK^GlO6$N2evkoQKH`tv9%Ec zVIqV8ArP2ZP9d^mfDooNmm5QfhjJ!@?J+@?Hzy~Az%)|a?79S!jbFe0)n~RHfE2(5 zFgy8gqVt28rUAkPvH*l>SW1Lxz(Ww(cafblvp`_SyAW9!VOT&g4NLKz={Nzu2fbK5 zxf75HYyn*P_)kpUU(Fhd;Gu&6FwC6AWG#F+Vdk8N00E|%^^GuvB`ero=TTA=1()Vv z=a$KU6F3U|>x(bGV03hpOeXWt#oOBiu&}T|Sy`F&y|J-DG#V{X6p2KrtgI{;Us_ti z>-FMtxzKf;^B;b|ox69j6>!3Ed3iapGGo zv48*m0^yttz~JB@2M!z{5C|0T2_f)!JV=tn#>R#vw;Ld9OqS(5kKDd}oA=*;pLgDQ z2T78UBq?tj0dC#8#kFhKXlZG|>-91>H;3QvFHkZ#IEW-kq|<52%ge2G~=fT)6=Z1tgybmPHk=NE-GMod6~({Nt&CRxqkgRE|=>& zJ*4Wo&e+%(Gcz-mdvg}N@x~hr4GnSU&K*l&yC!A%UVZgd0Q&m+EJcr!-|wfTrNs*F zhK2_E`}=nV)wOlb{^0|VAd@lp&1~_!0 z%#cVVz7vqUv9XcZ>KYe5yUv-{e~RvLA%tKxy1?@X_Yn?<`Q)one)MeHu0V2Rx7*M? zZfYt5RF(O0+HI5ubdu|v=pMHvGcq!QEX%tBQqP<@^D{+JNTt%uEi6;yR*@u$o}M0h zdwZFfn4r|>C9#pp%d}jr>g?BcB)9te(3CW9 z|M5d!e0Cp-ob^PJzns5(+{J4h2N}6NoVQIv2s%1C0GODVK$0XPkx1S=fYa%up`n3j zG|Jf67@DSG7{;!E{Kt+RbGzMc4!0emO$b^irs(b;r+Z)=!!UXBiE28}zQz-e)qQV< z9XN2H0I(1OMNud!Dq?PKj?&UnoK7dI)4nU9fZOesVEYKz-?*3kjeGgk&wq>%g1){! z>T4>$H^X)o)t!8bqF6Lg&t%J6~U4Pb!r{QItHZzx?t` zoK7dTwY9k2?p-avc<~|)4Gr1FLLqC798WHGE?>UP3opFDz`y|SzWXk9b#*ARS>U0f zcs%Y%r_=QJ_ZMt|EXxcG4B&J+nV-*QOw@!>6BqirsE!ad8ohINd#imWMoVzWL@a zbJpyPkEy9ClF1|h&CShu2WfM2b3s6lj*fEp@L_~a!=}homik$^)<~o za^uDgCMPF3dh{sqc$}avqiJ>v(B8JTwquXB6qhbtqPx30t3U`&oH&u!Bkc_6{{DXa zem|R=o2afL48!CfpLdhV7`Rj?k;ND`MZ)cN<8(Tin3y1yN?{lVs;Z)Uz@=sZ$;XZz zd;a+GFf#+})9<;oS>+uO5MS8*^E{+9YZ z<>*B&0$vY>X)qI>A+ff~+Ug2pV`J3T){@C&5JHej8#o*aHlXa}$&;_EYW9f8^+Guk zLU8{4dCJPl==|oW!Qt1?iA&@&eJO3IAg)B4=9z0-W zWrgYKX&`$$ICA7jL5H|o*O*GB@cDcNo#fuVdkF*rM59qOO(PbI5ekLydcF93K2%j@ zGbKo83~WtJO=VqOU4+A7%cAk|aSk3l$oTlU1=8>LTP;FKNeLd0hvnsE?%%&pFc>70 z$WxIruy8N)ERckdocOG_k^N#gN1o12@Mrb!}^z%)%HNy6c9u(h>CI-O>HeH|eLnM?++ z*NdiUG&eWX)YJq(Wo0Frrr~nAxNzYDZcXBEAN@V==*R#OU=1LVNO1G!O-$3oG_&_{ zUDwfd-MWe9;%GO@0m>ynj&hfS+%p%4526WHRyXq2$X%sH@$002ovPDHLkV1g_Vqc8vf literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/calendar_small.png b/src/org/rapla/gui/images/calendar_small.png new file mode 100644 index 0000000000000000000000000000000000000000..e57a5e6fa6ff0a2f15f4173e3f5ee173b194ba0d GIT binary patch literal 854 zcmV-c1F8IpP)C^=BXN@DW(Eup~QVOIT|ChxWDJ4>lxxJ0}y74RD z{&4+`IR&r*e*WnfJg-KY=Hy}wXb2$@LXxF9=mt_sG%OYutLXa82loJ@_4Re_;IpUd z{QR7DyN%;GxUNf{=L`k|(lo{QeS{DghC!?U1wu8=djNKKch}10GI1Q!Y&Kb0S;4k# zlv4EjeJsnOSS*rd8HQn?>-y|=0JGQYJqm(=2M?B@yv*f4FR8!r5Yy1nG>s^V2!ep$ zp8t+*su_q05Qd>~a&mIi?cVU!lkb@~Qp$@}zI=Mh$NRfTDVdv_1K@TTQ!qhDIoqIE zuh&0xUAKPq;sseU!u5)jOo*bF{C#~*yWM7QZw~++0YWg&b2LrE1S*|Q=aYkj173S| zjlX&ke>5*CCMj>#Unf{yrC{3tL{Y@MZ$ISp^prGBCntEG=f!dSUJwLWmW4yi`){tX zv9W=a5~UQqUXS_tc{EMq?(U9Ot2Nn1*D<%YwpI@h582+{=IZK-YPE`#lEGj=k|Z+* zq9{h!b-FhSFE8Ub4z_L6YPG0VtE6K^cQB%V zJK*xNL#0x|G|dSMp64N@#Ih{HFvM{j01AZyVHi>>mC!Ol|87XL`6qE4QLEK33O7O35`jTYy+=2j&pQ&cJ|Tn@i9q~ z5Cj2IN({q5DTVL*Se8YhP@qz&FdPoavW$B-YQQ@S3k#o{ruj%tMe=_;E2Yph4PBoo gb37gsMbW4K0@veG?0qdyLI3~&07*qoM6N<$f;GW@c>n+a literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/categories.png b/src/org/rapla/gui/images/categories.png new file mode 100644 index 0000000000000000000000000000000000000000..17ccafa74aec643f96519278395cc21d751fd312 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI z1_o{+5N5n|x9$&6kiEpy*OmP;vkZphbcz~lP1i#g=3 zacbHVmYvS)56s-*^!@;+#LSsDR^L;YyW)DQ^^^+biZ+Ls5F*Vlb@_)t! zD>LJctLEL;tFRGGke&Xb$^U#3$7jJA%p&~S%wWESCtreLpL*S2{~IQI=$uczB#LI vu77mv)Jm|fh|k4UEvr^D^l5w++{3uScZthy-VKI8&og+s`njxgN@xNA#{rWR literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/choice_no.png b/src/org/rapla/gui/images/choice_no.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e3a1b32b135df2c9f5d2dfe84b7c5df35a04f6 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPggyW+8qf2IfabD}h4Ao-U3d6?3izIdU}^@OXdqeAWLY z)b8X@Wz~6F#Y+rsW;VunU0$}(O-NT_)|Fabi?byWD)xJxO-b^I5VaL z6>q|x9*9+Wu=G`7)ED-h-JMr%3%0!27AwIfF*o4Wx5**vMch08pIRU$ySJ!?eeL%P V{Ii}nMFOp7@O1TaS?83{1OV_JR6+m% literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/choice_yes.png b/src/org/rapla/gui/images/choice_yes.png new file mode 100644 index 0000000000000000000000000000000000000000..21ff2d4efd53571bd65a2b31bd7ce547fc872686 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G^tAk28_ZrvZCAbW|YuPggyW+8qf166A#R-jOer;B4q#hl*Bj(kT9IGEe(YUWPg zJ>4r>)WhM?gaw9S95>RYPwFWMw?DM4*Wl3kO0^HIf^Bb9a)MpgoM3HyTM-{Cy62i! zqUX-QrwOlBSa_I5`Ag-{0|v-xtv0O&&X|c=SmYQc63nh7d&;OFvbQb6mlX z9D3WEx_LQ=tg0vtW7N?HPsIxe-o zQ0n-Hwl{iU5RW}(wC&pWIoE7G3?Pkvn;yw8bBacnCdGd=x-?XK&NSqjESr^?s;Dwk z_2;EnZ<`4S5BPiJtL+oQdvSMgAn>fL)LGjJxDCclB<5y#+;)eIoM<0Yk+1OpX2G~)k0>}b00000NkvXXu0mjf D7PlLP literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/addtsk_tsk.gif b/src/org/rapla/gui/images/eclipse-icons/addtsk_tsk.gif new file mode 100644 index 0000000000000000000000000000000000000000..a5ac28d4c566907f9206b991a11baa02ce450354 GIT binary patch literal 590 zcmZ?wbhEHb6krfwc*el+@$;`YAAYt^S=%#h)$_MMFJ8U-{pa7W-+%x3`8%#`ac;}n z_~K~^#nTF#792fy@BWJ)k6!&~n6jmD%9f^ytEMkMFk|_FzS$er?>h7K$KQ28^82qz zvzLAT{^!PvAHV{+c)*@-qQ8==c6YNFZ_AC z^Y7>LoB9+t_A73mth#Hu+P2B6f1WM=`*!ENO0h+?5({f2mNiN(Ym#2mA$Mg*>hHVF zhgYTjc{t(nx`4yW;ttJnJT%wq!kUUJ8>)}aN<6o+?D(RhQ%g%Oud8}@|J1?RIY;K@ z@0*eR{8d*Rb6z9wC>*1tMmg_~C<+Ym>RXjlG!!%dz7u3SMkiFE}I4}+ox2M@c;!iyI;EP0M4 zDfSD$=;@GFSru%pQBc literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/arrow_right.gif b/src/org/rapla/gui/images/eclipse-icons/arrow_right.gif new file mode 100644 index 0000000000000000000000000000000000000000..e3a7cc7659eeb3657deb54cd1d87cf020bc25778 GIT binary patch literal 216 zcmZ?wbhEHb6krfwIKsg2@9+D+-*5i=e)I1)AiDME?an_>X8wLW^Y@dPf8Xx>eYg3~ zwiDPZtoX!gqw4}O{`X&}W6N^k= PeB;IUy80$vMFwjC!uMVm literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..bda0e6c997507745eb925eae25673ac4b7f217f8 GIT binary patch literal 1304 zcmeIx|5MX-90%}EW55R88X#CSaYM~J!w!iM?8|LAU~qbZ5s_U52poi09tosY2aKYtMV!^PWGy?q0ER zF_BSe!B8M%tAX+b?$sHL^7M$>^S(E~;??H|{PbOLbJ>yRiet@H{9ms|No!)d>P`+d z2xJX;y^>EKHl-`>UsSi{Djw8Mc7CCf7EMSmkM~rn2ilia*QV9F))`0JjKe;0xlQY6 z(}H%bqg_V=Qk_Gp106cBIDKELcS!YMRa4uc2c3G*G3)4@1zj%4jKk6;_)Pq%RAmT_a7Kph(d zvO=IXfI6L+9l@Lkwu53$0^h>$9h}&C{(t`41voqY$MZ7NE@Wn~3v(`Hvy-wj*|Bja z6QB@?jO$4t+79$Ooh6V;ltLQaab#Em38}PQtVD4FyuVl!loMhoSGpHpd*9>OhUD}< z0p)12_GS9nMt+4?SSTmw#`N7Q0j#L{&BQ(d|AB91Qc0}oBj!T3`9?P6tU`q;VC%u3cpM#GzFa(-eM-}98P0iZ~;IrJMquMI*CB z4m%@HHH4?jQ|nYUOM_& z(AN)ms@>2V96lqgC4p74=`#WcgM2o3PwsYryC47DTnUX8+ye6^qat4jOwHi9`$e}1 zD20a$X!|O;OlJA+4q}Wk57p9(D#N{!Jl{X;-Fpeh)C#t zs7P|4f|@N7L07UvmCPs&*I3WW>$3(^H@I%zS=y@RJGuP}6#Dma literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_categories.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_categories.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c8967979725c5c5935466c58b02f12d44c70388 GIT binary patch literal 1313 zcmd_pjWe4E00!{TWJ{vU#FeA8$Ud^Vu2Z8G>)E7EGqa)Vb}O}(ZbQ4<%$?5XB)-|Y zLt7o9;#-tRkWi%(9=oaB}qqW(p;*446Ds>Ys_P`7awjf4QVeA@4C#&s#S`wMP%11v+I;OxOyB5#7DL;KkkWkif|8{HA zC@BGTqc*S=*={9PM2MexCs~J!-2+ zZCzL8h-R&#S*Ul`+N;4qVvSX-fg~D8KO+=tq2+ru5-rrHg(MHHeGj4j9kBYIuI~}l z{|Fk`0T0YU(jBl=2T66XOb5wy@E|@O!-G2zNd5EBV|Yl9LvHEeVLiN{?Z5Q|9^Qf6 z#u<?sQA%H>bdIo*nU0aYv@3cMH5@kMlE z37arskm1Ut2~(O-r3nL;QD7Of8tcqP09?kN%&!3}7`TE>nQ=Ci*|udIP+2gQ#WroR zK}#)npV|I4N!M32u(=1eNd9>?@^V$Z{2YPS6)Woq{9+v4nEGoI+uk&6Y}pX&h7De_ zAr=VP-bUA9bQ?zP2)b>K)c@dGk zhl^Z|@$uueaZ(Qkr?7YPTG(+RKJ06qCmoM=&8ARWn9+RdXXJG1)tP#MJC{{keJVQI z^{f|JO8LBv^Xq~w$GIx4tiYu-#h}10e8y%NSuC2a@LyEF#p6@4!jvW}E04hEqQhY@3 zo(OEEJ@5@;Y%!zv9Z4QP!%GjJdd*YfWcN!x#3a6;1q6FV^2Wo<>E4IJPcO}vY@3$C zRO;s95-#ZVy@0nrW3s8lJ)WZ=IE_++(xe~ z-S-3kWic`O%|*GRlQ!jiQE*+#*Ph9lRir&Mo1n0UVSg+BdYp45;Qmz?&js g96|%(19g9V=O^##mObyfNuDb9Tk9r~h=dRR1AU@g00000 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_conflicts.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_conflicts.gif new file mode 100644 index 0000000000000000000000000000000000000000..0399277554a254b59d5b18234f271a14b92a0de2 GIT binary patch literal 1349 zcmd7RjZ=~b00!_EOHa!>A~VmN7gk=|*;ZZG=dN?=$Xs<;>&vb(aHY1HnIEZ50WChV zl5!U20h)qNMO4&GNg?^vR0M$`qKFC^YnH|P@`7&qU+lTxJ@@aWAH<~%;%;&7?s}7)p-#x^Ny*}n4~|^T;!vYBNjbe~xBq-_KzBV?oS7@Roh!bR zC(F5GxIrFWMlq(6C3$)LKQMAaelLk&%($;4=8t6*88eF{g~XPp$7SRKZT>wanW&@{ zjOEe0%cEr!rYWC3T0k}t=yEDkL1nd;rzvTym+Xtuq8A$K!x7pe#pB|E2W%7NS!Wea zSwbJDGA3xx%ru7iKBKEPd;AG&qJ*VjSIKzSEv4+P`cli&3T1QhKy|g0PZ+GOR`7Gp z%xW`}GsNYnxSU}wXQq-PZ>Lx*xq}U&A)a`ktxG0sRCfqD3OiT%x3=@OS^Ds;Ox>Vz z@Kg@FB9}MpXdHH^GpB7CxMP^uRhTmA0xIp8RUW-d&fh87~ zbPASExg4gl8Ix2tk|~sXNwBFeLf@u7QlB+z`^i{Qf&Ml;y_tan0}RX zBe6eXv2qS?*nQ1o-w8G3YiYtuR*Bgwb}-&PS75^rGMdj1;x{y5v6!%D-(76of0Klp zBCiSfDiB-Y;i&{j!)xPW_tw|x8smjtt9N1pV+xKHeTnO9Yq-!>4jfw%IL|Ig=sovN zBDw#hq?@o}wZAVd{!s!4^&I!h>rcHn ze32$dEM^_@x|F?lx;7L4bw{wu_DO%H{?u9A$})j`h;`_uHX4B$0wxX2C@YhW_u6>2 z7IQiq9VrP8&z@c6pI_g}zGY+POkm!46g~AjqVzpbvF#_yu1THka>`)_H;P(??!mYJ ziWd9DdLtr`C-!_4txvIWS%^CU>A{5Av5>xRs*oZPDrPG&YTZWr=8D3T-uNrKfi^U- zqmIpq^9;5TBG+t+N}Vj+z@t?7)li0gLLcw>6z=t{fKT#VYp*G%9S+6yY_CX+pl%^U zJp`Yv=|{yL`^uxy5d+&QFNK!uBzbTCemmB~2e}zQ_-xsVR3e z!Z4~>mH4AabeSyZ#0;&{Z^Q8|1Vma?O&!l`e@q=953RE|_wClbZyECULjs5X1LGP) A`v3p{ literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_events.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_events.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e316e79c5b1d1bbb83609990af59ee978f23ef3 GIT binary patch literal 1325 zcmd_p{WIGK0LSr&s<6%pN~(0))eUD|^sZCedJ|JpRNXw(F@)LOsI%6lhIN%x>!}nY z;-Obci74V(HE4*hhteTIL=s6P-^7~hw7PsB61Mm|_P*B-pMT&Jcq!n#PvR+zBSzhe zIpa+_cfl`{Y!)059};Pl5E>O1dNtunG$kxL;oBHWcnl>XmU2JY>R!_4^y@ZhH*Z(| zM5@iSPtT%eE zdAxx<(2&7s>KJZ}t9#6>ecVyk+|kh7{_qLwc}r3wvy;=FJ>7MU$sXi9rO)-I0_?n5 zcJ9njVc!V1j|23L0s~{f;23Xuv|A38Ell$}mvmiAI_+$3*RrnLh_7QGfJ6)JYyqU4 zr}qe;UIEmzqU&9O`c|N&d13D=)PDf(UxNmWgz%sc8Wh4q#<30$9YCO^tYHy6EJB`% z;1Lll6ZDO2ARIBw5hEOl5jrYCMy1Hu0d!o7z81DEi{#^*C?qU;v5Bq;Rm&SHt_)cg ztGIHMFIMrz;Dm8VRD202kf;O_a76-6Zs{TMA1hLjx20c|f>T@Q>ZW>a69km#+NK&% z>UGjOPzr2FUa!eOK&2PTK%q>%E(6!)>KRZ!0~$nf^(<(3FYTXG8z4pVOO4^()__*U zhrv!*-Sdxz^LBel`4<9dxhgFJznMUHX8zvQ@9m0r-Ww3zjsaE}5H*DC?V(y2-GkA6 z1l=>}cTxSm-mw4g|0Yk2v4byQaQm1aES$*fM(!P)MJmh1kA|~4_Enxwb(o7MwKF=! zlR@_XklNvwGePmAv!bxxbITgbX7}(G%VOd?%j$)CreB^Dk3d$VMCJskadnbuWQ-$UJg-$*; zANyuW85aB}L3XZqyKLQ7>&-0!1KS_nlr&Uq>*!0c=9`t+xqkB-5B4Ww6{2+iuj7d+ zHZ6hW_V}~O8Vub%q-@`?gMZ%mvnHJ^19+H9tK+3kc+2Z91l?s~aQUWH zPP7;-b+N|J%1stVb2hCyFDJc}_pRpmR1av7pkdiZEH^h9z*FGg`a= z2XjqgptGxZQB~>_L_YbzomBu3;(zoqGs&FqQPv0DLu%5J)A6KZiOHmkwwEwFB=h5j zXWYZ~-w~<#7fvfN9v66vW=F$Zt}0qW0bez#B;fi*yI>q?yR9%v>DwG)XX3%U9eKLM h6mM-JZ?}6CP|jpp2~uBo4lCvwSR7qUm@nqb{{VI0S}*_r literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_events_filtered.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_events_filtered.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bb6f40351511f572266771e7ea1ace2ef758b85 GIT binary patch literal 1387 zcmdVZ`BRb!0LJlG(?o5oP>Q8P#Adb{+hGs4Y;8s?kIKx#K)v(&_7&6liKvdAQ z)FgGSC{_baLGjAKL|vq^Srtq|KuLMAvhvFJ<=n+TW54tH;rR!iu)U!>0upfm1~Bvh z-)$%O?+V_rC;n2n^Zu9<5l8G!M#jcR9zA*RSVGjXlLv_L(Zqzq#Dti*grmt zCjHDhkE}Vf>TLRrl5>QLOKbkPOg)!Q=bc-fa_vq78QDPg!HOxKq!n?JF0XetI znZ@OTvQXjO1JA3%TdFRWKdftK$5%e$Ry?Y!G%{vb)K-F8>8R%8 z$T%p~o0a3Ba@_EC9DJ)Y$Uw6Uw5W831#L6*j`M2DGB?p;0q;-i#(-Qr(5&qn5nvq#&rPkR#>zvd&*Y{=KY@JunELe<-GZy%r#b|(xR;y_mHd$el z&1kY(%=0F*&1U^#w%Gptf97LD?Y@|jNKQ${UQQ#EurZ_*Y}nodQGg#{Z|Nie!Up8I zt`8TmCD{nqO3a0x?n3mo)c&VsQCK`xoRQ{7dY_A=J`1iTHvU%LaKdrBhkVMNvn{UK zO)Hyozx(>n_Otx~6(vUx#-U1|$iC(u*&6*2p7B8@yA-YaF?4-EFrDE<>-NCC(AU*HFlE?=<>Gml+4xv+T%&ERt%IYl&|dg3);2%PDkwKiQGTX1i^{qa*Nsc=q1a*KQkR zIOgVP0Of={MnF54VGI0(U5>B(ntGESxt1)feQ_giGY#RqVU03B2;ngyS?*04aB#ui ziQb2B3wrlpW#qyD-6LmJ)I^?(#E`o#09{Pj^37y1#W#ObFak&QLe@C=V=nj>DRe(n z1Gy1+>V}Kh+u=U+sV@4xh@J0!7%pi7plsz-V%YlM%MSrQGzO1Up6QrA8pJNfVv?nN4K>Z=#XGWNMi4@Q#Wg)@ScZaKQ$|2<34TeORcLXI5+^m{0I9)Ps{)S literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_filtered.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_filtered.gif new file mode 100644 index 0000000000000000000000000000000000000000..eeb8e0370ea3d13e84d74bd16488f6e127d881d8 GIT binary patch literal 1334 zcmeIx{WIGK00!`HyhW%=yw^BE58dfakEz(5d8?OAHn!|cafh;b*^PDHR_u_l=xIx} zr0SHFC?$!PD9TB^B+_zSLMxPrw*vJraS@^rzK@ak5vh!)3*@U!`d#qdw_9;tNo(21qWkN;! zqY@YH4a+a?j13f77SI}pORYyrt(g^UdAi_&eL9O3J%BNOY$G8xoSo8{`Nei=z)~I zfA5SQ?uxheU~r$my$?fwO&|v|nnQu+P^dW)XpV&Mk5SF>%E5^mRvoCJ4K=I;VT}ga zhY$^fXkkR7MvoCxtJS?;LPfN~COC=U$1o99NOCmb3FvZq z62MpskZ}$XoEARS80XfA*9$T>cL+!l-;0)el(ht8crx4#Ov{>seIOW`q5v7@kNzpel2{$k&vTlX>>;~P~8;bK*d|vM!S$;ytxaJ3K&x*CxJPjlI zk$<+NhJWS?uJ%u_4JUU7k>}=P`}+_vTK1)*Use;L(&j7A7}{CyDcdznh%tq)hYPg> zevPRPpK&Uf;#Za?MDarjpIUXa6xUc$*4$!@i6L0W6>+>>BBeJDf4TYzk&3-wd!@p$ zM#4XrlAAnTP0IP+wF;Zol4@j^6likcg9MDBMesq=R_*G?>3GBYloZkVI!Z8(VPjCM zZ}#nnP{R*c5|5{k_W>|2^w5J4vy9t?JX0KjBQo`fZUtOS=!}kH4^GA(RaoO38pg;W wbF+t&b`Th9jt@qrLvzJYkx$M@} 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 O-Ee}0yBl6*wz{iU?bfm*XU&<-hj3fEIm!ey zbNDbi%L;X3h$7DlLV^#F2??P|W&|oeB$f&CdjQ>j{uTS)>)!YI2fj(khvMQdgrRV# z>0wmfVRTsy~fCY0SI0ILd3|T@C7Iw z0Ys}nkr5CXL9r1Kzg!d>!FFW71lw0Zfd1ExQBX4K>==b4s{@jbg3?z@<{^RP6*3S| z=a{o|43dq3GNi8&u>3V7Hvw`JQuwh6dTfHbOz@nssp}047)umy;1Q!$VTP4vNQu+} zC@pZe1@0LKdd6M76H7f4aL6?K2CYMx`u*!ug6C#_{08X`n)4Zh_*@s#E`a;v|9!mOa! z>w*t+8OkEeI%lH7f?Dgn9v66$e%u^$UH9OpD9o**P1m0#dVkHWKl^#Q=ND%Tfg69| zr>WQHV#2S~XzvZ|3{0q5{BAJK|5^m$Qf6TE`HtNwQhjRiI_yTD8C}kVx5tek>^s7l z7WPORL5|%JO~V~2+Cy7DJ0NcTUVI02$_r-?DZi*XKRaxl^DFNnd2I-gl@LlVHu*iw z&&wc}rO?9FQV}~K@*74}e4=B=U{Dy@H?nXalXTlRJfxuzpApb}{BFqh^~4>|wtDds zA3p7M4ZZPAI^GalKfc+PT;@4nag{vaAKZ<>eWlrN2=wYago>|RQ$h>b8n<#RgP1;8 z8? zx>-T?Oo&#Zjz&Z%_MS2OP`72pwAX!fBnCfA-lw6JG6w<~Nx{+Sartjsf^dX`2R(^* oRa=BkI2h}HI-KNjK7A&#RqP$9;A>*%Yyv$xa$bl=uR-nq59WANpa1{> literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_resources.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_resources.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe1f368514696274ab07acc814a6b8e446bc10c9 GIT binary patch literal 1332 zcmdthi&N4E00;1&mI6wJtWrBua$c)e8(psD+$taW*qx4@Z8g_!;vRx<@`9KW?HQOv5zXy*E{*8U_bKm>^1K;G-q{Ko#K6iE|>(%sU_`lhg#StxD!rH6U% zcJ|M*=3*K1(!G`<8Mj2iE|zoUoC_5ScBP`FT+XNVv8(#nI^OqGl~B%Q(E8hJRh$Q+ zQ(8eWL&X^sT)d{~V%+D@HFtm0h-q5M4P8gAj?2(@F!bCyJ-1oS)Avwy3V!RKV*apH zFd`KiWg??&T6_JGZlw3AqSIjK8SIOL7kR^W-Z01?w)02q0xwWF0**f72#ny&5JPAL zMMhBg#4dUQc6mXDA(QASDE5NH&p?S6Br!qVCa~KC^?1f}sK*Ni4d;4Cq25tgItocg zVc94&W$coUL9#LU-Z(5Dhvc4~@IVw3u)^$t^qJv4GtzHHUYhRoPa>eHN;!!tDz=b+WO zViphD9D_FJ1Dg|kaqHon^NmHaI6DGaJ0Y9!pE>#KdBe;C3@)l>7h&kH0c1)4_p-ya zJifHzgzZaC=!Fxufw0SkEJBD2LfkOoaypg~huh(F|NFno7Wak(N)9(0>;ydVo&-R)!|u+nyGwvM-%ZN|?9q;>c~|rf zTy=l(s=$rMs8jw&tMPm2>bdvZb-!;pSt>>cu|6&sXJPiJiP;*u07nfA&1g-kLciiH zTdPBMt=@LwM09)McOkdq&Wg$#NX@ZljMaw7%b4nn)ffWrla%QB^w{;J#|G58%^w`^ zJ(f2RRTwurgmRx&x=b~#>$Wm*TU6w=lTBy-tWkM--~h#{2CvlFG378^pJ%sO^;zK2;%aP~jBr?uy{hW4J_Y@KK_r z6umu$8F5~zN-8{jP^At)B?<;;L_K4Mx_a(&-KG=yv_tFnSfBra$6$b~c%qz~6r!H5 zw|)C#_{=*#c~qevv%;DRG#B|k@Y_IJfR7xKp${t8qfhME-dYrpwZLg_YuG_)>Rvb% K=j-DG#Qq1dCsE}9 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_resources_filtered.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_resources_filtered.gif new file mode 100644 index 0000000000000000000000000000000000000000..910c7262d6db9024cdd76db7d462cd0c571e7803 GIT binary patch literal 1347 zcmd7RdsmVN00wZBG`!?dOibn}p`z8SWB$=?<-m-{vZK{$*7B&`wRSS+WhV$b=V=R9BF*}IRpZF@ErhK5ZI z!nP%46q5W>j%R#(x}^4WNae{b^gLwih0t4<2n~g(OGV|ZOJQfO-R2Y^IR)X|0wlK} zoKuM8dWD~;c$m;cO=v2=e+_%2rc-n!TzEBnH=|-NvrD>h3h5eFaCwO-#L zFGsajCmnA4^>N+yV=UU4b{emqn8mF>*FihSX}s7$@4S<8p4<4Oi6m;u&+lpxGct>Q7m9su{Hoolr7ya2ut7=Fg$nShBwI^P5c zOaT9tUGNI%^a2foX2B33^a6#i0g)FdGJ{=apvw$)d&V2E+sgqMip9gAc-SEs1|`D| z=`d(DbxKA+>4>9e)FB%MWuAWPkb77>pk9mPi3OTAw*lsA#h=h?^Q6)WDc?bT@1Xv1 zCooD=jXTxjPR#^lx7@Q?G$U`PHIq)Qhs~w4IdwMIXNz!P$~iFQ(oea7vEQG*cg>HB zT(;(!Nh4_M0H^r>yqC>=FiiaA0A`evGY;_YK4@0wp3}JJwC;J0dtUo#!RcNYo&D@` z*k@hfn9DH*INWY%287%owCI4`F6RQ|TwHX2a=I4({U0Y5=85+UFvKFPAt0K>V<@SJ zfL^H;O9?_^4@CRYQ?ueJnqP8a5qduqMV0s*ile@XJLS7I-uPqiI5$%sC{3lt-hI}n zJQTg7L6H6;Goqm+w6dMfKH7#$!RDXx501obTC*>)yvnESX~>4KqW1RJ+${MJHZCtJ znVL|dKK`_;}+yp{=`vRIfk0c5k)+NB+1!;Zc9}`elsIW>W6aM??{4 zNsb}ro8r;C0jJ7Q6_nzwX}?RaL!o5G`y ziLb0a#F~((()m9yt6EEcIQt@CLP=g(kjjYHlkv&xQmocJktZ$^c8BHE8Zt`}gK4S$ zJu`j#H%Vp%HJf5`^9KBnq^GHuAKICwtcXNs*Wi8P;RJXXX_gE}ipTUzxb-*sLla?h z)MXgO`Q}RhhmoY1%`5oiuYz_mNtj)1s|vY4hSC?3tlySeSG+3#k6Rk8sKS(vVzfaU zPh3t4iv6+ylNgMEO~P)*B_d+RS_s4yg!H_`&}{VO5j-P127M9{d_%YDipoHYN=I~!)o WDr<(X!!^cklx>-26MTGNU;hW3UovI@ literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/big_folder_users.gif b/src/org/rapla/gui/images/eclipse-icons/big_folder_users.gif new file mode 100644 index 0000000000000000000000000000000000000000..7b9ae57c3b2e9089c4c706e2f78661b0889b0020 GIT binary patch literal 1334 zcmdVZ`&W_&0LF1dU0}?ZDRG#kvg~%WQ|r{y&S@a7$Z6Bg+^IE<%vEM<<<@qrIVBbI zmgZe&XFAkO6Oq6xCLp}8*NS{iRAMS9-r86?-V3j8?9bTue13TTf#>*%V}}FIGYJfW z86e!`Iv6VWjV2~f|x_0HzZ*Rl9LINlIv~- z-?GbZ($3y$icS)pOA_&Z7V-GfUz3={$*huOR&1KAG=*KpXP5KYm(scl1f0w1U6<44 zaRPZ=`u@6%z#F-pb(z86<#jdW28fG~HC7&fQX1A%$<3+)vZ_F-@I-bsD6346)tr#k zgtS*h-4lX&HGN$*F+GnzEo^upf0S6#qy;3QpeSDcxMVrwe@JFNRP+HJs|8qlW(tjB;Y=^nzmOvUfmm~K`vg(;^{MLxg_o7H%P8`P3bXY6xnf&e(OXt= z)M~+z85}jk=-L{#j9_aBwvJ+JxNQZqt=sVRfBskb5$yf<1p;ZEkW2RDimQ~VB(kJa z%v8B--X2bxC=U1D&sV0z`OU{^-1t2~0E69I*32V*#2DE{5$=s@cM-7; zPAWc?*sIg>f9!-2|s{i4FS50KOOF9<83`$;ApWz6y z^UgT=c#Ga}rF(ogT&)j`tV=E8W@b@Sd>)2X?ENZceaq+1^br(2gGeUTk~92V%lwDP zmIv8uMq^^YOmD`(9qA~TqCCDY?o;!e9fhG(=l6CV zwy3s#L9f2!bkZq;=m=NSw|h~;nf**=8rzBTuEi4K5mrCtKx0c;zG9<(GE2@M&a!MKbCUvmGmgH2@eo8A<>E literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/checked.gif b/src/org/rapla/gui/images/eclipse-icons/checked.gif new file mode 100644 index 0000000000000000000000000000000000000000..9cacb96dca98b0bdcf7e7bb62e491f8760b244ce GIT binary patch literal 343 zcmZ?wbhEHb6krfwxXQq=a?`PC3wLx+TirNeg?n^`Z$foW?Q~|F3@j|LW)e*FXQi`}P0h@Bcsk{(tl9|Jz^xzx?_C z`q%$=zyH7g{r~fy|G)qJ|M=(sx4-{?{rmsx|NlS#|Ns3D0u0mxia%Kx85qF&s24FDJgfQ)pYN1>8f~*-kDi$56SbU&*+2PvdM;cZh zZCQ1+W6hDyHAlME9_?Ox^!n5H4XcheuRhwo=E%JLm$#g`edf`J=bwI>Bq8T*Owl>w&KLi>uWpYOl<{Ql>^x8MJ~`S$zCyU**+-r0Em?(Gl1?tccV{P*hXuPqnv z-uwLL_J^O3zW#mwrY$gZgVUp;J!!Um=XT>`9fF$WHQU_C6wB4Ko714rW|HFr0e zOrghaT@r>quaf3ti1Qk!WHwQFXoHX6V)H;4Bx}NIi WN#&gbL^A_1sXmK4AuZZ CGA6qK literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/copy.gif b/src/org/rapla/gui/images/eclipse-icons/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..71d7c95aa8caa2e8f139d262a4e5e08aba2b88e5 GIT binary patch literal 594 zcmZ?wbhEHb6krfwc*el+`Rnf=KmR0GEr0jv*Qc+)fByROo^gS)J_IJ)ZIC1ImdoO<6eg6Iai|ch`(KYl-Z_w&Qo-=Dty{`%wh_n*IK&6+S{#>BaEdS}g? zuy9`2swFMU7Pc>%*EMf;?~yIV2RD`OU0=RsRqfVQbsLs9u3Fr>Y(e|+t%XN67a!VG za&TkmzV+q%)>rIYQ?+Yt^@e4Qs~5LCIMIJ)Q^u7|nYZ@VT-}uU|Nno6Ap#VCvM@3* zxHIU0+zW~m2KMz0?oG`ttxXmkot4W_b9Wps5j zXfk4vRxz9}$i=Scao16jlytap?!qMnQ+Hj7J!X%ee17cct|$M~{QZlIOcJ_%OI|o69_p&$5Z-06 psEL`Ko0;1xqTxYPJC}anf*T!+9v{#qMxsidv8UQV$-}(Rm literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/cross.gif b/src/org/rapla/gui/images/eclipse-icons/cross.gif new file mode 100644 index 0000000000000000000000000000000000000000..98377bf1bfd3cb5d188e2c1d1ca9be170cb32bdf GIT binary patch literal 376 zcmZ?wbhEHb6krfwSZc^{R9N+>g!)lQ^<$D6M-{Y>Dd-&6G`OLqf85ygzK-z&9h2j> zmd9@UgLpHs5G6qbB0D*0So`lYz!YDdkNhPtmn)L46e z&WbzB7Cb(3%3QEFmIYKlU6W=V!ZNJgrHyQgmegW^vXMlJ?>1|0?<0C|>y zt>(b|0uLRje)kBs(2&#w7m2p!M6OWrK31(7--xxIFGOdpIi$actI4ZYY5ru-B-JK~ zr4u_;q8cV}@X5)^@^g6Dv++tvOY^dMD6oo7nZi=W3#1wDmj fA`E)Y1`J#)oL6%)#5iqS?6i7k$AN?PjttfSv{tGa literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/cut.gif b/src/org/rapla/gui/images/eclipse-icons/cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..d044e59777b787792b58cd20446f3c9dc6e6194c GIT binary patch literal 212 zcmZ?wbhEHb6krfwIKseilb~3OACaCnKWKMG`nAKpo zCN?d%F2U7-g@7tAoWRp67E bU?#;O_=e*$=hE1@yx+`a?3a5gGFSrujh8`r literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/edit.gif b/src/org/rapla/gui/images/eclipse-icons/edit.gif new file mode 100644 index 0000000000000000000000000000000000000000..9312d7e0fe06ee1a96c56ac48a120ccb61cb725e GIT binary patch literal 577 zcmZ?wbhEHb6krfwc*el+<=daH-~W91_WRZQUmrgIO0Qk{^Vgr;=CvhVn~OU)HB8;z zIBj>=yh9IPet+`%NBf)uy^D@aTzY)-fot23+}wNe?!6a3?!Wl{^8L@x-+q7i^6T4= z-|xTt{`%w3m+!w{e)y^6oc`w1&#ymzfB*UW_T`1Uw{+DM*j4A-RTtQ`mDw~G+te4@ z*5unwsB@ZCZ$6>YvZvf?POsI-Q$@u?XdkPBeycH`o4c<(-&a13Rs-Gz p^76d@d4oif5*H>MsuF|ZCiMD?&fRpK=ImD$qj2;7oBYb zp)(U!U0S~T*77~K)*rlUT(HErV6j8_a^9F(|NsAIpdL{C$->CMpvIsBG7{t`2DUVZ z$ps!dQvDvvnIT%LohlPQYwEbJT&CH{W#Fcfkd(lo*X}eWaeB?N3@5410-q@!PLq$b ze>&4(z$eb<-^j-+$H~RR-P7AE$IUJyBP}B~Ra#nBMsx}*6B`>d2iuZ`94lB>M7TII GSOWlifno0e literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/filter.gif b/src/org/rapla/gui/images/eclipse-icons/filter.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf1fe5299c5bdae61727f3f1a71dec625d6235be GIT binary patch literal 224 zcmZ?wbhEHb6krfwXpv*EaEZ+?YY9)ODQ}sTT014Cb*W$f-jMFizEQFN{=WbF>Db?o zKy>`?r{jN~&D+}|wzW!lU8&HPYT;cCqPrSJcQ%Nw%oki=BDB6#XdRF&5nf*^yskue zS+>A`Fi`x-!pOiN&!EEq1Ry&ZSYsck_oZaAEl!xmsI+Qn;ThJ8bsx0u?TDP9A^6~P z#S5SQmXDvMedkT~GMTtwiUOBw^2Q7ei5Sn|B_~}B#QBarydmQ**6wQZkH!A5pSyd( V*CbSma*c|>aHzlbq)mlZ%Ooly3q`h$cq-Y@) Yxhw&eP`SmIQV*Y8pyqyFor%F3054BIwj(b5!P~sjn^4pBFDXFJ7TPNb)}zFdzZN zpDc_F4AKlbATf}g46LCK)cR5~=VfGBty!EmMJ+qTijl!k<;;`cOWYDXbj&=28jDUI znIPA;;-J&oD09KqYe6rnb~B%5E3$|ZiD8?f r(5RuL#}txqFvG}%;Yv#K!33RNPp<_UX_HoYDlAByc|N0rgTWdA5cyP) literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/green.gif b/src/org/rapla/gui/images/eclipse-icons/green.gif new file mode 100644 index 0000000000000000000000000000000000000000..7d24707ee82f54aa9fb10d1d9050013cbf161a7a GIT binary patch literal 193 zcmV;y06zamNk%w1VGsZi0K@VRxXubL!4|)qjO}gg>klxZ?TGXw~#-V zU_Y2&N}FX?r*L1YbYiM-aj|xBv2}#Mgo3?-guaA=wSS1Yfrz+)iMWB7#*ml2h^x<; ztIwFU(w+bR{{R30A^8LW0015UEC2ui01yBW000F(peK%GX`X1Rt}L1aL$Vf5mpMgx vG+WO#2NYmJDM}^)l;8n@L?90V%CN9pFcyU&MPO(u48jTlL$uClRtNw)MiWcq literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/help.gif b/src/org/rapla/gui/images/eclipse-icons/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d70301dae38843e0ad0ea28a42710f4c920ea9f GIT binary patch literal 259 zcmV+e0sQ_)Nk%w1VGsZi0K@U5T+@im_^v zw``QSd7ZwMvdp5p(@=n__51(&{r~9j_4NDy_x%6u^7Z!o|LpSh`ThU={{Qv-|M>m? z_x=C-{{Qy<|NsC0A^8LW0018VEC2ui01yBW000Gm;3tk`X+Do(pr)8Mgb)zTT0U^W z?HoWqBm<#9IH-g~!w8q*Bn*q1fs<(fKMz8r<6!JkoDSh?xL`1m9m0T!L@LTpc|+%{ z6&U&@o~2NBDm#AzS2%uu4h|L`78F(^LK+$zDjF6V1aU4f5IhhQKQ{(25)w2vEhs81 JEv+RX06QZIfSmvU literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/import.gif b/src/org/rapla/gui/images/eclipse-icons/import.gif new file mode 100644 index 0000000000000000000000000000000000000000..d38085ad9c273000d1c7ef3ea0144de87b776e46 GIT binary patch literal 327 zcmZ?wbhEHb6krfwxXQp_Z$IBYetux?yuh5fA^8gfa_0sYEDX$@8&R?(qGWMI>Eg)J z#W5Aj<7-wY)UHmhUz<|DHmzxW>%y~b3(wBod@a6qb$sorkr;FE?8n*u-Kt|Id9CY|Ns9p&;Tg@WMO1rP-f5pnGNz216#_0i3J`yQvJsm zgg7JQrk+bO_7dTAKGtDoB+_bkXzjJf5992w1-8iStkCP%_Lx#5y6_`@wFT09~= wevLfb(wrPzoISn09c+@45|YAGBqXFHg(kDGv$8VHpTB^88S}Cb7e@wb0E(nwr~m)} literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/info.gif b/src/org/rapla/gui/images/eclipse-icons/info.gif new file mode 100644 index 0000000000000000000000000000000000000000..a688b8c8558f371c2592cacc849e96bcb10f50b3 GIT binary patch literal 146 zcmZ?wbhEHb6krfwc+A1T>3;+NC literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/minus.gif b/src/org/rapla/gui/images/eclipse-icons/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..d353b8324e3b7d63099e6b8e190dca04326f2a1d GIT binary patch literal 185 zcmZ?wbhEHb6krfwIKseS+Z5x{o#Zz&J7QUB{D$hKha;CAj$C>uav2aEj#_#sYT2Qv zV)qmkv%1PvXL4rV0>rik?s+1aPxR_$LZ Hz+epkV|PIn literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/new.gif b/src/org/rapla/gui/images/eclipse-icons/new.gif new file mode 100644 index 0000000000000000000000000000000000000000..d68588b3f6c593f393570c9bd1380670b56ea1a6 GIT binary patch literal 335 zcmZ?wbhEHb6krfwSZc}e`Rnf=KmWY@^y|~t-#>r-`SJ62+pK*(^ACOa@_X{KW3$$r zUbOlAiXE5N?74dH#gDtszu$lH{mGl3&)@xg`{~!`Z@=#VMPB~6_u~7*S3h2T`1$R} z?`Q9Re)#(P)3@JWfBgRb^LKTLe^s%6bxA;7sb4jaQ5?`-<SgGr(Stle^Db26xs$JRFC#dDB*55Co=Bh3>wUSTWRatZn Xzo>?*s*-}@%2f)gDn1*X9T}_vyYRdz literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/no_perm.gif b/src/org/rapla/gui/images/eclipse-icons/no_perm.gif new file mode 100644 index 0000000000000000000000000000000000000000..486faff8aacdbc43192d92dc975e5ce62c0f26b1 GIT binary patch literal 333 zcmZ?wbhEHb6krfwxXQrrsif>>R^IE}!k;^K{oJ+Z_qhxA{loA1hrf$RdK41)?CMC*pNz!pFGm$8EjmR87z6*_|_Rcz^Qzv(;PA=fzy_s=Ym} z>!iEg`KX{LX^Ed}YF^jWJU(*d^_46C!GM9jT)S?)rz3+k E0Jl+U1poj5 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/paste.gif b/src/org/rapla/gui/images/eclipse-icons/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..39dd4d9d38aa85f9c4c9ff652c453c555b850980 GIT binary patch literal 605 zcmZ?wbhEHb6krfwc*el+?fb9KUw^evS=T;g?WeE5fBgI%SGG8}Wo>-%w1nbmg-r|E zr>?vI;>V*`Ki+@-_3qQp#_4++rfg}PvSs4Z<4qG+wNG6;effbI%MbL;-q1T^)%sm$ z?!EZ&?Cp=w-+uSZShWts{r>RPk4LY6y!!C-{>$%=UVncIlKnMl_Og2~zfYR8?9;bj zs}ElJ`s3HE`3q+*Sh#S>oE0mkuU|W9_m-}08~Qe^ne^a9|E;|>pN&Uz=|bP9i+x|N&is6J)|Z=0zuevM_2I6sPY!)NTKMTi<>xcapD*-%xia(f zm04eJEd6q0>DRj(zCGOa?eU>+PY!*1cH+jmoHHv*FRZD!vZ4Cin#!ZI5)aQxIk&Rx z_@bgyOG_@Vt2#J4=g7SLeKWGxHU_P43ES8iv$;2U&$O(q6VjhtJ9g#Z`v3p`Gf)f^ zf3h$#Fk~|5fJ_3#2?P7ChRmksme#gR2^}4Y_7)L&c`133_VkDdE^#q2ajwLO^p>z7 zP9Y(|WkMW5;fsRSZ`c^p5*rxc8fd(0cVtVbi;KUDG3!xQbCZ@RXTLKhy25M>W+$3s ze0-gpOl4WL)zuk|nxh@P9lQ+rgaz2y_zj!m?d?204U~WWGH8yovGtg+=fQzD|i zHo=}anS3p!hc%{&IIfR8zMxCVtzYQNbl$>m*~Eu!D7PV|`Vl63Xgs?a~Nt_M=F~va6HM0uvY~7kQp@7bq5^q@_?VsHrC* F06Xi>WHd=(Ze15;Qy1mX8t2lT^ zHOHgY9FJamJZkN+sI|wVk6ueSb}ixP)r4bLfn?%^+sU^crQUj&`rv8W|Ns9PC;*B- zSr{1@v>9|jW`O*}z!rUAYJrE2RKG`JYNRKhwpQrnor{(Ph`sVEnyR2Kc;c~(o$WdP zMb0Wl6K^dQ-0hgs;>-jdR^IkRnBPS>u2 zzP$y#dx|F>sGEJdZuY5(OOHQ%_4C==pYin@GTOHnPuyQR`C#3gQ`=8I*?#izoRxcz zUVd@(^7Grzf82id{m%0rm+!uL@apH&w?AKh{Pp3>uWctEZ$I_;=#>{&?!9^T?&te2 zzrTF{ee}xn%lFV{=a*UU2JB&6D$UFRYIK|NlS300G6H zEQ|~c;S4$;`$2KSz<#hHys5dRwKb@tv#rJ7mAyYKAhLKw;#Wwi3z_I zzi+pXu>v<2Cx@|j3!@sdmy(gak&>m6C$k!3xSEHDo#E=W9Ex^F)WTKWU3m3%`S|qp z__UndWW!|~oY`2I*qB&(cvzjCrNgBREG%rl*cupowUr82F}KmS$>WIG*u?4}Cb=$Q z#l%Hz&TSeJw=yaocCm6R>x8T*n0Tn8S6nxS)8OIZPGL3MB_@`NH#|556;8A$G%h=n J(8$1G4FI010%8CF literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/radio.gif b/src/org/rapla/gui/images/eclipse-icons/radio.gif new file mode 100644 index 0000000000000000000000000000000000000000..7c3356ca33561941f3ec8bd8d7bcd90d7aca192f GIT binary patch literal 187 zcmZ?wbhEHb6krfwIKsfN`oy7#SzO^W*du0g)~&N|+~{1r+H%6q$jap=9UHtl)_Wbh zwsh~gsi$tN-gUfp*Rj6m&o4fEdhz+=^KW0>x_f=k=l4%Oy?gTi|9=J?K=CIFBLjmt zgAPa@WG4fw#RJv8l+1YMuQ!;$7k V0WSg=S{MpbEB8Mz&}Lz<1^|?nNoD{5 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/refresh.gif b/src/org/rapla/gui/images/eclipse-icons/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..2139781f12fbfb5b3d13a4172b53a2a15c424d4c GIT binary patch literal 217 zcmZ?wbhEHb6krfwXpv+Pw&xRZ;um!jknj_f3=)!#5Rr}&QOS`}%aco67@xT~DSJsu z;mYjN)%j&>3o6zX)oduM+gMS*xvG78W6$pPDF^ze9h|u0%#tlvHZouXia%Kx85ral zbU>0II~iER9;o-FWKL=;oW-_mU2?amiH}cMp6L-Qn<)tejS-we0tXE_xmB3t)kD5` zbuu($pZRJS6Q`c9S~{`8yUinYZ<Ew4RM~ChuP`<3xJx%B+Sp`K{~Ax;NKM z+|e|BZ|B^Dy$g@DOoEfOLTT#K6{aU`Bz54qxJl zB|@GpTjyQSSo6|If~%!bfuX>+fBlAvKcbsVUTm4=8k1@Bp`yk$BvY-AEqS4bf{m7o zrj)XDt5U17vZjknd1ZAihrEo7sFZ?&?95rSL|sJ6g}6D{6_=}sxClzAimPr=lTcF? dbPViCtV#GtN}CUpjiL_ literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/save.gif b/src/org/rapla/gui/images/eclipse-icons/save.gif new file mode 100644 index 0000000000000000000000000000000000000000..499dd0ca6021c351c641053be30eecb5b4a7e7e8 GIT binary patch literal 639 zcmZ?wbhEHb6krfwc*el+6w~t;=?ud9vy7?cE^q z*1q%4_Md-x_|o&km!6%t_VVPl7w2!kK6mTY)%$O+-hXrZ@w-PaKBPA<&u(2-(6RIc zNcPq9H=oX5zOnP@<=ao*J$&)u*_+SB-Al@Q7r*)NC8Bg+ zz;2_n+r|KMbN2{G6a4_&{kGN)4gvc5juAGR#sRMOu1@w&t^vlzRuN`KMgigX?uQ4k zYgk5@s;SFPcrC52W*VWRCnlyRuKMMRsEVpigru?tONzsU2OVNcZfg!)N^s&3;9>A! zDQIQv=+@exGeO}YGc&uwQjf$B2b)>gB6wUn7Bn7go*uf&AmXGW<1{9LBBLK|iF{>@g$ZTe-g{Fpkur7MvwUbEG$6sEqLS8+g`iV!qwyRD35-;MB0perhEzk zlU^jc1o{+wCWA!H9?Yd&paXuKEo03Gay1y z&`g?;%Sb2&svJ-|phU<-nLxOVDGZs9;cK&4WpAhpn`)G6pxn34GV ze^C6h+&CE=pAKHzZ{M8y_A7s2w>yVjRQzpCA#{e;(3r_Al>Hi=#j*9y8V=F)%(;aN zb93|742rXhcelLfU2kV|F&m>?ZYi^Td8u$Q_c?Z}yYAkeyIXY$?mWZ27r5QH_pNz= zyFGl+Tqn-Medmj_-*iZ2yH9guR6Mg}Iqp8iGJ$6m*AGeuaZPW!k}UWCCK01kf}Jpcdz literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/tree_plus.gif b/src/org/rapla/gui/images/eclipse-icons/tree_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbad1682f77583c1adf5ba144fb82b643bd9b833 GIT binary patch literal 92 zcmZ?wbhEHb9guR6Mg}I4p8iGJ+cwN;I@MSmT~T=cTnR@I1A{dHd2AiZ literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/unchecked.gif b/src/org/rapla/gui/images/eclipse-icons/unchecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..f6b9f8a590c64c46ff86e92300a896154d0db416 GIT binary patch literal 148 zcmZ?wbhEHb6krfw*v!DtJ#F>RzyGg({{Q;t|Bt`_zxnn5-S7XO|NQ^<_y4c||Ns04 z0R|+X_>+Z^fq|Pr2P6hEgMr1d;H2m3y<#uUnzA}+^c_&=$(S`wIAV{%8LtJ2_rLFH qaC!gR>O!K23L9(3lAuZ+i}~l1lf0J7iQdRDyYVt<-ve(J25SJ2Iz)f~ literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/update.gif b/src/org/rapla/gui/images/eclipse-icons/update.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b724a6784910f0fb632fdf4df6b46a144555ad2 GIT binary patch literal 336 zcmZ?wbhEHb6krfwxXQr55IT)Fb|!D^4EglA3K?_dGv=CK0qT>Sf9>(8_Cdt1adlnL#q6WLrPyt`3!SEK0m zI?>&YVk`3mR^$n+DHL3hC%BBnnIz~g+PYz|NsAi&cp>2f3h$#FqkpufE0lI z#K4y8FgqYZi?`q7(Xkmen}SxJb-OAu&tZRT}eifdF;41SfF@krG-*ZXoxN^o#XigWm~3yMt<6%}OnWfKq<5fb8OD`Vm1V`gP- SG-KjoT;(U7vw8pD9sGYH>i^m7 z{}+n?Uupb*wdw!W=Kpu5|Gzi)|MMOH&*W4G3O9s`Hie5dhKhAYOSDHz^u$R`Ns&F; ztb4Lu|5%IOu~xma-9{(d4NrF&pY1liGsFJ=Y^MivoF6U?J>712zT5O-ui5SC4)jB<~Eh3Ck(|MR1tY+CYw%7@BZ0uHG65^MT;^$&kcave^ j77&vV;AWL^lhtKopEXNY&Ru%J!UdsAmM(L0WUvMR>~MP$ literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/eclipse-icons/yellow.gif b/src/org/rapla/gui/images/eclipse-icons/yellow.gif new file mode 100644 index 0000000000000000000000000000000000000000..563743d393f23c877d037a37348c9f799005aa88 GIT binary patch literal 181 zcmZ?wbhEHb6krfwIKsg2|I>#5FDL$gHF5i7)qQg`cF$1XJyZSvvl;8!CMAi|&nQV6n>fz?Ps zwJ#-eUdF0*IbH&~j0_v1I4TmBoId!c=P<+44xhfs9!jheEmS+E9{!nODz$daHc=)9 FYXDFdK#l+a literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/edit_window_small.png b/src/org/rapla/gui/images/edit_window_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7102177ec3880bf858e537969f429f2d74a00378 GIT binary patch literal 543 zcmV+)0^t3LP)&N0JdNQ9WMX`+=|8I7RG`Y zNHCH0UU%oS(B14VtKM*$Z{}pqeCIne>eJ@EeEqTpvDoM*5BF!pT13J>)e=5@CykH( zHvskW#gi*ujo!Ty|L%++SPMVyqu=XD5J0RD*^G|o&z=IPyU*tfICuh((&fe(j6lv1=>t->0+ z&Km*nJP$YhngG-3^uG@C5u|^EngE6d literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/empty.png b/src/org/rapla/gui/images/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..89ac9a7f26658ea6c7f2f9f506a583c44ebbed23 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3HE7boT!OQfx`y?k)`fL2$v|<&%LToCO|{ z#S9GGf*{OTpAtV2D9B#o>FdgVm79%+N2sf-?;=ph+SA1`MB;LC!UD^P?TNCUuV&W& z`+u_F@hjd(rZs=RPJMWJx4%nv!mt0&?LGaHjIJ1}oV}cVeO;dv)5 PV;DSL{an^LB{Ts5M`Sq) literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/error.png b/src/org/rapla/gui/images/error.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad474bd0061cf3fac28ec24d6f872558280ef08 GIT binary patch literal 1030 zcmV+h1o``kP)l-H{Z9;Z@*7?pYg$a&3+pI z-R7>D232!g0OBT#o&^o_xYKiPn>;swX;3wNE%{QYY&;TBJ~~?pW)f_f3n8z34&bay z!bz}Y07lxwmx@hoLA=Cg19%H;0FT?pS+Z_(*OWxe3I5#tY~*f1O(@U+lJejjDn%}Y z1Rzq9;a=60bo#brqnGm za_M}eBx4~dYDFj{5=Erc%5UX5hW9Gl?3cFz7*_7iJ=;u@7PZ~EoGN@N`ReD@r)4bw z!@a60i8vW44)Hj|11_tP@&Le>66MO3rC$kPQD92{#9Ro;qc|i5Qq;><+8F0(>{0-3 z`^;ITaz(AEiI`#KE)i;O_t$}23&26pFmC(IIS3jCpzrzsM4nAl5;4Tdg(Y94B!w)o zy7Jtw1ki2n8h}>&*f|IqW+R!ecY03w=*$^ukCFB=Fn!lg#*#3rf});7rsn|EJ3S{= zyxEurRWk{;O#0zjAYgl5&`=X`uH>+W6c6{RW>YIh+9woH(2A0XE&J0Jc#@a+wAL*9 zY+TFNNJ%0jpeSft>RPM-#polCNJ;!mp7Y1GI#BQQoK#{LkJqMFjFaByVg78a?S^nk z(vq;cVA&6ETnpkeBJQ;R$km2iUQiQO1<_vSh@i6F-|6H_4mrIbLh&dLld?-9rBJRU z6cFCX)^Y;4$oj1ah1Gnp#v`YzUGIMZP(C_y`mRq&#C$@8FXPPhlq-4u#cuAO)ZBl? z^-eES#6J@;O3SZYnGyA!0RS>bENIJtg0}yJZvl`zOFU$qm^+5UUw$wTzkQO8$FGMB zP6q(|^y_o#egQRAe0umDC#@FUC}hX=@ptL~ls|vq05esv90>(in$sMB)2|!mN&gi9 z_bc1{ICwSp^7!=-fRk1$n>%0N-YPjxfsKXC-kUo-JKrBW_bS^ajKgg1#r{+N9-i{e z{y|oaa|Iu|@Me0scDuH7Ro*O8qbdbkrrX>#^-j;prGx+v8z0a0_r>vFYl+V!*fNVM z*=;sVZUA{>(cVYeBNUQxQss9JU>3;J_`hQHFT;YJ)nwH$Z~y=R07*qoM6N<$g5JH~ AGXMYp literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/exception.png b/src/org/rapla/gui/images/exception.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d2968b14e7af376ce01a60d1ce8078b4698c2e GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VXMsm#F#`kNVGw3Kp1&dmDCq0y z;uumf=j{bUJ_ZF27RP`8GjrB>OtD?K;KQp@A(P*q_f9)^*ekZj&+u)4PU6kQ>OQW5 zZh@S$`M3R3JSs5Dc2a=U^nfZ(tKU+bclYSZ`s==DnB}qxXfT7PtDnm{r-UW|`>rwr literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/filter.png b/src/org/rapla/gui/images/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..43fe182b3747d069453a404c30c4dcf4af2e8697 GIT binary patch literal 450 zcmV;z0X_bSP)e>aWTXHp{=suZe&AkGEF$w}OtL>A}&r2 zf{P+Wupok#(m`8aG&Ht<2d%U=Y2(@Mx#w}uRU$$g$(a?AhJ!DZhSG%E?Xmi$M1=AA zRcUDkYGVtPFns;u)CsxIXt_hIhQsAqUa9!prX<$az?$%H_Q2=WIqp#o1&A@V1VC)> zAdvZEcN>7$yOZw;L*a-_F6>abzX%jyXR;Je_Yo1L1B6YBM!kle$p)T~j;4U0PXrh- zN5x4mlD2318Xqb*IE6eSq5!n^MfK%LIfeYd=1y~006;8mQYshvwuhot7pHd~-rs6U zk0gcEY@qg@7XYYmoKpGPvwhgGdU*XW;Z`4&9xX(ODbx2aYZj79uojs sZrw*7FyKG%o*<%<)5{`F>EgV!U+Rj4q+kUh#Q*>R07*qoM6N<$f@a#iUjP6A literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/green.png b/src/org/rapla/gui/images/green.png new file mode 100644 index 0000000000000000000000000000000000000000..a4450c1c39cd0d33ebacf80b698f66f06f7a22d3 GIT binary patch literal 433 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 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/list.png b/src/org/rapla/gui/images/list.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd3d1e8f0994e5c11cddd70764fed19b1ca123c GIT binary patch literal 428 zcmV;d0aN~oP) z+qONo==Yd1o8Y?cPf{$@OF015>wT@4aq+tRapWmxq?7))A!lDsS?0Fue(KD&k zN~o~$*rVTnB9mD|0M%9*mQ!E~7y@J1KDp$D=ateJZs!6XOSv#HRt1hv1+5{ZRb*PCo&n WsO_RNU9J280000b@?P)2NQCF@k-K*Q6EB`>Dglel1MEncJ zf*TjoV(G@J)Kx@^O+zv!8EX()8|y;3?gy`_|yxKR7!2sfA3~1(Z@EBJ%3x3$ZLq+N)ZvN-md^Cy&#jwRLDJEgJ+u zK%ubB>dFe&uHOW}w(SEiG;1GLxqI(Eh3)T*j$J}TR0p8hbTJHr?CWJl&z%LJ|3rjh zvCN&B8TNgbQZXL_BHco8I+0*Fev+x_sc`meaRJ$P@qHI0=oB4#;Cot@mKMbKov>YJ zPh4kD((`jtHg;s|+t<*84#4xLi{kr^Xsa%sYl~wy#B(gsRzu3Ayrk#nWame&yNPeI zS;ogkP)F7vLBO%TzJt^$`j1E0%9og!xZ3)Rz-+ht_iAAFpZvPNF=QyKolyJF00000 LNkvXXu0mjfAsh(0 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/new_repeating.gif b/src/org/rapla/gui/images/new_repeating.gif new file mode 100644 index 0000000000000000000000000000000000000000..2d6350c40c2e413f63f66717cb7469c2057f8a2b GIT binary patch literal 570 zcmZ?wbhEHb6krfwIOfZsAE#xIpyOTP8PXCE(HK!x>|YH+0o5h`)g=M-C4P0Ke$C~+ zk=>!uePQiYK0UQwy|rEmlcOfqdrWU~%b1pxF(Wx+R?^&7*X)^Txzmd?<|Quba4wi# zy1dJ2dAHM=9*4rk*+q+UH}uRr{>vuZ}) z+R0rzT6=eP%-lMA?xuBDHf3DdlzDYi=7vLuHyzq{Yj4fQqlY&i+q3QX=?5qJ&)j@` z_2Hvy4}s*nTTj2-dH((G^Y8aw{CN24$Ey!N-+uh|_S3HqUw(i3`uoSvKRYKPHt70KF!d^ z!dRhIZo0d+q@JCpe5=fK9W4VzQCFE(2@fwfD?V{%X%~rB5jQV;O>;&g7FUs0VJ|f) zFf4u_bxCyDx`7I;J! zGca%qf-qx!O8i8iAbW|YuPggy9yS(zy+XCuO+cZgo-U3d6?0+(4EYWj@Yu93%zm9` zv*4Am*1{#FXaN8K literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/option_small.png b/src/org/rapla/gui/images/option_small.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc272e6a4e2eaf7f2e1db6417d466c999c3ce24 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg)7CvqfWyN>*DuF`ZJY5_^EKV<- zY~OvzLEz~9BbSX8BAz_{;rT^sW5*I(fkoH46c>oGceYMAW`DJI<72)aM&Cz9V(kKF z-NgTvZhm8P@Agf_v}4+PQoA=kE{wdqUhhh;(V27XqMR8wA8nIlDBG_olOCBdIYltW z{Dkba-trl9)$W!SEWDn5{gdCL`j`RKIEAASV9P!al)JDKah{ZIZiZwuxJi?en&EmxQe P3;_mDS3j3^P6-%w1nbmg-r|E zr>?vI;>V*`Ki+@-_3qQp#_4++rfg}PvSs4Z<4qG+wNG6;effbI%MbL;-q1T^)%sm$ z?!EZ&?Cp=w-+uSZShWts{r>RPk4LY6y!!C-{>$%=UVncIlKnMl_Og2~zfYR8?9;bj zs}ElJ`s3HE`3q+*Sh#S>oE0mkuU|W9_m-}08~Qe^ne^a9|E;|>pN&Uz=|bP9i+x|N&is6J)|Z=0zuevM_2I6sPY!)NTKMTi<>xcapD*-%xia(f zm04eJEd6q0>DRj(zCGOa?eU>+PY!*1cH+jmoHHv*FRZD!vZ4Cin#!ZI5)aQxIk&Rx z_@bgyOG_@Vt2#J4=g7SLeKWGxHU_P43ES8iv$;2U&$O(q6VjhtJ9g#Z`v24bivL8N zi&7IyQd1PlGfOfQLNZbn+&z5*7!-f9FfuUIGw3h?0VuK<*ta&+H#N7kw$)4M=t#7; zh{(%J$&0k7M?`Rmi;0PIB}SyTgavU52?;I};s^>~6tsTB#*miSzyQ}k<6XNWTS8r2 z{9TM$kFuJZv_v`koiWk9plf!bImXA=$;njqjw~aiQFFATw}Y1<-%CDze#7Q?dpl20 z1Lbeu4VvR@Y&|^mWtfT#5)U0!Ft9F>xwufN<*)#+)B=f+v@SszOPib?P)1i1pQX=E!EV3=R$ga2PoUG8_(*&*v!=3U2Z+az_Rtc|Oum0!R5`}L>`zEt%Q$zFgO=g)InrGleH>I^w zP#2Lz*pP+WPrJ5t;QHeZEfpmMO;P~@9DDVCTVMo|AtSU5unH zK~yNurIRsB13?sozdc0^IS3Z_1JWphSXjlv&PJ?6QrlVh6EuazT`!VClwe^WFr1B` zNC-#}3o9X5q>~s@C`pK3ZlA>w&FP&=+-jM(^JZuEt%4m!UE}d3Cjtu#sW9LGSU@wr z>F0T4m?&Z+LbLkfb8>SebHz0|sO-vRtIzY{>bEw=FcETq&6^Jw-6F?}+vK0_==+e` zJc}dqK~yS-r-h7>VdL6n%bLg266x6p1)y^1TABJo!7cSF^d=zRxaF~4kl@-*RA3Gw zpi}^^oG(i@l?C9{>#*Or;(ooPepCj~wK5t=Oj>9St+6Uo$xdYM#=y%!6<{`zByFY9 zfa%Rd`u(CD6uZ+4e;%69JGW`$;*K_+CT6f%LhW(-D_Q;LW4r@G|7M?-^&uDl0000< KMNUMnLSTX-Y_I+R literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/persons_yellow.png b/src/org/rapla/gui/images/persons_yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea2a4fd43aaf1881bb6900f75b09cd9d790e0c5 GIT binary patch literal 414 zcmV;P0b%}$P)=6N6a!*$MM`@S3kwl!{RcMjA9zIqIc&tnN^8MCa48hT zBZy*WVMKyPtt?Um;Z!htc@{@Br*{(KR?EDdnSHZw6>Ku-8cHrXF<8_{MF9sO3pA5O zzt0=JM3FKgG%ueujjJu$D=o_HMM1pB4_@|He#scUM6iJ}S_@BiXRK`$@s4lMfncsz zlE{1!m9l9E!sOHphr2}-|-6lT^! zfZ@?xY`;I8!{VDY*Z0sw-r2{;#T{%sGi1WeDvCZt)PFw4C%$rLM%e{SV*mgE07*qo IM6N<$f~nb`X#fBK literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/rapla_128x128.ico b/src/org/rapla/gui/images/rapla_128x128.ico new file mode 100644 index 0000000000000000000000000000000000000000..63f32c1f24629f7acdd17310836b906adb486a3b GIT binary patch literal 67646 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 bCXD;M%V*zW>!w-SMEkP6TjKpE{ki{tDh5BX literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/rapla_16x16.ico b/src/org/rapla/gui/images/rapla_16x16.ico new file mode 100644 index 0000000000000000000000000000000000000000..4bf9bb2318d5bce2e0bdede9f2823d23143a0d69 GIT binary patch literal 1150 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 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/rapla_small.png b/src/org/rapla/gui/images/rapla_small.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8b8b605c48b8d5d61f8a7baf6abf2e047215a2 GIT binary patch literal 5303 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 JPDHLkV1k*NA7B6g literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/refresh.png b/src/org/rapla/gui/images/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..60db566202614e7367195a2aa5707c0130ebe11f GIT binary patch literal 561 zcmV-10?z%3P)pGfD3zt44^_TJb+%IQjG>sVHZS-RPhLQ;RQT`g#dmlq;Pd#;U_{rR6_kB$N>n; zyjS-e9$pEQ5)p=kQmR%^L{!uK{m|sIP0(syjqSiJ2w(=B;I!SAaz#WTBBKsKW}856 zeD(NXTVUH`0MGNxuPvvyfV}AOc(lfS-#6EzUO!2a zgfI+wczCSWXcEw5Dg1AqihwF{RfLTk8n!?wCFk>*%jHswrDFezIDvtT7wz+K^X8Kza2!xriv&VH|KJcfnWvQ-l%Fm3%&*Tj!e|$s+Pz zy3ff0CXK$Fc z5a=wRy80Y#UHF|2#Bpp^zX@)mh{fWaIF82?kY$-62Uu;Jb4C$RgpIrnItj>+SvKs5NSG~1)AUCKC}7yH)0X%Lk;qiuo*%K^00000NkvXXu0mjfY&!K? literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/repeating.png b/src/org/rapla/gui/images/repeating.png new file mode 100644 index 0000000000000000000000000000000000000000..a4edf854212af93125bf7e303b747b5d51832800 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE=%eIs6b<2Q{O2wPA`WF-_p00i_>zopr0FJA? A4*&oF literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/resources.png b/src/org/rapla/gui/images/resources.png new file mode 100644 index 0000000000000000000000000000000000000000..81fd2e9b4aade73d2450e266a1a374285cff9ebb GIT binary patch literal 1397 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 AjQ{`u literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/tafel_old.png b/src/org/rapla/gui/images/tafel_old.png new file mode 100644 index 0000000000000000000000000000000000000000..e0645a594f47ccce560d8cb76a70c7fbf0d82b8b GIT binary patch literal 5701 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 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/tafel_tocompare.png b/src/org/rapla/gui/images/tafel_tocompare.png new file mode 100644 index 0000000000000000000000000000000000000000..e418366e8267e9bb9d3fc497227d1f0741e79d3e GIT binary patch literal 39932 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%0A#L?_TTlYl5yIS!Gh#W#uq!rrnoh3uBc3fSW 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 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/taken.png b/src/org/rapla/gui/images/taken.png new file mode 100644 index 0000000000000000000000000000000000000000..b89eed1a80c9eb87952d93b13e8e5c90d5318c17 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u_bxCyDx`7I;J! zGca%qfiUBxyLEqnf=Qk(jv*CudiyW(HYo78thbo7Yogy%k4J8^o`)|LaLOr?-|{r} zJj36WCQ@-}txPZC%oto#J8$^!y?=g}vghT>2-lLVX?9!r#16Z>;%OB-yko9@h~uKt l?B~mW?4G@0`Kx1rdsn-4cpJ01l>%*J@O1TaS?83{1OUffMl%2a literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/tree.png b/src/org/rapla/gui/images/tree.png new file mode 100644 index 0000000000000000000000000000000000000000..4a96c6caa8f3634f849b68d809f290afc5d5b22b GIT binary patch literal 388 zcmV-~0ek+5P)zqu1gl`2cQot6?vs+3x~0kKlBu@JW)R&F7XK)7k#z+H%I$j##% zi;%hIfg<@~iW$!TIA=HpP&U8==(_IT#J=zGeV^SHcbC9gOO|B-q-nY+QdM^VM1Hv+7A)KrfEa7Q++TQAbwaVd9>E>eQf}O_FV}5XK`mOeJnGl7d#tpG%U59)0E}MqXtORVcx8 z2haT-^k}V}2D%vKSdO{mG0vV#BAtI5^z9WtXazJg57g2NsY)_D02tWMB==7B&NTJ0 zmxI~38_g##cizFs5CzNwBs~Ulh8uP`pU zIrKzQS-|+D4ExRf7b6mgS}emhMQiErzJ!tHq5`jL0|5F5Z`{%^7x2XQX4y1_00000 LNkvXXu0mjfXG)gx literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/users.png b/src/org/rapla/gui/images/users.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e408ad9be476d701c553c819006f65e6afc277 GIT binary patch literal 1231 zcmV;=1Tg!FP)8>B}zyrhw(><{Sa)onyxD`n=fN z<#2D8Zm+-LeERcuOGI$RoTv2Ktg(D5DuDC9{{0xt7`;Yaj0UI&=fOLCh>t)&eY4cD ztS+}^UC*T6T)KRU(HbAZy2ia9p#RTTn>5zb6oBFVbPZHEPnuYozx=k2REsAn3xLs@ z5F;T*VmZg?Dqv#_)|jQO-kkmT^(NRnF97JYn*hjaBRt9K!CaYhKU-9OQau1gP%MfP zwL1Uw*=XGN&z~(_6t3$#q={V}Hl%4v2!RknMdQm|Y}!B&W|J|-Xs&K&ocFpYr9mm? zlMzZQfZFZ7TYB#|>R5aK{Mqt>J^?No2lRS9>h=0YRCm{Bv^#qsAQBl4@7O!)A;lPN zGejb>TrgV{v<^;~&*yYHoei+9r$E>3?k9l&v{pz6NDM@m<9#5;$oPJO1djyAY*BEZ z3n2uW%_jYRe`69Ue|kai1xCS%HDoKG?&&46DvULeP7=_I8ChZ(Pv=BajkO{sOeXj1 zpt3AODTQ;6ot+&fw-=AnSFs>V%(}S6_`1q83L-+MzTlt*Z|<5L8Ao1}Yvn1Wu-0;) zdqf0dA}1%W@ZO_}5e*G!!=fmcKyAw!vz9!-WL{8s;i6k7v#^~+OjUG-GtcGQF{7Dh zGMUtjF|^xlvMeJ>64G?1Vxt(ba6(bKO2t0le5i0_)zqaI+PfXJQlQ}Vq2}!El*YEg z7=zdr!{Hf4Q7|5lmxI9oYb^%{2Uu$n5oW^y+l?m8%rKo!*L?|~qOxf5D^fK|t@+(wAyi@k@ID~X1B!ZQfrv1jPS=-PYblBX=N#5r{+yI(t0iq)MYwf zaCe_qjp&5i@dTwFXO0Ls?@>ylltM&s&aH%zu7MYe1&v07vMf1hB}nkRIqp!F4kbYL z_J(k9h}N1kO)D8&gGLi$Bh(It81@?q7ZpVrNwtus z3AMk!|F#;M0>e(1^YimnCh`%bpZfNxedio*c8dt4iN#ej5;YHzC@>8|rYnm2{XRQ8 tJ8Qa>QX3ckueE7n!W8E{?HAR*&41T)Gnv4S!rK4<002ovPDHLkV1mW3I)(rM literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/images/yellow.png b/src/org/rapla/gui/images/yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..88a2047644f77063d2379bef4e2c3d8964d4421e GIT binary patch literal 434 zcmV;j0ZsmiP)pK%%8Z=o|D2qL0v4(9}?f+^8=QZ9;@b4UH)n2)+2i6}{g3{2Q#{ zjK9N=qeKLN`}8b*r3yS#Pb$w$1!Lf5(F?DDgY9Rb*x&g_NO=e{Dgdd2K4&@z22N|H=x@M z$mRCX)oN9>+ij`W&#~>r*XdM<#Vn#x#rF0g#o~@q|G{0?71zC_(`l1PSd`0~R4NB- cZS5+6Ux2WqhNLS>h5!Hn07*qoM6N<$f>>R^2mk;8 literal 0 HcmV?d00001 diff --git a/src/org/rapla/gui/internal/CalendarEditor.java b/src/org/rapla/gui/internal/CalendarEditor.java new file mode 100644 index 0000000..48d69ca --- /dev/null +++ b/src/org/rapla/gui/internal/CalendarEditor.java @@ -0,0 +1,198 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal; + +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JSplitPane; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.rapla.facade.ModificationEvent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.action.ShowConflictsAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.internal.splitpanes.HolidaySelectionPane; +import org.rapla.gui.internal.splitpanes.RaplaConflictSelectionPane; +import org.rapla.gui.internal.splitpanes.RaplaResourceSelectionPane; +import org.rapla.gui.toolkit.RaplaWidget; + +final public class CalendarEditor extends RaplaGUIComponent implements RaplaWidget { + JSplitPane content = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + final private RaplaSelectionPane resourceSelection; + //final private RaplaSelectionPane holidaySelection; + final private SavedCalendarView savedViews; + final private RaplaSelectionPane conflictsView; + final public MultiCalendarView calendarContainer; + private boolean clearingHolidaySelection; + private boolean clearingConflictSelection; + private boolean clearingResourceSelection; + class TreeListener implements ChangeListener + { + + + public void stateChanged(ChangeEvent e) { + clearConflictSelection(); + + } + + } + public CalendarEditor(RaplaContext context, CalendarSelectionModel model) throws RaplaException { + super(context); + final ChangeListener treeListener = new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + clearConflictSelection(); + } + }; + + calendarContainer = new MultiCalendarView(getContext(), model); + resourceSelection = new RaplaResourceSelectionPane(context, calendarContainer, model); + resourceSelection.getTreeSelection().addChangeListener( treeListener); + /* + holidaySelection = new HolidaySelectionPane(context, calendarContainer, model); + holidaySelection.getTreeSelection().addChangeListener( treeListener);*/ + //selection.add(getI18n().getString("resources"), resourcesView.getComponent()); +// if (this.isAdmin()) { +// adminView = new RaplaSelectionPane(context, calendarContainer, model) +// { +// protected MenuContext createMenuContext(Point p, Object obj) { +// final MenuContext menuContext = super.createMenuContext(p, obj); +// menuContext.put("adminpane", "true"); +// return menuContext; +// }; +// }; +// adminView.getTreeSelection().addChangeListener( treeListener); +// selection.add(getI18n().getString("admin"), adminView.getComponent()); +// selection.setSelectedComponent(adminView.getComponent()); +// content.setDividerLocation(320); +// } else { + content.setDividerLocation(285); +// } + +// selection.addChangeListener(new ChangeListener() { +// public void stateChanged(ChangeEvent arg0) { +// +// clearConflictSelection(); +// +// } +// +// +// }); + + conflictsView = new RaplaConflictSelectionPane(context, calendarContainer, model); + conflictsView.getTreeSelection().addChangeListener( new ChangeListener() { + + + public void stateChanged(ChangeEvent e) + { + if (clearingConflictSelection) + { + return; + } + clearingResourceSelection = true; + try + { +// final Component selectedComponent = selection.getSelectedComponent(); +// if (selectedComponent == resourceSelection.getComponent()) +// { + resourceSelection.clearSelection(); +// } +// +// if ( adminView != null && selectedComponent == adminView.getComponent()) +// { +// adminView.clearSelection(); +// } + + } + finally + { + clearingResourceSelection = false; + } + } + }); + JPanel left = new JPanel(new GridBagLayout()); + GridBagConstraints c = new GridBagConstraints(); + c.gridheight = 1; + c.gridx = 1; + c.gridy = 1; + c.weightx = 1; + c.weighty = 0; + c.fill = GridBagConstraints.HORIZONTAL; + savedViews = new SavedCalendarView(context, calendarContainer, resourceSelection,model); + left.add(savedViews.getComponent(), c); + c.fill = GridBagConstraints.BOTH; + c.gridy = 2; + c.weightx = 1; + c.weighty = 2.5; + left.add(resourceSelection.getComponent(), c); + c.weighty = 1.0; + c.gridy = 3; + left.add(conflictsView.getComponent(), c); + + content.setLeftComponent(left); + content.setRightComponent(calendarContainer.getComponent()); + updateConflicts(); + } + + private void clearConflictSelection() { + if ( clearingResourceSelection) + { + return; + } + clearingConflictSelection = true; + try + { + conflictsView.clearSelection(); + + + } + finally + { + clearingConflictSelection = false; + } + + } + + public void dataChanged(ModificationEvent evt) throws RaplaException { + resourceSelection.dataChanged(evt); + calendarContainer.update(); +// if (adminView != null) { +// adminView.updateTree(); +// } + savedViews.update(); + conflictsView.updateTree(); + updateConflicts(); + } + + private void updateConflicts() throws RaplaException { + boolean showConflicts = getClientFacade().getPreferences().getEntryAsBoolean( ShowConflictsAction.CONFIG_ENTRY, true); + conflictsView.getComponent().setVisible( showConflicts); + } + + public void start() throws RaplaException { + calendarContainer.getSelectedCalendar().scrollToStart(); + } + + public JComponent getComponent() { + return content; + } + +} diff --git a/src/org/rapla/gui/internal/CalendarOption.java b/src/org/rapla/gui/internal/CalendarOption.java new file mode 100644 index 0000000..e27f850 --- /dev/null +++ b/src/org/rapla/gui/internal/CalendarOption.java @@ -0,0 +1,333 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Calendar; +import java.util.Locale; + +import javax.swing.BoxLayout; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; + +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.components.calendar.RaplaTime; +import org.rapla.components.calendarview.WeekdayMapper; +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.entities.domain.RepeatingEnding; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarOptions; +import org.rapla.gui.CalendarOptionsImpl; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.NamedListCellRenderer; + +public class CalendarOption extends RaplaGUIComponent implements OptionPanel +{ + JPanel panel = new JPanel(); + JCheckBox showExceptionsField = new JCheckBox(); + JComboBox colorBlocks = new JComboBox( new String[] { + CalendarOptionsImpl.COLOR_RESOURCES + , CalendarOptionsImpl.COLOR_EVENTS + } + ); + RaplaNumber rowsPerHourField = new RaplaNumber(new Double(1),new Double(1),new Double(12), false); + Preferences preferences; + CalendarOptions options; + RaplaTime worktimeStart; + RaplaTime worktimeEnd; + JPanel excludeDaysPanel = new JPanel(); + JCheckBox[] box = new JCheckBox[7]; + WeekdayMapper mapper; + + + JCheckBox showConflictsField = new JCheckBox(); + + JComboBox repeatingDuration = new JComboBox( new RepeatingEnding[] { + RepeatingEnding.FOREVEVER + , RepeatingEnding.N_TIMES + + // , CalendarOptionsImpl.REPEATING_UNTIL + }); + RaplaNumber nTimesField = new RaplaNumber(new Double(1),new Double(1),new Double(365), false); + + + + JComboBox repeatingType = new JComboBox( new RepeatingType[] { + RepeatingType.DAILY, + RepeatingType.WEEKLY, + RepeatingType.MONTHLY, + RepeatingType.YEARLY + }); + + JComboBox eventTypeSelector; + + public CalendarOption(RaplaContext sm) throws RaplaException { + super( sm); + mapper = new WeekdayMapper(getLocale()); + worktimeStart = createRaplaTime(); + worktimeStart.setRowsPerHour( 1 ); + worktimeEnd = createRaplaTime(); + worktimeEnd.setRowsPerHour( 1 ); + double pre = TableLayout.PREFERRED; + double fill = TableLayout.FILL; + // rows = 8 columns = 4 + panel.setLayout( new TableLayout(new double[][] {{pre, 5, pre, 5 , pre, 5, pre}, {pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,pre,5,fill}})); + + showExceptionsField.setText(""); + panel.add( new JLabel(getString("rows_per_hour")),"0,0" ); + panel.add( rowsPerHourField,"2,0"); + panel.add( new JLabel(getString("start_time")),"0,2" ); + panel.add( worktimeStart, "2,2"); + panel.add( new JLabel(getString("end_time")),"0,4" ); + panel.add( worktimeEnd,"2,4"); + panel.add( new JLabel(getString("color")),"0,6" ); + panel.add( colorBlocks,"2,6"); + + ListRenderer listRenderer = new ListRenderer(); + + colorBlocks.setRenderer( listRenderer ); + showExceptionsField.setText(""); + panel.add( new JLabel(getString("display_exceptions")),"0,8"); + panel.add( showExceptionsField,"2,8"); + +// BJO 00000030 +// showConflictsField.setText(""); // +// panel.add( new JLabel(getString("show_conflicts")),"0,10"); +// panel.add( showConflictsField,"2,10"); +// BJO 00000030 +// BJO 00000079 +// show_tips.setText(""); // +// panel.add( new JLabel(getString("show_tips")),"0,12"); +// panel.add( show_tips,"2,12"); +// BJO 00000079 +// BJO 00000012 + // panel.add( new JLabel(getString("repeating")),"0,16" ); +// BJO 00000012 +// BJO 00000052 +// panel.add( repeatingType,"2,16"); + repeatingType.setRenderer( listRenderer ); +// BJO 00000052 +// BJO 00000012 + // panel.add( repeatingDuration,"4,16"); + // panel.add( nTimesField,"6,16"); + + repeatingDuration.setRenderer( listRenderer ); + ActionListener repeatingListener = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + if(repeatingDuration.getSelectedIndex()==0) + nTimesField.setEnabled(false); + else + nTimesField.setEnabled(true); + } + }; + repeatingDuration.addActionListener(repeatingListener); + +// BJO 00000063 + // panel.add( new JLabel(getString("reservation_type")),"0,18" ); + DynamicType[] types = getQuery().getDynamicTypes( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + eventTypeSelector = new JComboBox( types ); + // panel.add( eventTypeSelector,"2,18"); + eventTypeSelector.setRenderer(new NamedListCellRenderer(getI18n().getLocale())); + //eventTypeSelector.addActionListener( this ); +// BJO 00000063 + +// BJO 00000012 + panel.add( new JLabel(getString("exclude_days")),"0,22,l,t"); + panel.add( excludeDaysPanel,"2,22"); + excludeDaysPanel.setLayout( new BoxLayout( excludeDaysPanel,BoxLayout.Y_AXIS)); + for ( int i=0;i 0) + days.append(","); + days.append( mapper.dayForIndex( i )); + } + } + calendarOptions.addChild( rowsPerHour); + + excludeDays.setValue( days.toString()); + calendarOptions.addChild( excludeDays); + + preferences.putEntry( CalendarOptionsImpl.CALENDAR_OPTIONS,new RaplaConfiguration( calendarOptions)); + } + + + + private class ListRenderer extends DefaultListCellRenderer { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent(JList list,Object value, int index, boolean isSelected, boolean cellHasFocus) { + if ( value != null) { + setText(getString( value.toString())); + } + return this; + } + } +} \ No newline at end of file diff --git a/src/org/rapla/gui/internal/ConnectionOption.java b/src/org/rapla/gui/internal/ConnectionOption.java new file mode 100644 index 0000000..801cebc --- /dev/null +++ b/src/org/rapla/gui/internal/ConnectionOption.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; + +import java.util.Locale; + +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.facade.UpdateModule; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; + +public class ConnectionOption extends RaplaGUIComponent implements OptionPanel { + JPanel panel = new JPanel(); + RaplaNumber seconds = new RaplaNumber(new Double(10),new Double(10),null, false); + Preferences preferences; + + public ConnectionOption(RaplaContext sm) throws RaplaException { + super( sm); + seconds.getNumberField().setBlockStepSize( 60); + seconds.getNumberField().setStepSize( 10); + double pre = TableLayout.PREFERRED; + double fill = TableLayout.FILL; + panel.setLayout( new TableLayout(new double[][] {{pre, 5, pre,5, pre}, {pre,fill}})); + + panel.add( new JLabel(getString("refresh") + ": " + getI18n().format("interval.format", "","")),"0,0" ); + panel.add( seconds,"2,0"); + panel.add( new JLabel(getString("seconds")),"4,0" ); + + } + + public JComponent getComponent() { + return panel; + } + public String getName(Locale locale) { + return getString("connection"); + } + + public void setPreferences( Preferences preferences) { + this.preferences = preferences; + + } + + public void show() throws RaplaException { + int delay = preferences.getEntryAsInteger( UpdateModule.REFRESH_INTERVAL_ENTRY, 30000); + seconds.setNumber( new Long(delay / 1000)); + } + + public void commit() { + int delay = seconds.getNumber().intValue() * 1000; + preferences.putEntry( UpdateModule.REFRESH_INTERVAL_ENTRY, "" + delay ); + } + + +} diff --git a/src/org/rapla/gui/internal/LocaleOption.java b/src/org/rapla/gui/internal/LocaleOption.java new file mode 100644 index 0000000..58aaf59 --- /dev/null +++ b/src/org/rapla/gui/internal/LocaleOption.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; + +import java.util.Locale; + +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.rapla.client.internal.LanguageChooser; +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; + +public class LocaleOption extends RaplaGUIComponent implements OptionPanel { + JPanel panel = new JPanel(); + LanguageChooser languageChooser; + Preferences preferences; + + public LocaleOption(RaplaContext sm) throws RaplaException { + super( sm); + languageChooser= new LanguageChooser( getLogger(), getContext()); + + double pre = TableLayout.PREFERRED; + double fill = TableLayout.FILL; + panel.setLayout( new TableLayout(new double[][] {{pre, 5, pre,5, pre}, {pre,fill}})); + + panel.add( new JLabel(getString("language") + ": "),"0,0" ); + panel.add( languageChooser.getComponent(),"2,0"); + //panel.add( new JLabel(getString("seconds")),"4,0" ); + + } + + public JComponent getComponent() { + return panel; + } + public String getName(Locale locale) { + return getString("language"); + } + + public void setPreferences( Preferences preferences) { + this.preferences = preferences; + + } + + public void show() throws RaplaException { + String language = preferences.getEntryAsString( RaplaLocale.LANGUAGE_ENTRY,null); + languageChooser.setSelectedLanguage( language); + } + + public void commit() { + String language = languageChooser.getSelectedLanguage(); + preferences.putEntry( RaplaLocale.LANGUAGE_ENTRY,language ); + } + + +} diff --git a/src/org/rapla/gui/internal/MainFrame.java b/src/org/rapla/gui/internal/MainFrame.java new file mode 100644 index 0000000..b7d2fd1 --- /dev/null +++ b/src/org/rapla/gui/internal/MainFrame.java @@ -0,0 +1,257 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Window; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyVetoException; +import java.beans.VetoableChangeListener; + +import javax.swing.Box; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JMenuBar; +import javax.swing.JPanel; + +import org.rapla.client.ClientService; +import org.rapla.entities.User; +import org.rapla.facade.ModificationEvent; +import org.rapla.facade.ModificationListener; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.InternMenus; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.RaplaFrame; + + + +public class MainFrame extends RaplaGUIComponent + implements + ModificationListener +{ + RaplaMenuBar menuBar; + RaplaFrame frame = null; + Listener listener = new Listener(); + CalendarEditor cal; + JLabel statusBar = new JLabel(""); + public MainFrame(RaplaContext sm) throws RaplaException { + super(sm); + menuBar = new RaplaMenuBar(getContext()); + frame = (RaplaFrame) getService( ClientService.MAIN_COMPONENT ); + String title = getQuery().getPreferences( null ).getEntryAsString(RaplaStartOption.TITLE, getString("rapla.title")); + // CKO TODO Title should be set in config allong with the facade used + frame.setTitle(title ); + + getUpdateModule().addModificationListener(this); + CalendarSelectionModel model = (CalendarSelectionModel) getService( CalendarSelectionModel.ROLE); + cal = new CalendarEditor(sm,model); + + JMenuBar menuBar = (JMenuBar) getService( InternMenus.MENU_BAR); + menuBar.add(Box.createHorizontalGlue()); + menuBar.add(statusBar); + menuBar.add(Box.createHorizontalStrut(5)); + frame.setJMenuBar( menuBar ); + + getContentPane().setLayout( new BorderLayout() ); + // getContentPane().add ( statusBar, BorderLayout.SOUTH); + + getContentPane().add( cal.getComponent() , BorderLayout.CENTER ); + } + + public void show() throws RaplaException { + getLogger().debug("Creating Main-Frame"); + createFrame(); + //dataChanged(null); + setStatus(); + cal.start(); + frame.setIconImage(getI18n().getIcon("icon.rapla_small").getImage()); + frame.setVisible(true); + getFrameList().setMainWindow(frame); + } + + private JPanel getContentPane() { + return (JPanel) frame.getContentPane(); + } + + private void createFrame() { + Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + frame.setSize(new Dimension( + Math.min(dimension.width,1200) + ,Math.min(dimension.height-20,900) + ) + ); + + frame.addVetoableChangeListener(listener); + //statusBar.setBorder( BorderFactory.createEtchedBorder()); + } + + + class Listener implements VetoableChangeListener { + public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException { + if (shouldExit()) + close(); + else + throw new PropertyVetoException("Don't close",evt); + } + + } + + public Window getFrame() { + return frame; + } + + public JComponent getComponent() { + return (JComponent) frame.getContentPane(); + } + + public void dataChanged(ModificationEvent e) throws RaplaException { + cal.dataChanged( e ); + new StatusFader(statusBar).updateStatus(); + } + + private void setStatus() throws RaplaException{ + statusBar.setMaximumSize( new Dimension(400,20)); + final StatusFader runnable = new StatusFader(statusBar); + final Thread fadeThread = new Thread(runnable); + fadeThread.start(); + + } + + class StatusFader implements Runnable{ + JLabel label; + + StatusFader(JLabel label) + { + this.label=label; + } + + public void run() { + try { + + + { + User user = getUser(); + final boolean admin = user.isAdmin(); + String name = user.getName(); + if ( name == null || name.length() == 0 ) + { + name = user.getUsername(); + } + String message = getI18n().format("rapla.welcome",name); + if ( admin) + { + message = message + " " + getString("admin.login"); + } + + statusBar.setText(message); + fadeIn( statusBar ); + } + Thread.sleep(2000); + { + fadeOut( statusBar); + updateStatus(); + fadeIn( statusBar ); + } + } catch (InterruptedException ex) { + //Logger.getLogger(Fader.class.getName()).log(Level.SEVERE, null, ex); + } catch (RaplaException e) { + } + } + + public void updateStatus() throws RaplaException { + User user = getUser(); + final boolean admin = user.isAdmin(); + String message = + "" + + user.toString() + + "" + ; + statusBar.setText(message); + final Font boldFont = statusBar.getFont().deriveFont(Font.BOLD); + statusBar.setFont( boldFont); + if ( admin) + { + statusBar.setForeground( new Color(220,30,30)); + } + else + { + statusBar.setForeground( new Color(30,30,30) ); + } + } + + private void fadeIn(JLabel label) throws InterruptedException { + int alpha=0; + Color c = label.getForeground(); + while(alpha<=230){ + alpha+=25; + final Color color = new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha); + label.setForeground(color); + label.repaint(); + Thread.sleep(200); + } + } + + private void fadeOut(JLabel label) throws InterruptedException { + int alpha=250; + Color c = label.getForeground(); + while(alpha>0){ + alpha-=25; + final Color color = new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha); + label.setForeground(color); + label.repaint(); + Thread.sleep(200); + } + } + } + + protected boolean shouldExit() { + try { + DialogUI dlg = DialogUI.create(getContext() + ,frame.getRootPane() + ,true + ,getString("exit.title") + ,getString("exit.question") + ,new String[] { + getString("exit.ok") + ,getString("exit.abort") + } + ); + dlg.setIcon(getIcon("icon.question")); + //dlg.getButton(0).setIcon(getIcon("icon.confirm")); + dlg.getButton(0).setIcon(getIcon("icon.abort")); + dlg.setDefault(1); + dlg.start(); + return (dlg.getSelectedIndex() == 0); + } catch (RaplaException e) { + getLogger().error( e.getMessage(), e); + return true; + } + + } + + public void close() { + getUpdateModule().removeModificationListener(this); + frame.close(); + } + +} + + + + + diff --git a/src/org/rapla/gui/internal/MenuFactoryImpl.java b/src/org/rapla/gui/internal/MenuFactoryImpl.java new file mode 100644 index 0000000..10a1a25 --- /dev/null +++ b/src/org/rapla/gui/internal/MenuFactoryImpl.java @@ -0,0 +1,441 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; +import java.awt.Component; +import java.awt.Point; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import javax.swing.Action; +import javax.swing.JMenuItem; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.Category; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.facade.Conflict; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.MenuContext; +import org.rapla.gui.MenuFactory; +import org.rapla.gui.ObjectMenuFactory; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.ReservationWizard; +import org.rapla.gui.internal.action.DynamicTypeAction; +import org.rapla.gui.internal.action.HolidayAction; +import org.rapla.gui.internal.action.RaplaObjectAction; +import org.rapla.gui.internal.action.ReservationAction; +import org.rapla.gui.internal.action.user.PasswordChangeAction; +import org.rapla.gui.internal.action.user.UserAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.toolkit.MenuInterface; +import org.rapla.gui.toolkit.RaplaMenuItem; +import org.rapla.gui.toolkit.RaplaSeparator; +import org.rapla.plugin.RaplaExtensionPoints; + +public class MenuFactoryImpl extends RaplaGUIComponent implements MenuFactory +{ + public MenuInterface addReservationWizards( MenuInterface menu, MenuContext context, String afterId ) throws RaplaException + { + Component parent = context.getComponent(); + Object focusedObject = context.getFocusedObject(); + Point p = context.getPoint(); + Iterator it = getContainer().lookupServicesFor( RaplaExtensionPoints.RESERVATION_WIZARD_EXTENSION).values().iterator(); + while (it.hasNext()) + { + ReservationWizard wizard = (ReservationWizard) it.next(); + addReservationAction(menu,parent,p, afterId).setNew(wizard).changeObject( focusedObject ); + } + return menu; + } + + + public MenuFactoryImpl(RaplaContext sm) throws RaplaException { + super(sm); + } + + public MenuInterface addNew( MenuInterface menu, MenuContext context,String afterId ) throws RaplaException + { + // Do nothing if the user can't allocate anything + if (!canUserAllocateSomething( getUser()) ) + return menu; + + addReservationWizards(menu, context, afterId); + + Component parent = context.getComponent(); + Object focusedObject = context.getFocusedObject(); + Point p = context.getPoint(); + + + + boolean allocatableType = false; + boolean reservationType = false; + if ( focusedObject instanceof DynamicType) + { + DynamicType type = (DynamicType) focusedObject; + String classificationType = type.getAnnotation( DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE ); + allocatableType = classificationType.equals( DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION ) || classificationType.equals( DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION ); + reservationType = classificationType.equals( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION ); + } + boolean allocatableNodeContext = allocatableType || focusedObject instanceof Allocatable || focusedObject == CalendarSelectionModel.ALLOCATABLES_ROOT; + if ( isRegisterer() || isAdmin()) { + if ( allocatableNodeContext) + { + menu.addSeparator(); + addAllocatableMenuNew( menu, parent,p, focusedObject); + } + } + if ( isAdmin() ) + { + boolean reservationNodeContext = reservationType || (focusedObject!= null && focusedObject.equals( getString("reservation_type" ))); + boolean userNodeContext = focusedObject instanceof User || (focusedObject != null && focusedObject.equals( getString("users"))); + boolean periodNodeContext = focusedObject instanceof Period || (focusedObject != null && focusedObject.equals( getString("periods"))); + boolean categoryNodeContext = focusedObject instanceof Category || (focusedObject != null && focusedObject.equals( getString("categories"))); + if (userNodeContext || allocatableNodeContext || reservationNodeContext || periodNodeContext || categoryNodeContext ) + { + menu.addSeparator(); + } + if ( userNodeContext) + { + addUserMenuNew( menu , parent, p, focusedObject); + } + + + if (allocatableNodeContext) + { + addTypeMenuNew(menu, DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION + ,parent, p, focusedObject); + addTypeMenuNew(menu, DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION + ,parent, p, focusedObject); + + } + if ( periodNodeContext) + { + addPeriodMenuNew( menu , parent, p, focusedObject ); + } + if ( categoryNodeContext ) + { + Collection list = context.getSelectedObjects(); + addCategoryMenuNew( menu , parent, p, focusedObject, list ); + } + if ( reservationNodeContext) + { + addTypeMenuNew(menu, DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION + ,parent, p, focusedObject); + } + /* + */ + } + + return menu; + } + + public MenuInterface addObjectMenu( MenuInterface menu, MenuContext context) throws RaplaException { + return addObjectMenu( menu, context, "EDIT_BEGIN"); + } + + public MenuInterface addObjectMenu( MenuInterface menu, MenuContext context, String afterId ) throws RaplaException + { + Component parent = context.getComponent(); + Object focusedObject = context.getFocusedObject(); + Point p = context.getPoint(); + Collection list = context.getSelectedObjects(); + + if ( focusedObject == null || !(focusedObject instanceof RaplaObject)) { + addAction(menu,parent,p, afterId).setDeleteSelection(getDeletableObjects(list)); + return menu; + } + RaplaObject obj = (RaplaObject) focusedObject; + + RaplaType type = obj.getRaplaType(); + + Iterator it = getContainer().lookupServicesFor( RaplaExtensionPoints.OBJECT_MENU_EXTENSION).values().iterator(); + while (it.hasNext()) + { + ObjectMenuFactory objectMenuFact = (ObjectMenuFactory) it.next(); + RaplaMenuItem[] items = objectMenuFact.create( context, obj); + for ( int i =0;i 0) + model.setTitle( title ); + else + model.setTitle( null); + + + String showNavEntry = showNavField.isSelected() ? "true" : "false"; + model.setOption( AbstractHTMLCalendarPage.SHOW_NAVIGATION_ENTRY, showNavEntry); + + String saveSelectedDate = saveSelectedDateField.isSelected() ? "true" : "false"; + model.setOption( AbstractHTMLCalendarPage.SAVE_SELECTED_DATE, saveSelectedDate); + + final String icalSelected = icalCheck.isSelected() ? "true" : "false"; + + model.setOption( Export2iCalPlugin.ICAL_EXPORT, icalSelected); + + final String htmlSelected = htmlCheck.isSelected() ? "true" : "false"; + model.setOption( AutoExportPlugin.HTML_EXPORT, htmlSelected); + model.save( filename); + } + catch (RaplaException ex) + { + showException( ex, parentComponent); + } + } + + + + }); + dlg.start(); + } + + + private JPanel createStatus(String filename, String generator) throws RaplaException { + final JTextField urlLabel = new JTextField(); + addCopyPaste(urlLabel); + JPanel status = new JPanel() + { + private static final long serialVersionUID = 1L; + public void setEnabled(boolean enabled) + { + super.setEnabled(enabled); + urlLabel.setEnabled( enabled); + } + }; + status.setLayout( new BorderLayout()); + urlLabel.setText( ""); + urlLabel.setEditable( true ); + urlLabel.setFont( urlLabel.getFont().deriveFont( (float)10.0)); + status.add( new JLabel("URL: "), BorderLayout.WEST ); + status.add( urlLabel, BorderLayout.CENTER ); + + final RaplaButton copyButton = new RaplaButton(); + copyButton.setBorder(BorderFactory.createEmptyBorder(2,2,2,2)); + copyButton.setFocusable(false); + copyButton.setRolloverEnabled(false); + copyButton.setIcon(getIcon("icon.copy")); + copyButton.setToolTipText(getString("copy_to_clipboard")); + copyButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + urlLabel.requestFocus(); + urlLabel.selectAll(); + copy(urlLabel,e); + } + + + }); + status.add(copyButton, BorderLayout.EAST); + urlLabel.setText( getAddress( filename,generator)); + return status; + } +} + + diff --git a/src/org/rapla/gui/internal/RaplaDateRenderer.java b/src/org/rapla/gui/internal/RaplaDateRenderer.java new file mode 100644 index 0000000..e3ef20a --- /dev/null +++ b/src/org/rapla/gui/internal/RaplaDateRenderer.java @@ -0,0 +1,52 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal; +import java.awt.Color; +import java.util.Calendar; + +import org.rapla.components.calendar.DateRenderer; +import org.rapla.components.calendar.WeekendHighlightRenderer; +import org.rapla.entities.domain.Period; +import org.rapla.facade.PeriodModel; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class RaplaDateRenderer extends RaplaComponent implements DateRenderer { + protected WeekendHighlightRenderer renderer = new WeekendHighlightRenderer(); + protected Color periodColor = new Color(0xc5,0xda,0xdd); + protected PeriodModel periodModel; + Calendar calendar; + + public RaplaDateRenderer(RaplaContext sm) throws RaplaException { + super(sm); + periodModel = getPeriodModel(); + } + + public Color getBackgroundColor(int dayOfWeek,int day,int month, int year) { + Period period = + periodModel.getPeriodFor(getRaplaLocale().toDate(year,month,day)); + if (period != null) + return periodColor; + return renderer.getBackgroundColor(dayOfWeek,day,month,year); + } + + public String getToolTipText(int dayOfWeek,int day,int month, int year) { + Period period = + periodModel.getPeriodFor(getRaplaLocale().toDate(year,month,day)); + if (period != null) + return "" + getString("period") + ":
    " + period.getName(getI18n().getLocale()) + ""; + return renderer.getToolTipText(dayOfWeek,day,month,year); + } +} diff --git a/src/org/rapla/gui/internal/RaplaMenuBar.java b/src/org/rapla/gui/internal/RaplaMenuBar.java new file mode 100644 index 0000000..fd90652 --- /dev/null +++ b/src/org/rapla/gui/internal/RaplaMenuBar.java @@ -0,0 +1,345 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JScrollPane; +import javax.swing.JSeparator; +import javax.swing.KeyStroke; + +import org.rapla.client.ClientService; +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.EditController; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.action.RaplaObjectAction; +import org.rapla.gui.internal.action.RestartRaplaAction; +import org.rapla.gui.internal.action.RestartServerAction; +import org.rapla.gui.internal.action.ShowConflictsAction; +import org.rapla.gui.internal.action.ShowHolidaysAction; +import org.rapla.gui.internal.action.ToolTipAction; +import org.rapla.gui.internal.action.user.UserAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.InternMenus; +import org.rapla.gui.internal.print.PrintAction; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.HTMLView; +import org.rapla.gui.toolkit.RaplaFrame; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.gui.toolkit.RaplaMenuItem; +import org.rapla.gui.toolkit.RaplaSeparator; +import org.rapla.gui.toolkit.RaplaWidget; + +public class RaplaMenuBar extends RaplaGUIComponent +{ + public RaplaMenuBar(RaplaContext context) throws RaplaException { + super(context); + JMenu systemMenu = (JMenu)getService( InternMenus.FILE_MENU_ROLE ); + systemMenu.setText( getString("file")); + + JMenu editMenu = (JMenu)getService( InternMenus.EDIT_MENU_ROLE ); + editMenu.setText( getString("edit")); + + JMenu exportMenu = (JMenu)getService( InternMenus.EXPORT_MENU_ROLE ); + exportMenu.setText( getString("export")); + + JMenu importMenu = (JMenu)getService( InternMenus.IMPORT_MENU_ROLE ); + importMenu.setText( getString("import")); + + JMenuItem newMenu = (JMenuItem)getService( InternMenus.NEW_MENU_ROLE ); + newMenu.setText( getString("new")); + + JMenuItem calendarSettings = (JMenuItem)getService( InternMenus.CALENDAR_SETTINGS ); + calendarSettings.setText( getString("calendar")); + + JMenu extraMenu = (JMenu)getService( InternMenus.EXTRA_MENU_ROLE); + extraMenu.setText( getString("help")); + + JMenu adminMenu = (JMenu)getService( InternMenus.ADMIN_MENU_ROLE ); + adminMenu.setText( getString("admin")); + + RaplaMenu viewMenu = (RaplaMenu)getService( InternMenus.VIEW_MENU_ROLE ); + viewMenu.setText( getString("view")); + + viewMenu.add( new RaplaSeparator("view_save")); + + + + systemMenu.add( newMenu); + systemMenu.add( calendarSettings); + + systemMenu.add( new JSeparator()); + + systemMenu.add( exportMenu ); + systemMenu.add( importMenu ); + systemMenu.add( adminMenu); + + + JSeparator printSep = new JSeparator(); + printSep.setName(getString("calendar")); + systemMenu.add( printSep); + + JMenuItem printMenu = new JMenuItem( getString("print")); + PrintAction printAction = new PrintAction(getContext()); + printMenu.setAction( printAction ); + printAction.setEnabled( true ); + CalendarSelectionModel model = (CalendarSelectionModel)getService(CalendarSelectionModel.ROLE); + printAction.setModel(model); + systemMenu.add( printMenu ); + + systemMenu.add( new JSeparator()); + + if ( getUserModule().canSwitchBack() ) { + JMenuItem switchBack = new JMenuItem(); + switchBack.setAction( new UserAction(getContext(),null,null).setSwitchToUser()); + adminMenu.add( switchBack ); + } + + boolean server = getUpdateModule().isClientForServer(); + if ( server && isAdmin() ) { + JMenuItem restartServer = new JMenuItem(); + restartServer.setAction( new RestartServerAction(getContext())); + adminMenu.add( restartServer ); + } + + if ( isAdmin() ) + { + JMenuItem restart = new JMenuItem(); + restart.setAction( new RestartRaplaAction(getContext())); + adminMenu.add( restart ); + } + + systemMenu.setMnemonic('F'); + JMenuItem logout = new JMenuItem(getString("exit")); + logout.setAccelerator( KeyStroke.getKeyStroke( KeyEvent.VK_Q, ActionEvent.CTRL_MASK ) ); + logout.setMnemonic('x'); + logout.addActionListener( new ActionListener() { + public void actionPerformed(ActionEvent event) { + RaplaFrame mainComponent = (RaplaFrame) getService( ClientService.MAIN_COMPONENT); + mainComponent.close(); + } + }); + systemMenu.add( logout ); + + RaplaMenuItem userOptions = new RaplaMenuItem("userOptions"); + editMenu.add( userOptions ); + + if ( isModifyPreferencesAllowed() ) { + userOptions.setAction( createOptionAction( getQuery().getPreferences( ))); + } else { + userOptions.setVisible( false ); + } + + final User user = getUser(); + final Preferences preferences = getQuery().getPreferences( user ); + { + RaplaMenuItem menu = new RaplaMenuItem("show_tips"); + ToolTipAction action = new ToolTipAction( context ); + menu.setAction( action ); + boolean showToolTips = preferences.getEntryAsBoolean( ToolTipAction.CONFIG_ENTRY, true); + if(showToolTips) { + menu.setSelected(true); + menu.setIcon(getIcon("icon.checked")); + } + else { + menu.setSelected(false); + menu.setIcon(getIcon("icon.unchecked")); + } + viewMenu.insertBeforeId( menu, "view_save" ); + } + { + RaplaMenuItem menu = new RaplaMenuItem("show_conflicts"); + ShowConflictsAction action = new ShowConflictsAction( context ); + menu.setAction( action ); + boolean showConflicts = preferences.getEntryAsBoolean( ShowConflictsAction.CONFIG_ENTRY, true); + if(showConflicts) { + menu.setSelected(true); + menu.setIcon(getIcon("icon.checked")); + } + else { + menu.setSelected(false); + menu.setIcon(getIcon("icon.unchecked")); + } + viewMenu.insertBeforeId( menu, "view_save" ); + } + + { + RaplaMenuItem menu = new RaplaMenuItem("show_holidays"); + ShowHolidaysAction action = new ShowHolidaysAction( context ); + menu.setAction( action ); + boolean showHolidays = preferences.getEntryAsBoolean( ShowHolidaysAction.CONFIG_ENTRY, true); + if(showHolidays) { + menu.setSelected(true); + menu.setIcon(getIcon("icon.checked")); + } + else { + menu.setSelected(false); + menu.setIcon(getIcon("icon.unchecked")); + } + viewMenu.insertBeforeId( menu, "view_save" ); + } + + if ( isAdmin() ) { + RaplaMenuItem adminOptions = new RaplaMenuItem("adminOptions"); + adminOptions.setAction( createOptionAction( getQuery().getPreferences( null ))); + adminMenu.add( adminOptions ); + } + extraMenu.addSeparator(); + + RaplaMenuItem info = new RaplaMenuItem("info"); + info.setAction( createInfoAction( getContext())); + extraMenu.add( info ); + + // within the help menu we need another point for the license + RaplaMenuItem license = new RaplaMenuItem("license"); + // give this menu item an action to perform on click + license.setAction(createLicenseAction(getContext())); + // add the license dialog below the info entry + extraMenu.add(license); + + adminMenu.setEnabled( adminMenu.getMenuComponentCount() != 0 ); + exportMenu.setEnabled( exportMenu.getMenuComponentCount() != 0); + importMenu.setEnabled( importMenu.getMenuComponentCount() != 0); + } + + private Action createOptionAction( final Preferences preferences) { + AbstractAction action = new AbstractAction() { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent arg0) { + try { + EditController editContrl =(EditController) getService(EditController.ROLE); + editContrl.edit( preferences, getMainComponent()); + } catch (RaplaException ex) { + showException( ex, getMainComponent()); + } + } + + }; + action.putValue( Action.SMALL_ICON, getIcon("icon.options") ); + action.putValue( Action.NAME, getString("options")); + return action; + } + + private Action createInfoAction( RaplaContext context) throws RaplaException { + final String name = getString("info"); + final Icon icon = getIcon("icon.info_small"); + + AbstractAction action = new AbstractAction() { + private static final long serialVersionUID = 1L; + + public void actionPerformed( ActionEvent e ) + { + try { + HTMLView infoText = new HTMLView(); + infoText.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); + String javaversion; + try { + javaversion = System.getProperty("java.version"); + } catch (SecurityException ex) { + javaversion = "-"; + getLogger().warn("Permission to system properties denied!"); + } + + boolean isSigned = isSigned(); + String signed = getString( isSigned ? "yes": "no"); + + + infoText.setBody(getI18n().format("info.text",signed,javaversion)); + DialogUI dialog = DialogUI.create( getContext(),getMainComponent(),true, new JScrollPane(infoText), new String[] {getString("ok")}); + dialog.setTitle( name); + dialog.setSize( 550, 300); + dialog.startNoPack(); + } catch (RaplaException ex) { + showException( ex, getMainComponent()); + } + } + + + + }; + action.putValue( Action.SMALL_ICON, icon ); + action.putValue( Action.NAME, name); + return action; + } + + /** + * the action to perform when someone clicks on the license entry in the + * help section of the menu bar + * + * this method is a modified version of the existing method createInfoAction() + */ + private Action createLicenseAction(RaplaContext context) throws RaplaException + { + final String name = getString("licensedialog.title"); + final Icon icon = getIcon("icon.info_small"); + + // overwrite the cass AbstractAction to design our own + AbstractAction action = new AbstractAction() + { + private static final long serialVersionUID = 1L; + + // overwrite the actionPerformed method that is called on click + public void actionPerformed(ActionEvent e) + { + try + { + // we need a new instance of HTMLView to visualize the short + // version of the license text including the two links + HTMLView licenseText = new HTMLView(); + // giving the gui element some borders + licenseText.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + // we look up the text was originally meant for the welcome field + // and put it into a new instance of RaplaWidget + RaplaWidget welcomeField = (RaplaWidget) getContext().lookup("org.rapla.gui.WelcomeField"); + // the following creates the dialog that pops up, when we click + // on the license entry within the help section of the menu bar + // we call the create Method of the DialogUI class and give it all necessary things + DialogUI dialog = DialogUI.create(getContext(), getMainComponent(), true, new JScrollPane(welcomeField.getComponent()), new String[] { getString("ok") }); + // setting the dialog's title + dialog.setTitle(name); + // and the size of the popup window + dialog.setSize(550, 250); + // but I honestly have no clue what this startNoPack() does + dialog.startNoPack(); + } + catch (RaplaException ex) + { + showException(ex, getMainComponent()); + } + } + }; + + action.putValue(Action.SMALL_ICON, icon); + action.putValue(Action.NAME, name); + return action; + } + + +} + + + diff --git a/src/org/rapla/gui/internal/RaplaSelectionPane.java b/src/org/rapla/gui/internal/RaplaSelectionPane.java new file mode 100644 index 0000000..f43c90c --- /dev/null +++ b/src/org/rapla/gui/internal/RaplaSelectionPane.java @@ -0,0 +1,314 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal; + +import java.awt.BorderLayout; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.tree.DefaultTreeModel; + +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.facade.Conflict; +import org.rapla.facade.ModificationEvent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.MenuContext; +import org.rapla.gui.MenuFactory; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.TreeFactory; +import org.rapla.gui.internal.action.RaplaObjectAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.InternMenus; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.internal.view.TreeFactoryImpl; +import org.rapla.gui.toolkit.PopupEvent; +import org.rapla.gui.toolkit.PopupListener; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.gui.toolkit.RaplaPopupMenu; +import org.rapla.gui.toolkit.RaplaTree; +import org.rapla.gui.toolkit.RaplaWidget; + +public class RaplaSelectionPane extends RaplaGUIComponent implements RaplaWidget { + protected JPanel content = new JPanel(); + public RaplaTree treeSelection = new RaplaTree(); + TableLayout tableLayout; + protected JPanel buttonsPanel = new JPanel(); + + protected final CalendarSelectionModel model; + MultiCalendarView view; + Listener listener = new Listener(); + Conflict[] conflicts = new Conflict[] {}; + + + public RaplaSelectionPane(RaplaContext context, MultiCalendarView view, CalendarSelectionModel model) throws RaplaException { + super(context); + + this.model = model; + this.view = view; + /*double[][] sizes = new double[][] { { TableLayout.FILL }, { TableLayout.PREFERRED, TableLayout.PREFERRED, TableLayout.FILL } }; + tableLayout = new TableLayout(sizes);*/ + content.setLayout(new BorderLayout()); + + content.add(treeSelection); + // content.setPreferredSize(new Dimension(260,400)); + content.setBorder(BorderFactory.createRaisedBevelBorder()); + + content.add(buttonsPanel, BorderLayout.NORTH); + + treeSelection.setToolTipRenderer(getTreeFactory().createTreeToolTipRenderer()); + treeSelection.setMultiSelect(true); + + updateTree(); + updateSelection(); + treeSelection.addChangeListener(listener); + treeSelection.addPopupListener(listener); + treeSelection.addDoubleclickListeners(listener); + javax.swing.ToolTipManager.sharedInstance().registerComponent(treeSelection.getTree()); + + updateMenu(); + + + /*JButton test = new JButton("Show Selection"); + test.addActionListener(new ActionListener() { + + + public void actionPerformed(ActionEvent e) { + try { + applyFilter(); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + + }); + buttonsPanel.add(test);*/ + } + + public RaplaTree getTreeSelection() { + return treeSelection; + } + + protected CalendarSelectionModel getModel() { + return model; + } + + public void dataChanged(ModificationEvent evt) throws RaplaException { + updateTree(); + updateMenu(); + } + + final protected TreeFactory getTreeFactory() { + return (TreeFactory) getService(TreeFactory.ROLE); + } + + boolean treeListenersEnabled = true; + + /* + * (non-Javadoc) + * + * @see org.rapla.gui.internal.view.ITreeFactory#createClassifiableModel(org.rapla.entities.dynamictype.Classifiable[], org.rapla.entities.dynamictype.DynamicType[]) + */ + protected void updateTree() throws RaplaException { + + treeSelection.getTree().setRootVisible(false); + treeSelection.getTree().setShowsRootHandles(true); + treeSelection.getTree().setCellRenderer(((TreeFactoryImpl) getTreeFactory()).createComplexRenderer()); + + DefaultTreeModel treeModel = generateTree(); + try { + treeListenersEnabled = false; + treeSelection.exchangeTreeModel(treeModel); + updateSelection(); + } finally { + treeListenersEnabled = true; + } + + } + + protected DefaultTreeModel generateTree() throws RaplaException { + ClassificationFilter[] filter = getModel().getAllocatableFilter(); + DefaultTreeModel treeModel = ((TreeFactoryImpl) getTreeFactory()).createModel(filter, null, null); + return treeModel; + } + + protected void updateSelection() throws RaplaException { + Collection selectedObjects = new ArrayList(getModel().getSelectedObjects()); + if (model.isOnlyCurrentUserSelected()) { + selectedObjects.remove(getUser()); + } + treeSelection.select(selectedObjects); + } + + public JComponent getComponent() { + return content; + } + + protected MenuContext createMenuContext(Point p, Object obj) { + MenuContext menuContext = new MenuContext(getContext(), obj, getComponent(), p); + return menuContext; + } + + protected void showTreePopup(PopupEvent evt) { + try { + + Point p = evt.getPoint(); + Object obj = evt.getSelectedObject(); + List list = treeSelection.getSelectedElements(); + + MenuContext menuContext = createMenuContext(p, obj); + menuContext.setSelectedObjects(list); + + + RaplaPopupMenu menu = new RaplaPopupMenu(); + + RaplaMenu newMenu = new RaplaMenu("new"); + newMenu.setText(getString("new")); + ((MenuFactoryImpl) getMenuFactory()).addNew(newMenu, menuContext, null); + + getMenuFactory().addObjectMenu(menu, menuContext, "EDIT_BEGIN"); + menu.insertAfterId(newMenu, "EDIT_BEGIN"); + + JComponent component = (JComponent) evt.getSource(); + + menu.show(component, p.x, p.y); + } catch (RaplaException ex) { + showException(ex, getComponent()); + } + } + + class Listener implements PopupListener, ChangeListener, ActionListener { + + public void showPopup(PopupEvent evt) { + showTreePopup(evt); + } + + public void actionPerformed(ActionEvent evt) { + try { + if (!canUserAllocateSomething( getUser()) ) + return; + if (!isRegisterer() && !isAdmin()) + return; + Object focusedObject = evt.getSource(); + if ( focusedObject == null || !(focusedObject instanceof RaplaObject)) + return; + // System.out.println(focusedObject.toString()); + RaplaType type = ((RaplaObject) focusedObject).getRaplaType(); + if ( type.equals(User.TYPE) + || type.equals(Allocatable.TYPE) + || type.equals(Period.TYPE) + ) + { + + RaplaObjectAction editAction = new RaplaObjectAction( getContext(), getComponent(),null); + if (editAction.canModify( focusedObject)) + { + editAction.setEdit(focusedObject); + editAction.actionPerformed(null); + } + } + } catch (RaplaException ex) { + showException (ex,getComponent()); + } + } + + public void stateChanged(ChangeEvent evt) { + if (!treeListenersEnabled) { + return; + } + try { + updateChange(); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + + + } + + public void updateChange() throws RaplaException { + getSelectedObjects(); + updateMenu(); + applyFilter(); + } + + public void applyFilter() throws RaplaException { + view.getSelectedCalendar().update(); + } + + protected HashSet getSelectedObjects() throws RaplaException { + HashSet elements = new HashSet(treeSelection.getSelectedElements()); + + getModel().setSelectedObjects(elements); + return elements; + } + + public void clearSelection() + { + treeListenersEnabled = false; + try + { + treeSelection.select( Collections.EMPTY_SET); + } + finally + { + treeListenersEnabled = true; + } + } + + protected void updateMenu() throws RaplaException { + RaplaMenu editMenu = (RaplaMenu) getService(InternMenus.EDIT_MENU_ROLE); + RaplaMenu newMenu = (RaplaMenu) getService(InternMenus.NEW_MENU_ROLE); + + editMenu.removeAllBetween("EDIT_BEGIN", "EDIT_END"); + newMenu.removeAll(); + + List list = treeSelection.getSelectedElements(); + Object focusedObject = null; + if (list.size() == 1) { + focusedObject = treeSelection.getSelectedElement(); + } + + MenuContext menuContext = createMenuContext( null, focusedObject); + menuContext.setSelectedObjects(list); + + getMenuFactory().addObjectMenu(editMenu, menuContext, "EDIT_BEGIN"); + ((MenuFactoryImpl) getMenuFactory()).addNew(newMenu, menuContext, null); + + newMenu.setEnabled(newMenu.getMenuComponentCount() > 0 && canUserAllocateSomething(getUser())); + editMenu.setEnabled(canUserAllocateSomething(getUser())); + } + + public MenuFactory getMenuFactory() { + return (MenuFactory) getService(MenuFactory.ROLE); + } + +} diff --git a/src/org/rapla/gui/internal/RaplaStartOption.java b/src/org/rapla/gui/internal/RaplaStartOption.java new file mode 100644 index 0000000..4b5d801 --- /dev/null +++ b/src/org/rapla/gui/internal/RaplaStartOption.java @@ -0,0 +1,81 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal; + +import java.util.Locale; + +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; + +public class RaplaStartOption extends RaplaGUIComponent implements OptionPanel { + JPanel panel = new JPanel(); + JTextField calendarName; + Preferences preferences; + + public final static String TITLE = "org.rapla.title"; + + public RaplaStartOption(RaplaContext sm) throws RaplaException { + super( sm); + + double pre = TableLayout.PREFERRED; + double fill = TableLayout.FILL; + panel.setLayout( new TableLayout(new double[][] {{pre, 5, pre,5, pre}, {pre,fill}})); + + calendarName = new JTextField(); + addCopyPaste( calendarName); + calendarName.setColumns(30); + panel.add( new JLabel(getString("calendarname")),"0,0" ); + panel.add( calendarName,"2,0"); + calendarName.setEnabled(true); + } + + public JComponent getComponent() { + return panel; + } + public String getName(Locale locale) { + return getString("options"); + } + + public void setPreferences( Preferences preferences) { + this.preferences = preferences; + + } + + public void show() throws RaplaException { + String name = preferences.getEntryAsString( TITLE,""); + calendarName.setText(name); + } + + public void commit() { + String title = calendarName.getText(); + if ( title.trim().length() > 0) + { + preferences.putEntry( TITLE,title ); + } + else + { + preferences.putEntry( TITLE, (String)null); + } + } + + +} diff --git a/src/org/rapla/gui/internal/SavedCalendarView.java b/src/org/rapla/gui/internal/SavedCalendarView.java new file mode 100644 index 0000000..9d760ef --- /dev/null +++ b/src/org/rapla/gui/internal/SavedCalendarView.java @@ -0,0 +1,432 @@ +package org.rapla.gui.internal; + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.*; + +import javax.swing.AbstractAction; +import javax.swing.BorderFactory; +import javax.swing.ComboBoxModel; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; +import javax.swing.JToolBar; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.CalendarModelImpl; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.InternMenus; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.plugin.abstractcalendar.AbstractHTMLCalendarPage; +import org.rapla.plugin.autoexport.AutoExportPlugin; + +public class SavedCalendarView extends RaplaGUIComponent { + + JComboBox selectionBox; + + private boolean listenersEnabled = true; + List filenames = new ArrayList(); + final MultiCalendarView calendarContainer; + final CalendarSelectionModel model; + final RaplaSelectionPane resourceSelection; + JToolBar toolbar = new JToolBar(); + class SaveAction extends RaplaAction + { + + public SaveAction(RaplaContext sm) throws RaplaException { + super(sm); + final String name = getString("save") ; + putValue(NAME,name); + putValue(SHORT_DESCRIPTION,name); + putValue(SMALL_ICON,getIcon("icon.save")); + } + + public void actionPerformed(ActionEvent arg0) { + save(); + } + } + + class PublishAction extends RaplaAction + { + PublishDialog publishDialog; + public PublishAction(RaplaContext sm) throws RaplaException { + super(sm); + final String name = getString("publish") ; + putValue(NAME,name); + putValue(SHORT_DESCRIPTION,name); + putValue(SMALL_ICON,getIcon("icon.export")); + publishDialog = new PublishDialog(getContext()); + + } + + public void actionPerformed(ActionEvent arg0) { + try + { CalendarSelectionModel model = (CalendarSelectionModel) getService( CalendarSelectionModel.ROLE); + String filename = getSelectedFile(); + Component parentComponent = getMainComponent(); + publishDialog.export(model, parentComponent, filename); + } + catch (RaplaException ex) { + showException( ex, getMainComponent()); + } + } + + public boolean hasPublishActions() + { + return publishDialog.hasPublishActions(); + } + + } + + class DeleteAction extends RaplaAction + { + public DeleteAction(RaplaContext sm) throws RaplaException { + super(sm); + final String name = getString("delete"); + putValue(NAME,name); + putValue(SHORT_DESCRIPTION,name); + putValue(SMALL_ICON,getIcon("icon.delete")); + + } + + public void actionPerformed(ActionEvent arg0) { + try + { + String[] objects = new String[] { getSelectedFile()}; + DialogUI dlg = getInfoFactory().createDeleteDialog( objects, getMainComponent()); + dlg.start(); + if (dlg.getSelectedIndex() != 0) + return; + delete(); + } + catch (RaplaException ex) { + showException( ex, getMainComponent()); + } + } + + + + } + + final SaveAction saveAction; + final PublishAction publishAction; + final DeleteAction deleteAction; + + + public SavedCalendarView(RaplaContext context, final MultiCalendarView calendarContainer, final RaplaSelectionPane resourceSelection, final CalendarSelectionModel model) throws RaplaException { + super(context); + saveAction = new SaveAction(context); + publishAction = new PublishAction(context); + deleteAction = new DeleteAction( context); + setChildBundleName(AutoExportPlugin.RESOURCE_FILE); + this.model = model; + this.calendarContainer = calendarContainer; + this.resourceSelection = resourceSelection; + JButton save = new JButton(); + JButton publish = new JButton(); + JButton delete = new JButton(); + + + toolbar.setFloatable( false); + selectionBox = new JComboBox(); + selectionBox.setMinimumSize( new Dimension(120,30)); + selectionBox.setSize( new Dimension(150,30)); + // rku: updated, the next line prevented resizing the combobox when using the divider of the splitpane + // especially, when having long filenames this is annoying + + //selectionBox.setMaximumSize( new Dimension(200,30)); + selectionBox.setPreferredSize( new Dimension(150,30)); + + save.setAction( saveAction); + publish.setAction(publishAction); + RaplaMenu settingsMenu = (RaplaMenu)getService(InternMenus.CALENDAR_SETTINGS); + settingsMenu.insertAfterId(new JMenuItem(saveAction), null); + if ( publishAction.hasPublishActions()) + { + settingsMenu.insertAfterId(new JMenuItem(publishAction), null); + } + settingsMenu.insertAfterId(new JMenuItem(deleteAction),null); + // exportMenu.insertAfterId(new JSeparator(), InternMenus.NEW_MENU_ROLE); + // exportMenu.add(publishAction); + + delete.setAction( deleteAction); + toolbar.add(new JLabel(getString("calendar"))); + toolbar.add(new JToolBar.Separator()); + toolbar.add( selectionBox); + toolbar.add(new JToolBar.Separator()); + + toolbar.add(save); + save.setText(""); + publish.setText(""); + delete.setText(""); + if ( publishAction.hasPublishActions()) + { + toolbar.add(publish); + } + toolbar.add(delete); + toolbar.setBorder( BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + update(); + + final int defaultIndex = ((DefaultComboBoxModel) selectionBox.getModel()).getIndexOf(getString("default")); + if (defaultIndex != -1) + selectionBox.setSelectedIndex(defaultIndex); + selectionBox.addActionListener( new ActionListener() { + + public void actionPerformed(ActionEvent e) { + if ( !listenersEnabled) + { + return; + } + try + { + changeSelection(); + } + catch (RaplaException ex) { + showException( ex, getMainComponent()); + } + } + }); + } + + public JComponent getComponent() { + return toolbar; + } + + private void changeSelection() throws RaplaException + { + String selectedFile = getSelectedFile(); + + // store date + final Date tmpDate = model.getSelectedDate(); + model.load(selectedFile); + final String entry = (String)model.getOption(AbstractHTMLCalendarPage.SAVE_SELECTED_DATE); + if ("false".equalsIgnoreCase(entry)) { + model.setSelectedDate(tmpDate); + } + + + updateActions(); + resourceSelection.dataChanged(null); + calendarContainer.update(); + } + + public void update() throws RaplaException + { + updateActions(); + try + { + listenersEnabled = false; + final String item = getSelectedFile(); + final Preferences preferences = getQuery().getPreferences(); + Map exportMap= ((RaplaMap)preferences.getEntry(AutoExportPlugin.PLUGIN_ENTRY)); + filenames.clear(); + final String defaultEntry = getString("default"); + + filenames.add(defaultEntry); + if ( exportMap != null) { + for (Iterator it= exportMap.keySet().iterator();it.hasNext();) { + String filename = (String) it.next(); + filenames.add( filename); + } + } + // rku: sort entries by name + Collections.sort(filenames); + DefaultComboBoxModel model = new DefaultComboBoxModel(filenames.toArray()); + selectionBox.setModel(model); + + if ( item != null ) + { + model.setSelectedItem( item ); + } + } + finally + { + listenersEnabled = true; + } + + } + + private void updateActions() { + String selectedFile = getSelectedFile(); + boolean isDefault = selectedFile == null || selectedFile.equals(getString("default")); + final boolean modifyPreferencesAllowed = isModifyPreferencesAllowed(); + saveAction.setEnabled(modifyPreferencesAllowed ); + publishAction.setEnabled( modifyPreferencesAllowed); + deleteAction.setEnabled( !isDefault && modifyPreferencesAllowed); + } + + private void delete() throws RaplaException + { + final Preferences preferences = newEditablePreferences(); + Map exportMap= ((RaplaMap)preferences.getEntry(AutoExportPlugin.PLUGIN_ENTRY)); + Map newMap = new TreeMap(); + final String selectedFile = getSelectedFile(); + for (Iterator it= exportMap.keySet().iterator();it.hasNext();) { + String filename = (String)it.next(); + if (!filename.equals( selectedFile)) { + newMap.put( filename, exportMap.get( filename )); + } + } + preferences.putEntry( AutoExportPlugin.PLUGIN_ENTRY, getModification().newRaplaMap( newMap )); + getModification().store( preferences); + final int defaultIndex = ((DefaultComboBoxModel) selectionBox.getModel()).getIndexOf(getString("default")); + if (defaultIndex != -1) + selectionBox.setSelectedIndex(defaultIndex); + else + selectionBox.setSelectedIndex(0); + //changeSelection(); + } + + private void save() { + final String selectedFile = getSelectedFile(); + + final Component parentComponent = getMainComponent(); + try { + + + JPanel panel = new JPanel(); + final JTextField textField = new JTextField(20); + addCopyPaste( textField); + String dateString = getRaplaLocale().formatDate(model.getSelectedDate()); + final JCheckBox saveSelectedDateField = new JCheckBox(getI18n().format("including_date",dateString)); + + panel.setPreferredSize( new Dimension(600,300)); + panel.setLayout(new TableLayout( new double[][] {{TableLayout.PREFERRED,5,TableLayout.FILL},{TableLayout.PREFERRED,5,TableLayout.PREFERRED,5,TableLayout.FILL}})); + panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); + panel.add(new JLabel(getString("file.enter_name") +":"), "0,0"); + panel.add(textField, "2,0"); + addCopyPaste( textField); + panel.add(saveSelectedDateField, "2,2"); + + final String entry = (String)model.getOption(AbstractHTMLCalendarPage.SAVE_SELECTED_DATE); + saveSelectedDateField.setSelected( entry == null || entry.equals("true")); + + final JList list = new JList(filenames.toArray()); + + panel.add( new JScrollPane(list), "0,4,2,1"); + + textField.setText( selectedFile); + list.addListSelectionListener( new ListSelectionListener() { + + public void valueChanged( ListSelectionEvent e ) + { + String filename = (String) list.getSelectedValue(); + if ( filename != null) { + textField.setText( filename ); + try { + final CalendarSelectionModel m = new CalendarModelImpl(getContext(), getUser()); + m.load(filename); + final String entry = (String)m.getOption(AbstractHTMLCalendarPage.SAVE_SELECTED_DATE); + saveSelectedDateField.setSelected( entry == null || entry.equals("true")); + } catch (RaplaException ex) { + showException( ex, getMainComponent()); + } + } + + } + + }); + + final DialogUI dlg = DialogUI.create( + getContext(), + parentComponent,true,panel, + new String[] { + getString("save") + ,getString("cancel") + }); + dlg.setTitle(getString("save") + " " +getString("calendar_settings")); + dlg.getButton(0).setIcon(getIcon("icon.save")); + dlg.getButton(1).setIcon(getIcon("icon.cancel")); + dlg.getButton(0).setAction( new AbstractAction() { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent e) { + String filename = textField.getText().trim(); + if (filename.length() == 0) + { + showWarning(getString("error.no_name"), parentComponent); + return; + } + dlg.close(); + + + try + { + String saveSelectedDate = saveSelectedDateField.isSelected() ? "true" : "false"; + model.setOption( AbstractHTMLCalendarPage.SAVE_SELECTED_DATE, saveSelectedDate); + + final ComboBoxModel selectionModel = selectionBox.getModel(); + + // We reset exports for newly created files + if ( !contains(selectionModel,filename)) + { + model.resetExports(); + } + model.save(filename); + try + { + listenersEnabled = false; + selectionModel.setSelectedItem( filename); + } + finally + { + listenersEnabled = true; + } + } + catch (RaplaException ex) + { + showException( ex, parentComponent); + } + + } + + private boolean contains(ComboBoxModel model2,String filename) + { + for ( int i=0;i0:=n-times + } + + public AppointmentAction setNew(Date start,Date end,Allocatable allocatable, RepeatingType repeatingType,DynamicType dynamicType, int repeatings ) { + this.start = start; + this.end = end; + this.repeatings = repeatings; + this.dynamicType = dynamicType; + this.allocatable = allocatable; + this.repeatingType = repeatingType; + this.type = NEW; + putValue(NAME, getString("new_reservation") + getRepeatingString( repeatingType ) ); + if ( repeatingType != null) + { + putValue(SMALL_ICON, getIcon("icon.new_repeating")); + } + else + { + putValue(SMALL_ICON, getIcon("icon.single")); + } + setEnabled( canAllocate( start, end, allocatable)); + return this; + } + + private String getRepeatingString(RepeatingType repeatingType) { + if ( repeatingType == null) + return ""; + return " (" + getString( repeatingType.toString() ) + ")"; + } + + public AppointmentAction setAddTo(ReservationEdit reservationEdit,Date start,Date end,Allocatable allocatable, RepeatingType repeatingType, int repeatings) { + this.reservationEdit = reservationEdit; + this.repeatings = repeatings; + this.start = start; + this.end = end; + this.allocatable = allocatable; + this.repeatingType = repeatingType; + this.type = ADD_TO_RESERVATION; + putValue(NAME, getString("new_appointment") + + " " + getString("for") + " '" + getName(reservationEdit.getReservation()) + "'" + + getRepeatingString( repeatingType )); + if ( repeatingType != null) + { + putValue(SMALL_ICON, getIcon("icon.new_repeating")); + } + else + { + putValue(SMALL_ICON, getIcon("icon.single")); + } + setEnabled( canAllocate( start, end, allocatable)); + return this; + } + + private boolean canAllocate(Date start, Date end, Allocatable allocatables) { + if ( allocatable == null) { + return true; + } + try { + return allocatable.canAllocate( getUser(), start, end, getQuery().today() ); + } catch (RaplaException ex) { + return false; + } + } + + public AppointmentAction setCopy(Appointment appointment,Date from) { + this.appointment = appointment; + this.start = from; + this.type = COPY; + putValue(NAME, getString("copy")); + putValue(SMALL_ICON, getIcon("icon.copy")); + setEnabled(canModify(appointment.getReservation())); + return this; + } + + public AppointmentAction setPaste(Date start) { + this.start = start; + this.type = PASTE; + putValue(NAME, getString("paste")); + putValue(SMALL_ICON, getIcon("icon.paste")); + setEnabled(isAppointmentOnClipboard()); + return this; + } + + public AppointmentAction setPasteAsNew(Date start) { + this.start = start; + this.type = PASTE_AS_NEW; + putValue(NAME, getString("paste_as") + " " + getString( "new_reservation" ) ); + putValue(SMALL_ICON, getIcon("icon.paste_new")); + setEnabled(isAppointmentOnClipboard()); + return this; + } + + /** + * Context menu entry to delete an appointment. + */ + public AppointmentAction setDelete(Appointment appointment, Date from){ + this.appointment = appointment; + this.start = from; + this.type = DELETE; + putValue(NAME, getI18n().format("delete.format", getString("appointment"))); + putValue(SMALL_ICON, getIcon("icon.delete")); + setEnabled(canModify(appointment.getReservation())); + return this; + } + + public AppointmentAction setView(Appointment appointment) { + this.appointment = appointment; + this.type = VIEW; + putValue(NAME, getString("view")); + putValue(SMALL_ICON, getIcon("icon.help")); + User owner = appointment.getReservation().getOwner(); + try + { + User user = getUser(); + boolean canView = getQuery().canReadReservationsFromOthers( user) || user.equals( owner); + setEnabled( canView); + } + catch (RaplaException ex) + { + getLogger().error( "Can't get user",ex); + } + return this; + } + + public AppointmentAction setEdit(Appointment appointment, Date from) { + this.start = from; + this.appointment = appointment; + this.type = EDIT; + putValue(NAME, getString("edit")); + putValue(SMALL_ICON, getIcon("icon.edit")); + setEnabled(canModify(appointment.getReservation()) || getQuery().canExchangeAllocatables(appointment.getReservation())); + return this; + } + + + public void actionPerformed(ActionEvent evt) { + try { + switch (type) { + case DELETE: delete();break; + case COPY: copy();break; + case PASTE: paste(false);break; + case PASTE_AS_NEW: paste( true);break; + case NEW: newReservation();break; + case ADD_TO_RESERVATION: addToReservation();break; + case EDIT: edit();break; + case VIEW: view();break; + } + } catch (RaplaException ex) { + showException(ex,parent); + } // end of try-catch + } + + public void view() throws RaplaException { + getInfoFactory().showInfoDialog(appointment.getReservation(),parent,point); + } + + public void edit() throws RaplaException { + appointment.getReservation().setSelectedSlotDate(start); + getReservationController().edit( appointment); + } + + private void delete() throws RaplaException { + getReservationController().deleteAppointment(appointment,start,parent,point); + } + + private void copy() throws RaplaException { + Reservation event = appointment.getReservation(); + Appointment copy = getReservationController().copyAppointment(appointment,start,parent,point); + // store on clibboard + getClipboard().setAppointment(copy,event, event.getRestrictedAllocatables(appointment)); + } + + private RaplaClipboard getClipboard() { + return (RaplaClipboard) getService(RaplaClipboard.ROLE); + } + + private void paste(boolean asNewReservation) throws RaplaException { + if (!isAppointmentOnClipboard()) + return; + Appointment appointment = getClipboard().getAppointment(); + Reservation reservation = getClipboard().getReservation(); + getReservationController().pasteAppointment( + appointment + ,reservation + ,start + ,parent + ,point + ,getClipboard().getRestrictedAllocatables() + ,asNewReservation); + } + + private void newReservation() throws RaplaException { + create(start,end,allocatable, repeatingType, dynamicType, repeatings); + } + + /* (non-Javadoc) + * @see org.rapla.gui.edit.reservation.IReservationController#startNew(java.util.Date, java.util.Date, org.rapla.entities.domain.Allocatable, java.lang.String, org.rapla.entities.dynamictype.DynamicType, int) + */ + public void create(Date start,Date end,Allocatable allocatable, RepeatingType repeatingType, DynamicType type, int repeatings) throws RaplaException { + Reservation mutableReservation = getModification().newReservation(); + if ( type != null) { + mutableReservation.setClassification( type.newClassification()); + } + Appointment appointment = getModification().newAppointment( start, end ); + if ( repeatingType != null ) { + ReservationHelper.makeRepeatingForPeriod(getPeriodModel(), appointment, repeatingType, repeatings ); + } + mutableReservation.addAppointment(appointment); + if (allocatable != null) + mutableReservation.addAllocatable(allocatable); + appointment.getReservation().setSelectedSlotDate(start); + getReservationController().edit( appointment); + } + + private void addToReservation() throws RaplaException { + reservationEdit.addAppointment(start,end, repeatingType, repeatings); + } + + public boolean isAppointmentOnClipboard() { + return (getClipboard().getAppointment() != null); + } + + +} diff --git a/src/org/rapla/gui/internal/action/CategoryAction.java b/src/org/rapla/gui/internal/action/CategoryAction.java new file mode 100644 index 0000000..25ade03 --- /dev/null +++ b/src/org/rapla/gui/internal/action/CategoryAction.java @@ -0,0 +1,42 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; + +import java.awt.Component; +import java.awt.Point; + +import org.rapla.entities.Category; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.DialogUI; + +public class CategoryAction extends RaplaObjectAction{ + public CategoryAction(RaplaContext sm,Component parent,Point p) throws RaplaException { + super(sm,parent,p); + } + + protected void delete() throws RaplaException { + if (object == null) + return; + Object[] objects = new Object[] {object}; + DialogUI dlg = getInfoFactory().createDeleteDialog( objects, parent); + dlg.start(); + if (dlg.getSelectedIndex() != 0) + return; + Category category = (Category) object; + Category parentClone = (Category) getModification().edit( category.getParent() ); + parentClone.removeCategory( parentClone.findCategory( category) ); + getModification().store( parentClone ); + } + +} diff --git a/src/org/rapla/gui/internal/action/DynamicTypeAction.java b/src/org/rapla/gui/internal/action/DynamicTypeAction.java new file mode 100644 index 0000000..86d5605 --- /dev/null +++ b/src/org/rapla/gui/internal/action/DynamicTypeAction.java @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.Component; +import java.awt.Point; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class DynamicTypeAction extends RaplaObjectAction { + String classificationType; + public DynamicTypeAction(RaplaContext sm,Component parent) throws RaplaException { + super(sm,parent); + } + public DynamicTypeAction(RaplaContext sm,Component parent,Point p) throws RaplaException { + super(sm,parent,p); + } + + public DynamicTypeAction setNewClassificationType(String classificationType) { + this.classificationType = classificationType; + super.setNew( null ); + return this; + } + + protected void newEntity() throws RaplaException { + getEditController().edit(getModification().newDynamicType(classificationType) + ,parent); + } + + +} diff --git a/src/org/rapla/gui/internal/action/HolidayAction.java b/src/org/rapla/gui/internal/action/HolidayAction.java new file mode 100644 index 0000000..5c7a6b8 --- /dev/null +++ b/src/org/rapla/gui/internal/action/HolidayAction.java @@ -0,0 +1,56 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; + +public class HolidayAction extends RaplaAction { + CalendarSelectionModel model; + + public HolidayAction(RaplaContext sm,CalendarSelectionModel model) throws RaplaException { + super( sm); + this.model = model; + this.setEnabled( true); + putValue(NAME,getString("view_holidays")); + //putValue(SMALL_ICON,getIcon("icon.filter")); + } + + public CalendarSelectionModel getModel() { + return model; + } + + public void setModel(CalendarSelectionModel model) { + } + + public void actionPerformed(ActionEvent evt) { + try { + boolean isSelected = model.isHolidaySelected(); + if ( !isSelected ) { + model.selectUser( getUser()); + } else { + model.selectUser( null ); + } + firePropertyChange("model",new Object(), model); + } + catch (RaplaException ex) + { + } + + } + + +} diff --git a/src/org/rapla/gui/internal/action/OnlyMyAction.java b/src/org/rapla/gui/internal/action/OnlyMyAction.java new file mode 100644 index 0000000..e9c9077 --- /dev/null +++ b/src/org/rapla/gui/internal/action/OnlyMyAction.java @@ -0,0 +1,56 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; + +public class OnlyMyAction extends RaplaAction { + CalendarSelectionModel model; + + public OnlyMyAction(RaplaContext sm,CalendarSelectionModel model) throws RaplaException { + super( sm); + this.model = model; + this.setEnabled( true); + putValue(NAME,getString("only_own_reservations")); + //putValue(SMALL_ICON,getIcon("icon.filter")); + } + + public CalendarSelectionModel getModel() { + return model; + } + + public void setModel(CalendarSelectionModel model) { + } + + public void actionPerformed(ActionEvent evt) { + try { + boolean isSelected = model.isOnlyCurrentUserSelected(); + if ( !isSelected ) { + model.selectUser( getUser()); + } else { + model.selectUser( null ); + } + firePropertyChange("model",new Object(), model); + } + catch (RaplaException ex) + { + } + + } + + +} diff --git a/src/org/rapla/gui/internal/action/RaplaObjectAction.java b/src/org/rapla/gui/internal/action/RaplaObjectAction.java new file mode 100644 index 0000000..d6ab66b --- /dev/null +++ b/src/org/rapla/gui/internal/action/RaplaObjectAction.java @@ -0,0 +1,276 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; + +import java.awt.Component; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.util.Collection; +import java.util.Iterator; + +import org.rapla.entities.Category; +import org.rapla.entities.Entity; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.facade.ModificationModule; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.toolkit.DialogUI; + +public class RaplaObjectAction extends RaplaAction { + public final static int DELETE = 1; + public final static int COPY = 2; + public final static int PASTE = 3; + public final static int CUT = 4; + public final static int NEW = 5; + public final static int EDIT = 6; + public final static int VIEW = 7; + public final static int DELETE_SELECTION = 8; + protected Component parent; + Point point; + protected int type; + boolean isPerson; + protected Object object; + Collection objectList; + protected RaplaType raplaType; + + public RaplaObjectAction(RaplaContext sm) throws RaplaException { + this(sm,null); + } + + public RaplaObjectAction(RaplaContext sm,Component parent) throws RaplaException { + this(sm,parent,null); + } + + public RaplaObjectAction(RaplaContext sm,Component parent,Point point) throws RaplaException { + super( sm); + this.parent = parent; + this.point = point; + } + + public RaplaObjectAction setNew(RaplaType raplaType) { + this.raplaType = raplaType; + this.type = NEW; + putValue(NAME, getString("new")); + putValue(SMALL_ICON, getIcon("icon.new")); + update(); + return this; + } + + public RaplaObjectAction setDelete(Object object) { + this.type = DELETE; + putValue(NAME, getString("delete")); + putValue(SMALL_ICON, getIcon("icon.delete")); + changeObject(object); + return this; + } + + public RaplaObjectAction setDeleteSelection(Collection selection) { + this.type = DELETE_SELECTION; + putValue(NAME, getString("delete_selection")); + putValue(SMALL_ICON, getIcon("icon.delete")); + changeSelection( selection ); + return this; + } + + public RaplaObjectAction setView(Object object) { + this.type = VIEW; + putValue(NAME, getString("view")); + putValue(SMALL_ICON, getIcon("icon.help")); + changeObject(object); + return this; + } + + public RaplaObjectAction setEdit(Object object) { + this.type = EDIT; + putValue(NAME, getString("edit")); + putValue(SMALL_ICON, getIcon("icon.edit")); + changeObject(object); + return this; + } + + public void changeObject(Object object) { + this.object = object; + if (type == DELETE) { + if (object == null) + putValue(NAME, getString("delete")); + else + putValue(NAME, getI18n().format("delete.format",getName(object))); + } + update(); + } + + public void changeSelection(Collection objectList) { + this.objectList = objectList; + update(); + } + + protected void update() { + boolean enabled = true; + if (type == EDIT || type == DELETE) { + enabled = canModify(object); + } else if (type == NEW) { + enabled = isRegisterer() || isAdmin(); + } else if (type == DELETE_SELECTION) { + if (objectList != null && objectList.size() > 0 ) { + Iterator it = objectList.iterator(); + while (it.hasNext()) { + if (!canModify(it.next())){ + enabled = false; + break; + } + } + } else { + enabled = false; + } + } + setEnabled(enabled); + } + + + public void actionPerformed(ActionEvent evt) { + try { + switch (type) { + case DELETE: delete();break; + case DELETE_SELECTION: deleteSelection();break; + case EDIT: edit();break; + case NEW: newEntity();break; + case VIEW: view();break; + } + } catch (RaplaException ex) { + showException(ex,parent); + } // end of try-catch + } + + public void view() throws RaplaException { + getInfoFactory().showInfoDialog(object,parent); + } + + + protected Object newEntity(RaplaType raplaType) throws RaplaException { + ModificationModule m = getModification(); + if ( Reservation.TYPE.is( raplaType )) + return m.newReservation(); + if ( Allocatable.TYPE.is( raplaType )) + return (isPerson) ?m.newPerson(): m.newResource() ; + if ( Category.TYPE.is( raplaType )) + return m.newCategory(); //will probably never happen + if ( User.TYPE.is( raplaType )) + return m.newUser(); + if ( Period.TYPE.is( raplaType )) + return m.newPeriod(); + + throw new RaplaException("Can't create Entity for " + raplaType + "!"); + } + + + /** guesses the DynamicType for the new object depending on the selected element. +
  • If the selected element is a DynamicType-Folder the DynamicType will be returned. +
  • If the selected element has a Classification the appropriatie DynamicType will be returned. +
  • else the first matching DynamicType for the passed classificationType will be returned. +
  • Each user element has a distinguished name that can be formed by + * substituting the presented username into a pattern configured by the + * userPattern property.
  • + * + * + *
  • The user may be authenticated by binding to the directory with the + * username and password presented. This method is used when the + * userPassword property is not specified.
  • + * + *
  • The user may be authenticated by retrieving the value of an attribute + * from the directory and comparing it explicitly with the value presented + * by the user. This method is used when the userPassword + * property is specified, in which case: + *
      + *
    • The element for this user must contain an attribute named by the + * userPassword property. + *
    • The value of the user password attribute is either a cleartext + * String, or the result of passing a cleartext String through the + * digest() method (using the standard digest + * support included in RealmBase). + *
    • The user is considered to be authenticated if the presented + * credentials (after being passed through + * digest()) are equal to the retrieved value + * for the user password attribute.
    • + *
  • + * + */ + +public class JNDIAuthenticationStore extends AbstractLogEnabled implements AuthenticationStore,Startable,JNDIConf { + // ----------------------------------------------------- Instance Variables + + + /** + * Digest algorithm used in storing passwords in a non-plaintext format. + * Valid values are those accepted for the algorithm name by the + * MessageDigest class, or null if no digesting should + * be performed. + */ + protected String digest = null; + + /** + * The MessageDigest object for digesting user credentials (passwords). + */ + protected MessageDigest md = null; + + /** + * The connection username for the server we will contact. + */ + protected String connectionName = null; + + + /** + * The connection password for the server we will contact. + */ + protected String connectionPassword = null; + + + /** + * The connection URL for the server we will contact. + */ + protected String connectionURL = null; + + + /** + * The directory context linking us to our directory server. + */ + protected DirContext context = null; + + + /** + * The JNDI context factory used to acquire our InitialContext. By + * default, assumes use of an LDAP server using the standard JNDI LDAP + * provider. + */ + protected String contextFactory = "com.sun.jndi.ldap.LdapCtxFactory"; + + /** + * The attribute name used to retrieve the user password. + */ + protected String userPassword = null; + + /** + * The attribute name used to retrieve the user email. + */ + protected String userMail = null; + + + /** + * The attribute name used to retrieve the complete name of the user. + */ + protected String userCn = null; + + + /** + * The base element for user searches. + */ + protected String userBase = ""; + + /** + * The message format used to search for a user, with "{0}" marking + * the spot where the username goes. + */ + protected String userSearch = null; + + + + /** + * The MessageFormat object associated with the current + * userSearch. + */ + protected MessageFormat userSearchFormat = null; + + /** + * The number of connection attempts. If greater than zero we use the + * alternate url. + */ + protected int connectionAttempt = 0; + + public JNDIAuthenticationStore(Configuration config,Logger logger) throws RaplaException { + enableLogging( logger); + Map map = generateMap(config); + initWithMap(map); + /* + setDigest( config.getAttribute( DIGEST, null ) ); + setConnectionName( config.getAttribute( CONNECTION_NAME ) ); + setConnectionPassword( config.getAttribute( CONNECTION_PASSWORD, null) ); + setConnectionURL( config.getAttribute( CONNECTION_URL ) ); + setContextFactory( config.getAttribute( CONTEXT_FACTORY, contextFactory ) ); + setUserPassword( config.getAttribute( USER_PASSWORD, null ) ); + setUserMail( config.getAttribute( USER_MAIL, null ) ); + setUserCn( config.getAttribute( USER_CN, null ) ); + setUserSearch( config.getAttribute( USER_SEARCH) ); + setUserBase( config.getAttribute( USER_BASE) ); + */ + } + + static public Map generateMap(Configuration config) { + String[] attributes = config.getAttributeNames(); + Map map = new TreeMap(); + for (int i=0;inull. + * + * If there are any errors with the JDBC connection, executing + * the query or anything we return null (don't authenticate). This + * event is also logged, and the connection will be closed so that + * a subsequent request will automatically re-open it. + * + * @param username Username of the Principal to look up + * @param credentials Password or other credentials to use in + * authenticating this username + */ + private JNDIUser authenticateUser(String username, String credentials) { + DirContext context = null; + JNDIUser user = null; + try { + + // Ensure that we have a directory context available + context = open(); + + // Occassionally the directory context will timeout. Try one more + // time before giving up. + try { + + // Authenticate the specified username if possible + user = authenticate(context, username, credentials); + + } catch (CommunicationException e) { + + + // If contains the work closed. Then assume socket is closed. + // If message is null, assume the worst and allow the + // connection to be closed. + if (e.getMessage()!=null && + e.getMessage().indexOf("closed") < 0) + throw(e); + + // log the exception so we know it's there. + log("jndiRealm.exception", e); + + // close the connection so we know it will be reopened. + if (context != null) + close(context); + + // open a new directory context. + context = open(); + + // Try the authentication again. + user = authenticate(context, username, credentials); + + } + + // Return the authenticated Principal (if any) + return user; + } catch (NamingException e) { + + // Log the problem for posterity + log("jndiRealm.exception", e); + + // Close the connection so that it gets reopened next time + if (context != null) + close(context); + + // Return "not authenticated" for this request + return null; + } + + } + + + // -------------------------------------------------------- Package Methods + + + // ------------------------------------------------------ Protected Methods + + + /** + * Return the Principal associated with the specified username and + * credentials, if there is one; otherwise return null. + * + * @param context The directory context + * @param username Username of the Principal to look up + * @param credentials Password or other credentials to use in + * authenticating this username + * + * @exception NamingException if a directory server error occurs + */ + protected synchronized JNDIUser authenticate(DirContext context, + String username, + String credentials) + throws NamingException { + + if (username == null || username.equals("") + || credentials == null || credentials.equals("")) + return (null); + + // Retrieve user information + JNDIUser user = getUser(context, username); + if (user != null && checkCredentials(context, user, credentials)) + return user; + + return null; + } + + + /** + * Return a User object containing information about the user + * with the specified username, if found in the directory; + * otherwise return null. + * + * If the userPassword configuration attribute is + * specified, the value of that attribute is retrieved from the + * user's directory entry. If the userRoleName + * configuration attribute is specified, all values of that + * attribute are retrieved from the directory entry. + * + * @param context The directory context + * @param username Username to be looked up + * + * @exception NamingException if a directory server error occurs + */ + protected JNDIUser getUser(DirContext context, String username) + throws NamingException { + JNDIUser user = null; + // Get attributes to retrieve from user entry + ArrayList list = new ArrayList(); + if (userPassword != null) + list.add(userPassword); + if (userMail != null) + list.add(userMail); + if (userCn != null) + list.add(userCn); + + String[] attrIds = new String[list.size()]; + list.toArray(attrIds); + // Use pattern or search for user entry + user = getUserBySearch(context, username, attrIds); + return user; + } + + /** + * Search the directory to return a User object containing + * information about the user with the specified username, if + * found in the directory; otherwise return null. + * + * @param context The directory context + * @param username The username + * @param attrIds String[]containing names of attributes to retrieve. + * + * @exception NamingException if a directory server error occurs + */ + protected JNDIUser getUserBySearch(DirContext context, + String username, + String[] attrIds) + throws NamingException { + + if (userSearchFormat == null) { + getLogger().error("no userSearchFormat specied"); + return null; + } + + // Form the search filter + String filter = userSearchFormat.format(new String[] { username }); + + // Set up the search controls + SearchControls constraints = new SearchControls(); + + constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); + + // Specify the attributes to be retrieved + if (attrIds == null) + attrIds = new String[0]; + constraints.setReturningAttributes(attrIds); + + if (getLogger().isDebugEnabled()) { + log(" Searching for " + username); + log(" base: " + userBase + " filter: " + filter); + } + //filter = ""; + Attributes attributes = new BasicAttributes(true); + attributes.put(new BasicAttribute("uid","admin")); + NamingEnumeration results = + //context.search(userBase,attributes);// + context.search(userBase, filter,constraints); +/* + while ( results.hasMore()) + { + System.out.println( results.next()); + } + */ // Fail if no entries found + if (results == null || !results.hasMore()) { + if (getLogger().isDebugEnabled()) { + log(" username not found"); + } + return (null); + } + + // Get result for the first entry found + SearchResult result = (SearchResult)results.next(); + + // Check no further entries were found + if (results.hasMore()) { + log("username " + username + " has multiple entries"); + return (null); + } + + // Get the entry's distinguished name + NameParser parser = context.getNameParser(""); + Name contextName = parser.parse(context.getNameInNamespace()); + Name baseName = parser.parse(userBase); + Name entryName = parser.parse(result.getName()); + Name name = contextName.addAll(baseName); + name = name.addAll(entryName); + String dn = name.toString(); + + if (getLogger().isDebugEnabled()) + log(" entry found for " + username + " with dn " + dn); + + // Get the entry's attributes + Attributes attrs = result.getAttributes(); + if (attrs == null) + return null; + + return createUser(username, dn, attrs); + } + + + private JNDIUser createUser(String username, String dn, Attributes attrs) throws NamingException { + // Retrieve value of userPassword + String password = null; + if (userPassword != null) + password = getAttributeValue(userPassword, attrs); + + String mail = null; + if ( userMail != null) { + mail = getAttributeValue( userMail, attrs ); + } + + String cn = null; + if ( userCn != null ) { + cn = getAttributeValue( userCn, attrs ); + } + return new JNDIUser(username, dn, password, mail, cn); + } + + + + /** + * Check whether the given User can be authenticated with the + * given credentials. If the userPassword + * configuration attribute is specified, the credentials + * previously retrieved from the directory are compared explicitly + * with those presented by the user. Otherwise the presented + * credentials are checked by binding to the directory as the + * user. + * + * @param context The directory context + * @param user The User to be authenticated + * @param credentials The credentials presented by the user + * + * @exception NamingException if a directory server error occurs + */ + protected boolean checkCredentials(DirContext context, + JNDIUser user, + String credentials) + throws NamingException { + + boolean validated = false; + + if (userPassword == null) { + validated = bindAsUser(context, user, credentials); + } else { + validated = compareCredentials(context, user, credentials); + } + + if ( getLogger().isDebugEnabled() ) { + if (validated) { + log("jndiRealm.authenticateSuccess: " + user.username); + } else { + log("jndiRealm.authenticateFailure: " + user.username); + } + } + return (validated); + } + + + + /** + * Check whether the credentials presented by the user match those + * retrieved from the directory. + * + * @param context The directory context + * @param info The User to be authenticated + * @param credentials Authentication credentials + * + * @exception NamingException if a directory server error occurs + */ + protected boolean compareCredentials(DirContext context, + JNDIUser info, + String credentials) + throws NamingException { + + if (info == null || credentials == null) + return (false); + + String password = info.password; + if (password == null) + return (false); + + // Validate the credentials specified by the user + if ( getLogger().isDebugEnabled() ) + log(" validating credentials"); + + boolean validated = false; + if (hasMessageDigest()) { + // Hex hashes should be compared case-insensitive + validated = (digest(credentials).equalsIgnoreCase(password)); + } else { + validated = (digest(credentials).equals(password)); + } + + return (validated); + + } + + protected boolean hasMessageDigest() { + return !(md == null); + } + + + /** + * Digest the password using the specified algorithm and + * convert the result to a corresponding hexadecimal string. + * If exception, the plain credentials string is returned. + * + * IMPLEMENTATION NOTE - This implementation is + * synchronized because it reuses the MessageDigest instance. + * This should be faster than cloning the instance on every request. + * + * @param credentials Password or other credentials to use in + * authenticating this username + */ + protected String digest(String credentials) { + + // If no MessageDigest instance is specified, return unchanged + if ( hasMessageDigest() == false) + return (credentials); + + // Digest the user credentials and return as hexadecimal + synchronized (this) { + try { + md.reset(); + md.update(credentials.getBytes()); + return (Tools.convert(md.digest())); + } catch (Exception e) { + log("realmBase.digest", e); + return (credentials); + } + } + } + + /** + * Check credentials by binding to the directory as the user + * + * @param context The directory context + * @param user The User to be authenticated + * @param credentials Authentication credentials + * + * @exception NamingException if a directory server error occurs + */ + protected boolean bindAsUser(DirContext context, + JNDIUser user, + String credentials) + throws NamingException { + + if (credentials == null || user == null) + return (false); + + String dn = user.dn; + if (dn == null) + return (false); + + // Validate the credentials specified by the user + if ( getLogger().isDebugEnabled() ) { + log(" validating credentials by binding as the user"); + } + + // Set up security environment to bind as the user + context.addToEnvironment(Context.SECURITY_PRINCIPAL, dn); + context.addToEnvironment(Context.SECURITY_CREDENTIALS, credentials); + + // Elicit an LDAP bind operation + boolean validated = false; + try { + if ( getLogger().isDebugEnabled() ) { + log(" binding as " + dn); + } + //Attributes attr = + context.getAttributes("", null); + validated = true; + } + catch (AuthenticationException e) { + if ( getLogger().isDebugEnabled() ) { + log(" bind attempt failed" + e.getMessage()); + } + } + + // Restore the original security environment + if (connectionName != null) { + context.addToEnvironment(Context.SECURITY_PRINCIPAL, + connectionName); + } else { + context.removeFromEnvironment(Context.SECURITY_PRINCIPAL); + } + + if (connectionPassword != null) { + context.addToEnvironment(Context.SECURITY_CREDENTIALS, + connectionPassword); + } + else { + context.removeFromEnvironment(Context.SECURITY_CREDENTIALS); + } + + return (validated); + } + + + /** + * Return a String representing the value of the specified attribute. + * + * @param attrId Attribute name + * @param attrs Attributes containing the required value + * + * @exception NamingException if a directory server error occurs + */ + private String getAttributeValue(String attrId, Attributes attrs) + throws NamingException { + + if ( getLogger().isDebugEnabled() ) + log(" retrieving attribute " + attrId); + + if (attrId == null || attrs == null) + return null; + + Attribute attr = attrs.get(attrId); + if (attr == null) + return (null); + Object value = attr.get(); + if (value == null) + return (null); + String valueString = null; + if (value instanceof byte[]) + valueString = new String((byte[]) value); + else + valueString = value.toString(); + + return valueString; + } + + + /** + * Close any open connection to the directory server for this Realm. + * + * @param context The directory context to be closed + */ + protected void close(DirContext context) { + + // Do nothing if there is no opened connection + if (context == null) + return; + + // Close our opened connection + try { + if ( getLogger().isDebugEnabled() ) + log("Closing directory context"); + context.close(); + } catch (NamingException e) { + log("jndiRealm.close", e); + } + this.context = null; + + } + + + /** + * Open (if necessary) and return a connection to the configured + * directory server for this Realm. + * + * @exception NamingException if a directory server error occurs + */ + protected DirContext open() throws NamingException { + + // Do nothing if there is a directory server connection already open + if (context != null) + return (context); + + try { + + // Ensure that we have a directory context available + context = new InitialDirContext(getDirectoryContextEnvironment()); +/* + } catch (NamingException e) { + + connectionAttempt = 1; + + // log the first exception. + log("jndiRealm.exception", e); + + // Try connecting to the alternate url. + context = new InitialDirContext(getDirectoryContextEnvironment()); +*/ + } finally { + + // reset it in case the connection times out. + // the primary may come back. + connectionAttempt = 0; + + } + + return (context); + + } + + /** + * Create our directory context configuration. + * + * @return java.util.Hashtable the configuration for the directory context. + */ + protected Hashtable getDirectoryContextEnvironment() { + + Hashtable env = new Hashtable(); + + // Configure our directory context environment. + if ( getLogger().isDebugEnabled() && connectionAttempt == 0) + log("Connecting to URL " + connectionURL); + env.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory); + if (connectionName != null) + env.put(Context.SECURITY_PRINCIPAL, connectionName); + if (connectionPassword != null) + env.put(Context.SECURITY_CREDENTIALS, connectionPassword); + if (connectionURL != null && connectionAttempt == 0) + env.put(Context.PROVIDER_URL, connectionURL); + return env; + } + + // ------------------------------------------------------ Lifecycle Methods + + + /** + * Prepare for active use of the public methods of this Component. + * + * @exception LifecycleException if this component detects a fatal error + * that prevents it from being started + */ + public void start() throws Exception { + // Create a MessageDigest instance for credentials, if desired + if (digest != null) { + md = MessageDigest.getInstance(digest); + } + // Validate that we can open our connection + open(); + // Perform normal superclass initialization + } + + + /** + * Gracefully shut down active use of the public methods of this Component. + * + * @exception LifecycleException if this component detects a fatal error + * that needs to be reported + */ + public void stop() throws Exception { + // Close any open directory server connection + close(this.context); + + } + + public static void main(String[] args) { + JNDIAuthenticationStore aut = new JNDIAuthenticationStore(); + aut.enableLogging(new ConsoleLogger()); + aut.setConnectionName( "uid=admin,ou=system" ); + aut.setConnectionPassword( "secret" ); + aut.setConnectionURL( "ldap://localhost:10389" ); + //aut.setUserPassword ( "userPassword" ); + aut.setUserBase ( "dc=example,dc=com" ); + aut.setUserSearch ("(uid={0})" ); + try { + aut.start(); + if ( aut.authenticate ( "admin", "admin" ) ) { + System.out.println( "Authentication succeeded." ); + } else { + System.out.println( "Authentication failed" ); + } + } catch (Exception ex ) { + ex.printStackTrace(); + } + } + + + /** + * A private class representing a User + */ + static class JNDIUser { + String username = null; + String dn = null; + String password = null; + String mail = null; + String cn = null; + + JNDIUser(String username, String dn, String password, String mail, String cn) { + this.username = username; + this.dn = dn; + this.password = password; + this.mail = mail; + this.cn = cn; + } + + } +} + diff --git a/src/org/rapla/plugin/jndi/JNDIPlugin.java b/src/org/rapla/plugin/jndi/JNDIPlugin.java new file mode 100644 index 0000000..c3cb4e9 --- /dev/null +++ b/src/org/rapla/plugin/jndi/JNDIPlugin.java @@ -0,0 +1,68 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.jndi; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.jndi.internal.JNDIOption; +import org.rapla.plugin.jndi.internal.JNDITest; +import org.rapla.plugin.jndi.internal.RaplaJNDITestOnLocalhost; +import org.rapla.plugin.jndi.internal.RaplaJNDITestOnServer; +import org.rapla.plugin.jndi.internal.RaplaJNDITestRemoteServiceFactory; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.ServerService; +import org.rapla.storage.AuthenticationStore; + +public class JNDIPlugin implements PluginDescriptor { + public static final String PLUGIN_CLASS = JNDIPlugin.class.getName(); + public static final String PLUGIN_NAME = "Ldap or other JNDI Authentication"; + + public static final String JNDI_ON_SERVER = JNDIPlugin.class.getPackage().getName() + ".JNDIOnServer"; + public static final String JNDI_ON_LOCALHOST = JNDIPlugin.class.getPackage().getName() + ".JNDIOnLocalhost"; + + public String toString() { + return PLUGIN_NAME; + } + + public void provideServices(Container container, Configuration config) + { + if ( container.getContext().has( ServerService.ROLE) ){ + container.addContainerProvidedComponent( RaplaRemoteServiceFactory.ROLE, RaplaJNDITestRemoteServiceFactory.class.getName()); + // only add mail service on localhost + container.addContainerProvidedComponent( JNDITest.ROLE, RaplaJNDITestOnLocalhost.class.getName(), JNDI_ON_LOCALHOST , config); + } else { + // the following order is important for resolving, + // first add the service on the server + // then on localhost + // container.addContainerProvidedComponent( JNDITest.ROLE, RaplaJNDITestOnLocalhost.class.getName(), JNDI_ON_LOCALHOST , config); + container.addContainerProvidedComponent( JNDITest.ROLE, RaplaJNDITestOnServer.class.getName(), JNDI_ON_SERVER , config); + } + container.addContainerProvidedComponent( RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION,JNDIOption.class.getName(),JNDIPlugin.class.getName(), config); + + if ( !config.getAttributeAsBoolean("enabled", false) ) + return; + + container.addContainerProvidedComponent( AuthenticationStore.class.getName(), JNDIAuthenticationStore.class.getName(), PLUGIN_CLASS, config); + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + + + +} + diff --git a/src/org/rapla/plugin/jndi/internal/JNDIConf.java b/src/org/rapla/plugin/jndi/internal/JNDIConf.java new file mode 100644 index 0000000..ef83f4f --- /dev/null +++ b/src/org/rapla/plugin/jndi/internal/JNDIConf.java @@ -0,0 +1,15 @@ +package org.rapla.plugin.jndi.internal; + +public interface JNDIConf { + public static final String USER_BASE = "userBase"; + public static final String USER_SEARCH = "userSearch"; + public static final String USER_CN = "userCn"; + public static final String USER_MAIL = "userMail"; + public static final String USER_PASSWORD = "userPassword"; + public static final String DIGEST = "digest"; + public static final String CONTEXT_FACTORY = "contextFactory"; + public static final String CONNECTION_URL = "connectionURL"; + public static final String CONNECTION_PASSWORD = "connectionPassword"; + public static final String CONNECTION_NAME = "connectionName"; + +} diff --git a/src/org/rapla/plugin/jndi/internal/JNDIOption.java b/src/org/rapla/plugin/jndi/internal/JNDIOption.java new file mode 100644 index 0000000..1b8a960 --- /dev/null +++ b/src/org/rapla/plugin/jndi/internal/JNDIOption.java @@ -0,0 +1,219 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.jndi.internal; + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Locale; + +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.layout.TableLayout; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.DefaultPluginOption; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.plugin.jndi.JNDIPlugin; + +public class JNDIOption extends DefaultPluginOption implements OptionPanel,JNDIConf { + TableLayout tableLayout; + JPanel content; + + JTextField digest; + JTextField connectionName; + JTextField connectionPassword; + JTextField connectionURL; + JTextField contextFactory; + JTextField userPassword; + JTextField userMail; + JTextField userCn; + JTextField userSearch; + JTextField userBase; + + + + public JNDIOption(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected JPanel createPanel() throws RaplaException { + digest = newTextField(); + connectionName = newTextField(); + connectionPassword = newTextField(); + connectionURL = newTextField(); + contextFactory= newTextField(); + userPassword = newTextField(); + userMail = newTextField(); + userCn = newTextField(); + userSearch = newTextField(); + userBase = newTextField(); + + JPanel panel = super.createPanel(); + content = new JPanel(); + tableLayout = new TableLayout(); + tableLayout.insertColumn( 0, TableLayout.PREFERRED); + tableLayout.insertColumn( 1, 5); + tableLayout.insertColumn( 2, TableLayout.FILL); + tableLayout.insertColumn( 3, 5); + content.setLayout(tableLayout); + tableLayout.insertRow( 0, TableLayout.PREFERRED); + content.add( new JLabel("WARNING! Only enable plugin, if you have a LDAP Server running!"), "0,0,2,0"); + addRow(CONNECTION_NAME, connectionName); + addRow(CONNECTION_PASSWORD, connectionPassword ); + addRow(CONNECTION_URL, connectionURL ); + addRow(CONTEXT_FACTORY, contextFactory); + addRow(DIGEST, digest); + addRow(USER_PASSWORD, userPassword ); + addRow(USER_MAIL, userMail ); + addRow(USER_CN, userCn ); + addRow(USER_SEARCH, userSearch ); + addRow(USER_BASE, userBase ); + JButton testButton = new JButton("Test access"); + addRow("TestAccess", testButton ); + testButton.addActionListener( new ActionListener() + { + + public void actionPerformed(ActionEvent e) { + try + { + JNDITest test = (JNDITest)getContext().lookup(JNDITest.ROLE); + DefaultConfiguration conf = new DefaultConfiguration("test"); + StringBuffer buf = new StringBuffer(); + addChildren(conf); + String[] attributes = conf.getAttributeNames(); + for (int i=0;i 0) + { + return; + } + } + test.test(list,username,password); + { + DialogUI dialog =DialogUI.create( getContext(), getComponent(), true, "JNDI","JNDI Authentification successfull"); + dialog.start(); + } + } catch (Exception ex) + { + showException(ex, getComponent()); + } + + } + + }); + panel.add( content, BorderLayout.CENTER); + return panel; + } + + private JTextField newTextField() throws RaplaException { + final JTextField jTextField = new JTextField(); + addCopyPaste( jTextField); + return jTextField; + } + + private void addRow(String title, JComponent component) { + int row = tableLayout.getNumRow(); + tableLayout.insertRow( row, TableLayout.PREFERRED); + content.add(new JLabel(title), "0," + row); + content.add( component, "2," + row); + tableLayout.insertRow( row + 1, 5); + } + + protected void addChildren( DefaultConfiguration newConfig) { + setAttribute(newConfig,CONNECTION_NAME, connectionName); + setAttribute(newConfig,CONNECTION_PASSWORD, connectionPassword ); + setAttribute(newConfig,CONNECTION_URL, connectionURL ); + setAttribute(newConfig,CONTEXT_FACTORY, contextFactory); + setAttribute(newConfig,DIGEST, digest); + setAttribute(newConfig,USER_BASE, userBase ); + setAttribute(newConfig,USER_CN, userCn ); + setAttribute(newConfig,USER_MAIL, userMail ); + setAttribute(newConfig,USER_PASSWORD, userPassword ); + setAttribute(newConfig,USER_SEARCH, userSearch ); + } + + public void setAttribute( DefaultConfiguration newConfig, String attributeName, JTextField text) { + String value = text.getText().trim(); + if ( value.length() > 0) + newConfig.setAttribute( attributeName, value); + } + + public void readAttribute( String attributeName, JTextField text) { + readAttribute( attributeName, text, ""); + } + + public void readAttribute( String attributeName, JTextField text, String defaultValue) { + text.setText(config.getAttribute(attributeName, defaultValue)); + } + + protected void readConfig( Configuration config) { + super.readConfig( config ); + readAttribute("digest", digest); + readAttribute("connectionName", connectionName, "cn=Manager,dc=mycompany,dc=com" ); + readAttribute("connectionPassword", connectionPassword, "secret" ); + readAttribute("connectionURL", connectionURL, "ldap://localhost:389"); + readAttribute("contextFactory", contextFactory, "com.sun.jndi.ldap.LdapCtxFactory"); + readAttribute("userPassword", userPassword,"userPassword" ); + readAttribute("userMail", userMail,"mail" ); + readAttribute("userCn", userCn,"cn" ); + readAttribute("userSearch", userSearch,"(uid={0})" ); + readAttribute("userBase", userBase,"ou=people,dc=mycompany,dc=com" ); + } + + public void show() throws RaplaException { + super.show(); + } + + public void commit() throws RaplaException { + super.commit(); + } + + + /** + * @see org.rapla.gui.DefaultPluginOption#getDescriptorClassName() + */ + public String getDescriptorClassName() { + return JNDIPlugin.class.getName(); + } + + public String getName(Locale locale) { + return JNDIPlugin.PLUGIN_NAME; + } + +} diff --git a/src/org/rapla/plugin/jndi/internal/JNDITest.java b/src/org/rapla/plugin/jndi/internal/JNDITest.java new file mode 100644 index 0000000..ae20c10 --- /dev/null +++ b/src/org/rapla/plugin/jndi/internal/JNDITest.java @@ -0,0 +1,11 @@ +package org.rapla.plugin.jndi.internal; + +import org.rapla.framework.RaplaException; +import org.rapla.server.RemoteMethod; + +public interface JNDITest { + RemoteMethod TEST = new RemoteMethod("test", new String[] {"config","username","password"}); + String ROLE = JNDITest.class.getName(); + + public void test(String config,String username,String password) throws RaplaException; +} diff --git a/src/org/rapla/plugin/jndi/internal/PasswordEnterUI.java b/src/org/rapla/plugin/jndi/internal/PasswordEnterUI.java new file mode 100644 index 0000000..aa30114 --- /dev/null +++ b/src/org/rapla/plugin/jndi/internal/PasswordEnterUI.java @@ -0,0 +1,80 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.jndi.internal; + +import java.awt.GridLayout; + +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JTextField; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.RaplaWidget; + + +public class PasswordEnterUI extends RaplaGUIComponent + implements + RaplaWidget +{ + JPanel panel = new JPanel(); + GridLayout gridLayout1 = new GridLayout(); + // The Controller for this Dialog + + JLabel label1 = new JLabel(); + JLabel label2 = new JLabel(); + + JTextField tf1 = new JTextField(10); + JPasswordField tf2 = new JPasswordField(10); + + + public PasswordEnterUI(RaplaContext sm) throws RaplaException{ + super( sm); + panel.setLayout(gridLayout1); + gridLayout1.setRows( 2); + gridLayout1.setColumns(2); + gridLayout1.setHgap(10); + gridLayout1.setVgap(10); + panel.add(label1); + panel.add(tf1); + + panel.add(label2); + panel.add(tf2); + label1.setText(getString("username") + ":"); + label2.setText(getString("password") + ":"); + } + + public JComponent getComponent() { + return panel; + } + + public String getUsername() { + return tf1.getText(); + } + + public char[] getNewPassword() { + return tf2.getPassword(); + } +} + + + + + + + + + diff --git a/src/org/rapla/plugin/jndi/internal/RaplaJNDITestOnLocalhost.java b/src/org/rapla/plugin/jndi/internal/RaplaJNDITestOnLocalhost.java new file mode 100644 index 0000000..1ff366b --- /dev/null +++ b/src/org/rapla/plugin/jndi/internal/RaplaJNDITestOnLocalhost.java @@ -0,0 +1,84 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.jndi.internal; + +import java.io.IOException; +import java.io.OutputStream; +import java.text.ParseException; +import java.util.Map; +import java.util.TreeMap; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.jndi.JNDIAuthenticationStore; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; + +public class RaplaJNDITestOnLocalhost extends RaplaComponent implements RemoteService, JNDITest +{ + RemoteSession session; + public RaplaJNDITestOnLocalhost( RaplaContext context) throws RaplaException { + super( context ); + } + + public void setSession ( RemoteSession session) { + this.session = session; + } + + public void test(String config,String username,String password ) throws RaplaException + { + String[] test = config.split("RAPLANEXT"); + Map map = new TreeMap(); + for (int i =0;i + * MailToUserInterface mail = (MailToUserInterface) getContext().loopup( MailToUserInterface.ROLE ); + * mail.sendMail( subject, body ); + * + * + * Example 2: + * + * + * MailInterface mail = (MailInterface) getContext().loopup( MailInterface.ROLE ); + * mail.sendMail( senderMail, recipient, subject, body ); + * + + * @see org.rapla.components.mail.MailInterface + * @see org.rapla.plugin.mail.MailToUserInterface + */ +public class MailPlugin implements PluginDescriptor +{ + public static final String MAIL_ON_SERVER = MailPlugin.class.getPackage().getName() + ".MailOnServer"; + public static final String MAIL_ON_LOCALHOST = MailPlugin.class.getPackage().getName() + ".MailOnLocalhost"; + public static final String DEFAULT_SENDER_ENTRY = "org.rapla.plugin.mail.DefaultSender"; + + public static String DEFAULT_MAIL_CLASS = org.rapla.components.mail.SmtpClient.class.getName(); + + public String toString() { + return "Mail Service"; + } + + public void provideServices(Container container, Configuration config) { + container.addContainerProvidedComponent( RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION,MailOption.class.getName(),MailPlugin.class.getName(), config); + + if ( !config.getAttributeAsBoolean("enabled", false) ) + return; + + String mailClass =config.getChild("mailinterface").getValue( DEFAULT_MAIL_CLASS); + // Use the mail API + if ( config.getAttributeAsBoolean("usemailapi", false)) + { + mailClass = MailapiClient.class.getName(); + } + + container.addContainerProvidedComponent( MailInterface.ROLE, mailClass, mailClass , config); + + if ( container.getContext().has( ServerService.ROLE) ){ + container.addContainerProvidedComponent( RaplaRemoteServiceFactory.ROLE, MailToUserRemoteServiceFactory.class.getName()); + // only add mail service on localhost + container.addContainerProvidedComponent( MailToUserInterface.ROLE, RaplaMailToUserOnLocalhost.class.getName(), MAIL_ON_LOCALHOST , config); + } else { + // the following order is important for resolving, + // first add the service on the server + // then on localhost + container.addContainerProvidedComponent( MailToUserInterface.ROLE, RaplaMailToUserOnServer.class.getName(),MAIL_ON_SERVER, config); + container.addContainerProvidedComponent( MailToUserInterface.ROLE, RaplaMailToUserOnLocalhost.class.getName(), MAIL_ON_LOCALHOST , config); + } + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } +} + diff --git a/src/org/rapla/plugin/mail/MailToUserInterface.java b/src/org/rapla/plugin/mail/MailToUserInterface.java new file mode 100644 index 0000000..d91c5ad --- /dev/null +++ b/src/org/rapla/plugin/mail/MailToUserInterface.java @@ -0,0 +1,13 @@ +package org.rapla.plugin.mail; + +import org.rapla.framework.RaplaException; +import org.rapla.server.RemoteMethod; + +public interface MailToUserInterface +{ + RemoteMethod SEND_MAIL = new RemoteMethod("sendMail", new String[] {"username","subject","mailBody"}); + + String ROLE = MailToUserInterface.class.getName(); + + void sendMail(String username,String subject, String body) throws RaplaException; +} diff --git a/src/org/rapla/plugin/mail/internal/MailOption.java b/src/org/rapla/plugin/mail/internal/MailOption.java new file mode 100644 index 0000000..d3c1ec2 --- /dev/null +++ b/src/org/rapla/plugin/mail/internal/MailOption.java @@ -0,0 +1,108 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.mail.internal; + +import java.awt.BorderLayout; +import java.util.Locale; + +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.components.layout.TableLayout; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.DefaultPluginOption; +import org.rapla.gui.OptionPanel; +import org.rapla.plugin.mail.MailPlugin; + +public class MailOption extends DefaultPluginOption implements OptionPanel { + + JTextField mailServer = new JTextField(); + RaplaNumber smtpPortField = new RaplaNumber(new Integer(25), new Integer(0),null,false); + JTextField defaultSender = new JTextField(); + JCheckBox booleanField = new JCheckBox(); + + public MailOption(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected JPanel createPanel() throws RaplaException { + JPanel panel = super.createPanel(); + JPanel content = new JPanel(); + addCopyPaste( mailServer); + addCopyPaste( defaultSender); + double[][] sizes = new double[][] { + {5,TableLayout.PREFERRED, 5,TableLayout.FILL,5} + ,{TableLayout.PREFERRED,5,TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED} + }; + TableLayout tableLayout = new TableLayout(sizes); + content.setLayout(tableLayout); + content.add(new JLabel("Mail Server"), "1,0"); + content.add( mailServer, "3,0"); + content.add(new JLabel("Mail Port"), "1,2"); + content.add( smtpPortField, "3,2"); + content.add(new JLabel("Use Java Mail API*"), "1,4"); + content.add(booleanField,"3,4"); + content.add(new JLabel("Default Sender"), "1,6"); + content.add( defaultSender, "3,6"); + content.add( new JLabel("*Require the mailapi-jars on classpath (e.g.WEB-INF/lib)"), "3,8"); + + panel.add( content, BorderLayout.CENTER); + return panel; + } + + + protected void addChildren( DefaultConfiguration newConfig) { + DefaultConfiguration smtpPort = new DefaultConfiguration("smtp-port"); + DefaultConfiguration smtpServer = new DefaultConfiguration("smtp-host"); + smtpPort.setValue(smtpPortField.getNumber().intValue() ); + smtpServer.setValue( mailServer.getText()); + newConfig.setAttribute( "usemailapi", booleanField.isSelected() ); + newConfig.addChild( smtpPort ); + newConfig.addChild( smtpServer ); + } + + protected void readConfig( Configuration config) { + booleanField.setSelected( config.getAttributeAsBoolean("usemailapi", false)); + mailServer.setText( config.getChild("smtp-host").getValue("localhost")); + smtpPortField.setNumber( new Integer(config.getChild("smtp-port").getValueAsInteger(25))); + } + + public void show() throws RaplaException { + super.show(); + defaultSender.setText( preferences.getEntryAsString(MailPlugin.DEFAULT_SENDER_ENTRY,"rapla")); + } + + public void commit() throws RaplaException { + super.commit(); + preferences.putEntry(MailPlugin.DEFAULT_SENDER_ENTRY,String.valueOf( defaultSender.getText() )); + } + + + /** + * @see org.rapla.gui.DefaultPluginOption#getDescriptorClassName() + */ + public String getDescriptorClassName() { + return MailPlugin.class.getName(); + } + + public String getName(Locale locale) { + return "Mail Plugin"; + } + +} diff --git a/src/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.java b/src/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.java new file mode 100644 index 0000000..d9717ce --- /dev/null +++ b/src/org/rapla/plugin/mail/internal/MailToUserRemoteServiceFactory.java @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.mail.internal; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; + +public class MailToUserRemoteServiceFactory extends RaplaComponent implements RaplaRemoteServiceFactory +{ + public MailToUserRemoteServiceFactory( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public RemoteService createRemoteService(final RemoteSession session) throws RaplaException + { + if ( session == null ) + { + throw new RaplaException("Need to login first"); + } + RaplaMailToUserOnLocalhost service = new RaplaMailToUserOnLocalhost( getContext() ); + service.setSession( session ); + return service; + } + +} + diff --git a/src/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.java b/src/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.java new file mode 100644 index 0000000..eaf442f --- /dev/null +++ b/src/org/rapla/plugin/mail/internal/RaplaMailToUserOnLocalhost.java @@ -0,0 +1,84 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.mail.internal; + +import java.io.IOException; +import java.io.OutputStream; +import java.text.ParseException; +import java.util.Map; + +import org.rapla.components.mail.MailException; +import org.rapla.components.mail.MailInterface; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.mail.MailPlugin; +import org.rapla.plugin.mail.MailToUserInterface; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; + +public class RaplaMailToUserOnLocalhost extends RaplaComponent implements MailToUserInterface, RemoteService +{ + RemoteSession session; + + public RaplaMailToUserOnLocalhost( RaplaContext context) throws RaplaException { + super( context ); + } + + public void setSession ( RemoteSession session) { + this.session = session; + } + + public void sendMail(String userName,String subject, String body) throws RaplaException { + User recipientUser = getQuery().getUser( userName ); + // O.K. We need to generate the mail + String recipientEmail = recipientUser.getEmail(); + if (recipientEmail == null || recipientEmail.trim().length() == 0) { + getLogger().warn("No email adress specified for user " + + recipientUser.getUsername() + + " Can't send mail."); + return; + } + + + final MailInterface mail = (MailInterface)getContext().lookup(MailInterface.ROLE); + ClientFacade facade = (ClientFacade) getContext().lookup(ClientFacade.ROLE); + Preferences prefs = facade.getPreferences( null); + final String defaultSender = prefs.getEntryAsString( MailPlugin.DEFAULT_SENDER_ENTRY, "rapla"); + try { + mail.sendMail( defaultSender, recipientEmail,subject, body); + } catch (MailException ex) { + throw new RaplaException( ex ); + } + if ( session != null) { + session.getLogger().info("Email send to user " + userName); + } + + } + + public void remoteMethodCall( String methodName, Map args, OutputStream out ) throws RaplaException, IOException, ParseException + { + if (SEND_MAIL.is( methodName )) + { + String username = SEND_MAIL.value( args, 0); + String subject= SEND_MAIL.value( args, 1); + String body= SEND_MAIL.value( args, 2); + sendMail( username, subject, body); + } + + } +} + diff --git a/src/org/rapla/plugin/mail/internal/RaplaMailToUserOnServer.java b/src/org/rapla/plugin/mail/internal/RaplaMailToUserOnServer.java new file mode 100644 index 0000000..386969d --- /dev/null +++ b/src/org/rapla/plugin/mail/internal/RaplaMailToUserOnServer.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.mail.internal; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.mail.MailToUserInterface; +import org.rapla.server.RemoteServiceCaller; + +/** RemoteStub */ +public class RaplaMailToUserOnServer extends RaplaComponent implements MailToUserInterface +{ + + public RaplaMailToUserOnServer( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public void sendMail( String username, String subject, String mailBody ) throws RaplaException + { + RemoteServiceCaller remote =(RemoteServiceCaller) getContext().lookup( RemoteServiceCaller.ROLE); + remote.call( MailToUserRemoteServiceFactory.class.getName(),SEND_MAIL, new String[] {username, subject,mailBody}); + } + +} + diff --git a/src/org/rapla/plugin/monthview/HTMLMonthViewPage.java b/src/org/rapla/plugin/monthview/HTMLMonthViewPage.java new file mode 100644 index 0000000..fbb4db7 --- /dev/null +++ b/src/org/rapla/plugin/monthview/HTMLMonthViewPage.java @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.monthview; + +import java.util.Calendar; +import java.util.Set; + +import org.rapla.components.calendarview.html.AbstractHTMLView; +import org.rapla.components.calendarview.html.HTMLMonthView; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.plugin.abstractcalendar.AbstractHTMLCalendarPage; +import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; + +public class HTMLMonthViewPage extends AbstractHTMLCalendarPage +{ + public HTMLMonthViewPage( RaplaContext context, CalendarModel calendarModel ) throws RaplaException + { + super( context, calendarModel ); + } + + protected AbstractHTMLView createCalendarView() { + HTMLMonthView monthView = new HTMLMonthView(); + CalendarOptions opt = getCalendarOptions(); + Set excludeDays = opt.getExcludeDays(); + monthView.setExcludeDays( excludeDays ); + return monthView; + } + + protected RaplaBuilder createBuilder() throws RaplaException { + RaplaBuilder builder = super.createBuilder(); + builder.setSmallBlocks( true ); + + GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + boolean compactColumns = getCalendarOptions().isCompactColumns() || builder.getAllocatables().size() ==0 ; + strategy.setFixedSlotsEnabled( !compactColumns); + builder.setBuildStrategy( strategy ); + + return builder; + } + + protected int getIncrementSize() { + return Calendar.MONTH; + } + +} + diff --git a/src/org/rapla/plugin/monthview/MonthViewFactory.java b/src/org/rapla/plugin/monthview/MonthViewFactory.java new file mode 100644 index 0000000..f5df926 --- /dev/null +++ b/src/org/rapla/plugin/monthview/MonthViewFactory.java @@ -0,0 +1,70 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.monthview; + +import javax.swing.Icon; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.images.Images; +import org.rapla.servletpages.RaplaPageGenerator; + +public class MonthViewFactory extends RaplaComponent implements ViewFactory +{ + public MonthViewFactory( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public final static String MONTH_VIEW = "month"; + + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException + { + return new SwingMonthCalendar( context, model, editable); + } + + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException + { + return new HTMLMonthViewPage( context, model); + } + + public String getViewId() + { + return MONTH_VIEW; + } + + public String getName() + { + return getString(MONTH_VIEW); + } + + Icon icon; + public Icon getIcon() + { + if ( icon == null) { + icon = Images.getIcon("/org/rapla/plugin/monthview/images/month.png"); + } + return icon; + } + + public String getMenuSortKey() { + return "C"; + } + + +} + diff --git a/src/org/rapla/plugin/monthview/MonthViewPlugin.java b/src/org/rapla/plugin/monthview/MonthViewPlugin.java new file mode 100644 index 0000000..fe8e30d --- /dev/null +++ b/src/org/rapla/plugin/monthview/MonthViewPlugin.java @@ -0,0 +1,49 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.monthview; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; + +public class MonthViewPlugin implements PluginDescriptor +{ + public String toString() { + return "Month-View"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", true)) + return; + + container.addContainerProvidedComponent + ( + RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + ,MonthViewFactory.class.getName() + ,MonthViewFactory.MONTH_VIEW + ,null + ); + } + + public Object getPluginMetaInfos( String key ) + { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return Boolean.TRUE; + } + return null; + } + +} + diff --git a/src/org/rapla/plugin/monthview/SwingMonthCalendar.java b/src/org/rapla/plugin/monthview/SwingMonthCalendar.java new file mode 100644 index 0000000..58be5f5 --- /dev/null +++ b/src/org/rapla/plugin/monthview/SwingMonthCalendar.java @@ -0,0 +1,132 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.monthview; + +import java.awt.Color; +import java.util.Calendar; +import java.util.Date; +import java.util.Set; + +import javax.swing.JComponent; + +import org.rapla.components.calendar.WeekendHighlightRenderer; +import org.rapla.components.calendarview.swing.AbstractSwingCalendar; +import org.rapla.components.calendarview.swing.SwingMonthView; +import org.rapla.components.calendarview.swing.ViewListener; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Appointment; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.plugin.abstractcalendar.AbstractRaplaSwingCalendar; +import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; +import org.rapla.plugin.abstractcalendar.RaplaCalendarViewListener; +import org.rapla.plugin.abstractcalendar.SwingRaplaBuilder; + + +public class SwingMonthCalendar extends AbstractRaplaSwingCalendar +{ + public SwingMonthCalendar(RaplaContext sm,CalendarModel settings, boolean editable) throws RaplaException { + super( sm, settings, editable); + } + + public static Color DATE_NUMBER_COLOR_HIGHLIGHTED = Color.black; + + protected AbstractSwingCalendar createView(boolean editable) { + boolean showScrollPane = editable; + + /** renderer for weekdays in month-view */ + final WeekendHighlightRenderer weekdayRenderer = new WeekendHighlightRenderer(); + return new SwingMonthView( showScrollPane ) { + private static final long serialVersionUID = 1L; + + protected JComponent createSlotHeader(int weekday) { + JComponent component = super.createSlotHeader( weekday ); + if (isEditable()) { + component.setOpaque(true); + Color color = weekdayRenderer.getBackgroundColor( weekday, 1, 1, 1); + component.setBackground(color); + } + return component; + } + + protected Color getNumberColor( Date date ) + { + boolean today = DateTools.isSameDay(getQuery().today().getTime(), date.getTime()); + if ( today) + { + return DATE_NUMBER_COLOR_HIGHLIGHTED; + } + else + { + return super.getNumberColor( date ); + } + } + }; + } + + protected ViewListener createListener() throws RaplaException { + return new RaplaCalendarViewListener(getContext(), model, view) { + /* if the selcted view is a month-view or compact-view, the start-time will not be the selected time, + * but the time of the start-time of the appointment instead. The start-date is taken from the passed date. + * */ + protected Date calcStartDate(Date date, Appointment appointment) { + return getRaplaLocale().toDate( date, appointment.getStart() ); + } + + }; + } + + protected RaplaBuilder createBuilder() throws RaplaException + { + RaplaBuilder builder = new SwingRaplaBuilder(getContext()); + builder.setRepeatingVisible( view.isEditable()); + builder.setEditingUser( getUser() ); + builder.setExceptionsExcluded( !getCalendarOptions().isExceptionsVisible() || !view.isEditable()); + builder.setFromModel( model, view.getStartDate(), view.getEndDate() ); + + builder.setSmallBlocks( true ); + + GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + boolean compactColumns = getCalendarOptions().isCompactColumns() || builder.getAllocatables().size() ==0 ; + strategy.setFixedSlotsEnabled( !compactColumns); + builder.setBuildStrategy( strategy ); + + return builder; + } + + protected void configureView() throws RaplaException { + CalendarOptions calendarOptions = getCalendarOptions(); + Set excludeDays = calendarOptions.getExcludeDays(); + + view.setExcludeDays( excludeDays ); + if ( !view.isEditable() ) { + view.setSlotSize( model.getSize()); + } else { + view.setSlotSize( 150 ); + } + view.setToDate(model.getSelectedDate()); + } + + public int getIncrementSize() + { + return Calendar.MONTH; + } + + + +} diff --git a/src/org/rapla/plugin/monthview/images/month.png b/src/org/rapla/plugin/monthview/images/month.png new file mode 100644 index 0000000000000000000000000000000000000000..205a545d5e745ae1abe15bc8678068fe2ee6d14b GIT binary patch literal 966 zcmV;%13CPOP)3q>n}iJ}lp&<7Bd^buUT^cA}3#*JOMv7j!xkk&;P zp_@V%B2onx1&K|Zs1PGGNGw)k(uGcCGWT>5XPgfc-KcXQ%$@Ub&zW<7GdX}=UIU<~ z{=E#gd_a8;H%R$V2_zBTb%)4)2-oHKk^%q3A*#sb}8FhZMAb^O#Zw#CpY61x0oNABE z$&4l3?&FlErY87bG{f1ME&#=~wKeST@1t6+);6MAcMLf_Jw-=Hhk386DoUl2E6K^p z3A(zvT>A6#bA&=6`2BuJl7y8{ACW&ga&_j<;NT!8CMFPxL~I7eZtG4alj!g7x7kHe zgecx_cX@eHcDI+8NR;Pg$W)7aeHL@X9VC=^1mScELguJ}wQ z1I8FMO+#mAr@4>d@Du!g|AUGV1Ob8|*t+5K`A{enP^naKb#;Z_-rhUoFD@={czB3t zG>WaQEf_hSok2Jp#=*e>j*pLB@EX^AK5uKe)o*HQ3ILEwrBLs|WLZWm7BfK(hr`&} z*>M%a6-B|&&=4d^G82@`WfTep^S)ZGA{vc0WJcF@lu9LxkB>L>%jI%V6y@&D7>?Gf zEX!zXYeTtQh9pUN2;`zDA|8+5>1zcz5{cXoupkJwBg$s8SYBSn+}zyL0Gvo9nvHWd z5?W!szP@(p9u45u)>eNbfTyRYvAetbGyo?OiI&C1MQ;E+Ha4a&EiHKi;6Na7?QJ|Kz|7G;HaR)TXJ%#^ju5$A&Kygf z02`7@r7$`=TK5=xdU~L$Dze!u*4NjOOeWobl%4_j?Cgv^2EdI*Su4OcW>!~MeO7=C zCKzMb+uOtJ?5s`alyo|c`T2QlY;1stP%IX4-%M?LX{?5Yg@rcf(ES(yTcs|*0OXO8 ok 0); + } + + public void actionPerformed(ActionEvent evt) { + try { + if (type == DELETE) { + delete(selection); + } else if (type == NOTIFY_IF_OWNER) { + updateNotifyIfOwner(); + } else if (type == ADD) { + showAddDialog(); + } + } catch (Exception ex) { + showException(ex,getComponent()); + } + } + + private void showAddDialog() throws RaplaException, ConfigurationException { + DialogUI dialog; + RaplaTree treeSelection = new RaplaTree(); + treeSelection.setMultiSelect(true); + treeSelection.getTree().setCellRenderer(getTreeFactory().createRenderer()); + + treeSelection.exchangeTreeModel(getTreeFactory().createClassifiableModel(getQuery().getAllocatables())); + treeSelection.setMinimumSize(new java.awt.Dimension(300, 200)); + treeSelection.setPreferredSize(new java.awt.Dimension(400, 260)); + dialog = DialogUI.create( + getContext() + ,getComponent() + ,true + ,treeSelection + ,new String[] { getString("add"),getString("cancel")}); + dialog.setTitle(""); + dialog.start(); + if (dialog.getSelectedIndex() == 0) { + Iterator it = treeSelection.getSelectedElements().iterator(); + while (it.hasNext()) { + add((Allocatable) it.next()); + } + } + } + } + +} diff --git a/src/org/rapla/plugin/notification/NotificationPlugin.java b/src/org/rapla/plugin/notification/NotificationPlugin.java new file mode 100644 index 0000000..a598376 --- /dev/null +++ b/src/org/rapla/plugin/notification/NotificationPlugin.java @@ -0,0 +1,49 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.notification; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; + +/** Users can subscribe for allocation change notifications for selected resources or persons.*/ + +public class NotificationPlugin implements PluginDescriptor +{ + public static final String RESOURCE_FILE =NotificationPlugin.class.getPackage().getName() + ".NotificationResources"; + public static final String PLUGIN_CLASS = NotificationPlugin.class.getName(); + static boolean ENABLE_BY_DEFAULT = false; + + public String toString() { + return "Notification Service"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT) ) + return; + + container.addContainerProvidedComponent( I18nBundle.ROLE, I18nBundleImpl.class.getName(), RESOURCE_FILE,I18nBundleImpl.createConfig( RESOURCE_FILE ) ); + container.addContainerProvidedComponent( RaplaExtensionPoints.USER_OPTION_PANEL_EXTENSION, NotificationOption.class.getName(),PLUGIN_CLASS, config); + container.addContainerProvidedComponent( RaplaExtensionPoints.SERVER_EXTENSION, NotificationService.class.getName(), PLUGIN_CLASS,config); + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + +} + diff --git a/src/org/rapla/plugin/notification/NotificationResources.xml b/src/org/rapla/plugin/notification/NotificationResources.xml new file mode 100644 index 0000000..6135295 --- /dev/null +++ b/src/org/rapla/plugin/notification/NotificationResources.xml @@ -0,0 +1,80 @@ + + + + + Notification options + Benachrichtigungs Optionen + Options de notification + Notificaciones + + + Rapla: Allocation change of [{0}] + Rapla: Reservierungsbenachrichtigung [{0}] + Rapla : Changement d'allocation pour [{0}] + Rapla : Cambio de asignación para [{0}] + + + + The following allocation changes have been made: + Die folgenden Belegungsänderungen wurden vorgenommen: + Les changement d'allocation suivants ont été faits: + Se han hecho los siguientes cambios de asignación: + + + + New appointment for [{0}]: + Neuer Termin für [{0}]: + Nouvelle réservation pour [{0}] : + Nueva cita para [{0}] + + + + Appointment changed for [{0}] from: + Termin verändert für [{0}] von: + Changement d''horaire pour [{0}] c''était : + Cambio de cita para [{0}] + + + + Removed appointment for [{0}]: + Termin für [{0}] gelöscht: + Libération de [{0}] le : + Se eliminó la cita para [{0}] + + + to + nach + cela devient : + para + + + Modified by {0} + verändert durch {0} + Modifié par {0} + Modificado por {0} + + + Complete event + Komplette Veranstaltung + Description complète de l'évènement + Descriptción completa del evento + + + + Also notify on modification of own events. + Benachrichtige auch bei Änderungen an eigenen Veranstaltungen. + Je veux être notifié pour les changements faits par moi-même + Quiero ser notificado de los cambios hechos por mí mismo + + + Mail for every allocation change of the listed resources and persons + Mail bei Belegungsänderung von folgenden Ressourcen und Personen + Envoit de Mail à chaque changement d'allocation des resources/personnes listées + Envío de correo a cada cambio de asignación de recursos/personas listado + + + + + + + diff --git a/src/org/rapla/plugin/notification/NotificationService.java b/src/org/rapla/plugin/notification/NotificationService.java new file mode 100644 index 0000000..887d9ef --- /dev/null +++ b/src/org/rapla/plugin/notification/NotificationService.java @@ -0,0 +1,349 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.notification; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.rapla.components.util.Command; +import org.rapla.components.util.CommandQueue; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.facade.AllocationChangeEvent; +import org.rapla.facade.AllocationChangeListener; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.mail.MailPlugin; +import org.rapla.plugin.mail.MailToUserInterface; + +/** Sends Notification Mails on allocation change.*/ + +public class NotificationService extends RaplaComponent + implements + AllocationChangeListener +{ + public final static String ALLOCATIONLISTENERS_CONFIG = "org.rapla.plugin.notification.allocationlisteners"; + public final static String NOTIFY_IF_OWNER_CONFIG = "org.rapla.plugin.notification.notify_if_owner"; + + ClientFacade clientFacade; + MailToUserInterface mailToUserInterface; + protected CommandQueue mailQueue; + + public NotificationService(RaplaContext sm) throws RaplaException + { + super( sm); + + mailToUserInterface = (MailToUserInterface) sm.lookup( MailToUserInterface.ROLE + "/" + MailPlugin.MAIL_ON_LOCALHOST ); + clientFacade = (ClientFacade) sm.lookup(ClientFacade.ROLE); + + setChildBundleName( NotificationPlugin.RESOURCE_FILE ); + + mailQueue = org.rapla.components.util.CommandQueue.createCommandQueue(); + clientFacade.addAllocationChangedListener(this); + getLogger().info("NotificationServer Plugin started"); + } + + public void changed(AllocationChangeEvent[] changeEvents) { + try { + getLogger().debug("TRIGGERD"); + + User[] users = clientFacade.getUsers(); + List mailList = new ArrayList(); + for ( int i=0;i< users.length;i++) { + User user = users[i]; + Preferences preferences = clientFacade.getPreferences(user); + Map allocatableMap ; + if (preferences != null && preferences.getEntry(ALLOCATIONLISTENERS_CONFIG)!= null ) { + allocatableMap = ((RaplaMap)(preferences.getEntry(ALLOCATIONLISTENERS_CONFIG))); + }else { + allocatableMap = new HashMap(); + } + + + if ( allocatableMap.size()> 0) + { + boolean notifyIfOwner = preferences.getEntryAsBoolean(NOTIFY_IF_OWNER_CONFIG, false); + AllocationMail mail = getAllocationMail( new HashSet(allocatableMap.values()), changeEvents, preferences.getOwner(),notifyIfOwner); + if (mail != null) { + mailList.add(mail); + } + + } + } + MailCommand mailCommand = new MailCommand(mailList); + mailQueue.enqueue(mailCommand); + } catch (RaplaException ex) { + getLogger().error("Can't trigger notification service." + ex.getMessage(),ex); + } + } + + public boolean isInvokedOnAWTEventQueue() { + return false; + } + + AllocationMail getAllocationMail(Collection allocatables, AllocationChangeEvent[] changeEvents, User owner,boolean notifyIfOwner) throws RaplaException { + + HashMap reservationMap = null; + HashSet changedAllocatables = null; + for ( int i = 0; i< changeEvents.length; i++) { + if (reservationMap == null) + reservationMap = new HashMap(4); + AllocationChangeEvent event = changeEvents[i]; + Reservation reservation = event.getNewReservation(); + if (!allocatables.contains(event.getAllocatable())) + continue; + if (!notifyIfOwner && owner.equals(reservation.getOwner())) + continue; + List eventList = (List)reservationMap.get(reservation); + if (eventList == null) { + eventList = new ArrayList(3); + reservationMap.put(reservation,eventList); + changedAllocatables = new HashSet(); + } + changedAllocatables.add(event.getAllocatable()); + eventList.add(event); + } + if ( reservationMap == null) { + return null; + } + Set keySet = reservationMap.keySet(); + // Check if we have any notifications. + if (keySet.size() == 0) + return null; + + AllocationMail mail = new AllocationMail(); + StringBuffer buf = new StringBuffer(); + buf.append(getString("mail_body") + "\n"); + Iterator it = keySet.iterator(); + while (it.hasNext()) { + Reservation reservation = (Reservation)it.next(); + List eventList = (List) reservationMap.get(reservation); + printEvents(buf,reservation,eventList); + buf.append("\n\n"); + } + + it = changedAllocatables.iterator(); + StringBuffer allocatableNames = null; + while (it.hasNext()) { + if (allocatableNames == null) { + allocatableNames = new StringBuffer(); + } else { + allocatableNames.append(", "); + } + allocatableNames.append(((Allocatable)it.next()).getName(getLocale())); + } + mail.subject = getI18n().format("mail_subject",allocatableNames.toString()); + mail.body = buf.toString(); + mail.recipient = owner.getUsername(); + return mail; + } + + private void printEvents(StringBuffer buf,Reservation reservation,List eventList) { + buf.append("\n"); + buf.append("-----------"); + buf.append(getString("changes")); + buf.append("-----------"); + buf.append("\n"); + buf.append("\n"); + buf.append(getString("reservation")); + buf.append(": "); + buf.append(reservation.getName(getLocale())); + buf.append("\n"); + buf.append("\n"); + Iterator it = eventList.iterator(); + boolean removed = true; + while (it.hasNext()) { + AllocationChangeEvent event = (AllocationChangeEvent)it.next(); + if (!event.getType().equals( AllocationChangeEvent.REMOVE )) + removed = false; + + buf.append(getI18n().format("appointment." + event.getType() + ,event.getAllocatable().getName(getLocale())) + ); + if (!event.getType().equals(AllocationChangeEvent.ADD )) { + printAppointment (buf, event.getOldAppointment() ); + } + if (event.getType().equals( AllocationChangeEvent.CHANGE )) { + buf.append(getString("moved_to")); + } + if (!event.getType().equals( AllocationChangeEvent.REMOVE )) { + printAppointment (buf, event.getNewAppointment() ); + } + if ( event.getUser() != null) { + buf.append("\n"); + buf.append( getI18n().format("modified_by", event.getUser().getUsername() ) ); + } + buf.append("\n"); + buf.append("\n"); + } + + if (removed) + return; + + buf.append("-----------"); + buf.append(getString("complete_reservation")); + buf.append("-----------"); + buf.append("\n"); + buf.append("\n"); + buf.append(getString("reservation.owner")); + buf.append(": "); + buf.append(reservation.getOwner().getUsername()); + buf.append(" <"); + buf.append(reservation.getOwner().getName()); + buf.append(">"); + buf.append("\n"); + buf.append(getString("reservation_type")); + buf.append(": "); + Classification classification = reservation.getClassification(); + buf.append( classification.getType().getName(getLocale()) ); + Attribute[] attributes = classification.getAttributes(); + for (int i=0; i< attributes.length; i++) { + Object value = classification.getValue(attributes[i]); + if (value == null) + continue; + buf.append("\n"); + buf.append(attributes[i].getName(getLocale())); + buf.append(": "); + buf.append(classification.getValueAsString(attributes[i], getLocale())); + } + + Allocatable[] resources = reservation.getResources(); + if (resources.length>0) { + buf.append("\n"); + buf.append( getString("resources")); + buf.append( ": "); + printAllocatables(buf,reservation,resources); + } + Allocatable[] persons = reservation.getPersons(); + if (persons.length>0) { + buf.append("\n"); + buf.append( getString("persons")); + buf.append( ": "); + printAllocatables(buf,reservation,persons); + } + Appointment[] appointments = reservation.getAppointments(); + if (appointments.length>0) { + buf.append("\n"); + buf.append("\n"); + buf.append( getString("appointments")); + buf.append( ": "); + buf.append("\n"); + } + for (int i = 0;i0) + buf.append(", "); + buf.append( getAppointmentFormater().getShortSummary( restriction[i]) ); + } + buf.append(")"); + } + + + class AllocationMail { + String recipient; + String subject; + String body; + public String toString() { + return "TO Username: " + recipient + "\n" + + "Subject: " + subject + "\n" + + body; + } + } + + final class MailCommand implements Command { + List mailList; + public MailCommand(List mailList) { + this.mailList = mailList; + } + + public void execute() { + Iterator it = mailList.iterator(); + while (it.hasNext()) { + AllocationMail mail = (AllocationMail) it.next(); + if (getLogger().isDebugEnabled()) + getLogger().debug("Sending mail " + mail.toString()); + else if (getLogger().isInfoEnabled()) + getLogger().info("AllocationChange. Sending mail to " + mail.recipient); + try { + mailToUserInterface.sendMail(mail.recipient, mail.subject, mail.body ); + getLogger().info("AllocationChange. Mail sent."); + } catch (RaplaException ex) { + getLogger().error("Could not send mail to " + mail.recipient + " Cause: " + ex.getMessage(), ex); + } + } + } + + }; + + +} + diff --git a/src/org/rapla/plugin/occupationview/AllocationCell.java b/src/org/rapla/plugin/occupationview/AllocationCell.java new file mode 100644 index 0000000..7d4cea3 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/AllocationCell.java @@ -0,0 +1,25 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Bob Jordaens | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.occupationview; + +import org.rapla.entities.domain.Allocatable; + +public class AllocationCell { + + Allocatable allocatable; + + public AllocationCell(Allocatable allocatable) { + this. allocatable = allocatable; + } +} \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/ColumnGroup.java b/src/org/rapla/plugin/occupationview/ColumnGroup.java new file mode 100644 index 0000000..3cc1ea1 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/ColumnGroup.java @@ -0,0 +1,178 @@ +package org.rapla.plugin.occupationview; + +import java.awt.Component; +import java.awt.Dimension; +import java.util.Iterator; +import java.util.Vector; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; + + +public class ColumnGroup { + /** + * Cell renderer for group header. + */ + protected TableCellRenderer renderer; + /** + * Holds the TableColumn or ColumnGroup objects contained + * within this ColumnGroup instance. + */ + protected Vector v; + /** + * The ColumnGroup instance name. + */ + protected String text; + /** + * The margin to use for renderering. + */ + protected int margin=0; + + /** + * Standard ColumnGroup constructor. + * @param text Name of the ColumnGroup which will be displayed + * when the ColumnGroup is renderered. + */ + public ColumnGroup(String text) { + this(null,text); + } + + /** + * Standard ColumnGroup constructor. + * @param renderer a TableCellRenderer for the group. + * @param text Name of the ColumnGroup which will be displayed + * when the ColumnGroup is renderered. + */ + public ColumnGroup(TableCellRenderer renderer,String text) { + if (renderer == null) { + this.renderer = new DefaultTableCellRenderer() { + /** + * + */ + private static final long serialVersionUID = 1L; + + public Component getTableCellRendererComponent(JTable table, Object value, + boolean isSelected, boolean hasFocus, int row, int column) { + JTableHeader header = table.getTableHeader(); + if (header != null) { + setForeground(header.getForeground()); + setBackground(header.getBackground()); + setFont(header.getFont()); + } + setHorizontalAlignment(JLabel.CENTER); + setText((value == null) ? "" : value.toString()); + setBorder(UIManager.getBorder("TableHeader.cellBorder")); + return this; + } + }; + } else { + this.renderer = renderer; + } + this.text = text; + v = new Vector(); + } + + + /** + * Add a TableColumn or ColumnGroup object to the + * ColumnGroup instance. + * @param obj TableColumn or ColumnGroup + */ + public void add(Object obj) { + if (obj == null) { return; } + v.addElement(obj); + } + + + /** + * Get the ColumnGroup list containing the required table + * column. + * @param g vector to populate with the ColumnGroup/s + * @param c TableColumn + * @return Vector containing the ColumnGroup/s + */ + public Vector getColumnGroups(TableColumn c, Vector g) { + g.addElement(this); + if (v.contains(c)) return g; + Iterator iter = v.iterator(); + while (iter.hasNext()) { + Object obj = iter.next(); + if (obj instanceof ColumnGroup) { + Vector groups = + (Vector)((ColumnGroup)obj).getColumnGroups(c,(Vector)g.clone()); + if (groups != null) return groups; + } + } + return null; + } + + /** + * Returns the TableCellRenderer for the ColumnGroup. + * @return the TableCellRenderer + */ + public TableCellRenderer getHeaderRenderer() { + return renderer; + } + + /** + * Set the TableCellRenderer for this ColumnGroup. + * @param renderer the renderer to use + */ + public void setHeaderRenderer(TableCellRenderer renderer) { + if (renderer != null) { + this.renderer = renderer; + } + } + + /** + * Get the ColumnGroup header value. + * @return the value. + */ + public Object getHeaderValue() { + return text; + } + + /** + * Get the dimension of this ColumnGroup. + * @param table the table the header is being rendered in + * @return the dimension of the ColumnGroup + */ + public Dimension getSize(JTable table) { + Component comp = renderer.getTableCellRendererComponent( + table, getHeaderValue(), false, false,-1, -1); + int height = comp.getPreferredSize().height; + int width = 0; + Iterator iter = v.iterator(); + while (iter.hasNext()) { + Object obj = iter.next(); + if (obj instanceof TableColumn) { + TableColumn aColumn = (TableColumn)obj; + width += aColumn.getWidth(); + } else { + width += ((ColumnGroup)obj).getSize(table).width; + } + } + return new Dimension(width, height); + } + + /** + * Sets the margin that ColumnGroup instance will use and all + * held TableColumns and/or ColumnGroups. + * @param margin the margin + */ + public void setColumnMargin(int margin) { + this.margin = margin; + Iterator iter = v.iterator(); + while (iter.hasNext()) { + Object obj = iter.next(); + if (obj instanceof ColumnGroup) { + ((ColumnGroup)obj).setColumnMargin(margin); + } + } + } +} + diff --git a/src/org/rapla/plugin/occupationview/EndOfLifeArchiver.java b/src/org/rapla/plugin/occupationview/EndOfLifeArchiver.java new file mode 100644 index 0000000..2fc5f27 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/EndOfLifeArchiver.java @@ -0,0 +1,24 @@ +package org.rapla.plugin.occupationview; + +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.Classification; + +public class EndOfLifeArchiver { + + static public AttributeType getEndOfLifeType(Allocatable alloc) { + Classification classification = alloc.getClassification(); + if ( classification == null) + return null; + final Attribute attribute = classification.getType().getAttribute("_endoflife"); + if(attribute == null) + return null; + AttributeType type = attribute.getType(); + if (type.equals(AttributeType.BOOLEAN) || type.equals(AttributeType.DATE)) + return type; + else + return null; + } + +} diff --git a/src/org/rapla/plugin/occupationview/GroupableTableColumnModel.java b/src/org/rapla/plugin/occupationview/GroupableTableColumnModel.java new file mode 100644 index 0000000..953c45b --- /dev/null +++ b/src/org/rapla/plugin/occupationview/GroupableTableColumnModel.java @@ -0,0 +1,78 @@ +package org.rapla.plugin.occupationview; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Vector; +import javax.swing.table.DefaultTableColumnModel; +import javax.swing.table.TableColumn; + +// Steve Webb 16/09/04 swebb99_uk@hotmail.com + +/** + * Class which extends the functionality of DefaultColumnTableModel to + * also provide capabilities to group columns. This can be used for + * instance to aid in the layout of groupable table headers. + */ +public class GroupableTableColumnModel extends DefaultTableColumnModel { + + /** + * + */ + private static final long serialVersionUID = 1L; + /** + * Hold the list of ColumnGroups which define what group each normal + * column is within, if any. + */ + protected ArrayList columnGroups = new ArrayList(); + + + /** + * Add a new columngroup. + * @param columnGroup new ColumnGroup + */ + public void addColumnGroup(ColumnGroup columnGroup) { + columnGroups.add(columnGroup); + } + + /** + * Provides an Iterator to iterate over the + * ColumnGroup list. + * @return Iterator over ColumnGroups + */ + public Iterator columnGroupIterator() { + return columnGroups.iterator(); + } + + /** + * Returns a ColumnGroup specified by an index. + * @param index index of ColumnGroup + * @return ColumnGroup + */ + public ColumnGroup getColumnGroup(int index) { + if(index >= 0 && index < columnGroups.size()) { + return (ColumnGroup)columnGroups.get(index); + } + return null; + } + + /** + * Provides and iterator for accessing the ColumnGroups + * associated with a column. + * @param col Column + * @return ColumnGroup iterator + */ + public Iterator getColumnGroups(TableColumn col) { + if (columnGroups.isEmpty()) return null; + Iterator iter = columnGroups.iterator(); + while (iter.hasNext()) { + ColumnGroup cGroup = (ColumnGroup)iter.next(); + Vector v_ret = (Vector)cGroup.getColumnGroups(col,new Vector()); + if (v_ret != null) { + return v_ret.iterator(); + } + } + return null; + } +} + + diff --git a/src/org/rapla/plugin/occupationview/GroupableTableHeader.java b/src/org/rapla/plugin/occupationview/GroupableTableHeader.java new file mode 100644 index 0000000..2a9f929 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/GroupableTableHeader.java @@ -0,0 +1,42 @@ +package org.rapla.plugin.occupationview; + +import java.util.Iterator; + +import javax.swing.table.JTableHeader; + + +/** + * This is the object which manages the header of the JTable and + * also provides functionality for groupable headers. + */ +public class GroupableTableHeader extends JTableHeader { + + /** + * + */ + private static final long serialVersionUID = 1L; + /** + * Constructs a GroupableTableHeader which is initialized with cm as the + * column model. If cm is null this method will initialize the table header + * with a default TableColumnModel. + * @param model the column model for the table + */ + public GroupableTableHeader(GroupableTableColumnModel model) { + super(model); + setUI(new GroupableTableHeaderUI()); + setReorderingAllowed(false); + } + + /** + * Sets the margins correctly for all groups within + * the header. + */ + public void setColumnMargin() { + int columnMargin = getColumnModel().getColumnMargin(); + Iterator iter = ((GroupableTableColumnModel)columnModel).columnGroupIterator(); + while (iter.hasNext()) { + ColumnGroup cGroup = (ColumnGroup)iter.next(); + cGroup.setColumnMargin(columnMargin); + } + } +} \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/GroupableTableHeaderUI.java b/src/org/rapla/plugin/occupationview/GroupableTableHeaderUI.java new file mode 100644 index 0000000..79b005f --- /dev/null +++ b/src/org/rapla/plugin/occupationview/GroupableTableHeaderUI.java @@ -0,0 +1,174 @@ +package org.rapla.plugin.occupationview; + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Rectangle; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Vector; +import javax.swing.JComponent; +import javax.swing.plaf.basic.BasicTableHeaderUI; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; + + +/** + * This class paints groupable header cells. These can be a combination of + * normal header cells and groupable cells. + */ +public class GroupableTableHeaderUI extends BasicTableHeaderUI { + + /** + * Contains a list of ColumnGroups that have already been painted + * in the current paint request. + */ + protected Vector paintedGroups = new Vector(); + + /** + * Paint a representation of the table header. + * @param g the Graphics context in which to paint + * @param c the component being painted; this argument is often ignored + */ + public void paint(Graphics g, JComponent c) { + Rectangle clipBounds = g.getClipBounds(); + GroupableTableColumnModel cm = (GroupableTableColumnModel)header.getColumnModel(); + if (cm == null) return; + ((GroupableTableHeader)header).setColumnMargin(); + int column = 0; + Dimension size = header.getSize(); + Rectangle cellRect = new Rectangle(0, 0, size.width, size.height); + Hashtable h = new Hashtable(); + //int columnMargin = cm.getColumnMargin(); + + Enumeration columns = cm.getColumns(); + while (columns.hasMoreElements()) { + cellRect.height = size.height; + cellRect.y = 0; + TableColumn aColumn = (TableColumn)columns.nextElement(); + Iterator colGrpIter = cm.getColumnGroups(aColumn); + if (colGrpIter != null) { + int groupHeight = 0; + while (colGrpIter.hasNext()) { + ColumnGroup cGroup = (ColumnGroup)colGrpIter.next(); + Rectangle groupRect = (Rectangle)h.get(cGroup); + if (groupRect == null) { + groupRect = new Rectangle(cellRect); + Dimension d = cGroup.getSize(header.getTable()); + groupRect.width = d.width; + groupRect.height = d.height; + h.put(cGroup, groupRect); + } + if(!paintedGroups.contains(cGroup)) { + paintCell(g, groupRect, cGroup); + paintedGroups.add(cGroup); + } + groupHeight += groupRect.height; + cellRect.height = size.height - groupHeight; + cellRect.y = groupHeight; + } + } + cellRect.width = aColumn.getWidth(); + if (cellRect.intersects(clipBounds)) { + paintCell(g, cellRect, column); + } + cellRect.x += cellRect.width; + column++; + } + paintedGroups.clear(); + } + + /** + * Paints a header column cell. + * @param g Graphics context + * @param cellRect The rectangle to contain the cell + * @param columnIndex The header column to be painted + */ + private void paintCell(Graphics g, Rectangle cellRect, int columnIndex) { + TableColumn aColumn = header.getColumnModel().getColumn(columnIndex); + TableCellRenderer renderer = aColumn.getHeaderRenderer(); + if(renderer == null) { + renderer = header.getDefaultRenderer(); + } + Component component = renderer.getTableCellRendererComponent( + header.getTable(), aColumn.getHeaderValue(),false, false, -1, columnIndex); + rendererPane.add(component); + rendererPane.paintComponent(g, component, header, cellRect.x, cellRect.y, + cellRect.width, cellRect.height, true); + } + + /** + * Paint group column cell. + * @param g Graphics context + * @param cellRect Rectangle that the cell with be painted in + * @param cGroup Current column group + */ + private void paintCell(Graphics g, Rectangle cellRect,ColumnGroup cGroup) { + TableCellRenderer renderer = cGroup.getHeaderRenderer(); + Component component = renderer.getTableCellRendererComponent( + header.getTable(), cGroup.getHeaderValue(),false, false, -1, -1); + rendererPane.add(component); + rendererPane.paintComponent(g, component, header, cellRect.x, cellRect.y, + cellRect.width, cellRect.height, true); + } + + /** + * Calculate and return the height of the header. + * @return Header Height + */ + private int getHeaderHeight() { + int height = 0; + GroupableTableColumnModel columnModel = (GroupableTableColumnModel)header.getColumnModel(); + for(int column = 0; column < columnModel.getColumnCount(); column++) { + TableColumn aColumn = columnModel.getColumn(column); + TableCellRenderer renderer = aColumn.getHeaderRenderer(); + if(renderer == null) { + renderer = header.getDefaultRenderer(); + } + Component comp = renderer.getTableCellRendererComponent( + header.getTable(), aColumn.getHeaderValue(), false, false,-1, column); + int cHeight = comp.getPreferredSize().height; + Iterator iter = columnModel.getColumnGroups(aColumn); + if (iter != null) { + while (iter.hasNext()) { + ColumnGroup cGroup = (ColumnGroup)iter.next(); + cHeight += cGroup.getSize(header.getTable()).height; + } + } + height = Math.max(height, cHeight); + } + return height; + } + + /** + * Calculate and return the dimension of the header. + * @param width Starting width to be used. + * @return Dimension of the header + */ + private Dimension createHeaderSize(long width) { + TableColumnModel columnModel = header.getColumnModel(); + width += columnModel.getColumnMargin() * columnModel.getColumnCount(); + if (width > Integer.MAX_VALUE) { + width = Integer.MAX_VALUE; + } + return new Dimension((int)width, getHeaderHeight()); + } + + /** + * Invokes the getPreferredSize method on each UI handled by this object. + * @param c the component whose preferred size is being queried; this argument is ignored. + * @return the dimension of the whole header + */ + public Dimension getPreferredSize(JComponent c) { + long width = 0; + Enumeration columns = header.getColumnModel().getColumns(); + while (columns.hasMoreElements()) { + TableColumn aColumn = (TableColumn)columns.nextElement(); + width = width + aColumn.getPreferredWidth(); + } + return createHeaderSize(width); + } +} + diff --git a/src/org/rapla/plugin/occupationview/OccupationCell.java b/src/org/rapla/plugin/occupationview/OccupationCell.java new file mode 100644 index 0000000..fba4d2b --- /dev/null +++ b/src/org/rapla/plugin/occupationview/OccupationCell.java @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Bob Jordaens | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.occupationview; + +import org.rapla.entities.domain.Reservation; + +public class OccupationCell { + + char leftBound; + char rightBound; + // 0 : Free Cell + // -1 : Forbidden Cell Resource is not available at all, out of order or in maintenance + // -2 : FirstFit Cell + private int typeId; + Reservation reservation; + public Reservation getReservation() { + return reservation; + } + public OccupationCell(char leftBound, int typeId, char rightBound) + { + this(leftBound, typeId, rightBound, null); + } + public OccupationCell(char leftBound, int typeId, char rightBound, Reservation reservation) { + this.leftBound = leftBound; + this.typeId = typeId; + this.rightBound = rightBound; + this.reservation = reservation; + } + + + public int getTypeId() { + return typeId; + } +} \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/OccupationFactory.java b/src/org/rapla/plugin/occupationview/OccupationFactory.java new file mode 100644 index 0000000..dc94233 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/OccupationFactory.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Robert Jordaens | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.occupationview; + +import javax.swing.Icon; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.images.Images; +import org.rapla.servletpages.RaplaPageGenerator; + +public class OccupationFactory extends RaplaComponent implements ViewFactory +{ + public OccupationFactory( RaplaContext context ) throws RaplaException + { + super( context ); + setChildBundleName( OccupationPlugin.RESOURCE_FILE); + } + + public final static String OCCUPATION_VIEW = "occupation"; + + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException + { + return new SwingOccupation( context, model, editable); + } + + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException + { + return null; + } + + public String getViewId() + { + return OCCUPATION_VIEW; + } + + public String getName() + { + return getString(OCCUPATION_VIEW); + } + + Icon icon; + public Icon getIcon() + { + if ( icon == null) { + icon = Images.getIcon("/org/rapla/plugin/occupationview/images/table.png"); + } + return icon; + } + + public String getMenuSortKey() { + return "O"; + } + + public boolean isPrintSupported() { + return false; + } +} \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/OccupationOption.java b/src/org/rapla/plugin/occupationview/OccupationOption.java new file mode 100644 index 0000000..9903de7 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/OccupationOption.java @@ -0,0 +1,123 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Bob Jordaens | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.occupationview; + +import java.awt.Component; +import java.util.Locale; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; + +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; + +public class OccupationOption extends RaplaGUIComponent implements OptionPanel { + + public final static String MONTHS = "org.rapla.plugin.occupation.Months"; + JPanel panel = new JPanel(); + RaplaNumber months = new RaplaNumber(new Double(1),new Double(0),new Double(12), false); + + Preferences preferences; + +// BJO 00000101 + public final static String START_DAY = "org.rapla.plugin.occupation.StartDay"; + public final static String FIRSTDAY = "FirstDay"; + public final static String TODAY = "ToDay"; + JComboBox startDaySelector = new JComboBox( new String[] { + FIRSTDAY + , TODAY + } + ); +// BJO 00000101 + public OccupationOption(RaplaContext sm) throws RaplaException { + super( sm); + setChildBundleName( OccupationPlugin.RESOURCE_FILE); + } + + public void create() throws RaplaException { + + double pre = TableLayout.PREFERRED; + double fill = TableLayout.FILL; + // rows = 1 columns = 2 + panel.setLayout( new TableLayout(new double[][] { + {pre, 5, pre, 5, pre} + , {pre, 5, pre, 5, fill} + } + )); + + panel.add( new JLabel(getString("horizon")),"0,0" ); + panel.add( months,"2,0"); + +// BJO 00000101 + ListRenderer listRenderer = new ListRenderer(); + panel.add( new JLabel(getString("startday")),"0,2" ); + panel.add(startDaySelector,"2,2"); + startDaySelector.setRenderer( listRenderer ); +// BJO 00000101 + } + + public JComponent getComponent() { + return panel; + } + + public String getName(Locale locale) { + return getString("occupation"); + } + + public void setPreferences( Preferences preferences) { + this.preferences = preferences; + } + + public void show() throws RaplaException { + int times = preferences.getEntryAsInteger( MONTHS,0); + months.setNumber(times); + + String day = preferences.getEntryAsString( START_DAY, TODAY ); + startDaySelector.setSelectedItem( day.equals(FIRSTDAY) ? FIRSTDAY : TODAY ); + + create(); + } + + public void commit() { + int times = months.getNumber().intValue(); + preferences.putEntry( MONTHS,"" + times); + + String day = (String) startDaySelector.getSelectedItem(); + preferences.putEntry( START_DAY, day); + } + + private class ListRenderer extends DefaultListCellRenderer { + + private static final long serialVersionUID = 1L; + + public ListRenderer() { + } + + public Component getListCellRendererComponent(JList list,Object value, int index, boolean isSelected, boolean cellHasFocus) { + if ( value != null) { + setText(getString( (String) value )); + + } + return this; + } + } +} \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/OccupationPlugin.java b/src/org/rapla/plugin/occupationview/OccupationPlugin.java new file mode 100644 index 0000000..3c15c11 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/OccupationPlugin.java @@ -0,0 +1,53 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Bob Jordaens | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.occupationview; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; + +public class OccupationPlugin implements PluginDescriptor +{ + static boolean ENABLE_BY_DEFAULT = false; + public static final String RESOURCE_FILE =OccupationPlugin.class.getPackage().getName() + ".OccupationResources"; + public static final String PLUGIN_CLASS = OccupationPlugin.class.getName(); + + + public String toString() + { + return "Occupation View"; + } + + public void provideServices(Container container, Configuration config) + { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT) ) + return; + + container.addContainerProvidedComponent( I18nBundle.ROLE, I18nBundleImpl.class.getName(), RESOURCE_FILE,I18nBundleImpl.createConfig( RESOURCE_FILE ) ); + container.addContainerProvidedComponent( RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION, OccupationFactory.class.getName(), OccupationFactory.OCCUPATION_VIEW, null); + container.addContainerProvidedComponent( RaplaExtensionPoints.USER_OPTION_PANEL_EXTENSION, OccupationOption.class.getName(),PLUGIN_CLASS, config); + } + + public Object getPluginMetaInfos( String key ) + { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return new Boolean( ENABLE_BY_DEFAULT ); + } + return null; + } +} + diff --git a/src/org/rapla/plugin/occupationview/OccupationResources.xml b/src/org/rapla/plugin/occupationview/OccupationResources.xml new file mode 100644 index 0000000..cccc5d6 --- /dev/null +++ b/src/org/rapla/plugin/occupationview/OccupationResources.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Occupation + Besetzung + l''Occupation + Ocupación + Obsazenost + Bezetting + Zawód + + + Month + + Monat + + Mois + + ...: + ...: + Maand + + + + First fit + ...: + Premier libre + ...: + ...: + Eerst vrij + + + Best fit + ...: + Mellieur libre + ...: + ...: + Beste vrij + + + Free slot: + Frei: + Libre: + ...: + ...: + Vrij: + + + #Gaps + ...: + #Gaps + ...: + ...: + #Gaps + + + Resource not availabe. + ...: + Resource pas disponible." + ...: + ...: + Materiaal niet beschikbaar. + + + -1 Month + -1 Monate + -1 Mois" + -1 + -1 + -1 Maand + + + +1 Month + +1 Monate + +1 Mois" + +1 + +1 + +1 Maand + + + Remarks + ... + ... + ... + Opmerking + + + Resources/persons + Ressourcen/Personen + Ressources/Personnes + Recursos/personas + Prostředky/osoby + Persoon/Materiaal + + + In + Ein + Entrée + Entrada + Vstupní + In + + + In + Aus + Sortie + Salida + Výstupní + Uit + + + Archive {0} >= {1} days inactive + Archiv {0} >= {1} Tage inaktiv + Archive {0} >= {1} jours inactifs + pArchivo {0} >= {1} día inactivos + Archiv {0} >= {1} dnů neaktivní + Archiveer {0} >= {1} dagen inactief + + + Archive {0} < {1} days inactive + Archiv {0} < {1} Tage inaktiv + Archive {0} < {1} jours inactifs + Archivo {0} < {1} día inactivos + Archiv {0} < {1} dnů neaktivní + Archiveer {0} < {1} dagen inactief + + + Archive + Archiv + Archive + pArchivo + Archiv + Archiveer + + + _endoflive not defined. + _endoflive nicht definiert. + _endoflive pas défini. + _endoflive no se define. + _endoflive není definováno. + _endoflife niet gedefinieerd. + + + Confirm. Archive on {0}. + Bestätigen. Archiv auf {0). + Confirmer. Archives le {0}.) + Confirmar. Archivo de {0}. + Potvrdit. Archivu na {0}. + Bevestig: Archiveer op {0}. + + + Deleted + Gelöscht + Supprimé + Eliminado + vypouští + Geschrapt + + + Starting day of the month + Ab Tag des Monats + A partir du jour du mois + Días a partir del mes + První den v měsíci + Start dag van de maand + Począwszy od dnia miesiąca + + + Day 1 of month + Tag 1 des Monats + Jour 1 du mois + El día 1 del mes + Den 1 měsíce + Dag 1 van maand + Dzień 1 miesiąca + + + Today + Heute + Aujourd'hui + Hoy + Dnes + Vandaag + Dzisiaj + + + Options + Einstellungen + Options + Opciones + Volby + Voorkeur + + + Denied + Gesperrt + Interdit + Denegado + Zamítnuto + Geen toegang + + \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/OccupationTableModel.java b/src/org/rapla/plugin/occupationview/OccupationTableModel.java new file mode 100644 index 0000000..3bf0a9e --- /dev/null +++ b/src/org/rapla/plugin/occupationview/OccupationTableModel.java @@ -0,0 +1,252 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2011 Bob Jordaens | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.occupationview; + +import java.util.Date; +import javax.swing.table.DefaultTableModel; + +import org.rapla.components.util.DateTools; +import org.rapla.components.xmlbundle.I18nBundle; + +public class OccupationTableModel extends DefaultTableModel +{ + private static final long serialVersionUID = 1L; + + static final int CALENDAR_SEQUENCE_NUMBER = 0; + static final int CALENDAR_RESOURCE = 1; + static final int CALENDAR_CHECK = 2; + static final int CALENDAR_IN_DAYS = 3; + static final int CALENDAR_OUT_DAYS = 4; + static final int CALENDAR_EVENTS = 5; + + private I18nBundle i18n; + Object occupationTable[][]; + private int freeSlot= 0; + private Date calendarStartDate; + private int todayColumn = 0; + + public OccupationTableModel(I18nBundle i18n, int rowCount, int columnCount, Date date) { + this.calendarStartDate = date; + this.i18n = i18n; + occupationTable = new Object[rowCount][columnCount]; + setRowCount(rowCount); + setColumnCount(columnCount); + /* + String[]columns = new String[] { + i18n.getString("resources_persons") + ,i18n.getString("status") + ,i18n.getString("free_days") + ,i18n.getString("start_date") + ,i18n.getString("end_date") + ,i18n.getString("reservation") + ,i18n.getString("appointment") + }; + this.setColumnIdentifiers( columns); + */ + } + + /* + public void setOccupations(Object occupationTable[][], int rowCount, int columnCount) { + setRowCount(0); + this.occupationTable = occupationTable; + setRowCount(rowCount); + setColumnCount(columnCount); + firstFit(); + } + */ + + public void firstFit() { + if(freeSlot==0) + return; + int freeCount=0; + Object occupation = null; + OccupationCell occCell = null; + for (int r=0; r=CALENDAR_EVENTS ;c--) + if(!getValueAt(row,c).equals(type)) + break; + return c + 1; + } + + public Date getColumnDate(int c) { + return DateTools.addDays(calendarStartDate, c - CALENDAR_EVENTS); + } + + public Date getcalendarStartDate() { + return calendarStartDate; + } + + public void setTodayColumn(int c) { + this.todayColumn = c; + } + + public int getTodayColumn() { + return todayColumn; + } + + public int getFreeSlot() { + return freeSlot; + } + + public boolean isCellEditable(int row, int column) { + return false; + } + + /* + public int getRowCount() { + return this.rowCount; + } + + public int getColumnCount() + { + return columnCount; + } + */ + + public Object getValueAt( int rowIndex, int columnIndex ) + { + + switch ( columnIndex ) + { + case CALENDAR_CHECK: + return occupationTable[rowIndex][columnIndex]; + case CALENDAR_IN_DAYS: + if(occupationTable[rowIndex][columnIndex] == null) + return new Integer(Integer.MAX_VALUE); + case CALENDAR_OUT_DAYS: + if(occupationTable[rowIndex][columnIndex] == null) + return new Integer(Integer.MAX_VALUE); + } + + return occupationTable[rowIndex][columnIndex]; + } + + public void setValueAt( Object value, int rowIndex, int columnIndex ) + { + + switch ( columnIndex ) + { + case CALENDAR_IN_DAYS: + if(value == null) + occupationTable[rowIndex][columnIndex] = new Integer(Integer.MAX_VALUE); + case CALENDAR_OUT_DAYS: + if(value == null) + occupationTable[rowIndex][columnIndex] = new Integer(Integer.MAX_VALUE); + default: + occupationTable[rowIndex][columnIndex] = value; + } + return; + } + + public String getColumnName( int columnIndex ) + { + switch ( columnIndex ) + { + case CALENDAR_RESOURCE: return i18n.getString("resources_persons"); + case CALENDAR_CHECK: return i18n.getString("event_check"); + case CALENDAR_SEQUENCE_NUMBER: return "#"; + case CALENDAR_IN_DAYS: return i18n.getString("daysin"); + case CALENDAR_OUT_DAYS: return i18n.getString("daysout"); + + default: return "getcolumnName"; + } + } + + public Class getColumnClass(int columnIndex) { + + switch ( columnIndex ) + { + default: return String.class; + } + } + + public void setFreeSlot(int freeSlot) { + this.freeSlot = freeSlot; + } + + public void calcSlotGaps() { + int totalFreeGaps=0; + int lastFreeGap=0; + for (int r=0; r0:=n-times + //update(); + } + + + public void update() throws RaplaException + { + try { + container.getTopLevelAncestor().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + updatetable(); + } finally { + container.getTopLevelAncestor().setCursor(Cursor.getDefaultCursor()); + } + } + + public void updatetable() throws RaplaException + { + timeShift.update(); + int timeShiftTimes = timeShift.timeShiftTimes.getNumber().intValue() + 1; + + ClassificationFilter[] cfilters = model.getReservationFilter(); + if(cfilters.length>1) { + DialogUI dialog = DialogUI.create( + getContext() + ,container.getTopLevelAncestor() + ,true + ,getString("warning") + ,getString("warning.max-one-eventtype") + ,new String[] { getString("continue") } + ); + dialog.setIcon(getIcon("icon.warning")); + dialog.setDefault(0); + dialog.start(); + return; + } + mutableReservation = getClientFacade().newReservation(); + Appointment appointment = getClientFacade().newAppointment( model.getSelectedDate(), model.getSelectedDate()); + mutableReservation.addAppointment(appointment); + appointments = mutableReservation.getAppointments(); + allocatableList = getAllAllocatables(); + Collections.sort(allocatableList, new AllocatableSortByName()); + int rowCount = allocatableList.size(); + Iterator it = allocatableList.iterator(); + calendarDS = timeShift.getSelectedStartTime(); // start midnight + calendarDE = timeShift.getSelectedEndTime(); // end midnight + + + // calculate number of columns required to display from calendar + Calendar calendarTmp = (Calendar) calendarDS.clone(); + int totalDays= -1 * calendarTmp.get(Calendar.DAY_OF_MONTH) + 1; + for ( int i = 0; i< timeShiftTimes; i++) { + totalDays += calendarTmp.getActualMaximum(Calendar.DAY_OF_MONTH); + calendarTmp.add(calendarShift, 1); + } + int columnCount = totalDays + OccupationTableModel.CALENDAR_EVENTS ; // + for fixed columns + //Object occupationTable[][] = new Object[rowCount][columnCount]; + occupationTableModel = new OccupationTableModel(getI18n(), rowCount, columnCount, calendarDS.getTime()); + + +// Sorting block + + sorter = new TableSorter(occupationTableModel,table.getTableHeader()); + sorter.setSortable(0, false); + + sorter.setColumnComparator(1, new Comparator() { + public int compare(AllocationCell o1, AllocationCell o2) { + String s1 = o1.allocatable.getName(locale); + String s2 = o2.allocatable.getName(locale); + return s1.compareTo(s2); + } + }); + + sorter.setSortable(2, false); + + sorter.setColumnComparator(3, new Comparator() { + public int compare(Object o1, Object o2) { + Integer i1 = (Integer) o1; + Integer i2 = (Integer) o2; + return i1.compareTo(i2); + } + }); + + sorter.setColumnComparator(4, new Comparator() { + public int compare(Object o1, Object o2) { + Integer i1 = (Integer) o1; + Integer i2 = (Integer) o2; + return i1.compareTo(i2); + } + }); + + //sorter.setSortable(4, false); + sorter.setSortable(5, false); + + //table.setRowSorter(sorter); + + table.setModel( sorter ); + + table.getColumnModel().getColumn(OccupationTableModel.CALENDAR_CHECK).setCellRenderer(alcRenderer); + int r = 0; + char leftBound = ' '; + char rightBound = ' '; + while (it.hasNext()) { + + // get resource data + Allocatable alloc = it.next(); + AllocationCell alcCell = new AllocationCell(alloc); + occupationTableModel.setValueAt( alcCell, r, OccupationTableModel.CALENDAR_RESOURCE); + + // get reservation data + Calendar calendarTDS = (Calendar) calendarDS.clone(); + Calendar calendarTDE = (Calendar) calendarDE.clone(); + mutableReservation.addAllocatable(alloc); + String occupationType = null; + QueryModule qry = getQuery(); + for ( int c = OccupationTableModel.CALENDAR_EVENTS ; c <= (columnCount - 1); c++) { + sorter.setSortable(c, false); + if(DateTools.cutDate(today).equals(DateTools.cutDate(calendarTDS.getTime()))) + occupationTableModel.setTodayColumn(c); + appointment.move(calendarTDS.getTime(),calendarTDE.getTime()); + updateBindings(appointments); + occupationType = getOccupationType((Allocatable) alloc); + //occupationTableModel.setValueAt( null, r, OccupationTableModel.CALENDAR_IN_DAYS); + if(occupationType.equals("C")) { // Conflict + // Not Free + Reservation [] res = qry.getReservationsForAllocatable(new Allocatable[] { alloc },calendarTDS.getTime(),calendarTDE.getTime(), cfilters); + if(res.length==0) { + OccupationCell occCell = new OccupationCell('N',0,'N', null); + occupationTableModel.setValueAt( occCell, r, c); + } + else { // Not Free + // A from-to will be split is days like [ [, ] [ , ] [, ] ] [ left boundary = startdate, ] right boundary = enddate + // ] and [ used in the middle. + Reservation reservation = res[0]; + Appointment[] apps = reservation.getAppointmentsFor(alloc); + Appointment app = apps[0]; + //System.out.println(alloc.getName(locale)); + //System.out.println("Start= " + app.getStart() + " TDS= " + calendarTDS.getTime()); + Date minStartDate = app.getStart(); + if(DateTools.isSameDay(minStartDate.getTime(),calendarTDS.getTime().getTime())) + if(DateTools.isMidnight(minStartDate)) + leftBound = '['; + else + leftBound = '<'; + else + if(DateTools.isMidnight(minStartDate)) + leftBound = ']'; + else + leftBound = '>'; + //Repeating rep = app[0].getRepeating(); + //if (rep != null) System.out.println("Repating= " + rep); + //System.out.println("MaxEnd = " + app.getMaxEnd() + " End= " + app.getEnd()); + Date maxendDate = app.getMaxEnd(); + rightBound = '['; + if(maxendDate!=null) + if(DateTools.isMidnight(maxendDate)) { // endDate 00:00:00 = previous date + if(DateTools.isSameDay((DateTools.subDay(maxendDate)).getTime(),calendarTDS.getTime().getTime())) + rightBound = ']'; + } + else + if(DateTools.isSameDay(maxendDate.getTime(),calendarTDS.getTime().getTime())) + rightBound = '>'; + OccupationCell occCell = new OccupationCell(leftBound,1,rightBound, reservation); + occupationTableModel.setValueAt( occCell, r, c); + if(c == occupationTableModel.getTodayColumn()) + setDaysInOut(app, r, today); + else + if(c >= OccupationTableModel.CALENDAR_EVENTS) + setDaysInOut(app, r, calendarTDS.getTime()); + + //System.out.println(res[0].toString() + " Length:" + res.length); + } + } + else + if(occupationType.equals(" ")) { // Free + OccupationCell occCell = new OccupationCell('N',0,'N'); + occupationTableModel.setValueAt( occCell, r, c); + + // calculate archive date + Date startDate = DateTools.subDays(today, archiveAge); + Reservation [] res = getQuery().getReservationsForAllocatable(new Allocatable[] { alloc },startDate,today, null); + if(res.length != 0) { + Appointment[] apps = res[res.length - 1].getAppointments(); + Appointment app = apps[0]; + if ( c == occupationTableModel.getTodayColumn()) + setDaysInOut(app, r, today); + } + + } + else + if(occupationType.equals("F")) { // Forbidden Resource is not available at all, out of order or in maintenance + OccupationCell occCell = new OccupationCell('N',-1,'N'); + occupationTableModel.setValueAt( occCell, r, c); + } + /* debug + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String DS = sdf.format(calendarTDS.getTime()); + String DE = sdf.format(calendarTDE.getTime()); + System.out.println("Row="+r+" Column=" + c + " StartDate=" + DS + " EndDate= " + DE + " Type = " + occupationType); + */ + calendarTDS.add(Calendar.DATE, 1); // next startday + calendarTDE.add(Calendar.DATE, 1); // next endday + } + r++; + } + + occupationTableModel.setFreeSlot(timeShift.freeSlot.getNumber().intValue()); + //setLineNumbers(); + + occupationTableModel.firstFit(); + + TableColumnModel cm = table.getColumnModel(); + + // Resource column Header + TableColumn column = cm.getColumn(OccupationTableModel.CALENDAR_SEQUENCE_NUMBER); + column.setPreferredWidth(30); + column.setMaxWidth(50); + + // Check column Header + column = cm.getColumn(OccupationTableModel.CALENDAR_RESOURCE); + column.setPreferredWidth(200); + column.setMaxWidth(300); + + // In column Header + column = cm.getColumn(OccupationTableModel.CALENDAR_CHECK); + column.setPreferredWidth(200); + column.setMaxWidth(300); + + // Out column Header + column = cm.getColumn(OccupationTableModel.CALENDAR_IN_DAYS); + column.setPreferredWidth(40); + column.setMaxWidth(50); + + // Sequence line number + column = cm.getColumn(OccupationTableModel.CALENDAR_OUT_DAYS); + column.setPreferredWidth(40); + column.setMaxWidth(50); + + calendarTmp = (Calendar) calendarDS.clone(); + SimpleDateFormat sdfMM = new SimpleDateFormat("MM",locale); + sdfMM.setTimeZone(DateTools.getTimeZone()); + SimpleDateFormat sdfdd = new SimpleDateFormat("dd",locale); + sdfdd.setTimeZone(DateTools.getTimeZone()); + //SimpleDateFormat sdfEE = new SimpleDateFormat("EE",locale); + //sdfEE.setTimeZone(DateTools.getTimeZone()); + GroupableTableColumnModel gcm = (GroupableTableColumnModel)table.getColumnModel(); + String oldMM=null; // old month groupHeader label + String newMM=null; // new month groupHeader label + ColumnGroup g_MM = null; + for ( int i = OccupationTableModel.CALENDAR_EVENTS ; i <= (columnCount - 1); i++) { + + Date dateTmp = calendarTmp.getTime(); + int day = calendarTmp.get(Calendar.DAY_OF_WEEK); + + newMM = sdfMM.format(dateTmp); + //set columnGroupHeader label == MM (Month) 01, , 12 + if(!newMM.equals(oldMM)) { + if(oldMM!=null) + gcm.addColumnGroup(g_MM); + g_MM = new ColumnGroup(new GroupableTableCellRenderer(),newMM); + oldMM = newMM; + } + //set columnGroupHeader label == dd (Day) 01, ...,31 + ColumnGroup g_dd = new ColumnGroup(new GroupableTableCellRenderer(), sdfdd.format(dateTmp)); + g_MM.add(g_dd); + ColumnGroup g_dw = new ColumnGroup(new DayOfWeekHeaderRenderer(), Integer.toString(day)); + g_dd.add(g_dw); + column = cm.getColumn(i); + g_dw.add(column); + + // set column sizes + column.setMinWidth(19); + column.setMaxWidth(26); + column.setPreferredWidth(26); + //set columnHeader label == Day of the week Mo, .... , Su + int selectedCount = occupationTableModel.getSelectedRows(i); + column.setHeaderValue(selectedCount); + column.setHeaderRenderer(new countRenderer()); + calendarTmp.add(Calendar.DATE,1); + } + gcm.addColumnGroup(g_MM); + } + + public void setDaysInOut(Appointment app, int r, Date referenceDate) { + + if(referenceDate.before(today)) + return; + else + if(referenceDate.after(today)) + if((Integer) occupationTableModel.getValueAt(r,OccupationTableModel.CALENDAR_IN_DAYS) != Integer.MAX_VALUE) + return; + + int days = (int) ((app.getStart().getTime() - today.getTime()) / DateTools.MILLISECONDS_PER_DAY); + occupationTableModel.setValueAt( days, r, OccupationTableModel.CALENDAR_IN_DAYS); + + Repeating rpt = app.getRepeating(); + Date edate = null; + if ( rpt == null ) + edate = app.getEnd(); + else + if ( rpt.getEnd() != null && !rpt.isFixedNumber() ) + edate = rpt.getEnd(); + else + if (rpt.getEnd() != null) + edate = rpt.getEnd(); + if(edate == null) + occupationTableModel.setValueAt(null, r, OccupationTableModel.CALENDAR_OUT_DAYS); + else { + days = (int) ((edate.getTime() - today.getTime()) / DateTools.MILLISECONDS_PER_DAY); + occupationTableModel.setValueAt( days, r, OccupationTableModel.CALENDAR_OUT_DAYS); + } + + return; + } + + public JComponent getDateSelection() + { + return timeShift.getComponent(); + } + + public void scrollToStart() + { + try { + update(); + } catch (RaplaException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public JComponent getComponent() + { + return container; + } + + private List getAllAllocatables() throws RaplaException { + Allocatable[] allocatables = model.getSelectedAllocatables(); + return getAllocatableList( allocatables); + } + + private List getAllocatableList(Allocatable[] allocatables) { + List result = Arrays.asList( allocatables ); + return result; + } + + private void updateBindings(Appointment[] appointments) { + // System.out.println("getting allocated resources"); + try { + + for (int i=0;i allocatables = new HashSet(Arrays.asList(getQuery().getAllocatableBindings(appointment))); + appointmentMap.put(appointment,allocatables); + } + } + catch (RaplaException ex) { + showException(ex,table); + } + } + + private String getOccupationType(Allocatable allocatable) { + calcConflictingAppointments( allocatable ); + if ( conflictCount == 0 ) { + return " "; + } else + if ( conflictCount == appointments.length ) { + if ( conflictCount == permissionConflictCount ) { + if (!checkRestrictions) { + return "F"; //forbiddenIcon; + } + } else { + return "C"; //conflictIcon; + } + } else + if ( !checkRestrictions ) { + return "X"; + } + for ( int i = 0 ; i < appointments.length; i++ ) { + Appointment appointment = appointments[i]; + if ( mutableReservation.hasAllocated( allocatable, appointment ) && !getQuery().hasPermissionToAllocate( appointment,allocatable )) + return "F"; //forbiddenIcon; + } + + if ( permissionConflictCount - conflictCount == 0 ) { + return " "; + } + + Appointment[] restriction = mutableReservation.getRestriction(allocatable); + if ( restriction.length == 0 ) { + return "C"; //conflictIcon; + } else { + boolean conflict = false; + for (int i = 0 ;i < restriction.length;i++) { + Set allocatables = (Set)appointmentMap.get( restriction[i]); + if (allocatables.contains(allocatable)) { + conflict = true; + break; + } + } + if ( conflict ) + return "C"; // conflictIcon; + else + return "X"; // "X" not allways available + } + } + + // calculates the number of conflicting appointments for this allocatable + private void calcConflictingAppointments(Allocatable allocatable) { + if (conflictingAppointments == null || conflictingAppointments.length!=appointments.length) + conflictingAppointments = new boolean[appointments.length]; + conflictCount = 0; + permissionConflictCount = 0; + for (int i=0;i') + cellBorder.setThickness(10, EAST); + else + cellBorder.setThickness(0, EAST); + + cellBorder.setThickness(2, SOUTH); + + Color color = getColorForClassifiable( reservation ); + if(color==null) + cell.setBackground( Color.WHITE ); + else + cell.setBackground( color); + setBorder(cellBorder); + } + else + if( occCell.getTypeId() == 0) { // Free + cell.setBackground( Color.LIGHT_GRAY); + } + else + if( occCell.getTypeId() == -1) { // Forbidden + cell.setBackground( Color.BLACK ); + } + else + if( occCell.getTypeId() == -2) { // FirstFit + cellBorder.setThickness(1, NORTH); + if(occCell.leftBound=='[') + cellBorder.setThickness(2, WEST); + else + cellBorder.setThickness(0, WEST); + cellBorder.setThickness(1, SOUTH); + if(occCell.rightBound==']') + cellBorder.setThickness(2, EAST); + else + cellBorder.setThickness(0, EAST); + setBorder(cellBorder); + cell.setBackground( Color.GREEN ); + } + setText(""); + if( c == table.getSelectedColumn() && r == table.getSelectedRow()) { // identify selected cell + // Selector context Popup + cellBorder.setThickness(0, NORTH); + cellBorder.setThickness(5, WEST); + cellBorder.setThickness(0, SOUTH); + cellBorder.setThickness(5, EAST); + cell.setBackground( Color.GRAY ); + setBorder(cellBorder); + } + } + + if( value instanceof AllocationCell ) + { + Font font = cell.getFont(); + cell.setFont(font.deriveFont(Font.BOLD)); + AllocationCell allcCell = (AllocationCell) value; + // handle the first column: Resources + Allocatable allc = allcCell.allocatable; + cell.setBackground( Color.WHITE); + setText(allc.getName(locale)); + cell.setBackground( Color.WHITE ); + Color color = getColorForClassifiable( allc ); + if(color!=null) + cell.setBackground( color); + } + + if( value instanceof Integer ) + { + if( c == OccupationTableModel.CALENDAR_IN_DAYS) { + int days = (Integer) value; + if(days == Integer.MAX_VALUE) { + setText(""); + } + else { + cell.setBackground( Color.WHITE); + if(days >= 0) { + formatDaysInOut.setPositivePrefix("+"); + setText(formatDaysInOut.format(days)); + } + else { + formatDaysInOut.setPositivePrefix("-"); + setText(formatDaysInOut.format(days)); + } + } + } + else { + if( c == OccupationTableModel.CALENDAR_OUT_DAYS ) { + cell.setBackground( Color.WHITE); + int days = (Integer) value; + if(days == Integer.MAX_VALUE) { + Object daysIn = occupationTableModel.getValueAt(row,OccupationTableModel.CALENDAR_IN_DAYS); + if((Integer) daysIn == Integer.MAX_VALUE) + setText(""); + else + setText("?"); + } + else { + if(days >= 0) + formatDaysInOut.setPositivePrefix("+"); + else + formatDaysInOut.setPositivePrefix("-"); + setText(formatDaysInOut.format(days)); + } + } + } + } + + if(c == OccupationTableModel.CALENDAR_SEQUENCE_NUMBER) { + Font font = cell.getFont(); + cell.setFont(font.deriveFont(Font.BOLD)); + AllocationCell allcCell = (AllocationCell) occupationTableModel.getValueAt(row,OccupationTableModel.CALENDAR_RESOURCE); + cell.setBackground( Color.WHITE); + Allocatable alloc = allcCell.allocatable; + AttributeType type = EndOfLifeArchiver.getEndOfLifeType(alloc); + if(type != null) { + Classification classification = alloc.getClassification(); + Object endlife = classification.getValue("_endoflife"); + if(endlife==null) { + Object daysOut = occupationTableModel.getValueAt(row, OccupationTableModel.CALENDAR_OUT_DAYS); + if( (Integer) daysOut == Integer.MAX_VALUE) // old enough to be archived + cell.setBackground( Color.GREEN); + else + cell.setBackground( Color.ORANGE); + } + } + setText(Integer.toString(r+1)); + return cell; + } + + if( value instanceof String ) { + if( c == OccupationTableModel.CALENDAR_IN_DAYS || c == OccupationTableModel.CALENDAR_OUT_DAYS) { + cell.setBackground( Color.WHITE); + setText((String) value); + } + } + + if(value==null) { + cell.setBackground( Color.WHITE); + setText((value == null) ? "" : "Unknown"); + } + + if(c == occupationTableModel.getTodayColumn() && c > OccupationTableModel.CALENDAR_EVENTS) { + cell.setBackground( Color.decode("#bb5823")); + } + + if(c >= OccupationTableModel.CALENDAR_EVENTS) { + if (hasFocus) + cell.setForeground( Color.GRAY ); + } + + //setText((value == null) ? "" : value.toString()); + return cell; + } + } + + private int convertRowIndexToModel(JTable table, int r) { + return sorter.modelIndex(r); + } + + Color getColorForClassifiable( Classifiable classifiable ) { + Classification c = classifiable.getClassification(); + Attribute colorAttribute = c.getAttribute("color"); + String color = null; + if ( colorAttribute != null) { + Object hexValue = c.getValue( colorAttribute ); + if ( hexValue != null) { + if ( hexValue instanceof Category) { + hexValue = ((Category) hexValue).getAnnotation( CategoryAnnotations.KEY_NAME_COLOR ); + } + if ( hexValue != null) { + color = hexValue.toString(); + } + } + } + if ( color != null) + { + try + { + return Color.decode(color); + } + catch (NumberFormatException ex) + { + getLogger().warn( "Can't parse Color " + color + " " +ex.getMessage()); + } + } + return null; + } + + class GroupableTableCellRenderer extends DefaultTableCellRenderer { + + private static final long serialVersionUID = 1L; + + public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int r, int c) { + JTableHeader header = table.getTableHeader(); + if (header != null) { + setBackground(Color.WHITE); + Font font = getFont(); + setFont(font.deriveFont(Font.BOLD)); + } + + setHorizontalAlignment(SwingConstants.CENTER); + setText(value != null ? value.toString() : " "); + setBorder(UIManager.getBorder("TableHeader.cellBorder")); + return this; + } + } + + private final String dayNames[] = new DateFormatSymbols().getShortWeekdays(); + class DayOfWeekHeaderRenderer extends DefaultTableCellRenderer { + + private static final long serialVersionUID = 1L; + public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int r, int c) { + if(value instanceof String) + { + int dd = Integer.parseInt(((String) value)); + setText(dayNames[dd]); + if( dd == Calendar.SUNDAY || dd == Calendar.SATURDAY) + setBackground(Color.LIGHT_GRAY); + else + setBackground(Color.WHITE); + Font font = getFont(); + setFont(font.deriveFont(Font.BOLD)); + } + else { + setText(value != null ? value.toString() : " "); + } + + //if(c == occupationTableModel.getTodayColumn()) + // setBackground(Color.decode("#bb5823")); + + setHorizontalAlignment(SwingConstants.CENTER); + setBorder(UIManager.getBorder("TableHeader.cellBorder")); + return this; + } + } + + class countRenderer extends DefaultTableCellRenderer { + + private static final long serialVersionUID = 1L; + public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int r, int c) { + + setText(value != null ? value.toString() : " "); + LinesBorder cellBorder = new LinesBorder(Color.GRAY); + cellBorder.setThickness(2, NORTH); + cellBorder.setThickness(1, WEST); + cellBorder.setThickness(1, EAST); + cellBorder.setThickness(0, SOUTH); + setBorder(cellBorder); + setBackground( Color.WHITE); + setHorizontalAlignment(SwingConstants.CENTER); + return this; + } + } + + public class PopupTableHandler extends MouseAdapter { + + void showPopup(MouseEvent me) throws RaplaException{ + // Conflict " " = Resource is available + // Conflict "X" = Resource is not allways available + // Conflict "C" = Resource is used at requested timestamp + // Forbidden "F" = Resource is not available at the specified timestamp + // First Fit proposal "=" = Resource is available for the request period + Point p = new Point(me.getX(), me.getY()); + int r = table.getSelectedRow(); + int c = table.getSelectedColumn(); + if( r < 0 || c < 0) + return; + r = convertRowIndexToModel(table,r); + + Object obj = occupationTableModel.getValueAt(r, c); + if (obj instanceof OccupationCell ) { + OccupationCell occCell = (OccupationCell) obj; + if(occCell.getTypeId() > 0) + editPopup(occCell, r, c, p); + else + newPopup(occCell, r, c, p); + } + + if (obj instanceof AllocationCell ) { + AllocationCell alcCell = (AllocationCell) obj; + if(alcCell.allocatable !=null ) { + Object daysOut = occupationTableModel.getValueAt(r, OccupationTableModel.CALENDAR_OUT_DAYS); + Object daysIn = occupationTableModel.getValueAt(r, OccupationTableModel.CALENDAR_IN_DAYS); + if((Integer) daysOut == Integer.MAX_VALUE && (Integer) daysIn == Integer.MAX_VALUE) + archivePopup(alcCell, r, c, p, 0); + else + if( ((Integer) daysOut < 0)) + archivePopup(alcCell, r, c, p,(Integer) daysOut); + } + } + return; + } + + public void newPopup(OccupationCell occCell, int r, int c, Point p) throws RaplaException { + Calendar calendarStart = null; + Calendar calendarEnd = null; + + if( occCell.getTypeId() == -2) { + int cs = occupationTableModel.findStartSlot(r, c, -2) - OccupationTableModel.CALENDAR_EVENTS; // corrected start + calendarStart = (Calendar) calendarDS.clone(); + calendarStart.add(Calendar.DATE, cs); + calendarEnd = (Calendar) calendarStart.clone(); + calendarEnd.add(Calendar.DATE, occupationTableModel.getFreeSlot()); + } else + if( occCell.getTypeId() == 0) { + calendarStart = (Calendar) calendarDS.clone(); + calendarStart.add(Calendar.DATE, c - OccupationTableModel.CALENDAR_EVENTS); + calendarEnd = (Calendar) calendarStart.clone(); + calendarEnd.add(Calendar.DATE, 1); + } else + if( occCell.getTypeId() == -1) { + return; + } + + mutableReservation = getClientFacade().newReservation(); + Appointment appointment = null; + appointment = getClientFacade().newAppointment( calendarStart.getTime(), calendarEnd.getTime(), repeatingType, repeatingDuration ); + appointment.setWholeDays(true); + mutableReservation.addAppointment(appointment); + AllocationCell alcCell = (AllocationCell) occupationTableModel.getValueAt(r, OccupationTableModel.CALENDAR_RESOURCE); + Allocatable alloc = alcCell.allocatable; + mutableReservation.addAllocatable(alloc); + JPopupMenu popup = new JPopupMenu(); + newAdapter menuAction = new newAdapter(mutableReservation,0); + JMenuItem newItem = new JMenuItem(getString("new"),getIcon( "icon.new")); + newItem.setActionCommand("new"); + newItem.addActionListener(menuAction); + popup.add(newItem); + popup.show( table, p.x, p.y); + } + + SimpleDateFormat sdfdatetime = new SimpleDateFormat("yyyy-MM-dd"); + public void archivePopup(AllocationCell alcCell, int r, int c, Point p, int days) throws RaplaException { + Allocatable alloc = alcCell.allocatable; + + AttributeType type = EndOfLifeArchiver.getEndOfLifeType(alloc); + if(type == null) + return; + + JPopupMenu popup = new JPopupMenu(); + newAdapter menuAction = new newAdapter(alloc, days); + JMenuItem archiveItem; + if(canModify(alloc)) { + if (type.equals(AttributeType.BOOLEAN)) + archiveItem = new JMenuItem(getI18n().getString("archive_yn"),getIcon( "icon.archive")); + else { + if(days < 0) { + archiveItem = new JMenuItem(getI18n().format("forcearchive_lt", sdfdatetime.format(DateTools.addDays(today, (int) (archiveAge + days))), archiveAge),getIcon( "icon.archive")); + archiveItem.setBackground(Color.ORANGE); + } + else { + archiveItem = new JMenuItem(getI18n().format("archiveda_gt", sdfdatetime.format(today), archiveAge),getIcon( "icon.archive")); + archiveItem.setBackground(Color.GREEN); + } + } + archiveItem.setEnabled(true); + archiveItem.setActionCommand("archive"); + } + else { + archiveItem = new JMenuItem(getString("permission.denied"),getIcon("icon.no_perm")); + archiveItem.setEnabled(true); + } + archiveItem.addActionListener(menuAction); + popup.add(archiveItem); + popup.show( table, p.x, p.y); + } + + public void editPopup(OccupationCell occCell, int r, int c, Point p) throws RaplaException { + + Reservation reservation = occCell.getReservation(); + + JPopupMenu popup = new JPopupMenu(); + newAdapter menuAction = new newAdapter(reservation, 0); + JMenuItem editItem = new JMenuItem(getString("edit"),getIcon( "icon.edit")); + editItem.setActionCommand("edit"); + editItem.addActionListener(menuAction); + editItem.setEnabled(canModify(reservation) || getQuery().canExchangeAllocatables(reservation)); + popup.add(editItem); + + JMenuItem deleteItem = new JMenuItem(getString("delete"),getIcon( "icon.delete")); + deleteItem.setActionCommand("delete"); + deleteItem.addActionListener(menuAction); + deleteItem.setEnabled(canModify(reservation)); + popup.add(deleteItem); + + JMenuItem viewItem = new JMenuItem(getString("info"),getIcon( "icon.help")); + viewItem.setActionCommand("info"); + viewItem.addActionListener(menuAction); + User owner = reservation.getOwner(); + try + { + User user = getUser(); + boolean canView = getQuery().canReadReservationsFromOthers( user) || user.equals( owner); + viewItem.setEnabled( canView); + } + catch (RaplaException ex) + { + getLogger().error( "Can't get user",ex); + } + popup.add(viewItem); + popup.show( table, p.x, p.y); + } + + /** Implementation-specific. Should be private.*/ + public void mousePressed(MouseEvent me) { + if (me.isPopupTrigger()) + try { + showPopup(me); + } catch (RaplaException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** Implementation-specific. Should be private.*/ + public void mouseReleased(MouseEvent me) { + if (me.isPopupTrigger()) + try { + showPopup(me); + } catch (RaplaException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** double click*/ + public void mouseClicked(MouseEvent me) { + if (me.getClickCount() > 1 ) + { + //Point p = new Point(me.getX(), me.getY()); + int r = table.getSelectedRow(); + int c = table.getSelectedColumn(); + if( r < 0 || c < 0) + return; + r = convertRowIndexToModel(table, r); + if(c { + public int compare(Allocatable o1, Allocatable o2) { + return o1.getName(locale).compareTo(o2.getName(locale)); + } + } + + public class LinesBorder extends AbstractBorder implements SwingConstants { + + private static final long serialVersionUID = 1L; + protected int northThickness; + protected int southThickness; + protected int eastThickness; + protected int westThickness; + protected Color northColor; + protected Color southColor; + protected Color eastColor; + protected Color westColor; + + public LinesBorder(Color color) { + this(color, 1); + } + + public LinesBorder(Color color, int thickness) { + setColor(color); + setThickness(thickness); + } + + public LinesBorder(Color color, Insets insets) { + setColor(color); + setThickness(insets); + } + + public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { + Color oldColor = g.getColor(); + + g.setColor(northColor); + for (int i = 0; i < northThickness; i++) { + g.drawLine(x, y+i, x+width-1, y+i); + } + g.setColor(southColor); + for (int i = 0; i < southThickness; i++) { + g.drawLine(x, y+height-i-1, x+width-1, y+height-i-1); + } + g.setColor(eastColor); + for (int i = 0; i < westThickness; i++) { + g.drawLine(x+i, y, x+i, y+height-1); + } + g.setColor(westColor); + for (int i = 0; i < eastThickness; i++) { + g.drawLine(x+width-i-1, y, x+width-i-1, y+height-1); + } + g.setColor(oldColor); + } + + public Insets getBorderInsets(Component c) { + return new Insets(northThickness, westThickness, southThickness, eastThickness); + } + + public Insets getBorderInsets(Component c, Insets insets) { + return new Insets(northThickness, westThickness, southThickness, eastThickness); + } + + public boolean isBorderOpaque() { + return true; + } + + public void setColor(Color c) { + northColor = c; + southColor = c; + eastColor = c; + westColor = c; + } + + public void setColor(Color c, int direction) { + switch (direction) { + case NORTH: northColor = c; break; + case SOUTH: southColor = c; break; + case EAST: eastColor = c; break; + case WEST: westColor = c; break; + default: + } + } + + public void setThickness(int n) { + northThickness = n; + southThickness = n; + eastThickness = n; + westThickness = n; + } + + public void setThickness(Insets insets) { + northThickness = insets.top; + southThickness = insets.bottom; + eastThickness = insets.right; + westThickness = insets.left; + } + + public void setThickness(int n, int direction) { + switch (direction) { + case NORTH: northThickness = n; break; + case SOUTH: southThickness = n; break; + case EAST: eastThickness = n; break; + case WEST: westThickness = n; break; + default: + } + } + + public void append(LinesBorder b, boolean isReplace) { + if (isReplace) { + northThickness = b.northThickness; + southThickness = b.southThickness; + eastThickness = b.eastThickness; + westThickness = b.westThickness; + } else { + northThickness = Math.max(northThickness ,b.northThickness); + southThickness = Math.max(southThickness ,b.southThickness); + eastThickness = Math.max(eastThickness ,b.eastThickness); + westThickness = Math.max(westThickness ,b.westThickness); + } + } + + public void append(Insets insets, boolean isReplace) { + if (isReplace) { + northThickness = insets.top; + southThickness = insets.bottom; + eastThickness = insets.right; + westThickness = insets.left; + } else { + northThickness = Math.max(northThickness ,insets.top); + southThickness = Math.max(southThickness ,insets.bottom); + eastThickness = Math.max(eastThickness ,insets.right); + westThickness = Math.max(westThickness ,insets.left); + } + } + } + + + class AllocatableCellRenderer extends JComponent implements TableCellRenderer { + + private static final long serialVersionUID = 1L; + + public AllocatableCellRenderer() { + super(); + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int r, int c) { + int row =convertRowIndexToModel(table,r); + OccupationCell occCell = null; + if(occupationTableModel.getTodayColumn()!= 0) + occCell = (OccupationCell) occupationTableModel.getValueAt(row,occupationTableModel.getTodayColumn()); + else + occCell = (OccupationCell) occupationTableModel.getValueAt(row,OccupationTableModel.CALENDAR_EVENTS); + + if(occCell!=null) { + final Reservation reservation = occCell.getReservation(); + if( reservation != null ) { + AllocatableColors controlColors = new AllocatableColors(reservation); + return controlColors; + } + } + return this; + } + } + + public class AllocatableColors extends JComponent { + Font textFont = new Font("SanSerif", Font.BOLD, 12); + FontMetrics fontMetrics = getFontMetrics(textFont); + + private static final long serialVersionUID = 1L; + + Reservation reservation; + + AllocatableColors(Reservation reservation) { + this.reservation = reservation; + } + + public void paint(Graphics g) { + + Classification classification = null; + + // Resource check points + List arrayList = Arrays.asList(reservation.getAllocatables()); + + Comparator comp = new Comparator() { + public int compare(Object o1, Object o2) { + if ((((Allocatable) o1).getClassification().getType().getName(locale)).compareTo(((Allocatable) o2).getClassification().getType().getName(locale)) > 0) + return 1; + if ((((Allocatable) o1).getClassification().getType().getName(locale)).compareTo(((Allocatable) o2).getClassification().getType().getName(locale)) < 0) + return -1; + return 0; + } + }; + + Collections.sort(arrayList,comp); + Iterator it = arrayList.iterator(); + int i=0; + Color color = null; + while (it.hasNext()) { + Allocatable allocatable = (Allocatable) it.next(); + classification = allocatable.getClassification(); + g.drawRect (1 + i*22, 0, 19, 14); + color = getColorForClassifiable( allocatable ); + if ( color == null ) + g.setColor(Color.WHITE); //RaplaColorList.getHexForColor( RaplaColorList.getResourceColor(i)); + else + g.setColor(color); + g.fillRect (2 + i*22, 1, 18, 13); + g.setFont(textFont); + g.setColor(Color.BLACK); + + g.drawString(classification.getType().getName(locale).substring(0,1), 5 + i*22, 12); // First character from name + i++; + } + + int width = i * 22 + 2; // start of text comments + + it = arrayList.iterator(); + + while (it.hasNext()) { + Allocatable allocatable = (Allocatable) it.next(); + classification = allocatable.getClassification(); + width = getControlData(classification, g, width); + } + + // Event check points + classification = reservation.getClassification(); + width = getControlData(classification, g, width); + + + } + + private int getControlData(Classification classification, Graphics g, int inWidth) { + Attribute[] attributes = classification.getAttributes(); + String color = null; + String txt = null; + + int outWidth = inWidth; + for (int k=0; k', 28) + { + private static final long serialVersionUID = 1L; + + public String getToolTipText(MouseEvent e) { + + return getString("plus1month"); + } + + public Point getToolTipLocation(MouseEvent event) { + return new Point((event.getX()), (event.getY() + 20)); + } + }; + + nextButton. setToolTipText(""); // needed to activate tooltip + + panel.setLayout(tableLayout); + calendarPanel.add(dateSelection); + calendarPanel.add(todayButton); + calendarPanel.add(prevButton); + calendarPanel.add(nextButton); + panel.add(calendarPanel, "1, 0"); + + startTimeLabel.setText(getString("start_time")); + calendarPanel.add( startTimeLabel ); + startTime = new RaplaTime(); + startTime.setTimeZone(DateTools.getTimeZone()); + startTime.setRowsPerHour(1); + startTime.setTime(00,00); + calendarPanel.add(startTime); + startTime.addDateChangeListener(listener); + + endTimeLabel.setText(getString("end_time")); + calendarPanel.add( endTimeLabel ); + endTime = new RaplaTime(); + endTime.setTimeZone(DateTools.getTimeZone()); + endTime.setRowsPerHour(1); + endTime.setTime(00,00); + calendarPanel.add(endTime); + endTime.addDateChangeListener(listener); + + JPanel optionsPanel = new JPanel(); + TitledBorder optionsBorder = BorderFactory.createTitledBorder(blackline,getString("options.timeshift")); + optionsPanel.setBorder(optionsBorder); + panel.add(optionsPanel,"7,0"); + + // columns = 7, rows = 2 + optionsPanel.setLayout( new TableLayout(new double[][] {{ pre, 5, pre, 5 , pre, 5, pre }, {10, pre }})); + + timeShiftTimesLabel.setText(getString("horizon")); + optionsPanel.add(timeShiftTimesLabel,"0,1,l,f"); + timeShiftTimes = new RaplaNumber(new Double(1),new Double(0),new Double(12), false); + optionsPanel.add(timeShiftTimes,"2,1,f,f"); + timeShiftTimes.addChangeListener(listener); + timeShifts = getQuery().getPreferences(getUser()).getEntryAsInteger( OccupationOption.MONTHS,0); + timeShiftTimes.setNumber(timeShifts); + + String startDay = getQuery().getPreferences(getUser()).getEntryAsString( OccupationOption.START_DAY,OccupationOption.TODAY); + isStartDayFirstDay = startDay.equals(OccupationOption.FIRSTDAY) ? true : false; + + freeSlotLabel.setText(getString("freeSlot")); + optionsPanel.add(freeSlotLabel,"4,1,l,f"); + freeSlot = new RaplaNumber(new Double(0),new Double(0),new Double(99), false); + optionsPanel.add(freeSlot,"6,1,f,f"); + freeSlot.addChangeListener(listener); + nextButton.addActionListener( listener ); + prevButton.addActionListener( listener ); + + dateSelection.addDateChangeListener( listener ); + todayButton.addActionListener(listener); + update(); + } + + boolean listenersEnabled = true; + public void update() throws RaplaException + { + listenersEnabled = false; + try { + if ( model.getSelectedDate() == null) { + model.setSelectedDate( getQuery().today()); + } + Date date = model.getSelectedDate(); + String startDay = getQuery().getPreferences(getUser()).getEntryAsString( OccupationOption.START_DAY,OccupationOption.TODAY); + isStartDayFirstDay = startDay.equals(OccupationOption.FIRSTDAY) ? true : false; + dateSelection.setDate( setStartOfMonth(date)); + } finally { + listenersEnabled = true; + } + } + + public void dispose() { + } + + public void setNavigationVisible( boolean enable) { + nextButton.setVisible( enable); + prevButton.setVisible( enable); + } + + /** possible values are Calendar.DATE, Calendar.WEEK_OF_YEAR, Calendar.MONTH and Calendar.YEAR. + Default is Calendar.WEEK_OF_YEAR. + */ + public void setIncrementSize(int incrementSize) { + this.incrementSize = incrementSize; + } + + /** registers new DateChangeListener for this component. + * An DateChangeEvent will be fired to every registered DateChangeListener + * when the a different date is selected. + * @see DateChangeListener + * @see DateChangeEvent + */ + public void addDateChangeListener(DateChangeListener listener) { + listenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeDateChangeListener(DateChangeListener listener) { + listenerList.remove(listener); + } + + public DateChangeListener[] getDateChangeListeners() { + return (DateChangeListener[])listenerList.toArray(new DateChangeListener[]{}); + } + + /** An ActionEvent will be fired to every registered ActionListener + * when the a different date is selected. + */ + protected void fireDateChange(Date date) { + if (listenerList.size() == 0) + return; + DateChangeListener[] listeners = getDateChangeListeners(); + DateChangeEvent evt = new DateChangeEvent(this,date); + for (int i = 0;i= 0) { + updateDates(date); + } + } + else + if( newStart < newEnd) { + updateDates(date); + } + } + else + if (evt.getSource() == endTime) { + Date date = dateSelection.getDate(); + long newEnd = getTimeMs(endTime.getTime()); + long newStart = getTimeMs(startTime.getTime()); + if (newStart < newEnd) { + updateDates(date); + } + } + //System.out.println("Unknown event: " + evt.toString()); + } finally { + listenersEnabled = true; + } + } + + private void updateDates(Date date) { + model.setSelectedDate( date ); + + duration = getTimeMs(endTime.getTime()); // 24:00 duration = 0 + if(duration == 0) + duration += 86400000; + duration -= getTimeMs(startTime.getTime()); + //System.out.println("Start=" + date.toString() + " Duration="+duration); + fireDateChange( date ); + } + + public void stateChanged(ChangeEvent e) { + Calendar calendar = getRaplaLocale().createCalendar(); + calendar.setTime(dateSelection.getDate()); + Date date = calendar.getTime(); + fireDateChange( date); + } + } +} \ No newline at end of file diff --git a/src/org/rapla/plugin/occupationview/images/archive.gif b/src/org/rapla/plugin/occupationview/images/archive.gif new file mode 100644 index 0000000000000000000000000000000000000000..51e703b1b9c671baa2be0f6525edb3b69403370d GIT binary patch literal 216 zcmZ?wbhEHb6krfwIKsg2wj(b5!P~sjn^4pBFDXFJ7TPNb)}zFdzZN zpDc_F4AKlbATf}g46LCK)cR5~=VfGBty!EmMJ+qTijl!k<;;`cOWYDXbj&=28jDUI znIPA;;-J&oD09KqYe6rnb~B%5E3$|=yh9IPet+`%NBf)uy^D@aTzY)-fot23+}wNe?!6a3?!Wl{^8L@x-+q7i^6T4= z-|xTt{`%w3m+!w{e)y^6oc`w1&#ymzfB*UW_T`1Uw{+DM*j4A-RTtQ`mDw~G+te4@ z*5unwsB@ZCZ$6>YvZvf?POsI-Q$@u?XdkPBeycH`o4c<(-&a13Rs-Gz p^76d@d4oif5*H>MU5T+@im_^v zw``QSd7ZwMvdp5p(@=n__51(&{r~9j_4NDy_x%6u^7Z!o|LpSh`ThU={{Qv-|M>m? z_x=C-{{Qy<|NsC0A^8LW0018VEC2ui01yBW000Gm;3tk`X+Do(pr)8Mgb)zTT0U^W z?HoWqBm<#9IH-g~!w8q*Bn*q1fs<(fKMz8r<6!JkoDSh?xL`1m9m0T!L@LTpc|+%{ z6&U&@o~2NBDm#AzS2%uu4h|L`78F(^LK+$zDjF6V1aU4f5IhhQKQ{(25)w2vEhs81 JEv+RX06QZIfSmvU literal 0 HcmV?d00001 diff --git a/src/org/rapla/plugin/occupationview/images/eclipse-icons/inout.gif b/src/org/rapla/plugin/occupationview/images/eclipse-icons/inout.gif new file mode 100644 index 0000000000000000000000000000000000000000..02aec9fdc6958f1912a4897fd8ca24e4b7cee8cf GIT binary patch literal 308 zcmZ?wbhEHb6k*_IC}3dFVE_UUyY4y*RO-zh9IM~wDQ$K$E$iu^> zqobpuqQcG1$-~1bEiLu?_wN@kUa+t*IXgQ(di3z|<3}DIZk(L#zkdD7%gZS&%wMoz z{*on&_4IUp{rdU$@82Ike!P77667|b0b8U)LxP8nRJUAH(a9Vm)-%n;nxRSyP8~^F z6=Sd_;7DqqqKp8Cu~cAW%!La_m6WGDvwn3=pXjsg3qJ>YI!jZ!YDs~&W^@dr-`SJ62+pK*(^ACOa@_X{KW3$$r zUbOlAiXE5N?74dH#gDtszu$lH{mGl3&)@xg`{~!`Z@=#VMPB~6_u~7*S3h2T`1$R} z?`Q9Re)#(P)3@JWfBgRb^LKTLe^s%6bxA;7sb4jaQ5?`-<SgGr(Stle^Db26xs$JRFC#dDB*55Co=Bh3>wUSTWRatZn Xzo>?*s*-}@%2f)gDn1*X9T}_vyYRdz literal 0 HcmV?d00001 diff --git a/src/org/rapla/plugin/occupationview/images/eclipse-icons/trash.gif b/src/org/rapla/plugin/occupationview/images/eclipse-icons/trash.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9c8a2b1e48f7b07874f4c8f6ce0ad9b8be66985 GIT binary patch literal 615 zcmd6kKX21O96+zBX{xrN0a_^%2%PdKDJfu=(q5Xj1d=9Bp^yMW$5bMc*{rG(-fB4l zome;_A>F{>@g$ZTe-g{Fpkur7MvwUbEG$6sEqLS8+g`iV!qwyRD35-;MB0perhEzk zlU^jc1o{+wCWA!H9?Yd&paXuKEo03Gay1y z&`g?;%Sb2&svJ-|phU<-nLxOVDGZs9;cK&4WpAhpn`)G6pxn34GV ze^C6h+&CE=pAKHzZ{M8y_A7s2w>yVjRQzpCA#{e;(3r_Al>Hi=#j*9y8V=F)%(;aN zb93|742rXhcelLfU2kV|F&m>?ZYi^Td8u$Q_c?Z}yYAkeyIXY$?mWZ27r5QH_pNz= zyFGl+Tqn-Medmj_-*iZ2yHl-H{Z9;Z@*7?pYg$a&3+pI z-R7>D232!g0OBT#o&^o_xYKiPn>;swX;3wNE%{QYY&;TBJ~~?pW)f_f3n8z34&bay z!bz}Y07lxwmx@hoLA=Cg19%H;0FT?pS+Z_(*OWxe3I5#tY~*f1O(@U+lJejjDn%}Y z1Rzq9;a=60bo#brqnGm za_M}eBx4~dYDFj{5=Erc%5UX5hW9Gl?3cFz7*_7iJ=;u@7PZ~EoGN@N`ReD@r)4bw z!@a60i8vW44)Hj|11_tP@&Le>66MO3rC$kPQD92{#9Ro;qc|i5Qq;><+8F0(>{0-3 z`^;ITaz(AEiI`#KE)i;O_t$}23&26pFmC(IIS3jCpzrzsM4nAl5;4Tdg(Y94B!w)o zy7Jtw1ki2n8h}>&*f|IqW+R!ecY03w=*$^ukCFB=Fn!lg#*#3rf});7rsn|EJ3S{= zyxEurRWk{;O#0zjAYgl5&`=X`uH>+W6c6{RW>YIh+9woH(2A0XE&J0Jc#@a+wAL*9 zY+TFNNJ%0jpeSft>RPM-#polCNJ;!mp7Y1GI#BQQoK#{LkJqMFjFaByVg78a?S^nk z(vq;cVA&6ETnpkeBJQ;R$km2iUQiQO1<_vSh@i6F-|6H_4mrIbLh&dLld?-9rBJRU z6cFCX)^Y;4$oj1ah1Gnp#v`YzUGIMZP(C_y`mRq&#C$@8FXPPhlq-4u#cuAO)ZBl? z^-eES#6J@;O3SZYnGyA!0RS>bENIJtg0}yJZvl`zOFU$qm^+5UUw$wTzkQO8$FGMB zP6q(|^y_o#egQRAe0umDC#@FUC}hX=@ptL~ls|vq05esv90>(in$sMB)2|!mN&gi9 z_bc1{ICwSp^7!=-fRk1$n>%0N-YPjxfsKXC-kUo-JKrBW_bS^ajKgg1#r{+N9-i{e z{y|oaa|Iu|@Me0scDuH7Ro*O8qbdbkrrX>#^-j;prGx+v8z0a0_r>vFYl+V!*fNVM z*=;sVZUA{>(cVYeBNUQxQss9JU>3;J_`hQHFT;YJ)nwH$Z~y=R07*qoM6N<$g5JH~ AGXMYp literal 0 HcmV?d00001 diff --git a/src/org/rapla/plugin/occupationview/images/table.png b/src/org/rapla/plugin/occupationview/images/table.png new file mode 100644 index 0000000000000000000000000000000000000000..fe33429ec7bf1dc30fcde54816f477ddd1568912 GIT binary patch literal 997 zcmVpK=2`#%19C}3 zK~zY`#h1@ZD_0c9KQq1zFGI--2rYsVN{T<2NT%veP#0Oa6w$vyL~!S_|3MLS>#~b3 zf(pWWb>YUvC6EC%_jHlmaVC@0$);Wya&yl2-h1x%d(PZD@X~$) z(C&ls?QM)gltM(ceY!8w9wVLc zBK&^+H$NYI=f8aYt7kC7=|4M@fJoccQk{-~h@d(SrL;O0;B+lg(o`=lF7^y2u1vOVhl6n(=UdP703tF~t5tHj zTx^*%KCVpJY?e}~^dgh%x}Hv??xqtmZW|OIN#IN-Q`OOT%cK)h%Vb#=kB^TL+BY{h z|MP6>CsX8X8Xg}0LsQr-lLo&glYX;mUtF2A&6g>iPT%T8`oF6wlEA<}*=)9_OgbUs zR+Gl}xKw@f-A<5rW#$CXL1>&tX documentInfos; + + public OfficePrintingMenuFactory(RaplaContext context, Configuration config) + throws RaplaException { + super(context); + documentInfos = new HashMap(5); + String option1 = config.getChild(OfficePrintingOption.OPTION1) + .getValue(null); + if (option1 != null) { + documentInfos.put(getDocumentName(option1), option1); + } + String option2 = config.getChild(OfficePrintingOption.OPTION2) + .getValue(null); + if (option2 != null) { + documentInfos.put(getDocumentName(option2), option2); + } + String option3 = config.getChild(OfficePrintingOption.OPTION3) + .getValue(null); + if (option3 != null) { + documentInfos.put(getDocumentName(option3), option3); + } + String option4 = config.getChild(OfficePrintingOption.OPTION4) + .getValue(null); + if (option4 != null) { + documentInfos.put(getDocumentName(option4), option4); + } + String option5 = config.getChild(OfficePrintingOption.OPTION5) + .getValue(null); + if (option5 != null) { + documentInfos.put(getDocumentName(option5), option5); + } + StartupEnvironment env = (StartupEnvironment) context + .lookup(StartupEnvironment.ROLE); + URL contextRootURL = env.getContextRootURL(); + int startupEnv = env.getStartupMode(); + for (String documentName : documentInfos.keySet()) { + String documentURL = documentInfos.get(documentName); + if (startupEnv == StartupEnvironment.WEBSTART + || startupEnv == StartupEnvironment.APPLET) { + try { + documentURL = new URL(contextRootURL, documentURL) + .toString(); + documentInfos.put(documentName, documentURL); + } catch (MalformedURLException e) { + getLogger().error( + "Invalid relative URL '" + documentURL + "'."); + } + } else { + try { + File contextRootFile = IOUtil.getFileFrom(contextRootURL); + File file = new File(contextRootFile, documentURL); + documentURL = file.getCanonicalFile().toURI().toURL() + .toString(); + documentInfos.put(documentName, documentURL); + } catch (IOException e) { + getLogger().error(e.getMessage()); + } + } + } + unoContact = new UnoContact(getLogger(), documentInfos); + } + + private String getDocumentName(String path) { + /* tms problem with IOUtil.fileToURL + File file = new File(path); + URL url = IOUtil.fileToURL(file); + URL baseURL = IOUtil.getBase(url); + String urlStr = url.toString(); + String baseUrlStr = baseURL.toString(); + String ret = urlStr.substring(baseUrlStr.length()); + ret = ret.substring(0, ret.lastIndexOf(".")); + return ret; */ + return null; //tms + } + + @Override + public RaplaMenuItem[] create(final MenuContext menuContext, + final RaplaObject focusedObject) { + if (!focusedObject.getRaplaType().equals(Appointment.TYPE)) { + return RaplaMenuItem.EMPTY_ARRAY; + } + if (!menuContext.has("selected_date")) { + return RaplaMenuItem.EMPTY_ARRAY; + } + final Appointment appointment = (Appointment) focusedObject; + final Reservation reservation = appointment.getReservation(); + try { + menuContext.lookup("selected_date"); + } catch (RaplaContextException e1) { + throw new IllegalStateException( + "selected_date has somehow vanished. This exception should not happen."); + } + + int i = 0; + RaplaMenuItem[] menuItems = new RaplaMenuItem[documentInfos.size()]; + for (final String documentName : documentInfos.keySet()) { + // create the menu entry + final RaplaMenuItem printItem = new RaplaMenuItem( + "OFFICEPRINTING_APPOINTMENT"); + printItem.setIcon(getIcon("icon.print")); + printItem.setSelectedIcon(getIcon("icon.checked")); + printItem.setSelected(true); + printItem.setText(getI18n().getString("printdocument") + " " + + documentName); + // Last the action for the marked menu + printItem.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int id = ((SimpleIdentifier) ((RefEntity) reservation) + .getId()).getKey(); + String reservationId = Integer.valueOf(id).toString(); + User user = appointment.getOwner(); + String username = user.getName(); + if (username == null || username.length() == 0) { + username = user.getUsername(); + } + Allocatable[] resources = reservation.getResources(); + String resourceName = ""; + if(resources.length != 0) { + Allocatable firstResource = resources[0]; + resourceName = firstResource.getName(getLocale()); + } + Date startDate = appointment.getStart(); + String startDateStr = null; + if (startDate != null) { + startDateStr = getRaplaLocale().formatDateLong( + startDate); + } + Date endDate = appointment.getEnd(); + String endDateStr = null; + if (endDate != null) { + endDateStr = getRaplaLocale().formatDateLong(endDate); + } + Map attributes = getAttributes(reservation); + attributes.put(RESERVATIONID, reservationId); + attributes.put(USERNAME, username); + attributes.put(RESOURCENAME, resourceName); + attributes.put(STARTDATE, startDateStr); + attributes.put(ENDDATE, endDateStr); + unoContact.printForm(documentName, attributes); + } + }); + menuItems[i] = printItem; + i++; + } + return menuItems; + } + + private Map getAttributes(final Classifiable classifiable) { + Map attrMap = new HashMap(); + final Classification classification = classifiable.getClassification(); + final Attribute[] attributes = classification.getAttributes(); + final Locale locale = getRaplaLocale().getLocale(); + for (Attribute attribute : attributes) { + final String name = getName(attribute); + String valueString = null; + final Object value = classification.getValue(attribute); + if (value instanceof Boolean) { + valueString = getString(((Boolean) value).booleanValue() ? "yes" + : "no"); + } else { + valueString = classification + .getValueAsString(attribute, locale); + } + attrMap.put(name, valueString); + } + return attrMap; + } + +} diff --git a/src/org/rapla/plugin/officeprinting/OfficePrintingOption.java b/src/org/rapla/plugin/officeprinting/OfficePrintingOption.java new file mode 100644 index 0000000..b1dd828 --- /dev/null +++ b/src/org/rapla/plugin/officeprinting/OfficePrintingOption.java @@ -0,0 +1,157 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.officeprinting; + +import java.awt.BorderLayout; + +import java.util.Locale; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; + +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.DefaultPluginOption; +import org.rapla.gui.OptionPanel; + +public class OfficePrintingOption extends DefaultPluginOption implements + OptionPanel { + + public final static String OPTION1 = "document-path-1"; + public final static String OPTION2 = "document-path-2"; + public final static String OPTION3 = "document-path-3"; + public final static String OPTION4 = "document-path-4"; + public final static String OPTION5 = "document-path-5"; + public final static String OPTION_DEFAULT = ""; + + JTextField documentPath1 = new JTextField(); + JTextField documentPath2 = new JTextField(); + JTextField documentPath3 = new JTextField(); + JTextField documentPath4 = new JTextField(); + JTextField documentPath5 = new JTextField(); + + public OfficePrintingOption(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected JPanel createPanel() throws RaplaException { + JPanel panel = super.createPanel(); + JPanel content = new JPanel(); + double[][] sizes = new double[][] { + { 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, + TableLayout.FILL, 5 }, + { TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED } }; + TableLayout tableLayout = new TableLayout(sizes); + content.setLayout(tableLayout); + panel.add(content, BorderLayout.CENTER); + + addCopyPaste(documentPath1); + documentPath1.setColumns(35); + content.add(new JLabel("Document path 1:"), "1,2"); + content.add(documentPath1, "3,2"); + + addCopyPaste(documentPath1); + documentPath1.setColumns(35); + content.add(new JLabel("Document path 2:"), "1,4"); + content.add(documentPath2, "3,4"); + + addCopyPaste(documentPath1); + documentPath1.setColumns(35); + content.add(new JLabel("Document path 3:"), "1,6"); + content.add(documentPath3, "3,6"); + + addCopyPaste(documentPath1); + documentPath1.setColumns(35); + content.add(new JLabel("Document path 4:"), "1,8"); + content.add(documentPath4, "3,8"); + + addCopyPaste(documentPath1); + documentPath1.setColumns(35); + content.add(new JLabel("Document path 5:"), "1,10"); + content.add(documentPath5, "3,10"); + + return panel; + } + + public void show() throws RaplaException { + super.show(); + } + + public void commit() throws RaplaException { + super.commit(); + } + + public void setPreferences(Preferences preferences) { + this.preferences = preferences; + } + + protected void addChildren(DefaultConfiguration newConfig) { + DefaultConfiguration markerLabelConf1 = new DefaultConfiguration(OPTION1); + markerLabelConf1.setValue(documentPath1.getText()); + newConfig.addChild(markerLabelConf1); + + DefaultConfiguration markerLabelConf2 = new DefaultConfiguration(OPTION2); + markerLabelConf2.setValue(documentPath2.getText()); + newConfig.addChild(markerLabelConf2); + + DefaultConfiguration markerLabelConf3 = new DefaultConfiguration(OPTION3); + markerLabelConf3.setValue(documentPath3.getText()); + newConfig.addChild(markerLabelConf3); + + DefaultConfiguration markerLabelConf4 = new DefaultConfiguration(OPTION4); + markerLabelConf4.setValue(documentPath4.getText()); + newConfig.addChild(markerLabelConf4); + + DefaultConfiguration markerLabelConf5 = new DefaultConfiguration(OPTION5); + markerLabelConf5.setValue(documentPath5.getText()); + newConfig.addChild(markerLabelConf5); + } + + protected void readConfig(Configuration config) { + String markerLabelText1 = config.getChild(OPTION1).getValue( + OPTION_DEFAULT); + documentPath1.setText(markerLabelText1); + + String markerLabelText2 = config.getChild(OPTION2).getValue( + OPTION_DEFAULT); + documentPath2.setText(markerLabelText2); + + String markerLabelText3 = config.getChild(OPTION3).getValue( + OPTION_DEFAULT); + documentPath3.setText(markerLabelText3); + + String markerLabelText4 = config.getChild(OPTION4).getValue( + OPTION_DEFAULT); + documentPath4.setText(markerLabelText4); + + String markerLabelText5 = config.getChild(OPTION5).getValue( + OPTION_DEFAULT); + documentPath5.setText(markerLabelText5); + } + + @Override + public String getDescriptorClassName() { + return OfficePrintingPlugin.class.getName(); + } + + public String getName(Locale locale) { + return "Office Printing Plugin"; + } + +} diff --git a/src/org/rapla/plugin/officeprinting/OfficePrintingPlugin.java b/src/org/rapla/plugin/officeprinting/OfficePrintingPlugin.java new file mode 100644 index 0000000..fbb21aa --- /dev/null +++ b/src/org/rapla/plugin/officeprinting/OfficePrintingPlugin.java @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.officeprinting; +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.appointmentmarker.AppointmentMarkerMenuFactory; + +/** + This is a demonstration of a rapla-plugin. It adds a sample usecase and option + to the rapla-system. + */ + +public class OfficePrintingPlugin + implements + PluginDescriptor +{ + public static final String RESOURCE_FILE = OfficePrintingPlugin.class.getPackage().getName() + ".OfficePrintingResources"; + public static final String PLUGIN_CLASS = OfficePrintingPlugin.class.getName(); + + public String toString() { + return "OfficePrinting"; + } + + /** + * @see org.rapla.framework.PluginDescriptor#provideServices(org.rapla.framework.general.Container) + */ + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", false) ) + return; + + container.addContainerProvidedComponent( I18nBundle.ROLE, I18nBundleImpl.class.getName(), RESOURCE_FILE,I18nBundleImpl.createConfig( RESOURCE_FILE ) ); + //container.addContainerProvidedComponent( RaplaExtensionPoints.CLIENT_EXTENSION, OfficePrintingInitializer.class.getName(), PLUGIN_CLASS, config); + container.addContainerProvidedComponent( RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION, OfficePrintingOption.class.getName(),PLUGIN_CLASS, config); + container.addContainerProvidedComponent( RaplaExtensionPoints.OBJECT_MENU_EXTENSION, OfficePrintingMenuFactory.class.getName(), PLUGIN_CLASS, config); + + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + +} + diff --git a/src/org/rapla/plugin/officeprinting/OfficePrintingResources.xml b/src/org/rapla/plugin/officeprinting/OfficePrintingResources.xml new file mode 100644 index 0000000..266d5a1 --- /dev/null +++ b/src/org/rapla/plugin/officeprinting/OfficePrintingResources.xml @@ -0,0 +1,9 @@ + + + + + My reservations + Meine Reservierungen + mes réservations + + diff --git a/src/org/rapla/plugin/officeprinting/UnoContact.java b/src/org/rapla/plugin/officeprinting/UnoContact.java new file mode 100644 index 0000000..91741f5 --- /dev/null +++ b/src/org/rapla/plugin/officeprinting/UnoContact.java @@ -0,0 +1,215 @@ +package org.rapla.plugin.officeprinting; + +import java.io.File; +import java.util.Map; + +import org.apache.avalon.framework.logger.Logger; +import com.sun.star.beans.PropertyValue; +import com.sun.star.beans.UnknownPropertyException; +import com.sun.star.comp.helper.Bootstrap; +import com.sun.star.container.NoSuchElementException; +import com.sun.star.container.XEnumeration; +import com.sun.star.container.XEnumerationAccess; +import com.sun.star.frame.XComponentLoader; +import com.sun.star.frame.XDesktop; +import com.sun.star.lang.IllegalArgumentException; +import com.sun.star.lang.WrappedTargetException; +import com.sun.star.lang.XComponent; +import com.sun.star.lang.XMultiComponentFactory; +import com.sun.star.text.XDependentTextField; +import com.sun.star.text.XTextDocument; +import com.sun.star.text.XTextFieldsSupplier; +import com.sun.star.uno.UnoRuntime; +import com.sun.star.uno.XComponentContext; +import com.sun.star.util.CloseVetoException; +import com.sun.star.util.XCloseable; +import com.sun.star.view.XPrintable; + +public class UnoContact { + + private final static String DOCUMENTTYPE_WRITER = "swriter"; + private Logger logger; + private Map documentInfos; + + public UnoContact( Logger logger, + Map documentInfos) { + this.logger = logger; + this.documentInfos = documentInfos; + } + + public void printForm(String documentName, Map attributes) { + XDesktop xDesktop = getDesktop(); + try { + XComponent document = loadDocument(xDesktop, DOCUMENTTYPE_WRITER, + getOOURL(documentInfos.get(documentName))); + for (String key : attributes.keySet()) { + replaceField(document, key, attributes.get(key)); + } + printDocument(document); + closeDocument(document); + } catch (CloseVetoException e) { + logger.error(e.getMessage(), e); + } catch (NoSuchElementException e) { + logger.error(e.getMessage(), e); + } catch (WrappedTargetException e) { + logger.error(e.getMessage(), e); + } catch (UnknownPropertyException e) { + logger.error(e.getMessage(), e); + } + } + + public XDesktop getDesktop() { + XDesktop xDesktop = null; + XMultiComponentFactory xMCF = null; + + try { + XComponentContext xContext = null; + xContext = Bootstrap.bootstrap(); + xMCF = xContext.getServiceManager(); + if (xMCF != null) { + logger.info("Connected to a running office ..."); + Object oDesktop = xMCF.createInstanceWithContext( + "com.sun.star.frame.Desktop", xContext); + xDesktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, + oDesktop); + } else { + logger.error("Can't create a desktop." + + "No connection, no remote office servicemanager available!"); + } + } catch (Exception e) { + e.printStackTrace(System.err); + System.exit(1); + } + return xDesktop; + } + + public XTextDocument createTextdocument(XDesktop xDesktop) { + + XTextDocument aTextDocument = null; + + try { + XComponent xComponent = createNewDocument(xDesktop, + DOCUMENTTYPE_WRITER); + aTextDocument = (XTextDocument) UnoRuntime.queryInterface( + XTextDocument.class, xComponent); + } catch (Exception e) { + e.printStackTrace(System.err); + } + return aTextDocument; + } + + public XComponent createNewDocument(XDesktop xDesktop, String sDocumentType) { + + String sURL = "private:factory/" + sDocumentType; + + XComponent xComponent = null; + XComponentLoader xComponentLoader = null; + PropertyValue xEmptyArgs[] = new PropertyValue[0]; + + try { + xComponentLoader = (XComponentLoader) UnoRuntime.queryInterface( + XComponentLoader.class, xDesktop); + xComponent = xComponentLoader.loadComponentFromURL(sURL, "_blank", + 0, xEmptyArgs); + } catch (Exception e) { + + e.printStackTrace(System.err); + } + return xComponent; + } + + public XComponent loadDocument(XDesktop xDesktop, String sDocumentType, + String documentURL) { + XComponent xComponent = null; + XComponentLoader xComponentLoader = null; + PropertyValue xEmptyArgs[] = new PropertyValue[0]; + + try { + xComponentLoader = (XComponentLoader) UnoRuntime.queryInterface( + XComponentLoader.class, xDesktop); + xComponent = xComponentLoader.loadComponentFromURL(documentURL, + "_blank", 0, xEmptyArgs); + + } catch (Exception e) { + + e.printStackTrace(System.err); + } + return xComponent; + } + + public String getOOURL(String url) { + if (File.separator.equals("/")) { + return url.replaceFirst("file:/", "file:///"); + } else { + return url.replaceFirst("file:/", "file://"); + } + } + + public void closeDocument(XComponent document) throws CloseVetoException { + XCloseable xcloseable = (XCloseable) UnoRuntime.queryInterface( + XCloseable.class, document); + xcloseable.close(false); + } + + public void replaceField(XComponent document, String fieldName, + String fieldValue) throws NoSuchElementException, + WrappedTargetException, UnknownPropertyException { + XTextFieldsSupplier xTextFieldsSupplier = (XTextFieldsSupplier) UnoRuntime + .queryInterface(XTextFieldsSupplier.class, document); + XEnumerationAccess xEnumeratedFields = xTextFieldsSupplier + .getTextFields(); + XEnumeration xEnum = xEnumeratedFields.createEnumeration(); + while (xEnum.hasMoreElements()) { + // get the next element as a UNO Any + Object aField = xEnum.nextElement(); + // get the name of the sheet from its XNamed interface + XDependentTextField xUserField = (XDependentTextField) UnoRuntime + .queryInterface(XDependentTextField.class, aField); + String foundFieldName = (String) xUserField.getTextFieldMaster() + .getPropertyValue("Name"); + if (fieldName.equals(foundFieldName)) { + try { + xUserField.getTextFieldMaster().setPropertyValue("Content", + fieldValue); + } catch (Exception e) { + logger.error("Cannot set field value '" + fieldValue + + "' for '" + fieldName + "': " + e.getMessage()); + } + // break; + } + } + } + + public void printDocument(XComponent document) { + XPrintable xPrintable = (XPrintable) UnoRuntime.queryInterface( + XPrintable.class, document); + PropertyValue[] printerValues = xPrintable.getPrinter(); + String printerName = getPropertyValue(printerValues, "Name"); + PropertyValue[] printerDesc = new PropertyValue[1]; + printerDesc[0] = new PropertyValue(); + printerDesc[0].Name = "Name"; + printerDesc[0].Value = printerName; + try { + xPrintable.setPrinter(printerDesc); + PropertyValue[] printOpts = new PropertyValue[1]; + printOpts[0] = new PropertyValue(); + printOpts[0].Name = "Pages"; + printOpts[0].Value = "1"; + xPrintable.print(printOpts); + } catch (IllegalArgumentException e) { + logger.error("Error printing document: " + e.getMessage()); + } + } + + public String getPropertyValue(PropertyValue[] values, String name) { + String ret = null; + for (PropertyValue value : values) { + if (value.Name.equals(name)) { + ret = (String) value.Value; + break; + } + } + return ret; + } + +} \ No newline at end of file diff --git a/src/org/rapla/plugin/package.html b/src/org/rapla/plugin/package.html new file mode 100644 index 0000000..b80ccc3 --- /dev/null +++ b/src/org/rapla/plugin/package.html @@ -0,0 +1,9 @@ + +This is the base package of the GUI-client. Communication through the backend +is done through the modules of org.rapla.facade package. +The gui-client is normally started through the RaplaClientService. +You can also plug-in your own components into the gui. + + + + diff --git a/src/org/rapla/plugin/periodcopy/CopyDialog.java b/src/org/rapla/plugin/periodcopy/CopyDialog.java new file mode 100644 index 0000000..ef1fe89 --- /dev/null +++ b/src/org/rapla/plugin/periodcopy/CopyDialog.java @@ -0,0 +1,83 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodcopy; + +import javax.swing.BorderFactory; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.domain.Period; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.RaplaWidget; + +/** sample UseCase that only displays the text of the configuration and + all reservations of the user.*/ +class CopyDialog extends RaplaGUIComponent implements RaplaWidget +{ + + JComboBox sourcePeriodChooser = new JComboBox(new String[] {"a", "b"}); + JComboBox destPeriodChooser = new JComboBox(new String[] {"a", "b"}); + JPanel panel = new JPanel(); + JLabel label = new JLabel(); + JList selectedReservations = new JList(); + public final static String ROLE = CopyDialog.class.getName(); + + public CopyDialog(RaplaContext sm) throws RaplaException { + super(sm); + setChildBundleName( PeriodCopyPlugin.RESOURCE_FILE); + Period[] periods = getQuery().getPeriods(); + sourcePeriodChooser.setModel( new DefaultComboBoxModel( periods )); + destPeriodChooser.setModel( new DefaultComboBoxModel( periods )); + label.setText(getString("copy_selected_events_from")); + panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); + panel.setLayout(new TableLayout(new double[][]{ + {TableLayout.PREFERRED ,5 , TableLayout.FILL } + ,{20, 5, TableLayout.PREFERRED ,5 ,TableLayout.PREFERRED, 5, TableLayout.PREFERRED } + } + )); + selectedReservations.setEnabled( false ); + + panel.add(label, "0,0,2,1"); + panel.add( new JLabel(getString("source")),"0,2" ); + panel.add( sourcePeriodChooser,"2,2" ); + panel.add( new JLabel(getString("destination")),"0,4" ); + panel.add( destPeriodChooser,"2,4" ); + panel.add( new JLabel(getString("reservations")) , "0,6,l,t"); + panel.add( new JScrollPane( selectedReservations ),"2,6" ); + } + + public JComboBox getDestChooser() { + return destPeriodChooser; + } + + public JComboBox getSourceChooser() { + return sourcePeriodChooser; + } + + public JList getReservationList() { + return selectedReservations; + } + + public JComponent getComponent() { + return panel; + } +} + diff --git a/src/org/rapla/plugin/periodcopy/CopyPluginInit.java b/src/org/rapla/plugin/periodcopy/CopyPluginInit.java new file mode 100644 index 0000000..d17f1b8 --- /dev/null +++ b/src/org/rapla/plugin/periodcopy/CopyPluginInit.java @@ -0,0 +1,170 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodcopy; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import javax.swing.DefaultListModel; +import javax.swing.JComboBox; +import javax.swing.ListModel; + +import org.rapla.entities.Entity; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.PeriodModel; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.MenuExtensionPoint; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.RaplaMenuItem; +import org.rapla.gui.toolkit.RaplaSeparator; +import org.rapla.plugin.RaplaExtensionPoints; + +public class CopyPluginInit extends RaplaGUIComponent +{ + public CopyPluginInit(RaplaContext sm) throws RaplaException { + super(sm); + setChildBundleName( PeriodCopyPlugin.RESOURCE_FILE); + MenuExtensionPoint menu = (MenuExtensionPoint) getService( RaplaExtensionPoints.EDIT_MENU_EXTENSION_POINT); + menu.insert( new RaplaSeparator("info_end")); + menu.insert(createInfoMenu()); + } + + private RaplaMenuItem createInfoMenu( ) { + RaplaMenuItem item = new RaplaMenuItem("copy_events"); + +// ResourceBundle bundle = ResourceBundle.getBundle( "org.rapla.plugin.periodcopy.PeriodCopy"); + final String label =getString("copy_events") ; + //bundle.getString("copy_events"); + + item.setText( label ); + item.setIcon( getIcon("icon.copy") ); + item.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + try { + final CopyDialog useCase = new CopyDialog(getContext()); + String[] buttons = new String[]{getString("abort"), getString("copy") }; + final DialogUI dialog = DialogUI.create( getContext(),getMainComponent(),true, useCase.getComponent(), buttons); + dialog.setTitle( label); + dialog.setSize( 400, 400); + dialog.getButton( 0).setIcon( getIcon("icon.abort")); + dialog.getButton( 1).setIcon( getIcon("icon.copy")); + dialog.getButton( 1).setEnabled(false); + final JComboBox sourceBox = useCase.getSourceChooser(); + final JComboBox destBox = useCase.getDestChooser(); + PeriodModel periodModel = getPeriodModel(); + final CalendarModel model = (CalendarModel) getService( CalendarModel.ROLE); + Period period = (Period) periodModel.getNearestPeriodForStartDate( model.getSelectedDate()); + if ( period != null) { + sourceBox.setSelectedItem( period ); + destBox.setSelectedItem( period ); + useCase.getReservationList().setModel( getReservationList( model, period) ); + } + ActionListener listener = new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + int destIndex = destBox.getSelectedIndex(); + int sourceIndex = sourceBox.getSelectedIndex(); + dialog.getButton( 1).setEnabled( destIndex >= 0 && sourceIndex >=0 && destIndex != sourceIndex); + Period sourcePeriod = (Period)sourceBox.getSelectedItem(); + try { + useCase.getReservationList().setModel( getReservationList( model, sourcePeriod) ); + } catch (Exception ex ) { + showException( ex, getMainComponent()); + } + } + }; + sourceBox.addActionListener( listener ); + destBox.addActionListener( listener ); + dialog.startNoPack(); + if ( dialog.getSelectedIndex() == 1) { + Period sourcePeriod = (Period)sourceBox.getSelectedItem(); + Period destPeriod = (Period)destBox.getSelectedItem(); + if (sourcePeriod != null && destPeriod != null) + copy( model, sourcePeriod,destPeriod ); + } + } catch (Exception ex) { + showException( ex, getMainComponent() ); + } + } + }); + return item; + } + + private ListModel getReservationList(CalendarModel model, Period period) throws RaplaException { + DefaultListModel listModel = new DefaultListModel(); + if ( period != null) { + Reservation[] reservations = model.getReservations( period.getStart(), period.getEnd() ); + for ( int i=0; i 0) { + newReservations.add( r ); + } + + } + getModification().storeObjects( (Entity[]) newReservations.toArray( Entity.ENTITY_ARRAY) ); + + } + + +} + diff --git a/src/org/rapla/plugin/periodcopy/PeriodCopy.properties b/src/org/rapla/plugin/periodcopy/PeriodCopy.properties new file mode 100644 index 0000000..cc59882 --- /dev/null +++ b/src/org/rapla/plugin/periodcopy/PeriodCopy.properties @@ -0,0 +1,2 @@ +copy_events=copy events +copy_selected_events_from=copy selected events from \ No newline at end of file diff --git a/src/org/rapla/plugin/periodcopy/PeriodCopyPlugin.java b/src/org/rapla/plugin/periodcopy/PeriodCopyPlugin.java new file mode 100644 index 0000000..7d570f3 --- /dev/null +++ b/src/org/rapla/plugin/periodcopy/PeriodCopyPlugin.java @@ -0,0 +1,44 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodcopy; +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; + +public class PeriodCopyPlugin implements PluginDescriptor +{ + + public static final String PLUGIN_CLASS = PeriodCopyPlugin.class.getName(); + public static final String RESOURCE_FILE = PeriodCopyPlugin.class.getPackage().getName() + ".PeriodCopy"; + public String toString() { + return "Copy Periods"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", false) ) + return; + + container.addContainerProvidedComponent( I18nBundle.ROLE, I18nBundleImpl.class.getName(), RESOURCE_FILE,I18nBundleImpl.createConfig( RESOURCE_FILE ) ); + container.addContainerProvidedComponent( RaplaExtensionPoints.CLIENT_EXTENSION, CopyPluginInit.class.getName(), PLUGIN_CLASS, config); + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + +} + diff --git a/src/org/rapla/plugin/periodcopy/PeriodCopy_de.properties b/src/org/rapla/plugin/periodcopy/PeriodCopy_de.properties new file mode 100644 index 0000000..ea29945 --- /dev/null +++ b/src/org/rapla/plugin/periodcopy/PeriodCopy_de.properties @@ -0,0 +1,2 @@ +copy_events=Kopiere Veranstaltungen +copy_selected_events_from=Ausgewhlte Veranstaltungen kopieren von: \ No newline at end of file diff --git a/src/org/rapla/plugin/periodview/HTMLPeriodViewPage.java b/src/org/rapla/plugin/periodview/HTMLPeriodViewPage.java new file mode 100644 index 0000000..96d2c46 --- /dev/null +++ b/src/org/rapla/plugin/periodview/HTMLPeriodViewPage.java @@ -0,0 +1,112 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodview; + +import java.util.Calendar; +import java.util.Date; +import java.util.Iterator; +import java.util.Set; + +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.html.AbstractHTMLView; +import org.rapla.components.calendarview.html.HTMLPeriodView; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Period; +import org.rapla.facade.PeriodModel; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.plugin.abstractcalendar.AbstractHTMLCalendarPage; +import org.rapla.plugin.abstractcalendar.AbstractRaplaBlock; +import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; + +public class HTMLPeriodViewPage extends AbstractHTMLCalendarPage +{ + public HTMLPeriodViewPage( RaplaContext context, CalendarModel calendarModel ) throws RaplaException + { + super( context, calendarModel ); + } + + protected AbstractHTMLView createCalendarView() { + HTMLPeriodView periodView = new HTMLPeriodView() { + public Block sameAppointment(int day, Block bl) { + Iterator it2 = slots[day].iterator(); + Block b; + while (it2.hasNext()) { + b = (Block)it2.next(); + if ( ((AbstractRaplaBlock)b).getAppointment() + == ((AbstractRaplaBlock)bl).getAppointment() + ) { + return b; + } + } + return null; + } + }; + CalendarOptions opt = getCalendarOptions(); + Set excludeDays = opt.getExcludeDays(); + + periodView.setExcludeDays( excludeDays ); + periodView.setLocale( getRaplaLocale().getLocale() ); + periodView.setTimeZone(getRaplaLocale().getTimeZone()); + + Date start = model.getStartDate(); + Date end = model.getEndDate(); + Date selectedDate = model.getSelectedDate(); + PeriodModel periodModel =getPeriodModel(); + Period selectedPeriod = periodModel.getNearestPeriodForStartDate( start, end); + + /* + * If the user does not change the start date then + * the choosen period is displayed. + * If the user choose another date, then 7 weeks are displayed. + */ + if ( start == null ) { + start = getQuery().today(); + end = DateTools.addDays(start, 7 * 7); + } else { + if ( selectedPeriod == null + || selectedPeriod.getStart().getTime() + != selectedDate.getTime()) { + end = DateTools.addDays(selectedDate, 7 * 7); + } else { + start = selectedPeriod.getStart(); + end = selectedPeriod.getEnd(); + } + } + + periodView.setToDate( start ); + periodView.setEndDate( end ); + + return periodView; + } + + protected RaplaBuilder createBuilder() throws RaplaException { + RaplaBuilder builder = super.createBuilder(); + + GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + boolean compactColumns = getCalendarOptions().isCompactColumns() || builder.getAllocatables().size() ==0 ; + strategy.setFixedSlotsEnabled( !compactColumns); + builder.setBuildStrategy( strategy ); + + return builder; + } + + protected int getIncrementSize() { + return Calendar.WEEK_OF_YEAR; + } + +} + diff --git a/src/org/rapla/plugin/periodview/PeriodViewFactory.java b/src/org/rapla/plugin/periodview/PeriodViewFactory.java new file mode 100644 index 0000000..5e6310d --- /dev/null +++ b/src/org/rapla/plugin/periodview/PeriodViewFactory.java @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodview; + +import javax.swing.Icon; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.images.Images; +import org.rapla.servletpages.RaplaPageGenerator; + +public class PeriodViewFactory extends RaplaComponent implements ViewFactory +{ + public PeriodViewFactory( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public final static String PERIOD_VIEW = "period"; + + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException + { + return new SwingPeriodCalendar( context, model, editable); + } + + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException + { + return new HTMLPeriodViewPage( context, model); + } + + public String getViewId() + { + return PERIOD_VIEW; + } + + public String getName() + { + return getString(PERIOD_VIEW); + } + + Icon icon; + public Icon getIcon() + { + if ( icon == null) { + icon = Images.getIcon("/org/rapla/plugin/periodview/images/period_view.png"); + } + return icon; + } + + public String getMenuSortKey() { + return "E"; + } + +} + diff --git a/src/org/rapla/plugin/periodview/PeriodViewPlugin.java b/src/org/rapla/plugin/periodview/PeriodViewPlugin.java new file mode 100644 index 0000000..27c589e --- /dev/null +++ b/src/org/rapla/plugin/periodview/PeriodViewPlugin.java @@ -0,0 +1,53 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodview; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; + +public class PeriodViewPlugin implements PluginDescriptor +{ + static boolean ENABLE_BY_DEFAULT = false; + + public String toString() { + return "Period View"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT) ) + return; + + container.addContainerProvidedComponent + ( + RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + ,PeriodViewFactory.class.getName() + ,PeriodViewFactory.PERIOD_VIEW + ,null + ); + } + + + public Object getPluginMetaInfos( String key ) + { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return new Boolean( ENABLE_BY_DEFAULT ); + } + return null; + } + + +} + diff --git a/src/org/rapla/plugin/periodview/SwingPeriodCalendar.java b/src/org/rapla/plugin/periodview/SwingPeriodCalendar.java new file mode 100644 index 0000000..b75eee0 --- /dev/null +++ b/src/org/rapla/plugin/periodview/SwingPeriodCalendar.java @@ -0,0 +1,144 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.periodview; + +import java.awt.Component; +import java.awt.Point; +import java.util.Calendar; +import java.util.Date; +import java.util.Set; + +import org.rapla.components.calendarview.swing.AbstractSwingCalendar; +import org.rapla.components.calendarview.swing.SwingPeriodView; +import org.rapla.components.calendarview.swing.ViewListener; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.facade.PeriodModel; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.plugin.abstractcalendar.AbstractRaplaSwingCalendar; +import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; +import org.rapla.plugin.abstractcalendar.RaplaCalendarViewListener; +import org.rapla.plugin.abstractcalendar.SwingRaplaBuilder; + + +public class SwingPeriodCalendar extends AbstractRaplaSwingCalendar +{ + + public SwingPeriodCalendar(RaplaContext sm,CalendarModel settings, boolean editable) throws RaplaException { + super( sm, settings, editable); + } + + protected AbstractSwingCalendar createView( boolean showScrollPane) + { + return new SwingPeriodView( showScrollPane ); + } + + protected ViewListener createListener() throws RaplaException { + return new RaplaCalendarViewListener(getContext(), model, view) { + /** override to change start- and end-dates and the repeating count */ + protected void showPopupMenu(Component component,Point p,Date start,Date end, int slotNr, Allocatable[] selectedAllocatables, Allocatable selectedAllocatable) { + int repeatings = (int)((end.getTime() - start.getTime())/DateTools.MILLISECONDS_PER_WEEK) + 1; + Calendar cal = getRaplaLocale().createCalendar(); + + cal.setTime(getModel().getSelectedDate()); + int firstDay = cal.get(Calendar.DAY_OF_WEEK) ; + + cal.setTime ( end ); + int hour = cal.get(Calendar.HOUR_OF_DAY); + int minute = cal.get(Calendar.MINUTE); + int day_of_week = cal.get(Calendar.DAY_OF_WEEK); + while ( day_of_week < firstDay ) { + day_of_week += 7; + } + + cal.setTime ( start ); + int day_of_week_end = cal.get(Calendar.DAY_OF_WEEK) ; + while ( day_of_week_end < firstDay ) { + day_of_week_end += 7; + } + + int decal = day_of_week - day_of_week_end; + // System.out.println("start=" + start + "\nend=" + end + "\nfirstday=" + firstDay + " day_of_week=" + day_of_week + " dayofweekend=" + day_of_week_end + " decal=" + decal); + if ( decal < 0 ) { + cal.add(Calendar.DATE, decal); + start = new Date ( cal.getTime().getTime() ); + cal.add(Calendar.DATE, -decal); + repeatings++ ; + } + + cal.set(Calendar.HOUR_OF_DAY, hour); + cal.set(Calendar.MINUTE, minute); + if ( decal > 0 ) + cal.add(Calendar.DATE, decal); + end = new Date ( cal.getTime().getTime() ); + showPopupMenu( component, p, start,end, slotNr, selectedAllocatables, selectedAllocatable, repeatings); + } + }; + } + + protected void configureView() throws RaplaException { + CalendarOptions calendarOptions = getCalendarOptions(); + Set excludeDays = calendarOptions.getExcludeDays(); + view.setExcludeDays( excludeDays ); + { + SwingPeriodView view = (SwingPeriodView)this.view; + view.setRowsPerHour( 1 ); + view.setRowSize( 16); + } + if ( !view.isEditable() ) { + view.setSlotSize( model.getSize()); + } else { + view.setSlotSize( 140 ); + } + + ((SwingPeriodView)view).setWorktime( calendarOptions.getWorktimeStart(), calendarOptions.getWorktimeEnd()); + + PeriodModel periodModel =getPeriodModel(); + Date start = model.getSelectedDate(); + Date end = model.getEndDate(); + Period selectedPeriod = periodModel.getNearestPeriodForStartDate( start, end); + if ( selectedPeriod != null) { + end = selectedPeriod.getEnd(); + } + view.setToDate( start ); + ((SwingPeriodView)view).setPeriodEnd( end ); + } + + protected RaplaBuilder createBuilder() throws RaplaException + { + RaplaBuilder builder = new SwingRaplaBuilder(getContext()); + builder.setRepeatingVisible( view.isEditable()); + builder.setEditingUser( getUser() ); + builder.setExceptionsExcluded( !getCalendarOptions().isExceptionsVisible() || !view.isEditable()); + builder.setFromModel( model, view.getStartDate(), view.getEndDate() ); + + GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + boolean compactColumns = getCalendarOptions().isCompactColumns() || builder.getAllocatables().size() ==0 ; + strategy.setFixedSlotsEnabled( !compactColumns); + strategy.setResolveConflictsEnabled( true ); + builder.setBuildStrategy( strategy ); + return builder; + } + + public int getIncrementSize() + { + return Calendar.WEEK_OF_YEAR; + } +} diff --git a/src/org/rapla/plugin/periodview/images/period_view.png b/src/org/rapla/plugin/periodview/images/period_view.png new file mode 100644 index 0000000000000000000000000000000000000000..30ed96146846ea3f0e62ca00c6ad93df3e593dd0 GIT binary patch literal 932 zcmV;V16%xwP)9ipVpx1f9FXg)KbzZ1H-<^SI^e{j~BM730fJP)-iwqI15z!&8b%-P3J<%9O zdJGd0&_hP;{LKe`|Kl|Vz^j+f0e*Y+^7*fCF8@Lhw1%OU&|5%6&=T&o20=hTYe4`# zl*knkFbp+@eae3R;Tx=U3I$Lo6!1Ln$3mg-_W1Z10HqZB`}^$d>?95zhG$oRfbsZ_#o9300<+#B6T*d)JEtXwW9_7CwxGOp_a{O!6f2L}h--`}IP z=KA_N-a}Y7B0?&a8pE!xt`Y&3mzT#dAUQiPwZuitX*~c-`%GDV0i( zS~HWdqobpbWF8z;Z7G|c|Y_hw%`&F~q z1YmP>GcLASWX5$}zW*+RQLR>KwOUlG)nTjEnoBn+rLfW|j7%njh>*!-1|pK^rt|Z2 z*4EahK7kJp4|#j_9wVR6V_6pYeEu#fq*-@UT);sPVB0o95Zp%v91-aCdW=rxX=ElY zVAC{lT^G|dbuAHADCXGWvZ0HD!mWPq`5y1cxcdN;*n z+U+(wW(66(C_!DR4N~4p-q$QNt-^EnYgvT z6m0^&9Bl%gwCPEk{<}8S>vcTOqh7E70) { + startTime = apps[apps.length-1].getStart(); + endTime = apps[apps.length-1].getEnd(); + } else { + startTime = new Date(DateTools.MILLISECONDS_PER_HOUR * getCalendarOptions().getWorktimeStart()); + endTime = new Date(startTime.getTime() + DateTools.MILLISECONDS_PER_HOUR); + } + + Date startDate = f.toDate(getDate(),startTime); + Date endDate = f.toDate(getDate(),endTime); + createAppointment(startDate,endDate); + } + + public void createAppointment(Date startDate,Date endDate) throws RaplaException { + appointment = getModification().newAppointment(startDate, endDate); + appointment.setRepeatingEnabled(true); + Repeating repeating = appointment.getRepeating(); + repeating.setType( RepeatingType.WEEKLY ); + repeating.setEnd(period.getEnd()); + startTime.setTime(appointment.getStart()); + endTime.setTime(appointment.getEnd()); + reservation.addAppointment(appointment); + startTime.addDateChangeListener(this); + endTime.addDateChangeListener(this); + + fireAppointmentAdded(appointment); + } + + public void actionPerformed(ActionEvent evt) { + if (evt.getSource() == weekdayChooser && weekdayChooser.getSelectedWeekday()>=0) { + selectFirstInPeriod(weekdayChooser.getSelectedWeekday()); + if (appointment == null) { + try { + newAppointment(); + } catch (Exception ex) { + showException(ex,getComponent()); + } + setAppointmentVisible(true); + } + update(); + } if (evt.getSource() == delete) { + removeAppointmentPanel(this); + reservation.removeAppointment(appointment); + fireAppointmentRemoved(appointment); + appointment = null; + } + } + + /** Selects the first appearence of the specified weekday in the period as startdate*/ + private void selectFirstInPeriod(int dayOfWeek) { + calendar.setTime(period.getStart()); + calendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); + if (calendar.getTime().before(period.getStart())) { + calendar.add(Calendar.DAY_OF_WEEK,7); + } + } + + /** returns the selected date (not the time) */ + private Date getDate() { + return calendar.getTime(); + } + + public void dateChanged(DateChangeEvent evt) { + if (!listenerEnabled) + return; + try { + listenerEnabled = false; + RaplaLocale f = getRaplaLocale(); + long duration = appointment.getEnd().getTime() - appointment.getStart().getTime(); + if (evt.getSource() == startTime) { + Date newStart = f.toDate(getDate(),startTime.getTime()); + Date newEnd = new Date(newStart.getTime() + duration); + if (newEnd.getTime() >= getDate().getTime() + DateTools.MILLISECONDS_PER_DAY) { + newEnd = new Date( + getDate().getTime() + + DateTools.MILLISECONDS_PER_DAY + - DateTools.MILLISECONDS_PER_MINUTE + ); + } + endTime.setTime(newEnd); + getLogger().debug("enddate adjusted"); + } + if (evt.getSource() == endTime) { + Date newEnd = f.toDate(getDate(),endTime.getTime()); + if (appointment.getStart().after(newEnd)) { + startTime.setTime(newEnd); + getLogger().debug("startdate adjusted"); + } + } + } finally { + listenerEnabled = true; + } + update(); + } + + private void update() { + RaplaLocale f = getRaplaLocale(); + Date start = f.toDate(getDate(),startTime.getTime()); + Date end = f.toDate(getDate(),endTime.getTime()); + appointment.move(start,end); + fireAppointmentChanged(appointment); + } + + private void setAppointmentVisible(boolean visible) { + newLabel.setVisible(!visible); + delete.setVisible(visible); + startLabel.setVisible(visible); + startTime.setVisible(visible); + endLabel.setVisible(visible); + endTime.setVisible(visible); + identifier.setVisible(visible); + } + + } +} diff --git a/src/org/rapla/plugin/periodwizard/PeriodReservationWizard.java b/src/org/rapla/plugin/periodwizard/PeriodReservationWizard.java new file mode 100644 index 0000000..2121190 --- /dev/null +++ b/src/org/rapla/plugin/periodwizard/PeriodReservationWizard.java @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodwizard; + +import java.awt.Component; + +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.ReservationWizard; + +/** The period-wizard-plugin eases the creation of reservations that repeat weekly + in a given period. This is a very common usecase at universities and schools. + */ +public class PeriodReservationWizard extends RaplaGUIComponent implements ReservationWizard { + + public PeriodReservationWizard(RaplaContext sm) throws RaplaException { + super( sm); + setChildBundleName( PeriodWizardPlugin.RESOURCE_FILE); + } + + public void start(Component owner,CalendarModel model,DynamicType type) + throws RaplaException { + WizardSequence sequence = new WizardSequence(getContext()); + sequence.start(owner,model,type); + } + + public String toString() { + return getString("reservation.create_with_default_wizard"); + } +} + + diff --git a/src/org/rapla/plugin/periodwizard/PeriodWizardPlugin.java b/src/org/rapla/plugin/periodwizard/PeriodWizardPlugin.java new file mode 100644 index 0000000..d623bad --- /dev/null +++ b/src/org/rapla/plugin/periodwizard/PeriodWizardPlugin.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodwizard; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; + +public class PeriodWizardPlugin implements PluginDescriptor { + public static final String RESOURCE_FILE =PeriodWizardPlugin.class.getPackage().getName() + ".WizardResources"; + public static final String PLUGIN_CLASS = PeriodWizardPlugin.class.getName(); + static boolean ENABLE_BY_DEFAULT = false; + + public String toString() { + return "Create Reservations in Periods"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT) ) + return; + + container.addContainerProvidedComponent( I18nBundle.ROLE, I18nBundleImpl.class.getName(), RESOURCE_FILE,I18nBundleImpl.createConfig( RESOURCE_FILE ) ); + container.addContainerProvidedComponent( RaplaExtensionPoints.RESERVATION_WIZARD_EXTENSION, PeriodReservationWizard.class.getName(), PLUGIN_CLASS, config); + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + + + +} + diff --git a/src/org/rapla/plugin/periodwizard/WizardResources.xml b/src/org/rapla/plugin/periodwizard/WizardResources.xml new file mode 100644 index 0000000..e7c9b5d --- /dev/null +++ b/src/org/rapla/plugin/periodwizard/WizardResources.xml @@ -0,0 +1,267 @@ + + + + + + Weekly event in a period + Wöchentliche Veranstaltung in einem Zeitraum + Évènement hebdomadaire pendant toute une période + Evento semanal durante todo un periodo + Activiteit (Periode wekelijks) + + + + Wizard for regular events + Assistent zum Anlegen einer regelmäßigen Veranstaltung + Assistant de création d'évènement hebdomadaire + Asistente de creación de eventos semanales + Assistent: Activiteit (Periode) + + + + No periods found. Please enter the periods which you want to use for planning first. You'll need to login as admin for this. + + + Keine Zeiträume gefunden. Bitte geben Sie zuerst die Zeiträume ein, für die Sie planen möchten. Sie müssen sich hierfür als admin einloggen. + + Pas de période. Commencez par définir des périodes dans l'année. Vous avez besoin de vous connecter comme 'admin' pour le faire + No existen periodos. Comience por definir los periodos del año que se usarán en las planificaciones. Para ello, necesitará conectarse como usuario admin. + Geen periode gevonden. Eerst een periode toevoegen. Contacteer de systeem beheerder. + + + + You have to mark at least one resource or person + to search for a free appointment! + + + Sie müssen mindestens eine Ressource oder Person + für die Sie den freien Termin suchen markieren! + + Vous devez au moins sélectionner une resource ou personne pour laquelle (ou lesquelles) vous voulez rechercher un crénau possible + ¡Debe seleccionar al menos un recurso o persona para el cual (o los cuales) desea buscar una cita disponible! + Tenminste één middel of persoon selecteren! + + + + Create a regular event:
    +
    + 1. Select a period.
    +
    + 2. Choose a event-type.
    +
    + 3. Enter the event information.
    +
    + 4. Proceed to the appointments-menu.
    +
    + + Anlegen einer regelmäßigen Veranstaltung:
    +
    + 1. Zeitraum in dem die Reservierung stattfindet auswählen.
    +
    + 2. Veranstaltungstyp auswählen.
    +
    + 3. Eingabe der Veranstaltungsdaten.
    +
    + 4. Weiter zur Termineingabe.
    +
    + + Création d'évènement hebdomadaire
    +
    + 1. Choisissez la période de l'année.
    +
    + 2. Choisissez le type de l'évènement.
    +
    + 3. Entrez les informations concernant l'évènement.
    +
    + 4. Passez à la fenêtre de définition des crénaux.
    +
    + + Creación de eventos semanales:
    +
    + 1. Seleccione el periodo del año.
    +
    + 2. Escoja el tipo de evento.
    +
    + 3. Introduzca la información del evento.
    +
    + 4. Pase a la ventana de creación de citas.
    +
    + + Plannen van een activiteit:
    +
    + 1. Kies een periode.
    +
    + 2. Kies een type activiteit.
    +
    + 3. Geef de activiteit een label.
    +
    + 4. Volgende.
    +
    +
    + + + Enter known appointments:
    + Fill in the day of the week and the time of the appointments.
    +
    + Search for free appointments:
    + Mark the resource or persons for which you are searching a free appointment in + the left table and press "Search free appointment".
    +
    + Selecting resources and persons:
    + Mark the persons and resources you want in the left table. + Double-click to add them to the right table and to assign them + to all entered appointments. If you want to assign a + resource or person to a particular appointment, click in the + right column next to the corresponding entry in the right table. +
    + + Eingabe von bekannten Terminen:
    + Geben Sie den Wochentag und die Uhrzeit der Termine ein.
    +
    + Suche nach freien Terminen:
    + Markieren Sie die Ressourcen oder Personen für die Sie einen freien Termin suchen + in der linken Tabelle und drücken Sie auf "Freien Termin suchen".
    +
    + Auswählen von Ressourcen und Personen:
    + Markieren Sie die gewünschten Personen und Ressourcen in der linken Tabelle. + Mit einen Doppelklick werden die Einträge in die rechte Tabelle übernommen und + allen eingegebenen Termine zugewiesen. Wenn Sie eine + Ressource oder Person nur einem bestimmten Termin zuweisen wollen, klicken Sie + in die rechte Spalte neben dem entsprechenden Eintrag in der rechten Tabelle. +
    + + Indiquer les crénaux que vous connaissez :
    + Indiquez le jour de la semaine et l'heure de début et de fin du crénau.
    +
    + Chercher des crénaux libres :
    + Sélectionnez dans la table de gauche + les ressources et personnes pour lesquelles vous + voulez rechercher un crénau libre. + Puis cliquez sur "Chercher un crénau libre".
    +
    + Selectionner les ressources et personnes :
    + Sélectionnez dans la table de gauche + les ressources et personnes puis cliquez sur "Insérer" + Elle seront assignées pour tous les crénaux. + Pour assigner une ressource ou personne à des crénaux + particuliers, cliquez sur le bouton à coté de la ressource + ou personne dans la table de droite. +
    + + Introduzca las citas que conoce:
    + Indique el día de la semana y la hora de inicio y de fin de la cita.
    +
    + Búsqueda de citas disponibles:
    + Seleccione en la tabla de la izquierda + los recursos y las personas para los cuales + desee buscar una cita disponible + y pulse sobre "Buscar una cita disponible".
    +
    + Seleccione los recursos y las personas:
    + Seleccione en la tabla de la izquierda + los recursos y las personas y pulse el botón "Añadir". + Se añadirán para todas las citas. + Para asignar un recurso o persona a una cita + particular, pulse sobre el botón que aparece a continuación + del recurso o persona en la tabla de la derecha. +
    + + 1. Plan een activiteit:
    + Geef de dag van de week en tijd.
    + of
    + zoek een vrije plaats; selecteer de middelen in de linkerlijst en Zoek.
    +
    2. Selecteer de middelen:
    + Selecteer de middelen in de linkerlijst en Voeg toe.

    + Als je een middel enkel aan één activiteit + wil toewijzen selecteer deze in de rechterlijst naast de naam.
    +
    3. Sla op. +
    +
    + + + Search for appointments:
    + Select with your mouse a free appointment in the wee kview. + Click "Add Appointment" to create the appointment + and return to the previous menu. +
    +
    + There you can assign the resource or person to the appointment. +
    + + Terminsuche:
    + Wählen Sie mit der Maus ein freies Zeitfenster in der Wochenansicht aus. + Drücken Sie "Termin hinzufügen", um den Termin anzulegen und zum + vorherigen Menü zurückzukehren.
    +
    + Sie können dort die gewünschte Ressource oder Person dem Termin zuweisen. +
    + + Chercher des crénaux :
    + Sélectionnez avec la souris un crénau libre + dans la semaine. + Cliquez sur "Ajouter crénaux" pour + ajouter le crénaux et revenir sur la fenêtre précédente. +
    + Ainsi vous pouvez assigner la ressource ou la personne + aux crénaux en cliquant sur 'insérer' +
    + + Búsqueda de citas :
    + Seleccione con el ratón una cita disponible durante la semana. + Pulse "Añadir cita" para añadir la cita + y volver a la ventana previa. +
    +
    + Allí podrá asignar recursos o personas a la cita. +
    + + Zoek:

    + Selecteer met de muis de tijd in het weekoverzicht.;
    +
    + Toevoegen om te bevestigen. +
    +
    + + Search for a free appointment + Freien Termin suchen + Chercher un crénau libre + Buscar una cita disponible + Zoek + + + Appointment Menu + Termineingabe + Création des crénaux + Creación de citas + Volgende + + + + Add Appointment + Termin hinzufügen + Ajouter un crénau + Añadir cita + Toevoegen + + + Enter appointments: + Eingabe der Termine: + Ajouter des crénaux : + Introducción de citas : + Toevoegen activiteiten: + + + Select resources and persons: + Auswählen von Ressourcen und Personen: + Sélection des ressources et personnes : + Selección de recursos y personas : + Toewijzingen: + + + {0}: {1} + {0}: {1} + {0}: {1} + {0}: {1} + {0}: {1} + +
    diff --git a/src/org/rapla/plugin/periodwizard/WizardSequence.java b/src/org/rapla/plugin/periodwizard/WizardSequence.java new file mode 100644 index 0000000..1edd98f --- /dev/null +++ b/src/org/rapla/plugin/periodwizard/WizardSequence.java @@ -0,0 +1,445 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.periodwizard; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ActionMap; +import javax.swing.BorderFactory; +import javax.swing.DefaultComboBoxModel; +import javax.swing.Icon; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.border.Border; + +import org.apache.avalon.framework.activity.Disposable; +import org.rapla.components.calendarview.Block; +import org.rapla.components.calendarview.swing.SwingWeekView; +import org.rapla.components.calendarview.swing.ViewListener; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.DateTools; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.ModificationEvent; +import org.rapla.facade.ModificationListener; +import org.rapla.facade.PeriodModel; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.edit.ClassificationField; +import org.rapla.gui.internal.edit.reservation.AllocatableSelection; +import org.rapla.gui.toolkit.DisposingTool; +import org.rapla.gui.toolkit.EmptyLineBorder; +import org.rapla.gui.toolkit.WizardDialog; +import org.rapla.gui.toolkit.WizardPanel; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; +import org.rapla.plugin.abstractcalendar.SwingRaplaBuilder; + + +class WizardSequence extends RaplaGUIComponent + implements + ModificationListener + ,Disposable +{ + + WizardDialog wizardDialog; + Reservation reservation; + Period period; + ReservationInfo panel1; + ReservationAllocation panel2; + ReservationWeekview panel3; + public WizardSequence(RaplaContext sm) throws RaplaException { + super(sm); + this.setChildBundleName( PeriodWizardPlugin.RESOURCE_FILE); + panel1 = new ReservationInfo(); + panel2 = new ReservationAllocation(); + panel3 = new ReservationWeekview(); + + } + + public ActionMap createActionMap() { + ActionMap map = new ActionMap(); + map.put(WizardPanel.ABORT, new Handler(getString("abort"),getIcon("icon.abort"))); + map.put(WizardPanel.PREV, new Handler( getString("back"),getIcon("icon.arrow_left"))); + map.put(WizardPanel.NEXT, new Handler(null,null)); + map.put(WizardPanel.FINISH, new Handler(getString("save"), getIcon("icon.save") )); + return map; + } + + /** the handler encapsulate the state logic of the wizard */ + class Handler extends AbstractAction { + private static final long serialVersionUID = 1L; + + Handler(String name, Icon icon) { + putValue(NAME,name); + putValue(SMALL_ICON, icon); + } + public void actionPerformed(ActionEvent evt) { + try { + String command = evt.getActionCommand(); + WizardPanel panel = wizardDialog.getActivePanel(); + if (command.equals(WizardPanel.ABORT)) { + wizardDialog.close(); + } + if (command.equals(WizardPanel.NEXT)) { + if (panel == panel1 && panel1.checkReservation()) { + panel2.appointmentSelection.setPeriod(period); + wizardDialog.start(panel2); + } + if (panel == panel2) { + Collection allocatables = panel2.getAllocatables(); + if (allocatables.size() == 0) { + showWarning(getString("warning.need_resource_or_person") + ,wizardDialog); + } else { + panel3.setAllocatables(allocatables); + wizardDialog.start(panel3); + panel3.build(); + } + } + if (panel == panel3) { + panel2.newAppointment(panel3.getStart(), panel3.getEnd()); + wizardDialog.start(panel2); + } + + } + if (command.equals(WizardPanel.PREV)) { + if (panel == panel2) { + wizardDialog.start(panel1); + } + if (panel == panel3) { + wizardDialog.start(panel2); + } + } + if (command.equals(WizardPanel.FINISH)) { + if (getReservationController().save(reservation,wizardDialog,false)) + wizardDialog.close(); + } + } catch (Exception ex) { + showException(ex,wizardDialog); + } + } + } + + public void start(Component owner,CalendarModel model,DynamicType dynamicType) throws RaplaException { + wizardDialog = WizardDialog.createWizard(getContext(),owner,false); + wizardDialog.setTitle(getString("reservation_wizard.title")); + getLogger().debug("starting wizard"); + wizardDialog.setSize(800, 565); + + reservation = getModification().newReservation(); + if (dynamicType != null) + reservation.setClassification(dynamicType.newClassification()); + panel1.setStart( model.getSelectedDate()); + panel1.setReservation(reservation); + panel2.setReservation(reservation); + getUpdateModule().addModificationListener(this); + wizardDialog.addWindowListener(new DisposingTool(this)); + wizardDialog.setDefault(2); + wizardDialog.start(panel1); + } + + public void dataChanged(ModificationEvent evt) throws RaplaException { + panel2.refresh(evt); + } + + public void dispose() { + try { + getUpdateModule().removeModificationListener(WizardSequence.this); + } catch (Exception ex) { + } + } + + class ReservationInfo + implements + WizardPanel + { + JPanel content = new JPanel(); + JLabel periodLabel = new JLabel(); + JLabel classificationLabel = new JLabel(); + ClassificationField classificationField; + JComboBox periodSelection = new JComboBox(); + + public ReservationInfo() throws RaplaException { + Period[] periods = getQuery().getPeriods(); + periodSelection.setModel(new DefaultComboBoxModel(periods)); + classificationField = new ClassificationField(getContext()); + periodLabel.setText(getString("period") + ":"); + double pre=TableLayout.PREFERRED; + double fill=TableLayout.FILL; + double[][] sizes = new double[][] { + {pre,5,fill} + ,{pre,fill} + }; + content.setLayout(new TableLayout(sizes)); + content.add(periodLabel,"0,0"); + content.add(periodSelection,"2,0"); + content.add(classificationField.getComponent(),"0,1,2,1"); + } + + public void setStart(Date start) throws RaplaException { + PeriodModel periodModel = getPeriodModel(); + Period period = null; + if (start != null) { + period = periodModel.getNearestPeriodForDate(start); + } + if ( period == null) { + period = periodModel.getNearestPeriodForDate( getQuery().today()); + } + if (period != null) { + periodSelection.setSelectedItem(period); + } + + if ( periodModel.getSize() == 0) { + throw new RaplaException(getString("error.no_period_found")); + } + + } + + public void setReservation(Reservation reservation) throws RaplaException { + classificationField.mapFrom(reservation); + } + + public ActionMap getActionMap() { + ActionMap map = createActionMap(); + map.get(PREV).setEnabled(false); + map.get(NEXT).putValue(Action.NAME, getString("reservation_wizard.appointment_menu")); + map.get(NEXT).putValue(Action.SMALL_ICON, getIcon("icon.arrow_right")); + map.get(FINISH).setEnabled(false); + return map; + } + + public String getHelp() { + return getString("reservation_wizard.panel1"); + } + + public String getDefaultAction() { + return NEXT; + } + + public boolean checkReservation() { + try { + classificationField.mapTo(reservation); + } catch (RaplaException ex) { + showException(ex,getComponent()); + return false; + } + String newName = getName( reservation ); + if (newName.length() ==0) { + showWarning(getString("error.no_reservation_name"), getComponent()); + return false; + } + // We must clear all appointments because the period has been changed); + if (period != null && !period.equals(periodSelection.getSelectedItem())) { + panel2.removeAllAppointments(); + } + + period = (Period) periodSelection.getSelectedItem(); + if (period == null) { + showWarning(getString("error.no_period_found"), getComponent()); + return false; + } + return true; + } + + public JComponent getComponent() { + return content; + } + } + + class ReservationAllocation + implements + WizardPanel + { + JPanel content = new JPanel(); + AppointmentSelection appointmentSelection; + AllocatableSelection allocatableSelection; + + public ReservationAllocation() throws RaplaException { + appointmentSelection = new AppointmentSelection(getContext()); + allocatableSelection = new AllocatableSelection(getContext()); + content.setLayout(new BorderLayout()); + content.add(appointmentSelection.getComponent(),BorderLayout.NORTH); + content.add(allocatableSelection.getComponent(),BorderLayout.CENTER); + Border emptyBorder = new EmptyLineBorder(); + appointmentSelection.getComponent().setBorder(BorderFactory.createTitledBorder(emptyBorder, getString("enter_appointments"))); + allocatableSelection.getComponent().setBorder(BorderFactory.createTitledBorder(emptyBorder, getString("select_persons_and_resources"))); + } + + public void setReservation(Reservation reservation) throws RaplaException { + allocatableSelection.setReservation(reservation); + appointmentSelection.setReservation(reservation); + appointmentSelection.addAppointmentListener(allocatableSelection); + } + + public void refresh(ModificationEvent evt) throws RaplaException { + allocatableSelection.refresh(evt); + } + + public void newAppointment(Date start,Date end) throws RaplaException { + appointmentSelection.newAppointment(start,end); + } + + public void removeAllAppointments() { + appointmentSelection.removeAllAppointments(); + } + + public String getHelp() { + return getString("reservation_wizard.panel2"); + } + + public String getDefaultAction() { + return FINISH; + } + + public ActionMap getActionMap() { + ActionMap map = createActionMap(); + map.get(NEXT).putValue(Action.NAME, getString("reservation_wizard.search_free_appointment")); + map.get(NEXT).putValue(Action.SMALL_ICON,getIcon("icon.calendar")); + return map; + } + + public Collection getAllocatables() { + return allocatableSelection.getMarkedAllocatables(); + } + + public JComponent getComponent() { + return content; + } + } + + class ReservationWeekview + implements + WizardPanel + ,ViewListener + { + JPanel content = new JPanel(); + SwingWeekView wv= new SwingWeekView(); + RaplaBuilder builder; + Date start= null; + Date end = null; + Action nextAction; + + public ReservationWeekview() throws RaplaException { + builder = new SwingRaplaBuilder(getContext()); + content.setLayout(new BorderLayout()); + content.add(wv,BorderLayout.CENTER); + CalendarOptions opt = getCalendarOptions(); + wv.setTimeZone( DateTools.getTimeZone()); + wv.setExcludeDays( opt.getExcludeDays() ); + wv.setWorktime( opt.getWorktimeStart(), opt.getWorktimeEnd()); + wv.addBuilder(builder); + //wv.setDateVisible(false); + wv.addCalendarViewListener(this); + } + + public void setAllocatables(Collection markedAllocatables) throws RaplaException { + Iterator it = markedAllocatables.iterator(); + StringBuffer buf = new StringBuffer(); + int i=0; + while (it.hasNext()) { + if (i>0) + buf.append(", "); + buf.append( getName( (Allocatable)it.next() ) ); + i++; + } + String title = getI18n().format("list.format",period.getName(),buf.toString()); + content.setBorder(BorderFactory.createTitledBorder(title)); + wv.setToDate(period.getStart()); + Collection otherReservations = + Arrays.asList(getQuery().getReservations((User) null + ,wv.getStartDate() + ,wv.getEndDate() + ,null) + ); + Collection reservations = new ArrayList(otherReservations); + reservations.add(reservation); + builder.selectAllocatables(markedAllocatables); + builder.selectReservations(reservations); + } + + public void build() { + wv.rebuild(); + wv.scrollToStart(); + } + + public JComponent getComponent() { + return content; + } + + public String getHelp() { + return getString("reservation_wizard.panel3"); + } + + + public ActionMap getActionMap() { + ActionMap map = createActionMap(); + nextAction = map.get(NEXT); + nextAction.putValue(Action.NAME, getString("reservation_wizard.add_appointment")); + nextAction.putValue(Action.SMALL_ICON, getIcon("icon.new")); + nextAction.setEnabled(false); + map.get(FINISH).setEnabled(false); + return map; + } + + public Date getStart() { + return start; + } + + public String getDefaultAction() { + return FINISH; + } + + public Date getEnd() { + return end; + } + + // Implementation of the weekview listener + + public void selectionChanged(Date start,Date end) { + this.start = start; + this.end = end; + nextAction.setEnabled( start != null && end != null ); + } + public void selectionPopup(Component component,Point p,Date start,Date end, int slotNr) { + } + public void blockPopup(Block block,Point p) { + } + public void blockEdit(Block block,Point p) { + } + public void moved(Block block,Point p,Date newStart) { + } + public void resized(Block block,Point p,Date newStart, Date newEnd) { + } + + } + +} + diff --git a/src/org/rapla/plugin/tableview/ReservationTableModel.java b/src/org/rapla/plugin/tableview/ReservationTableModel.java new file mode 100644 index 0000000..0659a9a --- /dev/null +++ b/src/org/rapla/plugin/tableview/ReservationTableModel.java @@ -0,0 +1,84 @@ +package org.rapla.plugin.tableview; + +import java.util.Date; +import java.util.Locale; + +import javax.swing.table.DefaultTableModel; + +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; + +public class ReservationTableModel extends DefaultTableModel +{ + private static final long serialVersionUID = 1L; + + Reservation[] reservations = new Reservation[] {}; + Locale locale; + I18nBundle i18n; + + //String[] columns; + public ReservationTableModel(Locale locale, I18nBundle i18n) { + this.locale = locale; + this.i18n = i18n; + String[]columns = new String[] {i18n.getString("name"),i18n.getString("start_date"),i18n.getString("last_changed")}; + this.setColumnIdentifiers( columns); + } + + public void setReservations(Reservation[] events) { + this.reservations = events; + super.fireTableDataChanged(); + } + + public Reservation getReservationAt(int row) { + return this.reservations[row]; + } + + public boolean isCellEditable(int row, int column) { + return false; + } + + public int getRowCount() { + if ( reservations != null) + return reservations.length; + else + return 0; + } + + static public Date findStartDate(Reservation event) { + Appointment[] apps = event.getAppointments(); + Date minimumDate = null; + for (int i=0;i< apps.length;i++) { + Appointment app = apps[i]; + if ( minimumDate == null || app.getStart().before( minimumDate)) { + minimumDate = app.getStart(); + } + } + return minimumDate; + } + + public Object getValueAt( int rowIndex, int columnIndex ) + { + Reservation event = reservations[rowIndex]; + switch ( columnIndex ) + { + case 0: return event.getName( locale); + case 1: return findStartDate( event ); + case 2: return event.getLastChangeTime(); + } + return event; + } + + public Class getColumnClass(int columnIndex) { + switch ( columnIndex ) + { + case 0: return String.class; + case 1: return Date.class; + case 2: return Date.class; + } + return super.getColumnClass( columnIndex ); + } + + + +} diff --git a/src/org/rapla/plugin/tableview/SwingTableView.java b/src/org/rapla/plugin/tableview/SwingTableView.java new file mode 100644 index 0000000..3db1f33 --- /dev/null +++ b/src/org/rapla/plugin/tableview/SwingTableView.java @@ -0,0 +1,246 @@ +package org.rapla.plugin.tableview; + +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Point; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import java.awt.print.PrinterException; +import java.lang.reflect.Method; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; + +import javax.swing.JComponent; +import javax.swing.JScrollPane; +import javax.swing.JTable; + +import org.rapla.components.calendar.DateChangeEvent; +import org.rapla.components.calendar.DateChangeListener; +import org.rapla.components.iolayer.ComponentPrinter; +import org.rapla.components.tablesorter.TableSorter; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.domain.ReservationHelper; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.MenuContext; +import org.rapla.gui.MenuFactory; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.internal.common.CalendarAction; +import org.rapla.gui.toolkit.DateCellRenderer; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.gui.toolkit.RaplaMenuItem; +import org.rapla.gui.toolkit.RaplaPopupMenu; +import org.rapla.plugin.abstractcalendar.IntervallChooserPanel; + +public class SwingTableView extends RaplaGUIComponent implements SwingCalendarView, Printable +{ + ReservationTableModel reservationTableModel; + + JTable table; + CalendarModel model; + IntervallChooserPanel dateChooser; + JComponent container; + TableSorter sorter; + + public SwingTableView( RaplaContext context, CalendarModel model, final boolean editable ) throws RaplaException + { + super( context ); + table = new JTable() { + private static final long serialVersionUID = 1L; + + public String getToolTipText(MouseEvent e) { + if (!editable) + return null; + int rowIndex = rowAtPoint( e.getPoint() ); + Reservation reservation = reservationTableModel.getReservationAt( sorter.modelIndex( rowIndex )); + return getInfoFactory().getToolTip( reservation ); + } + }; + if ( editable ) + { + container = new JScrollPane( table); + container.setPreferredSize( new Dimension(600,800)); + } + else + { + container = table; + } + this.model = model; + reservationTableModel = new ReservationTableModel( getLocale(),getI18n() ); + sorter = new TableSorter( reservationTableModel, table.getTableHeader()); + table.setModel( sorter ); + table.getColumnModel().getColumn(1 ).setCellRenderer( new DateCellRenderer( getRaplaLocale())); + table.getColumnModel().getColumn(1 ).setMaxWidth( 130 ); + table.getColumnModel().getColumn(1 ).setPreferredWidth( 130 ); + table.getColumnModel().getColumn(2 ).setCellRenderer( new DateCellRenderer( getRaplaLocale())); + table.getColumnModel().getColumn(2 ).setMaxWidth( 130 ); + table.getColumnModel().getColumn(2 ).setPreferredWidth( 130 ); + if ( editable ) { + PopupTableHandler popupHandler = new PopupTableHandler(); + container.addMouseListener( popupHandler); + table.addMouseListener( popupHandler ); + } + + dateChooser = new IntervallChooserPanel( context, model); + dateChooser.addDateChangeListener( new DateChangeListener() { + public void dateChanged( DateChangeEvent evt ) + { + try { + update( ); + } catch (RaplaException ex ){ + showException( ex, getComponent()); + } + } + }); + + reservationTableModel.setReservations( model.getReservations() ); + + if ( !editable) + { + Dimension size = table.getPreferredSize(); + container.setBounds( 0,0,(int)600, (int)size.getHeight()); + } + + } + + public void update() throws RaplaException + { + reservationTableModel.setReservations( model.getReservations() ); + dateChooser.update(); + } + + public JComponent getDateSelection() + { + return dateChooser.getComponent(); + } + + public void scrollToStart() + { + + } + + public JComponent getComponent() + { + return container; + } + + List getSelectedEvents() { + int[] rows = table.getSelectedRows(); + List selectedEvents = new ArrayList(); + for (int i=0;i 1 && selectedEvents.size() == 1 ) + { + Reservation reservation = (Reservation) selectedEvents.get( 0); + try { + getReservationController().edit( reservation ); + } catch (RaplaException ex) { + showException (ex,getComponent()); + } + } + } + } + + private Object getFitWidthMode() + { + try { + Class printMode = Class.forName("javax.swing.JTable$PrintMode"); + return printMode.getField("FIT_WIDTH").get( null); + } catch (Exception e) { + return null; + } + } + + Printable printable = null; + /** + * @see java.awt.print.Printable#print(java.awt.Graphics, java.awt.print.PageFormat, int) + */ + public int print(Graphics graphics, PageFormat format, int page) throws PrinterException { + if ( page == 0) { + // We use reflection to make the following call + // this maintains 1.4 compatibilty + // printable = table.getPrintable( JTable.PrintMode.FIT_WIDTH,f1, null ); + Object FIT_WIDTH = getFitWidthMode(); + if ( FIT_WIDTH == null) + { + printable = new ComponentPrinter( container, true); + } + else + { + MessageFormat f1 = new MessageFormat( model.getNonEmptyTitle()); + try + { + Method getPrintableMethod = JTable.class.getMethod("getPrintable", new Class[] {FIT_WIDTH.getClass(),MessageFormat.class, MessageFormat.class}); + printable = (Printable)getPrintableMethod.invoke( table, new Object[] {FIT_WIDTH,f1, null }); + } catch (Exception ex) + { + throw new PrinterException("Can't get printable of table " + ex.getMessage()); + } + } + } + return printable.print( graphics, format, page); + } + + + } diff --git a/src/org/rapla/plugin/tableview/TableViewFactory.java b/src/org/rapla/plugin/tableview/TableViewFactory.java new file mode 100644 index 0000000..1deeec4 --- /dev/null +++ b/src/org/rapla/plugin/tableview/TableViewFactory.java @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.tableview; + +import javax.swing.Icon; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.images.Images; +import org.rapla.servletpages.RaplaPageGenerator; + +public class TableViewFactory extends RaplaComponent implements ViewFactory +{ + public TableViewFactory( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public final static String TABLE_VIEW = "table"; + + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException + { + return new SwingTableView( context, model, editable); + } + + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException + { + return new TableViewPage( context, model); + } + + public String getViewId() + { + return TABLE_VIEW; + } + + public String getName() + { + return getString("table"); + } + + Icon icon; + public Icon getIcon() + { + if ( icon == null) { + icon = Images.getIcon("/org/rapla/plugin/tableview/images/table.png"); + } + return icon; + } + + public String getMenuSortKey() { + return "0"; + } + +} + diff --git a/src/org/rapla/plugin/tableview/TableViewPage.java b/src/org/rapla/plugin/tableview/TableViewPage.java new file mode 100644 index 0000000..8193ae4 --- /dev/null +++ b/src/org/rapla/plugin/tableview/TableViewPage.java @@ -0,0 +1,166 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.tableview; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.util.xml.XMLWriter; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.CalendarModel; +import org.rapla.servletpages.RaplaPageGenerator; + +public class TableViewPage extends RaplaComponent implements RaplaPageGenerator +{ + CalendarModel model; + public TableViewPage( RaplaContext context, CalendarModel calendarModel ) throws RaplaException + { + super( context ); + this.model = calendarModel; + } + public String getTitle() { + return model.getNonEmptyTitle(); + } + + + public void generatePage( ServletContext context,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + response.setContentType("text/html; charset=" + getRaplaLocale().getCharsetNonUtf() ); + java.io.PrintWriter out = response.getWriter(); + + RaplaLocale raplaLocale= getRaplaLocale(); + + + out.println(""); + out.println(""); + out.println(" " + getTitle() + ""); + out.println(" "); + out.println(" "); + // tell the html page where its favourite icon is stored + out.println(" "); + out.println(" "); + out.println(""); + out.println(""); + out.println("

    "); + out.println(getTitle()); + out.println("

    "); + out.println("
    "); + try { + final String calendarHTML = getCalendarHTML(); + out.println(calendarHTML); + } catch (RaplaException e) { + throw new ServletException( e); + } + out.println("
    "); + + // end weekview + out.println(""); + out.println(""); + + } + + class ReservationRow implements Comparable + { + Reservation r; + ReservationRow(Reservation r) + { + this.r = r; + } + + public String getStart() + { + RaplaLocale raplaLocale = getRaplaLocale(); + final Date startDate = getStartDate(); + String start= raplaLocale.formatDateLong(startDate); + return start; + } + + private Date getStartDate() { + return ReservationTableModel.findStartDate( r ); + } + + public String getLastModified() + { + RaplaLocale raplaLocale = getRaplaLocale(); + final Date lastChangeTime = r.getLastChangeTime(); + String lastChanged= raplaLocale.formatDateLong(lastChangeTime); + return lastChanged; + } + + public int compareTo(ReservationRow o) { + return getStartDate().compareTo(o.getStartDate()); + } + + public String getName() + { + return r.getName( getLocale()); + } + + } + public String getCalendarHTML() throws RaplaException { + final Date startDate = model.getStartDate(); + final Date endDate = model.getEndDate(); + final Reservation[] reservations = model.getReservations(startDate, endDate); + List rows = new ArrayList(); + for (Reservation r :reservations) + { + rows.add( new ReservationRow( r)); + } + Collections.sort( rows); + StringBuffer buf = new StringBuffer(); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + for (ReservationRow r :rows) + { + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + + buf.append(""); + } + buf.append("
    "); + buf.append(getString("name")); + buf.append(""); + buf.append(getString("start_date")); + buf.append(""); + buf.append(getString("last_changed")); + buf.append("
    "); + final String name = XMLWriter.encode(r.getName()); + buf.append( name ); + buf.append(""); + + buf.append( r.getStart() ); + buf.append(""); + buf.append( r.getLastModified()); + buf.append("
    "); + final String result = buf.toString(); + return result; + } + +} + diff --git a/src/org/rapla/plugin/tableview/TableViewPlugin.java b/src/org/rapla/plugin/tableview/TableViewPlugin.java new file mode 100644 index 0000000..73222f3 --- /dev/null +++ b/src/org/rapla/plugin/tableview/TableViewPlugin.java @@ -0,0 +1,54 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.tableview; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; + +public class TableViewPlugin implements PluginDescriptor +{ + static boolean ENABLE_BY_DEFAULT = true; + + public String toString() + { + return "Table View"; + } + + public void provideServices(Container container, Configuration config) + { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT) ) + return; + + container.addContainerProvidedComponent + ( + RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + ,TableViewFactory.class.getName() + ,TableViewFactory.TABLE_VIEW + ,null + ); + } + + public Object getPluginMetaInfos( String key ) + { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return new Boolean( ENABLE_BY_DEFAULT ); + } + return null; + } + + +} + diff --git a/src/org/rapla/plugin/tableview/images/table.png b/src/org/rapla/plugin/tableview/images/table.png new file mode 100644 index 0000000000000000000000000000000000000000..fe33429ec7bf1dc30fcde54816f477ddd1568912 GIT binary patch literal 997 zcmVpK=2`#%19C}3 zK~zY`#h1@ZD_0c9KQq1zFGI--2rYsVN{T<2NT%veP#0Oa6w$vyL~!S_|3MLS>#~b3 zf(pWWb>YUvC6EC%_jHlmaVC@0$);Wya&yl2-h1x%d(PZD@X~$) z(C&ls?QM)gltM(ceY!8w9wVLc zBK&^+H$NYI=f8aYt7kC7=|4M@fJoccQk{-~h@d(SrL;O0;B+lg(o`=lF7^y2u1vOVhl6n(=UdP703tF~t5tHj zTx^*%KCVpJY?e}~^dgh%x}Hv??xqtmZW|OIN#IN-Q`OOT%cK)h%Vb#=kB^TL+BY{h z|MP6>CsX8X8Xg}0LsQr-lLo&glYX;mUtF2A&6g>iPT%T8`oF6wlEA<}*=)9_OgbUs zR+Gl}xKw@f-A<5rW#$CXL1>&tX= 4 ) + { + view.setRowSize( 15); + } + view.setWorktime( calendarOptions.getWorktimeStart(), calendarOptions.getWorktimeEnd()); + view.setShowNonEmptyExcludedDays( true ); + if ( !view.isEditable() ) { + view.setSlotSize( model.getSize()); + } else { + view.setSlotSize( 135 ); + } + view.setToDate(model.getSelectedDate()); + } + + public void scrollToStart() + { + ((SwingWeekView)view).scrollToStart(); + } + + public int getIncrementSize() { + return Calendar.WEEK_OF_YEAR; + } + +} diff --git a/src/org/rapla/plugin/weekview/WeekViewFactory.java b/src/org/rapla/plugin/weekview/WeekViewFactory.java new file mode 100644 index 0000000..f500dcf --- /dev/null +++ b/src/org/rapla/plugin/weekview/WeekViewFactory.java @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.weekview; + +import javax.swing.Icon; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.images.Images; +import org.rapla.servletpages.RaplaPageGenerator; + +public class WeekViewFactory extends RaplaComponent implements ViewFactory +{ + public WeekViewFactory( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public final static String WEEK_VIEW = "week"; + + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException + { + return new SwingWeekCalendar( context, model, editable); + } + + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException + { + return new HTMLWeekViewPage( context, model); + } + + public String getViewId() + { + return WEEK_VIEW; + } + + public String getName() + { + return getString(WEEK_VIEW); + } + + Icon icon; + public Icon getIcon() + { + if ( icon == null) { + icon = Images.getIcon("/org/rapla/plugin/weekview/images/week.png"); + } + return icon; + } + + public String getMenuSortKey() { + return "B"; + } + +} + diff --git a/src/org/rapla/plugin/weekview/WeekViewPlugin.java b/src/org/rapla/plugin/weekview/WeekViewPlugin.java new file mode 100644 index 0000000..dd803a9 --- /dev/null +++ b/src/org/rapla/plugin/weekview/WeekViewPlugin.java @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.weekview; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; + +public class WeekViewPlugin implements PluginDescriptor +{ + static boolean ENABLE_BY_DEFAULT = true; + + public String toString() { + return "Week View"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT) ) + return; + + container.addContainerProvidedComponent + ( + RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + ,WeekViewFactory.class.getName() + ,WeekViewFactory.WEEK_VIEW + ,null + ); + + container.addContainerProvidedComponent + ( + RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + ,DayViewFactory.class.getName() + ,DayViewFactory.DAY_VIEW + ,null + ); + } + + public Object getPluginMetaInfos( String key ) + { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return new Boolean( ENABLE_BY_DEFAULT ); + } + return null; + } + + +} + diff --git a/src/org/rapla/plugin/weekview/images/day.png b/src/org/rapla/plugin/weekview/images/day.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6e29424f3f3ea6acdcd528df14603684e9f035 GIT binary patch literal 704 zcmV;x0zdtUP)Lo zK~#9!?Uz4j6LA#BKbJIt97saWrO?R)6AVWuSC>pq87g#fcW`vm-AOV;aB+$joOE+2 z9g;vnr)X%X7i{H1BjS(}K`xL#zvpnx(U9upVnUZb_;J6x-}`;v_r3f69(ORm-34To zL-S+st@#c_al^c)jy}K9x<48yH3m_DAR>qwGaURryH|)(h$!IPT!hiknZd7o{Em^l z#2x~Y9$nXQ90y(3iO1u-epTk^ z_}ITPH*Y_1L3SRI&1T8x^Q6=1DIZPK5RsW@ekLMRDiyR)nDJN<^4m}-6xiC@!nW zFpQbCOeV9CfKN_N=GRQ8)A1@XPqr)7%*MusH`jH2>16iz_dVP|uPK#EEnPE-M1oW* zMZI2MOu)<3%<1W=hZ{&UL7LejO)rpUE?vOqZ6dT~YR0mx#RS~%_m{4jWHL#)T)yfv zSAFKH&s7G0000X1^@s6yEvDU00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru)dLg_HWB@ZzwiJ60#8Xq zK~#9!%~w6E8bK62BX5n4MVd4|v510*C^q(ffW>R9^tV`~PZbN3GCv@S1d>R8fPWy- z*yvLc3kwqvlVUfpdT)w#bT|5Z7%=XIf#J-Vxp&T-9cF=j+yUTgG{66b0aS&p7#erq zi68SX022TPGlOXZW&*?N1GK{}4uOflOxBp{Gh1_bJD(Y#4UWaP`(JqV_A72|*vrrF zU%$AY{@gACFk1r~+IARVX3%zkNWly+K*ZKoiFb1u`*j|Q=i#T2elP6G+ya=_>vgQx zYil94)LASR2#3RG;ihRGB-JzxhG75zq?FKg9a2hs`uG9k$;6?|_jo*xQmN!vKnQ_W zt93SBE|-tul}hEH$acGp&4wJsun?9|y466JO=EE8~$;0ss<;1ZuUKL*i3- zKA%50l2iObq2S=Fymn;}jYf~UeLNmt6jyoe#ZbTBKT1|#%cXFY*KVa&F>2!)v zC +
  • synchronizing update and remove request from clients and passing + them to the storage-operator
  • + +
  • authentification of the clients
  • + +
  • notifing subscribed clients when the stored-data has + changed
  • + +*/ +public interface ServerService extends Startable, Container { + String ROLE = ServerService.class.getName(); + ClientFacade getFacade(); + +} diff --git a/src/org/rapla/server/ShutdownListener.java b/src/org/rapla/server/ShutdownListener.java new file mode 100644 index 0000000..298e3e8 --- /dev/null +++ b/src/org/rapla/server/ShutdownListener.java @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.server; + + +public interface ShutdownListener +{ + void shutdownInitiated(); + void shutdownComplete(boolean restart); +} diff --git a/src/org/rapla/server/ShutdownService.java b/src/org/rapla/server/ShutdownService.java new file mode 100644 index 0000000..ae57f47 --- /dev/null +++ b/src/org/rapla/server/ShutdownService.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.server; + +import org.rapla.framework.RaplaException; +/** You will need this remote-service to shutdown the server from + another process. This is for-example necessary if the server is running in + the background. + + To prevent a shutdown from unprivileged users on the server-host specify + a shutdown-password. + Hint: This is only useful if the configuration can't be + read by unprivileged users ;-). +*/ + +public interface ShutdownService +{ + RemoteMethod SHUTDOWN = new RemoteMethod("shutdown",new String[] {"password", "restart"}); + String ROLE = ShutdownService.class.getName(); + void shutdown(String shutdownPassword, boolean restart) throws RaplaException; + void addShutdownListener(ShutdownListener listener); + void removeShutdownListener(ShutdownListener listener); +} diff --git a/src/org/rapla/server/internal/RemoteSessionImpl.java b/src/org/rapla/server/internal/RemoteSessionImpl.java new file mode 100644 index 0000000..2f695af --- /dev/null +++ b/src/org/rapla/server/internal/RemoteSessionImpl.java @@ -0,0 +1,91 @@ +package org.rapla.server.internal; + +import java.util.HashMap; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.entities.User; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.RemoteSession; +import org.rapla.storage.StorageOperator; + +/** Implementation of RemoteStorage as a RemoteService + * @see org.rapla.server.RemoteStorage + * @see org.rapla.components.rpc.RemoteServiceDispatcher + * + */ +public class RemoteSessionImpl extends RaplaComponent implements RemoteSession { + /** + * + */ + String username; + HashMap remoteServiceMap = new HashMap(); + Logger logger; + StorageOperator operator; + long serverStartTime; + + public RemoteSessionImpl(RaplaContext context, String clientName, long serverStartTime) throws RaplaException { + super( context ); + this.serverStartTime = serverStartTime; + operator = (StorageOperator)context.lookup(StorageOperator.ROLE); + logger = super.getLogger().getChildLogger(clientName); + + } + + public Logger getLogger() { + return logger; + } + + public RaplaContext getContext() { + return super.getContext(); + } + + Object lookupService( String name) throws RaplaException { + Object serviceSession =remoteServiceMap.get( name); + if ( serviceSession != null) { + return serviceSession; + } + RaplaRemoteServiceFactory service = (RaplaRemoteServiceFactory)getContext().lookup( RaplaRemoteServiceFactory.ROLE + "/" + name); + if ( service == null) + throw new RaplaException( "Can't find Remoteservice for Role " + name); + serviceSession = service.createRemoteService( this); + remoteServiceMap.put( name, serviceSession); + return serviceSession; + } + + + String getUsername() { + return username; + } + + public User getUser() throws RaplaException { + String username = getUsername(); + if (username == null) + throw new IllegalStateException("No username found in session."); + User user = this.operator.getUser(username); + if (user == null) + throw new RaplaException("No user found for username: " + username); + return user; + } + + public boolean isAuthentified() { + return getUsername() != null; + } + + public void setUsername( String username ) + { + this.username = username; + } + + public long getServerStartTime() + { + return serverStartTime; + } + + + + + +} \ No newline at end of file diff --git a/src/org/rapla/server/internal/RemoteStorageImpl.java b/src/org/rapla/server/internal/RemoteStorageImpl.java new file mode 100644 index 0000000..fa9d4c6 --- /dev/null +++ b/src/org/rapla/server/internal/RemoteStorageImpl.java @@ -0,0 +1,447 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.server.internal; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.StringReader; +import java.io.StringWriter; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.DependencyException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.Mementable; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaDefaultContext; +import org.rapla.framework.RaplaException; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; +import org.rapla.server.RemoteStorage; +import org.rapla.server.ShutdownService; +import org.rapla.storage.AuthenticationStore; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.IOContext; +import org.rapla.storage.IdTable; +import org.rapla.storage.LocalCache; +import org.rapla.storage.RaplaSecurityException; +import org.rapla.storage.UpdateEvent; +import org.rapla.storage.impl.EntityStore; +import org.rapla.storage.xml.RaplaInput; +import org.rapla.storage.xml.RaplaMainReader; +import org.rapla.storage.xml.RaplaMainWriter; + +/** Provides an adapter for each client-session to their shared storage operator + * Handles security and synchronizing aspects. + * @author ckohlhaas + * + */ +public class RemoteStorageImpl extends AbstractLogEnabled implements RemoteStorage, RemoteService{ + CachableStorageOperator operator; + RemoteSession session; + + protected SecurityManager security; + boolean authenticationStore; + ServerServiceImpl server; + + RemoteStorageImpl(ServerServiceImpl server, RemoteSession session) throws RaplaException { + this.server = server; + this.session = session; + operator = (CachableStorageOperator)getContext().lookup(CachableStorageOperator.ROLE); + security = (SecurityManager)getContext().lookup( SecurityManager.class.getName()); + authenticationStore = getContext().has(AuthenticationStore.ROLE); + + enableLogging( session.getLogger()); + } + + private void checkAuthentified() throws RaplaSecurityException { + if (!session.isAuthentified()) + throw new RaplaSecurityException("User was not authentified "); + } + + private User getSessionUser() throws RaplaException { + return session.getUser(); + } + + public List getResources() throws RaplaException + { + checkAuthentified(); + User user = null; + this.getLogger().debug ("A RemoteServer wants to get all resource-objects."); + synchronized (operator.getLock()) + { + return makeTransactionSafe(operator.getVisibleEntities(user)); + } + } + + public void remoteMethodCall( String methodName, Map args, OutputStream out ) throws RaplaException, IOException, ParseException + { + if ( !session.isAuthentified()) + { + throw new SessionExpiredException("Session on the server not valid anymore. Maybe the server has been restarted"); + } + + synchronized (operator.getLock()) + { + + BufferedWriter outWriter = new BufferedWriter( new OutputStreamWriter( out,"utf-8")); + + RaplaDefaultContext ioContext = new IOContext().createOutputContext( getContext(), operator.getCache(), true, true); + RaplaMainWriter writer = new RaplaMainWriter(ioContext); + writer.setWriter( outWriter); + if ( RemoteStorage.GET_RESOURCES.is( methodName )) + { + List resources = getResources(); + writer.printList( resources, Collections.EMPTY_LIST, getRepositoryVersion() ); + } + else if ( RemoteStorage.GET_RESERVATIONS.is( methodName)) + { + String startS = RemoteStorage.GET_RESERVATIONS.value(args,0); + String endS = RemoteStorage.GET_RESERVATIONS.value(args,1); + SerializableDateTimeFormat format = new SerializableDateTimeFormat(); + Date start = null; + if ( startS != null) + { + start = format.parseDate( startS, false); + } + Date end = null; + if ( endS != null) + { + end = format.parseDate( endS, true); + } + List resources = getReservations(start, end); + writer.printList( resources, Collections.EMPTY_LIST, getRepositoryVersion() ); + } + else if ( RemoteStorage.DISPATCH.is ( methodName)) + { + String xml = RemoteStorage.DISPATCH.value(args,0); + + LocalCache cache = operator.getCache(); + UpdateEvent event = createUpdateEvent( getContext(),xml, cache ); + + dispatch( event); + } + else if ( RemoteStorage.CREATE_IDENTIFIER.is( methodName)) + { + String typeName = RemoteStorage.CREATE_IDENTIFIER.value(args,0); + RaplaType raplaType = RaplaType.find( typeName ); + SimpleIdentifier id =(SimpleIdentifier) operator.createIdentifier( raplaType); + String idString = raplaType.getLocalName() + "_" + id.getKey(); + outWriter.write( idString ); + } + else if (RemoteStorage.GET_SERVER_TIME.is( methodName)) + { + String timeString = String.valueOf( getServerTime()); + outWriter.write( timeString ); + } + else if (RemoteStorage.GET_ENTITY_RECURSIVE.is(methodName)) + { + String idS = RemoteStorage.GET_ENTITY_RECURSIVE.value(args,0); + int index_ = idS.lastIndexOf( '_'); + String typeName = idS.substring(0, index_ ); + String keyString = idS.substring( index_ + 1); + RaplaType raplaType = RaplaType.find( typeName ); + int key = Integer.parseInt( keyString); + // RaplaType raplaType = (RaplaType); + + SimpleIdentifier id = new SimpleIdentifier( raplaType, key); + List resources = getEntityRecursive( id); + writer.printList( resources, Collections.EMPTY_LIST, getRepositoryVersion() ); + } + else if ( RemoteStorage.CAN_CHANGE_PASSWORD.is( methodName)) + { + String resultString = String.valueOf( canChangePassword()); + outWriter.write( resultString ); + } + else if ( RemoteStorage.CHANGE_PASSWORD.is( methodName)) + { + String username = RemoteStorage.CHANGE_PASSWORD.value( args, 0); + String oldPassword = RemoteStorage.CHANGE_PASSWORD.value( args, 1); + String newPassword = RemoteStorage.CHANGE_PASSWORD.value( args, 2); + changePassword( username, oldPassword.toCharArray(), newPassword.toCharArray()); + } + else if ( RemoteStorage.REFRESH.equals( methodName)) + { + String time = RemoteStorage.REFRESH.value( args, 0); + String xml = server.createUpdateXML(Long.valueOf( time).longValue()); + outWriter.write( xml); + } + else if ( RemoteStorage.RESTART_SERVER.equals( methodName)) + { + restartServer(); + } + else + { + throw new UnsupportedOperationException("Operation " + methodName+ " not available on server."); + } + outWriter.flush(); + } + } + + + private long getRepositoryVersion() + { + return server.repositoryVersion; + } + + public I18nBundle getI18n() throws RaplaException { + return (I18nBundle)getContext().lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + } + + + + public List getEntityRecursive(Object id) throws RaplaException { + checkAuthentified(); + //synchronized (operator.getLock()) + { + RefEntity entity = operator.resolveId(id); + ArrayList completeList = new ArrayList(); + completeList.add( entity ); + Iterator it = entity.getSubEntities(); + while (it.hasNext()) { + completeList.add( it.next() ); + } + List list = makeTransactionSafe( completeList ); + getLogger().debug("Get entity " + entity); + return list; + } + } + + public List getReservations(Date start,Date end) throws RaplaException + { + checkAuthentified(); + User user = null; + this.getLogger().debug ("A RemoteServer wants to reservations from ." + start + " to " + end); + synchronized (operator.getLock()) + { + ArrayList completeList = new ArrayList(); + List reservations = operator.getReservations(user, start, end ); + completeList.addAll(reservations); + Iterator it = reservations.iterator(); + while (it.hasNext()) { + Iterator it2 = ((RefEntity)it.next()).getSubEntities(); + while (it2.hasNext()) { + completeList.add( it2.next() ); + } + } + List list = makeTransactionSafe( completeList ); + getLogger().debug("Get reservations " + start + " " + end + ": " + + reservations.size() + "," + list.size()); + return list; + } + } + + public RaplaContext getContext() throws RaplaException { + return session.getContext(); + } + + public void restartServer() throws RaplaException { + checkAuthentified(); + if (!getSessionUser().isAdmin()) + throw new RaplaSecurityException("Only admins can restart the server"); + + ((ShutdownService) getContext().lookup(ShutdownService.ROLE)).shutdown(null, true); + } + + + public long getServerTime() throws RaplaException { + return System.currentTimeMillis(); + } + + public void dispatch(UpdateEvent evt) + throws RaplaException { + checkAuthentified(); + try { + User user; + if ( evt.getUserId() != null) + { + user = (User) operator.resolveId(evt.getUserId()); + } + else + { + user = session.getUser(); + } + synchronized (operator.getLock()) + { + EntityResolver resolver = operator.createEntityResolver(evt.getStoreObjects() + ,operator.getCache()); + Iterator it = evt.getStoreObjects().iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + if (getLogger().isDebugEnabled()) + getLogger().debug("Contextualizing " + entity); + entity.resolveEntities( resolver); + } + + it = evt.getRemoveObjects().iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + entity.resolveEntities( resolver); + } + + it = evt.getStoreObjects().iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + security.checkWritePermissions(user,entity); + } + + it = evt.getRemoveObjects().iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + security.checkWritePermissions(user,entity); + } + + if (this.getLogger().isDebugEnabled()) + this.getLogger().debug("Dispatching changes to " + operator.getClass()); + + operator.dispatch(evt); + if (this.getLogger().isDebugEnabled()) + this.getLogger().debug("Changes dispatched returning result."); + } + } catch (DependencyException ex) { + throw ex; + } catch (RaplaException ex) { + this.getLogger().error(ex.getMessage(),ex); + throw ex; + } catch (Exception ex) { + this.getLogger().error(ex.getMessage(),ex); + throw new RaplaException(ex); + } catch (Error ex) { + this.getLogger().error(ex.getMessage(),ex); + throw ex; + } + } + + public Object createIdentifier(RaplaType raplaType) throws RaplaException { + checkAuthentified(); + synchronized (operator.getLock()) + { + //User user = + getSessionUser(); //check if authenified + return operator.createIdentifier(raplaType); + } + } + + public void authenticate(String username, + String password) throws RaplaException + { + synchronized (operator.getLock()) + { + getSessionUser(); //check if authenified + server.authenticate( username, password ); + } + } + + public boolean canChangePassword() throws RaplaException { + checkAuthentified(); + synchronized (operator.getLock()) + { + return !authenticationStore && operator.canChangePassword(); + } + } + + public void changePassword(String username + ,char[] oldPassword + ,char[] newPassword + ) throws RaplaException + { + checkAuthentified(); + if ( authenticationStore ) { + throw new RaplaException("Rapla can't change your password. " + + "Authentication is done via plugin." ); + } + synchronized (operator.getLock()) { + User sessionUser = getSessionUser(); + if (!sessionUser.isAdmin()) { + operator.authenticate(username,new String(oldPassword)); + } + User user = operator.getUser(username); + operator.changePassword(user,oldPassword,newPassword); + } + } + + + static public UpdateEvent createUpdateEvent( RaplaContext context,String xml, LocalCache cache ) throws RaplaException + { + EntityStore store = new EntityStore( cache, cache.getSuperCategory()); + RaplaContext inputContext = new IOContext().createInputContext(context,store,new IdTable()); + Logger logger = (Logger)context.lookup( Logger.class.getName()); + RaplaInput xmlAdapter = new RaplaInput( logger.getChildLogger("reading")); + RaplaMainReader contentHandler = new RaplaMainReader( inputContext); + try + { + xmlAdapter.read(new StringReader( xml), contentHandler, false); + } + catch (IOException e) + { + throw new RaplaException(e); + } + UpdateEvent event = new UpdateEvent(); + event.setRepositoryVersion(store.getRepositoryVersion()); + for (Iterator it = store.getList().iterator();it.hasNext();) + { + RefEntity object = (RefEntity)it.next(); + event.putStore( object); + } + for (Iterator it = store.getRemoveIds().iterator();it.hasNext();) + { + Object id = (Object)it.next(); + RefEntity entity = (RefEntity)cache.get( id ); + if ( entity != null) + { + event.putRemove( entity); + } + } + return event; + } + + static public String createUpdateEvent( RaplaContext context, LocalCache cache,UpdateEvent evt) throws RaplaException, IOException + { + RaplaDefaultContext ioContext = new IOContext().createOutputContext( context, cache, true, true); + StringWriter stringWriter = new StringWriter( ); + RaplaMainWriter writer = new RaplaMainWriter(ioContext); + BufferedWriter buf = new BufferedWriter(stringWriter); + writer.setWriter( buf); + writer.printList( evt.getStoreObjects(),evt.getRemoveObjects(), evt.getRepositoryVersion()); + buf.flush(); + String xml = stringWriter.toString(); + return xml; + } + + private static List makeTransactionSafe(List objectList) { + List saveList = new ArrayList(); + Iterator it = objectList.iterator(); + while (it.hasNext()) { + saveList.add(((Mementable)it.next()).clone()); + } + return saveList; + } + +} + diff --git a/src/org/rapla/server/internal/SecurityManager.java b/src/org/rapla/server/internal/SecurityManager.java new file mode 100644 index 0000000..8e97936 --- /dev/null +++ b/src/org/rapla/server/internal/SecurityManager.java @@ -0,0 +1,308 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Praktikum Gruppe2?, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.server.internal; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.Category; +import org.rapla.entities.Ownable; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentFormater; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.storage.RefEntity; +import org.rapla.facade.Conflict; +import org.rapla.facade.RaplaComponent; +import org.rapla.facade.internal.ConflictFinder; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.RaplaSecurityException; + +/** checks if the client can store or delete an entity */ +public class SecurityManager extends AbstractLogEnabled +{ + protected ConflictFinder conflictFinder; + I18nBundle i18n; + AppointmentFormater appointmentFormater; + CachableStorageOperator operator; + + public SecurityManager(RaplaContext serviceManager) throws RaplaContextException { + enableLogging( (Logger) serviceManager.lookup( Logger.class.getName())); + operator = (CachableStorageOperator)serviceManager.lookup( CachableStorageOperator.ROLE); + conflictFinder = new ConflictFinder( operator ); + i18n = (I18nBundle) serviceManager.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + appointmentFormater = (AppointmentFormater) serviceManager.lookup(AppointmentFormater.ROLE); + } + + void checkWritePermissions(User user,RefEntity entity) throws RaplaSecurityException { + if (user.isAdmin()) + return; + + Object id = entity.getId(); + if (id == null) + throw new RaplaSecurityException("No id set"); + + boolean permitted = false; + RefEntity original = operator.getCache().get(entity.getId()); + // flag indicates if a user only exchanges allocatables (needs to have admin-access on the allocatable) + boolean canExchange = false; + + if (entity instanceof Ownable) { + User entityOwner = ((Ownable) entity).getOwner(); + if (original == null) { + permitted = entityOwner != null && user.isIdentical(entityOwner); + if (getLogger().isDebugEnabled()) + getLogger().debug("Permissions for new object " + entity + + "\nUser check: " + user + " = " + entityOwner); + } else { + User originalOwner = ((Ownable) original).getOwner(); + if (getLogger().isDebugEnabled()) + getLogger().debug("Permissions for existing object " + entity + + "\nUser check: " + user + " = " + entityOwner + " = " + originalOwner); + permitted = (originalOwner != null) && originalOwner.isIdentical(user) && originalOwner.isIdentical(entityOwner); + if ( !permitted ) { + canExchange = canExchange( user, entity, original ); + permitted = canExchange; + } + } + } + if ( !permitted && entity instanceof Allocatable ){ + if ( original == null ) { + permitted = isRegisterer(user); + } else { + permitted = ((Allocatable)original).canModify( user ); + } + } + if ( !permitted && original != null) + { + permitted = RaplaComponent.checkClassifiablePermissions(original, user); + + } + if (!permitted && entity instanceof Appointment) + { + final RefEntity reservation = (RefEntity)((Appointment)entity).getReservation(); + RefEntity originalReservation = operator.getCache().get(reservation.getId()); + permitted = RaplaComponent.checkClassifiablePermissions(originalReservation, user); + } + + if (!permitted) + throw new RaplaSecurityException("User '" + user + "' is not allowed to modify object. '" + entity + "'") ; + + // Check if the user can change the reservation + if ( Reservation.TYPE.equals( entity.getRaplaType()) ) + { + Reservation reservation = (Reservation) entity ; + Reservation originalReservation = (Reservation)original; + Allocatable[] all = reservation.getAllocatables(); + if ( originalReservation != null && canExchange ) { + List newAllocatabes = new ArrayList( Arrays.asList(reservation.getAllocatables() ) ); + newAllocatabes.removeAll( Arrays.asList( originalReservation.getAllocatables())); + all = (Allocatable[])newAllocatabes.toArray( Allocatable.ALLOCATABLE_ARRAY); + } + checkPermissions( user, reservation, originalReservation , all); + } + } + + protected boolean isRegisterer(User user) throws RaplaSecurityException { + try { + Category registererGroup = getUserGroupsCategory().getCategory(Permission.GROUP_REGISTERER_KEY); + return user.belongsTo(registererGroup); + } catch (RaplaException ex) { + throw new RaplaSecurityException(ex ); + } + } + + public Category getUserGroupsCategory() throws RaplaException { + Category userGroups = operator.getSuperCategory().getCategory(Permission.GROUP_CATEGORY_KEY); + if ( userGroups == null) { + throw new RaplaException("No category '" + Permission.GROUP_CATEGORY_KEY + "' available"); + } + return userGroups; + } + + + /** checks if the user just exchanges one allocatable or removes one. The user needs admin-access on the + * removed allocatable and the newly inserted allocatable */ + private boolean canExchange(User user, RefEntity entity, RefEntity original) { + if ( Appointment.TYPE.equals( entity.getRaplaType() )) { + return ((Appointment) entity).matches( (Appointment) original ); + } if ( Reservation.TYPE.equals( entity.getRaplaType() )) { + Reservation newReservation = (Reservation) entity; + Reservation oldReservation = (Reservation) original; + // We only need to check the length because we compare the appointments above. + if ( newReservation.getAppointments().length != oldReservation.getAppointments().length ) + { + return false; + } + + List oldAllocatables = Arrays.asList(oldReservation.getAllocatables()); + List newAllocatables = Arrays.asList(newReservation.getAllocatables()); + List inserted = new ArrayList(newAllocatables); + List removed = new ArrayList(oldAllocatables); + List overlap = new ArrayList(oldAllocatables); + inserted.removeAll( oldAllocatables ); + removed.removeAll( newAllocatables ); + overlap.retainAll( inserted ); + if ( inserted.size() == 0 && removed.size() == 0) + { + return false; + } + // he must have admin rights on all inserted resources + Iterator it = inserted.iterator(); + while (it.hasNext()) { + if (!canAllocateForOthers((Allocatable)it.next(),user)) + { + return false; + } + } + + // and he must have admin rights on all the removed resources + it = removed.iterator(); + while (it.hasNext()) { + if (!canAllocateForOthers((Allocatable)it.next(),user)) + { + return false; + } + } + + // He can't change appointments, only exchange allocatables he has admin-priviliges for + it = overlap.iterator(); + while (it.hasNext()) { + Allocatable all = (Allocatable)it.next(); + Appointment[] r1 = newReservation.getRestriction( all ); + Appointment[] r2 = oldReservation.getRestriction( all ); + boolean changed = false; + if ( r1.length != r2.length ) { + changed = true; + } else { + for ( int i=0; i< r1.length; i++ ) { + if ( !r1[i].matches(r2[i]) ) { + changed = true; + } + } + } + if ( changed && !canAllocateForOthers( all, user )) { + return false; + } + } + return true; + } + return false; + } + + /** for Thierry, we can make this configurable in the next version */ + private boolean canAllocateForOthers(Allocatable allocatable, User user) { + // only admins, current behaviour + return allocatable.canModify( user); + // everyone who can allocate the resource anytime + //return allocatable.canAllocate( user, null, null, operator.today()); + // everyone + //return true; + } + + private void checkConflictsAllowed(User user, Allocatable allocatable, Conflict[] conflictsBefore, Conflict[] conflictsAfter) throws RaplaSecurityException { + int nConflictsBefore = 0; + int nConflictsAfter = 0; + if ( allocatable.canCreateConflicts( user ) ) { + return; + } + if ( conflictsBefore != null ) { + for ( int i = 0; i < conflictsBefore.length; i++ ) { + if ( conflictsBefore[i].getAllocatable().equals ( allocatable ) ) { + nConflictsBefore ++; + } + } + } + + for ( int i = 0; i < conflictsAfter.length; i++ ) { + if ( conflictsAfter[i].getAllocatable().equals ( allocatable ) ) { + nConflictsAfter ++; + } + } + if ( nConflictsAfter > nConflictsBefore ) { + String all = allocatable.getName( i18n.getLocale() ); + throw new RaplaSecurityException( i18n.format("warning.no_conflict_permission", all ) ); + } + } + + private void checkPermissions( User user, Reservation r, Reservation original, Allocatable[] allocatables ) throws RaplaSecurityException { + Conflict[] conflictsBefore = null; + Conflict[] conflictsAfter = null; + try { + conflictsAfter = conflictFinder.getConflicts( null, r ); + if ( original != null ) { + conflictsBefore = conflictFinder.getConflicts( null, original ); + } + } catch ( RaplaException ex ) { + throw new RaplaSecurityException(" Can't check permissions due to:" + ex.getMessage(), ex ); + } + + Appointment[] appointments = r.getAppointments(); + // ceck if the user has the permisson to add allocations in the given time + for (int i = 0; i < allocatables.length; i++ ) { + Allocatable allocatable = allocatables[i]; + checkConflictsAllowed( user, allocatable, conflictsBefore, conflictsAfter ); + for (int j = 0; j < appointments.length; j++ ) { + Appointment appointment = appointments[j]; + if ( r.hasAllocated( allocatable, appointment ) && + !conflictFinder.hasPermissionToAllocate( user, appointment, allocatable, original ) ) { + String all = allocatable.getName( i18n.getLocale() ); + String app = appointmentFormater.getSummary( appointment ); + String error = i18n.format("warning.no_reserve_permission" + ,all + ,app); + throw new RaplaSecurityException( error ); + } + } + } + if (original == null ) + return; + + Date today = operator.today(); + + // 1. calculate the deleted assignments from allocatable to appointments + // 2. check if they were allowed to change in the specified time + appointments = original.getAppointments(); + allocatables = original.getAllocatables(); + for (int i = 0; i < allocatables.length; i++ ) { + Allocatable allocatable = allocatables[i]; + for (int j = 0; j < appointments.length; j++ ) { + Appointment appointment = appointments[j]; + if ( original.hasAllocated( allocatable, appointment ) + && !r.hasAllocated( allocatable, appointment ) ) { + Date start = appointment.getStart(); + Date end = appointment.getMaxEnd(); + if ( !allocatable.canAllocate( user, start, end, today ) ) { + String all = allocatable.getName( i18n.getLocale() ); + String app = appointmentFormater.getSummary( appointment ); + String error = i18n.format("warning.no_reserve_permission" + ,all + ,app); + throw new RaplaSecurityException( error ); + } + } + } + } + } +} diff --git a/src/org/rapla/server/internal/ServerServiceImpl.java b/src/org/rapla/server/internal/ServerServiceImpl.java new file mode 100644 index 0000000..890949c --- /dev/null +++ b/src/org/rapla/server/internal/ServerServiceImpl.java @@ -0,0 +1,543 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Praktikum Gruppe2?, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.server.internal; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Timer; +import java.util.TimerTask; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.util.DateTools; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.Entity; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.internal.UserImpl; +import org.rapla.entities.storage.RefEntity; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.UpdateModule; +import org.rapla.facade.internal.FacadeImpl; +import org.rapla.framework.PluginDescriptor; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.framework.internal.ContainerImpl; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; +import org.rapla.server.RemoteStorage; +import org.rapla.server.ServerService; +import org.rapla.servletpages.DefaultHTMLMenuEntry; +import org.rapla.servletpages.DefaultHTMLMenuExtensionPoint; +import org.rapla.servletpages.RaplaAppletPageGenerator; +import org.rapla.servletpages.RaplaIndexPageGenerator; +import org.rapla.servletpages.RaplaJNLPPageGenerator; +import org.rapla.servletpages.RaplaResourcePageGenerator; +import org.rapla.servletpages.RaplaStatusPageGenerator; +import org.rapla.storage.AuthenticationStore; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.RaplaSecurityException; +import org.rapla.storage.StorageOperator; +import org.rapla.storage.StorageUpdateListener; +import org.rapla.storage.UpdateEvent; +import org.rapla.storage.UpdateResult; +import org.rapla.storage.dbrm.RaplaStorePage; + +/** Default implementation of StorageService. + *

    Sample configuration 1: +

    + <storage id="storage" >
    + <store>file</store>
    + </storage>
    + 
    + * The store value contains the id of a storage-component. + * Storage-Components are all components that implement the + * CachableStorageOperator interface. + *

    + *

    Sample configuration 2: +

    + <storage id="storage">
    + <store>remote</store>
    + <login>
    + <username>homer</username>
    + <password>duffs</password>
    + </login>
    + </storage>
    + 
    + * This is configuration where the servers are cascaded. The remote-server + * normally needs an authentication. The provided account should have + * admin privileges. + *

    + + @see ServerService + */ + +public class ServerServiceImpl extends ContainerImpl implements StorageUpdateListener, ServerService +{ + protected CachableStorageOperator operator; + protected I18nBundle i18n; + protected AuthenticationStore authenticationStore; + private Configuration operatorConfig; + List pluginList; + + ClientFacade facade; + + private Map updateMap = new HashMap(); + private Map removeMap = new HashMap(); + + long repositoryVersion = 0; + long cleanupPointVersion = 0; + + public ServerServiceImpl( RaplaContext parentContext, Configuration config ) throws RaplaException + { + super( parentContext, config ); + pluginList = (List) parentContext.lookup( PluginDescriptor.PLUGIN_LIST ); + i18n = (I18nBundle) parentContext.lookup( I18nBundle.ROLE + "/org.rapla.RaplaResources" ); + Configuration login = config.getChild( "login" ); + String username = login.getChild( "username" ).getValue( null ); + String password = login.getChild( "password" ).getValue( null ); + operatorConfig = config.getChild( "store" ); + + try + { + operator = (CachableStorageOperator) getContext().lookup( + CachableStorageOperator.ROLE + + "/" + + operatorConfig.getValue( "*" ) ); + addContainerProvidedComponentInstance( CachableStorageOperator.ROLE, operator ); + addContainerProvidedComponentInstance( StorageOperator.ROLE, operator ); + facade = new FacadeImpl( getContext(), new DefaultConfiguration( "facade" ), getLogger() ); + addContainerProvidedComponentInstance( ClientFacade.ROLE, facade ); + addContainerProvidedComponent( SecurityManager.class.getName() ); + addContainerProvidedComponentInstance( RaplaRemoteServiceFactory.ROLE, RemoteStorage.ROLE, + new RaplaRemoteServiceFactory() + { + public RemoteService createRemoteService( RemoteSession session ) + throws RaplaException + { + return new RemoteStorageImpl( ServerServiceImpl.this, + session ); + } + + } ); + + // adds 5 basic pages to the webapplication + addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaStatusPageGenerator.class.getName(), "server", null); + addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaIndexPageGenerator.class.getName(), "index", null); + addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaJNLPPageGenerator.class.getName(), "raplaclient", null); + addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaAppletPageGenerator.class.getName(), "raplaapplet", null); + addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaResourcePageGenerator.class.getName(), "resource", null); + addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaStorePage.class.getName(), "store", null); + + // Index page menu + DefaultHTMLMenuExtensionPoint indexMenu = new DefaultHTMLMenuExtensionPoint(); + addContainerProvidedComponentInstance( RaplaExtensionPoints.HTML_MAIN_MENU_EXTENSION_POINT, indexMenu); + I18nBundle i18n = (I18nBundle)getContext().lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + + indexMenu.insert( new DefaultHTMLMenuEntry(i18n.getString( "start_rapla_with_webstart" ),"rapla?page=raplaclient") ); + indexMenu.insert( new DefaultHTMLMenuEntry(i18n.getString( "start_rapla_with_applet" ),"rapla?page=raplaapplet") ); + indexMenu.insert( new DefaultHTMLMenuEntry(i18n.getString( "server_status" ),"rapla?page=server") ); + } + catch ( RaplaContextException ex ) + { + throw new RaplaContextException( CachableStorageOperator.ROLE, "Store at " + + operatorConfig.getLocation() + + " is not found (or could not be initialized) ", ex ); + } + + operator.addStorageUpdateListener( this ); + if ( username != null && password != null ) + operator.connect( username, password.toCharArray() ); + else + operator.connect(); + + initializePlugins( pluginList, operator.getPreferences( null ) ); + + if ( getContext().has( AuthenticationStore.ROLE ) ) + { + try + { + authenticationStore = (AuthenticationStore) getContext().lookup( AuthenticationStore.ROLE ); + getLogger().info( " Using AuthenticationStore " + authenticationStore.getName() ); + } + catch ( RaplaException ex) + { + getLogger().error( " Can't initialize configured authentication store. Using default authentication." , ex); + } + } + initEventCleanup(); + } + + /** + * @see org.rapla.server.ServerService#getFacade() + */ + public ClientFacade getFacade() + { + return facade; + } + + protected void initializePlugins( List pluginList, Preferences preferences ) throws RaplaException + { + + RaplaConfiguration raplaConfig = (RaplaConfiguration) preferences.getEntry( "org.rapla.plugin" ); + // Add plugin configs + for ( Iterator it = pluginList.iterator(); it.hasNext(); ) + { + PluginDescriptor pluginDescriptor = (PluginDescriptor) it.next(); + String pluginClassname = pluginDescriptor.getClass().getName(); + Configuration pluginConfig = null; + if ( raplaConfig != null ) + { + pluginConfig = raplaConfig.find( "class", pluginClassname ); + } + if ( pluginConfig == null ) + { + pluginConfig = new DefaultConfiguration( "plugin" ); + } + pluginDescriptor.provideServices( this, pluginConfig ); + } + + Collection clientPlugins = getAllServicesFor( RaplaExtensionPoints.SERVER_EXTENSION ); + // start plugins + for ( Iterator it = clientPlugins.iterator(); it.hasNext(); ) + { + String hint = (String) it.next(); + try + { + getContext().lookup( RaplaExtensionPoints.SERVER_EXTENSION + "/" + hint ); + getLogger().info( "Initialize " + hint ); + } + catch ( RaplaContextException ex ) + { + getLogger().error( "Can't initialize " + hint, ex ); + } + } + } + + public void start() throws Exception + { + getLogger().info( "Storage service started" ); + } + + public void stop() throws Exception + { + operator.removeStorageUpdateListener( this ); + try + { + operator.disconnect(); + } + finally + { + } + getLogger().info( "Storage service stopped" ); + } + + public void dispose() + { + super.dispose(); + } + + public String login( Map args ) throws RaplaException + { + String username = RemoteStorage.LOGIN.value( args, 0 ); + String password = RemoteStorage.LOGIN.value( args, 1 ); + login( username, password ); + return username; + } + + public byte[] dispatch( RemoteSession session, String methodName, Map args ) throws Exception + { + if ( RemoteStorage.CHECK_SERVER_VERSION.is( methodName ) ) + { + String clientVersion = RemoteStorage.CHECK_SERVER_VERSION.value( args, 0 ); + checkServerVersion( clientVersion ); + } + else if ( RemoteStorage.LOGIN.is( methodName ) ) + { + login( args ); + } + else + { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int indexRole = methodName.indexOf( "/" ); + String role = RemoteStorage.ROLE; + if ( indexRole > 0 ) + { + role = methodName.substring( 0, indexRole ); + methodName = methodName.substring( indexRole + 1 ); + + } + try + { + RemoteService service = (RemoteService) ( (RemoteSessionImpl) session ).lookupService( role ); + service.remoteMethodCall( methodName, args, out ); + } + catch ( RaplaException ex ) + { + getLogger().error( ex.getMessage(), ex ); + throw ex; + } + out.close(); + return out.toByteArray(); + } + return new byte[] {}; + + } + + public StorageOperator getOperator() + { + return operator; + } + + static UpdateEvent createTransactionSafeUpdateEvent( UpdateResult updateResult ) + { + User user = updateResult.getUser(); + UpdateEvent saveEvent = new UpdateEvent(); + if ( user != null ) + { + saveEvent.setUserId( ( (RefEntity) updateResult.getUser() ).getId() ); + } + Iterator it = updateResult.getOperations( UpdateResult.Add.class ); + while ( it.hasNext() ) + { + saveEvent.putStore( (RefEntity) ( (UpdateResult.Add) it.next() ).getNew() ); + } + it = updateResult.getOperations( UpdateResult.Change.class ); + while ( it.hasNext() ) + { + saveEvent.putStore( (RefEntity) ( (UpdateResult.Change) it.next() ).getNew() ); + } + it = updateResult.getOperations( UpdateResult.Remove.class ); + while ( it.hasNext() ) + { + saveEvent.putRemove( (RefEntity) ( (UpdateResult.Remove) it.next() ).getCurrent() ); + } + return saveEvent; + } + + // Implementation of StorageUpdateListener + synchronized public void objectsUpdated( UpdateResult evt ) + { + // notify the client for changes + repositoryVersion++; + UpdateEvent safeResultEvent = createTransactionSafeUpdateEvent( evt ); + if ( getLogger().isDebugEnabled() ) + getLogger().debug( "Storage was modified. Calling notify." ); + for ( Iterator it = safeResultEvent.getStoreObjects().iterator(); it.hasNext(); ) + { + RaplaObject obj = (RaplaObject) it.next(); + updateMap.remove( obj ); + updateMap.put( obj, new Long( repositoryVersion ) ); + } + for ( Iterator it = safeResultEvent.getRemoveObjects().iterator(); it.hasNext(); ) + { + RaplaObject obj = (RaplaObject) it.next(); + updateMap.remove( obj ); + removeMap.remove( obj ); + removeMap.put( obj, new Long( repositoryVersion ) ); + } + } + + /** regulary removes all old update messages that are older the updateInterval ( factor 10) and at least 1 hour old */ + private final void initEventCleanup() + { + TimerTask cleanupTask = new TimerTask() + { + public void run() + { + initEventCleanup(); + } + }; + synchronized ( operator.getLock() ) + { + Timer timer = new Timer( true ); // Start timer as daemon-thread + int delay = 10000; + + { + RefEntity[] keys = (RefEntity[])updateMap.keySet().toArray(new RefEntity[] {}); + for ( int i=0;i clientRepositoryVersion ) + { + safeResultEvent.putStore( key ); + } + } + for ( Iterator it = removeMap.keySet().iterator(); it.hasNext(); ) + { + RefEntity key = (RefEntity) it.next(); + Long lastVersion = (Long) removeMap.get( key ); + if ( lastVersion.longValue() > clientRepositoryVersion ) + { + safeResultEvent.putRemove( key ); + } + } + String xml = RemoteStorageImpl.createUpdateEvent( getContext(), operator.getCache(), safeResultEvent ); + return xml; + } + // Empty String if nothing is expected + return ""; + } + + public void updateError( RaplaException ex ) + { + if ( getLogger() != null ) + getLogger().error( ex.getMessage(), ex ); + try + { + stop(); + // messagingServer.disconnect(); + } + catch ( Exception e ) + { + if ( getLogger() != null ) + getLogger().error( e.getMessage() ); + } + } + + public void storageDisconnected() + { + try + { + stop(); + } + catch ( Exception e ) + { + if ( getLogger() != null ) + getLogger().error( e.getMessage() ); + } + } + + public void checkServerVersion( String clientVersion ) throws RaplaException + { + String serverVersion = i18n.getString( "rapla.version" ); + if ( !serverVersion.equals( clientVersion ) ) + { + throw new RaplaException( "Incompatible client/server versions. Please change your client to version " + + serverVersion + + ". If you are using java-webstart a simple reload and restart could do that!" ); + } + } + + public void login( String username, String password ) throws RaplaException + { + this.getLogger().debug( "User '" + username + "' is requesting login " ); + authenticate( username, password ); + if ( authenticationStore != null) + { + User user = this.operator.getUser( username ); + if ( user == null ) + { + user = new UserImpl(); + ( (RefEntity) user ).setId( this.operator.createIdentifier( User.TYPE ) ); + } + else + { + user = (User) this.operator.editObject( user, null ); + } + + boolean initUser ; + try + { + initUser = authenticationStore.initUser( user, username, password, + this.operator.getSuperCategory() + .getCategory( Permission.GROUP_CATEGORY_KEY ) ); + } catch (RaplaSecurityException ex){ + throw new RaplaSecurityException(i18n.getString("error.login")); + } + if ( initUser ) + { + this.operator.storeAndRemove( new Entity[] + { user }, Entity.ENTITY_ARRAY, null ); + } + } + } + + + public void authenticate( String username, String password ) throws RaplaException + { + synchronized ( this.operator.getLock() ) + { + if ( authenticationStore != null && authenticationStore.authenticate( username, password ) ) + { + // do nothing + } + else + { + this.operator.authenticate( username, password ); + } + } + } + +} diff --git a/src/org/rapla/server/internal/SessionExpiredException.java b/src/org/rapla/server/internal/SessionExpiredException.java new file mode 100644 index 0000000..32da9f3 --- /dev/null +++ b/src/org/rapla/server/internal/SessionExpiredException.java @@ -0,0 +1,15 @@ +package org.rapla.server.internal; + +import org.rapla.framework.RaplaException; + + +public class SessionExpiredException extends RaplaException +{ + private static final long serialVersionUID = 1L; + + public SessionExpiredException( String text ) + { + super( text ); + } + +} diff --git a/src/org/rapla/server/internal/ShutdownRemoteServiceFactory.java b/src/org/rapla/server/internal/ShutdownRemoteServiceFactory.java new file mode 100644 index 0000000..9736818 --- /dev/null +++ b/src/org/rapla/server/internal/ShutdownRemoteServiceFactory.java @@ -0,0 +1,36 @@ +package org.rapla.server.internal; + +import java.io.IOException; +import java.io.OutputStream; +import java.text.ParseException; +import java.util.Map; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; +import org.rapla.server.ShutdownService; + +public class ShutdownRemoteServiceFactory implements RaplaRemoteServiceFactory +{ + ShutdownService shutdownService; + public ShutdownRemoteServiceFactory(RaplaContext context) throws RaplaContextException + { + shutdownService = (ShutdownService) context.lookup(ShutdownService.ROLE); + } + + public RemoteService createRemoteService( RemoteSession session ) throws RaplaException + { + return new RemoteService() { + public void remoteMethodCall( String methodName, Map args, OutputStream out ) throws RaplaException, IOException, ParseException + { + String shutdownPassword = (String) args.get(ShutdownService.SHUTDOWN.arg(0)); + boolean restart = Boolean.valueOf( (String) args.get(ShutdownService.SHUTDOWN.arg(1))).booleanValue(); + shutdownService.shutdown( shutdownPassword, restart); + } + }; + } + +} diff --git a/src/org/rapla/server/internal/ShutdownServiceImpl.java b/src/org/rapla/server/internal/ShutdownServiceImpl.java new file mode 100644 index 0000000..4aa4a70 --- /dev/null +++ b/src/org/rapla/server/internal/ShutdownServiceImpl.java @@ -0,0 +1,120 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.server.internal; + +import java.util.Vector; + +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.framework.Container; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.ShutdownListener; +import org.rapla.server.ShutdownService; + +/** Default implementation of the shutdown service. On a shutdown call + to shutdown all registered ShutdownListeners will first be notified with + shutdownInitated() and then wit shutdownComplete(). A shutdown-request will only be accepted from + process running on the localhost.

    Sample configuration: +

    + <shutdown-service id="shutdown">
    + <password>xxx</password>
    + </shutdownservice>
    + 
    + @see ShutdownService + */ +public class ShutdownServiceImpl implements ShutdownService, Disposable +{ + Vector listenerList = new Vector(); + protected Logger logger; + RaplaContext context; + + public ShutdownServiceImpl( RaplaContext context, Configuration config ) throws RaplaException + { + this.context = context; + this.logger = (Logger) context.lookup( Logger.class.getName() ); + Container container = (Container) context.lookup( Container.ROLE ); + container.addContainerProvidedComponent( RaplaRemoteServiceFactory.ROLE, ShutdownRemoteServiceFactory.ROLE ); + getLogger().info( "Shutdown service started" ); + } + + public void addShutdownListener( ShutdownListener listener ) + { + listenerList.add( listener ); + } + + public void removeShutdownListener( ShutdownListener listener ) + { + listenerList.remove( listener ); + } + + public ShutdownListener[] getShutdownListeners() + { + return (ShutdownListener[]) listenerList.toArray( new ShutdownListener[] {} ); + } + + protected void fireShutdownInitiated() + { + ShutdownListener[] listeners = getShutdownListeners(); + for ( int i = 0; i < listeners.length; i++ ) + { + try + { + listeners[i].shutdownInitiated(); + } + catch ( Throwable ex ) + { + getLogger().error( "Error calling shutdownInitiated " + listeners[i], ex ); + } + } + } + + protected void fireShutdownComplete( boolean restart ) + { + ShutdownListener[] listeners = getShutdownListeners(); + for ( int i = 0; i < listeners.length; i++ ) + try + { + listeners[i].shutdownComplete( restart ); + } + catch ( Throwable ex ) + { + getLogger().error( "Error calling shutdownComplete " + listeners[i], ex ); + } + } + + public void dispose() + { + + } + + protected Logger getLogger() + { + return logger; + } + + private void checkShutdownPermissions( String shutdownPassword ) throws RaplaException + { + // in process call, that means everything is ok + } + + public synchronized void shutdown( String shutdownPassword, boolean restart ) throws RaplaException + { + checkShutdownPermissions( shutdownPassword ); + fireShutdownInitiated(); + fireShutdownComplete( restart ); + } + +} diff --git a/src/org/rapla/server/package.html b/src/org/rapla/server/package.html new file mode 100644 index 0000000..50f122d --- /dev/null +++ b/src/org/rapla/server/package.html @@ -0,0 +1,15 @@ + +

    +The server synchronizes and bundles the client requests and +maintains a single storage for all its clients. It also +provides the basic services for the server side plugins. +For instance the notification plugin notifies sends email on a reservation change. +

    +

    +The server is also responsible for enforcing +the access policies. +

    + + + + diff --git a/src/org/rapla/servletpages/DefaultHTMLMenuEntry.java b/src/org/rapla/servletpages/DefaultHTMLMenuEntry.java new file mode 100644 index 0000000..1dad811 --- /dev/null +++ b/src/org/rapla/servletpages/DefaultHTMLMenuEntry.java @@ -0,0 +1,30 @@ +package org.rapla.servletpages; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class DefaultHTMLMenuEntry implements RaplaPageGenerator +{ + String name; + String linkName; + + public DefaultHTMLMenuEntry(String name, String linkName) + { + this.name = name; + this.linkName = linkName; + } + + public void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException + { + PrintWriter out = response.getWriter(); + // writing the html code line for a button + // including the link to the appropriate servletpage + out.println("" + name + ""); + } + +} diff --git a/src/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.java b/src/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.java new file mode 100644 index 0000000..cda5161 --- /dev/null +++ b/src/org/rapla/servletpages/DefaultHTMLMenuExtensionPoint.java @@ -0,0 +1,44 @@ +package org.rapla.servletpages; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class DefaultHTMLMenuExtensionPoint implements HTMLMenuExtensionPoint, RaplaPageGenerator +{ + List entries = new ArrayList(); + public void insert( RaplaPageGenerator gen ) + { + entries.add( gen); + } + + public void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException + { + if ( entries.size() == 0) + { + return; + } + PrintWriter out = response.getWriter(); +// out.println("
      "); + + // there is an ArraList of entries that wants to be part of the HTML + // menu we go through this ArraList, + + for (Iterator it = entries.iterator();it.hasNext();) + { + RaplaPageGenerator entry = (RaplaPageGenerator)it.next(); + out.println("
      "); + entry.generatePage( context, request, response ); + out.println("
      "); + } +// out.println("
    "); + } + +} diff --git a/src/org/rapla/servletpages/HTMLMenuExtensionPoint.java b/src/org/rapla/servletpages/HTMLMenuExtensionPoint.java new file mode 100644 index 0000000..fd1068a --- /dev/null +++ b/src/org/rapla/servletpages/HTMLMenuExtensionPoint.java @@ -0,0 +1,6 @@ +package org.rapla.servletpages; + +public interface HTMLMenuExtensionPoint +{ + public void insert(RaplaPageGenerator gen); +} diff --git a/src/org/rapla/servletpages/RaplaAppletPageGenerator.java b/src/org/rapla/servletpages/RaplaAppletPageGenerator.java new file mode 100644 index 0000000..8f54828 --- /dev/null +++ b/src/org/rapla/servletpages/RaplaAppletPageGenerator.java @@ -0,0 +1,55 @@ +/** + * + */ +package org.rapla.servletpages; + +import java.io.IOException; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.util.IOUtil; + +public class RaplaAppletPageGenerator implements RaplaPageGenerator{ + + + private String getLibsApplet(ServletContext context) throws java.io.IOException { + StringBuffer buf = new StringBuffer(); + String base = context.getRealPath("/"); + java.io.File baseFile = new java.io.File(base); + java.io.File[] files = IOUtil.getJarFiles(base,"webclient"); + for (int i=0;i"); + out.println(""); + out.println(" Rapla Applet"); + out.println(" "); + out.println(""); + out.println(""); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" No Java support for APPLET tags please install java plugin for your browser!!"); + out.println(" "); + out.println(""); + out.println(""); + } + +} \ No newline at end of file diff --git a/src/org/rapla/servletpages/RaplaIndexPageGenerator.java b/src/org/rapla/servletpages/RaplaIndexPageGenerator.java new file mode 100644 index 0000000..0fd24f1 --- /dev/null +++ b/src/org/rapla/servletpages/RaplaIndexPageGenerator.java @@ -0,0 +1,62 @@ +/** + * + */ +package org.rapla.servletpages; + +import java.io.IOException; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.RaplaStartOption; +import org.rapla.plugin.RaplaExtensionPoints; + +public class RaplaIndexPageGenerator extends RaplaComponent implements RaplaPageGenerator +{ + RaplaPageGenerator menu; + + public RaplaIndexPageGenerator( RaplaContext context ) throws RaplaException + { + super( context); + menu = (RaplaPageGenerator) context.lookup( RaplaExtensionPoints.HTML_MAIN_MENU_EXTENSION_POINT ); + } + + public void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) + throws IOException, ServletException + { + response.setContentType("text/html; charset=ISO-8859-1"); + java.io.PrintWriter out = response.getWriter(); + out.println(""); + out.println(" "); + // add the link to the stylesheet for this page within the tag + out.println(" "); + // tell the html page where its favourite icon is stored + out.println(" "); + out.println(" "); + String title; + final String defaultTitle = getI18n().getString("rapla.title"); + try { + title= getQuery().getPreferences( null ).getEntryAsString(RaplaStartOption.TITLE, defaultTitle); + } catch (RaplaException e) { + title = defaultTitle; + } + + out.println(title); + out.println(" "); + out.println(" "); + out.println(" "); + out.println("

    "); + out.println(title); + out.println("

    "); + menu.generatePage(context, request, response); + out.println(getI18n().getString("webinfo.text")); + out.println(" "); + out.println(""); + } + +} \ No newline at end of file diff --git a/src/org/rapla/servletpages/RaplaJNLPPageGenerator.java b/src/org/rapla/servletpages/RaplaJNLPPageGenerator.java new file mode 100644 index 0000000..d73f192 --- /dev/null +++ b/src/org/rapla/servletpages/RaplaJNLPPageGenerator.java @@ -0,0 +1,120 @@ +/** + * + */ +package org.rapla.servletpages; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.util.IOUtil; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.RaplaStartOption; + +public class RaplaJNLPPageGenerator extends RaplaComponent implements RaplaPageGenerator{ + + public RaplaJNLPPageGenerator( RaplaContext context ) throws RaplaException + { + super( context); + } + + private String getCodebase( HttpServletRequest request) { + StringBuffer codebaseBuffer = new StringBuffer(); + codebaseBuffer.append(!request.isSecure() ? "http://" : "https://"); + codebaseBuffer.append(request.getServerName()); + if (request.getServerPort() != (!request.isSecure() ? 80 : 443)) + { + codebaseBuffer.append(':'); + codebaseBuffer.append(request.getServerPort()); + } + codebaseBuffer.append(request.getContextPath()); + codebaseBuffer.append('/'); + return codebaseBuffer.toString(); + } + + private String getLibsJNLP(ServletContext context) throws java.io.IOException { + StringBuffer buf = new StringBuffer(); + String base = context.getRealPath("."); + java.io.File baseFile = new java.io.File(base); + java.io.File[] files = IOUtil.getJarFiles(base,"webclient"); + for (int i=0;i"); + } + return buf.toString(); + } + + protected List getProgramArguments() { + List list = new ArrayList(); +/* list.add("-c"); + list.add("rapla?page=jnlp_http_auth.xconf");*/ + list.add("webstart"); + return list; + } + + public void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) throws IOException { + java.io.PrintWriter out = response.getWriter(); + response.setContentType("application/x-java-jnlp-file;charset=utf-8"); + out.println(""); + out.println(""); + out.println(""); + out.println(" Rapla"); + out.println(" rapla.sourceforge.net (development started at Uni Bonn)"); + out.println(" "); + out.println(" Resource Scheduling Application"); + // we changed the logo from .gif to .png to make it more sexy + out.println(" "); + // and here aswell + final String defaultTitle = getI18n().getString("rapla.title"); + String menuName; + try + { + menuName= getQuery().getPreferences( null ).getEntryAsString(RaplaStartOption.TITLE, defaultTitle); + } + catch (RaplaException e) { + menuName = defaultTitle; + } + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(""); + boolean allpermissionsAllowed = isSigned(); + final String parameter = request.getParameter("sandbox"); + if (allpermissionsAllowed && (parameter== null || parameter.trim().toLowerCase().equals("false"))) + { + out.println(""); + out.println(" "); + out.println(""); + } + out.println(""); + out.println(" "); + out.println(getLibsJNLP(context)); + out.println(""); + out.println(""); + for (Iterator it = getProgramArguments().iterator(); it.hasNext();) + { + out.println(" " + it.next() + " "); + } + out.println(""); + + + out.println(""); + } + + +} \ No newline at end of file diff --git a/src/org/rapla/servletpages/RaplaPageGenerator.java b/src/org/rapla/servletpages/RaplaPageGenerator.java new file mode 100644 index 0000000..4e77c59 --- /dev/null +++ b/src/org/rapla/servletpages/RaplaPageGenerator.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.servletpages; +import java.io.IOException; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +/** + * You can add arbitrary serlvet pages to your rapla webapp. + * + */ +public interface RaplaPageGenerator +{ + void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException; +} diff --git a/src/org/rapla/servletpages/RaplaResourcePageGenerator.java b/src/org/rapla/servletpages/RaplaResourcePageGenerator.java new file mode 100644 index 0000000..569af86 --- /dev/null +++ b/src/org/rapla/servletpages/RaplaResourcePageGenerator.java @@ -0,0 +1,55 @@ +/** + * + */ +package org.rapla.servletpages; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.util.IOUtil; + +public class RaplaResourcePageGenerator implements RaplaPageGenerator{ + Map resourceMap = new HashMap(); + + public void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) throws IOException { + String resourcename = request.getParameter("name"); + if ( resourcename == null) + { + response.getWriter().println("No name parameter specified"); + return; + } + Resource res = (Resource) resourceMap.get( resourcename ); + if ( res == null) + { + response.getWriter().println("Can't find resource with the name '" + resourcename + "'"); + return; + } + response.setContentType( res.mimetyp ); + InputStream in = res.resourceURL.openStream(); + IOUtil.copyStreams( in, response.getOutputStream()); + } + + public void registerResource( String resourcename, String mimetype, URL resourceUrl) { + resourceMap.put( resourcename, new Resource( resourcename, mimetype, resourceUrl)); + } + + static class Resource { + String resourcename; + String mimetyp; + URL resourceURL; + + Resource(String resourcename, String mimetyp, URL resourceURL ) + { + this.resourcename = resourcename; + this.mimetyp = mimetyp; + this.resourceURL = resourceURL; + } + } +} \ No newline at end of file diff --git a/src/org/rapla/servletpages/RaplaStatusPageGenerator.java b/src/org/rapla/servletpages/RaplaStatusPageGenerator.java new file mode 100644 index 0000000..b5feff9 --- /dev/null +++ b/src/org/rapla/servletpages/RaplaStatusPageGenerator.java @@ -0,0 +1,39 @@ +/** + * + */ +package org.rapla.servletpages; + +import java.io.IOException; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; + +public class RaplaStatusPageGenerator implements RaplaPageGenerator{ + I18nBundle m_i18n; + public RaplaStatusPageGenerator(RaplaContext context) throws RaplaContextException { + m_i18n = (I18nBundle) context.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + } + + public void generatePage( ServletContext context, HttpServletRequest request, HttpServletResponse response ) throws IOException { + response.setContentType("text/html; charset=ISO-8859-1"); + java.io.PrintWriter out = response.getWriter(); + out.println( "" ); + out.println( "" ); + out.println(" "); + out.println(" Rapla Server status!"); + out.println("" ); + + out.println( "" ); + String javaversion = System.getProperty("java.version"); + out.println( "

    Server running

    " + m_i18n.format("info.text", javaversion)); + out.println( "
    " ); + out.println( "" ); + out.println( "" ); + } + +} \ No newline at end of file diff --git a/src/org/rapla/servletpages/package.html b/src/org/rapla/servletpages/package.html new file mode 100644 index 0000000..73b469a --- /dev/null +++ b/src/org/rapla/servletpages/package.html @@ -0,0 +1,5 @@ + +

    Contains the default pages served by the rapla server servlet

    + + + diff --git a/src/org/rapla/storage/AuthenticationStore.java b/src/org/rapla/storage/AuthenticationStore.java new file mode 100644 index 0000000..f5fb4c5 --- /dev/null +++ b/src/org/rapla/storage/AuthenticationStore.java @@ -0,0 +1,32 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage; +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.framework.RaplaException; + +public interface AuthenticationStore { + String ROLE = AuthenticationStore.class.getName(); + /** returns, if the user can be authenticated. */ + boolean authenticate(String username, String password); + /** returns the name of the store */ + String getName(); + /** Initializes a user entity with the values provided by the authentication store. + * @return true if the new user-object attributes (such as email, name, or groups) differ from the values stored before the method was executed, false otherwise. */ + boolean initUser( User user, String username, String password, Category groupRootCategory) throws RaplaException; +} + + + + diff --git a/src/org/rapla/storage/CachableStorageOperator.java b/src/org/rapla/storage/CachableStorageOperator.java new file mode 100644 index 0000000..39f912f --- /dev/null +++ b/src/org/rapla/storage/CachableStorageOperator.java @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +/** A StorageOperator that operates on a LocalCache-Object. + */ +package org.rapla.storage; + +import java.util.Collection; + +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaException; + +public interface CachableStorageOperator extends StorageOperator { + String ROLE = CachableStorageOperator.class.getName(); + + LocalCache getCache(); + void dispatch(UpdateEvent evt) throws RaplaException; + void authenticate(String username,String password) throws RaplaException; + void setCache(LocalCache cache) throws RaplaException; + void saveData() throws RaplaException; + RefEntity resolveId(Object id) throws EntityNotFoundException; + EntityResolver createEntityResolver(Collection entities,LocalCache parent); +} + + + + + + + + + + + diff --git a/src/org/rapla/storage/IOContext.java b/src/org/rapla/storage/IOContext.java new file mode 100644 index 0000000..4adaf02 --- /dev/null +++ b/src/org/rapla/storage/IOContext.java @@ -0,0 +1,123 @@ +package org.rapla.storage; + +import java.util.HashMap; +import java.util.Map; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaDefaultContext; +import org.rapla.framework.RaplaException; +import org.rapla.storage.impl.EntityStore; +import org.rapla.storage.xml.AllocatableReader; +import org.rapla.storage.xml.AllocatableWriter; +import org.rapla.storage.xml.CategoryReader; +import org.rapla.storage.xml.CategoryWriter; +import org.rapla.storage.xml.DynamicTypeReader; +import org.rapla.storage.xml.DynamicTypeWriter; +import org.rapla.storage.xml.PeriodReader; +import org.rapla.storage.xml.PeriodWriter; +import org.rapla.storage.xml.PreferenceReader; +import org.rapla.storage.xml.PreferenceWriter; +import org.rapla.storage.xml.RaplaCalendarSettingsReader; +import org.rapla.storage.xml.RaplaCalendarSettingsWriter; +import org.rapla.storage.xml.RaplaConfigurationReader; +import org.rapla.storage.xml.RaplaConfigurationWriter; +import org.rapla.storage.xml.RaplaMapReader; +import org.rapla.storage.xml.RaplaMapWriter; +import org.rapla.storage.xml.RemoveReader; +import org.rapla.storage.xml.ReservationReader; +import org.rapla.storage.xml.ReservationWriter; +import org.rapla.storage.xml.UserReader; +import org.rapla.storage.xml.UserWriter; + +public class IOContext +{ + protected Map getLocalnameMap() { + //WARNING We can't use RaplaType.getRegisteredTypes() because the class could not be registered on load time + Map localnameMap = new HashMap(); + localnameMap.put( Reservation.TYPE.getLocalName(), Reservation.TYPE); + localnameMap.put( Appointment.TYPE.getLocalName(), Appointment.TYPE); + localnameMap.put( Allocatable.TYPE.getLocalName(), Allocatable.TYPE); + localnameMap.put( User.TYPE.getLocalName(), User.TYPE); + localnameMap.put( Preferences.TYPE.getLocalName(), Preferences.TYPE); + localnameMap.put( Period.TYPE.getLocalName(), Period.TYPE); + localnameMap.put( Category.TYPE.getLocalName(), Category.TYPE); + localnameMap.put( DynamicType.TYPE.getLocalName(), DynamicType.TYPE); + localnameMap.put( Attribute.TYPE.getLocalName(), Attribute.TYPE); + localnameMap.put( RaplaConfiguration.TYPE.getLocalName(), RaplaConfiguration.TYPE); + localnameMap.put( RaplaMap.TYPE.getLocalName(), RaplaMap.TYPE); + localnameMap.put( CalendarModelConfiguration.TYPE.getLocalName(), CalendarModelConfiguration.TYPE); + return localnameMap; + } + + protected void addReaders(Map readerMap,RaplaContext context) throws RaplaException { + readerMap.put( "remove",new RemoveReader( context)); + readerMap.put( Category.TYPE,new CategoryReader( context)); + readerMap.put( Preferences.TYPE, new PreferenceReader(context) ); + readerMap.put( DynamicType.TYPE, new DynamicTypeReader(context) ); + readerMap.put( User.TYPE, new UserReader(context)); + readerMap.put( Allocatable.TYPE, new AllocatableReader(context) ); + readerMap.put( Period.TYPE, new PeriodReader(context) ); + readerMap.put( Reservation.TYPE,new ReservationReader(context)); + readerMap.put( RaplaConfiguration.TYPE, new RaplaConfigurationReader(context)); + readerMap.put( RaplaMap.TYPE, new RaplaMapReader(context)); + readerMap.put( CalendarModelConfiguration.TYPE, new RaplaCalendarSettingsReader(context) ); + } + + protected void addWriters(Map writerMap,RaplaContext context) throws RaplaException { + writerMap.put( Category.TYPE,new CategoryWriter(context)); + writerMap.put( Preferences.TYPE,new PreferenceWriter(context) ); + writerMap.put( DynamicType.TYPE,new DynamicTypeWriter(context)); + writerMap.put( User.TYPE, new UserWriter(context) ); + writerMap.put( Allocatable.TYPE, new AllocatableWriter(context) ); + writerMap.put( Period.TYPE, new PeriodWriter(context) ); + writerMap.put( Reservation.TYPE,new ReservationWriter(context)); + writerMap.put( RaplaConfiguration.TYPE,new RaplaConfigurationWriter(context) ); + writerMap.put( RaplaMap.TYPE, new RaplaMapWriter(context) ); + writerMap.put( Preferences.TYPE, new PreferenceWriter(context) ); + writerMap.put( CalendarModelConfiguration.TYPE, new RaplaCalendarSettingsWriter(context) ); + } + + public RaplaDefaultContext createInputContext(RaplaContext parentContext, EntityStore store, IdTable idTable) throws RaplaException { + + RaplaDefaultContext ioContext = new RaplaDefaultContext( parentContext); + ioContext.put(EntityStore.class.getName(), store); + ioContext.put(IdTable.class.getName(),idTable); + ioContext.put(PreferenceReader.LOCALNAMEMAPENTRY, getLocalnameMap()); + Map readerMap = new HashMap(); + ioContext.put(PreferenceReader.READERMAP, readerMap); + addReaders( readerMap, ioContext); + return ioContext; + } + + public RaplaDefaultContext createOutputContext(RaplaContext parentContext, LocalCache cache, boolean includeIds, boolean includeVersions) throws RaplaException { + + RaplaDefaultContext ioContext = new RaplaDefaultContext( parentContext); + if ( includeIds) + { + ioContext.put("idonly", Boolean.TRUE); + } + if ( includeVersions) + { + ioContext.put("printversion", Boolean.TRUE); + } + ioContext.put(LocalCache.class.getName(), cache); + ioContext.put(PreferenceReader.LOCALNAMEMAPENTRY, getLocalnameMap()); + Map writerMap = new HashMap(); + ioContext.put(PreferenceWriter.WRITERMAP, writerMap); + addWriters( writerMap, ioContext ); + return ioContext; + } + +} diff --git a/src/org/rapla/storage/IdTable.java b/src/org/rapla/storage/IdTable.java new file mode 100644 index 0000000..0a79695 --- /dev/null +++ b/src/org/rapla/storage/IdTable.java @@ -0,0 +1,59 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.rapla.entities.RaplaType; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.RaplaException; + +/** Maintains the highest ids for every RaplaType in the LocalCache.*/ +public class IdTable { + Map idTable = new HashMap(); + LocalCache cache; + /** increment and return the highest id for the selected RaplaType */ + public Object createId(RaplaType raplaType) throws RaplaException { + SimpleIdentifier oldId = (SimpleIdentifier) idTable.get(raplaType); + if ( oldId == null) { + oldId = calc(cache, raplaType); + idTable.put(raplaType, oldId); + } + if (oldId == null) + throw new RaplaException("Error in Program: RaplaType '" + raplaType + + "' not found in idtable. Have you called recalc?"); + Object newId = new SimpleIdentifier(raplaType,oldId.getKey() + 1); + idTable.put(raplaType,newId); + return newId; + } + + /** Finds the highest id in an entity-collection */ + protected SimpleIdentifier calc(LocalCache cache,RaplaType raplaType) throws RaplaException { + int max = 0; + Iterator it = cache.getIterator(raplaType); + while (it.hasNext()) { + SimpleIdentifier id =(SimpleIdentifier) ((RefEntity)it.next()).getId(); + if (id != null && id.getKey() > max) + max = id.getKey(); + } + return new SimpleIdentifier(raplaType,max); + } + + public void setCache(LocalCache cache) throws RaplaException { + this.cache = cache; + idTable.clear(); + } +} diff --git a/src/org/rapla/storage/ImportExportManager.java b/src/org/rapla/storage/ImportExportManager.java new file mode 100644 index 0000000..4027aaf --- /dev/null +++ b/src/org/rapla/storage/ImportExportManager.java @@ -0,0 +1,22 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; +import org.rapla.framework.RaplaException; +/** Imports the content of on store into another. + Export does an import with source and destination exchanged. + */ +public interface ImportExportManager { + String ROLE = ImportExportManager.class.getName(); + void doImport() throws RaplaException; + void doExport() throws RaplaException; +} diff --git a/src/org/rapla/storage/LocalCache.java b/src/org/rapla/storage/LocalCache.java new file mode 100644 index 0000000..c88a261 --- /dev/null +++ b/src/org/rapla/storage/LocalCache.java @@ -0,0 +1,424 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.iterator.NestedIterator; +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentStartComparator; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.RaplaException; + +public class LocalCache implements EntityResolver +{ + Map passwords = new HashMap(); + + Map entities; + Set dynamicTypes; + Set users; + Set resources; + Set reservations; + Set periods; + + Set categories; + Set appointments; + Set attributes; + + Set preferences; + + Map entityMap; + Map enities; + + Locale locale; + + // Index for start and end dates + TreeSet appointmentsStart; + + + class IdComparator implements Comparator { + public int compare(Object o1,Object o2) { + SimpleIdentifier id1 = (SimpleIdentifier)((RefEntity)o1).getId(); + SimpleIdentifier id2 = (SimpleIdentifier)((RefEntity)o2).getId(); + if ( id1.getKey() == id2.getKey()) + return 0; + return (id1.getKey() < id2.getKey()) ? -1 : 1; + } + } + + private CategoryImpl superCategory = new CategoryImpl(); + + public LocalCache(Locale locale) { + this.locale = locale; + superCategory.setId(LocalCache.SUPER_CATEGORY_ID); + superCategory.setKey("supercategory"); + + Comparator comp = new IdComparator(); + + entityMap = new HashMap(); + entities = new HashMap(); + // top-level-entities + reservations = new TreeSet(comp); + periods = new TreeSet(comp); + users = new TreeSet(comp); + resources = new TreeSet(comp); + dynamicTypes = new TreeSet(comp); + + // non-top-level-entities with exception of one super-category + categories = new HashSet(); + appointments = new HashSet(); + preferences = new HashSet(); + attributes = new HashSet(); + + entityMap.put(DynamicType.TYPE,dynamicTypes); + entityMap.put(Attribute.TYPE, attributes); + entityMap.put(Category.TYPE, categories); + entityMap.put(Allocatable.TYPE,resources); + entityMap.put(User.TYPE,users); + entityMap.put(Period.TYPE,periods); + entityMap.put(Reservation.TYPE,reservations); + entityMap.put(Appointment.TYPE,appointments); + entityMap.put(Preferences.TYPE, preferences); + + + appointmentsStart = new TreeSet(new AppointmentStartComparator()); + initSuperCategory(); + } + + /** @return true if the entity has been removed and false if the entity was not found*/ + public boolean remove(RefEntity entity) { + RaplaType raplaType = entity.getRaplaType(); + Set entitySet = (Set)entityMap.get(raplaType); + boolean bResult = true; + if (entitySet != null) { + if (entities.get(entity.getId()) != null) + bResult = false; + if (entity.getId() == null) + return false; + + + if ( Appointment.TYPE.equals( raplaType )) { + removeAppointment(entity); + } + + entities.remove(entity.getId()); + entitySet.remove( entity ); + } else { + throw new RuntimeException("UNKNOWN TYPE. Can't remove object:" + entity.getRaplaType()); + } + return bResult; + } + + public void put(RefEntity entity) { + Assert.notNull(entity); + RaplaType raplaType = entity.getRaplaType(); + Object id = entity.getId(); + if (id == null) + throw new IllegalStateException("ID can't be null"); + + Set entitySet = (Set) entityMap.get(raplaType); + if (entitySet != null) { + + if (Appointment.TYPE.equals( raplaType )) { + removeAppointment(entity); + appointmentsStart.add(entity); + } + entities.put(id,entity); + entitySet.remove( entity ); + entitySet.add( entity ); + } else { + throw new RuntimeException("UNKNOWN TYPE. Can't store object in cache: " + entity.getRaplaType()); + } + } + + + public RefEntity get(Object id) { + if (id == null) + throw new RuntimeException("id is null"); + return (RefEntity)entities.get(id); + } + + private void removeAppointment(RefEntity entity) { + if (appointments.remove(entity)) { + // start date could have been changed, so we probably won't find it with a binary search + if (!appointmentsStart.remove(entity)) { + Iterator it = appointmentsStart.iterator(); + while (it.hasNext()) + if (entity.equals(it.next())) { + it.remove(); + break; + } + } + } + } + + public SortedSet getAppointments(User user,Date start,Date end) { + SortedSet appointmentSet = new TreeSet(new AppointmentStartComparator()); + Iterator it; + if (end != null) { + // all appointments that start before the enddate + it = appointmentsStart.headSet(end).iterator(); + //it = appointments.values().iterator(); + } else { + it = appointmentsStart.iterator(); + } + + while (it.hasNext()) { + Appointment appointment = (Appointment) it.next(); + // test if appointment end before the start-date + if (end != null && appointment.getStart().after(end)) + break; + + // Ignore appointments without a reservation + if ( appointment.getReservation() == null) + continue; + + if ( !appointment.overlaps(start,end, false)) + continue; + if (user == null || user.equals(appointment.getOwner()) ) { + appointmentSet.add(appointment); + } + } + return appointmentSet; + } + + public List getReservations(User user, Date start, Date end) { + HashSet reservationSet = new HashSet(); + Iterator it = getAppointments(user,start,end).iterator(); + while (it.hasNext()) { + Appointment appointment = it.next(); + reservationSet.add( appointment.getReservation() ); + } + return new ArrayList(reservationSet); + } + + + public Collection getCollection(RaplaType type) { + Set entities = (Set) entityMap.get(type); + + if ( Period.TYPE.equals( type)) { + entities = new TreeSet( entities); + } + + if (entities != null) { + return entities; + } else { + throw new RuntimeException("UNKNOWN TYPE. Can't get collection: " + + type); + } + } + + public Iterator getIterator(RaplaType type) throws RaplaException { + Set entities = (Set) entityMap.get(type); + if (entities != null) { + return entities.iterator(); + } + throw new RaplaException("Can't get iterator for " + type); + } + + public void clearAll() { + passwords.clear(); + Iterator it = entityMap.values().iterator(); + while (it.hasNext()) { + ((Set)it.next()).clear(); + } + appointmentsStart.clear(); + entities.clear(); + initSuperCategory(); + + } + private void initSuperCategory() { + entities.put (LocalCache.SUPER_CATEGORY_ID, superCategory); + superCategory.setReadOnly( false ); + categories.add( superCategory ); + Category[] childs = superCategory.getCategories(); + for (int i=0;istr.length()) + throw new ParseException("invalid rapla-id '" + str + "'", index); + try { + return new SimpleIdentifier(type,Integer.parseInt(str.substring(index))); + } catch (NumberFormatException ex) { + throw new ParseException("invalid rapla-id '" + str + "'", index); + } + } + + public DynamicType getDynamicType(String elementKey) { + Iterator it = dynamicTypes.iterator(); + while (it.hasNext()) { + DynamicType dt = (DynamicType) it.next(); + if (dt.getElementKey().equals(elementKey)) + return dt; + } + return null; + } + + public Iterator getVisibleEntities() { + return new NestedIterator(entityMap.keySet().iterator()) { + public Iterator getNestedIterator(Object key) { + RaplaType raplaType = (RaplaType)key; + if ( Reservation.TYPE.equals( raplaType ) || + Appointment.TYPE.equals( raplaType ) ) + return null; + Set set = (Set) entityMap.get( key); + return set.iterator(); + } + }; + } + + public Iterator getAllEntities() { + return new NestedIterator(entityMap.keySet().iterator()) { + public Iterator getNestedIterator(Object raplaType) { + Set set = (Set) entityMap.get(raplaType); + return set.iterator(); + } + /* + public Object next() { + Object obj = super.next(); + System.out.println(obj); + return obj; + } + */ + }; + } + + // Implementation of EntityResolver + public RefEntity resolve(Object id) throws EntityNotFoundException { + if (!(id instanceof SimpleIdentifier)) + new EntityNotFoundException("Unknown identifier class: " + id.getClass() + + ". Only the SimpleIdentier class is supported."); + RefEntity entity = (RefEntity) get(id); + + if (entity == null) + throw new EntityNotFoundException("Object for id [" + id.toString() + "] not found"); + return entity; + } + + public String getPassword(Object userId) { + return (String) passwords.get(userId); + } + + public void putPassword(Object userId, String password) { + passwords.put(userId,password); + } + + public void putAll( Collection list ) + { + Iterator it = list.iterator(); + while (it.hasNext()) { + put((RefEntity)it.next()); + } + + } + +} diff --git a/src/org/rapla/storage/RaplaSecurityException.java b/src/org/rapla/storage/RaplaSecurityException.java new file mode 100644 index 0000000..a1bab9a --- /dev/null +++ b/src/org/rapla/storage/RaplaSecurityException.java @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; + +import org.rapla.framework.RaplaException; + +/** + * This exception is thrown on an invalid login, + * or when a client tries to access data without + * the proper permissions. + */ +public class RaplaSecurityException extends RaplaException { + private static final long serialVersionUID = 1L; + + public RaplaSecurityException(String text) { + super(text); + } + + public RaplaSecurityException(Throwable throwable) { + super(throwable); + } + + public RaplaSecurityException(String text,Throwable ex) { + super(text,ex); + } +} + + + + + + + diff --git a/src/org/rapla/storage/ReferenceNotFoundException.java b/src/org/rapla/storage/ReferenceNotFoundException.java new file mode 100644 index 0000000..e56fb0d --- /dev/null +++ b/src/org/rapla/storage/ReferenceNotFoundException.java @@ -0,0 +1,41 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; + +import org.rapla.framework.RaplaException; + +/** This exception is thrown when you want to store an reference to an entity that was + * is not stored or was removed + */ +public class ReferenceNotFoundException extends RaplaException { + private static final long serialVersionUID = 1L; + + public ReferenceNotFoundException(String text) { + super(text); + } + + public ReferenceNotFoundException(Throwable throwable) { + super(throwable); + } + + public ReferenceNotFoundException(String text,Throwable ex) { + super(text,ex); + } +} + + + + + + + diff --git a/src/org/rapla/storage/StorageOperator.java b/src/org/rapla/storage/StorageOperator.java new file mode 100644 index 0000000..dc09174 --- /dev/null +++ b/src/org/rapla/storage/StorageOperator.java @@ -0,0 +1,97 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +/** A Facade Interface for manipulating the stored data. + * This abstraction allows Rapla to store the data + * in many ways.
    + * Currently implemented are the storage in an XML-File + * ,the storage in an SQL-DBMS and storage over a + * network connection. + * @see org.rapla.storage.dbsql.DBOperator + * @see org.rapla.storage.dbfile.XMLOperator + * @see org.rapla.storage.dbrm.RemoteOperator + * @author Christopher Kohlhaas + */ +package org.rapla.storage; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.SortedSet; + +import org.rapla.entities.Category; +import org.rapla.entities.Entity; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaException; + +public interface StorageOperator { + String ROLE = StorageOperator.class.getName(); + + void connect() throws RaplaException; + void connect(String username,char[] password) throws RaplaException; + boolean isConnected(); + /** Refreshes the data. This could be helpfull if the storage + * operator uses a cache and does not support "Active Monitoring" + * of the original data */ + void refresh() throws RaplaException; + void disconnect() throws RaplaException; + + /** should return a clone of the object. Never edit the + original, always edit the object returned by editObject.*/ + Entity editObject(Entity obj, User user) throws RaplaException; + + Entity getPersistant(Entity entity) throws EntityNotFoundException; + /** Stores and/or removes entities and specifies a user that is responsible for the changes. + * Notifies all registered StorageUpdateListeners after a successful + storage.*/ + void storeAndRemove(Entity[] storeObjects,Entity[] removeObjects,User user) throws RaplaException; + + Object createIdentifier(RaplaType raplaType) throws RaplaException; + + Collection getObjects(RaplaType raplaType) throws RaplaException; + + /** returns all the objects (except reservations)that are visible for the current user */ + List getVisibleEntities(User user) throws RaplaException; + + /** returns the user or null if a user with the given username was not found. */ + User getUser(String username) throws RaplaException; + Preferences getPreferences(User user) throws RaplaException; + + + /** returns the reservations of the specified user, sorted by name.*/ + List getReservations(User user,Date start,Date end) throws RaplaException; + + /** returns the appointments of the specified user in the specified period, sorted by start-date */ + SortedSet getAppointments(User user,Date start,Date end) throws RaplaException; + + Category getSuperCategory(); + + /** changes the password and calls storeObjects(new Object[] {user}) */ + void changePassword(User user,char[] oldPassword,char[] newPassword) throws RaplaException; + + boolean canChangePassword(); + + void addStorageUpdateListener(StorageUpdateListener updateListener); + void removeStorageUpdateListener(StorageUpdateListener updateListener); + + Object getLock(); + + Date today(); + + boolean supportsActiveMonitoring(); + +} \ No newline at end of file diff --git a/src/org/rapla/storage/StorageUpdateListener.java b/src/org/rapla/storage/StorageUpdateListener.java new file mode 100644 index 0000000..40ba6ea --- /dev/null +++ b/src/org/rapla/storage/StorageUpdateListener.java @@ -0,0 +1,22 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; + +import org.rapla.framework.RaplaException; + +public interface StorageUpdateListener +{ + public void objectsUpdated(UpdateResult evt); + public void updateError(RaplaException ex); + public void storageDisconnected(); +} diff --git a/src/org/rapla/storage/UpdateEvent.java b/src/org/rapla/storage/UpdateEvent.java new file mode 100644 index 0000000..f46c3d6 --- /dev/null +++ b/src/org/rapla/storage/UpdateEvent.java @@ -0,0 +1,104 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.rapla.entities.storage.RefEntity; + +public class UpdateEvent implements java.io.Serializable,Cloneable +{ + private static final long serialVersionUID = 1L; + + HashMap removeSet = new HashMap(); + HashMap storeSet = new HashMap(); + + ArrayList removeObjects = new ArrayList(); + ArrayList storeObjects = new ArrayList(); + Object userId; + long repositoryVersion; + + public UpdateEvent() { + } + + public void setUserId( Object userId) { + this.userId = userId; + } + public Object getUserId() { + return userId; + } + + private void addRemove(RefEntity entity) { + removeObjects.add(entity); + removeSet.put( entity.getId(),entity); + } + private void addStore(RefEntity entity) { + storeObjects.add(entity); + storeSet.put( entity.getId(), entity); + } + + public List getRemoveObjects() { + return removeObjects; + } + + public List getStoreObjects() { + return storeObjects; + } + + /** use this method if you want to avoid adding the same Entity twice.*/ + public void putStore(RefEntity entity) { + + if (storeSet.get(entity.getId()) == null) + addStore(entity); + } + + /** use this method if you want to avoid adding the same Entity twice.*/ + public void putRemove(RefEntity entity) { + if (removeSet.get(entity.getId()) == null) + addRemove(entity); + } + + /** find an entity in the update-event that matches the passed original. Returns null + * if no such entity is found. */ + public RefEntity findEntity(RefEntity original) { + RefEntity entity = storeSet.get( original.getId()); + if ( entity != null) + return entity; + entity = removeSet.get( original.getId()); + if ( entity != null) + return entity; + return null; + } + + public UpdateEvent clone() { + UpdateEvent clone = new UpdateEvent( ); + clone.userId = userId; + clone.removeObjects = (ArrayList) removeObjects.clone(); + clone.storeObjects = (ArrayList) storeObjects.clone(); + clone.removeSet = (HashMap) removeSet.clone(); + clone.storeSet = (HashMap) storeSet.clone(); + return clone; + } + + public long getRepositoryVersion() + { + return repositoryVersion; + } + + public void setRepositoryVersion( long repositoryVersion ) + { + this.repositoryVersion = repositoryVersion; + } +} diff --git a/src/org/rapla/storage/UpdateResult.java b/src/org/rapla/storage/UpdateResult.java new file mode 100644 index 0000000..27a6cbc --- /dev/null +++ b/src/org/rapla/storage/UpdateResult.java @@ -0,0 +1,131 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.rapla.entities.User; + +public class UpdateResult +{ + User user; + List operations = new ArrayList(); + + public UpdateResult(User user) { + this.user = user; + } + + public void addOperation(final Object operation) { + if ( operation == null) + throw new IllegalStateException( "Operation can't be null" ); + operations.add(operation); + } + + public User getUser() { + return user; + } + + public Set getRemoveObjects() { + return getObject( Remove.class); + } + + public Set getChangeObjects() { + return getObject( Change.class); + } + + public Set getAddObjects() { + return getObject( Add.class); + } + + public Iterator getOperations( final Class operationClass) { + Iterator operationsIt = operations.iterator(); + if ( operationClass == null) + throw new IllegalStateException( "OperationClass can't be null" ); + + List list = new ArrayList(); + while ( operationsIt.hasNext() ) { + Object obj = operationsIt.next(); + if ( operationClass.isInstance( obj )) + list.add( obj ); + } + + return list.iterator(); + } + + protected Set getObject( final Class operationClass ) { + Set set = new HashSet(); + if ( operationClass == null) + throw new IllegalStateException( "OperationClass can't be null" ); + Iterator it= getOperations( operationClass); + while (it.hasNext() ) { + set.add( ((UpdateOperation)it.next() ).getCurrent()); + } + return set; + } + + + static public class Add implements UpdateOperation { + Object currentObj; // the actual represantation of the object + Object newObj; // the object in the state when it was addes + public Add(Object currentObj, Object newObj) { + this.currentObj = currentObj; + this.newObj = newObj; + } + public Object getCurrent() { + return currentObj; + } + public Object getNew() { + return newObj; + } + } + + static public class Remove implements UpdateOperation { + Object currentObj; // the actual represantation of the object + public Remove(Object currentObj) { + this.currentObj = currentObj; + } + public Object getCurrent() { + return currentObj; + } + } + + static public class Change implements UpdateOperation{ + Object currentObj; // the actual representation of the object + Object newObj; // the object in the state when it was changed + Object oldObj; // the object in the state before it was changed + public Change(Object currentObj, Object newObj, Object oldObj) { + this.currentObj = currentObj; + this.newObj = newObj; + this.oldObj = oldObj; + } + public Object getCurrent() { + return currentObj; + } + public Object getNew() { + return newObj; + } + public Object getOld() { + return oldObj; + } + } +} + +interface UpdateOperation { + public Object getCurrent(); +} + + diff --git a/src/org/rapla/storage/dbfile/FileOperator.java b/src/org/rapla/storage/dbfile/FileOperator.java new file mode 100644 index 0000000..bf47b6d --- /dev/null +++ b/src/org/rapla/storage/dbfile/FileOperator.java @@ -0,0 +1,309 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbfile; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Iterator; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.util.IOUtil; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.StartupEnvironment; +import org.rapla.storage.IOContext; +import org.rapla.storage.LocalCache; +import org.rapla.storage.UpdateEvent; +import org.rapla.storage.UpdateResult; +import org.rapla.storage.impl.AbstractCachableOperator; +import org.rapla.storage.impl.EntityStore; +import org.rapla.storage.xml.RaplaInput; +import org.rapla.storage.xml.RaplaMainReader; +import org.rapla.storage.xml.RaplaMainWriter; + +/** Use this Operator to keep the data stored in an XML-File. + *

    Sample configuration: +

    + <file-storage id="file">
    + <file>data.xml</file>
    + <encoding>utf-8</encoding>
    + <validate>no</validate>
    + </facade>
    + 
    + *
      + *
    • The file entry contains the path of the data file. + * If the path is not an absolute path it will be resolved + * relative to the location of the configuration file + *
    • + *
    • The encoding entry specifies the encoding of the xml-file. + * Currently only UTF-8 is tested. + *
    • + *
    • The validate entry specifies if the xml-file should be checked + * against a schema-file that is located under org/rapla/storage/xml/rapla.rng + * (Default is no) + *
    • + *
    + *

    + *

    Note: The xmloperator doesn't check passwords.

    + + @see AbstractCachableOperator + @see org.rapla.storage.StorageOperator + */ +final public class FileOperator extends AbstractCachableOperator +{ + private File storageFile; + private URL loadingURL; + + private final String encoding; + protected boolean isConnected = false; + final boolean includeIds ; + + private final boolean validate; + + public FileOperator( RaplaContext context, Configuration config ) throws RaplaException + { + super( context ); + StartupEnvironment env = (StartupEnvironment) context.lookup( StartupEnvironment.ROLE ); + + URL contextRootURL = env.getContextRootURL(); + + String fileName = config.getChild( "file" ).getValue( "data.xml" ); + try + { + File file = new File( fileName ); + if ( file.isAbsolute() ) + { + storageFile = file; + loadingURL = storageFile.getCanonicalFile().toURI().toURL(); + } + else + { + int startupEnv = env.getStartupMode(); + if ( startupEnv == StartupEnvironment.WEBSTART || startupEnv == StartupEnvironment.APPLET ) + { + loadingURL = new URL( contextRootURL, fileName ); + } + else + { + File contextRootFile = IOUtil.getFileFrom( contextRootURL ); + storageFile = new File( contextRootFile, fileName ); + loadingURL = storageFile.getCanonicalFile().toURI().toURL(); + } + } + getLogger().info("Data:" + loadingURL); + } + catch ( MalformedURLException ex ) + { + throw new RaplaException( fileName + " is not an valid path " ); + } + catch ( IOException ex ) + { + throw new RaplaException( "Can't read " + storageFile + " " + ex.getMessage() ); + } + encoding = config.getChild( "encoding" ).getValue( "utf-8" ); + validate = config.getChild( "validate" ).getValueAsBoolean( false ); + includeIds = config.getChild( "includeIds" ).getValueAsBoolean( false ); + } + + public boolean supportsActiveMonitoring() + { + return false; + } + + /** just calls connect. Username and password will be ignored.*/ + final public void connect( String username, char[] password ) throws RaplaException + { + connect(); + } + + /** Sets the isConnected-flag and calls loadData.*/ + final public void connect() throws RaplaException + { + if ( isConnected ) + return; + loadData(); + isConnected = true; + } + + final public boolean isConnected() + { + return isConnected; + } + + /** this implementation does nothing. Once connected isConnected will always return true.*/ + final public void disconnect() throws RaplaException + { + isConnected = false; + fireStorageDisconnected(); + } + + final public void refresh() throws RaplaException + { + getLogger().warn( "Incremental refreshs are not supported" ); + } + + final public void refreshFull() throws RaplaException + { + try + { + loadData(); + isConnected = true; + } + catch ( Exception ex ) + { + cache.clearAll(); + isConnected = false; + if ( ex instanceof RaplaException ) + throw (RaplaException) ex; + else + throw new RaplaException( ex ); + } + } + + final protected void loadData() throws RaplaException + { + try + { + cache.clearAll(); + idTable.setCache( cache ); + if ( getLogger().isDebugEnabled() ) + getLogger().debug( "Reading data from file:" + loadingURL ); + + RaplaInput xmlAdapter = new RaplaInput( getLogger().getChildLogger( "reading" ) ); + + EntityStore entityStore = new EntityStore( null, cache.getSuperCategory() ); + RaplaContext context = new IOContext().createInputContext( serviceManager, entityStore, idTable ); + RaplaMainReader contentHandler = new RaplaMainReader( context ); + xmlAdapter.read( loadingURL, contentHandler, validate ); + resolveEntities( entityStore.getList().iterator(), entityStore ); + cache.putAll( entityStore.getList() ); + cache.getSuperCategory().setReadOnly(true); + for ( Iterator it = cache.getIterator( User.TYPE ); it.hasNext(); ) + { + RefEntity user = ( (RefEntity) it.next() ); + String password = entityStore.getPassword( user.getId() ); + //System.out.println("Storing password in cache" + password); + cache.putPassword( user.getId(), password ); + } + // contextualize all Entities + if ( getLogger().isDebugEnabled() ) + getLogger().debug( "Entities contextualized" ); + + // save the converted file; + if ( xmlAdapter.wasConverted() ) + { + getLogger().info( "Storing the converted file" ); + saveData(); + } + } + catch ( IOException ex ) + { + getLogger().info( "Loading error: " + loadingURL); + throw new RaplaException( "Can't load file at " + loadingURL + ": " + ex.getMessage() ); + } + catch ( RaplaException ex ) + { + throw ex; + } + catch ( Exception ex ) + { + throw new RaplaException( ex ); + } + } + + + public void dispatch( UpdateEvent evt ) throws RaplaException + { + evt = createClosure( evt ); + check( evt ); + // call of update must be first to update the cache. + // then saveData() saves all the data in the cache + UpdateResult result = update( evt, true ); + saveData(); + fireStorageUpdated( result ); + } + + final public Object createIdentifier( RaplaType raplaType ) throws RaplaException + { + return idTable.createId( raplaType ); + } + + + final public void setCache( LocalCache cache ) throws RaplaException + { + super.setCache( cache ); + idTable.setCache( cache ); + } + + private boolean bWarningDisplayed = false; + + private void showReadOnlyWarning() throws RaplaException + { + if ( bWarningDisplayed ) + return; + javax.swing.JOptionPane.showMessageDialog( null, getI18n().getString( "warning.readonly_storage" ), + getI18n().getString( "warning" ), + javax.swing.JOptionPane.WARNING_MESSAGE ); + bWarningDisplayed = true; + } + + final public void saveData() throws RaplaException + { + try + { + if ( storageFile == null ) + { + showReadOnlyWarning(); + return; + } + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + writeData( buffer ); + byte[] data = buffer.toByteArray(); + buffer.close(); + + moveFile( storageFile, storageFile.getPath() + ".bak" ); + OutputStream out = new FileOutputStream( storageFile ); + out.write( data ); + out.close(); + } + catch ( IOException e ) + { + throw new RaplaException( e.getMessage() ); + } + } + + private void writeData( OutputStream out ) throws IOException, RaplaException + { + final boolean includeVersions = false; + RaplaContext outputContext = new IOContext().createOutputContext( serviceManager, cache, includeIds, includeVersions ); + RaplaMainWriter writer = new RaplaMainWriter( outputContext ); + writer.setEncoding( encoding ); + writer.write( out ); + } + + private void moveFile( File file, String newPath ) throws IOException + { + File backupFile = new File( newPath ); + backupFile.delete(); + file.renameTo( backupFile ); + } + +} diff --git a/src/org/rapla/storage/dbfile/package.html b/src/org/rapla/storage/dbfile/package.html new file mode 100644 index 0000000..3081262 --- /dev/null +++ b/src/org/rapla/storage/dbfile/package.html @@ -0,0 +1,5 @@ + +Serialization of the reservation-data in an XML file + + + diff --git a/src/org/rapla/storage/dbrm/Connector.java b/src/org/rapla/storage/dbrm/Connector.java new file mode 100644 index 0000000..18d1b28 --- /dev/null +++ b/src/org/rapla/storage/dbrm/Connector.java @@ -0,0 +1,20 @@ +package org.rapla.storage.dbrm; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +import org.rapla.framework.RaplaException; + +public interface Connector +{ + + String getInfo(); + + void start() throws Exception; + + InputStream call( String methodName, Map args) throws IOException, RaplaException; + + void stop(); + +} diff --git a/src/org/rapla/storage/dbrm/HTTPConnector.java b/src/org/rapla/storage/dbrm/HTTPConnector.java new file mode 100644 index 0000000..4b19a40 --- /dev/null +++ b/src/org/rapla/storage/dbrm/HTTPConnector.java @@ -0,0 +1,210 @@ +package org.rapla.storage.dbrm; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.net.ConnectException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.rapla.components.util.Tools; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.internal.ConfigTools; + +public class HTTPConnector extends RaplaComponent implements Connector +{ + String sessionId; + URL server; + + public HTTPConnector(RaplaContext context, Configuration config) throws RaplaException{ + super(context); + try + { + String configEntry = config.getChild("server").getValue(); + String serverURL = ConfigTools.resolveContext(configEntry, context ); + server = new URL(serverURL); + } + catch (MalformedURLException e) + { + throw new RaplaException("Malformed url. Could not parse " + server); + } + catch (ConfigurationException e) + { + throw new RaplaException(e); + } + } + + public InputStream call(String methodName, Map args) throws IOException, RaplaException + { + URL methodURL = new URL(server,"rapla/rpc/" + methodName ); + //URL server = new URL("http://127.0.0.1:8080/vorsorge-optimierer/start"); + + //System.err.println("Calling " + methodURL.toExternalForm() ); + + HttpURLConnection conn = (HttpURLConnection)methodURL.openConnection(); + conn.setRequestMethod("POST"); + conn.setUseCaches( false ); + conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + conn.setRequestProperty("Cookie","JSESSIONID=" + sessionId); + setSessionForRequest( conn ); + conn.setDoOutput(true); + + try + { + conn.connect(); + } + catch (ConnectException ex) + { + throw new RaplaException(getI18n().format("error.connect", server)); + } + + Writer wr = new OutputStreamWriter(conn.getOutputStream(),"UTF-8"); + addParams( wr, args); + wr.flush(); + + try + { + updateSession ( conn ); + return new BufferedInputStream(conn.getInputStream()); + } + catch (ConnectException ex) + { + throw new RaplaException(getI18n().format("error.connect", server)); + } + catch (IOException ex) + { + String entry = conn.getHeaderField("X-Error-Stacktrace"); + if ( entry != null) + { + Throwable e = getServerException( server); + if ( e instanceof RaplaException) + { + throw (RaplaException) e; + } + throw new RaplaException( e); + } + else + { + throw ex; + } + } + } + + private void setSessionForRequest( HttpURLConnection connection ) + { + if ( sessionId != null) + { + connection.addRequestProperty("Cookie","JSESSIONID=" + sessionId); + } + } + + private Throwable getServerException( URL server ) throws IOException, RaplaException + { + URL methodURL = new URL(server,"rapla/rpc/getException"); + HttpURLConnection connection = (HttpURLConnection)methodURL.openConnection(); + setSessionForRequest( connection ); + + //ByteArrayOutputStream output = new ByteArrayOutputStream(); + + ObjectInputStream in = new ObjectInputStream( connection.getInputStream()); + Throwable e; + try + { + e = (Throwable)in.readObject(); + } + catch (Exception e1) + { + throw new RaplaException( e1); + } + return e; + } + + private void addParams(Writer writer, Map args ) throws IOException + { + boolean appendAdd = false; + for (Iterator it = args.keySet().iterator();it.hasNext();) + { + if ( appendAdd) + { + writer.write( "&"); + } + String key = (String)it.next(); + String value= (String)args.get( key); + if ( value != null) + { + String pair = key+"=" + URLEncoder.encode(value,"utf-8"); + writer.write( pair); + appendAdd = true; + } + else + { + appendAdd = false; + } + + } + } + + private void updateSession( URLConnection connection ) throws IOException + { + + Map cookies = new HashMap(); + String entry = connection.getHeaderField("Set-Cookie"); + if ( entry != null) + { + String[] splitted = Tools.split(entry,';'); + if ( splitted.length > 0) + { + String[] first = Tools.split(splitted[0],'='); + cookies.put(first[0], first[1]); + } + } + String sessionId = (String)cookies.get("JSESSIONID"); + if ( sessionId != null) + { + this.sessionId = sessionId; + } + } + + public boolean hasSession() + { + + return sessionId != null; + } + + public String getInfo() + { + return sessionId; + } + + public void start() throws Exception + { + // TODO Auto-generated method stub + + } + + + public void stop() + { + // TODO Auto-generated method stub + + } + + public long getUpdateIntervall() + { + return 30000; + } + +} diff --git a/src/org/rapla/storage/dbrm/RaplaStorePage.java b/src/org/rapla/storage/dbrm/RaplaStorePage.java new file mode 100644 index 0000000..5d39066 --- /dev/null +++ b/src/org/rapla/storage/dbrm/RaplaStorePage.java @@ -0,0 +1,29 @@ +package org.rapla.storage.dbrm; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.servletpages.RaplaPageGenerator; + +public class RaplaStorePage implements RaplaPageGenerator +{ + + public void generatePage( + ServletContext context, + HttpServletRequest request, + HttpServletResponse response ) throws IOException, ServletException + { + String storeString = request.getParameter("storeString"); + PrintWriter writer = response.getWriter(); + writer.println("
    "); + writer.println(""); + writer.println(""); + writer.println("
    "); + } + +} diff --git a/src/org/rapla/storage/dbrm/RemoteOperator.java b/src/org/rapla/storage/dbrm/RemoteOperator.java new file mode 100644 index 0000000..2dac101 --- /dev/null +++ b/src/org/rapla/storage/dbrm/RemoteOperator.java @@ -0,0 +1,653 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.dbrm; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.util.Command; +import org.rapla.components.util.CommandQueue; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.Container; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.server.RemoteMethod; +import org.rapla.server.RemoteServiceCaller; +import org.rapla.server.RemoteStorage; +import org.rapla.server.RestartServer; +import org.rapla.server.internal.RemoteStorageImpl; +import org.rapla.server.internal.SessionExpiredException; +import org.rapla.storage.IOContext; +import org.rapla.storage.LocalCache; +import org.rapla.storage.RaplaSecurityException; +import org.rapla.storage.UpdateEvent; +import org.rapla.storage.UpdateResult; +import org.rapla.storage.impl.AbstractCachableOperator; +import org.rapla.storage.impl.EntityStore; +import org.rapla.storage.xml.RaplaInput; +import org.rapla.storage.xml.RaplaMainReader; + +/** This operator can be used to modify and access data over the + * network. It needs an server-process providing the StorageService + * (usually this is the default rapla-server). + *

    Sample configuration: +

    +   <remote-storage id="web">
    +   </remote-storate>
    +  
    + * The messaging-client value contains the id of a + * messaging-client-component which handles the + * communication with the server. + * The RemoteOperator provides also the Service {@link RemoteServiceCaller} + * @see org.rapla.server.RemoteStorageCallback + * @see org.rapla.components.rpc.MessagingClient +*/ +public class RemoteOperator + extends + AbstractCachableOperator + implements + RemoteServiceCaller + ,RestartServer +{ + ServerStub serv = new ServerStub(); + String username; + String password; + protected CommandQueue notifyQueue; + private boolean bSessionActive = false; + Connector connector; + private boolean bReservationsFetched; + private Date firstCachedDate = null; + private Date lastCachedDate = null; + private boolean isRestarting; + public RemoteOperator(RaplaContext context, Configuration config) throws RaplaException { + super( context ); + + Container raplaMainContainer = ((Container)context.lookup( Container.ROLE)); + raplaMainContainer.addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, RaplaStorePage.class.getName(), "store", null); + + ((Container)context.lookup( Container.ROLE)).addContainerProvidedComponentInstance(RestartServer.ROLE, this); + ((Container)context.lookup( Container.ROLE)).addContainerProvidedComponentInstance(RemoteServiceCaller.ROLE, this); + + connector = new HTTPConnector(context,config); + } + + public void connect() throws RaplaException { + throw new RaplaException("RemoteOperator doesn't support anonymous connect"); + } + + public void connect(String username,char[] password) throws RaplaException { + this.username = username; + this.password = new String(password); + if (isConnected()) + return; + getLogger().info("Connecting to server and starting login.."); + doConnect(); + try { + String clientVersion= i18n.getString("rapla.version") ; + serv.checkServerVersion( clientVersion); + serv.login(this.username,this.password); + bSessionActive = true; + updateToday(); + getLogger().info("login successfull"); + } catch (RaplaException ex){ + disconnect(); + throw ex; + } + loadData(); + notifyQueue = org.rapla.components.util.CommandQueue.createCommandQueue(); + } + + public void saveData() throws RaplaException { + throw new RaplaException("RemoteOperator doesn't support storing complete cache, yet!"); + } + + /** implementation specific. Should be private */ + public void serverHangup() { + getLogger().warn("Server hangup"); + if (!isRestarting) { + getLogger().error(getI18n().format("error.connection_closed",getConnectionName())); + } + isRestarting = false; + new Thread() { + public void run() { + fireStorageDisconnected(); + } + }.start(); + } + + + public String getConnectionName() { + return connector.getInfo(); + } + + private void doConnect() throws RaplaException { + boolean bFailed = true; + try { + connector.start(); + bFailed = false; + } catch (Exception e) { + throw new RaplaException(i18n.format("error.connect",getConnectionName()),e); + } finally { + if (bFailed) + disconnect(); + } + } + + public boolean isConnected() { + // return connector.hasSession();//messagingClient != null && messagingClient.isRunning(); + return bSessionActive; + } + + public boolean supportsActiveMonitoring() { + return true; + } + + public void refresh() throws RaplaException { + serv.refresh(); + } + public void restartServer() throws RaplaException { + isRestarting = true; + serv.restartServer(); + fireStorageDisconnected(); + + } + + /** disconnect from the server */ + public void disconnect() throws RaplaException { + getLogger().info("Disconnecting from server"); + try { + bSessionActive = false; + if ( notifyQueue != null) + { + notifyQueue.dequeueAll(); // Execute all update Commands. + } + firstCachedDate = null; + lastCachedDate = null; + bReservationsFetched = false; + connector.stop(); + cache.clearAll(); + } catch (Exception e) { + throw new RaplaException("Could not disconnect", e); + } + fireStorageDisconnected(); + } + + private void addToCache(List list, boolean useCache) throws RaplaException { + EntityResolver entityResolver = createEntityResolver( list, useCache ? cache : null ); + synchronized (cache) { + resolveEntities( list.iterator(), entityResolver ); + for( Iterator it = list.iterator();it.hasNext();) { + SimpleEntity entity = (SimpleEntity) it.next(); + cache.put(entity); + } + } + } + + private void loadData() throws RaplaException { + checkConnected(); + cache.clearAll(); + getLogger().debug("Getting Data.."); + // recontextualize Entities + addToCache(serv.getResources(), false ); + getLogger().debug("Data flushed"); + } + + protected void checkConnected() throws RaplaException { + if ( !bSessionActive ) { + if (username == null) { + throw new RaplaException("Need to login first!"); + } else { + throw new RaplaException(i18n.format("error.connection_closed", getConnectionName())); + } + } + } + + // This checks should be done on the server + @Override + protected void addChangedDynamicTypeDependant(UpdateEvent evt,DynamicType type, boolean toRemove) throws RaplaException { + } + + + @Override + protected void checkNoDependencies(Collection entities, Set storeObjects) + { + + } + + protected long getCurrentTime() throws RaplaException { + if ( bSessionActive ) + return serv.getServerTime(); + else + return super.getCurrentTime(); + } + + + public void dispatch(UpdateEvent evt) throws RaplaException { + checkConnected(); + // Create closure + UpdateEvent closure = createClosure(evt ); + check( closure ); + // Store on server + if (getLogger().isDebugEnabled()) { + Iterator it =closure.getStoreObjects().iterator(); + while (it.hasNext()) { + RefEntity entity = (RefEntity)it.next(); + getLogger().debug("dispatching store for: " + entity); + } + it =closure.getRemoveObjects().iterator(); + while (it.hasNext()) { + RefEntity entity = (RefEntity)it.next(); + getLogger().debug("dispatching remove for: " + entity); + } + } + serv.dispatch( closure ); + // Store in cache + UpdateResult result = update( closure, true ); + fireStorageUpdated(result); + } + + public Object createIdentifier(RaplaType raplaType) throws RaplaException { + return serv.createIdentifier(raplaType); + } + + /** we must override this method because we can't store the passwords on the client*/ + public void authenticate(String username,String password) throws RaplaException { + serv.authenticate(username,password); + } + + public boolean canChangePassword() { + try { + return serv.canChangePassword(); + } catch (RaplaException ex) { + return false; + } + } + + public void changePassword(User user,char[] oldPassword,char[] newPassword) throws RaplaException { + try { + serv.changePassword(user.getUsername(),oldPassword,newPassword); + } catch (RaplaSecurityException ex) { + throw new RaplaSecurityException(i18n.getString("error.wrong_password")); + } + } + + private void updateReservations(User user,Date start,Date end) throws RaplaException { + if ( !bReservationsFetched ) { + bReservationsFetched = true; + firstCachedDate = start; + lastCachedDate = end; + addToCache(serv.getReservations(firstCachedDate, lastCachedDate), true ); + return; + } + + if ( firstCachedDate != null) { + if (start == null || start.before(firstCachedDate)) { + addToCache(serv.getReservations( start, firstCachedDate), true ); + firstCachedDate = start; + } + } + if ( lastCachedDate != null) { + if (end == null || end.after(lastCachedDate)) { + addToCache(serv.getReservations( lastCachedDate, end), true ); + lastCachedDate = end; + } + } + } + + public RefEntity resolveId(Object id) throws EntityNotFoundException { + try { + return super.resolveId(id); + } catch (EntityNotFoundException ex) { + try { + List resolved = serv.getEntityRecursive( id ); + addToCache(resolved, true ); + } catch (RaplaException rex) { + throw new EntityNotFoundException("Object for id " + id.toString() + " not found due to " + ex.getMessage()); + } + return super.resolveId(id); + } + } + + public SortedSet getAppointments(User user,Date start,Date end) throws RaplaException { + checkConnected(); + updateReservations( user, start, end ); + return super.getAppointments( user, start, end ); + } + + public List getReservations(User user,Date start,Date end) throws RaplaException { + checkConnected(); + updateReservations( user, start, end ); + return super.getReservations( user, start, end); + } + + private String readResultToString( InputStream input) throws IOException + { + InputStreamReader in = new InputStreamReader( input,"utf-8"); + char[] buf = new char[4096]; + StringBuffer buffer = new StringBuffer(); + while ( true ) + { + int len = in.read(buf); + if ( len == -1) + { + break; + } + buffer.append( buf, 0,len ); + //buf. + } + String result = buffer.toString(); + return result; + } + + public String call( String serviceName, RemoteMethod method, String[] args ) throws RaplaException + { + return serv.call(serviceName,method, (String[])args); + } + + long clientRepositoryVerion = 0; + + public class ServerStub implements RemoteStorage { + + String call( RemoteMethod method,String[] args) throws RaplaException { + return call( null, method, args); + } + + InputStream callInput( RemoteMethod method,String[] args) throws RaplaException { + return callInput( null, method, args); + } + + String call( String service, RemoteMethod method,String[] args) throws RaplaException { + try { + InputStream stream = callInput( service,method,args); + String result = readResultToString( stream); + // System.out.println( result ); + return result; + } catch (IOException ex) { + throw new RaplaException(ex); + } + + } + + InputStream callInput( String service,RemoteMethod method,String[] args) throws RaplaException { + try { + String methodName = method.method(); + Map argMap = createArgumentMap( method, args); + if ( service != null) + { + methodName = service +"/" + methodName; + } + return connector.call( methodName, argMap ); + } catch (SessionExpiredException ex) { + disconnect(); + throw ex; + } catch (IOException ex) { + throw new RaplaException(ex); + } + } + + private Map createArgumentMap( RemoteMethod method, String[] args ) throws RaplaException + { + Map argMap = new HashMap(); + if ( args.length != method.length()) + { + throw new RaplaException("Paramter list don't match Expected " + method.length() +" but was " + args.length); + } + for ( int i=0;i")>=0) + { + } + else + { + RemoteOperator.this.refresh( xml); + } + } + public void notifyUpdate() { + if ( isRestarting) + return; + notifyQueue.enqueue(new UpdateCommand()); + } + + + } + + private void refresh(String xml) throws RaplaException + { + synchronized (getLock()) + { + UpdateEvent evt = RemoteStorageImpl.createUpdateEvent( serviceManager,xml, cache ); + Iterator it = evt.getStoreObjects().iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + + RefEntity cachedVersion = (RefEntity) cache.get(entity.getId()); + // Ignore object if its not newer than the one in cache. + if (cachedVersion != null && cachedVersion.getVersion() >= entity.getVersion()) { + //getLogger().debug("already on client " + entity + " version " + cachedVersion.getVersion()); + it.remove(); + continue; + } + + if (getLogger().isDebugEnabled()) + getLogger().debug(" storing " + entity.getId() + + " version: " + entity.getVersion()); + } + + RemoteOperator.super.resolveEntities + ( + evt.getStoreObjects().iterator() + ,createEntityResolver(evt.getStoreObjects(),cache) + ); + + it = evt.getRemoveObjects().iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + + RefEntity cachedVersion = (RefEntity) cache.get(entity.getId()); + // Ignore object, if its not in cache. + if (cachedVersion == null) { + it.remove(); + continue; + } + if (getLogger().isDebugEnabled()) + getLogger().debug(" removing " + entity.getId() + + " version: " + entity.getVersion()); + } + + RemoteOperator.super.resolveEntities + ( + evt.getRemoveObjects().iterator() + ,createEntityResolver(evt.getStoreObjects(),cache) + ); + + if ( bSessionActive && + ( evt.getRemoveObjects().size() > 0 + || evt.getStoreObjects().size() > 0 ) ) { + getLogger().info("Objects updated!"); + UpdateResult result = update(evt, false); + clientRepositoryVerion = evt.getRepositoryVersion(); + // now we can set the cache as updated + fireStorageUpdated(result); + } + clientRepositoryVerion = evt.getRepositoryVersion(); + } + + } + public void serverDisconnected() { + bSessionActive = false; + } + + //******* End ClientInterface ************* + class UpdateCommand implements Command { + public void execute() { + if ( !bSessionActive ) + return; // We can ignore the update! + try { + serv.refresh(); + } catch (Exception ex) { + getLogger().error(ex.getMessage(),ex); + /* + // #TODO. Do we need do disconnect on every notify error? + try { + disconnect(); + } catch (RaplaException rex) { + getLogger().error(rex.getMessage(),rex); + } + */ + } + } + } + + + + +} + diff --git a/src/org/rapla/storage/dbsql/DBOperator.java b/src/org/rapla/storage/dbsql/DBOperator.java new file mode 100644 index 0000000..1d91dad --- /dev/null +++ b/src/org/rapla/storage/dbsql/DBOperator.java @@ -0,0 +1,504 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbsql; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.Driver; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Iterator; +import java.util.Properties; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.sql.DataSource; + +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaDefaultContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.internal.ConfigTools; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.IOContext; +import org.rapla.storage.UpdateEvent; +import org.rapla.storage.UpdateResult; +import org.rapla.storage.impl.AbstractCachableOperator; +import org.rapla.storage.impl.EntityStore; +import org.rapla.storage.xml.RaplaInput; + +/** This Operator is used to store the data in a SQL-DBMS.*/ +public class DBOperator extends AbstractCachableOperator +implements +Disposable +{ + private String driverClassname; + protected String datasourceName; + protected String user; + protected String password; + protected String dbURL; + protected Driver dbDriver; + protected boolean isConnected; + Properties dbProperties = new Properties(); + boolean bSupportsTransactions = false; + boolean hsqldb = false; + private boolean oldResourceTableName; + private boolean newResourceSchema =false; + + public DBOperator(RaplaContext context, Configuration config) throws RaplaException { + super( context ); + datasourceName = config.getChild("datasource").getValue(null); + // dont use datasource (we have to configure a driver ) + if ( datasourceName == null) + { + try + { + driverClassname = config.getChild("driver").getValue(); + dbURL = ConfigTools.resolveContext( config.getChild("url").getValue(), serviceManager); + getLogger().info("Data:" + dbURL); + } + catch (ConfigurationException e) + { + throw new RaplaException( e ); + } + dbProperties.setProperty("user", config.getChild("user").getValue("") ); + dbProperties.setProperty("password", config.getChild("password").getValue("") ); + hsqldb = config.getChild("hsqldb-shutdown").getValueAsBoolean( false ); + try + { + dbDriver = (Driver) getClass().getClassLoader().loadClass(driverClassname).newInstance(); + } + catch (ClassNotFoundException e) + { + throw new RaplaException("DB-Driver not found: " + driverClassname + + "\nCheck classpath!"); + } + catch (Exception e) + { + throw new RaplaException("Could not instantiate DB-Driver: " + driverClassname, e); + } + } + } + + public boolean supportsActiveMonitoring() { + return false; + } + + public Connection createConnection() throws RaplaException { + try { + Connection connection; + //datasource lookup + if ( datasourceName != null) + { + Context cxt = new InitialContext(); + DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/" + datasourceName ); + if ( ds == null ) + { + throw new RaplaDBException("Datasource not found"); + } + connection = ds.getConnection(); + } + // or driver initialization + else + { + connection = dbDriver.connect(dbURL, dbProperties); + if (connection == null) + { + throw new RaplaDBException("No driver found for: " + dbURL + "\nCheck url!"); + } + } + + bSupportsTransactions = connection.getMetaData().supportsTransactions(); + if (bSupportsTransactions) + { + connection.setAutoCommit( false ); + } + else + { + getLogger().warn("No Transaction support"); + } + return connection; + } catch (Throwable ex) { + if ( ex instanceof RaplaDBException) + { + throw (RaplaDBException) ex; + } + ex.printStackTrace(); + throw new RaplaDBException("DB-Connection aborted",ex); + } + } + + public void connect() throws RaplaException { + if (isConnected()) + { + return; + } + loadData(); + isConnected = true; + } + + public void connect(String username,char[] password) throws RaplaException { + connect(); + } + + public boolean isConnected() { + return isConnected; + } + + final public void refresh() throws RaplaException { + getLogger().warn("Incremental refreshs are not supported"); + } + + public void refreshFull() throws RaplaException { + try + { + loadData(); + } + catch (Exception ex) + { + cache.clearAll(); + disconnect(); + if (ex instanceof RaplaException) + { + throw (RaplaException)ex; + } + else + { + throw new RaplaException(ex); + } + } + } + + public void forceDisconnect() { + try + { + disconnect(); + } + catch (Exception ex) + { + getLogger().error("Error during disconnect ", ex); + } + } + + public void disconnect() throws RaplaException + { + cache.clearAll(); + idTable.setCache( cache ); + // HSQLDB Special + if ( hsqldb ) + { + String sql ="SHUTDOWN COMPACT"; + try + { + Connection connection = createConnection(); + Statement statement = connection.createStatement(); + statement.executeQuery(sql); + } + catch (SQLException ex) + { + throw new RaplaException( ex); + } + } + isConnected = false; + fireStorageDisconnected(); + } + + public void dispose() + { + forceDisconnect(); + } + + final protected void loadData() throws RaplaException { + Connection connection = createConnection(); + try { + // Upgrade db if neccessary + { + ResultSet categoryTable = connection.prepareStatement("select * from CATEGORY" ).executeQuery(); + if ( categoryTable.getMetaData().getColumnCount() == 4) + { + getLogger().warn("Patching Database for table CATEGORY"); + try { + connection.prepareStatement("ALTER TABLE CATEGORY ADD COLUMN DEFINITION TEXT").execute(); + connection.commit(); + } catch (SQLException ex ) { + getLogger().warn("Category patch failed. Trying HDBSQL Syntax"); + connection.prepareStatement("ALTER TABLE CATEGORY ADD COLUMN DEFINITION VARCHAR").execute(); + connection.commit(); + } + getLogger().warn("CATEGORY patched!"); + } + if ( categoryTable.getMetaData().getColumnCount() == 5) + { + getLogger().warn("Patching Database for table CATEGORY (Category Order)"); + connection.prepareStatement("ALTER TABLE CATEGORY ADD COLUMN PARENT_ORDER INTEGER").execute(); + getLogger().warn("CATEGORY patched!"); + } + ResultSet eventTable = connection.prepareStatement("select * from EVENT" ).executeQuery(); + if ( eventTable.getMetaData().getColumnCount() == 5) { + getLogger().warn("Patching Database for table EVENT"); + connection.prepareStatement("ALTER TABLE EVENT ADD COLUMN LAST_CHANGED_BY INTEGER").execute(); + connection.commit(); + getLogger().warn("EVENT patched"); + } + checkForOldResourceTable( connection ); + + } + ResultSet set = connection.prepareStatement("select * from DYNAMIC_TYPE").executeQuery(); + if ( !set.next() ) { + getLogger().warn("No content in database! Creating new database"); + CachableStorageOperator sourceOperator = ( CachableStorageOperator) serviceManager.lookup(CachableStorageOperator.ROLE + "/file"); + sourceOperator.connect(); + setCache( sourceOperator.getCache()); + saveData(); + getLogger().warn("Database created!"); + } else { + cache.clearAll(); + idTable.setCache(cache); + readEverythingIntoCache( connection ); + idTable.setCache(cache); + + if ( getLogger().isDebugEnabled()) + getLogger().debug("Entities contextualized"); + + if ( getLogger().isDebugEnabled()) + getLogger().debug("All ConfigurationReferences resolved"); + } + } + catch (RaplaException ex) + { + throw ex; + } + catch (Exception ex) + { + throw new RaplaException( ex); + } + finally + { + close ( connection ); + } + } + + private void checkForOldResourceTable( Connection connection ) throws SQLException + { + try + { + ResultSet oldResourceTable = connection.getMetaData().getTables(null, null,"resource" , null); + while ( oldResourceTable.next()) + { + oldResourceTableName = true; + } + // If there is also a new Table use the new Table + ResultSet newResourceTable = connection.getMetaData().getTables(null, null,"rapla_resource" , null); + while ( newResourceTable.next()) + { + oldResourceTableName = false; + } + } + catch (SQLException ex) + { + oldResourceTableName = false; + getLogger().warn("Can't determine table schema for table, assuming new schema. Please upgrade database schema if neccessary."); + } + if ( oldResourceTableName ) + { + getLogger().warn("Using old resource table name: resource. Please rename to: rapla_resource"); + } + newResourceSchema = false; + if ( !oldResourceTableName) + { + try + { + ResultSet lastChangedColumn = connection.getMetaData().getColumns(null, null,"rapla_resource" , "creation_time"); + while ( true) + { + final boolean next = lastChangedColumn.next(); + if(!next) + { + break; + } + newResourceSchema = true; + } + } + catch (SQLException ex) + { + newResourceSchema = true; + getLogger().warn("Can't determine table schema for table, assuming new schema. Please upgrade database schema if neccessary."); + } + if ( !newResourceSchema ) + { + getLogger().warn("Using old resource table schema without timestamp. Please upgrade to new schema."); + } + } + } + public Object createIdentifier(RaplaType raplaType) throws RaplaException { + return idTable.createId(raplaType); + } + + public void dispatch(UpdateEvent evt) throws RaplaException { + evt = createClosure( evt ); + check(evt); + Connection connection = createConnection(); + try { + executeEvent(connection,evt); + if (bSupportsTransactions) { + getLogger().debug("Commiting"); + connection.commit(); + } + } catch (Exception ex) { + try { + if (bSupportsTransactions) { + connection.rollback(); + getLogger().error("Doing rollback"); + throw new RaplaDBException(getI18n().getString("error.rollback"),ex); + } else { + String message = getI18n().getString("error.no_rollback"); + getLogger().fatalError(message); + forceDisconnect(); + throw new RaplaDBException(message,ex); + } + } catch (SQLException sqlEx) { + String message = "Unrecoverable error while storing"; + getLogger().fatalError(message, sqlEx); + forceDisconnect(); + throw new RaplaDBException(message,sqlEx); + } + } finally { + close( connection ); + } + UpdateResult result = super.update(evt, true); + fireStorageUpdated(result); + + } + + /** + * @param evt + * @throws RaplaException + */ + protected void executeEvent(Connection connection,UpdateEvent evt) throws RaplaException, SQLException { + // create the writer + RaplaSQL raplaSQL = new RaplaSQL(createOutputContext(), oldResourceTableName, newResourceSchema); + // execute updates + Iterator it = evt.getStoreObjects().iterator(); + while (it.hasNext()) { + RefEntity entity = (RefEntity) it.next(); + raplaSQL.store( connection, entity); + } + + // execute removes + it = evt.getRemoveObjects().iterator(); + while (it.hasNext()) { + Object id = ((RefEntity) it.next()).getId(); + RefEntity entity = (RefEntity)cache.get(id); + if (entity != null) + raplaSQL.remove( connection, entity); + } + + } + + public void removeAll() throws RaplaException { + Connection connection = createConnection(); + try { + checkForOldResourceTable( connection ); + RaplaSQL raplaSQL = new RaplaSQL(createOutputContext(), oldResourceTableName, newResourceSchema); + if (!isConnected()) + createConnection(); + + raplaSQL.removeAll( connection ); + connection.commit(); + // do something here + getLogger().info("DB cleared"); + } + catch (SQLException ex) + { + throw new RaplaException(ex); + } + finally + { + close( connection ); + } + + } + public void saveData() throws RaplaException { + Connection connection = createConnection(); + try { + checkForOldResourceTable( connection ); + RaplaSQL raplaSQL = new RaplaSQL(createOutputContext(), oldResourceTableName, newResourceSchema); + getLogger().info("Creation of DB started"); + if (!isConnected()) + createConnection(); + + raplaSQL.removeAll( connection ); + raplaSQL.createAll( connection ); + connection.commit(); + // do something here + getLogger().info("DB Creation complete"); + } + catch (SQLException ex) + { + throw new RaplaException(ex); + } + finally + { + close( connection ); + } + } + + static private void close(Connection connection) throws RaplaException + { + try + { + connection.close(); + } + catch (SQLException e) + { + throw new RaplaException("Can't close connection to database ", e); + } + } + + protected boolean readEverythingIntoCache(Connection connection) throws RaplaException, IOException, SQLException { + EntityStore entityStore = new EntityStore(null, cache.getSuperCategory()); + + RaplaSQL raplaSQL = new RaplaSQL(createInputContext(entityStore), oldResourceTableName, newResourceSchema); + raplaSQL.loadAll( connection ); + resolveEntities( entityStore.getList().iterator(), entityStore ); + cache.putAll( entityStore.getList()); + for (Iterator it = cache.getIterator(User.TYPE);it.hasNext();) + { + RefEntity user = ((RefEntity)it.next()); + String password = entityStore.getPassword( user.getId()); + cache.putPassword(user.getId(), password); + } + return false; + } + + protected RaplaDefaultContext createInputContext( EntityStore store) throws RaplaException { + RaplaDefaultContext inputContext = new IOContext().createInputContext(serviceManager, store,idTable); + RaplaInput xmlAdapter = new RaplaInput(getLogger().getChildLogger("reading")); + inputContext.put(RaplaInput.class.getName(),xmlAdapter); + return inputContext; + + } + + protected RaplaDefaultContext createOutputContext() throws RaplaException { + RaplaDefaultContext outputContext = new IOContext().createOutputContext(serviceManager, cache,true,false); + return outputContext; + + } + +} diff --git a/src/org/rapla/storage/dbsql/EntityStorage.java b/src/org/rapla/storage/dbsql/EntityStorage.java new file mode 100644 index 0000000..62adbbb --- /dev/null +++ b/src/org/rapla/storage/dbsql/EntityStorage.java @@ -0,0 +1,366 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbsql; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; +import java.util.Random; +import java.util.StringTokenizer; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaType; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.storage.LocalCache; +import org.rapla.storage.impl.EntityStore; +import org.rapla.storage.xml.PreferenceReader; +import org.rapla.storage.xml.PreferenceWriter; +import org.rapla.storage.xml.RaplaInput; +import org.rapla.storage.xml.RaplaXMLReader; +import org.rapla.storage.xml.RaplaXMLWriter; + +abstract class EntityStorage implements Storage { + Random random = new Random(); + + String insertSql; + String updateSql; + String deleteSql; + String selectSql; + String deleteAllSql; + String searchForIdSql; + + RaplaContext sm; + LocalCache cache; + private EntityStore entityStore; + private RaplaLocale raplaLocale; + + Collection subStores = new ArrayList(); + Connection con; + int lastParameterIndex; /** first paramter is 1 */ + final String tableName; + + Logger logger; + + protected EntityStorage( RaplaContext context, String table,String[] entries) throws RaplaException { + this.sm = context; + if ( context.has( EntityStore.class.getName())) + { + this.entityStore = (EntityStore) context.lookup( EntityStore.class.getName()); + } + if ( context.has( LocalCache.class.getName())) + { + this.cache = (LocalCache) context.lookup( LocalCache.class.getName()); + } + this.raplaLocale = (RaplaLocale) sm.lookup(RaplaLocale.ROLE); + logger = (Logger) context.lookup( Logger.class.getName()); + lastParameterIndex = entries.length; + tableName = table; + createSQL(table,entries); + if (getLogger().isDebugEnabled()) { + getLogger().debug(insertSql); + getLogger().debug(updateSql); + getLogger().debug(deleteSql); + getLogger().debug(selectSql); + getLogger().debug(deleteAllSql); + } + } + + protected Logger getLogger() { + return logger; + } + + + protected void createSQL(String table,String[] entries) { + String idString = entries[0]; + selectSql = "select " + getEntryList(entries) + " from " + table ; + deleteSql = "delete from " + table + " where " + idString + "= ?"; + insertSql = "insert into " + table + " (" + getEntryList(entries) + ") values (" + getMarkerList(entries.length) + ")"; + updateSql = "update " + table + " set " + getUpdateList(entries) + " where " + idString + "= ?"; + deleteAllSql = "delete from " + table; + searchForIdSql = "select id from " + table + " where id = ?"; + } + + protected void addSubStorage(Storage subStore) { + subStores.add(subStore); + } + + public void setConnection(Connection con) { + this.con= con; + Iterator it = subStores.iterator(); + while (it.hasNext()) { + ((Storage) it.next()).setConnection(con); + } + } + + public Locale getLocale() { + return raplaLocale.getLocale(); + } + public java.sql.Date getSQLDate(Calendar cal) { + return new java.sql.Date(cal.getTime().getTime()); + } + + public java.sql.Time getSQLTime(Calendar cal) { + return new java.sql.Time(cal.getTime().getTime()); + } + + private String getEntryList(String[] entries) { + StringBuffer buf = new StringBuffer(); + for (int i=0;i ordering2) + { + return 1; + } + RefEntity e1 = (RefEntity) o1; + RefEntity e2 = (RefEntity) o2; + if (e1.hashCode() > e2.hashCode()) + { + return -1; + } + else + { + return 1; + } + } + + } + ); + + public CategoryStorage(RaplaContext context) throws RaplaException { + super(context,Category.TYPE, "CATEGORY",new String[] {"ID","PARENT_ID","CATEGORY_KEY","LABEL","DEFINITION", "PARENT_ORDER"}); + } + + protected void write(PreparedStatement stmt,RefEntity entity) throws SQLException, RaplaException { + Category root = getSuperCategory(); + if ( entity.equals( root )) + return; + Category category = (Category) entity; + String name = category.getName( getLocale() ); + int id = getId(entity); + int parentId = getId((RefEntity)category.getParent()); + if ( getLogger().isDebugEnabled()) + getLogger().debug("Inserting Category " + name); + stmt.setInt(1, id); + if ( root.equals( category.getParent())) + { + stmt.setObject(2, null, Types.INTEGER); + } + else + { + stmt.setInt(2, parentId); + } + int order = getOrder( category); + String xml = getXML( category ); + stmt.setString(3, category.getKey()); + stmt.setString(4, name ); + stmt.setString(5, xml); + stmt.setInt( 6, order); + stmt.executeUpdate(); + } + + + + private int getOrder( Category category ) + { + Category parent = category.getParent(); + if ( parent == null) + { + return 0; + } + Category[] childs = parent.getCategories();; + for ( int i=0;i 10 ) + { + category = ((CategoryReader)processXML( Category.TYPE, xml )).getCurrentCategory(); + //cache.remove( category ); + category.setId( id ); + } + else + { + // for compatibility with version prior to 1.0rc1 + category = new CategoryImpl(); + category.setId( id); + category.setKey( key ); + category.getName().setName( getLocale().getLanguage(), name); + } + + put( category ); + + int parentIdInt = rset.getInt(2); + orderMap.put( category, new Integer( order)); + if ( !rset.wasNull() ) + { + categoriesWithoutParent.put( category, new SimpleIdentifier(Category.TYPE, parentIdInt)); + } + else + { + categoriesWithoutParent.put( category, null ); + } + } + + public void loadAll() throws RaplaException, SQLException { + categoriesWithoutParent.clear(); + super.loadAll(); + // then we rebuild the hirarchy + Iterator it = categoriesWithoutParent.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = (Map.Entry)it.next(); + Object parentId = entry.getValue(); + Category category = (Category) entry.getKey(); + Category parent; + Assert.notNull( category ); + if ( parentId != null) { + parent = (Category) resolve( parentId ); + Assert.notNull( parent ); + } else { + parent = getSuperCategory(); + Assert.notNull( parent ); + } + + parent.addCategory( category ); + } + } +} + +class AllocatableStorage extends RaplaTypeStorage { + Map classificationMap = new HashMap(); + Map allocatableMap = new HashMap(); + AttributeValueStorage resourceAttributeStorage; + PermissionStorage permissionStorage; + boolean newResourceSchema; + + public AllocatableStorage(RaplaContext context, boolean oldResourceTable, boolean newResourceSchema ) throws RaplaException { + super(context,Allocatable.TYPE + , oldResourceTable ? + "RESOURCE" + : "RAPLA_RESOURCE" + , newResourceSchema ? + new String [] + {"ID","TYPE_KEY","IGNORE_CONFLICTS","OWNER_ID","CREATION_TIME","LAST_CHANGED","LAST_CHANGED_BY"} + : new String [] + {"ID","TYPE_KEY","IS_PERSON","IGNORE_CONFLICTS"}); + resourceAttributeStorage = new AttributeValueStorage(context,"RESOURCE_ATTRIBUTE_VALUE", "RESOURCE_ID",classificationMap); + permissionStorage = new PermissionStorage( context, allocatableMap); + this.newResourceSchema = newResourceSchema; + addSubStorage(resourceAttributeStorage); + addSubStorage(permissionStorage ); + } + + protected void write(PreparedStatement stmt,RefEntity entity) throws SQLException,RaplaException { + AllocatableImpl allocatable = (AllocatableImpl) entity; + if ( getLogger().isDebugEnabled()) + getLogger().debug("Inserting Allocatable " + allocatable.getName(getLocale())); + int id = getId( entity ); + String typeKey = allocatable.getClassification().getType().getElementKey(); + stmt.setInt(1, id ); + stmt.setString(2, typeKey ); + if (newResourceSchema) + { + stmt.setInt(3, allocatable.isHoldBackConflicts()? 1:0); + org.rapla.entities.Timestamp timestamp = allocatable; + Date creationTime = timestamp.getCreateTime(); + Date lastModified = timestamp.getLastChangeTime(); + final RefEntity owner = (RefEntity) allocatable.getOwner(); + if ( owner != null) + { + int userId = getId( owner ); + stmt.setInt(4, userId ); + } + else + { + stmt.setObject(4, null, Types.INTEGER); + } + if ( creationTime != null) + { + stmt.setTimestamp( 5, new java.sql.Timestamp( creationTime.getTime() )); + } + else + { + stmt.setObject(5, null, Types.TIMESTAMP); + } + if ( lastModified != null) + { + stmt.setTimestamp( 6, new java.sql.Timestamp( lastModified.getTime() )); + } + else + { + stmt.setObject(6, null, Types.TIMESTAMP); + } + User lastChangedBy = timestamp.getLastChangedBy(); + if ( lastChangedBy != null) { + int lastChangedById = getId( (RefEntity) lastChangedBy ); + stmt.setInt( 7, lastChangedById); + } else { + stmt.setObject(7, null, Types.INTEGER); + } + } + else + { + stmt.setInt(3, allocatable.isPerson()? 1:0); + stmt.setInt(4, allocatable.isHoldBackConflicts()? 1:0); + + } + + stmt.executeUpdate(); + } + + protected void load(ResultSet rset) throws SQLException { + int idInt = rset.getInt(1); + String typeKey = rset.getString(2); + boolean ignoreConflicts = rset.getInt( 3 ) == 1; + + final Date createDate; + final Date lastChanged; + + if ( newResourceSchema) + { + java.sql.Timestamp creationTime = rset.getTimestamp( 5 ); + java.sql.Timestamp lastModified = rset.getTimestamp( 6 ); + createDate = creationTime != null ? new Date( creationTime.getTime()) : null; + lastChanged = lastModified != null ? new Date( lastModified.getTime()) : null; + } + else + { + createDate = null; + lastChanged = null; + } + AllocatableImpl allocatable = new AllocatableImpl(createDate, lastChanged); + allocatable.setId( new SimpleIdentifier( allocatable.getRaplaType() , idInt)); + allocatable.setHoldBackConflicts( ignoreConflicts ); + DynamicType type = getDynamicType(typeKey ); + if ( type == null) + { + getLogger().error("Allocatable with id " + idInt + " has an unknown type " + typeKey + ". Try ignoring it"); + return; + } + if ( newResourceSchema) + { + int userInt = rset.getInt( 4 ); + if ( !rset.wasNull()) { + User user = (User)get( new SimpleIdentifier(User.TYPE, userInt)); + allocatable.setOwner( user ); + } + int lastModfiedByIdInt = rset.getInt( 7); + if ( !rset.wasNull()) { + User lastModifiedBy = (User)get( new SimpleIdentifier(User.TYPE, lastModfiedByIdInt)); + if ( lastModifiedBy != null) + { + allocatable.setLastChangedBy( lastModifiedBy ); + } + + } + } + Classification classification = type.newClassification(); + allocatable.setClassification( classification ); + classificationMap.put( new Integer(idInt), classification ); + allocatableMap.put( new Integer(idInt), allocatable); + put( allocatable ); + } + + + + public void loadAll() throws RaplaException, SQLException { + classificationMap.clear(); + super.loadAll(); + } +} + +class ReservationStorage extends RaplaTypeStorage { + Map classificationMap = new HashMap(); + Map reservationMap = new HashMap(); + AttributeValueStorage attributeValueStorage; + public ReservationStorage(RaplaContext context) throws RaplaException { + super(context,Reservation.TYPE, "EVENT",new String [] {"ID","TYPE_KEY","OWNER_ID","CREATION_TIME","LAST_CHANGED","LAST_CHANGED_BY"}); + attributeValueStorage = new AttributeValueStorage(context,"EVENT_ATTRIBUTE_VALUE","EVENT_ID", classificationMap); + addSubStorage(attributeValueStorage); + } + + protected void write(PreparedStatement stmt,RefEntity entity) throws SQLException,RaplaException { + Reservation event = (Reservation) entity; + if ( getLogger().isDebugEnabled()) + getLogger().debug("Storing Reservation " + event.getName(getLocale())); + int id = getId( entity ); + String typeKey = event.getClassification().getType().getElementKey(); + int userId = getId( (RefEntity) event.getOwner() ); + stmt.setInt(1, id ); + stmt.setString(2, typeKey ); + stmt.setInt(3, userId ); + org.rapla.entities.Timestamp timestamp = event; + Date creationTime = timestamp.getCreateTime(); + Date lastModified = timestamp.getLastChangeTime(); + if ( creationTime != null) + { + stmt.setTimestamp( 4, new java.sql.Timestamp( creationTime.getTime() )); + } + else + { + stmt.setObject(4, null, Types.TIMESTAMP); + } + if ( lastModified != null) + { + stmt.setTimestamp( 5, new java.sql.Timestamp( lastModified.getTime() )); + } + else + { + stmt.setObject(5, null, Types.TIMESTAMP); + } + User lastChangedBy = timestamp.getLastChangedBy(); + if ( lastChangedBy != null) { + int lastChangedById = getId( (RefEntity) lastChangedBy ); + stmt.setInt( 6, lastChangedById); + } else { + stmt.setObject(6, null, Types.INTEGER); + } + stmt.executeUpdate(); + } + + protected void load(ResultSet rset) throws SQLException { + int idInt = rset.getInt(1); + String typeKey = rset.getString(2); + int userInt = rset.getInt(3); + java.sql.Timestamp creationTime = rset.getTimestamp( 4 ); + java.sql.Timestamp lastModified = rset.getTimestamp( 5 ); + final Date createDate = creationTime != null ? new Date( creationTime.getTime()) : null; + final Date lastChanged = lastModified != null ? new Date( lastModified.getTime()) : null; + ReservationImpl event = new ReservationImpl(createDate, lastChanged); + event.setId( new SimpleIdentifier(Reservation.TYPE, idInt)); + DynamicType type = getDynamicType(typeKey ); + User user = (User)get( new SimpleIdentifier(User.TYPE, userInt)); + if ( user == null || type == null) + { + getLogger().warn("Reservation with id " + idInt + " has no type or owner. It will be ignored"); + return; + } + event.setOwner( user ); + int lastModfiedByIdInt = rset.getInt( 6); + if ( !rset.wasNull()) { + User lastModifiedBy = (User)get( new SimpleIdentifier(User.TYPE, lastModfiedByIdInt)); + if ( lastModifiedBy != null) + { + event.setLastChangedBy( lastModifiedBy ); + } + } + + Classification classification = type.newClassification(); + event.setClassification( classification ); + classificationMap.put( new Integer(idInt), classification ); + reservationMap.put( new Integer(idInt), event ); + put( event ); + } + + public void loadAll() throws RaplaException, SQLException { + classificationMap.clear(); + super.loadAll(); + } +} + +/** This class should only be used within the ResourceStorage class*/ +class AttributeValueStorage extends EntityStorage { + Map classificationMap; + final String foreignKeyName; + public AttributeValueStorage(RaplaContext context,String tablename, String foreignKeyName, Map classificationMap) throws RaplaException { + // FIXME: DB field with name 'VALUE' is not allowed in MS-Access. + // But rename of field makes old versions incompatible + super(context, tablename, new String[]{foreignKeyName, "ATTRIBUTE_KEY", "VALUE"}); + this.foreignKeyName = foreignKeyName; + this.classificationMap = classificationMap; + } + + protected void write(PreparedStatement stmt,RefEntity classifiable) throws EntityNotFoundException, SQLException { + int id = getId(classifiable); + Classification classification = ((Classifiable) classifiable).getClassification();; + Attribute[] attributes = classification.getAttributes(); + for (int i=0;i= 0) { + stmt.setInt(6, number); + } else { + stmt.setObject(6, null, Types.INTEGER); + } + Date repeatingEnd = repeating.getEnd(); + if ( repeatingEnd != null) { + stmt.setObject(7, new Timestamp( repeatingEnd.getTime())); + } else + { + stmt.setObject(7, null, Types.TIMESTAMP); + } + int interval = repeating.getInterval(); + stmt.setInt(8, interval); + } + stmt.executeUpdate(); + } + + protected void load(ResultSet rset) throws SQLException, EntityNotFoundException { + int idInt = rset.getInt(1); + int parentId = rset.getInt( 2 ); + Reservation event; + try { + event = (Reservation) resolve( new SimpleIdentifier( Reservation.TYPE, parentId)); + } + catch ( EntityNotFoundException ex) + { + getLogger().warn("Could not find reservation object with id "+ parentId + " for appointment with id " + idInt ); + return; + } + Date start = new Date(rset.getTimestamp(3).getTime()); + Date end = new Date(rset.getTimestamp(4).getTime()); + boolean wholeDayAppointment = start.getTime() == DateTools.cutDate( start.getTime()) && end.getTime() == DateTools.cutDate( end.getTime()); + AppointmentImpl appointment = new AppointmentImpl(start, end); + appointment.setId( new SimpleIdentifier(Appointment.TYPE, idInt)); + appointment.setWholeDays( wholeDayAppointment); + event.addAppointment( appointment ); + String repeatingType = rset.getString( 5 ); + if ( !rset.wasNull() ) { + appointment.setRepeatingEnabled( true ); + Repeating repeating = appointment.getRepeating(); + repeating.setType( RepeatingType.findForString( repeatingType ) ); + + java.sql.Timestamp repeatingEnd = rset.getTimestamp( 7 ); + if ( !rset.wasNull() ) { + repeating.setEnd( new Date(repeatingEnd.getTime())); + } else { + int number = rset.getInt( 6); + if ( !rset.wasNull()) { + repeating.setNumber( number); + } else { + repeating.setEnd( null ); + } + } + + int interval = rset.getInt( 8); + if ( !rset.wasNull()) + repeating.setInterval( interval); + } + put( appointment ); + } +} + + +class AllocationStorage extends EntityStorage { + + public AllocationStorage(RaplaContext context) throws RaplaException { + super(context,"ALLOCATION",new String [] {"APPOINTMENT_ID", "RESOURCE_ID"}); + } + + protected void write(PreparedStatement stmt, RefEntity entity) throws SQLException, RaplaException { + int appointmentId = getId( entity); + Appointment appointment = (Appointment) entity; + Reservation event = appointment.getReservation(); + Allocatable[] allocatables = event.getAllocatables(); + for (int j=0;j newAppointments.length ) { + event.setRestriction( allocatable, newAppointments ); + } else { + event.setRestriction( allocatable, new Appointment[] {} ); + } + } + + public void delete( RefEntity entity) throws SQLException { + int appointmentId = getId( entity ) ; + executeBatchedStatement(con, "DELETE FROM " + tableName + " WHERE APPOINTMENT_ID = " + appointmentId); + } + + + } + +class AppointmentExceptionStorage extends EntityStorage { + public AppointmentExceptionStorage(RaplaContext context) throws RaplaException { + super(context,"APPOINTMENT_EXCEPTION",new String [] {"APPOINTMENT_ID","EXCEPTION_DATE"}); + } + + + protected void write(PreparedStatement stmt, RefEntity entity) throws SQLException, RaplaException { + int appointmentId = getId( entity); + Appointment appointment = (Appointment) entity; + Repeating repeating = appointment.getRepeating(); + if ( repeating == null) { + return; + } + Date[] exceptions = repeating.getExceptions(); + for ( int i=0;i< exceptions.length;i++) { + java.sql.Timestamp exception = new java.sql.Timestamp( exceptions[i].getTime()); + stmt.setInt( 1, appointmentId ); + stmt.setTimestamp( 2, exception ); + stmt.executeUpdate(); + } + } + + protected void load(ResultSet rset) throws SQLException, RaplaException { + int appointmentId = rset.getInt( 1); + Appointment appointment; + try { + appointment = (Appointment)resolve( new SimpleIdentifier( Appointment.TYPE,appointmentId)); + } + catch ( EntityNotFoundException ex) + { + getLogger().warn("Could not find appointment with id "+ appointmentId + " for the specified exception. Ignoring." ); + return; + } + + Repeating repeating = appointment.getRepeating(); + if ( repeating != null) { + Date date = new Date( rset.getTimestamp( 2 ).getTime()); + repeating.addException( date ); + } + } + + + + public void delete( RefEntity entity) throws SQLException { + int appointmentId = getId( entity); + executeBatchedStatement(con, "DELETE FROM " + tableName + " WHERE APPOINTMENT_ID = " + appointmentId); + } + +} + +class DynamicTypeStorage extends RaplaTypeStorage { + + public DynamicTypeStorage(RaplaContext context) throws RaplaException { + super(context, DynamicType.TYPE,"DYNAMIC_TYPE", + new String [] {"ID","TYPE_KEY","DEFINITION"}); + } + + protected void write(PreparedStatement stmt,RefEntity entity) throws SQLException, RaplaException { + stmt.setInt(1,getId(entity)); + DynamicType type = (DynamicType) entity; + stmt.setString(2, type.getElementKey()); + stmt.setString(3, getXML( type) ); + stmt.executeUpdate(); + } + + protected void load(ResultSet rset) throws SQLException,RaplaException { + String xml = getString(rset,3); + processXML( DynamicType.TYPE, xml ); + } + +} + + +class PreferenceStorage extends RaplaTypeStorage { + + public PreferenceStorage(RaplaContext context) throws RaplaException { + super(context,Preferences.TYPE,"PREFERENCE", + new String [] {"USER_ID","ROLE","STRING_VALUE","XML_VALUE"}); + } + + protected void write(PreparedStatement stmt, RefEntity entity) throws SQLException, RaplaException { + PreferencesImpl preferences = (PreferencesImpl) entity; + User user = preferences.getOwner(); + if ( user == null) { + stmt.setObject(1, null, Types.INTEGER); + } else { + stmt.setInt(1,getId( (RefEntity) user)); + } + Iterator it = preferences.getPreferenceEntries(); + while (it.hasNext()) { + String role = (String) it.next(); + Object entry = preferences.getEntry(role); + stmt.setString( 2, role); + if ( entry instanceof String) { + stmt.setString( 3, (String) entry); + stmt.setString( 4, null); + } else { + //System.out.println("Role " + role + " CHILDREN " + conf.getChildren().length); + String xml = getXML( (RaplaObject)entry); + stmt.setString( 3, null); + stmt.setString( 4, xml); + } + stmt.executeUpdate(); + } + } + + public void save(RefEntity entity) throws SQLException,RaplaException { + delete( entity ); + insert( entity ); + } + + protected void load(ResultSet rset) throws SQLException, RaplaException { + //findPreferences + //check if value set + // yes read value + // no read xml + + int userIdAsInt = rset.getInt(1); + User owner = null; + Object preferenceId; + if ( !rset.wasNull() ){ + Object userId = new SimpleIdentifier( User.TYPE, userIdAsInt ); + owner = (User) get( userId ); + preferenceId = new SimpleIdentifier( Preferences.TYPE, userIdAsInt ); + } else { + preferenceId = new SimpleIdentifier( Preferences.TYPE, 0 ); + } + PreferencesImpl preferences = (PreferencesImpl) get( preferenceId ); + if ( preferences == null) { + preferences = new PreferencesImpl(); + preferences.setId(preferenceId); + preferences.setOwner(owner); + put( preferences ); + } + String configRole = getString( rset, 2); + String value = rset.getString( 3 ); + if ( !rset.wasNull()) { + preferences.putEntry(configRole, value); + } else { + String xml = rset.getString( 4 ); + + PreferenceReader contentHandler = (PreferenceReader) processXML( Preferences.TYPE, xml ); + try { + RaplaObject type = contentHandler.getChildType(); + preferences.putEntry(configRole, type); + } catch (SAXException ex) { + throw new RaplaException (ex); + } + } + } + + + + public void delete( RefEntity entity) throws SQLException { + PreferencesImpl preferences = (PreferencesImpl) entity; + User user = preferences.getOwner(); + if ( user != null) { + int userId = getId( (RefEntity) user ) ; + executeBatchedStatement(con, "DELETE FROM " + tableName + " WHERE USER_ID = " + userId); + } else { + executeBatchedStatement(con, "DELETE FROM " + tableName + " WHERE USER_ID = null"); + } + } + + } + +class UserStorage extends RaplaTypeStorage { + UserGroupStorage groupStorage; + public UserStorage(RaplaContext context) throws RaplaException { + super( context,User.TYPE, "RAPLA_USER", + new String [] {"ID","USERNAME","PASSWORD","NAME","EMAIL","ISADMIN"}); + groupStorage = new UserGroupStorage( context ); + addSubStorage( groupStorage ); + } + + protected void write(PreparedStatement stmt,RefEntity entity) throws SQLException, RaplaException { + User user = (User) entity; + if ( getLogger().isDebugEnabled()) + getLogger().debug("Inserting User " + user.getUsername()); + stmt.setInt(1,getId(entity)); + stmt.setString(2,user.getUsername()); + String password = cache.getPassword(entity.getId()); + stmt.setString(3,password); + stmt.setString(4,user.getName()); + stmt.setString(5,user.getEmail()); + stmt.setInt(6,user.isAdmin()?1:0); + stmt.executeUpdate(); + } + + protected void load(ResultSet rset) throws SQLException, RaplaException { + int idAsInt = rset.getInt(1); + String username = getString(rset,2); + String name = getString(rset,4); + String email = getString(rset,5); + boolean isAdmin = rset.getInt(6) == 1; + UserImpl user = new UserImpl(); + Object userId = new SimpleIdentifier(User.TYPE, idAsInt ); + user.setId( userId ); + user.setUsername( username ); + user.setName( name ); + user.setEmail( email ); + user.setAdmin( isAdmin ); + String password = getString(rset,3); + if ( !rset.wasNull()) { + putPassword(userId,password); + } + put(user); + } + + +} + +class UserGroupStorage extends EntityStorage { + public UserGroupStorage(RaplaContext context) throws RaplaException { + super(context,"RAPLA_USER_GROUP", new String [] {"USER_ID","CATEGORY_ID"}); + } + + public void save(RefEntity entity) throws SQLException,RaplaException { + delete( entity ); + insert( entity ); + } + + protected void write(PreparedStatement stmt, RefEntity entity) throws SQLException, RaplaException { + int userId = getId( entity); + User user = (User) entity; + stmt.setInt(1, userId); + Category[] categories = user.getGroups(); + for (int i=0;i getAppointments(final User user,final Date start,final Date end) throws RaplaException { + checkConnected(); + return cache.getAppointments(user,start,end); + } + + public List getReservations(final User user,final Date start,final Date end) throws RaplaException { + return cache.getReservations(user,start,end); + } + + public Category getSuperCategory() { + return cache.getSuperCategory(); + } + + public void addStorageUpdateListener(StorageUpdateListener listener) { + storageUpdateListeners.add(listener); + } + + public void removeStorageUpdateListener(StorageUpdateListener listener) { + storageUpdateListeners.remove(listener); + } + + public StorageUpdateListener[] getStorageUpdateListeners() { + return (StorageUpdateListener[])storageUpdateListeners.toArray(new StorageUpdateListener[]{}); + } + + protected void fireStorageUpdated(final UpdateResult evt) { + StorageUpdateListener[] listeners = getStorageUpdateListeners(); + for (int i = 0;icheck() +
  • update()
  • +
  • fireStorageUpdate()
  • +
  • fireTriggerEvents()
  • + You should not call dispatch directly from the client. + Use storeObjects and removeObjects instead. + */ + public void dispatch(final UpdateEvent evt) throws RaplaException { + UpdateEvent closure = createClosure( evt); + check( closure ); + UpdateResult result = update( closure, true); + fireStorageUpdated( result ); + } + + /** performs Integrety constraints check */ + protected void check(final UpdateEvent evt) throws RaplaException { + Set storeObjects = new HashSet(evt.getStoreObjects()); + Set removeObjects = new HashSet(evt.getRemoveObjects()); + checkUnique( storeObjects ); + checkConsistency( storeObjects ); + checkReferences( storeObjects ); + checkNoDependencies( removeObjects, storeObjects ); + checkVersions( storeObjects ); + } + + + /** Writes the UpdateEvent in the cache */ + protected UpdateResult update(final UpdateEvent evt, final boolean increaseVersion) throws RaplaException { + User user = null; + if ( evt.getUserId() != null) { + user = (User) resolveId( evt.getUserId() ); + } + UpdateResult result = new UpdateResult( user ); + + List resolvableEntities = new ArrayList(); + HashMap oldEntities = new HashMap(); + // First make a copy of the old entities + for (RefEntity entity: evt.getStoreObjects()) + { + RefEntity persistantEntity = findPersistantVersion( entity ); + + // do nothing, because the persitantVersion is the same as the stored + if ( persistantEntity == entity ) { + continue; + } + + if (persistantEntity != null ) { + if (getLogger().isDebugEnabled()) + getLogger().debug("Storing old: " + entity); + + RefEntity oldEntity = (RefEntity)persistantEntity.deepClone(); + oldEntities.put( persistantEntity, oldEntity ); + } + } + // Then update the new entities + for (RefEntity entity : evt.getStoreObjects()) + { + if ( increaseVersion ) + increaseVersion( entity ); + RefEntity persistantEntity = findPersistantVersion( entity ); + + // do nothing, because the persitantVersion is always ReadOnly + if ( persistantEntity == entity ) { + continue; + } + + if (persistantEntity != null ) { + if (getLogger().isDebugEnabled()) + getLogger().debug("Changing: " + entity); + + ((Mementable)persistantEntity).copy(entity); + } else { + if (getLogger().isDebugEnabled()) + getLogger().debug("Adding entity: " + entity); + + persistantEntity = (RefEntity)entity.deepClone(); + } + ((SimpleEntity)persistantEntity).setReadOnly( true ); + cache.put(persistantEntity); + resolvableEntities.add( persistantEntity ); + } + + /** we need to update every reference in the stored entity. + * So that the references in the persistant entities always point to persistant entities and never + * to local working copies*/ + for (Iterator it = resolvableEntities.iterator(); it.hasNext();) + { + SimpleEntity persistantEntity = (SimpleEntity) it.next(); + persistantEntity.resolveEntities( getCache()); + + RefEntity newEntity = (RefEntity)persistantEntity.deepClone(); + RefEntity oldEntity = (RefEntity)oldEntities.get( persistantEntity ); + if ( oldEntity != null) { + result.addOperation( new UpdateResult.Change( persistantEntity, newEntity, oldEntity)); + } else { + result.addOperation( new UpdateResult.Add( persistantEntity, newEntity)); + } + } + + for (RefEntity entity : evt.getRemoveObjects()) + { + if ( increaseVersion ) + increaseVersion( entity ); + RefEntity persistantVersion = findPersistantVersion( entity ); + + if (persistantVersion != null) { + cache.remove( persistantVersion ); + ((SimpleEntity)persistantVersion).setReadOnly( true ); + result.addOperation( new UpdateResult.Remove( persistantVersion)); + } + } + return result; + } + + /** Create a closure for all objects that should be updated. The closure + contains all objects that are sub-entities of the entities and all objects + and all other objects that are affected by the update: e.g. + Classifiables when the DynamicType changes. + The method will recursivly proceed with all discovered objects. + */ + protected UpdateEvent createClosure(final UpdateEvent evt) throws RaplaException { + UpdateEvent closure = evt.clone(); + Iterator it = evt.getStoreObjects().iterator(); + while (it.hasNext()) + { + addStoreOperationsToClosure(closure, it.next()); + } + + it = evt.getRemoveObjects().iterator(); + while (it.hasNext()) + { + addRemoveOperationsToClosure(closure, it.next() ); + } + return closure; + } + + private void increaseVersion(RefEntity e) throws RaplaException { + e.setVersion (e.getVersion () + 1); + if (getLogger().isDebugEnabled()) + getLogger().debug("Increasing Version for " + e + " to " + e.getVersion()); + } + + private void addStoreOperationsToClosure(UpdateEvent evt,RefEntity entity) throws RaplaException { + if (getLogger().isDebugEnabled() && !evt.getStoreObjects().contains(entity)) + getLogger().debug("Adding " + entity + " to store closure"); + evt.putStore(entity); + if (DynamicType.TYPE.equals( entity.getRaplaType())) { + DynamicType dynamicType = (DynamicType) entity; + addChangedDynamicTypeDependant(evt, dynamicType, false); + } + + Iterator it = entity.getSubEntities(); + + while (it.hasNext()) { + RefEntity subEntity = (RefEntity)it.next(); + addStoreOperationsToClosure(evt,subEntity); + } + + it = getRemovedEntities(entity).iterator(); + while (it.hasNext()) { + addRemoveOperationsToClosure(evt,(RefEntity)it.next()); + } + } + + protected void addChangedDynamicTypeDependant(UpdateEvent evt,DynamicType type, boolean toRemove) throws RaplaException { + Iterator it = getReferencingEntities((RefEntity)type).iterator(); + while (it.hasNext()) { + Object next = it.next(); + if ( !(next instanceof DynamicTypeDependant)) + { + continue; + } + DynamicTypeDependant dependant = (DynamicTypeDependant) next; + // Classifiables need update? + if ( ! dependant.needsChange(type) &&!toRemove ) + continue; + if (getLogger().isDebugEnabled()) + getLogger().debug("Classifiable " + dependant + " needs change!"); + // Classifiables are allready on the store list + if ( evt.getStoreObjects().contains( dependant ) ) + { + dependant = (DynamicTypeDependant)evt.findEntity( (RefEntity) dependant ); + } + // no, then create a clone of the classfiable object and add to list + else + { + User user = null; + if ( evt.getUserId() != null) + { + user = (User) resolveId( evt.getUserId()); + } + dependant = (DynamicTypeDependant)editObject( (Entity) dependant, user); + addStoreOperationsToClosure(evt,(RefEntity) dependant); + } + if ( toRemove) + { + try + { + dependant.commitRemove(type); + } + catch (CannotExistWithoutTypeException ex) + { + // getLogger().warn(ex.getMessage(),ex); + } + } + else + { + dependant.commitChange(type); + } + } + } + + private void addRemoveOperationsToClosure(UpdateEvent evt,RefEntity entity) throws RaplaException { + if (getLogger().isDebugEnabled() && !evt.getRemoveObjects().contains(entity)) + getLogger().debug("Adding " + entity + " to remove closure"); + evt.putRemove(entity); + + if (DynamicType.TYPE.equals( entity.getRaplaType())) { + DynamicType dynamicType = (DynamicType) entity; + addChangedDynamicTypeDependant(evt, dynamicType, true); + } + + // add the subentities + Iterator it = entity.getSubEntities(); + while (it.hasNext()) { + addRemoveOperationsToClosure(evt,(RefEntity)it.next()); + } + + // And also add the SubEntities that have been removed, before storing + it = getRemovedEntities(entity).iterator(); + while (it.hasNext()) { + addRemoveOperationsToClosure(evt,(RefEntity)it.next()); + } + + // If entity is a user, remove the preference object + if (User.TYPE.equals( entity.getRaplaType() )) { + Preferences preferences = cache.getPreferences((User) entity); + if (preferences != null) + addRemoveOperationsToClosure(evt,(RefEntity)preferences); + } + + + } + + private Collection getRemovedEntities( RefEntity entity ) { + RefEntity original = findPersistantVersion( entity ); + List result = null; + if ( original != null ) { + Iterator it = original.getSubEntities(); + while ( it.hasNext()) { + RefEntity subEntity = (RefEntity) it.next(); + if ( !entity.isParentEntity( subEntity) ) { + // SubEntity not found in the new entity add it to remove List + if ( result == null) { + result = new ArrayList(); + } + result.add(subEntity); + //System.out.println( "Removed " + subEntity); + } + } + } + if ( result != null) { + return result; + } else { + return Tools.EMPTY_SET; + } + } + + private void throwNotUnique(RefEntity entity,String name) throws UniqueKeyException { + throw new UniqueKeyException(i18n.format("error.not_unique" + ,name) + ); + } + + public Entity getPersistant(Entity entity) throws EntityNotFoundException { + RefEntity persistant = findPersistantVersion( (RefEntity)entity ); + if ( persistant == null) { + throw new EntityNotFoundException("There is no persistant version of " + entity); + } + return persistant; + } + + protected void resolveEntities(Iterator entities, EntityResolver resolver) throws RaplaException { + List readOnlyList = new ArrayList(); + for (Iterator it = entities;it.hasNext();) { + Object obj = it.next(); + if ( obj instanceof RefEntity) { + RefEntity entity = (RefEntity)obj; + entity.resolveEntities( resolver); + readOnlyList.add( obj ); + } + } + for (Iterator it = readOnlyList.iterator();it.hasNext();) + { + ((SimpleEntity)it.next()).setReadOnly( true ); + } + + } + + + /** check if we find an object with the same name. + * If a different object (different id) with the same unique + * attributes is found a UniqueKeyException will be thrown. + */ + final protected void checkUnique(Collection entities) throws RaplaException { + for (RefEntity entity:entities) + { + String name = ""; + RefEntity entity2 = null; + if ( DynamicType.TYPE.equals( entity.getRaplaType() )) { + DynamicType type =(DynamicType) entity; + name = type.getElementKey(); + + entity2 = (RefEntity) cache.getDynamicType(name); + if (entity2 != null && !entity2.equals(entity)) + throwNotUnique(entity,name); + } + + if ( Category.TYPE.equals( entity.getRaplaType()) ) { + Category category = (Category) entity; + Category[] categories = category.getCategories(); + for ( int i= 0; i entities) throws RaplaException { + for (RefEntity entity:entities) + { + // Check if the user group is missing + if ( Category.TYPE.equals( entity.getRaplaType()) ) { + if (entity.equals( cache.getSuperCategory() )) { + Category userGroups = ((Category) entity).getCategory( Permission.GROUP_CATEGORY_KEY ); + if ( userGroups == null) { + throw new RaplaException("The category with the key '" + Permission.GROUP_CATEGORY_KEY + "' is missing."); + } + } else { + Category category = (Category) entity; + if (category.getParent() == null) { + throw new RaplaException("The category " + category + " needs a parent."); + } + } + } + } + } + + /** Check if the references of each entity refers to an object in cache or in the passed collection.*/ + final protected void checkReferences(Collection entities) throws RaplaException { + Iterator it = entities.iterator(); + while (it.hasNext()) { + SimpleEntity entity = (SimpleEntity) it.next(); + Iterator it2 = entity.getReferences(); + while (it2.hasNext()) { + RefEntity reference = (RefEntity) it2.next(); + if ( reference instanceof Preferences) { + throw new RaplaException("The current version of Rapla doesnt allow references to preferences."); + } + if ( reference instanceof Reservation) { + if (!( entity instanceof Appointment)) { + throw new RaplaException("The current version of Rapla doesnt allow references to events"); + } + } + if ( reference instanceof Appointment) { + if (!( entity instanceof Reservation)) { + throw new RaplaException("The current version of Rapla doesnt allow references to appointment"); + } + } + + // Reference in cache ? + if ( findPersistantVersion( reference ) != null) + continue; + // References in collection. + if (entities.contains(reference)) + continue; + throw new ReferenceNotFoundException(i18n.format("error.reference_not_stored", getName(reference))); + } + } + } + + private String getName(Object object) { + if (object == null) + return (String) null; + if (object instanceof Named) + return (((Named)object).getName(i18n.getLocale())); + return object.toString(); + } + + + /** returns all entities that depend one the passed entities. In most cases + one object depends on an other object if it has a reference to it. + * @param entities */ + final protected Set getDependencies(RefEntity entity) throws RaplaException { + HashSet dependencyList = new HashSet(); + RaplaType type = entity.getRaplaType(); + final Collection referencingEntities; + if ( Category.TYPE.equals( type ) || DynamicType.TYPE.equals( type ) || Allocatable.TYPE.equals( type ) || User.TYPE.equals( type )) { + referencingEntities = getReferencingEntities(entity); + } else { + referencingEntities = cache.getReferers(Preferences.TYPE, entity); + } + dependencyList.addAll(referencingEntities); + return dependencyList; + } + + protected List getReferencingReservations( RefEntity entity ) throws RaplaException { + ArrayList result = new ArrayList(); + Iterator it = this.getReservations(null,null,null).iterator(); + while (it.hasNext()) + { + RefEntity referer = (RefEntity)it.next(); + if (referer != null && referer.isRefering(entity)) { + result.add(referer); + } + } + return result; + } + + protected List getReferencingEntities(RefEntity entity) throws RaplaException{ + ArrayList list = new ArrayList(); + // Important to use getReferncingReservations here, because the method getReservations could be overidden in the subclass, + // to avoid loading unneccessary Reservations in client/server mode. + + list.addAll(getReferencingReservations( entity )); + list.addAll(cache.getReferers(Allocatable.TYPE, entity)); + list.addAll(cache.getReferers(Preferences.TYPE, entity)); + list.addAll(cache.getReferers(User.TYPE, entity)); + list.addAll(cache.getReferers(DynamicType.TYPE, entity)); + return list; + } + + private int countDynamicTypes( Collection entities, String classificationType) { + Iterator it = entities.iterator(); + int count = 0; + while (it.hasNext()) { + RaplaObject entity = (RaplaObject) it.next(); + if ( !DynamicType.TYPE.equals( entity.getRaplaType()) ) + continue; + DynamicType type = (DynamicType) entity; + if ( type.getAnnotation(DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE).equals( classificationType ) ) { + count ++; + } + } + return count; + } + + + // Count dynamic-types to ensure that there is least one dynamic type left + private void checkDynamicType( Collection entities, String classificationType) throws RaplaException { + Collection allTypes = cache.getCollection( DynamicType.TYPE ); + int count = countDynamicTypes( entities, classificationType ); + if ( count >= 0 && count >= countDynamicTypes( allTypes, classificationType ) ) { + throw new RaplaException(i18n.getString("error.one_type_requiered")); + } + } + + protected void checkNoDependencies(Collection entities, Set storeObjects) throws RaplaException { + HashSet dep = new HashSet(); + + for (RefEntity entity:entities) { + // Add dependencies for the entity + + // First we add the dependencies from the stored object list + for ( RefEntity obj:storeObjects) + { + if (obj.isRefering( entity)) + { + dep.add(obj); + } + } + + // Than we add the dependencies from the cache. It is important that we don't add the dependencies from the stored object list here, because a dependency could be removed in a stored object + Set dependencies = getDependencies( entity ); + for (Object dependency:dependencies) + { + if (!storeObjects.contains( dependency)) + { + dep.add( dependency); + } + } + + + } + if (dep.size()>0) { + Collection names = new ArrayList(); + Iterator entityIt = dep.iterator(); + while (entityIt.hasNext()) { + RaplaObject obj = (RaplaObject)entityIt.next(); + StringBuffer buf = new StringBuffer(); + if(obj instanceof Reservation) + { + buf.append( getString("reservation")); + } + else if(obj instanceof Preferences) + { + buf.append( getString("preferences")); + } + else if(obj instanceof Category) + { + buf.append( getString("categorie")); + } + else if(obj instanceof Allocatable) + { + buf.append( getString("resources_persons")); + } + else if(obj instanceof User) + { + buf.append( getString("user")); + } + if ( obj instanceof Named) { + Locale locale = i18n.getLocale(); + final String string = ((Named)obj).getName( locale ); + buf.append(": " + string); + } + else + { + buf.append( obj.toString()); + } + if ( obj instanceof RefEntity) + { + final Object idFull = ((RefEntity)obj).getId(); + if ( idFull != null) + { + String idShort = idFull.toString(); + int dot = idShort.lastIndexOf('.'); + buf.append(" (" + idShort.substring(dot + 1) + ")"); + } + } + names.add( buf.toString()); + } + throw new DependencyException( names ); + } + // Count dynamic-types to ensure that there is least one dynamic type + // for resources, for persons and for reservations + checkDynamicType( entities, DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + checkDynamicType( entities, DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION); + checkDynamicType( entities, DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION); + } + + private String getString(String key) + { + return getI18n().getString(key); + } + + /** Entities will be resolved against resolveableEntities. + If not found the ParentResolver will be used. + */ + public EntityResolver createEntityResolver(Collection resolveableEntities,LocalCache parent) { + EntityStore resolver = new EntityStore( parent, cache.getSuperCategory() ); + resolver.addAll( resolveableEntities); + return resolver; + } + + + public RefEntity resolveId(Object id) throws EntityNotFoundException { + return cache.resolve(id); + } + + + + + /** compares the version of the cached entities with the versions of the new entities. + * Throws an Exception if the newVersion != cachedVersion + */ + protected void checkVersions( Collection entities ) throws RaplaException { + Iterator it = entities.iterator(); + while (it.hasNext()) { + // Check Versions + RefEntity entity = (RefEntity) it.next(); + RefEntity persistantVersion = findPersistantVersion( entity ); + // If the entities are newer, everything is o.k. + if (persistantVersion != null && persistantVersion != entity && entity.getVersion () < persistantVersion.getVersion()) { + getLogger().warn("There is a newer version for: " + + entity.getId() + + " stored version :" + persistantVersion.getVersion() + + " version to store :" + entity.getVersion()); + throw new RaplaException(getI18n().format("error.new_version", entity.toString())); + } + } + } + + private RefEntity findPersistantVersion(RefEntity entity) { + return (RefEntity) cache.get( entity.getId() ); + } + + + public void authenticate(String username,String password) + throws RaplaException { + if (getLogger().isInfoEnabled()) + getLogger().info ("Check password for User " + username ); + User user= cache.getUser(username); + if (user != null && checkPassword(((RefEntity)user).getId(), password ) ) { + return; + } + throw new RaplaSecurityException(i18n.getString("error.login")); + } + + public boolean canChangePassword() { + return true; + } + + public void changePassword(User user,char[] oldPassword,char[] newPassword) throws RaplaException { + if (getLogger().isInfoEnabled()) + getLogger().info ("Change password for User " + user.getUsername() ); + + Object userId = ((RefEntity)user).getId(); + String password = new String(newPassword); + if ( encryption != null ) + password = encrypt( password ); + cache.putPassword( userId, password ); + storeAndRemove( new Entity[] { editObject(user, null) }, Entity.ENTITY_ARRAY, user); + } + + public Object getLock() { + return lock; + } + + protected String encrypt(String password) { + synchronized ( md ) { + md.reset(); + md.update( password.getBytes()); + return encryption + ":" + Tools.convert( md.digest() ); + } + } + + private boolean checkPassword(Object userId, String password) { + if (userId == null) + return false; + + String correct_pw = (String)cache.getPassword(userId); + if ( correct_pw == null) { + return false; + } + if ( encryption != null && correct_pw.indexOf( encryption + ":" ) >= 0) { + password = encrypt( password ); + } + + if ( correct_pw.equals(password)) { + return true; + } + return false; + } + +} + diff --git a/src/org/rapla/storage/impl/EntityStore.java b/src/org/rapla/storage/impl/EntityStore.java new file mode 100644 index 0000000..859dec1 --- /dev/null +++ b/src/org/rapla/storage/impl/EntityStore.java @@ -0,0 +1,167 @@ +/** + * + */ +package org.rapla.storage.impl; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; + +import org.rapla.components.util.Assert; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.storage.LocalCache; + +public class EntityStore implements EntityResolver { + HashMap entities = new HashMap(); + HashSet idsToRemove = new HashSet(); + LocalCache parent; + HashMap dynamicTypes = new HashMap(); + CategoryImpl superCategory; + HashMap passwordList = new HashMap(); + long repositoryVersion; + + public EntityStore(LocalCache parent,CategoryImpl superCategory) { + this.parent = parent; + this.superCategory = superCategory; + // put( superCategory); + } + + void addAll(Collection collection) { + Iterator it = collection.iterator(); + while (it.hasNext()) + { + put((RefEntity)it.next()); + } + } + + public void put(RefEntity entity) { + Object id = entity.getId(); + Assert.notNull(id); + if ( entity.getRaplaType().equals( DynamicType.TYPE)) + { + DynamicType dynamicType = (DynamicType) entity; + dynamicTypes.put ( dynamicType.getElementKey(), entity); + } + if ( entity.getRaplaType().equals( Allocatable.TYPE)) + { + final Classification classification = ((Allocatable) entity).getClassification(); + final Attribute attribute = classification.getAttribute("email"); + if ( attribute != null) + { + final String email = (String)classification.getValue(attribute); + if ( email != null) + { + entities.put ( email, entity); + } + } + } + entities.put(id,entity); + } + + public void addRemoveId(Object id) + { + idsToRemove.add(id); + } + + public DynamicType getDynamicType(String key) + { + // todo super + DynamicType type = (DynamicType) dynamicTypes.get( key); + if ( type == null && parent != null) + { + type = parent.getDynamicType( key); + } + return type; + } + + public Collection getList() { + return entities.values(); + } + + public Collection getRemoveIds() { + return idsToRemove; + } + + // Implementation of EntityResolver + public RefEntity resolve(Object id) throws EntityNotFoundException { + RefEntity result = get (id ); + if ( result == null) + { + throw new EntityNotFoundException("Object for id " + id.toString() + " not found"); + } + return result; + } + + public CategoryImpl getSuperCategory() + { + return superCategory; + } + + public void putPassword( Object userid, String password ) + { + passwordList.put(userid, password); + } + + public String getPassword( Object userid) + { + return (String)passwordList.get(userid); + } + + public RefEntity get( Object id ) + { + if ( id.equals( superCategory.getId())) + { + return superCategory; + } + RefEntity entity = (RefEntity) entities.get(id); + if (entity != null) + return entity; + + if (parent != null) + { + return parent.get(id); + + } + return null; + } + + public Collection getCollection( RaplaType raplaType ) + { + List collection = new ArrayList(); + Iterator it = entities.values().iterator(); + while (it.hasNext()) + { + RaplaObject obj = (RaplaObject)it.next(); + if ( obj.getRaplaType().equals( raplaType)) + { + collection.add( obj); + } + } + return collection; + } + + public long getRepositoryVersion() + { + return repositoryVersion; + } + + public void setRepositoryVersion( long repositoryVersion ) + { + this.repositoryVersion = repositoryVersion; + } + + + +} \ No newline at end of file diff --git a/src/org/rapla/storage/impl/ImportExportManagerImpl.java b/src/org/rapla/storage/impl/ImportExportManagerImpl.java new file mode 100644 index 0000000..67db357 --- /dev/null +++ b/src/org/rapla/storage/impl/ImportExportManagerImpl.java @@ -0,0 +1,87 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.impl; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.ImportExportManager; +/** Imports the content of on store into another. + Export does an import with source and destination exchanged. +

    Configuration:

    +
    +  
    +    file
    +    sql
    +  
    +
    +*/ +public class ImportExportManagerImpl implements ImportExportManager { + + RaplaContext serviceManager; + String sourceString; + String destString; + Logger logger; + + public ImportExportManagerImpl(RaplaContext serviceManager,Configuration configuration) throws RaplaException + { + this.logger = (Logger) serviceManager.lookup( Logger.class.getName()); + this.serviceManager = serviceManager; + try { + sourceString = configuration.getChild("source").getValue(); + destString = configuration.getChild("dest").getValue(); + } catch (ConfigurationException e) { + throw new RaplaException( e); + } + } + + protected Logger getLogger() { + return logger; + } + + /* Import the source into dest. */ + public void doImport() throws RaplaException { + getLogger().info("Import started"); + doConvert(sourceString,destString); + getLogger().info("Import completed"); + } + + /* Export the dest into source. */ + public void doExport() throws RaplaException { + getLogger().info("Export started"); + doConvert(destString,sourceString); + getLogger().info("Export completed"); + } + + private void doConvert(String source,String dest) throws RaplaException { + CachableStorageOperator sourceOperator; + CachableStorageOperator destOperator; + getLogger().info("Converting from " + source + " to " + dest); + try { + sourceOperator = ( CachableStorageOperator) + serviceManager.lookup(CachableStorageOperator.ROLE + "/" + source); + destOperator = ( CachableStorageOperator) + serviceManager.lookup(CachableStorageOperator.ROLE + "/" + dest); + } catch (RaplaContextException ex) { + throw new RaplaException(ex); + } + sourceOperator.connect(); + destOperator.setCache(sourceOperator.getCache()); + destOperator.saveData(); + sourceOperator.disconnect(); + destOperator.disconnect(); + } +} diff --git a/src/org/rapla/storage/package.html b/src/org/rapla/storage/package.html new file mode 100644 index 0000000..79e93b9 --- /dev/null +++ b/src/org/rapla/storage/package.html @@ -0,0 +1,5 @@ + +Provides classes and interfaces for serialization and deserialization of the entities. + + + diff --git a/src/org/rapla/storage/xml/AllocatableReader.java b/src/org/rapla/storage/xml/AllocatableReader.java new file mode 100644 index 0000000..3b8790a --- /dev/null +++ b/src/org/rapla/storage/xml/AllocatableReader.java @@ -0,0 +1,177 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.util.Date; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.domain.internal.AllocatableImpl; +import org.rapla.entities.domain.internal.PermissionImpl; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class AllocatableReader extends RaplaXMLReader +{ + DynAttReader dynAttHandler; + AllocatableImpl allocatable; + + public AllocatableReader( RaplaContext context ) throws RaplaException + { + super( context ); + dynAttHandler = new DynAttReader( context ); + addChildHandler( dynAttHandler ); + } + + public void processElement( + String namespaceURI, + String localName, + String qName, + Attributes atts ) throws SAXException + { + if (namespaceURI.equals( DYNATT_NS )) + { + dynAttHandler.setClassifiable( allocatable ); + delegateElement( + dynAttHandler, + namespaceURI, + localName, + qName, + atts ); + return; + } + + if (!namespaceURI.equals( RAPLA_NS )) + return; + + String holdBackString = getString( atts, "holdbackconflicts", "false" ); + boolean holdBackConflicts = Boolean.valueOf( holdBackString ).booleanValue(); + if (localName.equals( "resource" ) || localName.equals( "person" )) + { + String createdAt = atts.getValue( "", "created-at"); + String lastChanged = atts.getValue( "", "last-changed"); + String lastChangedBy = atts.getValue( "", "last-changed-by"); + + Date createTime = null; + Date changeTime = createTime; + if (createdAt != null) + createTime = parseDate( createdAt, false ); + if (lastChanged != null) + changeTime = parseDate( lastChanged, false ); + + allocatable = new AllocatableImpl(createTime, changeTime); + if ( lastChangedBy != null) + { + try + { + User user = (User)resolve(User.TYPE,lastChangedBy ); + allocatable.setLastChangedBy( user ); + } + catch (SAXParseException ex) + { + getLogger().warn("Can't find user " + lastChangedBy + " at line " + ex.getLineNumber()); + } + } + allocatable.setHoldBackConflicts( holdBackConflicts ); + setId( (SimpleEntity) allocatable, atts ); + setVersionIfThere( allocatable, atts); + setOwner(allocatable, atts); + } + + + if (localName.equals( "permission" )) + { + PermissionImpl permission = new PermissionImpl(); + + // process user + String userString = atts.getValue( "user" ); + if (userString != null) + permission.setUser( (User) resolve( User.TYPE, userString ) ); + + // process group + String groupId = atts.getValue( "groupidref" ); + if (groupId != null) + { + permission.setGroup( (Category) resolve( + Category.TYPE, + groupId ) ); + } + else + { + String groupName = atts.getValue( "group" ); + if (groupName != null) + { + Category group= getGroup( groupName); + permission.setGroup( group); + } + } + + String startDate = getString( atts, "start-date", null ); + if (startDate != null) + { + permission.setStart( parseDate( startDate, false ) ); + } + + String endDate = getString( atts, "end-date", null ); + if (endDate != null) + { + permission.setEnd( parseDate( endDate, false ) ); + } + + String minAdvance = getString( atts, "min-advance", null ); + if (minAdvance != null) + { + permission.setMinAdvance( parseLong( minAdvance ) ); + } + + String maxAdvance = getString( atts, "max-advance", null ); + if (maxAdvance != null) + { + permission.setMaxAdvance( parseLong( maxAdvance ) ); + } + + String accessLevel = getString( + atts, + "access", + (String) Permission.ACCESS_LEVEL_NAMEMAP.get( Permission.ALLOCATE_CONFLICTS ) ); + int[] matchingLevel = Permission.ACCESS_LEVEL_NAMEMAP.findMatchingKeys( accessLevel ); + if (matchingLevel.length == 0) + { + throw createSAXParseException( "Unknown access level '" + accessLevel + "'" ); + } + permission.setAccessLevel( matchingLevel[0] ); + allocatable.addPermission( permission ); + } + } + + public void processEnd( String namespaceURI, String localName, String qName ) + throws SAXException + { + if (!namespaceURI.equals( RAPLA_NS )) + return; + + if (localName.equals( "resource" ) || localName.equals( "person" )) + { + if (allocatable.getPermissions().length == 0) + allocatable.addPermission( new PermissionImpl() ); + add( (RefEntity) allocatable ); + } + } +} diff --git a/src/org/rapla/storage/xml/AllocatableWriter.java b/src/org/rapla/storage/xml/AllocatableWriter.java new file mode 100644 index 0000000..af9c418 --- /dev/null +++ b/src/org/rapla/storage/xml/AllocatableWriter.java @@ -0,0 +1,122 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.io.IOException; +import java.util.Iterator; + +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class AllocatableWriter extends ClassifiableWriter { + public AllocatableWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void printAllocatable(Allocatable allocatable) throws IOException,RaplaException { + String tagName = allocatable.isPerson()? + "rapla:person" : "rapla:resource"; + openTag(tagName); + printId(allocatable); + printVersion( allocatable); + printOwner(allocatable); + printTimestamp(allocatable ); + if (allocatable.isHoldBackConflicts()) { + att("holdbackconflicts","true"); + } + closeTag(); + printClassification(allocatable.getClassification()); + + Permission[] permissions = allocatable.getPermissions(); + for ( int i = 0; i < permissions.length; i++ ){ + printPermission(permissions[i]); + } + closeElement(tagName); + } + + public void writeObject(RaplaObject object) throws IOException, RaplaException { + printAllocatable( (Allocatable) object); + } + + + protected void printPermission(Permission p) throws IOException,RaplaException { + openTag("rapla:permission"); + if ( p.getUser() != null ) { + att("user", getId( p.getUser() )); + } else if ( p.getGroup() != null ) { + if ( isIdOnly() ) { + att( "groupidref", getId( p.getGroup() ) ); + } else { + att( "group", getGroupPath( p.getGroup() ) ); + } + } + if ( p.getMinAdvance() != null ) { + att ( "min-advance", p.getMinAdvance().toString() ); + } + if ( p.getMaxAdvance() != null ) { + att ( "max-advance", p.getMaxAdvance().toString() ); + } + if ( p.getStart() != null ) { + att ( "start-date", dateTimeFormat.formatDate( p.getStart() ) ); + } + if ( p.getEnd() != null ) { + att ( "end-date", dateTimeFormat.formatDate( p.getEnd() ) ); + } + if ( p.getAccessLevel() != Permission.ALLOCATE_CONFLICTS ) { + att("access", (String) Permission.ACCESS_LEVEL_NAMEMAP.get( p.getAccessLevel() ) ); + } + closeElementTag(); + } + + private String getGroupPath( Category category) throws EntityNotFoundException { + Category rootCategory = cache.getSuperCategory().getCategory(Permission.GROUP_CATEGORY_KEY); + return ((CategoryImpl) rootCategory ).getPathForCategory(category); + } + + public void printAllocatables() throws IOException,RaplaException { + openElement("rapla:resources"); + println(""); + // Print all resources that are not persons + Iterator it = cache.getIterator(Allocatable.TYPE); + while (it.hasNext()) { + Allocatable allocatable = (Allocatable)it.next(); + if ( allocatable.isPerson() ) + continue; + printAllocatable(allocatable); + } + // Print all Persons + it = cache.getIterator(Allocatable.TYPE); + while (it.hasNext()) { + Allocatable allocatable = (Allocatable)it.next(); + if ( !allocatable.isPerson() ) + continue; + printAllocatable(allocatable); + } + println(); + closeElement("rapla:resources"); + + } + + +} + + + diff --git a/src/org/rapla/storage/xml/CategoryReader.java b/src/org/rapla/storage/xml/CategoryReader.java new file mode 100644 index 0000000..c3008a9 --- /dev/null +++ b/src/org/rapla/storage/xml/CategoryReader.java @@ -0,0 +1,184 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.util.Stack; + +import org.rapla.components.util.Assert; +import org.rapla.entities.Annotatable; +import org.rapla.entities.Category; +import org.rapla.entities.IllegalAnnotationException; +import org.rapla.entities.MultiLanguageName; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; + +public class CategoryReader extends RaplaXMLReader +{ + MultiLanguageName currentName = null; + Annotatable currentAnnotatable = null; + String currentLang = null; + Stack categoryStack = new Stack(); + CategoryImpl superCategory; + String annotationKey = null; + CategoryImpl lastProcessedCategory = null; + boolean readOnlyThisCategory; + + public CategoryReader( RaplaContext context ) throws RaplaException + { + super( context ); + superCategory = getSuperCategory(); + currentName = superCategory.getName(); + + } + + public void setReadOnlyThisCategory( boolean enable ) + { + readOnlyThisCategory = enable; + } + + public void processElement( + String namespaceURI, + String localName, + String qName, + Attributes atts ) throws SAXException + { + if (localName.equals( "category" ) && namespaceURI.equals( RAPLA_NS )) + { + String key = atts.getValue( "key" ); + Assert.notNull( key ); + CategoryImpl category = new CategoryImpl(); + category.setKey( key ); + currentName = category.getName(); + currentAnnotatable = category; + setVersionIfThere( category, atts); + if (atts.getValue( "id" )!=null) + { + setId( category, atts ); + } + else + { + setNewId( category ); + } + + + if (!readOnlyThisCategory) + { + if ( !categoryStack.empty() ) + { + Category parent = (Category) categoryStack.peek(); + parent.addCategory( category); + } + else + { + String parentId = atts.getValue( "parentid"); + if ( parentId!= null) + { + if (parentId.equals("category_0")) { + if ( !superCategory.isReadOnly()) + { + superCategory.addCategory( category); + } + category.getReferenceHandler().put("parent", superCategory); + } else { + Object parentIdN = getId( Category.TYPE, parentId); + category.getReferenceHandler().putId("parent", parentIdN); + } + } + else + { + if (atts.getValue( "id" )==null) + { + superCategory.addCategory( category); + } + else + { + // It is the super categorycategory.getReferenceHandler().put("parent", superCategory); + } + } + } + + } + categoryStack.push( category ); + + /* + Category test = category; + String output = ""; + while (test != null) + { + output = "/" + test.getKey() + output; + test = test.getParent(); + } + // System.out.println("Storing category " + output ); + */ + } + + if (localName.equals( "name" ) && namespaceURI.equals( ANNOTATION_NS )) + { + startContent(); + currentLang = atts.getValue( "lang" ); + Assert.notNull( currentLang ); + } + + if (localName.equals( "annotation" ) && namespaceURI.equals( RAPLA_NS )) + { + annotationKey = atts.getValue( "key" ); + Assert.notNull( annotationKey, "key attribute cannot be null" ); + startContent(); + } + } + + public void processEnd( String namespaceURI, String localName, String qName ) + throws SAXException + { + if (localName.equals( "category" )) + { + // Test Namespace uris here for possible xerces bug + if (namespaceURI.equals( "" )) + { + throw createSAXParseException( " category namespace empty. Possible Xerces Bug. Download a newer version of xerces." ); + } + + CategoryImpl category = (CategoryImpl) categoryStack.pop(); + if (!readOnlyThisCategory) + { + add( category ); + } + lastProcessedCategory = category; + } + else if (localName.equals( "name" ) && namespaceURI.equals( ANNOTATION_NS )) + { + String translation = readContent(); + currentName.setName( currentLang, translation ); + } + else if (localName.equals( "annotation" ) && namespaceURI.equals( RAPLA_NS )) + { + try + { + currentAnnotatable.setAnnotation( annotationKey, readContent() ); + } + catch (IllegalAnnotationException ex) + { + } + } + } + + public CategoryImpl getCurrentCategory() + { + return lastProcessedCategory; + } + +} diff --git a/src/org/rapla/storage/xml/CategoryWriter.java b/src/org/rapla/storage/xml/CategoryWriter.java new file mode 100644 index 0000000..1017fd2 --- /dev/null +++ b/src/org/rapla/storage/xml/CategoryWriter.java @@ -0,0 +1,78 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.io.IOException; + +import org.rapla.entities.Category; +import org.rapla.entities.RaplaObject; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class CategoryWriter extends RaplaXMLWriter { + public CategoryWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void printRaplaType(RaplaObject type) throws RaplaException, IOException { + printCategory( (Category) type); + } + + public void printCategory(Category category) throws IOException,RaplaException { + printCategory( category, true); + } + + public void printCategory(Category category,boolean printSubcategories) throws IOException,RaplaException { + openTag("rapla:category"); + printVersion( category); + if (isIdOnly()) + { + printId(category); + Category parent = category.getParent(); + if ( parent != null) + { + att("parentid", getId( parent)); + } + } + att("key",category.getKey()); + closeTag(); + printTranslation(category.getName()); + printAnnotations( category ); + if ( printSubcategories ) + { + Category[] categories = category.getCategories(); + for (int i=0;i entryLevel) { + String id = atts.getValue("idref"); + if ( id != null) { + attribute = (Attribute) resolve(Attribute.TYPE,id); + } else { + attribute = classification.getAttribute(localName); + } + + if (attribute == null) //ignore attributes not found in the classification + return; + + startContent(); + } + } + + public void processEnd(String namespaceURI,String localName,String qName) + throws SAXException + { + if (level > entryLevel) { + String content = readContent(); + if (content != null) { + Object value = parseAttributeValue(attribute, content); + classification.setValue(attribute, value); + } + } + } + +} + + + + diff --git a/src/org/rapla/storage/xml/DynamicTypeReader.java b/src/org/rapla/storage/xml/DynamicTypeReader.java new file mode 100644 index 0000000..bf3a4ba --- /dev/null +++ b/src/org/rapla/storage/xml/DynamicTypeReader.java @@ -0,0 +1,272 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.text.ParseException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.rapla.components.util.Assert; +import org.rapla.entities.Annotatable; +import org.rapla.entities.Category; +import org.rapla.entities.IllegalAnnotationException; +import org.rapla.entities.MultiLanguageName; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.internal.AttributeImpl; +import org.rapla.entities.dynamictype.internal.DynamicTypeImpl; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class DynamicTypeReader extends RaplaXMLReader +{ + DynamicTypeImpl dynamicType; + MultiLanguageName currentName = null; + String currentLang = null; + String constraintKey = null; + AttributeImpl attribute = null; + String annotationKey = null; + boolean isAttributeActive = false; + boolean isDynamictypeActive = false; + HashMap typeAnnotations = new HashMap(); + HashMap attributeAnnotations = new HashMap(); + + public DynamicTypeReader( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public void processElement( + String namespaceURI, + String localName, + String qName, + Attributes atts ) throws SAXException + { + + if (localName.equals( "element" )) + { + String qname = getString( atts, "name" ); + String name = qname.substring( qname.indexOf( ":" ) + 1 ); + Assert.notNull( name ); + //System.out.println("NAME: " + qname + " Level " + level + " Entry " + entryLevel); + + if (!isDynamictypeActive) + { + isDynamictypeActive = true; + typeAnnotations.clear(); + dynamicType = new DynamicTypeImpl(); + if (atts.getValue( "id" )!=null) + { + setId( dynamicType, atts ); + } + else + { + setNewId( dynamicType ); + } + + currentName = dynamicType.getName(); + dynamicType.setElementKey( name ); + setVersionIfThere( dynamicType, atts); + + } + else + { + isAttributeActive = true; + attribute = new AttributeImpl(); + currentName = attribute.getName(); + attribute.setKey( name ); + Assert.notNull( name, "key attribute cannot be null" ); + if (atts.getValue("id") != null) + { + setId( attribute, atts ); + } + else + { + setNewId( attribute ); + } + setVersionIfThere( attribute, atts); + attributeAnnotations.clear(); + } + } + + if (localName.equals( "constraint" ) && namespaceURI.equals( RAPLA_NS )) + { + constraintKey = atts.getValue( "name" ); + startContent(); + } + + if (localName.equals( "default" )) + { + startContent(); + } + + // if no attribute type is set + if (localName.equals( "data" ) && namespaceURI.equals( RELAXNG_NS ) && attribute.getType().equals( + AttributeImpl.DEFAULT_TYPE )) + { + String typeName = atts.getValue( "type" ); + if (typeName == null) + throw createSAXParseException( "element relax:data is requiered!" ); + AttributeType type = AttributeType.findForString( typeName ); + if (type == null) + throw createSAXParseException( "AttributeType '" + type + "' not found." ); + attribute.setType( type ); + } + + if (localName.equals( "annotation" ) && namespaceURI.equals( RAPLA_NS )) + { + annotationKey = atts.getValue( "key" ); + Assert.notNull( annotationKey, "key attribute cannot be null" ); + startContent(); + } + + if (localName.equals( "name" ) && namespaceURI.equals( ANNOTATION_NS )) + { + startContent(); + currentLang = atts.getValue( "lang" ); + Assert.notNull( currentLang ); + } + } + + private void addAnnotations( Annotatable annotatable, Map annotations ) + throws SAXParseException + { + for (Iterator it = annotations.entrySet().iterator(); it.hasNext();) + { + Map.Entry entry = (Map.Entry) it.next(); + String key = (String) entry.getKey(); + String annotation = (String) entry.getValue(); + try + { + annotatable.setAnnotation( key, annotation ); + } + catch (IllegalAnnotationException e) + { + throw createSAXParseException( e.getMessage() ); + } + } + + } + + public void processEnd( String namespaceURI, String localName, String qName ) + throws SAXException + { + if (localName.equals( "element" )) + { + if (!isAttributeActive) + { + addAnnotations( dynamicType, typeAnnotations ); + add( dynamicType ); + // We ensure the dynamic type is not modified anymore + dynamicType.setReadOnly( true ); + isDynamictypeActive = false; + } + else + { + addAnnotations( attribute, attributeAnnotations ); + //System.out.println("Adding attribute " + attribute + " to " + dynamicType); + dynamicType.addAttribute( attribute ); + add( (RefEntity) attribute ); + isAttributeActive = false; + } + } + else if (localName.equals( "annotation" ) && namespaceURI.equals( RAPLA_NS )) + { + if (isAttributeActive) + { + attributeAnnotations.put( annotationKey, readContent() ); + } + else + { + typeAnnotations.put( annotationKey, readContent() ); + } + } + else if (localName.equals( "optional" ) && namespaceURI.equals( RELAXNG_NS )) + { + attribute.setOptional( true ); + } + else if (localName.equals( "name" ) && namespaceURI.equals( ANNOTATION_NS )) + { + Assert.notNull( currentName ); + currentName.setName( currentLang, readContent() ); + } + else if (localName.equals( "constraint" ) && namespaceURI.equals( RAPLA_NS )) + { + String content = readContent().trim(); + Object constraint = null; + if (attribute.getConstraintClass( constraintKey ) == Category.class) + { + boolean idContent = isContentCategoryId( content ); + if (idContent) + { + constraint = resolve( Category.TYPE, content ); + } + else + { + constraint = getCategoryFromPath( content ); + } + } + else if (attribute.getConstraintClass( constraintKey ) == Integer.class) + { + constraint = parseLong( content ); + } + else + { + constraint = content; + } + attribute.setConstraint( constraintKey, constraint ); + } + + if (localName.equals( "default" ) && namespaceURI.equals( RAPLA_NS )) + { + String content = readContent().trim(); + final Object defaultValue; + final AttributeType type = attribute.getType(); + if (type == AttributeType.CATEGORY) + { + boolean idContent = isContentCategoryId( content ); + if (idContent) + { + defaultValue = resolve( Category.TYPE, content ); + } + else + { + defaultValue = getCategoryFromPath( content ); + } + } + else + { + Object value; + try + { + value = AttributeImpl.parseAttributeValue(attribute, content, resolver); + } + catch (ParseException e) + { + value = null; + } + defaultValue = value; + } + attribute.setDefaultValue(defaultValue ); + } + } + + + + +} diff --git a/src/org/rapla/storage/xml/DynamicTypeWriter.java b/src/org/rapla/storage/xml/DynamicTypeWriter.java new file mode 100644 index 0000000..9087a4f --- /dev/null +++ b/src/org/rapla/storage/xml/DynamicTypeWriter.java @@ -0,0 +1,184 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml; + +import java.io.IOException; +import java.util.Date; +import java.util.Iterator; + +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.internal.DynamicTypeImpl; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +/** Stores the data from the local cache in XML-format to a print-writer.*/ +public class DynamicTypeWriter extends RaplaXMLWriter +{ + public DynamicTypeWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + private void printStartPattern() throws IOException { + openElement("relax:start"); + openElement("relax:choice"); + Iterator it = cache.getCollection(DynamicType.TYPE).iterator(); + while (it.hasNext()) { + DynamicTypeImpl type = (DynamicTypeImpl) it.next(); + openTag("relax:ref"); + att("name",type.getElementKey()); + closeElementTag(); + } + closeElement("relax:choice"); + closeElement("relax:start"); + } + + public void printDynamicType(DynamicType type) throws IOException,RaplaException { + openTag("relax:define"); + att("name",type.getElementKey()); + closeTag(); + + openTag("relax:element"); + att("name","dynatt:" + type.getElementKey()); + if (isIdOnly()) + { + att("id",getId(type)); + } + printVersion( type); + + closeTag(); + + printTranslation(type.getName()); + printAnnotations(type); + + Attribute att[] = type.getAttributes(); + for (int i = 0; i< att.length; i ++) { + printAttribute(att[i]); + } + + closeElement("relax:element"); + closeElement("relax:define"); + } + + public void writeObject(RaplaObject type) throws IOException, RaplaException { + printDynamicType( (DynamicType) type ); + } + + + + private String getCategoryPath( Category category) throws EntityNotFoundException { + Category rootCategory = cache.getSuperCategory(); + if ( category != null && rootCategory.equals( category) ) + { + return ""; + } + return ((CategoryImpl) rootCategory ).getPathForCategory(category); + } + + protected void printAttribute(Attribute attribute) throws IOException,RaplaException { + if (attribute.isOptional()) + openElement("relax:optional"); + openTag("relax:element"); + att("name",attribute.getKey()); + if (isIdOnly()) + att("id",getId(attribute)); + + printVersion( attribute); + + AttributeType type = attribute.getType(); + closeTag(); + printTranslation( attribute.getName() ); + printAnnotations( attribute ); + String[] constraintKeys = attribute.getConstraintKeys(); + openTag("relax:data"); + + att("type", type.toString()); + closeElementTag(); + for (int i = 0; i 0) + { + openElement("selected"); + RaplaMapWriter writer = (RaplaMapWriter)getWriterFor( RaplaMap.TYPE); + writer.writeMap( selectedObjects); + closeElement("selected"); + } + RaplaMap extensionMap = calendar.getOptionMap(); + if (extensionMap != null && extensionMap.size() > 0) + { + openElement("options"); + RaplaMapWriter writer = (RaplaMapWriter)getWriterFor( RaplaMap.TYPE); + writer.writeMap( extensionMap); + closeElement("options"); + } + ClassificationFilter[] filter =calendar.getFilter() ; + if ( filter.length> 0) + { + openElement("filter"); + for (ClassificationFilter f:filter) + { + final DynamicType dynamicType = f.getType(); + final String annotation = dynamicType.getAnnotation(DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE); + boolean eventType = annotation != null && annotation.equals( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + if (( eventType && !calendar.isDefaultEventTypes()) + || (!eventType && !calendar.isDefaultResourceTypes()) + ) + { + printClassificationFilter( f ); + } + } + closeElement("filter"); + } + closeElement("rapla:" + CalendarModelConfiguration.TYPE.getLocalName()); + } + + + + } + + + diff --git a/src/org/rapla/storage/xml/RaplaConfigurationReader.java b/src/org/rapla/storage/xml/RaplaConfigurationReader.java new file mode 100644 index 0000000..8634790 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaConfigurationReader.java @@ -0,0 +1,107 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.NamespacedSAXConfigurationHandler; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.Attributes; +import org.xml.sax.Locator; +import org.xml.sax.SAXException; + +public class RaplaConfigurationReader extends RaplaXMLReader { + boolean delegating = false; + + public RaplaConfigurationReader(RaplaContext context) throws RaplaException { + super(context); + } + + NamespacedSAXConfigurationHandler configurationHandler = new NamespacedSAXConfigurationHandler() { + boolean aelfredFailed; + + protected String getLocationString() + { + if ( aelfredFailed ) + return "Unknown"; + try { + // Aelfred causes an error after xslt processing. + return super.getLocationString(); + } catch (Exception ex) { + aelfredFailed = true; + getLogger().warn("Can't get location string. Probably an aelfread sax error."); + return "Unknown"; + } + } + }; + + public void clear() { + configurationHandler.clear(); + // The locator will be reseted after a clear + configurationHandler.setDocumentLocator(getLocator()); + } + + public void processElement(String namespaceURI,String localName,String qName,Attributes atts) + throws SAXException + { + if ( RAPLA_NS.equals(namespaceURI) && localName.equals("config")) + return; + delegating = true; + configurationHandler.startElement(namespaceURI, localName, qName, atts); + } + + public void processEnd(String namespaceURI,String localName,String qName) + throws SAXException + { + if ( RAPLA_NS.equals(namespaceURI) && localName.equals("config")) + return; + + configurationHandler.endElement(namespaceURI, localName, qName); + delegating = false; + + } + + public void startPrefixMapping(String prefix, + String uri) throws SAXException + { + // configurationHandler.startPrefixMapping(prefix, uri); + } + + public void setDocumentLocator(Locator locator) { + configurationHandler.setDocumentLocator(locator); + super.setDocumentLocator(locator); + } + + public void processCharacters(char[] ch,int start,int length) + throws SAXException + { + + if ( delegating ){ + configurationHandler.characters(ch,start,length); + } + } + + + public RaplaObject getType() { + return new RaplaConfiguration(getConfiguration()); + } + + private Configuration getConfiguration() { + Configuration conf = configurationHandler.getConfiguration(); + return conf; + } +} + diff --git a/src/org/rapla/storage/xml/RaplaConfigurationWriter.java b/src/org/rapla/storage/xml/RaplaConfigurationWriter.java new file mode 100644 index 0000000..7a86362 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaConfigurationWriter.java @@ -0,0 +1,148 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.io.IOException; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.ConfigurationException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.helpers.AttributesImpl; +import org.xml.sax.helpers.NamespaceSupport; + + +public class RaplaConfigurationWriter extends RaplaXMLWriter { + + public RaplaConfigurationWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void writeObject(RaplaObject type) throws IOException, RaplaException { + RaplaConfiguration raplaConfig = (RaplaConfiguration) type ; + openElement("rapla:" + RaplaConfiguration.TYPE.getLocalName()); + try { + printConfiguration(raplaConfig.getConfig() ); + } catch (ConfigurationException ex) { + throw new RaplaException( ex ); + } + closeElement("rapla:" + RaplaConfiguration.TYPE.getLocalName()); + } + + private void printConfiguration(final Configuration conf ) throws ConfigurationException, RaplaException, IOException { + printConfiguration(namespaceSupport,conf); + } + + /** + * Serialize each Configuration element. This method is called recursively. + * Original code for this method is taken from the org.apache.framework.configuration.DefaultConfigurationSerializer class + * @param namespaceSupport a NamespaceSupport to use + * @throws ConfigurationException if an error occurs + * @throws IOException if an error occurs + */ + protected void printConfiguration( final NamespaceSupport namespaceSupport, + final Configuration element ) + throws IOException, ConfigurationException, RaplaException + { + namespaceSupport.pushContext(); + + AttributesImpl attr = new AttributesImpl(); + String[] attrNames = element.getAttributeNames(); + + if( null != attrNames ) + { + for( int i = 0; i < attrNames.length; i++ ) + { + attr.addAttribute( "", // namespace URI + attrNames[ i ], // local name + attrNames[ i ], // qName + "CDATA", // type + element.getAttribute( attrNames[ i ], "" ) // value + ); + } + } + + final String nsURI = element.getNamespace(); + String nsPrefix = namespaceSupport.getPrefix(nsURI); + if (nsPrefix == null) + nsPrefix = ""; + + + final String existingURI = namespaceSupport.getURI( nsPrefix ); + + // ie, there is no existing URI declared for this prefix or we're + // remapping the prefix to a different URI + if( existingURI == null || !existingURI.equals( nsURI ) ) + { + if( nsPrefix.equals( "" ) ) { + } else { + // (re)declare a mapping from nsPrefix to nsURI + attr.addAttribute( "", "xmlns:" + nsPrefix, "xmlns:" + nsPrefix, "CDATA", nsURI ); + } + //handler.startPrefixMapping( nsPrefix, nsURI ); + namespaceSupport.declarePrefix( nsPrefix, nsURI ); + } + + String localName = element.getName(); + String qName = element.getName(); + if( nsPrefix == null || nsPrefix.length() == 0 ) + { + qName = localName; + } + else + { + qName = nsPrefix + ":" + localName; + } + + openTag(qName); + att(attr); + + String value = element.getValue( null ); + + if( null == value ) + { + Configuration[] children = element.getChildren(); + if (children.length > 0) + { + closeTag(); + for( int i = 0; i < children.length; i++ ) + { + printConfiguration( namespaceSupport, children[ i ] ); + } + closeElement(qName); + } + else + { + closeElementTag(); + } + } + else + { + closeTagOnLine(); + print(value); + closeElementOnLine(qName); + println(); + } + + + namespaceSupport.popContext(); + } + + + } + + + diff --git a/src/org/rapla/storage/xml/RaplaEntityComparator.java b/src/org/rapla/storage/xml/RaplaEntityComparator.java new file mode 100644 index 0000000..6cc313b --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaEntityComparator.java @@ -0,0 +1,75 @@ +package org.rapla.storage.xml; + +import java.util.Comparator; +import java.util.HashMap; +import java.util.Map; + +import org.rapla.entities.Category; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; + +public class RaplaEntityComparator implements Comparator +{ + Map ordering = new HashMap(); + public RaplaEntityComparator() + { + int i=0; + ordering.put( Category.TYPE,new Integer(i++)); + ordering.put( DynamicType.TYPE, new Integer(i++)); + ordering.put( User.TYPE,new Integer(i++)); + ordering.put( Allocatable.TYPE, new Integer(i++)); + ordering.put( Preferences.TYPE,new Integer(i++) ); + ordering.put( Period.TYPE, new Integer(i++) ); + ordering.put( Reservation.TYPE,new Integer(i++)); + } + + public int compare( Object o1, Object o2) + { + RaplaObject r1 = (RaplaObject) o1; + RaplaObject r2 = (RaplaObject) o2; + RaplaType t1 = r1.getRaplaType(); + RaplaType t2 = r2.getRaplaType(); + Integer ord1 = (Integer) ordering.get( t1); + Integer ord2 = (Integer) ordering.get( t2); + if ( o1 == o2) + { + return 0; + } + + if ( ord1 != null && ord2 != null) + { + if (ord1.intValue()>ord2.intValue()) + { + return 1; + } + if (ord1.intValue() o2.hashCode()) + { + return 1; + } + else + { + return -1; + } + } + +} diff --git a/src/org/rapla/storage/xml/RaplaInput.java b/src/org/rapla/storage/xml/RaplaInput.java new file mode 100644 index 0000000..b50fa8d --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaInput.java @@ -0,0 +1,262 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.net.URL; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.framework.RaplaException; +import org.xml.sax.ContentHandler; +import org.xml.sax.ErrorHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +/** Reads the data in xml format from an InputSource into the + LocalCache and converts it to a newer version if necessary. + */ +public final class RaplaInput { + private Logger logger; + private URL fileSource; + private Reader reader; + + private boolean wasConverted; + + public RaplaInput(Logger logger) throws RaplaException { + this.logger = logger; + } + + protected Logger getLogger() { + return logger; + } + + /** returns if the data was converted during read.*/ + public boolean wasConverted() { + return wasConverted; + } + + public void read(URL file, ContentHandler handler, boolean validate) throws RaplaException,IOException { + getLogger().debug("Parsing " + file.toString()); + fileSource = file; + reader = null; + parseData( handler , validate); + } + + public boolean read(Reader xml, ContentHandler handler, boolean validate) throws RaplaException,IOException { + fileSource = null; + reader = xml; + parseData( handler, validate); + return wasConverted; + } + + public boolean read(Reader xml, ContentHandler handler) throws RaplaException,IOException { + fileSource = null; + reader = xml; + parseData( handler, false); + return wasConverted; + } + + public boolean readWithNamespaces(String xml, ContentHandler handler) throws RaplaException,IOException { + StringBuffer dataElement = new StringBuffer(); + dataElement.append(""); + String xmlWithNamespaces = dataElement.toString() + xml + ""; + return read(new StringReader(xmlWithNamespaces), handler); + } + + + + private InputSource getNewSource() { + if ( fileSource != null ) { + return new InputSource( fileSource.toString() ); + } else if ( reader != null ) { + return new InputSource( reader ); + } else { + throw new IllegalStateException("fileSource or reader can't be null"); + } + } + + private void parseData( ContentHandler contentHandler,boolean validate) + throws RaplaException + ,IOException { + try { + RaplaSAXPipeline pipeline = new RaplaSAXPipeline(); + pipeline.enableLogging(getLogger()); + if (validate) { + validate( getNewSource(), "org/rapla/storage/xml/rapla.rng"); + } + pipeline.parse( contentHandler, getNewSource() ); + } catch (SAXException ex) { + Throwable cause = ex.getException(); + if (cause instanceof SAXParseException) { + ex = (SAXParseException) cause; + cause = ex.getException(); + } + if (ex instanceof SAXParseException) { + throw new RaplaException("Line: " + ((SAXParseException)ex).getLineNumber() + + " Column: "+ ((SAXParseException)ex).getColumnNumber() + " " + + ((cause != null) ? cause.getMessage() : ex.getMessage()) + ,(cause != null) ? cause : ex ); + } + if (cause == null) { + throw new RaplaException( ex); + } + if (cause instanceof WrongVersionException) { + convertData( getNewSource(),contentHandler,((WrongVersionException)cause).getVersion()); + return; + } + if (cause instanceof RaplaException) + throw (RaplaException) cause; + else + throw new RaplaException( cause); + } + /* End of Exception Handling */ + } + + /** uses the jing validator to validate a document against an relaxng schema. + * This method uses reflection API, to avoid compile-time dependencies on + * the jing.jar + * @param in + * @param schema + * @throws RaplaException + */ + private void validate(InputSource in, String schema) throws RaplaException { + try { + ErrorHandler errorHandler = new RaplaErrorHandler(); + /* // short version + * propMapBuilder = new com.thaiopensource.util.PropertyMapBuilder(); + * propMapBuilder.put(com.thaiopensource.validate.ValidateProperty.ERROR_HANDLER, errorHandler); + * Object propMap = propMapBuilder.toPropertyMap(); + * Object o =new com.thaiopensource.validate.ValidationDriver(propMap); + * o.loadSchema(schema); + * o.validate(in); + */ + // full reflection syntax + Class validatorC = Class.forName("com.thaiopensource.validate.ValidationDriver"); + Class propIdC = Class.forName("com.thaiopensource.util.PropertyId"); + Class validatepropC = Class.forName("com.thaiopensource.validate.ValidateProperty"); + Object errorHandlerId = validatepropC.getDeclaredField("ERROR_HANDLER").get( null ); + Class propMapC = Class.forName("com.thaiopensource.util.PropertyMap"); + Class propMapBuilderC = Class.forName("com.thaiopensource.util.PropertyMapBuilder"); + Object propMapBuilder = propMapBuilderC.newInstance(); + Method put = propMapBuilderC.getMethod("put", new Class[] {propIdC, Object.class} ); + put.invoke( propMapBuilder, new Object[] {errorHandlerId, errorHandler}); + Method topropMap = propMapBuilderC.getMethod("toPropertyMap", new Class[] {} ); + Object propMap = topropMap.invoke( propMapBuilder, new Object[] {}); + Constructor validatorConst = validatorC.getConstructor( new Class[] { propMapC }); + Object validator = validatorConst.newInstance( new Object[] {propMap}); + Method loadSchema = validatorC.getMethod( "loadSchema", new Class[] {InputSource.class}); + Method validate = validatorC.getMethod("validate", new Class[] {InputSource.class}); + InputSource schemaSource = new InputSource( getResource( schema ).toString() ); + loadSchema.invoke( validator, new Object[] {schemaSource} ); + validate.invoke( validator, new Object[] {in}); + } catch (ClassNotFoundException ex) { + throw new RaplaException( ex.getMessage() + ". Latest jing.jar is missing on the classpath. Please download from http://www.thaiopensource.com/relaxng/jing.html"); + } catch (InvocationTargetException e) { + throw new RaplaException("Can't validate data due to the following error: " + e.getTargetException().getMessage(), e.getTargetException()); + } catch (Exception ex) { + throw new RaplaException("Error invoking JING", ex); + } + } + private URL getResource(String name) throws RaplaException { + URL url = getClass().getClassLoader().getResource( name ); + if ( url == null ) + throw new RaplaException("Resource " + name + " not found"); + return url; + } + private void convertData(InputSource inputSource,ContentHandler handler,String versionString) + throws RaplaException,IOException + { + double version; + try { + version = new Double(versionString).doubleValue(); + } catch (NumberFormatException ex) { + throw new RaplaException("Invalid version tag (double-value expected)!"); + } + // get the version number of the data-schema + if (version > new Double(RaplaMainReader.INPUT_FILE_VERSION).doubleValue()) + throw new RaplaException("This version of Rapla cannot read files with a version-number" + + " greater than " + RaplaMainReader.INPUT_FILE_VERSION + + ", try out the latest version."); + + try { + RaplaSAXPipeline pipeline = new RaplaSAXPipeline(); + pipeline.enableLogging(getLogger()); + if (version < 0.4) { + throw new RaplaException("Rapla 0.7, 0.6 or rapla 0.5 files are not supported in this version\n" + + " Please use rapla version 0.8.2 to convert this file: Load file, edit and save something!"); + } + if (version < 0.5) { + URL stylesheet = getResource( "org/rapla/storage/xml/convert0_4to0_5.xsl" ); + pipeline.addTransformer(stylesheet,new String[][] {}); + } + if (version < 0.6) { + URL stylesheet = getResource( "org/rapla/storage/xml/convert0_5to0_6.xsl" ); + pipeline.addTransformer(stylesheet,new String[][] {}); + } + if (version < 0.7) { + URL stylesheet = getResource( "org/rapla/storage/xml/convert0_6to0_7.xsl" ); + pipeline.addTransformer(stylesheet,new String[][] {}); + } + if (version < 0.8) { + URL stylesheet = getResource( "org/rapla/storage/xml/convert0_7to0_8.xsl" ); + pipeline.addTransformer(stylesheet,new String[][] {}); + } + if (version < 0.9) { + URL stylesheet = getResource( "org/rapla/storage/xml/convert0_8to0_9.xsl" ); + pipeline.addTransformer(stylesheet,new String[][] {}); + } + + if (version < 1.0) { + URL stylesheet = getResource( "org/rapla/storage/xml/convert0_9to1_0.xsl" ); + pipeline.addTransformer(stylesheet,new String[][] {}); + } + + getLogger().info("Start conversion"); + //pipeline.parse(new DefaultHandler(), inputSource); + + pipeline.parse(handler, inputSource); + getLogger().info("Conversion successful"); + wasConverted = true; + } catch (SAXException ex) { + Throwable cause = ex.getException(); + if (cause == null) + throw new RaplaException( ex); + + if (cause instanceof RaplaException) { + throw (RaplaException)cause; + } else { + throw new RaplaException( cause ); + } + } + } + +} diff --git a/src/org/rapla/storage/xml/RaplaMainReader.java b/src/org/rapla/storage/xml/RaplaMainReader.java new file mode 100644 index 0000000..79826e1 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaMainReader.java @@ -0,0 +1,154 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.Attributes; +import org.xml.sax.Locator; +import org.xml.sax.SAXException; + +public class RaplaMainReader extends RaplaXMLReader +{ + Map localnameTable = new HashMap(); + final static String INPUT_FILE_VERSION = RaplaXMLWriter.OUTPUT_FILE_VERSION; + boolean parseOnlyHeader; + + public RaplaMainReader( RaplaContext context ) throws RaplaException + { + super( context ); + + // Setup the delegation classes + localnameTable.put( "grammar", readerMap.get( DynamicType.TYPE ) ); + localnameTable.put( "element", readerMap.get( DynamicType.TYPE ) ); + + localnameTable.put( "user", readerMap.get( User.TYPE ) ); + localnameTable.put( "category", readerMap.get( Category.TYPE ) ); + localnameTable.put( "preferences", readerMap.get( Preferences.TYPE ) ); + localnameTable.put( "resource", readerMap.get( Allocatable.TYPE ) ); + localnameTable.put( "person", readerMap.get( Allocatable.TYPE ) ); + localnameTable.put( "period", readerMap.get( Period.TYPE ) ); + localnameTable.put( "reservation", readerMap.get( Reservation.TYPE ) ); + localnameTable.put( "remove", readerMap.get( "remove") ); + if (!parseOnlyHeader) + { + addChildHandler( readerMap.values() ); + } + } + + public void setDocumentLocator( Locator locator ) + { + super.setDocumentLocator( locator ); + } + + private void addChildHandler( Collection collection ) + { + Iterator it = collection.iterator(); + while (it.hasNext()) + addChildHandler( (DelegationHandler) it.next() ); + } + + /** checks the version of the input-file. throws + WrongVersionException if the file-version is not supported by + the reader.*/ + public void processHead( + String uri, + String name, + String qName, + Attributes atts ) throws SAXException + { + try + { + String version = null; + getLogger().debug( "Getting version." ); + if (name.equals( "data" ) && uri.equals( RAPLA_NS )) + { + version = atts.getValue( "version" ); + if (version == null) + throw createSAXParseException( "Could not get Version" ); + } + String repositoryVersion = atts.getValue("repositoryVersion"); + if ( repositoryVersion != null) + { + resolver.setRepositoryVersion( Long.parseLong( repositoryVersion)); + } + if (name.equals( "DATA" )) + { + version = atts.getValue( "version" ); + if (version == null) + { + version = "0.1"; + } + } + if (version == null) + throw createSAXParseException( "Invalid Format. Could not read data." ); + + if (!version.equals( INPUT_FILE_VERSION )) + { + getLogger().warn( "Warning: Different version detected" ); + throw new WrongVersionException( version ); + } + getLogger().debug( "Found compatible version-number." ); + // We've got the right version. We can proceed. + } + catch (Exception ex) + { + throw new SAXException( ex ); + } + } + + + public void processElement( + String namespaceURI, + String localName, + String qName, + Attributes atts ) throws SAXException + { + if (level == 1) + { + processHead( namespaceURI, localName, qName, atts ); + return; + } + + if (parseOnlyHeader ) + return; + if ( !namespaceURI.equals(RAPLA_NS) && !namespaceURI.equals(RELAXNG_NS)) + { + // Ignore unknown namespace + return; + } + + // lookup delegation-handler for the localName + DelegationHandler handler = (DelegationHandler) localnameTable.get( localName ); + // Ignore unknown elements + if (handler != null) + { + delegateElement( handler, namespaceURI, localName, qName, atts ); + } + + } + +} diff --git a/src/org/rapla/storage/xml/RaplaMainWriter.java b/src/org/rapla/storage/xml/RaplaMainWriter.java new file mode 100644 index 0000000..4c70cd7 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaMainWriter.java @@ -0,0 +1,191 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.SortedSet; +import java.util.TreeSet; + +import org.rapla.entities.Category; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +/** Stores the data from the local cache in XML-format to a print-writer.*/ +public class RaplaMainWriter extends RaplaXMLWriter +{ + /** + * @param sm + * @throws RaplaException + */ + public RaplaMainWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void setWriter( BufferedWriter writer ) { + super.setWriter( writer ); + for ( Iterator it = writerMap.values().iterator();it.hasNext();) { + ((RaplaXMLWriter)it.next()).setWriter( writer ); + } + } + + public void setEncoding( String encoding ) { + super.setEncoding( encoding ); + for ( Iterator it = writerMap.values().iterator();it.hasNext();) { + ((RaplaXMLWriter)it.next()).setEncoding( encoding ); + } + } + + protected void printContent() throws IOException,RaplaException { + printHeader( 0 ); + + ((CategoryWriter)getWriterFor(Category.TYPE)).printCategories(); + println(); + ((DynamicTypeWriter)getWriterFor(DynamicType.TYPE)).printDynamicTypes(); + println(); + ((PreferenceWriter)getWriterFor(Preferences.TYPE)).printPreferences( cache.getPreferences( null )); + println(); + ((UserWriter)getWriterFor(User.TYPE)).printUsers(); + println(); + ((AllocatableWriter)getWriterFor(Allocatable.TYPE)).printAllocatables(); + println(); + ((PeriodWriter)getWriterFor(Period.TYPE)).printPeriods(); + println(); + ((ReservationWriter)getWriterFor(Reservation.TYPE)).printReservations(); + println(); + + closeElement("rapla:data"); + } + + private void printHeader(long repositoryVersion) throws IOException + { + println(""); + openTag("rapla:data"); + for (int i=0;i 0) + { + att("repositoryVersion", String.valueOf(repositoryVersion)); + } + closeTag(); + } + + public void write(OutputStream out ) throws IOException,RaplaException { + BufferedWriter w = new BufferedWriter(new OutputStreamWriter(out,encoding)); + setWriter(w); + printContent(); + w.flush(); + } + + public void printList( List resources,List remove, long repositoryVersion ) throws RaplaException, IOException + { + printHeader( repositoryVersion); + printListPrivate( resources); + openElement("rapla:remove"); + for ( Iterator it = remove.iterator();it.hasNext();) + { + RaplaObject object = (RaplaObject) it.next(); + openTag("rapla:" + object.getRaplaType().getLocalName()); + att("idref", getId( object)); + closeElementTag(); + } + closeElement("rapla:remove"); + closeElement("rapla:data"); + } + + + protected void printListPrivate( List resources ) throws RaplaException, IOException + { + SortedSet set = new TreeSet(new RaplaEntityComparator()); + HashSet hashSet = new HashSet(resources); + set.addAll(resources ); + for ( Iterator it = set.iterator();it.hasNext();) + { + RaplaObject object = (RaplaObject) it.next(); + + RaplaType type = object.getRaplaType(); + RaplaXMLWriter writer; + if ( type == Attribute.TYPE || type == Appointment.TYPE) + { + continue; + } + try + { + writer = getWriterFor(type); + } + catch (RaplaException e) + { + System.err.println( e.getMessage()); + continue; + } + if ( type == Preferences.TYPE) + { + Preferences preferences= (Preferences)object; + if ( preferences.getOwner() != null && hashSet.contains( preferences.getOwner())) + { + continue; + } + writer.writeObject(object); + } + if ( type == Category.TYPE) + { + Category category = (Category)object; + if (category.getParent() != null && hashSet.contains(category.getParent())) + { + continue; + } + ((CategoryWriter) writer).printCategory( category, true); + } + else + { + writer.writeObject(object); + } + + } + + } + + + + + + + +} + + + diff --git a/src/org/rapla/storage/xml/RaplaMapReader.java b/src/org/rapla/storage/xml/RaplaMapReader.java new file mode 100644 index 0000000..6561cac --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaMapReader.java @@ -0,0 +1,105 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.configuration.internal.RaplaMapImpl; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; + +public class RaplaMapReader extends RaplaXMLReader { + + String key; + RaplaMapImpl entityMap; + RaplaXMLReader childReader; + + public RaplaMapReader(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void processElement(String namespaceURI,String localName,String qName,Attributes atts) + throws SAXException + { + if ( !RAPLA_NS.equals(namespaceURI)) + return; + if (localName.equals(RaplaMap.TYPE.getLocalName())) { + entityMap = new RaplaMapImpl(); + return; + } + if (localName.equals("mapentry")) { + key= getString(atts, "key"); + String value = getString( atts, "value", null); + if ( value != null) + { + entityMap.putString( key, value ); + } + return; + } + + String refid = getString( atts, "idref", null); + String keyref = getString( atts, "keyref", null); + RaplaType raplaType = getTypeForLocalName( localName ); + if ( refid != null) { + childReader = null; + // TODO We ignore the old references + if ( raplaType.equals( Appointment.TYPE) || raplaType.equals( Reservation.TYPE)) { + return; + } + Object id = getId( raplaType, refid); + entityMap.getReferenceHandler().putId( key, id); + } else if ( keyref != null) { + childReader = null; + DynamicType type = getDynamicType( keyref ); + if ( type != null) { + Object id = ((RefEntity) type).getId(); + entityMap.getReferenceHandler().putId( key, id); + } + } else { + childReader = getChildHandlerForType( raplaType ); + delegateElement( childReader, namespaceURI, localName, qName, atts); + } + + } + + public void processEnd(String namespaceURI,String localName,String qName) + throws SAXException + { + if ( !RAPLA_NS.equals(namespaceURI) ) + return; + + if ( childReader != null ) { + entityMap.getChildMap().put( key, childReader.getType()); + } + childReader = null; + } + + public RaplaMap getEntityMap() { + return entityMap; + } + public RaplaObject getType() { + //reservation.getReferenceHandler().put() + return getEntityMap(); + } + + +} + diff --git a/src/org/rapla/storage/xml/RaplaMapWriter.java b/src/org/rapla/storage/xml/RaplaMapWriter.java new file mode 100644 index 0000000..1e2c8ae --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaMapWriter.java @@ -0,0 +1,77 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.io.IOException; +import java.util.Iterator; + +import org.rapla.entities.RaplaObject; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class RaplaMapWriter extends RaplaXMLWriter { + + public RaplaMapWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void writeObject(RaplaObject type) throws IOException, RaplaException { + writeMap((RaplaMap) type ); + } + + public void writeMap(RaplaMap map ) throws IOException, RaplaException { + openElement("rapla:" + RaplaMap.TYPE.getLocalName()); + for (Iterator it = map.keySet().iterator();it.hasNext();) { + Object key = it.next(); + Object obj = (Object)map.get( key); + printEntityReference( key, obj); + } + closeElement("rapla:" + RaplaMap.TYPE.getLocalName()); + } + + private void printEntityReference(Object key,Object obj) throws RaplaException, IOException { + if (obj == null) + { + getLogger().warn( "Map contains empty value under key " + key ); + return; + } + int start = getIndentLevel(); + openTag("rapla:mapentry"); + att("key", key.toString()); + if ( obj instanceof String) + { + String value = (String) obj; + att("value", value); + closeElementTag(); + return; + } + closeTag(); + if ( obj instanceof RefEntity ) { + printReference( (RefEntity) obj); + } else { + RaplaObject raplaObj = (RaplaObject) obj; + getWriterFor( raplaObj.getRaplaType()).writeObject( raplaObj ); + } + setIndentLevel( start+1 ); + closeElement("rapla:mapentry"); + setIndentLevel( start ); + } + + } + + + diff --git a/src/org/rapla/storage/xml/RaplaSAXPipeline.java b/src/org/rapla/storage/xml/RaplaSAXPipeline.java new file mode 100644 index 0000000..d1a3793 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaSAXPipeline.java @@ -0,0 +1,265 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml; + +import java.util.*; +import java.io.*; +import java.net.URL; + +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.sax.SAXTransformerFactory; +import javax.xml.transform.sax.SAXSource; +import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.TransformerException; + +import org.xml.sax.SAXParseException; +import org.xml.sax.ErrorHandler; +import org.xml.sax.XMLReader; +import org.xml.sax.XMLFilter; +import org.xml.sax.ContentHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.XMLFilterImpl; + +import org.apache.avalon.framework.logger.Logger; +import org.apache.avalon.framework.logger.LogEnabled; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.xml.XMLReaderAdapter; +import org.rapla.components.util.xml.XMLTransformerAdapter; +import org.rapla.framework.RaplaException; + +class RaplaSAXPipeline implements LogEnabled { + Vector filters = new Vector(); + String factoryName; + XMLFilter mainFilter; + RaplaErrorHandler errorHandler; + String xmlParser; + + SAXTransformerFactory stf; + XMLReader stylesheetReader; + + Logger logger = null; + + RaplaSAXPipeline() { + mainFilter = new XMLFilterImpl(); + errorHandler = new RaplaErrorHandler(); + } + + public void enableLogging(Logger logger) { + this.logger = logger; + errorHandler.enableLogging(logger); + } + + private Transformer createTransformer(InputSource in) throws RaplaException,SAXException { + SAXTransformerFactory stf = XMLTransformerAdapter.getTransformerFactory(); + try { + if (stylesheetReader == null) { + stylesheetReader = XMLReaderAdapter.createXMLReader(false); + } + return stf.newTransformer(new SAXSource(stylesheetReader,in)); + } catch (TransformerConfigurationException ex) { + throw new RaplaException(ex); + } + } + + public void addTransformer(URL file) + throws RaplaException + ,IOException + ,SAXException + { + addTransformer(file,new String[0][2]); + } + + public void addTransformer(URL file,String[][] parameter) + throws RaplaException + ,IOException + ,SAXException + { + if (logger != null && logger.isInfoEnabled()) + logger.info("Creating new transformer with stylesheet '" + file + "'"); + Transformer transformer = createTransformer(new InputSource(file.toString())); + for (int i=0;i"); + ident = ident + " "; + super.startElement(uri,localName,qName,atts); + copy.startElement(uri,localName,qName,atts); + } + + public void endElement(String uri,String localName,String qName) throws SAXException { + ident = ident.substring(1); + System.out.print( ident + "" ); + super.endElement(uri,localName,qName); + copy.endElement(uri,localName,qName); + } + + public void startDocument() throws SAXException { + System.out.println("Start document"); + super.startDocument(); + copy.startDocument(); + } + public void endDocument() throws SAXException { + super.endDocument(); + copy.endDocument(); + } + public void startPrefixMapping(String prefix,String uri) throws SAXException { + super.startPrefixMapping(prefix,uri); + copy. startPrefixMapping(prefix,uri); + } + public void endPrefixMapping(String prefix) throws SAXException { + super.endPrefixMapping(prefix); + copy.endPrefixMapping(prefix); + } + public void characters(char[] ch,int start,int length) throws SAXException { + super.characters(ch,start,length); + copy.characters(ch,start,length); + } + public void ignorableWhitespace(char[] ch,int start,int length) throws SAXException { + super.ignorableWhitespace(ch,start,length); + copy.ignorableWhitespace(ch,start,length); + } + public void processingInstruction(String target,String data) throws SAXException { + super.processingInstruction(target,data); + copy.processingInstruction(target,data); + } + public void skippedEntity(String name) throws SAXException { + super.skippedEntity(name); + copy.skippedEntity(name); + } + public void setDocumentLocator(Locator locator) { + super.setDocumentLocator(locator); + copy.setDocumentLocator(locator); + } + + public void setErrorHandler(ErrorHandler handler) { + super.setErrorHandler(handler); + copy.setErrorHandler(handler); + } + + public XMLFilter getCopy() { + return copy; + } +} +*/ +class RaplaErrorHandler implements ErrorHandler,LogEnabled { + Logger logger = null; + public void enableLogging(Logger logger) { + this.logger = logger; + } + + public void error(SAXParseException exception) throws SAXException { + throw exception; + } + + public void fatalError(SAXParseException exception) throws SAXException { + throw exception; + } + + public void warning(SAXParseException exception) throws SAXException { + if (logger != null) + logger.error("Warning: " + getString(exception)); + } + + public String getString(SAXParseException exception) { + // return "Line " + exception.getLineNumber() + // + "\t Col " + exception.getColumnNumber() + // + "\t " + + return exception.getMessage(); + } +} diff --git a/src/org/rapla/storage/xml/RaplaXMLReader.java b/src/org/rapla/storage/xml/RaplaXMLReader.java new file mode 100644 index 0000000..2599f30 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaXMLReader.java @@ -0,0 +1,329 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.text.ParseException; +import java.util.Date; +import java.util.Map; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.entities.Category; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.internal.AttributeImpl; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.entities.storage.EntityResolver; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.storage.IdTable; +import org.rapla.storage.LocalCache; +import org.rapla.storage.impl.EntityStore; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +public class RaplaXMLReader extends DelegationHandler implements Namespaces +{ + EntityStore resolver; + Logger logger; + IdTable idTable; + RaplaContext sm; + Map localnameMap; + Map readerMap; + SerializableDateTimeFormat dateTimeFormat; + + public RaplaXMLReader( RaplaContext context ) throws RaplaException + { + logger = (Logger) context.lookup( Logger.class.getName() ); + this.sm = context; + this.resolver = (EntityStore) context.lookup( EntityStore.class.getName()); + this.idTable = (IdTable) context.lookup( IdTable.class.getName() ); + RaplaLocale raplaLocale = (RaplaLocale) context.lookup( RaplaLocale.ROLE ); + dateTimeFormat = new SerializableDateTimeFormat( raplaLocale.createCalendar() ); + this.localnameMap = (Map) context.lookup( PreferenceReader.LOCALNAMEMAPENTRY ); + this.readerMap = (Map) context.lookup( PreferenceReader.READERMAP ); + } + + public RaplaType getTypeForLocalName( String localName ) + throws SAXParseException + { + RaplaType type = (RaplaType) localnameMap.get( localName ); + if (type == null) + throw createSAXParseException( "No type declared for localname " + localName ); + return type; + } + + /** + * @param raplaType + * @throws SAXParseException + */ + protected RaplaXMLReader getChildHandlerForType( RaplaType raplaType ) + throws SAXParseException + { + RaplaXMLReader childReader = (RaplaXMLReader) readerMap.get( raplaType ); + if (childReader == null) + { + throw createSAXParseException( "No Reader declared for type " + raplaType ); + } + childReader.setDocumentLocator( getLocator() ); + addChildHandler( childReader ); + return childReader; + } + + protected Logger getLogger() + { + return logger; + } + + + + protected boolean isContentCategoryId( String content ) + { + if ( content == null) + { + return false; + } + content = content.trim(); + String KEY_START = Category.TYPE.getLocalName() + "_"; + boolean idContent = (content.indexOf( KEY_START )< 2 && content.length() < KEY_START.length() + 5 && content.length() > 0); + return idContent; + } + + + public Long parseLong( String text ) throws SAXException + { + try + { + return new Long( text ); + } + catch (NumberFormatException ex) + { + throw createSAXParseException( "No valid number format: " + text ); + } + } + + public Date parseDate( String date, boolean fillDate ) throws SAXException + { + try + { + return dateTimeFormat.parseDate( date, fillDate ); + } + catch (ParseException ex) + { + throw createSAXParseException( ex.getMessage() ); + } + } + + public Date parseDateTime( String date, String time ) throws SAXException + { + try + { + return dateTimeFormat.parseDateTime( date, time ); + } + catch (ParseException ex) + { + throw createSAXParseException( ex.getMessage() ); + } + } + + + + protected String getString( + Attributes atts, + String key, + String defaultString ) + { + String str = atts.getValue( "", key ); + return (str != null) ? str : defaultString; + } + + protected String getString( Attributes atts, String key ) + throws SAXParseException + { + String str = atts.getValue( "", key ); + if (str == null) + throw createSAXParseException( "Attribute " + key + " not found!" ); + return str; + } + + /** return the new id */ + protected Object setId( RefEntity entity, Attributes atts ) + throws SAXException + { + String idString = atts.getValue( "id" ); + Object id = getId( entity.getRaplaType(), idString ); + entity.setId( id ); + return id; + } + + protected void setVersionIfThere( RefEntity entity, Attributes atts ) + throws SAXException + { + String version= atts.getValue( "version" ); + if ( version != null) + { + try { + entity.setVersion( Long.parseLong( version)); + } + catch (NumberFormatException ex) + { + createSAXParseException( "Error parsing version-string '" + version + "'"); + } + } + } + + /** return the new id */ + protected Object setNewId( RefEntity entity ) throws SAXException + { + try + { + Object id = idTable.createId( entity.getRaplaType() ); + entity.setId( id ); + return id; + } + catch (RaplaException ex) + { + throw createSAXParseException( ex.getMessage() ); + } + } + + protected void setOwner( Ownable ownable, Attributes atts ) + throws SAXException + { + String ownerString = atts.getValue( "owner" ); + if (ownerString != null) + { + ownable.setOwner( (User) resolve( User.TYPE, ownerString ) ); + } + } + + + protected Object getId( RaplaType type, String str ) throws SAXException + { + try + { + Object id = LocalCache.getId( type, str ); + return id; + } + catch (ParseException ex) + { + ex.printStackTrace(); + throw createSAXParseException( ex.getMessage() ); + } + } + + void throwEntityNotFound( String type, Integer id ) throws SAXException + { + throw createSAXParseException( type + " with id '" + id + "' not found." ); + } + + public RaplaObject getType() throws SAXException + { + throw createSAXParseException( "Method getType() not implemented by subclass " + this.getClass().getName() ); + } + + protected CategoryImpl getSuperCategory() + { + return resolver.getSuperCategory(); + } + + public DynamicType getDynamicType( String keyref ) + { + return resolver.getDynamicType( keyref); + } + + protected Object resolve( RaplaType type, String str ) throws SAXException + { + try + { + return resolver.resolve( getId( type, str ) ); + } + catch (EntityNotFoundException ex) + { + throw createSAXParseException( ex.getMessage() ); + } + } + + protected Object parseAttributeValue( Attribute attribute, String text ) throws SAXException + { + try + { + EntityResolver resolver = null; + if (isContentCategoryId( text)) + resolver = this.resolver; + return AttributeImpl.parseAttributeValue( attribute, text, resolver ); + } + catch (ParseException ex) + { + throw createSAXParseException( ex.getMessage() ); + } + } + + public void add(RefEntity entity){ + resolver.put(entity); + } + + public void remove(String localname, String id) throws SAXException + { + RaplaType type = getTypeForLocalName( localname); + Object idObject = getId( type, id ); + resolver.addRemoveId( idObject ); + } + + protected Category getCategoryFromPath( String path ) throws SAXParseException + { + try + { + return getSuperCategory().getCategoryFromPath( path ); + } + catch (Exception ex) + { + throw createSAXParseException( ex.getMessage() ); + } + } + + protected Category getGroup(String groupKey) throws SAXParseException{ + CategoryImpl groupCategory = (CategoryImpl) getSuperCategory().getCategory( + Permission.GROUP_CATEGORY_KEY ); + if (groupCategory == null) + { + throw createSAXParseException( Permission.GROUP_CATEGORY_KEY + " category not found" ); + } + try + { + return groupCategory.getCategoryFromPath( groupKey ); + } + catch (Exception ex) + { + throw createSAXParseException( ex ); + } + } + + + protected void putPassword( Object userid, String password ) + { + resolver.putPassword( userid, password); + } + + +} diff --git a/src/org/rapla/storage/xml/RaplaXMLWriter.java b/src/org/rapla/storage/xml/RaplaXMLWriter.java new file mode 100644 index 0000000..29aaa56 --- /dev/null +++ b/src/org/rapla/storage/xml/RaplaXMLWriter.java @@ -0,0 +1,258 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml; + +import java.io.IOException; +import java.util.Date; +import java.util.Iterator; +import java.util.Map; + +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.Assert; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.components.util.xml.XMLWriter; +import org.rapla.entities.Annotatable; +import org.rapla.entities.Category; +import org.rapla.entities.MultiLanguageName; +import org.rapla.entities.Ownable; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.Timestamp; +import org.rapla.entities.User; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.storage.LocalCache; +import org.xml.sax.helpers.NamespaceSupport; + +/** Stores the data from the local cache in XML-format to a print-writer.*/ +abstract public class RaplaXMLWriter extends XMLWriter + implements Namespaces +{ + protected LocalCache cache; + + String encoding = "utf-8"; + final static String OUTPUT_FILE_VERSION="1.0"; + protected NamespaceSupport namespaceSupport = new NamespaceSupport(); + private boolean isIdOnly; + private boolean printVersion; + private Map localnameMap; + Logger logger; + Map writerMap; + protected RaplaContext sm; + public SerializableDateTimeFormat dateTimeFormat; + public RaplaXMLWriter( RaplaContext sm) throws RaplaException { + this.sm = sm; + enableLogging( (Logger) sm.lookup( Logger.class.getName())); + this.writerMap = (Map) sm.lookup( PreferenceWriter.WRITERMAP ); + RaplaLocale raplaLocale = (RaplaLocale) sm.lookup(RaplaLocale.ROLE); + dateTimeFormat = new SerializableDateTimeFormat(raplaLocale.createCalendar()); + this.localnameMap = (Map) sm.lookup(PreferenceReader.LOCALNAMEMAPENTRY); + this.cache = (LocalCache) sm.lookup(LocalCache.class.getName()); + this.isIdOnly = sm.has("idonly"); + this.printVersion = sm.has("printversion"); + Assert.notNull(cache); + + namespaceSupport.pushContext(); + for (int i=0;i 0) + { + Appointment[] apps = (Appointment[]) + restrictionsOldSchema.toArray( Appointment.EMPTY_ARRAY ); + reservation.setRestrictionForId( allocatableId, apps ); + } + } + } +} + + + + diff --git a/src/org/rapla/storage/xml/ReservationWriter.java b/src/org/rapla/storage/xml/ReservationWriter.java new file mode 100644 index 0000000..b19b83b --- /dev/null +++ b/src/org/rapla/storage/xml/ReservationWriter.java @@ -0,0 +1,152 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.storage.xml; + +import java.io.IOException; +import java.util.Date; +import java.util.Iterator; + +import org.rapla.entities.RaplaObject; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class ReservationWriter extends ClassifiableWriter { + public ReservationWriter(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected void printReservation(Reservation r) throws IOException,RaplaException { + openTag("rapla:reservation"); + printId(r); + printVersion( r); + printOwner(r); + printTimestamp(r); + closeTag(); + // System.out.println(((Entity)r).getId() + " Name: " + r.getName() +" User: " + r.getUser()); + printClassification(r.getClassification()); + { + Appointment[] appointments = r.getAppointments(); + for (int i = 0; i< appointments.length; i ++) { + printAppointment(appointments[i]); + } + } + + Allocatable[] allocatables = r.getAllocatables(); + // Print allocatables that dont have a restriction + for (int i=0; i< allocatables.length; i ++) { + Allocatable allocatable = allocatables[i]; + if (r.getRestriction( allocatable ).length > 0 ) + { + continue; + } + openTag("rapla:allocate"); + printIdRef( allocatable ); + closeElementTag(); + } + + closeElement("rapla:reservation"); + } + + public void writeObject( RaplaObject object ) throws IOException, RaplaException + { + printReservation( (Reservation) object); + } + + protected void printAppointment(Appointment appointment) throws IOException,RaplaException { + openTag("rapla:appointment"); + if (isIdOnly()) { + printId( appointment ); + } + printVersion( appointment); + + att("start-date",dateTimeFormat.formatDate( appointment.getStart())); + + if (appointment.isWholeDaysSet()) { + boolean bCut = appointment.getEnd().after(appointment.getStart()); + att("end-date",dateTimeFormat.formatDate(appointment.getEnd(),bCut)); + } else { + att("start-time",dateTimeFormat.formatTime( appointment.getStart())); + att("end-date",dateTimeFormat.formatDate( appointment.getEnd())); + att("end-time",dateTimeFormat.formatTime( appointment.getEnd())); + } + + Allocatable[] allocatables = appointment.getReservation().getRestrictedAllocatables(appointment); + if (appointment.getRepeating() == null && allocatables.length == 0) + { + closeElementTag(); + } + else + { + closeTag(); + if (appointment.getRepeating() != null) { + printRepeating(appointment.getRepeating()); + } + for (int i=0; i< allocatables.length; i ++) { + Allocatable allocatable = allocatables[i]; + openTag("rapla:allocate"); + printIdRef( allocatable ); + closeElementTag(); + } + closeElement("rapla:appointment"); + } + } + + private void printRepeating(Repeating r) throws IOException { + openTag("rapla:repeating"); + if (r.getInterval()!=1) + att("interval",String.valueOf(r.getInterval())); + att("type",r.getType().toString()); + if (r.isFixedNumber()) { + att("number",String.valueOf(r.getNumber())); + } else { + if (r.getEnd() != null) + att("end-date" + ,dateTimeFormat.formatDate(r.getEnd(),true)); + } + Date[] exceptions = r.getExceptions(); + if (exceptions.length==0) { + closeElementTag(); + return; + } + closeTag(); + for (int i=0;i"); + Iterator it = cache.getIterator(User.TYPE); + while (it.hasNext()) { + printUser((User) it.next(), true); + } + closeElement("rapla:users"); + } + + + +} + + diff --git a/src/org/rapla/storage/xml/WrongVersionException.java b/src/org/rapla/storage/xml/WrongVersionException.java new file mode 100644 index 0000000..20e6610 --- /dev/null +++ b/src/org/rapla/storage/xml/WrongVersionException.java @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org . | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml; + +class WrongVersionException extends Exception { + private static final long serialVersionUID = 1L; + + String version; + public WrongVersionException(String version) { + super("Wrong Version Exception " + version); + this.version = version; + } + + public String getVersion() { + return version; + } + +} diff --git a/src/org/rapla/storage/xml/convert0_4to0_5.xsl b/src/org/rapla/storage/xml/convert0_4to0_5.xsl new file mode 100644 index 0000000..9a6d3de --- /dev/null +++ b/src/org/rapla/storage/xml/convert0_4to0_5.xsl @@ -0,0 +1,232 @@ + + + + + + + 0.5 + + + + + + + + default resource + Standard Ressource + + {name} + + + name + Name + + + + + + + person + Person + + {surname} {forename} + + + + title + Titel + + + + + surname + Nachname + + + + forename + Vorname + + + + + + + default reservation + Standard Reservierung + + {name} + + + eventname + Veranstaltungsname + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {surname} {forename} + + + title + Titel + + + + surname + Nachname + + + + forename + Vorname + + + + + + + {name} + + + name + Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/org/rapla/storage/xml/convert0_5to0_6.xsl b/src/org/rapla/storage/xml/convert0_5to0_6.xsl new file mode 100644 index 0000000..069ba31 --- /dev/null +++ b/src/org/rapla/storage/xml/convert0_5to0_6.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + allocate + + + + + \ No newline at end of file diff --git a/src/org/rapla/storage/xml/convert0_6to0_7.xsl b/src/org/rapla/storage/xml/convert0_6to0_7.xsl new file mode 100644 index 0000000..b0d8d30 --- /dev/null +++ b/src/org/rapla/storage/xml/convert0_6to0_7.xsl @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Benutzergruppen + user-groups + + + + + + + + + + + + + + + + + diff --git a/src/org/rapla/storage/xml/convert0_7to0_8.xsl b/src/org/rapla/storage/xml/convert0_7to0_8.xsl new file mode 100644 index 0000000..8338856 --- /dev/null +++ b/src/org/rapla/storage/xml/convert0_7to0_8.xsl @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Benutzergruppen + user-groups + + + + + + + + + diff --git a/src/org/rapla/storage/xml/convert0_8to0_9.xsl b/src/org/rapla/storage/xml/convert0_8to0_9.xsl new file mode 100644 index 0000000..bde9fad --- /dev/null +++ b/src/org/rapla/storage/xml/convert0_8to0_9.xsl @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + register resources + Ressourcen eintragen + Enregistrer des ressources + + + + + modify preferences + Einstellungen bearbeiten + Modifier la préférence + + + + + + + + diff --git a/src/org/rapla/storage/xml/convert0_9to1_0.xsl b/src/org/rapla/storage/xml/convert0_9to1_0.xsl new file mode 100644 index 0000000..a868bd6 --- /dev/null +++ b/src/org/rapla/storage/xml/convert0_9to1_0.xsl @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/org/rapla/storage/xml/rapla.rng b/src/org/rapla/storage/xml/rapla.rng new file mode 100644 index 0000000..af3982d --- /dev/null +++ b/src/org/rapla/storage/xml/rapla.rng @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/org/rapla/storage/xml/relax.rng b/src/org/rapla/storage/xml/relax.rng new file mode 100644 index 0000000..220d29a --- /dev/null +++ b/src/org/rapla/storage/xml/relax.rng @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +choice +interleave + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/javadoc.css b/templates/javadoc.css new file mode 100644 index 0000000..e97587b --- /dev/null +++ b/templates/javadoc.css @@ -0,0 +1,23 @@ +/* Rapla Javadoc style sheet */ + +/* Page background color */ +body { background-color: #FFFFFF } + +/* Table colors */ +.TableHeadingColor { background: #D0D0D0 } +.TableSubHeadingColor { background: #E0E0E0 } + +/* Navigation bar fonts and colors */ +.NavBarCell1 { background-color:#4c9b4c;} +.NavBarCell1Rev { background-color:#A0A0A0;} +.NavBarFont1 { font-family: Verdana, sans-serif; color:#000000;} +.NavBarFont1Rev { font-family: Verdana, sans-serif; color:#FFFFFF;} +.NavBarCell2 { font-family: Verdana, sans-serif; background-color:#D0D0D0;} +.NavBarCell3 { font-family: Verdana, sans-serif; background-color:#F0F0F0;} + +/* Font used in left-hand frame lists */ +.FrameTitleFont { font-size: normal; font-family: Verdana, sans-serif } +.FrameHeadingFont { font-size: normal; font-family: Verdana, sans-serif } +.FrameItemFont { font-size: 80%; font-family: Verdana, sans-serif } + + diff --git a/templates/rapla.exe b/templates/rapla.exe new file mode 100644 index 0000000000000000000000000000000000000000..9b280007105242568575c03fccd9de232096a225 GIT binary patch literal 74752 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 literal 0 HcmV?d00001 diff --git a/templates/scripts/rapla_bat b/templates/scripts/rapla_bat new file mode 100644 index 0000000..c8a3dfc --- /dev/null +++ b/templates/scripts/rapla_bat @@ -0,0 +1,20 @@ +@echo off +:: ------------------------------------------------------------------------- +:: start.bat +:: Script for starting @doc.name@ Version @doc.version@ under Windows +:: Set either JAVA_HOME to point at your Java Development Kit installation. +:: or PATH to point at the java command +:: +set _PROG_DIR=%~dp0 +echo PROG_DIR %_PROG_DIR% +set RAPLA_JAVA=%JAVA_HOME%\bin\ +if not "%JAVA_HOME%" == "" goto gotJavaHome + set RAPLA_JAVA="" +:gotJavaHome +set RAPLA_JAVA_OPTIONS=%JAVA_OPTIONS% +if not "%JAVA_OPTIONS%" == "" goto gotJavaOptions + set RAPLA_JAVA_OPTIONS="-Xmx128M" +:gotJavaOptions +cd %_PROG_DIR% +"%RAPLA_JAVA%java" %RAPLA_JAVA_OPTIONS% -jar raplabootstrap.jar %1 %2 %3 %4 + diff --git a/templates/scripts/rapla_sh b/templates/scripts/rapla_sh new file mode 100644 index 0000000..44d499c --- /dev/null +++ b/templates/scripts/rapla_sh @@ -0,0 +1,47 @@ +#!/bin/sh +# +# Script for starting @doc.name@ version @doc.version@ under Unix +# Set either JAVA_HOME to point at your Java Development Kit installation. +# or PATH to point at the java command + +# resolve links - $0 may be a softlink +PRG="$0" +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '.*/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`/"$link" + fi +done +PRGDIR=`dirname "$PRG"` + +if [ -z "$JAVA_HOME" ] ; then + JAVA=`which java` + if [ -z "$JAVA" ] ; then + echo "Cannot find JAVA. You must set JAVA_HOME to point at your Java Development Kit installation." + exit 1 + fi + JAVA_BINDIR=`dirname $JAVA` + JAVA_HOME=$JAVA_BINDIR/.. + echo "Guessing JAVA_HOME:" $JAVA_HOME +fi +if [ -z "$JAVA_OPTIONS" ] ; then + JAVA_OPTIONS="-Xmx128M" + echo "Guessing JAVA_OPTIONS:" $JAVA_HOME +fi + +if [ ! -x $PRGDIR/webapp ] ; then + chmod +x $PRGDIR/webapp +fi +if [ ! -x $PRGDIR/webapp/WEB-INF ] ; then + chmod +x $PRGDIR/webapp/WEB-INF +fi +if [ ! -x $PRGDIR/webapp/WEB-INF/lib ] ; then + chmod +x $PRGDIR/webapp/WEB-INF/lib +fi + +echo "PROGDIR" $PRGDIR +cd $PRGDIR +$JAVA_HOME/bin/java $JAVA_OPTIONS -jar raplabootstrap.jar $1 $2 $3 $4 diff --git a/templates/scripts/raplaclient_bat b/templates/scripts/raplaclient_bat new file mode 100644 index 0000000..1c560e5 --- /dev/null +++ b/templates/scripts/raplaclient_bat @@ -0,0 +1,3 @@ +cls +echo webapp/webclient/raplaclient.xconf is used check remote server settings +call rapla.bat client %1 %2 %3 %4 \ No newline at end of file diff --git a/templates/scripts/raplaexport_bat b/templates/scripts/raplaexport_bat new file mode 100644 index 0000000..2e686ea --- /dev/null +++ b/templates/scripts/raplaexport_bat @@ -0,0 +1,5 @@ +cls +echo raplaserver.xconf is used check file and sql settings +pause +call rapla.bat -c .\webapp\WEB-INF\raplaserver.xconf export +pause \ No newline at end of file diff --git a/templates/scripts/raplaimport_bat b/templates/scripts/raplaimport_bat new file mode 100644 index 0000000..090a4d5 --- /dev/null +++ b/templates/scripts/raplaimport_bat @@ -0,0 +1,5 @@ +cls +echo raplaserver.xconf is used check file and sql settings +pause +call rapla.bat -c .\webapp\WEB-INF\raplaserver.xconf import +pause \ No newline at end of file diff --git a/templates/scripts/raplaserver_bat b/templates/scripts/raplaserver_bat new file mode 100644 index 0000000..98336f8 --- /dev/null +++ b/templates/scripts/raplaserver_bat @@ -0,0 +1,33 @@ +@echo off +:: ------------------------------------------------------------------------- +:: startserver.bat +:: Script for starting @doc.name@ Version @doc.version@ server under Windows +:: Set either JAVA_HOME to point at your Java Development Kit installation. +:: or PATH to point at the java command +:: +set _PROG_DIR=%~dp0 +echo PROG_DIR %_PROG_DIR% +set RAPLA_JAVA=%JAVA_HOME%\bin\ +if not "%JAVA_HOME%" == "" goto gotJavaHome + set RAPLA_JAVA="" +:gotJavaHome +set RAPLA_JAVA_OPTIONS=%JAVA_OPTIONS% +if not "%JAVA_OPTIONS%" == "" goto gotJavaOptions + set RAPLA_JAVA_OPTIONS="-Xmx512M" +:gotJavaOptions + +:: Backward compatibility for old versions +if not "%1" == "import" goto conti1 + call rapla.bat import +goto finish +:conti1 +if not "%1" == "export" goto conti2 + call rapla.bat export +goto finish +:conti2 + +echo USING OPTIONS %RAPLA_JAVA_OPTIONS% +cd %_PROG_DIR% +"%RAPLA_JAVA%java" %RAPLA_JAVA_OPTIONS% -cp raplabootstrap.jar org.rapla.bootstrap.RaplaServerLoader %1 %2 %3 %4 +:finish + diff --git a/templates/scripts/raplaserver_sh b/templates/scripts/raplaserver_sh new file mode 100644 index 0000000..2c8c92e --- /dev/null +++ b/templates/scripts/raplaserver_sh @@ -0,0 +1,156 @@ +#!/bin/sh +# +# Script for starting @doc.name@ version @doc.version@ with jetty webserver under Unix +# Set either JAVA_HOME to point at your Java Development Kit installation. +# or PATH to point at the java command +usage() +{ + echo "Usage: $0 {run|start|stop|restart|supervise} " + echo "run : starts rapla-server and wait for Control-c " + echo "start : starts rapla-server in the background (use only when run works)" + echo "stop : stops rapla-server in the background " + echo "restart : calls stop then start " + echo "import : imports the data from xml-file into the database " + echo "export : exports the data from the database into the xml-file" + exit 1 +} + +################################################## +# Find directory function +################################################## +findDirectory() +{ + OP=$1 + shift + for L in $* ; do + [ $OP $L ] || continue + echo $L + break + done +} + + +# ----- Verify and Set Required Environment Variables ------------------------- + +PRG=$0 +ACTION=$1 + + +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '.*/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`/"$link" + fi +done +PRGDIR=`dirname "$PRG"` + +if [ -z "$JAVA_HOME" ] ; then + JAVA=`which java` + if [ -z "$JAVA" ] ; then + echo "Cannot find JAVA. You must set JAVA_HOME to point at your Java Development Kit installation." + exit 1 + fi + JAVA_BINDIR=`dirname $JAVA` + JAVA_HOME=$JAVA_BINDIR/.. + echo "Guessing JAVA_HOME:" $JAVA_HOME +fi +if [ -z "$JAVA_OPTIONS" ] ; then + JAVA_OPTIONS="-Xmx512M" + echo "Guessing JAVA_OPTIONS:" $JAVA_OPTIONS +fi + +JAVA="$JAVA_HOME/bin/java" +echo "PROGDIR" $PRGDIR +cd $PRGDIR +RUN_CMD="$JAVA $JAVA_OPTIONS -cp raplabootstrap.jar -Djava.awt.headless=true org.rapla.bootstrap.RaplaServerLoader" + +##################################################### +# Find a location for the pid file +##################################################### +if [ -z "$JETTY_RUN" ] +then + JETTY_RUN=`findDirectory -w /var/run /usr/var/run .` +fi + +##################################################### +# Find a PID for the pid file +##################################################### +if [ -z "$JETTY_PID" ] +then + JETTY_PID="$JETTY_RUN/raplajetty.pid" +fi + +##################################################### +# Find a location for the jetty console +##################################################### +if [ -z "$JETTY_CONSOLE" ] +then + if [ -w /dev/console ] + then + JETTY_CONSOLE=/dev/console + else + JETTY_CONSOLE=/dev/tty + fi +fi + + +# ----- Do the action ---------------------------------------------------------- + +################################################## +# Do the action +################################################## +case "$ACTION" in + import) + $PRGDIR/rapla.sh import + ;; + export) + $PRGDIR/rapla.sh export + ;; + start) + if [ -f $JETTY_PID ] + then + echo "WARNING $JETTY_PID found. Jetty is probably running!!" + fi + echo "Running Rapla in Jetty: " $RUN_CMD + exec $RUN_CMD >>$JETTY_CONSOLE 2>&1 1>/dev/null & + echo $! > $JETTY_PID + echo "Jetty running pid="`cat $JETTY_PID` + ;; + stop) + PID=`cat $JETTY_PID 2>/dev/null` + echo "Shutting down Jetty: $PID" + kill $PID 2>/dev/null + sleep 2 + kill -9 $PID 2>/dev/null + rm -f $JETTY_PID + echo "STOPPED `date`" >>$JETTY_CONSOLE + ;; + + restart) + $0 stop $* + sleep 5 + $0 start $* + ;; + + supervise) + # + # Under control of daemontools supervise monitor which + # handles restarts and shutdowns via the svc program. + # + exec $RUN_CMD + ;; + + run) + echo "Running Rapla in Jetty: " $RUN_CMD + exec $RUN_CMD + ;; + +*) + usage + ;; +esac + +exit 0 diff --git a/test-src/org/rapla/CommunicatorTest.java b/test-src/org/rapla/CommunicatorTest.java new file mode 100644 index 0000000..e810cb5 --- /dev/null +++ b/test-src/org/rapla/CommunicatorTest.java @@ -0,0 +1,128 @@ +package org.rapla; + +import java.util.Date; + +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaContext; +import org.rapla.storage.dbrm.RemoteOperator; + +public class CommunicatorTest extends ServletTestBase +{ + + public CommunicatorTest( String name ) + { + super( name ); + } + + + public void testLargeform() throws Exception + { + ClientFacade facade = (ClientFacade)getContext().lookup(ClientFacade.ROLE + "/remote-facade-3"); + facade.login("homer","duffs".toCharArray()); + Allocatable alloc = facade.newResource(); + StringBuffer buf = new StringBuffer(); + int stringsize = 100000; + for (int i=0;i< stringsize;i++) + { + buf.append( "xxxxxxxxxx"); + } + String verylongname = buf.toString(); + alloc.getClassification().setValue("name", verylongname); + facade.store( alloc); + } + + + public void testClient() throws Exception + { + ClientFacade facade = (ClientFacade)getContext().lookup(ClientFacade.ROLE + "/remote-facade-3"); + boolean success = facade.login("admin","test".toCharArray()); + assertFalse( "Login should fail",success ); + facade.login("homer","duffs".toCharArray()); + try + { + Preferences preferences = (Preferences)facade.edit( facade.getPreferences( null)); + preferences.putEntry("test-entry", "test-value"); + + facade.store( preferences); + preferences = (Preferences)facade.edit( facade.getPreferences( null)); + preferences.putEntry("test-entry", "test-value"); + facade.store( preferences); + + Allocatable[] allocatables = facade.getAllocatables(); + assertTrue( allocatables.length > 0); + Reservation[] events = facade.getReservations( new Allocatable[] {allocatables[0]}, null,null); + assertTrue( events.length > 0); + + Reservation r = events[0]; + Reservation editable = (Reservation)facade.edit( r); + facade.store( editable ); + + Reservation newEvent = facade.newReservation(); + Appointment newApp = facade.newAppointment( new Date(), new Date()); + newEvent.addAppointment( newApp ); + newEvent.getClassification().setValue("name","Test Reservation"); + newEvent.addAllocatable( allocatables[0]); + + facade.store( newEvent ); + facade.remove( newEvent); + } + finally + { + facade.logout(); + } + } + + public void testUmlaute() throws Exception + { + ClientFacade facade = (ClientFacade)getContext().lookup(ClientFacade.ROLE + "/remote-facade-3"); + facade.login("homer","duffs".toCharArray()); + Allocatable alloc = facade.newResource(); + String typeName = alloc.getClassification().getType().getElementKey(); + String nameWithUmlaute = ""; + alloc.getClassification().setValue("name", nameWithUmlaute); + int allocSizeBefore = facade.getAllocatables().length; + facade.store( alloc); + + facade.logout(); + facade.login("homer","duffs".toCharArray()); + DynamicType type = facade.getDynamicType( typeName); + ClassificationFilter filter = type.newClassificationFilter(); + filter.addEqualsRule("name", nameWithUmlaute); + Allocatable[] allAllocs = facade.getAllocatables(); + assertEquals( allocSizeBefore + 1, allAllocs.length); + Allocatable[] allocs = facade.getAllocatables( new ClassificationFilter[] {filter}); + assertEquals( 1, allocs.length); + + } + public void testManyClients() throws Exception + { + RaplaContext context = getContext(); + int clientNum = 50; + RemoteOperator [] opts = new RemoteOperator[ clientNum]; + DefaultConfiguration remoteConfig = new DefaultConfiguration("element"); + DefaultConfiguration serverParam = new DefaultConfiguration("server"); + serverParam.setValue("http://localhost:8051/"); + remoteConfig.addChild( serverParam ); + for ( int i=0;i 0); + } + +} + + + + + diff --git a/test-src/org/rapla/RaplaLocaleTest.java b/test-src/org/rapla/RaplaLocaleTest.java new file mode 100644 index 0000000..06bd8a5 --- /dev/null +++ b/test-src/org/rapla/RaplaLocaleTest.java @@ -0,0 +1,78 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla; +import java.text.ParseException; +import java.util.Calendar; +import java.util.Locale; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; + +public class RaplaLocaleTest extends TestCase { + DefaultConfiguration config; + + public RaplaLocaleTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(RaplaLocaleTest.class); + } + + private DefaultConfiguration createConfig(String defaultLanguage,String countryString) { + DefaultConfiguration config = new DefaultConfiguration("locale",this.toString()); + DefaultConfiguration country = new DefaultConfiguration("country",this.toString()); + country.setValue(countryString); + config.addChild(country); + DefaultConfiguration languages = new DefaultConfiguration("languages",this.toString()); + config.addChild(languages); + languages.setAttribute("default",defaultLanguage); + DefaultConfiguration language1 = new DefaultConfiguration("language",this.toString()); + language1.setValue("de"); + DefaultConfiguration language2 = new DefaultConfiguration("language",this.toString()); + language2.setValue("en"); + languages.addChild(language1); + languages.addChild(language2); + return config; + } + + public void testDateFormat3() throws ParseException, RaplaException { + RaplaLocale raplaLocale = new RaplaLocaleImpl(createConfig("de","DE")); + String s = raplaLocale.formatDate(new SerializableDateTimeFormat().parseDate("2001-01-12",false)); + assertEquals( "12.01.01", s); + } + + public void testTimeFormat4() throws ParseException, RaplaException { + RaplaLocale raplaLocale= new RaplaLocaleImpl(createConfig("en","US")); + Calendar cal = Calendar.getInstance(raplaLocale.getTimeZone() + ,Locale.US); + cal.set(Calendar.HOUR_OF_DAY,21); + cal.set(Calendar.MINUTE,0); + String s = raplaLocale.formatTime(cal.getTime()); + assertEquals("9:00 PM", s); + } + + + +} + + + + + diff --git a/test-src/org/rapla/RaplaTestCase.java b/test-src/org/rapla/RaplaTestCase.java new file mode 100644 index 0000000..2e97682 --- /dev/null +++ b/test-src/org/rapla/RaplaTestCase.java @@ -0,0 +1,106 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla; + +import java.io.File; +import java.io.IOException; +import java.net.URL; + +import junit.framework.TestCase; + +import org.apache.avalon.framework.container.ContainerUtil; +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.client.ClientService; +import org.rapla.components.util.IOUtil; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.Container; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.toolkit.ErrorDialog; + +public abstract class RaplaTestCase extends TestCase { + protected Container raplaContainer; + private Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN).getChildLogger("test"); + public static String TEST_FOLDER_NAME="temp/test"; + RaplaStartupEnvironment env = new RaplaStartupEnvironment(); + + public RaplaTestCase(String name) { + super(name); + try { + new File("temp").mkdir(); + File testFolder =new File(TEST_FOLDER_NAME); + testFolder.mkdir(); + IOUtil.copy( "test-src/test.xconf", TEST_FOLDER_NAME + "/test.xconf" ); + IOUtil.copy( "test-src/test.xlog", TEST_FOLDER_NAME + "/test.xlog" ); + } catch (IOException ex) { + throw new RuntimeException("Can't initialize config-files: " + ex.getMessage()); + } + } + + public void copyDataFile(String testFile) throws IOException { + try { + IOUtil.copy( testFile, TEST_FOLDER_NAME + "/test.xml" ); + } catch (IOException ex) { + throw new IOException("Failed to copy TestFile '" + testFile + "': " + ex.getMessage()); + } + } + + protected RaplaContext getContext() { + return raplaContainer.getContext(); + } + + protected SerializableDateTimeFormat formater() { + return new SerializableDateTimeFormat(); + } + + protected Logger getLogger() { + return logger; + } + + protected void setUp(String testFile) throws Exception { + ErrorDialog.THROW_ERROR_DIALOG_EXCEPTION = true; + + URL configURL = new URL("file:./" + TEST_FOLDER_NAME + "/test.xconf"); + URL logConfigURL = new URL(IOUtil.getBase(configURL), "test.xlog"); + env.setConfigURL( configURL); + env.setLogConfigURL( logConfigURL ); + copyDataFile("test-src/" + testFile); + raplaContainer = new RaplaMainContainer( env ); + assertNotNull("Container not initialized.",raplaContainer); + } + + protected void setUp() throws Exception { + setUp("testdefault.xml"); + } + + protected ClientService getClientService() throws Exception { + return (ClientService) getContext().lookup(ClientService.ROLE); + } + + protected ClientFacade getFacade() throws Exception { + return (ClientFacade) getContext().lookup(ClientFacade.ROLE); + } + + protected RaplaLocale getRaplaLocale() throws Exception { + return (RaplaLocale) getContext().lookup(RaplaLocale.ROLE); + } + + protected void tearDown() throws Exception { + if (raplaContainer != null) + ContainerUtil.dispose( raplaContainer ); + } + + +} diff --git a/test-src/org/rapla/ServerTest.java b/test-src/org/rapla/ServerTest.java new file mode 100644 index 0000000..ccfa408 --- /dev/null +++ b/test-src/org/rapla/ServerTest.java @@ -0,0 +1,486 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Locale; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.Category; +import org.rapla.entities.DependencyException; +import org.rapla.entities.Entity; +import org.rapla.entities.User; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.weekview.WeekViewFactory; +import org.rapla.server.ServerService; + +public class ServerTest extends ServletTestBase { + ServerService raplaServer; + + protected ClientFacade facade1; + Locale locale; + + public ServerTest(String name) { + super(name); + } + + static public void main(String[] args) { + String method = + "testLoad" + ; + ServerTest test = new ServerTest( method ); + try { + test.run(); + } catch (Throwable ex) { + ex.printStackTrace(); + } + } + + protected void setUp() throws Exception { + super.setUp(); + initTestData(); + // start the server + raplaServer = (ServerService) + getContext().lookup(ServerService.ROLE + "/" + getStorageName()); + // start the client service + facade1 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade"); + facade1.login("homer","duffs".toCharArray()); + locale = Locale.getDefault(); + } + + protected void initTestData() throws Exception{ + + } + + protected String getStorageName() { + return "storage-file"; + } + + protected void tearDown() throws Exception { + facade1.logout(); + super.tearDown(); + } + + public void testLoad() throws Exception { + facade1.getAllocatables(); + } + + public void testChangeReservation() throws Exception { + ClientFacade facade2 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray()); + Reservation r1 = facade1.newReservation(); + String typeKey = r1.getClassification().getType().getElementKey(); + r1.getClassification().setValue("name","test-reservation"); + r1.addAppointment( facade1.newAppointment(facade1.today(), new Date())); + facade1.store( r1 ); + // Wait for the update + facade2.refresh(); + + Reservation r2 = findReservation(facade2, typeKey, "test-reservation"); + assertEquals(1, r2.getAppointments().length); + assertEquals(0, r2.getAllocatables().length); + + // Modify Reservation in first facade + Reservation r1clone = (Reservation) facade1.edit( r2); + r1clone.addAllocatable( facade1.getAllocatables()[0]); + facade1.store( r1clone ); + // Wait for the update + facade2.refresh(); + // test for modify in second facade + assertEquals(1, r2.getAllocatables().length); + facade2.logout(); + } + + public void testChangeDynamicType() throws Exception { + Allocatable allocatable = (Allocatable) facade1.getAllocatables()[0]; + assertEquals(3, allocatable.getClassification().getAttributes().length); + DynamicType type = (DynamicType) facade1.getDynamicType("room"); + Attribute newAttribute; + { + newAttribute = (Attribute) facade1.newAttribute(AttributeType.CATEGORY); + DynamicType typeEdit1 = (DynamicType) facade1.edit(type); + newAttribute.setConstraint(ConstraintIds.KEY_ROOT_CATEGORY, facade1.getUserGroupsCategory()); + newAttribute.setKey("test"); + newAttribute.getName().setName("en","test"); + typeEdit1.addAttribute(newAttribute); + facade1.store(typeEdit1); + } + + + { + Allocatable newResource = facade1.newResource(); + newResource.setClassification( type.newClassification()); + newResource.getClassification().setValue("name", "test-resource"); + newResource.getClassification().setValue("test", facade1.getUserGroupsCategory().getCategories()[0]); + facade1.store(newResource); + } + + { + ClientFacade facade2 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray()); + //Dyn + DynamicType typeInSecondFacade = (DynamicType) facade2.getDynamicType("room"); + Attribute att = (Attribute)typeInSecondFacade.getAttribute("test"); + assertEquals( "test",att.getKey()); + assertEquals( AttributeType.CATEGORY,att.getType()); + assertEquals( facade2.getUserGroupsCategory(),att.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY)); + + ClassificationFilter filter = typeInSecondFacade.newClassificationFilter(); + filter.addEqualsRule("name", "test-resource"); + Allocatable newResource =facade2.getAllocatables( filter.toArray())[0]; + Category userGroup = (Category)newResource.getClassification().getValue("test"); + assertEquals( "Category attribute value is not stored",facade2.getUserGroupsCategory().getCategories()[0].getKey(), userGroup.getKey()); + facade2.logout(); + } + + + assertEquals(4, allocatable.getClassification().getAttributes().length); + DynamicType typeEdit2 = (DynamicType) facade1.edit(type); + Attribute attributeLater = typeEdit2.getAttribute("test"); + assertTrue("Attributes identy changed after storing ", attributeLater.equals(newAttribute)); + typeEdit2.removeAttribute(attributeLater); + facade1.store(typeEdit2); + assertEquals( facade1.getAllocatables().length, 5); + assertEquals(3, allocatable.getClassification().getAttributes().length); + + User user = facade1.newUser(); + user.setUsername("test-user"); + facade1.store( user ); + + removeAnAttribute(); + // Wait for the update + { + ClientFacade facade2 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray()); + facade2.getUser("test-user"); + facade2.logout(); + } + } + + public void removeAnAttribute() throws Exception { + DynamicType typeEdit3 = (DynamicType) facade1.edit(facade1.getDynamicType("room")); + typeEdit3.removeAttribute( typeEdit3.getAttribute("belongsto")); + Allocatable allocatable = (Allocatable) facade1.getAllocatables()[0]; + assertEquals("erwin", allocatable.getName( locale ) ); + + Entity allocatableClone = facade1.edit(allocatable); + assertEquals(3, allocatable.getClassification().getAttributes().length); + facade1.storeObjects(new Entity[] {allocatableClone, typeEdit3}); + assertEquals( 5, facade1.getAllocatables().length); + assertEquals(2, allocatable.getClassification().getAttributes().length); + + + ClientFacade facade2 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray()); + // we check if the store affectes the second client. + assertEquals( 5, facade2.getAllocatables().length); + + ClassificationFilter filter = facade2.getDynamicType("room").newClassificationFilter(); + filter.addIsRule( "name", "erwin"); + { + Allocatable rAfter = facade2.getAllocatables( filter.toArray())[0]; + assertEquals(2, rAfter.getClassification().getAttributes().length); + } + //facade2.getUser("test-user"); + // Wait for the update + facade2.refresh(); + facade2.logout(); + } + + private Reservation findReservation(ClientFacade facade,String typeKey,String name) throws RaplaException { + DynamicType reservationType = facade.getDynamicType( typeKey ); + ClassificationFilter filter = reservationType.newClassificationFilter(); + filter.addRule("name", new Object[][] {{"contains","test-reservation"}}); + Reservation[] reservations = facade.getReservationsForAllocatable( null, null, null, new ClassificationFilter[] {filter}); + if (reservations.length >0 ) + return reservations[0]; + else + return null; + } + + + public void testChangeDynamicType2() throws Exception { + DynamicType type = (DynamicType) facade1.getDynamicTypes(DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION)[0]; + DynamicType typeEdit3 = (DynamicType) facade1.edit(type); + typeEdit3.removeAttribute( typeEdit3.getAttribute("belongsto")); + + Allocatable resource1 = (Allocatable) facade1.getAllocatables()[0]; + assertEquals("erwin", resource1.getName( locale ) ); + facade1.store( typeEdit3 ); + assertEquals(2, resource1.getClassification().getAttributes().length); + } + + public void testRemoveCategory() throws Exception { + Category superCategoryClone = (Category) facade1.edit(facade1.getSuperCategory()); + Category department = superCategoryClone.getCategory("department"); + Category powerplant = department.getCategory("springfield-powerplant"); + powerplant.getParent().removeCategory(powerplant); + try { + facade1.store(superCategoryClone); + fail("Dependency Exception should have been thrown"); + } catch (DependencyException ex) { + } + } + + public void testRemoveCategoryBug5() throws Exception { + DynamicType type = facade1.newDynamicType( DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION); + String testTypeName = "TestType"; + type.getName().setName("en", testTypeName); + Attribute att = facade1.newAttribute( AttributeType.CATEGORY); + att.setKey("testdep"); + { + Category superCategoryClone = facade1.getSuperCategory(); + Category department = superCategoryClone.getCategory("department"); + att.setConstraint(ConstraintIds.KEY_ROOT_CATEGORY, department); + } + type.addAttribute( att); + facade1.store( type ); + Category superCategoryClone = (Category) facade1.edit(facade1.getSuperCategory()); + Category department = superCategoryClone.getCategory("department"); + superCategoryClone.removeCategory( department); + try { + facade1.store(superCategoryClone); + fail("Dependency Exception should have been thrown"); + } catch (DependencyException ex) { + Collection dependencies = ex.getDependencies(); + System.out.println( dependencies); + assertTrue("Dependencies doesnt contains " + testTypeName, contains(dependencies,testTypeName)); + + } + + + } + + + private boolean contains(Collection dependencies, String testTypeName) { + for (String dep: dependencies) + { + if ( dep.contains( testTypeName)) + { + return true; + } + } + return false; + } + + public void testStoreFilter() throws Exception { + // select from event where name contains 'planting' or name contains 'test'; + DynamicType dynamicType = facade1.getDynamicType("room"); + ClassificationFilter classificationFilter = dynamicType.newClassificationFilter(); + Category channel6 = facade1.getSuperCategory().getCategory("department").getCategory("channel-6"); + Category testdepartment = facade1.getSuperCategory().getCategory("department").getCategory("testdepartment"); + classificationFilter.setRule(0 + ,dynamicType.getAttribute("belongsto") + ,new Object[][] { + {"is",channel6} + ,{"is",testdepartment} + } + ); + boolean thrown = false; + ClassificationFilter[] filter = new ClassificationFilter[] { classificationFilter}; + RaplaMap selected = facade1.newRaplaMap( Collections.EMPTY_MAP ); + CalendarModelConfiguration conf = facade1.newRaplaCalendarModel(selected, filter,null,null,null, null, facade1.today(), "week", null ); + Preferences prefs = (Preferences) facade1.edit( facade1.getPreferences()); + prefs.putEntry( "org.rapla.TestEntry", conf); + facade1.store( prefs ); + User user = raplaServer.getFacade().getUser("homer"); + Preferences storedPrefs = raplaServer.getFacade().getPreferences(user); + assertNotNull( storedPrefs ); + CalendarModelConfiguration storedConf = (CalendarModelConfiguration )storedPrefs.getEntry("org.rapla.TestEntry"); + assertNotNull( storedConf ); + + ClassificationFilter[] storedFilter = storedConf.getFilter(); + assertEquals( 1, storedFilter.length); + ClassificationFilter storedClassFilter = storedFilter[0]; + + assertEquals( 1, storedClassFilter.ruleSize()); + + try { + Category parent = (Category) facade1.edit( testdepartment.getParent() ); + parent.removeCategory( testdepartment ); + facade1.store( parent ); + } catch (DependencyException ex) { + assertTrue(contains(ex.getDependencies(),prefs.getName(locale))); + thrown = true; + } + assertTrue("Dependency Exception should have been thrown!",thrown); + + } + + public void testReservationInTheFutureStoredInCalendar() throws Exception{ + Date futureDate = new Date(facade1.today().getTime() + DateTools.MILLISECONDS_PER_WEEK * 10); + Reservation r = facade1.newReservation(); + r.addAppointment( facade1.newAppointment( futureDate, futureDate)); + r.getClassification().setValue("name","Test"); + + facade1.store( r ); + + RaplaMap map = facade1.newRaplaMap( Collections.singletonList( r )); + CalendarModelConfiguration conf = facade1.newRaplaCalendarModel( map, null,null,"test", null, null,facade1.today(), WeekViewFactory.WEEK_VIEW, null); + + Preferences prefs = ( Preferences ) facade1.edit( facade1.getPreferences() ); + prefs.putEntry( "org.rapla.test", conf); + + try { + facade1.store( prefs ); + fail("Should throw an exception in the current version, because we can't store references to reservations"); + } catch (RaplaException ex) { + } + /* + Thread.sleep( 1000); + + ClientFacade facade2 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray());*/ + + + } + + + public void testReservationWithExceptionDoesntShow() throws Exception { + { + facade1.removeObjects( facade1.getReservationsForAllocatable( null, null, null, null)); + } + Date start = new Date(); + Date end = new Date( start.getTime() + DateTools.MILLISECONDS_PER_HOUR * 2); + { + Reservation r = facade1.newReservation( ); + r.getClassification().setValue("name","test-reservation"); + Appointment a = facade1.newAppointment( start, end); + a.setRepeatingEnabled( true ); + a.getRepeating().setType( Repeating.WEEKLY); + a.getRepeating().setInterval( 2 ); + a.getRepeating().setNumber( 10 ); + r.addAllocatable( facade1.getAllocatables()[0]); + r.addAppointment( a ); + a.getRepeating().addException( start ); + a.getRepeating().addException( new Date(start.getTime() + DateTools.MILLISECONDS_PER_WEEK)); + facade1.store( r ); + facade1.logout(); + } + { + ClientFacade facade2 = (ClientFacade) getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray()); + + Reservation[] res = facade2.getReservationsForAllocatable( null,start, new Date( start.getTime()+ 8* DateTools.MILLISECONDS_PER_WEEK ), null ); + assertEquals( 1, res.length); + Thread.sleep( 100); + facade2.logout(); + } + + + } + + public void testChangeGroup() throws Exception { + User user = (User)facade1.edit( facade1.getUser("monty")); + Category[] groups = user.getGroups(); + assertTrue("No groups found!", groups.length>0); + Category myGroup = facade1.getUserGroupsCategory().getCategory("my-group"); + assertTrue( Arrays.asList(groups).contains(myGroup)); + user.removeGroup( myGroup ); + ClientFacade facade2 = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + facade2.login("homer","duffs".toCharArray()); + Allocatable testResource = (Allocatable) facade2.edit( facade2.getAllocatables()[0]); + assertTrue( testResource.canAllocate( facade2.getUser("monty") ,null, null,null)); + testResource.removePermission( testResource.getPermissions()[0]); + Permission newPermission = testResource.newPermission(); + newPermission.setGroup( facade1.getUserGroupsCategory().getCategory("my-group") ); + newPermission.setAccessLevel( Permission.READ ); + testResource.addPermission( newPermission ); + assertFalse( testResource.canAllocate( facade2.getUser("monty") ,null, null,null)); + assertTrue( testResource.canRead( facade2.getUser("monty"))); + facade1.store( user ); + facade2.refresh(); + assertFalse( testResource.canRead( facade2.getUser("monty") )); + } + + public void testRemoveAppointment() throws Exception + { + Date start = getRaplaLocale().toDate( 2005, 10, 10); + Date end = getRaplaLocale().toDate( 2005, 10, 15); + Reservation r = facade1.newReservation(); + r.getClassification().setValue("name", "newReservation"); + r.addAppointment( facade1.newAppointment( start, end )); + r.addAllocatable( facade1.getAllocatables()[0]); + ClassificationFilter f = r.getClassification().getType().newClassificationFilter(); + f.addEqualsRule("name","newReservation"); + facade1.store( r ); + r = (Reservation) facade1.getPersistant( r ); + facade1.remove( r ); + Reservation[] allRes = facade1.getReservationsForAllocatable( null, null, null,new ClassificationFilter[] {f} ); + assertEquals( 0 , allRes.length); + } + + public void testRestrictionsBug7() throws Exception + { + Reservation r = facade1.newReservation(); + r.getClassification().setValue("name", "newReservation"); + Appointment app1; + { + Date start = getRaplaLocale().toDate( 2005, 10, 10); + Date end = getRaplaLocale().toDate( 2005, 10, 15); + app1 = facade1.newAppointment( start, end ); + r.addAppointment( app1); + } + Appointment app2; + { + Date start = getRaplaLocale().toDate( 2008, 10, 10); + Date end = getRaplaLocale().toDate( 2008, 10, 15); + app2 = facade1.newAppointment( start, end ); + r.addAppointment( app2); + } + Allocatable allocatable = facade1.getAllocatables()[0]; + r.addAllocatable( allocatable); + r.setRestriction( allocatable, new Appointment[] {app1,app2}); + facade1.store( r ); + facade1.logout(); + facade1.login("homer","duffs".toCharArray()); + ClassificationFilter f = r.getClassification().getType().newClassificationFilter(); + f.addEqualsRule("name","newReservation"); + Reservation[] allRes = facade1.getReservationsForAllocatable( null, null, null,new ClassificationFilter[] {f} ); + Reservation test = allRes[0]; + allocatable = facade1.getAllocatables()[0]; + Appointment[] restrictions = test.getRestriction( allocatable); + assertEquals( "Restrictions needs to be saved!",2,restrictions.length); + + } + +} + + + + + diff --git a/test-src/org/rapla/ServletTestBase.java b/test-src/org/rapla/ServletTestBase.java new file mode 100644 index 0000000..7f83918 --- /dev/null +++ b/test-src/org/rapla/ServletTestBase.java @@ -0,0 +1,87 @@ +package org.rapla; + +import java.io.File; +import java.net.ConnectException; +import java.net.HttpURLConnection; +import java.net.URL; + +import junit.framework.TestCase; + +import org.mortbay.jetty.Server; +import org.mortbay.jetty.servlet.Context; +import org.mortbay.jetty.servlet.ServletHolder; +import org.rapla.components.util.IOUtil; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaLocale; + +public abstract class ServletTestBase extends TestCase +{ + MainServlet mainServlet = new MainServlet(); + Server jettyServer; + final public static String WEBAPP_FOLDER_NAME = RaplaTestCase.TEST_FOLDER_NAME + "/webapp"; + final public static String WEBAPP_INF_FOLDER_NAME = WEBAPP_FOLDER_NAME + "/WEB-INF"; + + public ServletTestBase( String name ) + { + super( name ); + new File("temp").mkdir(); + File testFolder =new File(RaplaTestCase.TEST_FOLDER_NAME); + testFolder.mkdir(); + } + + protected void setUp() throws Exception + { + super.setUp(); + mainServlet.setServerId( getStorageName() ); + new File(WEBAPP_FOLDER_NAME).mkdir(); + new File(WEBAPP_INF_FOLDER_NAME).mkdir(); + + IOUtil.copy( "test-src/test.xconf", WEBAPP_INF_FOLDER_NAME + "/raplaserver.xconf" ); + IOUtil.copy( "test-src/test.xlog", WEBAPP_INF_FOLDER_NAME + "/raplaserver.xlog" ); + IOUtil.copy( "test-src/testdefault.xml", WEBAPP_INF_FOLDER_NAME + "/test.xml" ); + IOUtil.copy( "webapp/WEB-INF/web.xml", WEBAPP_INF_FOLDER_NAME + "/web.xml" ); + + jettyServer =new Server(8051); + //jettyServer.setAttribute("org.mortbay.jetty.Request.maxFormContentSize", new Integer(64000000)); + System.setProperty("org.mortbay.jetty.Request.maxFormContentSize",new Integer(64000000).toString() ); + Context context = new Context( jettyServer,"/",Context.SESSIONS ); + context.setResourceBase( WEBAPP_FOLDER_NAME ); + context.addServlet( new ServletHolder(mainServlet), "/*" ); + jettyServer.start(); + + URL server = new URL("http://127.0.0.1:8051/rapla/ping"); + HttpURLConnection connection = (HttpURLConnection)server.openConnection(); + int timeout = 10000; + int interval = 200; + for ( int i=0;i should be replaced with
    " + ,getI18n().getString("error.invalid_key").indexOf("
    ")>=0 + ); + } +} + + + + + diff --git a/test-src/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.java b/test-src/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.java new file mode 100644 index 0000000..4e52f26 --- /dev/null +++ b/test-src/org/rapla/components/xmlbundle/tests/I18nBundleImplTest.java @@ -0,0 +1,122 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.components.xmlbundle.tests; +import java.util.Locale; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.LocaleSelector; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.components.xmlbundle.impl.LocaleSelectorImpl; +import org.rapla.framework.RaplaDefaultContext; + + +public class I18nBundleImplTest extends AbstractI18nTest { + I18nBundleImpl i18n; + boolean useFile; + LocaleSelector localeSelector; + Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN); + + public I18nBundleImplTest(String name) { + this(name, true); + } + + public I18nBundleImplTest(String name,boolean useFile) { + super(name); + this.useFile = useFile; + } + + protected void setUp() throws Exception { + DefaultConfiguration config = new DefaultConfiguration("i18n",this.toString()); + if (this.useFile) { + DefaultConfiguration child = new DefaultConfiguration("file",this.toString()); + child.setValue("src/org/rapla/RaplaResources.xml"); + config.addChild(child); + } else { + config.setAttribute("id","org.rapla.RaplaResources"); + } + i18n = create(config); + } + + private I18nBundleImpl create(Configuration config) throws Exception { + I18nBundleImpl i18n; + RaplaDefaultContext context = new RaplaDefaultContext(); + localeSelector = new LocaleSelectorImpl(); + context.put(LocaleSelector.ROLE,localeSelector); + i18n = new I18nBundleImpl(context,config,new ConsoleLogger()); + return i18n; + } + + protected void tearDown() { + i18n.dispose(); + } + public I18nBundle getI18n() { + return i18n; + } + + public static Test suite() { + TestSuite suite = new TestSuite(); + // The first four test only succeed if the Resource Bundles are build. + suite.addTest(new I18nBundleImplTest("testLocaleChanged",false)); + suite.addTest(new I18nBundleImplTest("testGetIcon",false)); + suite.addTest(new I18nBundleImplTest("testGetString",false)); + suite.addTest(new I18nBundleImplTest("testLocale",false)); + /* + */ + suite.addTest(new I18nBundleImplTest("testInvalidConfig",true)); + suite.addTest(new I18nBundleImplTest("testLocaleChanged",true)); + suite.addTest(new I18nBundleImplTest("testGetIcon",true)); + suite.addTest(new I18nBundleImplTest("testGetString",true)); + suite.addTest(new I18nBundleImplTest("testLocale",true)); + + return suite; + } + + public void testLocaleChanged() { + localeSelector.setLocale(new Locale("de","DE")); + assertEquals(getI18n().getString("cancel"),"Abbrechen"); + localeSelector.setLocale(new Locale("en","DE")); + assertEquals(getI18n().getString("cancel"),"Cancel"); + } + + public void testInvalidConfig() throws Exception { + if (!this.useFile) + return; + DefaultConfiguration config = new DefaultConfiguration("i18n",this.toString()); + try { + create(config); + assertTrue("id is missing should be reported", true); + } catch (Exception ex) { + } + config.setAttribute("id","org.rapla.RaplaResources"); + DefaultConfiguration child = new DefaultConfiguration("file",this.toString()); + child.setValue("./src/org/rapla/RaplaResou"); + config.addChild( child ); + try { + create(config); + assertTrue("file ./src/org/rapla/RaplaResou should fail", true); + } catch (Exception ex) { + } + } +} + + + + + diff --git a/test-src/org/rapla/entities/tests/AppointmentTest.java b/test-src/org/rapla/entities/tests/AppointmentTest.java new file mode 100644 index 0000000..740db38 --- /dev/null +++ b/test-src/org/rapla/entities/tests/AppointmentTest.java @@ -0,0 +1,468 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.TimeZone; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentBlock; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.internal.AppointmentImpl; +import org.rapla.framework.RaplaException; + +import edu.emory.mathcs.backport.java.util.Collections; + +public class AppointmentTest extends TestCase { + TimeZone zone = DateTools.getTimeZone(); //this is GMT + Locale locale = Locale.getDefault(); + + public AppointmentTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(AppointmentTest.class); + } + + public void setUp() throws Exception { + } + + Appointment createAppointment(Day day,Time start,Time end) { + Calendar cal = Calendar.getInstance(zone,locale); + cal.set(Calendar.YEAR,day.getYear()); + cal.set(Calendar.MONTH,day.getMonth() - 1); + cal.set(Calendar.DATE,day.getDate()); + cal.set(Calendar.HOUR_OF_DAY,start.getHour()); + cal.set(Calendar.MINUTE,start.getMinute()); + cal.set(Calendar.SECOND,0); + cal.set(Calendar.MILLISECOND,0); + Date startTime = cal.getTime(); + cal.set(Calendar.HOUR_OF_DAY,end.getHour()); + cal.set(Calendar.MINUTE,end.getMinute()); + Date endTime = cal.getTime(); + return new AppointmentImpl(startTime,endTime); + } + + public void testOverlapAndCompareTo() throws RaplaException { + Appointment a1 = createAppointment(new Day(2002,5,25),new Time(12,15),new Time(14,15)); + Appointment a2 = createAppointment(new Day(2002,5,26),new Time(13,0),new Time(15,0)); + Appointment a3 = createAppointment(new Day(2002,5,25),new Time(13,0),new Time(15,0)); + + // First the single Appointments + assertTrue(a1.compareTo(a2) == -1); + assertTrue(a2.compareTo(a1) == 1); + assertTrue(a1.compareTo(a3) == -1); + assertTrue(a3.compareTo(a1) == 1); + assertTrue(a1.overlaps(a3)); + assertTrue(a3.overlaps(a1)); + assertTrue(!a2.overlaps(a3)); + assertTrue(!a3.overlaps(a2)); + assertTrue(!a1.overlaps(a2)); + assertTrue(!a2.overlaps(a1)); + + + // Now we test repeatings + a1.setRepeatingEnabled(true); + a2.setRepeatingEnabled(true); + a3.setRepeatingEnabled(true); + + // Weekly repeating until 2002-6-2 + Repeating repeating1 = a1.getRepeating(); + repeating1.setEnd(new Day(2002,6,2).toDate(zone)); + + // daily repeating 8x + Repeating repeating2 = a2.getRepeating(); + repeating2.setType(Repeating.DAILY); + repeating2.setNumber(8); + + // weekly repeating 1x + Repeating repeating3 = a3.getRepeating(); + repeating3.setNumber(1); + + assertTrue(a1.overlaps( + new Day(2002,5,26).toDate(zone) + ,new Day(2002,6,2).toDate(zone) + ) + ); + + assertTrue(a1.overlaps(a2)); + assertTrue("overlap is not symetric",a2.overlaps(a1)); + + assertTrue(a1.overlaps(a3)); + assertTrue("overlap is not symetric",a3.overlaps(a1)); + + assertTrue(!a2.overlaps(a3)); + assertTrue("overlap is not symetric",!a3.overlaps(a2)); + + // No appointment in first week of repeating + repeating1.addException(new Day(2002,5,25).toDate(zone)); + + assertTrue(!a1.overlaps(a3)); + assertTrue("overlap is not symetric",!a3.overlaps(a1)); + } + + public void testOverlap1() throws RaplaException { + Appointment a1 = createAppointment(new Day(2002,4,15),new Time(10,0),new Time(12,0)); + Appointment a2 = createAppointment(new Day(2002,4,15),new Time(9,0),new Time(11,0)); + + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setEnd(new Day(2002,7,11).toDate(zone)); + + a2.setRepeatingEnabled(true); + Repeating repeating2 = a2.getRepeating(); + repeating2.setType(Repeating.DAILY); + repeating2.setNumber(5); + + assertTrue(a1.overlaps(a2)); + assertTrue("overlap is not symetric",a2.overlaps(a1)); + } + + public void testOverlap2() throws RaplaException { + Appointment a1 = createAppointment(new Day(2002,4,12),new Time(12,0),new Time(14,0)); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setEnd(new Day(2002,7,11).toDate(zone)); + assertTrue(a1.overlaps(new Day(2002,4,15).toDate(zone) + , new Day(2002,4,22).toDate(zone))); + } + + public void testBlocks() { + Appointment a1 = createAppointment(new Day(2002,4,12),new Time(12,0),new Time(14,0)); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setEnd(new Day(2002,2,11).toDate(zone)); + List blocks = new ArrayList(); + a1.createBlocks( new Day(2002,4,5).toDate(zone) + , new Day(2002,5,5).toDate(zone) + , blocks ); + assertEquals( "Repeating end is in the past: createBlocks should only return one block", 1, blocks.size() ); + } + + public void testMatchNeverEnding() throws RaplaException { + Appointment a1 = createAppointment(new Day(2002,5,25),new Time(11,15),new Time(13,15)); + Appointment a2 = createAppointment(new Day(2002,5,25),new Time(11,15),new Time(13,15)); + + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType(Repeating.WEEKLY); + + a2.setRepeatingEnabled(true); + Repeating repeating2 = a2.getRepeating(); + repeating2.setType(Repeating.WEEKLY); + + repeating1.addException(new Day(2002,4,10).toDate( zone )); + assertTrue( !a1.matches( a2 ) ); + assertTrue( !a2.matches( a1 ) ); + } + + public void testMonthly() + { + Appointment a1 = createAppointment(new Day(2006,8,17),new Time(10,30),new Time(12,0)); + Date start = a1.getStart(); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType( RepeatingType.MONTHLY); + repeating1.setNumber( 4); + List blocks = new ArrayList(); + a1.createBlocks( new Day(2006,8,17).toGMTDate(), new Day( 2007, 3, 30).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + Collections.sort(blocks); + assertEquals( start, new Date(blocks.get( 0).getStart())); + Calendar cal = DateTools.createGMTCalendar(); + cal.setTime( start ); + int weekday = cal.get( Calendar.DAY_OF_WEEK); + int dayofweekinmonth = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + assertEquals( Calendar.THURSDAY,weekday ); + assertEquals( 3, dayofweekinmonth ); + assertEquals( Calendar.AUGUST, cal.get( Calendar.MONTH)); + // we expect the second wednesday in april + cal.add( Calendar.MONTH, 1 ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get( 1).getStart())); + cal.add( Calendar.MONTH, 1 ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + assertEquals(10, cal.get( Calendar.HOUR_OF_DAY)); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get( 2).getStart())); + cal.add( Calendar.MONTH, 1 ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get( 3).getStart())); + + assertEquals( start, repeating1.getEnd() ); + assertEquals( start, a1.getMaxEnd() ); + + blocks.clear(); + a1.createBlocks( new Day(2006,1,1).toGMTDate(), new Day( 2007, 10, 20).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + + blocks.clear(); + a1.createBlocks( new Day(2006,10,19).toGMTDate(), new Day( 2006, 10, 20).toGMTDate(), blocks); + assertEquals( 1, blocks.size()); + } + + public void testMonthly5ft() + { + Appointment a1 = createAppointment(new Day(2006,8,31),new Time(10,30),new Time(12,0)); + Date start = a1.getStart(); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType( RepeatingType.MONTHLY); + repeating1.setNumber( 4); + List blocks = new ArrayList(); + a1.createBlocks( new Day(2006,8,1).toGMTDate(), new Day( 2008, 8, 1).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + Collections.sort( blocks); + assertEquals( start, new Date(blocks.get(0).getStart())); + Calendar cal = DateTools.createGMTCalendar(); + cal.setTime( start ); + int weekday = cal.get( Calendar.DAY_OF_WEEK); + int dayofweekinmonth = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + assertEquals( Calendar.THURSDAY,weekday ); + assertEquals( 5, dayofweekinmonth ); + assertEquals( Calendar.AUGUST, cal.get( Calendar.MONTH)); + + cal.set( Calendar.MONTH, Calendar.NOVEMBER ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(1).getStart())); + + cal.add( Calendar.YEAR,1); + cal.set( Calendar.MONTH, Calendar.MARCH ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + assertEquals(10, cal.get( Calendar.HOUR_OF_DAY)); + start = cal.getTime(); + + assertEquals( start, new Date(blocks.get(2).getStart())); + cal.set( Calendar.MONTH, Calendar.MAY ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(3).getStart())); + + assertEquals( start, repeating1.getEnd() ); + assertEquals( start, a1.getMaxEnd() ); + + blocks.clear(); + a1.createBlocks( new Day(2006,1,1).toGMTDate(), new Day( 2007, 10, 20).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + + blocks.clear(); + a1.createBlocks( new Day(2006,10,19).toGMTDate(), new Day( 2006, 11, 31).toGMTDate(), blocks); + assertEquals( 1, blocks.size()); + } + + public void testMonthlyNeverending() + { + Appointment a1 = createAppointment(new Day(2006,8,31),new Time(10,30),new Time(12,0)); + Date start = a1.getStart(); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType( RepeatingType.MONTHLY); + repeating1.setEnd( null ); + List blocks = new ArrayList(); + a1.createBlocks( new Day(2006,8,1).toGMTDate(), new Day( 2008, 8, 1).toGMTDate(), blocks); + assertEquals( 9, blocks.size()); + assertEquals( start, new Date(blocks.get(0).getStart())); + Calendar cal = DateTools.createGMTCalendar(); + cal.setTime( start ); + int weekday = cal.get( Calendar.DAY_OF_WEEK); + int dayofweekinmonth = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + assertEquals( Calendar.THURSDAY,weekday ); + assertEquals( 5, dayofweekinmonth ); + assertEquals( Calendar.AUGUST, cal.get( Calendar.MONTH)); + + cal.set( Calendar.MONTH, Calendar.NOVEMBER ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(1).getStart())); + + cal.add( Calendar.YEAR,1); + cal.set( Calendar.MONTH, Calendar.MARCH ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + assertEquals(10, cal.get( Calendar.HOUR_OF_DAY)); + start = cal.getTime(); + + assertEquals( start, new Date(blocks.get(2).getStart())); + cal.set( Calendar.MONTH, Calendar.MAY ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(3).getStart())); + + + blocks.clear(); + a1.createBlocks( new Day(2006,1,1).toGMTDate(), new Day( 2007, 10, 20).toGMTDate(), blocks); + assertEquals( 5, blocks.size()); + } + + public void testYearly29February() + { + Appointment a1 = createAppointment(new Day(2004,2,29),new Time(10,30),new Time(12,0)); + Date start = a1.getStart(); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType( RepeatingType.YEARLY); + repeating1.setNumber( 4); + List blocks = new ArrayList(); + a1.createBlocks( new Day(2004,1,1).toGMTDate(), new Day( 2020, 1, 1).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + assertEquals( start, new Date(blocks.get(0).getStart())); + Calendar cal = DateTools.createGMTCalendar(); + cal.setTime( start ); + int weekday = cal.get( Calendar.DAY_OF_WEEK); + int dayofweekinmonth = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + assertEquals( Calendar.SUNDAY,weekday ); + assertEquals( 5, dayofweekinmonth ); + assertEquals( Calendar.FEBRUARY, cal.get( Calendar.MONTH)); + + cal.add( Calendar.YEAR,4); + cal.set( Calendar.MONTH, Calendar.FEBRUARY ); + cal.set( Calendar.DAY_OF_MONTH , 29 ); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(1).getStart())); + + cal.add( Calendar.YEAR,4); + cal.set( Calendar.MONTH, Calendar.FEBRUARY ); + cal.set( Calendar.DAY_OF_MONTH , 29 ); + assertEquals(10, cal.get( Calendar.HOUR_OF_DAY)); + start = cal.getTime(); + + assertEquals( start, new Date(blocks.get(2).getStart())); + cal.add( Calendar.YEAR,4); + cal.set( Calendar.MONTH, Calendar.FEBRUARY ); + cal.set( Calendar.DAY_OF_MONTH , 29 ); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(3).getStart())); + + assertEquals( start, repeating1.getEnd() ); + assertEquals( start, a1.getMaxEnd() ); + + blocks.clear(); + a1.createBlocks( new Day(2006,1,1).toGMTDate(), new Day( 2012, 10, 20).toGMTDate(), blocks); + assertEquals( 2, blocks.size()); + + blocks.clear(); + a1.createBlocks( new Day(2008,1,1).toGMTDate(), new Day( 2008, 11, 31).toGMTDate(), blocks); + assertEquals( 1, blocks.size()); + } + + public void testYearly() + { + Appointment a1 = createAppointment(new Day(2006,8,17),new Time(10,30),new Time(12,0)); + Date start = a1.getStart(); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType( RepeatingType.YEARLY ); + repeating1.setNumber( 4); + Calendar cal = DateTools.createGMTCalendar(); + cal.setTime( start ); + int dayInMonth = cal.get( Calendar.DAY_OF_MONTH); + int month = cal.get( Calendar.MONTH); + List blocks = new ArrayList(); + a1.createBlocks( new Day(2006,8,17).toGMTDate(), new Day( 2010, 3, 30).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + assertEquals( start, new Date(blocks.get(0).getStart())); + cal.add( Calendar.YEAR, 1 ); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(1).getStart())); + cal.add( Calendar.YEAR, 1 ); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(2).getStart())); + cal.add( Calendar.YEAR, 1 ); + start = cal.getTime(); + assertEquals( dayInMonth,cal.get(Calendar.DAY_OF_MONTH)); + assertEquals( month,cal.get(Calendar.MONTH)); + assertEquals( start, new Date(blocks.get(3).getStart())); + assertEquals( start, repeating1.getEnd() ); + assertEquals( start, a1.getMaxEnd() ); + } + + public void testMonthlySetEnd() + { + Appointment a1 = createAppointment(new Day(2006,8,17),new Time(10,30),new Time(12,0)); + Date start = a1.getStart(); + a1.setRepeatingEnabled(true); + Repeating repeating1 = a1.getRepeating(); + repeating1.setType( RepeatingType.MONTHLY); + repeating1.setEnd( new Day(2006,12,1).toGMTDate()); + List blocks = new ArrayList(); + { + Date s = new Day(2006,8,17).toGMTDate(); + Date e = new Day( 2007, 3, 30).toGMTDate(); + a1.createBlocks( s,e , blocks); + } + assertEquals( 4, blocks.size()); + assertEquals( start, new Date(blocks.get(0).getStart())); + Calendar cal = DateTools.createGMTCalendar(); + cal.setTime( start ); + int weekday = cal.get( Calendar.DAY_OF_WEEK); + int dayofweekinmonth = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + assertEquals( Calendar.THURSDAY,weekday ); + assertEquals( 3, dayofweekinmonth ); + assertEquals( Calendar.AUGUST, cal.get( Calendar.MONTH)); + cal.add( Calendar.MONTH, 1 ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(1).getStart())); + cal.add( Calendar.MONTH, 1 ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + assertEquals(10, cal.get( Calendar.HOUR_OF_DAY)); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(2).getStart())); + cal.add( Calendar.MONTH, 1 ); + cal.set( Calendar.DAY_OF_WEEK , weekday ); + cal.set( Calendar.DAY_OF_WEEK_IN_MONTH, dayofweekinmonth); + start = cal.getTime(); + assertEquals( start, new Date(blocks.get(3).getStart())); + + assertEquals( new Day(2006,12,1).toGMTDate(), repeating1.getEnd() ); + assertEquals( new Day(2006,12,1).toGMTDate(), a1.getMaxEnd() ); + + blocks.clear(); + a1.createBlocks( new Day(2006,1,1).toGMTDate(), new Day( 2007, 10, 20).toGMTDate(), blocks); + assertEquals( 4, blocks.size()); + + blocks.clear(); + a1.createBlocks( new Day(2006,10,19).toGMTDate(), new Day( 2006, 10, 20).toGMTDate(), blocks); + assertEquals( 1, blocks.size()); + } + +} + + + + + diff --git a/test-src/org/rapla/entities/tests/AttributeTest.java b/test-src/org/rapla/entities/tests/AttributeTest.java new file mode 100644 index 0000000..6bbf852 --- /dev/null +++ b/test-src/org/rapla/entities/tests/AttributeTest.java @@ -0,0 +1,73 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.ModificationModule; +import org.rapla.facade.QueryModule; +import org.rapla.facade.UpdateModule; + +public class AttributeTest extends RaplaTestCase { + ModificationModule modificationMod; + QueryModule queryMod; + UpdateModule updateMod; + DynamicType type; + + public AttributeTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(AttributeTest.class); + } + + protected void setUp() throws Exception { + super.setUp(); + ClientFacade facade= getFacade(); + queryMod = facade; + modificationMod = facade; + updateMod = facade; + + } + + public void testAnnotations() throws Exception { + type = modificationMod.newDynamicType(DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION); + type.setElementKey("test-type"); + Attribute a1 = modificationMod.newAttribute(AttributeType.STRING); + a1.setKey("test-attribute"); + a1.setAnnotation("expected-rows", "5"); + type.addAttribute( a1 ); + modificationMod.store( type ); + + DynamicType type2 = queryMod.getDynamicType("test-type"); + Attribute a2 = type2.getAttribute("test-attribute"); + + assertEquals(a1, a2); + assertEquals( "default-annotation", a2.getAnnotation("not-defined-ann","default-annotation" )); + assertEquals( "expected-rows", a2.getAnnotationKeys()[0]); + assertEquals( "5", a2.getAnnotation("expected-rows")); + + } +} + + + + + diff --git a/test-src/org/rapla/entities/tests/CategoryTest.java b/test-src/org/rapla/entities/tests/CategoryTest.java new file mode 100644 index 0000000..802c7d6 --- /dev/null +++ b/test-src/org/rapla/entities/tests/CategoryTest.java @@ -0,0 +1,154 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.Category; +import org.rapla.entities.DependencyException; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.ModificationModule; +import org.rapla.facade.QueryModule; +import org.rapla.facade.UpdateModule; +import org.rapla.framework.RaplaException; + +public class CategoryTest extends RaplaTestCase { + CategoryImpl areas; + ModificationModule modificationMod; + QueryModule queryMod; + UpdateModule updateMod; + + public CategoryTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(CategoryTest.class); + } + + protected void setUp() throws Exception { + super.setUp(); + ClientFacade facade = getFacade(); + queryMod = facade; + modificationMod = facade; + updateMod = facade; + + areas = (CategoryImpl) modificationMod.newCategory(); + areas.setKey("areas"); + areas.getName().setName("en","areas"); + Category area51 = modificationMod.newCategory(); + area51.setKey("51"); + area51.getName().setName("en","area 51"); + Category buildingA = modificationMod.newCategory(); + buildingA.setKey("A"); + buildingA.getName().setName("en","building A"); + Category floor1 = modificationMod.newCategory(); + floor1.setKey("1"); + floor1.getName().setName("en","floor 1"); + + buildingA.addCategory(floor1); + area51.addCategory(buildingA); + areas.addCategory(area51); + + } + + public void testStore2() throws Exception { + Category superCategory = (Category)modificationMod.edit(queryMod.getSuperCategory()); + + superCategory.addCategory(areas); + modificationMod.store(superCategory); + assertTrue(areas.getId() != null); + Category editObject = (Category) modificationMod.edit(superCategory); + modificationMod.store(editObject); + assertTrue("reference to subcategory has changed" + ,areas == (CategoryImpl) superCategory.getCategory("areas") + ); + } + + + public void testStore() throws Exception { + Category superCategory = (Category)modificationMod.edit(queryMod.getSuperCategory()); + superCategory.addCategory(areas); + modificationMod.store(superCategory); + assertTrue(areas.getId() != null); + updateMod.refresh(); + Category[] categories = queryMod.getSuperCategory().getCategories(); + for (int i=0;i day.getYear()) + return 1; + if (getMonth() < day.getMonth()) + return -1; + if (getMonth() > day.getMonth()) + return 1; + if (getDate() < day.getDate()) + return -1; + if (getDate() > day.getDate()) + return 1; + return 0; + } + + public boolean equals(Object obj) { + if (!(obj instanceof Day)) + return false; + else + return (compareTo(obj) == 0); + } +} + + + + + + + + diff --git a/test-src/org/rapla/entities/tests/PreferencesTest.java b/test-src/org/rapla/entities/tests/PreferencesTest.java new file mode 100644 index 0000000..45fdd10 --- /dev/null +++ b/test-src/org/rapla/entities/tests/PreferencesTest.java @@ -0,0 +1,72 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.RaplaTestCase; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.entities.internal.CategoryImpl; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.ModificationModule; +import org.rapla.facade.QueryModule; +import org.rapla.facade.UpdateModule; + +public class PreferencesTest extends RaplaTestCase { + CategoryImpl areas; + ModificationModule modificationMod; + QueryModule queryMod; + UpdateModule updateMod; + + public PreferencesTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(PreferencesTest.class); + } + + protected void setUp() throws Exception { + super.setUp(); + ClientFacade facade = getFacade(); + queryMod = facade; + modificationMod = facade; + updateMod = facade; + } + + public void testLoad() throws Exception { + Preferences preferences = queryMod.getPreferences(); + Configuration config = ((RaplaConfiguration)preferences.getEntry("org.rapla.SessionTest")).getConfig(); + assertEquals("testvalue",config.getAttribute("test")); + } + + public void testStore() throws Exception { + Preferences preferences = queryMod.getPreferences(); + Preferences clone = (Preferences) modificationMod.edit(preferences); + //Allocatable allocatable = queryMod.getAllocatables()[0]; + //Configuration config = queryMod.createReference((RaplaType)allocatable); + //clone.putEntry("org.rapla.gui.weekview", config); + modificationMod.store(clone); + //assertEquals(allocatable, queryMod.resolve(config)); + updateMod.refresh(); + } + +} + + + + + diff --git a/test-src/org/rapla/entities/tests/ReservationFilterTest.java b/test-src/org/rapla/entities/tests/ReservationFilterTest.java new file mode 100644 index 0000000..fa0dc8a --- /dev/null +++ b/test-src/org/rapla/entities/tests/ReservationFilterTest.java @@ -0,0 +1,97 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; +import java.util.Collections; +import java.util.Iterator; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.ModificationModule; +import org.rapla.facade.QueryModule; +import org.rapla.facade.UpdateModule; + +public class ReservationFilterTest extends RaplaTestCase { + ModificationModule modificationMod; + QueryModule queryMod; + UpdateModule updateMod; + + public ReservationFilterTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(ReservationFilterTest.class); + } + + public void setUp() throws Exception { + super.setUp(); + ClientFacade facade = getFacade(); + queryMod = facade; + modificationMod = facade; + updateMod = facade; + } + + public void testStore() throws Exception { + // select from event where (name contains 'planting' or name contains 'owl') or (description contains 'friends'); + DynamicType dynamicType = queryMod.getDynamicType("event"); + ClassificationFilter classificationFilter = dynamicType.newClassificationFilter(); + classificationFilter.setRule(0 + ,dynamicType.getAttribute("name") + ,new Object[][] { + {"contains","planting"} + ,{"contains","owl"} + } + ); + classificationFilter.setRule(1 + ,dynamicType.getAttribute("description") + ,new Object[][] { + {"contains","friends"} + } + ); + /* + modificationMod.newRaplaCalendarModel( ) + ReservationFilter filter = modificationMod.newReservationFilter(, null, ReservationFilter.PARTICULAR_PERIOD, queryMod.getPeriods()[1], null, null ); + // filter.setPeriod(); + //assertEquals("bowling",queryMod.getReservations(filter)[0].getClassification().getValue("name")); + assertTrue(((EntityReferencer)filter).isRefering((RefEntity)dynamicType)); +*/ + ClassificationFilter[] filter = new ClassificationFilter[] {classificationFilter}; + + RaplaMap selected = modificationMod.newRaplaMap( Collections.EMPTY_MAP ); + CalendarModelConfiguration conf = modificationMod.newRaplaCalendarModel(selected, null,filter,null, null, null, queryMod.today(), "week", null ); + Preferences prefs = (Preferences) modificationMod.edit( queryMod.getPreferences()); + prefs.putEntry( "org.rapla.TestConf", conf); + modificationMod.store( prefs ); + + DynamicType newDynamicType = (DynamicType) modificationMod.edit( dynamicType ); + newDynamicType.removeAttribute(dynamicType.getAttribute("description")); + modificationMod.store( newDynamicType ); + + CalendarModelConfiguration configuration = (CalendarModelConfiguration)queryMod.getPreferences().getEntry("org.rapla.TestConf"); + filter = configuration.getFilter(); + Iterator it = filter[0].ruleIterator(); + it.next(); + assertTrue("second rule should be removed." , !it.hasNext()); + + } + + +} diff --git a/test-src/org/rapla/entities/tests/ReservationTest.java b/test-src/org/rapla/entities/tests/ReservationTest.java new file mode 100644 index 0000000..425ebb8 --- /dev/null +++ b/test-src/org/rapla/entities/tests/ReservationTest.java @@ -0,0 +1,145 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; +import java.util.Calendar; +import java.util.Date; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.components.util.DateTools; +import org.rapla.entities.Entity; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.ModificationModule; +import org.rapla.facade.QueryModule; +import org.rapla.framework.RaplaException; + +public class ReservationTest extends RaplaTestCase { + Reservation reserv1; + Reservation reserv2; + Allocatable allocatable1; + Allocatable allocatable2; + Calendar cal; + + ModificationModule modificationMod; + QueryModule queryMod; + + public ReservationTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(ReservationTest.class); + } + + public void setUp() throws Exception { + super.setUp(); + + ClientFacade facade = getFacade(); + queryMod = facade; + modificationMod = facade; + + cal = Calendar.getInstance(DateTools.getTimeZone()); + + + reserv1 = modificationMod.newReservation(); + reserv1.getClassification().setValue("name","Test Reservation 1"); + + reserv2 = modificationMod.newReservation(); + reserv2.getClassification().setValue("name","Test Reservation 2"); + + allocatable1 = modificationMod.newResource(); + allocatable1.getClassification().setValue("name","Test Resource 1"); + + allocatable2 = modificationMod.newResource(); + allocatable2.getClassification().setValue("name","Test Resource 2"); + + cal.set(Calendar.DAY_OF_WEEK,Calendar.TUESDAY); + cal.set(Calendar.HOUR_OF_DAY,13); + cal.set(Calendar.MINUTE,0); + Date startDate = cal.getTime(); + cal.set(Calendar.HOUR_OF_DAY,16); + Date endDate = cal.getTime(); + Appointment appointment = modificationMod.newAppointment(startDate, endDate); + reserv1.addAppointment(appointment); + reserv1.addAllocatable(allocatable1); + } + + public void testHasAllocated() throws RaplaException { + assertTrue(reserv1.hasAllocated(allocatable1)); + assertTrue( ! reserv1.hasAllocated(allocatable2)); + } + + public void testEqual() { + assertTrue( ! reserv1.equals (reserv2)); + assertTrue(reserv1.equals (reserv1)); + } + + public void testEdit() throws RaplaException { + // store the reservation to create the id's + modificationMod.storeObjects(new Entity[] {allocatable1,allocatable2, reserv1}); + Reservation persistantReservation = (Reservation) modificationMod.getPersistant( reserv1); + Appointment oldAppointment= persistantReservation.getAppointments()[0]; + + // Clone the reservation + Reservation clone = (Reservation) modificationMod.edit(persistantReservation); + assertTrue(persistantReservation.equals(clone)); + assertTrue(clone.hasAllocated(allocatable1)); + + // Modify the cloned appointment + Appointment clonedAppointment= clone.getAppointments()[0]; + cal = Calendar.getInstance(DateTools.getTimeZone()); + cal.setTime(clonedAppointment.getStart()); + cal.set(Calendar.HOUR_OF_DAY,12); + clonedAppointment.move(cal.getTime()); + + // Add a new appointment + cal.setTime(clonedAppointment.getStart()); + cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY); + cal.set(Calendar.HOUR_OF_DAY,15); + Date startDate2 = cal.getTime(); + cal.set(Calendar.HOUR_OF_DAY,17); + Date endDate2 = cal.getTime(); + Appointment newAppointment = modificationMod.newAppointment(startDate2, endDate2); + clone.addAppointment(newAppointment); + + // Copy clone back to original reservation + modificationMod.storeObjects(new Entity[] {clone}); + + assertTrue(persistantReservation.hasAllocated(allocatable1)); + // Check if oldAppointment has been modified + cal.setTime(oldAppointment.getStart()); + assertTrue(cal.get(Calendar.DAY_OF_WEEK) == Calendar.TUESDAY); + assertTrue(cal.get(Calendar.HOUR_OF_DAY) == 12); + + // Check if newAppointment has been added + Appointment[] appointments = persistantReservation.getAppointments(); + assertTrue(appointments.length == 2); + cal.setTime(appointments[1].getEnd()); + assertEquals(17,cal.get(Calendar.HOUR_OF_DAY)); + assertEquals(Calendar.MONDAY,cal.get(Calendar.DAY_OF_WEEK)); + cal.setTime(appointments[1].getStart()); + assertEquals(15,cal.get(Calendar.HOUR_OF_DAY)); + assertEquals(Calendar.MONDAY,cal.get(Calendar.DAY_OF_WEEK)); + } + +} + + + + + diff --git a/test-src/org/rapla/entities/tests/Time.java b/test-src/org/rapla/entities/tests/Time.java new file mode 100644 index 0000000..88bff77 --- /dev/null +++ b/test-src/org/rapla/entities/tests/Time.java @@ -0,0 +1,129 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; + +import java.util.*; +/** + For storing time-information (without dates). + This is only used in the test-cases. +*/ +public final class Time implements Comparable +{ + public final static int MILLISECONDS_PER_SECOND = 1000; + public final static int MILLISECONDS_PER_MINUTE = 60 * 1000; + public final static int MILLISECONDS_PER_HOUR = 60 * 60 * 1000 ; + public final static int MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000 ; + int millis = 0; + + public Time(int millis) { + this.millis = millis; + } + + public Time(Calendar cal) { + this.millis = calculateMillis(cal.get(Calendar.HOUR_OF_DAY) + ,cal.get(Calendar.MINUTE) + ,cal.get(Calendar.SECOND) + ,cal.get(Calendar.MILLISECOND)); + } + + public Time(int hour,int minute) { + int second = 0; + int millis = 0; + this.millis = calculateMillis(hour,minute,second,millis); + } + + public static Calendar time2calendar(long time,TimeZone zone) + { + Calendar c = Calendar.getInstance(zone); + c.setTime(new Date(time)); + return c; + } + + + public static int date2daytime(Date d,TimeZone zone) + { + Calendar c = Calendar.getInstance(zone); + c.setTime(d); + return calendar2daytime(c); + } + + + //* @return Time in milliseconds + public static int calendar2daytime(Calendar cal) + { + return Time.calculateMillis(cal.get(Calendar.HOUR_OF_DAY) + ,cal.get(Calendar.MINUTE) + ,cal.get(Calendar.SECOND) + ,cal.get(Calendar.MILLISECOND)); + } + + private static int calculateMillis(int hour,int minute,int second,int millis) { + return ((hour * 60 + minute) * 60 + second) * 1000 + millis; + } + + public int getHour() { + return millis / MILLISECONDS_PER_HOUR; + } + + public int getMillis() { + return millis; + } + + public int getMinute() { + return (millis % MILLISECONDS_PER_HOUR) / MILLISECONDS_PER_MINUTE; + } + + public int getSecond() { + return (millis % MILLISECONDS_PER_MINUTE) / MILLISECONDS_PER_SECOND; + } + + public int getMillisecond() { + return (millis % MILLISECONDS_PER_SECOND); + } + + public String toString() { + return getHour() + ":" + getMinute(); + } + + public Date toDate(TimeZone zone) { + Calendar cal = Calendar.getInstance(zone); + cal.setTime(new Date(0)); + cal.set(Calendar.HOUR_OF_DAY,getHour()); + cal.set(Calendar.MINUTE,getMinute()); + cal.set(Calendar.SECOND,getSecond()); + return cal.getTime(); + } + + public int compareTo(Object obj) { + Time time2 = (Time) obj; + if (getMillis() < time2.getMillis()) + return -1; + if (getMillis() > time2.getMillis()) + return 1; + return 0; + } + public boolean equals(Object obj) { + if (!(obj instanceof Time)) + return false; + else + return (compareTo(obj) == 0); + } +} + + + + + + + + diff --git a/test-src/org/rapla/entities/tests/TimeTest.java b/test-src/org/rapla/entities/tests/TimeTest.java new file mode 100644 index 0000000..c71e2fd --- /dev/null +++ b/test-src/org/rapla/entities/tests/TimeTest.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; + +import junit.framework.*; + +public class TimeTest extends TestCase { + + public TimeTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(TimeTest.class); + } + + protected void setUp() { + } + + public void testTime() { + Time time = new Time(0,1); + assertTrue(time.getMillis() == Time.MILLISECONDS_PER_MINUTE); + Time time1 = new Time( 2 * Time.MILLISECONDS_PER_HOUR + 15 * Time.MILLISECONDS_PER_MINUTE); + assertTrue(time1.getHour() == 2); + assertTrue(time1.getMinute() == 15); + Time time2 = new Time(23,15); + Time time3 = new Time(2,15); + assertTrue(time1.compareTo(time2) == -1); + assertTrue(time2.compareTo(time1) == 1); + assertTrue(time1.compareTo(time3) == 0); + } +} + + + + + diff --git a/test-src/org/rapla/entities/tests/UserTest.java b/test-src/org/rapla/entities/tests/UserTest.java new file mode 100644 index 0000000..70fc6c6 --- /dev/null +++ b/test-src/org/rapla/entities/tests/UserTest.java @@ -0,0 +1,88 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.entities.tests; +import java.util.Locale; + +import org.rapla.ServletTestBase; +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaException; +import org.rapla.server.ServerService; + + +public class UserTest extends ServletTestBase { + ServerService raplaServer; + + ClientFacade adminFacade; + ClientFacade testFacade; + Locale locale; + + public UserTest(String name) { + super(name); + } + + protected void setUp() throws Exception { + super.setUp(); + // start the server + raplaServer = (ServerService) + getContext().lookup(ServerService.ROLE + "/storage-file"); + // start the client service + adminFacade = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade"); + adminFacade.login("homer","duffs".toCharArray()); + locale = Locale.getDefault(); + + try + { + Category groups = (Category) adminFacade.edit( adminFacade.getUserGroupsCategory() ); + Category testGroup = adminFacade.newCategory(); + testGroup.setKey("test-group"); + groups.addCategory( testGroup ); + adminFacade.store( groups ); + } catch (RaplaException ex) { + adminFacade.logout(); + super.tearDown(); + throw ex; + + } + testFacade = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/remote-facade-2"); + boolean canLogin = testFacade.login("homer","duffs".toCharArray()); + assertTrue( "Can't login", canLogin ); + } + + protected void tearDown() throws Exception { + adminFacade.logout(); + testFacade.logout(); + super.tearDown(); + } + + public void testCreateAndRemoveUser() throws Exception { + User user = adminFacade.newUser(); + user.setUsername("test"); + user.setName("Test User"); + adminFacade.store( user ); + testFacade.refresh(); + User newUser = testFacade.getUser("test"); + testFacade.remove( newUser ); + // first create a new resource and set the permissions + } + + +} + + + + + diff --git a/test-src/org/rapla/facade/tests/ClientFacadeTest.java b/test-src/org/rapla/facade/tests/ClientFacadeTest.java new file mode 100644 index 0000000..cd53f37 --- /dev/null +++ b/test-src/org/rapla/facade/tests/ClientFacadeTest.java @@ -0,0 +1,313 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.facade.tests; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashSet; +import java.util.Locale; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.components.util.DateTools; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.entities.DependencyException; +import org.rapla.entities.Entity; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.ReadOnlyException; +import org.rapla.entities.User; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.Conflict; +import org.rapla.facade.ModificationModule; +import org.rapla.facade.QueryModule; +import org.rapla.facade.UserModule; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.plugin.weekview.WeekViewFactory; + +public class ClientFacadeTest extends RaplaTestCase { + ClientFacade facade; + Locale locale; + + public ClientFacadeTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(ClientFacadeTest.class); + } + + protected void setUp() throws Exception { + super.setUp(); + facade = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/local-facade"); + facade.login("homer","duffs".toCharArray()); + locale = Locale.getDefault(); + } + + protected void tearDown() throws Exception { + facade.logout(); + super.tearDown(); + } + + private Reservation findReservation(QueryModule queryMod,String name) throws RaplaException { + Reservation[] reservations = queryMod.getReservationsForAllocatable(null,null,null,null); + for (int i=0;i 0); + } + + void printConflicts(Conflict[] c) { + System.out.println(c.length + " Conflicts:"); + for (int i=0;i blocks = new ArrayList(); + Reservation reservation = getFacade().newReservation(); + Appointment appointment = getFacade().newAppointment( + formater().parseDateTime("2004-01-01","18:30:00") + ,formater().parseDateTime("2004-01-02","12:00:00") + ); + reservation.addAppointment( appointment ); + appointment.createBlocks(start,end, blocks ); + blocks = RaplaBuilder.splitBlocks( blocks + ,start + ,end + ); + + assertEquals("Blocks are not split in two", 2, blocks.size()); + assertEquals( formater().parseDateTime("2004-01-01","23:59:59").getTime()/1000, blocks.get(0).getEnd()/1000); + assertEquals( formater().parseDateTime("2004-01-02","00:00:00").getTime(), blocks.get(1).getStart()); + assertEquals( formater().parseDateTime("2004-01-02","12:00:00").getTime(), blocks.get(1).getEnd()); + + // test 3 Blocks + blocks.clear(); + reservation = getFacade().newReservation(); + appointment = getFacade().newAppointment( + formater().parseDateTime("2004-01-01","18:30:00") + ,formater().parseDateTime("2004-01-04","00:00:00") + ); + reservation.addAppointment( appointment ); + appointment.createBlocks(start,end, blocks ); + blocks = RaplaBuilder.splitBlocks( blocks + ,start + ,end + ); + assertEquals("Blocks are not split in three", 3, blocks.size()); + assertEquals(formater().parseDateTime("2004-01-03","23:59:59").getTime()/1000, blocks.get(2).getEnd()/1000); + + // test 3 Blocks, but only the first two should show + blocks.clear(); + reservation = getFacade().newReservation(); + appointment = getFacade().newAppointment( + formater().parseDateTime("2004-01-01","18:30:00") + ,formater().parseDateTime("2004-01-04","00:00:00") + ); + reservation.addAppointment( appointment ); + appointment.createBlocks(start,end, blocks ); + blocks = RaplaBuilder.splitBlocks( blocks + ,start + ,formater().parseDateTime("2004-01-03","00:00:00") + + ); + assertEquals("Blocks are not split in two", 2, blocks.size()); + assertEquals(formater().parseDateTime("2004-01-02","23:59:59").getTime()/1000, blocks.get(1).getEnd()/1000); + } +} + diff --git a/test-src/org/rapla/gui/toolkit/tests/ErrorDialogTest.java b/test-src/org/rapla/gui/toolkit/tests/ErrorDialogTest.java new file mode 100644 index 0000000..99ff92e --- /dev/null +++ b/test-src/org/rapla/gui/toolkit/tests/ErrorDialogTest.java @@ -0,0 +1,52 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit.tests; + +import org.rapla.gui.tests.GUITestCase; +import org.rapla.gui.toolkit.ErrorDialog; + +import junit.framework.*; + +public class ErrorDialogTest extends GUITestCase { + + public ErrorDialogTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(ErrorDialogTest.class); + } + + public void testError() throws Exception { + ErrorDialog.THROW_ERROR_DIALOG_EXCEPTION = false; + ErrorDialog dialog = new ErrorDialog(getContext()); + dialog.show("This is a very long sample error-text for our error-message-displaying-test" + + " it should be wrapped so that the whole text is diplayed."); + } + + public static void main(String[] args) { + new ErrorDialogTest("ErrorDialogTest").interactiveTest("testError"); + } + + +} + + + + + + + + + + diff --git a/test-src/org/rapla/plugin/tests/CopyPeriodPluginTest.java b/test-src/org/rapla/plugin/tests/CopyPeriodPluginTest.java new file mode 100644 index 0000000..99ac2da --- /dev/null +++ b/test-src/org/rapla/plugin/tests/CopyPeriodPluginTest.java @@ -0,0 +1,83 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.tests; + +import java.util.Collections; +import java.util.Locale; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.facade.ClientFacade; +import org.rapla.gui.internal.common.CalendarModelImpl; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.plugin.periodcopy.CopyPluginInit; + +/** listens for allocation changes */ +public class CopyPeriodPluginTest extends RaplaTestCase { + ClientFacade facade; + Locale locale; + + public CopyPeriodPluginTest(String name) { + super(name); + } + + protected void setUp() throws Exception { + super.setUp(); + facade = (ClientFacade) + getContext().lookup(ClientFacade.ROLE + "/local-facade"); + facade.login("homer","duffs".toCharArray()); + locale = Locale.getDefault(); + } + + private Reservation findReservationWithName(Reservation[] reservations, String name) { + for (int i=0;i= 0 ); + + reservationName = "Another name"; + r.getClassification().setValue( "name", reservationName ); + r.getAppointments()[0].move( new Date( new Date().getTime() + DateTools.MILLISECONDS_PER_HOUR ) ); + facade1.store( r ); + + System.out.println( ( (RefEntity) r ).getVersion() ); + + Thread.sleep( 1000 ); + assertEquals( 2, mailMock.getCallCount() ); + + assertNotNull( mailMock.getMailBody() ); + assertTrue( mailMock.getMailBody().indexOf( reservationName ) >= 0 ); + + + + } + + public void testRemove() throws Exception + { + Allocatable allocatable = facade1.getAllocatables()[0]; + + add( allocatable ); + + Reservation r = facade1.newReservation(); + String reservationName = "New Reservation"; + r.getClassification().setValue( "name", reservationName ); + Appointment appointment = facade1.newAppointment( new Date(), new Date( new Date().getTime() + + DateTools.MILLISECONDS_PER_HOUR ) ); + r.addAppointment( appointment ); + r.addAllocatable( allocatable ); + + + facade1.store( r ); + facade1.remove( r ); + + Thread.sleep( 1000 ); + MockMailer mailMock = (MockMailer) raplaServer.getContext().lookup( MailInterface.ROLE ); + assertEquals( 2, mailMock.getCallCount() ); + String body = mailMock.getMailBody(); + assertTrue( "Body doesnt contain delete text\n" + body, body.indexOf( "gel\u00f6scht" ) >= 0 ); + + } + +} \ No newline at end of file diff --git a/test-src/org/rapla/server/SecurityManagerTest.java b/test-src/org/rapla/server/SecurityManagerTest.java new file mode 100644 index 0000000..9c61fa4 --- /dev/null +++ b/test-src/org/rapla/server/SecurityManagerTest.java @@ -0,0 +1,144 @@ +package org.rapla.server; + +import java.util.Date; +import java.util.Locale; + +import org.rapla.ServletTestBase; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.ClientFacade; +import org.rapla.storage.RaplaSecurityException; + +public class SecurityManagerTest extends ServletTestBase { + + ServerService raplaServer; + + protected ClientFacade facade1; + + Locale locale; + + public SecurityManagerTest(String name) + { + super(name); + } + + protected void setUp() throws Exception + { + super.setUp(); + // start the server + raplaServer = (ServerService) getContext().lookup( + ServerService.ROLE + "/" + getStorageName()); + // start the client service + facade1 = (ClientFacade) getContext().lookup( + ClientFacade.ROLE + "/remote-facade"); +/* facade2 = (ClientFacade) getContext().lookup( + ClientFacade.ROLE + "/remote-facade-2");*/ + locale = Locale.getDefault(); + } + + protected String getStorageName() + { + return "storage-file"; + } + + public void testConflictForbidden() throws Exception + { + // We test conflict prevention for an appointment that is in the future + Date start = new Date(facade1.today().getTime() + DateTools.MILLISECONDS_PER_DAY + 10 * DateTools.MILLISECONDS_PER_HOUR); + Date end = new Date( start.getTime() + 2 * DateTools.MILLISECONDS_PER_HOUR); + + facade1.login("homer", "duffs".toCharArray()); + DynamicType roomType = facade1.getDynamicType("room"); + ClassificationFilter filter = roomType.newClassificationFilter(); + filter.addEqualsRule("name", "erwin"); + Allocatable resource = facade1.getAllocatables( filter.toArray())[0]; + { + // First we create a reservation for the resource + Reservation event = facade1.newReservation(); + event.getClassification().setValue("name", "taken"); + event.addAppointment( facade1.newAppointment( start, end ) ); + event.addAllocatable( resource ); + facade1.store( event ); + } + facade1.logout(); + // Now we login as a non admin user, who isnt allowed to create conflicts on the resource erwin + facade1.login("monty", "burns".toCharArray()); + { + Reservation event = facade1.newReservation(); + // A new event with the same time for the same resource should fail. + event.getClassification().setValue("name", "conflicting event"); + Appointment app = facade1.newAppointment( start, end ) ; + event.addAppointment( app); + event.addAllocatable( resource ); + try + { + facade1.store( event ); + fail("Security Exception expected"); + } + catch ( Exception ex) + { + Throwable ex1 = ex; + boolean secExceptionFound = false; + while ( ex1 != null) + { + if ( ex1 instanceof RaplaSecurityException) + { + secExceptionFound = true; + } + ex1 = ex1.getCause(); + } + if ( !secExceptionFound) + { + ex.printStackTrace(); + fail("Exception expected but was not security exception"); + } + } + // moving the start of the second appointment to the end of the first one should work + app.move( end ); + facade1.store( event ); + } + { + // We have to reget the event + DynamicType eventType = facade1.getDynamicType("event"); + ClassificationFilter eventFilter = eventType.newClassificationFilter(); + eventFilter.addEqualsRule("name", "conflicting event"); + + Reservation event = facade1.getReservationsForAllocatable( null, null, null, eventFilter.toArray())[0]; + // But moving back the appointment to today should fail + event = (Reservation) facade1.edit( event ); + Date startPlus1 = new Date( start.getTime() + DateTools.MILLISECONDS_PER_HOUR) ; + event.getAppointments()[0].move( startPlus1,end); + try + { + facade1.store( event ); + fail("Security Exception expected"); + } + catch ( Exception ex) + { + Throwable ex1 = ex; + boolean secExceptionFound = false; + while ( ex1 != null) + { + if ( ex1 instanceof RaplaSecurityException) + { + secExceptionFound = true; + } + ex1 = ex1.getCause(); + } + if ( !secExceptionFound) + { + ex.printStackTrace(); + fail("Exception expected but was not security exception"); + } + } + facade1.logout(); + Thread.sleep(100); + } + + } + +} diff --git a/test-src/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.java b/test-src/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.java new file mode 100644 index 0000000..45963e0 --- /dev/null +++ b/test-src/org/rapla/storage/dbfile/tests/FileOperatorDiffTest.java @@ -0,0 +1,88 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbfile.tests; + +import java.io.FileInputStream; +import java.io.IOException; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.Entity; +import org.rapla.entities.domain.Allocatable; +import org.rapla.framework.RaplaException; +import org.rapla.storage.CachableStorageOperator; + +public class FileOperatorDiffTest extends RaplaTestCase { + CachableStorageOperator operator; + + public FileOperatorDiffTest(String name) { + super(name); + } + + public boolean differ(String file1, String file2) throws IOException { + FileInputStream in1 = null; + FileInputStream in2 = null; + boolean bDiffer = false; + try { + in1 = new FileInputStream(file1); + in2 = new FileInputStream(file2); + while (true) { + int b1 = in1.read(); + int b2 = in2.read(); + if (b1 != b2) { + bDiffer = true; + break; + } + if (b1 == -1) { + break; + } + } + return bDiffer; + } + finally { + if (in1 != null) + in1.close(); + if (in2 != null) + in2.close(); + } + } + + public static Test suite() { + return new TestSuite(FileOperatorDiffTest.class); + } + + public void setUp() throws Exception { + super.setUp(); + operator = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE +"/file"); + } + + public void testSave() throws RaplaException,IOException { + String testFile = "test-src/testdefault.xml"; + assertTrue(differ(TEST_FOLDER_NAME + "/test.xml",testFile) == false); + operator.connect(); + Entity obj = (Entity)operator.getObjects( Allocatable.TYPE).iterator().next(); + operator.editObject(obj, null); + operator.storeAndRemove(new Entity[] { obj }, Entity.ENTITY_ARRAY, null); + assertTrue("stored version differs from orginal " + testFile + , differ(TEST_FOLDER_NAME + "/test.xml",testFile) == false ); + } + +} + + + + + diff --git a/test-src/org/rapla/storage/dbfile/tests/FileOperatorRemoteTest.java b/test-src/org/rapla/storage/dbfile/tests/FileOperatorRemoteTest.java new file mode 100644 index 0000000..f529918 --- /dev/null +++ b/test-src/org/rapla/storage/dbfile/tests/FileOperatorRemoteTest.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbfile.tests; + +import org.rapla.ServerTest; +import org.rapla.storage.CachableStorageOperator; + +public class FileOperatorRemoteTest extends ServerTest { + CachableStorageOperator operator; + + public FileOperatorRemoteTest(String name) { + super(name); + } + + protected String getStorageName() { + return "storage-file"; + } + + +} + + + + + diff --git a/test-src/org/rapla/storage/dbfile/tests/FileOperatorTest.java b/test-src/org/rapla/storage/dbfile/tests/FileOperatorTest.java new file mode 100644 index 0000000..4a9cf61 --- /dev/null +++ b/test-src/org/rapla/storage/dbfile/tests/FileOperatorTest.java @@ -0,0 +1,44 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbfile.tests; +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.storage.tests.AbstractOperatorTest; + +public class FileOperatorTest extends AbstractOperatorTest { + + public FileOperatorTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(FileOperatorTest.class); + } + + + protected String getStorageName() { + return "file"; + } + + protected String getFacadeName() { + return "local-facade"; + } + + +} + + + + + diff --git a/test-src/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.java b/test-src/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.java new file mode 100644 index 0000000..b99305f --- /dev/null +++ b/test-src/org/rapla/storage/dbsql/tests/SQLOperatorRemoteTest.java @@ -0,0 +1,213 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbsql.tests; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.ServerTest; +import org.rapla.components.util.IOUtil; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeAnnotations; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.ImportExportManager; +import org.rapla.storage.dbsql.DBOperator; + +public class SQLOperatorRemoteTest extends ServerTest { + + public SQLOperatorRemoteTest(String name) { + super(name); + } + + protected String getStorageName() { + return "storage-sql"; + } + + public static Test suite() throws Exception { + TestSuite suite = new TestSuite("SQLOperatorRemoteTest"); + suite.addTest( new SQLOperatorRemoteTest("testExport")); + suite.addTest( new SQLOperatorRemoteTest("testNewAttribute")); + suite.addTest( new SQLOperatorRemoteTest("testAttributeChange")); + suite.addTest( new SQLOperatorRemoteTest("testChangeDynamicType")); + //suite.addTest( new SQLOperatorRemoteTest("testChangeDynamicTypeRemoveAttribute")); + suite.addTest( new SQLOperatorRemoteTest("testChangeGroup")); + suite.addTest( new SQLOperatorRemoteTest("testCreateResourceAndRemoveAttribute")); + return suite; + } + + protected void setUp() throws Exception + { + IOUtil.copy( "webapp/WEB-INF/rapla-hsqldb.properties", WEBAPP_INF_FOLDER_NAME+ "/rapla-hsqldb.properties" ); + IOUtil.copy( "webapp/WEB-INF/rapla-hsqldb.script", WEBAPP_INF_FOLDER_NAME+"/rapla-hsqldb.script" ); + super.setUp(); + } + + public void testExport() throws Exception { + RaplaContext sm = getContext(); + ImportExportManager conv = (ImportExportManager) sm.lookup(ImportExportManager.ROLE); + conv.doExport(); + CachableStorageOperator operator = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE +"/sql"); + operator.disconnect(); + Thread.sleep( 1000 ); + operator.connect(); + operator.getVisibleEntities( null ); + operator.disconnect(); + } + + /** exposes a bug in the 0.12.1 Version of Rapla */ + public void testAttributeChange() throws Exception { + ClientFacade facade = (ClientFacade) + getContext().lookup(ClientFacade.ROLE +"/sql-facade"); + facade.login("admin","".toCharArray()); + // change Type + changeEventType( facade ); + facade.logout(); + + // We need to disconnect the operator + CachableStorageOperator operator = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE +"/sql"); + operator.disconnect(); + testTypeIds(); + // The error shows when connect again + operator.connect(); + changeEventType( facade ); + testTypeIds(); + + } + + private void changeEventType( ClientFacade facade ) throws RaplaException + { + DynamicType eventType = (DynamicType) facade.edit( facade.getDynamicType("event") ); + Attribute attribute = eventType.getAttribute("description"); + attribute.setType( AttributeType.CATEGORY ); + attribute.setConstraint( ConstraintIds.KEY_ROOT_CATEGORY, facade.getSuperCategory().getCategory("department") ); + facade.store( eventType ); + } + + private void testTypeIds() throws RaplaException, SQLException + { + CachableStorageOperator operator = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE +"/sql"); + Connection connection = ((DBOperator)operator).createConnection(); + String sql ="SELECT * from DYNAMIC_TYPE"; + try + { + Statement statement = connection.createStatement(); + ResultSet set = statement.executeQuery(sql); + while ( !set.isLast()) + { + set.next(); + String idString = set.getString("ID"); + String key = set.getString("TYPE_KEY"); + System.out.println( "id " + idString + " key " + key); + } + } + catch (SQLException ex) + { + throw new RaplaException( ex); + } + finally + { + connection.close(); + } + } + + + public void testNewAttribute() throws Exception { + ClientFacade facade = (ClientFacade) + getContext().lookup(ClientFacade.ROLE +"/sql-facade"); + facade.login("admin","".toCharArray()); + // change Type + DynamicType roomType = (DynamicType) facade.edit( facade.getDynamicType("room") ); + Attribute attribute = facade.newAttribute( AttributeType.STRING ); + attribute.setKey("color"); + attribute.setAnnotation( AttributeAnnotations.KEY_EDIT_VIEW, AttributeAnnotations.VALUE_NO_VIEW); + roomType.addAttribute( attribute ); + facade.store( roomType ); + + roomType = (DynamicType) facade.getPersistant( roomType ); + + Allocatable[] allocatables = facade.getAllocatables( new ClassificationFilter[] {roomType.newClassificationFilter() }); + Allocatable allocatable = (Allocatable) facade.edit( allocatables[0]); + allocatable.getClassification().setValue("color", "665532"); + + String name = (String) allocatable.getClassification().getValue("name"); + facade.store( allocatable ); + + facade.logout(); + + // We need to disconnect the operator + CachableStorageOperator operator = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE +"/sql"); + operator.disconnect(); + // The error shows when connect again + operator.connect(); + + facade.login("admin","".toCharArray()); + allocatables = facade.getAllocatables( new ClassificationFilter[] {roomType.newClassificationFilter() }); + allocatable = (Allocatable) facade.edit( allocatables[0]); + assertEquals( name, allocatable.getClassification().getValue("name") ); + } + + public void testCreateResourceAndRemoveAttribute() throws RaplaException + { + Allocatable newResource = facade1.newResource(); + newResource.setClassification( facade1.getDynamicType("room").newClassification()); + newResource.getClassification().setValue("name", "test-resource"); + //If commented in it works + //newResource.getClassification().setValue("belongsto", facade1.getSuperCategory().getCategory("department").getCategories()[0]); + facade1.store(newResource); + + DynamicType typeEdit3 = (DynamicType) facade1.edit(facade1.getDynamicType("room")); + typeEdit3.removeAttribute( typeEdit3.getAttribute("belongsto")); + facade1.store(typeEdit3); + + } + + + public void tearDown() throws Exception { + // nochmal ueberpruefen ob die Daten auch wirklich eingelesen werden koennen. This could not be the case + CachableStorageOperator operator = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE +"/sql"); + operator.disconnect(); + Thread.sleep( 200 ); + operator.connect(); + operator.getVisibleEntities( null ); + operator.disconnect(); + Thread.sleep( 100 ); + super.tearDown(); + Thread.sleep(500); + } + + + +} + + + + + diff --git a/test-src/org/rapla/storage/dbsql/tests/SQLOperatorTest.java b/test-src/org/rapla/storage/dbsql/tests/SQLOperatorTest.java new file mode 100644 index 0000000..07fb943 --- /dev/null +++ b/test-src/org/rapla/storage/dbsql/tests/SQLOperatorTest.java @@ -0,0 +1,175 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.dbsql.tests; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Date; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.components.util.DateTools; +import org.rapla.components.util.IOUtil; +import org.rapla.entities.Category; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaException; +import org.rapla.storage.dbsql.DBOperator; +import org.rapla.storage.tests.AbstractOperatorTest; + +public class SQLOperatorTest extends AbstractOperatorTest { + + public SQLOperatorTest(String name) { + super(name); + } + + public void setUp() throws Exception { + IOUtil.copy( "webapp/WEB-INF/rapla-hsqldb.properties", TEST_FOLDER_NAME + "/rapla-hsqldb.properties" ); + IOUtil.copy( "webapp/WEB-INF/rapla-hsqldb.script", TEST_FOLDER_NAME + "/rapla-hsqldb.script" ); + super.setUp(); + ((DBOperator) operator).removeAll(); + operator.disconnect(); + operator.connect(); + } + + public static Test suite() { + return new TestSuite(SQLOperatorTest.class); + } + + /** exposes a bug in 1.1 + * @throws RaplaException */ + public void testPeriodInfitiveEnd() throws RaplaException { + facade.login("homer", "duffs".toCharArray() ); + Reservation event = facade.newReservation(); + Appointment appointment = facade.newAppointment( new Date(), new Date()); + event.getClassification().setValue("name","test"); + appointment.setRepeatingEnabled( true ); + appointment.getRepeating().setEnd( null ); + event.addAppointment( appointment ); + facade.store(event); + operator.refresh(); + + Reservation event1 = (Reservation)operator.getPersistant( event ); + Repeating repeating = event1.getAppointments()[0].getRepeating(); + assertNotNull( repeating ); + assertNull( repeating.getEnd()); + assertEquals( -1, repeating.getNumber()); + } + + public void testPeriodStorage() throws RaplaException { + facade.login("homer", "duffs".toCharArray() ); + Date start = DateTools.cutDate( new Date()); + Date end = new Date( start.getTime() + DateTools.MILLISECONDS_PER_WEEK); + Period period = facade.newPeriod(); + period.setName( "TEST PERIOD"); + period.setStart( start ); + period.setEnd( end ); + facade.store( period); + operator.refresh(); + + Period period1 = (Period)operator.getPersistant( period); + assertEquals( period1.getStart(), period.getStart()); + assertEquals( period1.getEnd(), period1.getEnd()); + } + + public void testCategoryChange() throws RaplaException { + facade.login("homer", "duffs".toCharArray() ); + { + Category category1 = facade.newCategory(); + Category category2 = facade.newCategory(); + category1.setKey("users1"); + category2.setKey("users2"); + Category groups = (Category) facade.edit(facade.getUserGroupsCategory()); + groups.addCategory( category1 ); + groups.addCategory( category2 ); + facade.store( groups); + assertEquals("users1",facade.getUserGroupsCategory().getCategories()[3].getKey()); + assertEquals("users2",facade.getUserGroupsCategory().getCategories()[4].getKey()); + operator.disconnect(); + operator.connect(); + facade.refresh(); + } + assertEquals("users1",facade.getUserGroupsCategory().getCategories()[3].getKey()); + assertEquals("users2",facade.getUserGroupsCategory().getCategories()[4].getKey()); + + + } + + + + public void testDynamicTypeChange() throws Exception + { + facade.login("homer", "duffs".toCharArray() ); + DynamicType type = (DynamicType)facade.edit(facade.getDynamicType("event")); + Object id = ((RefEntity)type).getId(); + Attribute att = facade.newAttribute( AttributeType.STRING); + att.setKey("test-att"); + type.addAttribute( att ); + facade.store( type); + facade.logout(); + printTypeIds(); + operator.disconnect(); + facade.login("homer", "duffs".toCharArray() ); + DynamicType typeAfterEdit = facade.getDynamicType("event"); + Object idAfterEdit = ((RefEntity)typeAfterEdit).getId(); + assertEquals( id, idAfterEdit); + } + + private void printTypeIds() throws RaplaException, SQLException + { + Connection connection = ((DBOperator)operator).createConnection(); + String sql ="SELECT * from DYNAMIC_TYPE"; + try + { + Statement statement = connection.createStatement(); + ResultSet set = statement.executeQuery(sql); + while ( !set.isLast()) + { + set.next(); + String idString = set.getString("ID"); + String key = set.getString("TYPE_KEY"); + System.out.println( "id " + idString + " key " + key); + } + } + catch (SQLException ex) + { + throw new RaplaException( ex); + } + finally + { + connection.close(); + } + } + + protected String getStorageName() { + return "sql"; + } + + protected String getFacadeName() { + return "sql-facade"; + } + +} + + + + + diff --git a/test-src/org/rapla/storage/tests/AbstractOperatorTest.java b/test-src/org/rapla/storage/tests/AbstractOperatorTest.java new file mode 100644 index 0000000..4733f75 --- /dev/null +++ b/test-src/org/rapla/storage/tests/AbstractOperatorTest.java @@ -0,0 +1,189 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.tests; +import java.util.Date; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.Category; +import org.rapla.entities.Entity; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.ClientFacade; +import org.rapla.framework.RaplaException; +import org.rapla.storage.CachableStorageOperator; + +public abstract class AbstractOperatorTest extends RaplaTestCase { + + protected CachableStorageOperator operator; + protected ClientFacade facade; + public AbstractOperatorTest(String name) { + super(name); + } + + protected void setUp() throws Exception { + super.setUp(); + operator = (CachableStorageOperator)getContext().lookup(CachableStorageOperator.ROLE + "/" + getStorageName()); + facade = (ClientFacade) getContext().lookup(ClientFacade.ROLE + "/" + getFacadeName()); + } + + abstract protected String getStorageName(); + + abstract protected String getFacadeName(); + + public void testReservationStore() throws RaplaException { + // abspeichern + facade.login("homer", "duffs".toCharArray() ); + { + Reservation r = facade.newReservation(); + r.getClassification().setValue("name","test"); + Appointment app = facade.newAppointment( new Date(), new Date()); + Appointment app2 = facade.newAppointment( new Date(), new Date()); + Allocatable resource = facade.newResource(); + r.addAppointment( app); + r.addAppointment( app2); + r.addAllocatable(resource ); + r.setRestriction( resource, new Appointment[] {app}); + app.setRepeatingEnabled( true ); + app.getRepeating().setType(Repeating.DAILY); + app.getRepeating().setNumber( 10); + app.getRepeating().addException( new Date()); + facade.storeObjects( new Entity[] { r,app, app2, resource }); + } + operator.disconnect(); + operator.connect(); + facade.login("homer", "duffs".toCharArray() ); + // einlesen + { + String defaultReservation = "event"; + ClassificationFilter filter = facade.getDynamicType( defaultReservation ).newClassificationFilter(); + filter.addRule("name",new Object[][] { {"contains","test"}}); + Reservation reservation = facade.getReservationsForAllocatable( null, null, null, new ClassificationFilter[] {filter} )[0]; + Appointment[] apps = reservation.getAppointments(); + Allocatable resource = reservation.getAllocatables()[0]; + assertEquals( 2, apps.length); + assertEquals( 1, reservation.getAppointmentsFor( resource ).length); + Appointment app = reservation.getAppointmentsFor( resource )[0]; + assertEquals( 1, app.getRepeating().getExceptions().length); + assertEquals( Repeating.DAILY, app.getRepeating().getType()); + assertEquals( 10, app.getRepeating().getNumber()); + } + } + + public void testUserStore() throws RaplaException { + facade.login("homer", "duffs".toCharArray() ); + { + User u = facade.newUser(); + u.setUsername("kohlhaas"); + u.setAdmin( false); + u.addGroup( facade.getUserGroupsCategory().getCategory("my-group")); + facade.store( u ); + } + operator.disconnect(); + operator.connect(); + facade.login("homer", "duffs".toCharArray() ); + { + User u = facade.getUser("kohlhaas"); + Category[] groups = u.getGroups(); + assertEquals( groups.length, 2 ); + assertEquals( facade.getUserGroupsCategory().getCategory("my-group"), groups[1]); + assertFalse( u.isAdmin() ); + } + } + + public void testCategoryAnnotation() throws RaplaException { + String sampleDoc = "This is the category for user-groups"; + String sampleAnnotationValue = "documentation"; + facade.login("homer", "duffs".toCharArray() ); + { + Category userGroups = (Category) facade.edit( facade.getUserGroupsCategory()); + userGroups.setAnnotation( sampleAnnotationValue, sampleDoc ); + facade.store( userGroups ); + } + operator.disconnect(); + operator.connect(); + facade.login("homer", "duffs".toCharArray() ); + { + Category userGroups = facade.getUserGroupsCategory(); + assertEquals( sampleDoc, userGroups.getAnnotation( sampleAnnotationValue )); + } + } + + public void testAttributeStore() throws RaplaException { + facade.login("homer", "duffs".toCharArray() ); + // abspeichern + { + DynamicType type = (DynamicType) facade.edit( facade.getDynamicType("event")); + + Attribute att = facade.newAttribute( AttributeType.STRING ); + att.setKey("test-att"); + type.addAttribute( att ); + + Reservation r = facade.newReservation(); + try { + r.setClassification( type.newClassification() ); + fail("Should have thrown an IllegalStateException"); + } catch (IllegalStateException ex) { + } + + facade.store( type ); + + r.setClassification( ((DynamicType)facade.getPersistant(type)).newClassification() ); + + r.getClassification().setValue("name","test"); + r.getClassification().setValue("test-att","test-att-value"); + Appointment app = facade.newAppointment( new Date(), new Date()); + Appointment app2 = facade.newAppointment( new Date(), new Date()); + Allocatable resource = facade.newResource(); + r.addAppointment( app); + r.addAppointment( app2); + r.addAllocatable(resource ); + r.setRestriction( resource, new Appointment[] {app}); + app.setRepeatingEnabled( true ); + app.getRepeating().setType(Repeating.DAILY); + app.getRepeating().setNumber( 10); + app.getRepeating().addException( new Date()); + facade.storeObjects( new Entity[] { r,app, app2, resource }); + operator.disconnect(); + } + // einlesen + { + operator.connect(); + facade.login("homer", "duffs".toCharArray() ); + String defaultReservation = "event"; + ClassificationFilter filter = facade.getDynamicType( defaultReservation ).newClassificationFilter(); + filter.addRule("name",new Object[][] { {"contains","test"}}); + Reservation reservation = facade.getReservationsForAllocatable( null, null, null, new ClassificationFilter[] {filter} )[0]; + Appointment[] apps = reservation.getAppointments(); + Allocatable resource = reservation.getAllocatables()[0]; + assertEquals( "test-att-value", reservation.getClassification().getValue("test-att")); + assertEquals( 2, apps.length); + assertEquals( 1, reservation.getAppointmentsFor( resource ).length); + Appointment app = reservation.getAppointmentsFor( resource )[0]; + assertEquals( 1, app.getRepeating().getExceptions().length); + assertEquals( Repeating.DAILY, app.getRepeating().getType()); + assertEquals( 10, app.getRepeating().getNumber()); + } + } +} + + + + + diff --git a/test-src/org/rapla/storage/tests/LocalCacheTest.java b/test-src/org/rapla/storage/tests/LocalCacheTest.java new file mode 100644 index 0000000..33f3408 --- /dev/null +++ b/test-src/org/rapla/storage/tests/LocalCacheTest.java @@ -0,0 +1,127 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.tests; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; +import java.util.Locale; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.rapla.RaplaTestCase; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.internal.AllocatableImpl; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.entities.dynamictype.internal.AttributeImpl; +import org.rapla.entities.dynamictype.internal.DynamicTypeImpl; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.storage.CachableStorageOperator; +import org.rapla.storage.LocalCache; + +public class LocalCacheTest extends RaplaTestCase { + Locale locale; + + public LocalCacheTest(String name) { + super(name); + } + + public static Test suite() { + return new TestSuite(LocalCacheTest.class); + } + + protected void setUp() throws Exception { + super.setUp(); + } + + public DynamicTypeImpl createDynamicType() throws Exception { + AttributeImpl attribute = new AttributeImpl(AttributeType.STRING); + attribute.setKey("name"); + attribute.setId(new SimpleIdentifier(Attribute.TYPE,1)); + DynamicTypeImpl dynamicType = new DynamicTypeImpl(); + dynamicType.setElementKey("defaultResource"); + dynamicType.setId(new SimpleIdentifier(DynamicType.TYPE,1)); + dynamicType.addAttribute(attribute); + dynamicType.setAnnotation(DynamicTypeAnnotations.KEY_NAME_FORMAT,"{name}"); + return dynamicType; + } + + + public AllocatableImpl createResource(int id,DynamicType type,String name) { + Date today = new Date(); + AllocatableImpl resource = new AllocatableImpl(today, today); + resource.setId(new SimpleIdentifier(Allocatable.TYPE,id)); + Classification classification = type.newClassification(); + classification.setValue("name",name); + resource.setClassification(classification); + return resource; + } + + public void testAllocatable() throws Exception { + LocalCache cache = new LocalCache( Locale.GERMANY ); + + DynamicTypeImpl type = createDynamicType(); + type.setReadOnly( true ); + cache.put( type ); + AllocatableImpl resource1 = createResource(1,type,"Adrian"); + cache.put(resource1); + AllocatableImpl resource2 = createResource(2,type,"Beta"); + cache.put(resource2); + AllocatableImpl resource3 = createResource(3,type,"Ceta"); + cache.put(resource3); + + resource1.getClassification().setValue("name","Zeta"); + cache.put(resource1); + Allocatable[] resources = (Allocatable[]) + cache.getCollection( Allocatable.TYPE).toArray(Allocatable.ALLOCATABLE_ARRAY); + assertEquals(3, resources.length); + assertTrue(resources[1].getName(locale).equals("Beta")); + } + + public void test2() throws Exception { + CachableStorageOperator storage = (CachableStorageOperator) + getContext().lookup(CachableStorageOperator.ROLE + "/file"); + storage.connect(); + LocalCache cache = storage.getCache(); + { + Iterator it = cache.getCollection(Period.TYPE).iterator(); + Period period = (Period) it.next(); + Collection reservations = cache.getReservations(null,period.getStart(),period.getEnd()); + assertEquals(0,reservations.size()); + period = (Period) it.next(); + reservations = cache.getReservations(null,period.getStart(),period.getEnd()); + assertEquals(2, reservations.size()); + User user = cache.getUser("homer"); + reservations = cache.getReservations(user,null,null); + assertEquals(3, reservations.size()); + reservations = cache.getReservations(user,period.getStart(),period.getEnd()); + assertEquals(2, reservations.size()); + } + { + Iterator it = cache.getIterator(Allocatable.TYPE); + assertEquals("erwin",((Allocatable)it.next()).getName(locale)); + assertEquals("Room A66",((Allocatable)it.next()).getName(locale)); + } + } +} + + + + + diff --git a/test-src/org/rapla/storage/xml/tests/ConverterTest.java b/test-src/org/rapla/storage/xml/tests/ConverterTest.java new file mode 100644 index 0000000..28830e5 --- /dev/null +++ b/test-src/org/rapla/storage/xml/tests/ConverterTest.java @@ -0,0 +1,37 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.storage.xml.tests; + +import org.rapla.*; + +public class ConverterTest extends RaplaTestCase { + public ConverterTest(String name) { + super(name); + } + + protected void setUp() throws Exception { + // we do it in convert + } + + + public void testConvert() throws Exception { + super.setUp( "org/rapla/storage/xml/tests/version-0.5.xml" ); + assertEquals(2,getFacade().getAllocatables().length); + } + +} + + + + + diff --git a/test-src/org/rapla/storage/xml/tests/version-0.5.xml b/test-src/org/rapla/storage/xml/tests/version-0.5.xml new file mode 100644 index 0000000..2524dcd --- /dev/null +++ b/test-src/org/rapla/storage/xml/tests/version-0.5.xml @@ -0,0 +1,348 @@ + + + + Kategorien + categories + + Verwaltungseinheit + Administrative entity + + Paedagogik + + + MathNat + + Informatik + + Abteilung 3 + + + + + + Veranstaltungen + + Studienabschnitt + + Grundstudium + + + Hauptstudium + + + + Bereich + + Theoretisch + + + Praktisch + + + Theo/Prak + + + + + Raum + + Raumtyp + + Hörsaal + + + Seminarraum + + + + + Gebäude + Building + + Komplex + + AVZ III + + + Hauptgebäude + + + + + + + + + Raum + room + + {name} + + + Name + name + + + + Plätze + seats + + + + Sonstiges + misc. + + + + Tafel + blackboard + + + + + gehört zu + belongs to + + + + + + + + Raumtyp + + + + + + + + + + + + Dozent + lecturer + + {surname}, {forename} + + + Titel + title + + + + Nachname + surname + + + + Vorname + forename + + + + email + email + + + + + arbeitet für + works for + + + + + + + + + + + + + Vorlesungen + lecture + + {name} + + + Name + name + + + + Studiengang/Institut + + + + + + + Studienabschnitt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + category[key='hoersaal'] + + + + + + + + + + + + + + + + + category[key='grundstudium'] + + + + + + + + + + + + + + + + + A207 + 80 + Baemer + Doppeltafel + category[key='MathNat']/category[key='Informatik']/category[key='a3'] + category[key='hoersaal'] + + + + + H A + 220 + Overheadprojektor + Doppeltafel + category[key='MathNat'] + category[key='hoersaal'] + + + + + + + + + + + + + + + + + Dipl. IDB (*) + category[key='MathNat']/category[key='Informatik']/category[key='a3'] + category[key='haupstudium'] + + + + + + + + + + + + + + + + + + Online-Algorithmen + category[key='MathNat']/category[key='Informatik']/category[key='a3'] + + + + + + + + + + + + + + + + + diff --git a/test-src/test.xconf b/test-src/test.xconf new file mode 100644 index 0000000..34586b0 --- /dev/null +++ b/test-src/test.xconf @@ -0,0 +1,109 @@ + + + + + DE + + de + en + + 8-18 + 1,7 + + + + + + + local-facade + + + + file + + + + sql + + + + xxx + + + + file + homer + duffs + + + + file + + + + sql + + + + remote + + + + remote-2 + + + + web + + + + utf-8 + test.xml + + + + + org.hsqldb.jdbcDriver + jdbc:hsqldb:${context-root}/rapla-hsqldb + sa + + true + + + + + + + + + file + sql + + + + http://localhost:8051/ + + + + http://localhost:8051/ + + + + http://localhost:8051/ + + + + + + diff --git a/test-src/test.xlog b/test-src/test.xlog new file mode 100644 index 0000000..dd12cea --- /dev/null +++ b/test-src/test.xlog @@ -0,0 +1,74 @@ + + + + + + + + + + + + System.out + + %7.7{priority} %1.13{time:HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + + + ${context-root}/testing.log + + %5.5{priority} %17.17{time:dd/MM HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + true + + 1m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test-src/testdefault.xml b/test-src/testdefault.xml new file mode 100644 index 0000000..120bf75 --- /dev/null +++ b/test-src/testdefault.xml @@ -0,0 +1,256 @@ + + + + + Abteilung + department + + channel-6 + + + elementary-springfield + + + springfield powerplant + + + test department + + + + Benutzergruppen + user-groups + + my-group + + + Ressourcen eintragen + register resources + Enregistrer des ressources + + + Einstellungen bearbeiten + modify preferences + Modifier la préférence + + + + + + + + Raum + room + + resource + {name} + + + Name + name + + + + Anzahl der Plätze + number of seats + + + + gehört zu + belongs to + + category[key='department'] + + + + + + + Dozent + lecturer + + person + {surname} {forename} + + + Titel + title + + + + Nachname + surname + + + + Vorname + forename + + + + + + + + Veranstaltung + event + + reservation + {name} + + + Name + name + + + + gehört zu + belongs to + + category[key='department'] + + + Beschreibung + description + + 5 + additional-view + + + + + + + + + + + + + + + + + + + + + + + + org.rapla.MockMailer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + erwin + 10 + category[key='elementary-springfield'] + + + + + + Room A66 + 30 + category[key='springfield-powerplant'] + + + + + + Mr. + Burns + Monty + + + + + + Simpson + Homer + + + + + + + + + + + + + + + + bowling + with all my friends + + + + + + + + + + + + + Reservation 2 + + + + + + + + + + + + power planting + new demands for energy + + + + + + + + + + + + + + diff --git a/updatejavadocs.sh b/updatejavadocs.sh new file mode 100644 index 0000000..914efa0 --- /dev/null +++ b/updatejavadocs.sh @@ -0,0 +1,7 @@ +#! /bin/sh +./build.sh javadocs +cd build +tar -czf javadocs.tar.gz javadocs/ +scp javadocs.tar.gz $rapladocs +ssh $sf +#rsync --size-only -r -u -v build/javadocs website/doc/javadocs diff --git a/webapp/WEB-INF/.cvsignore b/webapp/WEB-INF/.cvsignore new file mode 100644 index 0000000..98d8a5a --- /dev/null +++ b/webapp/WEB-INF/.cvsignore @@ -0,0 +1 @@ +logs diff --git a/webapp/WEB-INF/User.csv b/webapp/WEB-INF/User.csv new file mode 100644 index 0000000..5941580 --- /dev/null +++ b/webapp/WEB-INF/User.csv @@ -0,0 +1 @@ +RaplaUser;passw;Rapla Username;User@rapla.org;registrer diff --git a/webapp/WEB-INF/data.xml b/webapp/WEB-INF/data.xml new file mode 100644 index 0000000..851cfbd --- /dev/null +++ b/webapp/WEB-INF/data.xml @@ -0,0 +1,158 @@ + + + + + Benutzergruppen + user-groups + Groupes de utilisateurs + + Ressourcen eintragen + register resources + Enregistrer des ressources + + + Einstellungen bearbeiten + modify preferences + Modifier la préférence + + + Die Veranstaltungen anderer sehen + See events of other users + Voir les événements d'autres utilisateurs + + + + + + + + Standard Ressource + default resource + Ressource défaut + + resource + {name} + + + Name + name + nom + + + + + + + + Person + person + personne + + person + {surname} {forename} + + + Nachname + surname + nom de famille + + + + Vorname + forename + prénom + + + + Email + email + email + + + + + + + + Veranstaltung + event + évènement + + reservation + {name} + + + Veranstaltungsname + eventname + Nom de l'évènement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test + + + + + + + + + + + + + dsfdsfsfdsdf + + + + + + Test1 + + + + + + + + diff --git a/webapp/WEB-INF/data.xml.bak b/webapp/WEB-INF/data.xml.bak new file mode 100644 index 0000000..578d39c --- /dev/null +++ b/webapp/WEB-INF/data.xml.bak @@ -0,0 +1,158 @@ + + + + + Benutzergruppen + user-groups + Groupes de utilisateurs + + Ressourcen eintragen + register resources + Enregistrer des ressources + + + Einstellungen bearbeiten + modify preferences + Modifier la préférence + + + Die Veranstaltungen anderer sehen + See events of other users + Voir les événements d'autres utilisateurs + + + + + + + + Standard Ressource + default resource + Ressource défaut + + resource + {name} + + + Name + name + nom + + + + + + + + Person + person + personne + + person + {surname} {forename} + + + Nachname + surname + nom de famille + + + + Vorname + forename + prénom + + + + Email + email + email + + + + + + + + Veranstaltung + event + évènement + + reservation + {name} + + + Veranstaltungsname + eventname + Nom de l'évènement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test + + + + + + + + + + + + + dsfdsfsfdsdf + + + + + + Test1 + + + + + + + + diff --git a/webapp/WEB-INF/logs/rapla-client.log.000001 b/webapp/WEB-INF/logs/rapla-client.log.000001 new file mode 100644 index 0000000..c2c4aa9 --- /dev/null +++ b/webapp/WEB-INF/logs/rapla-client.log.000001 @@ -0,0 +1,720 @@ +INFO 20120628 20:20:20:518 [rapla]: ----------- Rapla startup mode = 1 +INFO 20120628 20:20:20:519 [rapla]: Default Locale= en_US +INFO 20120628 20:20:20:519 [rapla]: Configured Locale= en_US +INFO 20120628 20:20:20:543 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20120628 20:20:20:543 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20120628 20:20:20:543 [rapla]: Rapla.Version=1.4.3-beta +INFO 20120628 20:20:20:543 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20120628 20:20:20:543 [rapla]: Java.Version=1.7.0_04 +INFO 20120628 20:20:20:882 [rapla]: Data:file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/data.xml +INFO 20120628 20:20:20:947 [rapla.facade]: Welcome admin +INFO 20120628 20:20:20:967 [rapla]: Export2iCal plugin added +INFO 20120628 20:20:20:968 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20120628 20:21:52:377 [rapla]: Shutting down rapla-container +INFO 20120628 20:22:40:194 [rapla]: ----------- Rapla startup mode = 1 +INFO 20120628 20:22:40:195 [rapla]: Default Locale= en_US +INFO 20120628 20:22:40:195 [rapla]: Configured Locale= en_US +INFO 20120628 20:22:40:211 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20120628 20:22:40:211 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20120628 20:22:40:211 [rapla]: Rapla.Version=1.4.3-beta +INFO 20120628 20:22:40:211 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20120628 20:22:40:211 [rapla]: Java.Version=1.7.0_04 +INFO 20120628 20:22:40:431 [rapla]: Data:file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/data.xml +INFO 20120628 20:22:40:478 [rapla.facade]: Welcome admin +INFO 20120628 20:22:40:492 [rapla]: Export2iCal plugin added +INFO 20120628 20:22:40:492 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20120628 20:22:53:301 [rapla]: Shutting down rapla-container +INFO 20120628 20:24:54:726 [rapla]: ----------- Rapla startup mode = 1 +INFO 20120628 20:24:54:727 [rapla]: Default Locale= en_US +INFO 20120628 20:24:54:727 [rapla]: Configured Locale= en_US +INFO 20120628 20:24:54:742 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20120628 20:24:54:742 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20120628 20:24:54:742 [rapla]: Rapla.Version=1.4.3-beta +INFO 20120628 20:24:54:743 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20120628 20:24:54:743 [rapla]: Java.Version=1.7.0_04 +INFO 20120628 20:24:54:977 [rapla]: Data:file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/data.xml +INFO 20120628 20:24:55:14 [rapla.facade]: Welcome admin +INFO 20120628 20:24:55:25 [rapla]: Export2iCal plugin added +INFO 20120628 20:24:55:25 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20120628 20:26:14:467 [rapla]: Shutting down rapla-container +INFO 20120628 20:31:16:518 [rapla]: ----------- Rapla startup mode = 1 +INFO 20120628 20:31:16:521 [rapla]: Default Locale= en_US +INFO 20120628 20:31:16:521 [rapla]: Configured Locale= en_US +INFO 20120628 20:31:16:538 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20120628 20:31:16:539 [rapla]: Config=file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20120628 20:31:16:539 [rapla]: Rapla.Version=1.4.3-beta +INFO 20120628 20:31:16:539 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20120628 20:31:16:539 [rapla]: Java.Version=1.7.0_04 +INFO 20120628 20:31:16:805 [rapla]: Data:file:/E:/2012Fall/Prjs/Rapla2/Rapla/webapp/WEB-INF/data.xml +INFO 20120628 20:31:16:845 [rapla.facade]: Welcome admin +INFO 20120628 20:31:16:856 [rapla]: Export2iCal plugin added +INFO 20120628 20:31:16:856 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20120628 20:31:27:239 [rapla]: Shutting down rapla-container +INFO 20120821 16:56:18:12 [rapla]: ----------- Rapla startup mode = 1 +INFO 20120821 16:56:18:12 [rapla]: Default Locale= en_US +INFO 20120821 16:56:18:13 [rapla]: Configured Locale= en_US +INFO 20120821 16:56:18:40 [rapla]: Config=file:/C:/Users/tms08012/git/Project3again/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20120821 16:56:18:40 [rapla]: Config=file:/C:/Users/tms08012/git/Project3again/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20120821 16:56:18:41 [rapla]: Rapla.Version=1.4.3-beta +INFO 20120821 16:56:18:41 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20120821 16:56:18:41 [rapla]: Java.Version=1.7.0_04 +INFO 20120821 16:56:18:381 [rapla]: Data:file:/C:/Users/tms08012/git/Project3again/Rapla/webapp/WEB-INF/data.xml +INFO 20120821 16:56:18:421 [rapla.facade]: Welcome admin +INFO 20120821 16:56:18:434 [rapla]: Export2iCal plugin added +INFO 20120821 16:56:18:434 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20120821 16:56:30:288 [rapla]: Shutting down rapla-container +INFO 20121107 15:35:26:296 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121107 15:35:26:309 [rapla]: Default Locale= en_US +INFO 20121107 15:35:26:309 [rapla]: Configured Locale= en_US +INFO 20121107 15:35:26:546 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121107 15:35:26:546 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121107 15:35:26:547 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121107 15:35:26:547 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121107 15:35:26:547 [rapla]: Java.Version=1.6.0_18 +INFO 20121107 15:35:29:68 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121107 15:35:29:392 [rapla.facade]: Welcome admin +INFO 20121107 15:35:29:450 [rapla]: Export2iCal plugin added +INFO 20121107 15:35:29:450 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121107 15:35:45:995 [rapla]: Shutting down rapla-container +INFO 20121107 15:51:34:427 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121107 15:51:34:428 [rapla]: Default Locale= en_US +INFO 20121107 15:51:34:428 [rapla]: Configured Locale= en_US +INFO 20121107 15:51:34:476 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121107 15:51:34:476 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121107 15:51:34:476 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121107 15:51:34:476 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121107 15:51:34:477 [rapla]: Java.Version=1.6.0_18 +INFO 20121107 15:51:35:200 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121107 15:51:35:301 [rapla.facade]: Welcome admin +INFO 20121107 15:51:35:325 [rapla]: Export2iCal plugin added +INFO 20121107 15:51:35:325 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121107 18:05:48:828 [rapla]: Shutting down rapla-container +INFO 20121109 01:19:51:440 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121109 01:19:51:441 [rapla]: Default Locale= en_US +INFO 20121109 01:19:51:441 [rapla]: Configured Locale= en_US +INFO 20121109 01:19:51:489 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121109 01:19:51:490 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121109 01:19:51:490 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121109 01:19:51:490 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121109 01:19:51:490 [rapla]: Java.Version=1.6.0_18 +INFO 20121109 01:19:52:505 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121109 01:19:52:609 [rapla.facade]: Welcome admin +INFO 20121109 01:19:52:643 [rapla]: Export2iCal plugin added +INFO 20121109 01:19:52:643 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121115 22:46:48:920 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121115 22:46:48:944 [rapla]: Default Locale= en_US +INFO 20121115 22:46:48:944 [rapla]: Configured Locale= en_US +INFO 20121115 22:46:48:981 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121115 22:46:48:982 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121115 22:46:48:982 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121115 22:46:48:982 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121115 22:46:48:982 [rapla]: Java.Version=1.6.0_18 +INFO 20121115 22:46:49:765 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121115 22:46:49:876 [rapla.facade]: Welcome admin +INFO 20121115 22:46:49:904 [rapla]: Export2iCal plugin added +INFO 20121115 22:46:49:904 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121116 02:09:54:385 [rapla]: Shutting down rapla-container +INFO 20121116 02:10:02:749 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121116 02:10:02:750 [rapla]: Default Locale= en_US +INFO 20121116 02:10:02:750 [rapla]: Configured Locale= en_US +INFO 20121116 02:10:02:789 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121116 02:10:02:789 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121116 02:10:02:790 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121116 02:10:02:790 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121116 02:10:02:790 [rapla]: Java.Version=1.6.0_18 +INFO 20121116 02:10:03:413 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121116 02:10:03:579 [rapla.facade]: Welcome admin +INFO 20121116 02:10:03:617 [rapla]: Export2iCal plugin added +INFO 20121116 02:10:03:617 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121116 02:10:30:384 [rapla]: Shutting down rapla-container +INFO 20121116 04:22:46:654 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121116 04:22:46:668 [rapla]: Default Locale= en_US +INFO 20121116 04:22:46:668 [rapla]: Configured Locale= en_US +INFO 20121116 04:22:46:982 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121116 04:22:46:982 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121116 04:22:46:995 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121116 04:22:46:995 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121116 04:22:46:995 [rapla]: Java.Version=1.6.0_18 +INFO 20121116 04:22:51:410 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121116 04:22:52:483 [rapla.facade]: Welcome admin +INFO 20121116 04:22:52:791 [rapla]: Export2iCal plugin added +INFO 20121116 04:22:52:791 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121116 04:42:59:627 [rapla]: Shutting down rapla-container +INFO 20121116 04:48:16:726 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121116 04:48:16:726 [rapla]: Default Locale= en_US +INFO 20121116 04:48:16:726 [rapla]: Configured Locale= en_US +INFO 20121116 04:48:16:751 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121116 04:48:16:751 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121116 04:48:16:751 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121116 04:48:16:752 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121116 04:48:16:752 [rapla]: Java.Version=1.6.0_18 +INFO 20121116 04:48:17:227 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121116 04:48:17:527 [rapla.facade]: Welcome admin +INFO 20121116 04:48:17:785 [rapla]: Export2iCal plugin added +INFO 20121116 04:48:17:785 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121116 04:54:37:82 [rapla]: Shutting down rapla-container +INFO 20121128 14:02:30:467 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:02:30:487 [rapla]: Default Locale= en_US +INFO 20121128 14:02:30:487 [rapla]: Configured Locale= en_US +INFO 20121128 14:02:30:787 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:02:30:787 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:02:30:787 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:02:30:787 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:02:30:787 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:02:33:237 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:02:34:57 [rapla.facade]: Welcome admin +INFO 20121128 14:02:34:307 [rapla]: Export2iCal plugin added +INFO 20121128 14:02:34:307 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:04:22:414 [rapla]: Shutting down rapla-container +INFO 20121128 14:04:40:967 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:04:40:967 [rapla]: Default Locale= en_US +INFO 20121128 14:04:40:967 [rapla]: Configured Locale= en_US +INFO 20121128 14:04:41:17 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:04:41:17 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:04:41:17 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:04:41:17 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:04:41:17 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:04:41:349 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:04:41:409 [rapla.facade]: Welcome admin +INFO 20121128 14:04:41:429 [rapla]: Export2iCal plugin added +INFO 20121128 14:04:41:429 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:19:28:201 [rapla]: Shutting down rapla-container +INFO 20121128 14:35:53:922 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:35:53:922 [rapla]: Default Locale= en_US +INFO 20121128 14:35:53:922 [rapla]: Configured Locale= en_US +INFO 20121128 14:35:53:953 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:35:53:953 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:35:53:953 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:35:53:953 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:35:53:953 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:35:54:265 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:35:54:328 [rapla.facade]: Welcome admin +INFO 20121128 14:35:54:343 [rapla]: Export2iCal plugin added +INFO 20121128 14:35:54:343 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:41:22:884 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:41:22:884 [rapla]: Default Locale= en_US +INFO 20121128 14:41:22:884 [rapla]: Configured Locale= en_US +INFO 20121128 14:41:22:915 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:41:22:915 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:41:22:915 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:41:22:915 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:41:22:915 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:41:23:241 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:41:23:312 [rapla.facade]: Welcome admin +INFO 20121128 14:41:23:339 [rapla]: Export2iCal plugin added +INFO 20121128 14:41:23:340 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:42:05:569 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:42:05:569 [rapla]: Default Locale= en_US +INFO 20121128 14:42:05:570 [rapla]: Configured Locale= en_US +INFO 20121128 14:42:05:595 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:42:05:595 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:42:05:595 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:42:05:595 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:42:05:595 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:42:05:954 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:42:06:32 [rapla.facade]: Welcome admin +INFO 20121128 14:42:06:47 [rapla]: Export2iCal plugin added +INFO 20121128 14:42:06:47 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:44:52:514 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:44:52:514 [rapla]: Default Locale= en_US +INFO 20121128 14:44:52:514 [rapla]: Configured Locale= en_US +INFO 20121128 14:44:52:537 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:44:52:537 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:44:52:537 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:44:52:537 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:44:52:537 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:44:52:880 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:44:52:947 [rapla.facade]: Welcome admin +INFO 20121128 14:44:52:971 [rapla]: Export2iCal plugin added +INFO 20121128 14:44:52:971 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:45:04:479 [rapla]: Shutting down rapla-container +INFO 20121128 14:45:12:223 [rapla]: Shutting down rapla-container +INFO 20121128 14:45:15:304 [rapla]: Shutting down rapla-container +INFO 20121128 14:45:26:86 [rapla]: Shutting down rapla-container +INFO 20121128 14:46:04:725 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:46:04:725 [rapla]: Default Locale= en_US +INFO 20121128 14:46:04:725 [rapla]: Configured Locale= en_US +INFO 20121128 14:46:04:740 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:46:04:740 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:46:04:740 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:46:04:740 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:46:04:740 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:46:05:84 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:46:05:162 [rapla.facade]: Welcome admin +INFO 20121128 14:46:05:177 [rapla]: Export2iCal plugin added +INFO 20121128 14:46:05:177 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:46:13:70 [rapla]: Shutting down rapla-container +INFO 20121128 14:49:35:313 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:49:35:314 [rapla]: Default Locale= en_US +INFO 20121128 14:49:35:314 [rapla]: Configured Locale= en_US +INFO 20121128 14:49:35:342 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:49:35:342 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:49:35:342 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:49:35:342 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:49:35:343 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:49:35:690 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:49:35:752 [rapla.facade]: Welcome admin +INFO 20121128 14:49:35:768 [rapla]: Export2iCal plugin added +INFO 20121128 14:49:35:768 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:49:42:34 [rapla]: Shutting down rapla-container +INFO 20121128 14:50:37:11 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:50:37:12 [rapla]: Default Locale= en_US +INFO 20121128 14:50:37:12 [rapla]: Configured Locale= en_US +INFO 20121128 14:50:37:33 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:50:37:33 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:50:37:34 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:50:37:34 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:50:37:34 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:50:37:423 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:50:37:481 [rapla.facade]: Welcome admin +INFO 20121128 14:50:37:502 [rapla]: Export2iCal plugin added +INFO 20121128 14:50:37:502 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:50:48:105 [rapla]: Shutting down rapla-container +INFO 20121128 14:51:21:464 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 14:51:21:464 [rapla]: Default Locale= en_US +INFO 20121128 14:51:21:464 [rapla]: Configured Locale= en_US +INFO 20121128 14:51:21:495 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 14:51:21:495 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 14:51:21:495 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 14:51:21:495 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 14:51:21:495 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 14:51:21:791 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 14:51:21:854 [rapla.facade]: Welcome admin +INFO 20121128 14:51:21:869 [rapla]: Export2iCal plugin added +INFO 20121128 14:51:21:869 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 14:51:26:120 [rapla]: Shutting down rapla-container +INFO 20121128 17:26:49:789 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 17:26:49:805 [rapla]: Default Locale= en_US +INFO 20121128 17:26:49:805 [rapla]: Configured Locale= en_US +INFO 20121128 17:26:50:133 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 17:26:50:133 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 17:26:50:133 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 17:26:50:133 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 17:26:50:133 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 17:26:51:880 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 17:26:52:566 [rapla.facade]: Welcome admin +INFO 20121128 17:26:52:847 [rapla]: Export2iCal plugin added +INFO 20121128 17:26:52:847 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 17:27:53:136 [rapla]: Shutting down rapla-container +INFO 20121128 17:37:16:440 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 17:37:16:441 [rapla]: Default Locale= en_US +INFO 20121128 17:37:16:441 [rapla]: Configured Locale= en_US +INFO 20121128 17:37:16:463 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 17:37:16:464 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 17:37:16:464 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 17:37:16:464 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 17:37:16:464 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 17:37:16:767 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 17:37:16:827 [rapla.facade]: Welcome admin +INFO 20121128 17:37:16:846 [rapla]: Export2iCal plugin added +INFO 20121128 17:37:16:846 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 18:34:40:344 [rapla]: Shutting down rapla-container +INFO 20121128 18:34:44:611 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 18:34:44:612 [rapla]: Default Locale= en_US +INFO 20121128 18:34:44:613 [rapla]: Configured Locale= en_US +INFO 20121128 18:34:44:642 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 18:34:44:642 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 18:34:44:642 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 18:34:44:643 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 18:34:44:643 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 18:34:44:943 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 18:34:45:0 [rapla.facade]: Welcome admin +INFO 20121128 18:34:45:17 [rapla]: Export2iCal plugin added +INFO 20121128 18:34:45:18 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 18:35:24:433 [rapla]: Shutting down rapla-container +INFO 20121128 18:35:27:880 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 18:35:27:896 [rapla]: Default Locale= en_US +INFO 20121128 18:35:27:896 [rapla]: Configured Locale= en_US +INFO 20121128 18:35:27:912 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 18:35:27:912 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 18:35:27:912 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 18:35:27:912 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 18:35:27:912 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 18:35:28:234 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 18:35:28:296 [rapla.facade]: Welcome admin +INFO 20121128 18:35:28:317 [rapla]: Export2iCal plugin added +INFO 20121128 18:35:28:317 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 18:35:34:248 [rapla]: Shutting down rapla-container +INFO 20121128 18:43:00:634 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 18:43:00:635 [rapla]: Default Locale= en_US +INFO 20121128 18:43:00:635 [rapla]: Configured Locale= en_US +INFO 20121128 18:43:00:659 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 18:43:00:659 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 18:43:00:659 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 18:43:00:659 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 18:43:00:659 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 18:43:00:978 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 18:43:01:40 [rapla.facade]: Welcome admin +INFO 20121128 18:43:01:72 [rapla]: Export2iCal plugin added +INFO 20121128 18:43:01:72 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 18:43:45:479 [rapla]: Shutting down rapla-container +INFO 20121128 18:43:48:569 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 18:43:48:570 [rapla]: Default Locale= en_US +INFO 20121128 18:43:48:570 [rapla]: Configured Locale= en_US +INFO 20121128 18:43:48:590 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 18:43:48:591 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 18:43:48:591 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 18:43:48:591 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 18:43:48:591 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 18:43:48:879 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 18:43:48:936 [rapla.facade]: Welcome admin +INFO 20121128 18:43:48:956 [rapla]: Export2iCal plugin added +INFO 20121128 18:43:48:957 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 18:49:51:881 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 18:49:51:882 [rapla]: Default Locale= en_US +INFO 20121128 18:49:51:882 [rapla]: Configured Locale= en_US +INFO 20121128 18:49:51:902 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 18:49:51:902 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 18:49:51:903 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 18:49:51:903 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 18:49:51:903 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 18:49:52:252 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 18:49:52:314 [rapla.facade]: Welcome admin +INFO 20121128 18:49:52:342 [rapla]: Export2iCal plugin added +INFO 20121128 18:49:52:342 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 19:07:16:168 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 19:07:16:168 [rapla]: Default Locale= en_US +INFO 20121128 19:07:16:168 [rapla]: Configured Locale= en_US +INFO 20121128 19:07:16:402 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 19:07:16:402 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 19:07:16:402 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 19:07:16:402 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 19:07:16:402 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 19:07:17:275 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 19:07:17:852 [rapla.facade]: Welcome admin +INFO 20121128 19:07:18:164 [rapla]: Export2iCal plugin added +INFO 20121128 19:07:18:164 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 19:07:19:537 [rapla]: Shutting down rapla-container +INFO 20121128 19:13:18:558 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 19:13:18:559 [rapla]: Default Locale= en_US +INFO 20121128 19:13:18:559 [rapla]: Configured Locale= en_US +INFO 20121128 19:13:18:587 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 19:13:18:588 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 19:13:18:588 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 19:13:18:588 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 19:13:18:588 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 19:13:18:885 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 19:13:18:942 [rapla.facade]: Welcome admin +INFO 20121128 19:13:18:960 [rapla]: Export2iCal plugin added +INFO 20121128 19:13:18:960 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 19:14:21:136 [rapla]: Shutting down rapla-container +INFO 20121128 19:14:24:421 [rapla]: Shutting down rapla-container +INFO 20121128 19:14:45:719 [rapla]: Shutting down rapla-container +INFO 20121128 19:17:57:107 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 19:17:57:107 [rapla]: Default Locale= en_US +INFO 20121128 19:17:57:107 [rapla]: Configured Locale= en_US +INFO 20121128 19:17:57:136 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 19:17:57:137 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 19:17:57:137 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 19:17:57:137 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 19:17:57:137 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 19:17:57:463 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 19:17:57:515 [rapla.facade]: Welcome admin +INFO 20121128 19:17:57:533 [rapla]: Export2iCal plugin added +INFO 20121128 19:17:57:533 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 19:17:58:8 [rapla]: Shutting down rapla-container +INFO 20121128 19:18:05:466 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 19:18:05:466 [rapla]: Default Locale= en_US +INFO 20121128 19:18:05:466 [rapla]: Configured Locale= en_US +INFO 20121128 19:18:05:487 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/rapla.xconf +INFO 20121128 19:18:05:487 [rapla]: Config=file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 19:18:05:487 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 19:18:05:488 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 19:18:05:488 [rapla]: Java.Version=1.6.0_18 +INFO 20121128 19:18:05:815 [rapla]: Data:file:/C:/Users/Linda/Documents/Uconn/Junior2012-2013/CSE2102/HoangHoangRapla/Rapla/webapp/WEB-INF/data.xml +INFO 20121128 19:18:05:879 [rapla.facade]: Welcome admin +INFO 20121128 19:18:05:904 [rapla]: Export2iCal plugin added +INFO 20121128 19:18:05:904 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 19:18:06:379 [rapla]: Shutting down rapla-container +INFO 20121128 20:12:46:297 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:12:46:297 [rapla]: Default Locale= en_US +INFO 20121128 20:12:46:297 [rapla]: Configured Locale= en_US +INFO 20121128 20:12:46:329 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:12:46:329 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:12:46:329 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:12:46:329 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:12:46:329 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:12:46:531 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:12:46:578 [rapla.facade]: Welcome admin +INFO 20121128 20:12:46:609 [rapla]: Export2iCal plugin added +INFO 20121128 20:12:46:609 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +ERROR 20121128 20:12:47:202 [rapla]: Cause +org.rapla.framework.RaplaContextException + at org.rapla.framework.internal.ContainerImpl.instanciate(ContainerImpl.java:412) + at org.rapla.framework.internal.ContainerImpl$ComponentHandler.get(ContainerImpl.java:436) + at org.rapla.framework.internal.ContainerImpl$2.lookup(ContainerImpl.java:111) + at org.rapla.facade.RaplaComponent$ClientServiceManager.lookup(RaplaComponent.java:383) + at org.rapla.facade.RaplaComponent.getService(RaplaComponent.java:262) + at org.rapla.gui.internal.RaplaSelectionPane.getMenuFactory(RaplaSelectionPane.java:311) + at org.rapla.gui.internal.RaplaSelectionPane.updateMenu(RaplaSelectionPane.java:303) + at org.rapla.gui.internal.RaplaSelectionPane.(RaplaSelectionPane.java:97) + at org.rapla.gui.internal.splitpanes.RaplaFiltrableSelectionPane.(RaplaFiltrableSelectionPane.java:45) + at org.rapla.gui.internal.splitpanes.RaplaResourceSelectionPane.(RaplaResourceSelectionPane.java:43) + at org.rapla.gui.internal.CalendarEditor.(CalendarEditor.java:67) + at org.rapla.gui.internal.MainFrame.(MainFrame.java:62) + at org.rapla.client.internal.RaplaClientServiceImpl.beginRaplaSession(RaplaClientServiceImpl.java:299) + at org.rapla.client.internal.RaplaClientServiceImpl.start(RaplaClientServiceImpl.java:239) + at org.apache.avalon.framework.container.ContainerUtil.start(ContainerUtil.java:260) + at org.rapla.framework.internal.ContainerImpl.instanciate(ContainerImpl.java:409) + at org.rapla.framework.internal.ContainerImpl$ComponentHandler.get(ContainerImpl.java:436) + at org.rapla.framework.internal.ContainerImpl$2.lookup(ContainerImpl.java:111) + at org.rapla.Main.startRapla(Main.java:87) + at org.rapla.Main.main(Main.java:195) +Caused by: java.lang.reflect.InvocationTargetException + at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) + at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) + at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) + at java.lang.reflect.Constructor.newInstance(Unknown Source) + at org.rapla.framework.internal.ContainerImpl.instanciate(ContainerImpl.java:405) + ... 19 more +Caused by: java.lang.Error: Unresolved compilation problems: + The import org.rapla.entities.domain.Holiday cannot be resolved + Holiday cannot be resolved to a variable + + at org.rapla.gui.internal.MenuFactoryImpl.(MenuFactoryImpl.java:31) + ... 24 more +INFO 20121128 20:12:47:233 [rapla]: Shutting down rapla-container +INFO 20121128 20:20:01:139 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:20:01:139 [rapla]: Default Locale= en_US +INFO 20121128 20:20:01:140 [rapla]: Configured Locale= en_US +INFO 20121128 20:20:01:163 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:20:01:163 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:20:01:163 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:20:01:163 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:20:01:164 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:20:01:472 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:20:01:523 [rapla.facade]: Welcome admin +INFO 20121128 20:20:01:543 [rapla]: Export2iCal plugin added +INFO 20121128 20:20:01:543 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:20:02:163 [rapla]: Shutting down rapla-container +INFO 20121128 20:21:39:278 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:21:39:278 [rapla]: Default Locale= en_US +INFO 20121128 20:21:39:278 [rapla]: Configured Locale= en_US +INFO 20121128 20:21:39:294 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:21:39:294 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:21:39:294 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:21:39:294 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:21:39:294 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:21:39:450 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:21:39:512 [rapla.facade]: Welcome admin +INFO 20121128 20:21:39:512 [rapla]: Export2iCal plugin added +INFO 20121128 20:21:39:512 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:21:39:871 [rapla]: Shutting down rapla-container +INFO 20121128 20:22:28:31 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:22:28:31 [rapla]: Default Locale= en_US +INFO 20121128 20:22:28:31 [rapla]: Configured Locale= en_US +INFO 20121128 20:22:28:46 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:22:28:46 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:22:28:46 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:22:28:46 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:22:28:46 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:22:28:218 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:22:28:265 [rapla.facade]: Welcome admin +INFO 20121128 20:22:28:280 [rapla]: Export2iCal plugin added +INFO 20121128 20:22:28:280 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:22:28:592 [rapla]: Shutting down rapla-container +INFO 20121128 20:25:44:639 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:25:44:654 [rapla]: Default Locale= en_US +INFO 20121128 20:25:44:654 [rapla]: Configured Locale= en_US +INFO 20121128 20:25:44:670 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:25:44:670 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:25:44:670 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:25:44:670 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:25:44:670 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:25:44:826 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:25:44:873 [rapla.facade]: Welcome admin +INFO 20121128 20:25:44:888 [rapla]: Export2iCal plugin added +INFO 20121128 20:25:44:888 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:27:46:117 [rapla]: Shutting down rapla-container +INFO 20121128 20:44:19:195 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:44:19:195 [rapla]: Default Locale= en_US +INFO 20121128 20:44:19:195 [rapla]: Configured Locale= en_US +INFO 20121128 20:44:19:226 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:44:19:226 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:44:19:226 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:44:19:226 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:44:19:226 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:44:19:273 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:44:19:273 [rapla]: Default Locale= en_US +INFO 20121128 20:44:19:273 [rapla]: Configured Locale= en_US +INFO 20121128 20:44:19:320 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:44:19:320 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:44:19:320 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:44:19:320 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:44:19:320 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:44:19:492 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:44:19:570 [rapla.facade]: Welcome admin +INFO 20121128 20:44:19:570 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:44:19:585 [rapla]: Export2iCal plugin added +INFO 20121128 20:44:19:585 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:44:19:648 [rapla.facade]: Welcome admin +INFO 20121128 20:44:19:679 [rapla]: Export2iCal plugin added +INFO 20121128 20:44:19:679 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:44:30:833 [rapla]: Shutting down rapla-container +INFO 20121128 20:44:38:930 [rapla]: Shutting down rapla-container +INFO 20121128 20:45:57:509 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:45:57:509 [rapla]: Default Locale= en_US +INFO 20121128 20:45:57:509 [rapla]: Configured Locale= en_US +INFO 20121128 20:45:57:524 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:45:57:524 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:45:57:524 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:45:57:524 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:45:57:524 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:45:57:680 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:45:57:727 [rapla.facade]: Welcome admin +INFO 20121128 20:45:57:743 [rapla]: Export2iCal plugin added +INFO 20121128 20:45:57:743 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:46:11:283 [rapla]: Shutting down rapla-container +INFO 20121128 20:47:29:955 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 20:47:29:955 [rapla]: Default Locale= en_US +INFO 20121128 20:47:29:955 [rapla]: Configured Locale= en_US +INFO 20121128 20:47:29:971 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 20:47:29:971 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 20:47:29:971 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 20:47:29:971 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 20:47:29:971 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 20:47:30:142 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 20:47:30:174 [rapla.facade]: Welcome admin +INFO 20121128 20:47:30:189 [rapla]: Export2iCal plugin added +INFO 20121128 20:47:30:189 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 20:47:46:148 [rapla]: Shutting down rapla-container +INFO 20121128 21:11:17:237 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 21:11:17:237 [rapla]: Default Locale= en_US +INFO 20121128 21:11:17:237 [rapla]: Configured Locale= en_US +INFO 20121128 21:11:17:253 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 21:11:17:253 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 21:11:17:253 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 21:11:17:253 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 21:11:17:253 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 21:11:17:425 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 21:11:17:487 [rapla.facade]: Welcome admin +INFO 20121128 21:11:17:487 [rapla]: Export2iCal plugin added +INFO 20121128 21:11:17:487 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 21:13:02:750 [rapla]: Shutting down rapla-container +INFO 20121128 22:07:44:689 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:07:44:690 [rapla]: Default Locale= en_US +INFO 20121128 22:07:44:690 [rapla]: Configured Locale= en_US +INFO 20121128 22:07:44:707 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:07:44:707 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:07:44:707 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:07:44:707 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:07:44:707 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:07:44:885 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:07:44:932 [rapla.facade]: Welcome admin +INFO 20121128 22:07:44:945 [rapla]: Export2iCal plugin added +INFO 20121128 22:07:44:945 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:07:55:987 [rapla]: Shutting down rapla-container +INFO 20121128 22:08:03:125 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:08:03:126 [rapla]: Default Locale= en_US +INFO 20121128 22:08:03:126 [rapla]: Configured Locale= en_US +INFO 20121128 22:08:03:148 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:08:03:148 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:08:03:149 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:08:03:149 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:08:03:149 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:08:03:332 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:08:03:383 [rapla.facade]: Welcome admin +INFO 20121128 22:08:03:449 [rapla]: Export2iCal plugin added +INFO 20121128 22:08:03:449 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:09:48:258 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:09:48:259 [rapla]: Default Locale= en_US +INFO 20121128 22:09:48:259 [rapla]: Configured Locale= en_US +INFO 20121128 22:09:48:276 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:09:48:277 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:09:48:277 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:09:48:277 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:09:48:277 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:09:48:478 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:09:48:526 [rapla.facade]: Welcome admin +INFO 20121128 22:09:48:541 [rapla]: Export2iCal plugin added +INFO 20121128 22:09:48:542 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:09:56:5 [rapla]: Shutting down rapla-container +INFO 20121128 22:09:58:432 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:09:58:432 [rapla]: Default Locale= en_US +INFO 20121128 22:09:58:432 [rapla]: Configured Locale= en_US +INFO 20121128 22:09:58:451 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:09:58:452 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:09:58:452 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:09:58:452 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:09:58:452 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:09:58:653 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:09:58:711 [rapla.facade]: Welcome admin +INFO 20121128 22:09:58:743 [rapla]: Export2iCal plugin added +INFO 20121128 22:09:58:744 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:12:38:744 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:12:38:745 [rapla]: Default Locale= en_US +INFO 20121128 22:12:38:745 [rapla]: Configured Locale= en_US +INFO 20121128 22:12:38:765 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:12:38:765 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:12:38:765 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:12:38:765 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:12:38:765 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:12:38:963 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:12:39:12 [rapla.facade]: Welcome admin +INFO 20121128 22:12:39:49 [rapla]: Export2iCal plugin added +INFO 20121128 22:12:39:49 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:24:32:541 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:24:32:542 [rapla]: Default Locale= en_US +INFO 20121128 22:24:32:542 [rapla]: Configured Locale= en_US +INFO 20121128 22:24:32:559 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:24:32:559 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:24:32:559 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:24:32:559 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:24:32:559 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:24:32:730 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:24:32:791 [rapla.facade]: Welcome admin +INFO 20121128 22:24:32:809 [rapla]: Export2iCal plugin added +INFO 20121128 22:24:32:809 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:24:32:849 [rapla]: Shutting down rapla-container +INFO 20121128 22:25:31:738 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:25:31:739 [rapla]: Default Locale= en_US +INFO 20121128 22:25:31:739 [rapla]: Configured Locale= en_US +INFO 20121128 22:25:31:756 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:25:31:756 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:25:31:757 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:25:31:757 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:25:31:757 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:25:31:940 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:25:31:988 [rapla.facade]: Welcome admin +INFO 20121128 22:25:32:6 [rapla]: Export2iCal plugin added +INFO 20121128 22:25:32:6 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:26:59:470 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:26:59:471 [rapla]: Default Locale= en_US +INFO 20121128 22:26:59:471 [rapla]: Configured Locale= en_US +INFO 20121128 22:26:59:488 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:26:59:488 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:26:59:489 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:26:59:489 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:26:59:489 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:26:59:640 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:26:59:691 [rapla.facade]: Welcome admin +INFO 20121128 22:26:59:704 [rapla]: Export2iCal plugin added +INFO 20121128 22:26:59:704 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:33:27:427 [rapla]: Shutting down rapla-container +INFO 20121128 22:33:29:265 [rapla]: Shutting down rapla-container +INFO 20121128 22:33:38:466 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:33:38:467 [rapla]: Default Locale= en_US +INFO 20121128 22:33:38:467 [rapla]: Configured Locale= en_US +INFO 20121128 22:33:38:484 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:33:38:484 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:33:38:484 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:33:38:484 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:33:38:484 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:33:38:655 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:33:38:698 [rapla.facade]: Welcome admin +INFO 20121128 22:33:38:712 [rapla]: Export2iCal plugin added +INFO 20121128 22:33:38:712 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:33:45:468 [rapla]: Shutting down rapla-container +INFO 20121128 22:33:48:15 [rapla]: ----------- Rapla startup mode = 1 +INFO 20121128 22:33:48:16 [rapla]: Default Locale= en_US +INFO 20121128 22:33:48:16 [rapla]: Configured Locale= en_US +INFO 20121128 22:33:48:32 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/rapla.xconf +INFO 20121128 22:33:48:32 [rapla]: Config=file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/raplaclient.xlog +INFO 20121128 22:33:48:33 [rapla]: Rapla.Version=1.4.3-beta +INFO 20121128 22:33:48:33 [rapla]: Rapla.Build=2011-10-05 13:41 +INFO 20121128 22:33:48:33 [rapla]: Java.Version=1.6.0_25 +INFO 20121128 22:33:48:181 [rapla]: Data:file:/C:/Users/Tiff/workspace_CSE2102/HoangHoangRapla3/webapp/WEB-INF/data.xml +INFO 20121128 22:33:48:224 [rapla.facade]: Welcome admin +INFO 20121128 22:33:48:239 [rapla]: Export2iCal plugin added +INFO 20121128 22:33:48:239 [rapla]: Initialize org.rapla.plugin.export2ical.Export2iCalPlugin +INFO 20121128 22:34:15:85 [rapla]: Shutting down rapla-container diff --git a/webapp/WEB-INF/rapla-access.sql b/webapp/WEB-INF/rapla-access.sql new file mode 100644 index 0000000..904a93a --- /dev/null +++ b/webapp/WEB-INF/rapla-access.sql @@ -0,0 +1,16 @@ +-- drop TABLE EVENT_ATTRIBUTE_VALUE; +CREATE TABLE ALLOCATION ( APPOINTMENT_ID INTEGER NOT NULL, RESOURCE_ID INTEGER NOT NULL, OPTIONAL INTEGER ); +CREATE TABLE APPOINTMENT ( ID INTEGER NOT NULL, EVENT_ID INTEGER NOT NULL , APPOINTMENT_START DATETIME NOT NULL , APPOINTMENT_END DATETIME NOT NULL , REPETITION_TYPE VARCHAR(15), REPETITION_NUMBER INTEGER ,REPETITION_END DATETIME , REPETITION_INTERVAL INTEGER , PRIMARY KEY (ID)); +CREATE TABLE APPOINTMENT_EXCEPTION ( APPOINTMENT_ID INTEGER NOT NULL , EXCEPTION_DATE DATETIME NOT NULL ); +CREATE TABLE CATEGORY ( ID INTEGER NOT NULL , PARENT_ID INTEGER , CATEGORY_KEY VARCHAR(50) NOT NULL , LABEL VARCHAR(250) , DEFINITION LONGTEXT, PARENT_ORDER INTEGER,PRIMARY KEY (ID)); +CREATE TABLE DYNAMIC_TYPE ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(20) NOT NULL , DEFINITION LONGTEXT NOT NULL, PRIMARY KEY (ID)); +CREATE TABLE EVENT ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(20) NOT NULL , OWNER_ID INTEGER NOT NULL , CREATION_TIME DATETIME, LAST_CHANGED DATETIME ,LAST_CHANGED_BY INTEGER, PRIMARY KEY (ID)); +CREATE TABLE EVENT_ATTRIBUTE_VALUE ( EVENT_ID INTEGER NOT NULL , ATTRIBUTE_KEY VARCHAR(20) NOT NULL , ATTRIBUTE_VALUE LONGTEXT); +CREATE TABLE PERIOD ( ID INTEGER NOT NULL , NAME VARCHAR(255) NOT NULL , PERIOD_START DATETIME NOT NULL , PERIOD_END DATETIME NOT NULL , PRIMARY KEY (ID)); +CREATE TABLE PERMISSION ( RESOURCE_ID INTEGER NOT NULL , USER_ID INTEGER , GROUP_ID INTEGER , ACCESS_LEVEL INTEGER NOT NULL , MIN_ADVANCE INTEGER , MAX_ADVANCE INTEGER , START_DATE DATETIME , END_DATE DATETIME ); +CREATE TABLE PREFERENCE ( USER_ID INTEGER, ROLE VARCHAR(200) NOT NULL , STRING_VALUE LONGTEXT, XML_VALUE LONGTEXT); +CREATE TABLE RAPLA_USER ( ID INTEGER NOT NULL , USERNAME VARCHAR(30) NOT NULL , PASSWORD VARCHAR(130) , NAME VARCHAR(200) NOT NULL , EMAIL VARCHAR(150) NOT NULL , ISADMIN INTEGER NOT NULL , PRIMARY KEY (ID)); +CREATE TABLE RAPLA_USER_GROUP ( USER_ID INTEGER NOT NULL, CATEGORY_ID INTEGER NOT NULL ); +CREATE TABLE RAPLA_RESOURCE ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(100) NOT NULL, IGNORE_CONFLICTS INTEGER NOT NULL, OWNER_ID INTEGER, CREATION_TIME DATETIME, LAST_CHANGED DATETIME ,LAST_CHANGED_BY INTEGER, PRIMARY KEY (ID)); +CREATE TABLE RESOURCE_GROUP ( ID INTEGER NOT NULL , GROUP_ID INTEGER NOT NULL); +CREATE TABLE RESOURCE_ATTRIBUTE_VALUE ( RESOURCE_ID INTEGER NOT NULL , ATTRIBUTE_KEY VARCHAR(25), ATTRIBUTE_VALUE LONGTEXT); diff --git a/webapp/WEB-INF/rapla-hsqldb.properties b/webapp/WEB-INF/rapla-hsqldb.properties new file mode 100644 index 0000000..76e6b84 --- /dev/null +++ b/webapp/WEB-INF/rapla-hsqldb.properties @@ -0,0 +1,14 @@ +#HSQL database +#Sun Dec 14 05:42:44 CET 2003 +hsqldb.script_format=0 +runtime.gc_interval=0 +sql.enforce_strict_size=false +readonly=false +hsqldb.first_identity=0 +hsqldb.cache_file_scale=1 +sql.compare_in_locale=false +sql.month=true +hsqldb.log_size=8 +modified=no +sql.enforce_size=false + diff --git a/webapp/WEB-INF/rapla-hsqldb.script b/webapp/WEB-INF/rapla-hsqldb.script new file mode 100644 index 0000000..5bf9dc8 --- /dev/null +++ b/webapp/WEB-INF/rapla-hsqldb.script @@ -0,0 +1,17 @@ +CREATE TABLE ALLOCATION ( APPOINTMENT_ID INTEGER NOT NULL, RESOURCE_ID INTEGER NOT NULL, OPTIONAL INTEGER ); +CREATE TABLE APPOINTMENT ( ID INTEGER NOT NULL, EVENT_ID INTEGER NOT NULL , APPOINTMENT_START DATETIME NOT NULL , APPOINTMENT_END DATETIME NOT NULL , REPETITION_TYPE VARCHAR(15), REPETITION_NUMBER INTEGER ,REPETITION_END DATETIME , REPETITION_INTERVAL INTEGER , PRIMARY KEY (ID)); +CREATE TABLE APPOINTMENT_EXCEPTION ( APPOINTMENT_ID INTEGER NOT NULL , EXCEPTION_DATE DATETIME NOT NULL ); +CREATE TABLE CATEGORY ( ID INTEGER NOT NULL , PARENT_ID INTEGER , CATEGORY_KEY VARCHAR(50) NOT NULL , LABEL VARCHAR(250) , DEFINITION VARCHAR, PARENT_ORDER INTEGER, PRIMARY KEY (ID)); +CREATE TABLE DYNAMIC_TYPE ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(20) NOT NULL , DEFINITION VARCHAR NOT NULL, PRIMARY KEY (ID)); +CREATE TABLE EVENT ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(20) NOT NULL , OWNER_ID INTEGER NOT NULL , CREATION_TIME DATETIME , LAST_CHANGED DATETIME, LAST_CHANGED_BY INTEGER, PRIMARY KEY (ID)); +CREATE TABLE EVENT_ATTRIBUTE_VALUE ( EVENT_ID INTEGER NOT NULL , ATTRIBUTE_KEY VARCHAR(20) NOT NULL , VALUE VARCHAR); +CREATE TABLE PERIOD ( ID INTEGER NOT NULL , NAME VARCHAR(255) NOT NULL , PERIOD_START DATETIME NOT NULL , PERIOD_END DATETIME NOT NULL , PRIMARY KEY (ID)); +CREATE TABLE PERMISSION ( RESOURCE_ID INTEGER NOT NULL , USER_ID INTEGER , GROUP_ID INTEGER , ACCESS_LEVEL INTEGER NOT NULL , MIN_ADVANCE INTEGER , MAX_ADVANCE INTEGER , START_DATE DATETIME , END_DATE DATETIME ); +CREATE TABLE PREFERENCE ( USER_ID INTEGER, ROLE VARCHAR(200) NOT NULL , STRING_VALUE VARCHAR, XML_VALUE VARCHAR); +CREATE TABLE RAPLA_USER ( ID INTEGER NOT NULL , USERNAME VARCHAR(30) NOT NULL , PASSWORD VARCHAR(130) , NAME VARCHAR(200) NOT NULL , EMAIL VARCHAR(150) NOT NULL , ISADMIN INTEGER NOT NULL , PRIMARY KEY (ID)); +CREATE TABLE RAPLA_USER_GROUP ( USER_ID INTEGER NOT NULL, CATEGORY_ID INTEGER NOT NULL ); +CREATE TABLE RAPLA_RESOURCE ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(100) NOT NULL, IGNORE_CONFLICTS INTEGER NOT NULL, OWNER_ID INTEGER, CREATION_TIME DATETIME, LAST_CHANGED DATETIME , LAST_CHANGED_BY INTEGER, PRIMARY KEY (ID) ); +CREATE TABLE RESOURCE_GROUP ( ID INTEGER NOT NULL , GROUP_ID INTEGER NOT NULL); +CREATE TABLE RESOURCE_ATTRIBUTE_VALUE ( RESOURCE_ID INTEGER NOT NULL , ATTRIBUTE_KEY VARCHAR(25), VALUE VARCHAR); + +CREATE USER SA PASSWORD "" ADMIN diff --git a/webapp/WEB-INF/rapla-mysql.sql b/webapp/WEB-INF/rapla-mysql.sql new file mode 100644 index 0000000..7fa23ab --- /dev/null +++ b/webapp/WEB-INF/rapla-mysql.sql @@ -0,0 +1,214 @@ +-- Mysql -h -uroot -p < thisscript + +CREATE SCHEMA IF NOT EXISTS `RAPLA_DB` DEFAULT CHARACTER SET latin1; +USE `RAPLA_DB`; + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`ALLOCATION` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`ALLOCATION` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`ALLOCATION` ( + `APPOINTMENT_ID` INT NOT NULL , + `RESOURCE_ID` INT NOT NULL, + `OPTIONAL` INT + ); + +CREATE INDEX `INDEX_1` ON `RAPLA_DB`.`ALLOCATION` (`APPOINTMENT_ID` ASC) ; + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`APPOINTMENT` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`APPOINTMENT` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`APPOINTMENT` ( + `ID` INT NOT NULL + ,`EVENT_ID` INT NOT NULL + ,`APPOINTMENT_START` DATETIME NOT NULL + ,`APPOINTMENT_END` DATETIME NOT NULL + ,`REPETITION_TYPE` VARCHAR(15) NULL DEFAULT NULL + ,`REPETITION_NUMBER` INT NULL DEFAULT NULL + ,`REPETITION_END` DATETIME NULL DEFAULT NULL + ,`REPETITION_INTERVAL` INT NULL DEFAULT NULL + ,PRIMARY KEY (`ID`) ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`APPOINTMENT_EXCEPTION` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`APPOINTMENT_EXCEPTION` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`APPOINTMENT_EXCEPTION` ( + `APPOINTMENT_ID` INT NOT NULL , + `EXCEPTION_DATE` DATETIME NOT NULL ); + +CREATE INDEX `Index_1` ON `RAPLA_DB`.`APPOINTMENT_EXCEPTION` (`APPOINTMENT_ID` ASC) ; + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`CATEGORY` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`CATEGORY` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`CATEGORY` ( + `ID` INT NOT NULL , + `PARENT_ID` INT NULL DEFAULT NULL , + `CATEGORY_KEY` VARCHAR(50) NOT NULL , + `LABEL` VARCHAR(250) NULL DEFAULT NULL , + `DEFINITION` TEXT NULL DEFAULT NULL , + `PARENT_ORDER` INT NULL DEFAULT NULL , + PRIMARY KEY (`ID`) ); + +CREATE INDEX `INDEX_2` ON `RAPLA_DB`.`CATEGORY` (`PARENT_ID` ASC) ; + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`DYNAMIC_TYPE` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`DYNAMIC_TYPE` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`DYNAMIC_TYPE` ( + `ID` INT NOT NULL , + `TYPE_KEY` VARCHAR(50) NOT NULL , + `DEFINITION` TEXT NOT NULL , + PRIMARY KEY (`ID`) ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`EVENT` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`EVENT` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`EVENT` ( + `ID` INT NOT NULL , + `TYPE_KEY` VARCHAR(50) NOT NULL , + `OWNER_ID` INT NOT NULL , + `CREATION_TIME` DATETIME , + `LAST_CHANGED` DATETIME , + `LAST_CHANGED_BY` INT NULL DEFAULT NULL , + PRIMARY KEY (`ID`) ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`EVENT_ATTRIBUTE_VALUE` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`EVENT_ATTRIBUTE_VALUE` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`EVENT_ATTRIBUTE_VALUE` ( + `EVENT_ID` INT NOT NULL , + `ATTRIBUTE_KEY` VARCHAR(20) NOT NULL , + `VALUE` VARCHAR(1000) NULL DEFAULT NULL ); + +CREATE INDEX `INDEX_1` ON `RAPLA_DB`.`EVENT_ATTRIBUTE_VALUE` (`EVENT_ID` ASC) ; + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`PERIOD` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`PERIOD` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`PERIOD` ( + `ID` INT NOT NULL , + `NAME` VARCHAR(255) NOT NULL , + `PERIOD_START` DATETIME NOT NULL , + `PERIOD_END` DATETIME NOT NULL , + PRIMARY KEY (`ID`) ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`PERMISSION` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`PERMISSION` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`PERMISSION` ( + `RESOURCE_ID` INT NOT NULL , + `USER_ID` INT NULL DEFAULT NULL , + `GROUP_ID` INT NULL DEFAULT NULL , + `ACCESS_LEVEL` INT NOT NULL , + `MIN_ADVANCE` INT NULL DEFAULT NULL , + `MAX_ADVANCE` INT NULL DEFAULT NULL , + `START_DATE` DATETIME NULL DEFAULT NULL , + `END_DATE` DATETIME NULL DEFAULT NULL ); + +CREATE INDEX `INDEX_1` ON `RAPLA_DB`.`PERMISSION` (`RESOURCE_ID` ASC) ; + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`PREFERENCE` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`PREFERENCE` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`PREFERENCE` ( + `USER_ID` INT NULL DEFAULT NULL , + `ROLE` VARCHAR(200) NOT NULL , + `STRING_VALUE` VARCHAR(1000) NULL DEFAULT NULL , + `XML_VALUE` MEDIUMTEXT NULL DEFAULT NULL ); + +CREATE INDEX `INDEX_1` ON `RAPLA_DB`.`PREFERENCE` (`USER_ID` ASC) ; + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`RAPLA_USER` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`RAPLA_USER` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`RAPLA_USER` ( + `ID` INT NOT NULL , + `USERNAME` VARCHAR(30) NOT NULL , + `PASSWORD` VARCHAR(130) NULL DEFAULT NULL , + `NAME` VARCHAR(200) NOT NULL , + `EMAIL` VARCHAR(150) NOT NULL , + `ISADMIN` INT NOT NULL , + PRIMARY KEY (`ID`) ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`RAPLA_USER_GROUP` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`RAPLA_USER_GROUP` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`RAPLA_USER_GROUP` ( + `USER_ID` INT NOT NULL , + `CATEGORY_ID` INT NOT NULL ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`RAPLA_RESOURCE` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`RAPLA_RESOURCE` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`RAPLA_RESOURCE` ( + `ID` INT NOT NULL , + `TYPE_KEY` VARCHAR(100) NOT NULL , + `IGNORE_CONFLICTS` INT NOT NULL , + `OWNER_ID` INT, + `CREATION_TIME` DATETIME , + `LAST_CHANGED` DATETIME, + `LAST_CHANGED_BY` INT NULL DEFAULT NULL , + PRIMARY KEY (`ID`) ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`RESOURCE_GROUP` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`RESOURCE_GROUP` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`RESOURCE_GROUP` ( + `ID` INT NOT NULL , + `GROUP_ID` INT NOT NULL ); + + +-- ----------------------------------------------------- +-- Table `RAPLA_DB`.`RESOURCE_ATTRIBUTE_VALUE` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `RAPLA_DB`.`RESOURCE_ATTRIBUTE_VALUE` ; + +CREATE TABLE IF NOT EXISTS `RAPLA_DB`.`RESOURCE_ATTRIBUTE_VALUE` ( + `RESOURCE_ID` INT NOT NULL , + `ATTRIBUTE_KEY` VARCHAR(25) NULL DEFAULT NULL , + `VALUE` VARCHAR(1000) NULL DEFAULT NULL ); + +DROP USER 'rapla'@'%'; +CREATE USER 'rapla'@'%' IDENTIFIED BY 'raplapw'; +GRANT ALL PRIVILEGES ON `RAPLA_DB`.* TO 'rapla'@'%'; \ No newline at end of file diff --git a/webapp/WEB-INF/rapla-oracle.sql b/webapp/WEB-INF/rapla-oracle.sql new file mode 100644 index 0000000..47f3d0d --- /dev/null +++ b/webapp/WEB-INF/rapla-oracle.sql @@ -0,0 +1,222 @@ + +ALTER TABLE RAPLA_RESOURCE DROP PRIMARY KEY CASCADE; +DROP TABLE RAPLA_RESOURCE CASCADE CONSTRAINTS; + +CREATE TABLE RAPLA_RESOURCE +( + ID INTEGER NOT NULL, + TYPE_KEY VARCHAR2(100 BYTE) NOT NULL, + IGNORE_CONFLICTS INTEGER NOT NULL, + OWNER_ID INTEGER , + CREATION_TIME TIMESTAMP(6) , + LAST_CHANGED TIMESTAMP(6) , + LAST_CHANGED_BY INTEGER +) ; + + + +DROP TABLE ALLOCATION CASCADE CONSTRAINTS; + +CREATE TABLE ALLOCATION +( + APPOINTMENT_ID INTEGER NOT NULL, + RESOURCE_ID INTEGER NOT NULL, + OPTIONAL INTEGER + +) ; + + +ALTER TABLE APPOINTMENT DROP PRIMARY KEY CASCADE; +DROP TABLE APPOINTMENT CASCADE CONSTRAINTS; + +CREATE TABLE APPOINTMENT +( + ID INTEGER NOT NULL, + EVENT_ID INTEGER NOT NULL, + APPOINTMENT_START TIMESTAMP(6) NOT NULL, + APPOINTMENT_END TIMESTAMP(6) NOT NULL, + REPETITION_TYPE VARCHAR2(15 BYTE), + REPETITION_NUMBER INTEGER, + REPETITION_END TIMESTAMP(6), + REPETITION_INTERVAL INTEGER +) ; + + +DROP TABLE APPOINTMENT_EXCEPTION CASCADE CONSTRAINTS; + +CREATE TABLE APPOINTMENT_EXCEPTION +( + APPOINTMENT_ID INTEGER NOT NULL, + EXCEPTION_DATE TIMESTAMP(6) NOT NULL +) ; + + +ALTER TABLE CATEGORY DROP PRIMARY KEY CASCADE; +DROP TABLE CATEGORY CASCADE CONSTRAINTS; + +CREATE TABLE CATEGORY +( + ID INTEGER NOT NULL, + PARENT_ID INTEGER, + CATEGORY_KEY VARCHAR2(50 BYTE) NOT NULL, + LABEL VARCHAR2(200 BYTE), + DEFINITION CLOB, + PARENT_ORDER INTEGER +) ; + + +ALTER TABLE DYNAMIC_TYPE DROP PRIMARY KEY CASCADE; +DROP TABLE DYNAMIC_TYPE CASCADE CONSTRAINTS; + +CREATE TABLE DYNAMIC_TYPE +( + ID INTEGER NOT NULL, + TYPE_KEY VARCHAR2(20 BYTE) NOT NULL, + DEFINITION CLOB NOT NULL +) ; + + +ALTER TABLE EVENT DROP PRIMARY KEY CASCADE; +DROP TABLE EVENT CASCADE CONSTRAINTS; + +CREATE TABLE EVENT +( + ID INTEGER NOT NULL, + TYPE_KEY VARCHAR2(20 BYTE) NOT NULL, + OWNER_ID INTEGER NOT NULL, + CREATION_TIME TIMESTAMP(6) , + LAST_CHANGED TIMESTAMP(6) , + LAST_CHANGED_BY INTEGER +) ; + + +DROP TABLE EVENT_ATTRIBUTE_VALUE CASCADE CONSTRAINTS; + +CREATE TABLE EVENT_ATTRIBUTE_VALUE +( + EVENT_ID INTEGER NOT NULL, + ATTRIBUTE_KEY VARCHAR2(20 BYTE) NOT NULL, + VALUE VARCHAR2(500 BYTE) +) ; + + +ALTER TABLE PERIOD DROP PRIMARY KEY CASCADE; +DROP TABLE PERIOD CASCADE CONSTRAINTS; + +CREATE TABLE PERIOD +( + ID INTEGER NOT NULL, + NAME VARCHAR2(255 BYTE) NOT NULL, + PERIOD_START TIMESTAMP(6) NOT NULL, + PERIOD_END TIMESTAMP(6) NOT NULL +) ; + + +DROP TABLE PERMISSION CASCADE CONSTRAINTS; + +CREATE TABLE PERMISSION +( + RESOURCE_ID INTEGER NOT NULL, + USER_ID INTEGER, + GROUP_ID INTEGER, + ACCESS_LEVEL INTEGER NOT NULL, + MIN_ADVANCE INTEGER, + MAX_ADVANCE INTEGER, + START_DATE TIMESTAMP(6), + END_DATE TIMESTAMP(6) +) ; + + +ALTER TABLE RAPLA_USER DROP PRIMARY KEY CASCADE; +DROP TABLE RAPLA_USER CASCADE CONSTRAINTS; + +CREATE TABLE RAPLA_USER +( + ID INTEGER NOT NULL, + USERNAME VARCHAR2(30 BYTE) NOT NULL, + PASSWORD VARCHAR2(130 BYTE), + NAME VARCHAR2(100 BYTE), + EMAIL VARCHAR2(150 BYTE), + ISADMIN INTEGER +) ; + + +DROP TABLE RAPLA_USER_GROUP CASCADE CONSTRAINTS; + +CREATE TABLE RAPLA_USER_GROUP +( + USER_ID INTEGER NOT NULL, + CATEGORY_ID INTEGER NOT NULL +) ; + + +DROP TABLE RESOURCE_ATTRIBUTE_VALUE CASCADE CONSTRAINTS; + +CREATE TABLE RESOURCE_ATTRIBUTE_VALUE +( + RESOURCE_ID INTEGER NOT NULL, + ATTRIBUTE_KEY VARCHAR2(25 BYTE), + VALUE VARCHAR2(200 BYTE) +) ; + + +DROP TABLE RESOURCE_GROUP CASCADE CONSTRAINTS; + +CREATE TABLE RESOURCE_GROUP +( + ID INTEGER NOT NULL, + GROUP_ID INTEGER NOT NULL +) ; + + +DROP TABLE PREF CASCADE CONSTRAINTS; + +CREATE TABLE PREF +( + USER_ID INTEGER, + ROLE VARCHAR2(200 BYTE) NOT NULL, + STRING_VALUE VARCHAR2(2000 BYTE), + XML_VALUE VARCHAR2(2000 BYTE) +) ; + + +DROP TABLE PREFERENCE CASCADE CONSTRAINTS; + +CREATE TABLE PREFERENCE +( + USER_ID INTEGER, + ROLE VARCHAR2(200 BYTE) NOT NULL, + STRING_VALUE VARCHAR2(2000 BYTE), + XML_VALUE CLOB +) ; + + +ALTER TABLE RAPLA_RESOURCE ADD ( + PRIMARY KEY (ID)); + + +ALTER TABLE APPOINTMENT ADD ( + PRIMARY KEY (ID)); + + +ALTER TABLE CATEGORY ADD ( + PRIMARY KEY (ID)); + + +ALTER TABLE DYNAMIC_TYPE ADD ( + PRIMARY KEY (ID)); + + +ALTER TABLE EVENT ADD ( + PRIMARY KEY (ID)); + + +ALTER TABLE PERIOD ADD ( + PRIMARY KEY (ID)); + + +ALTER TABLE RAPLA_USER ADD ( + PRIMARY KEY (ID)); + + + diff --git a/webapp/WEB-INF/rapla-postgres.sql b/webapp/WEB-INF/rapla-postgres.sql new file mode 100644 index 0000000..5565d83 --- /dev/null +++ b/webapp/WEB-INF/rapla-postgres.sql @@ -0,0 +1,15 @@ +CREATE TABLE ALLOCATION ( APPOINTMENT_ID INTEGER NOT NULL, RESOURCE_ID INTEGER NOT NULL, OPTIONAL INTEGER ); +CREATE TABLE APPOINTMENT ( ID INTEGER NOT NULL, EVENT_ID INTEGER NOT NULL , APPOINTMENT_START TIMESTAMP NOT NULL , APPOINTMENT_END TIMESTAMP NOT NULL , REPETITION_TYPE VARCHAR(15), REPETITION_NUMBER INTEGER ,REPETITION_END TIMESTAMP , REPETITION_INTERVAL INTEGER , PRIMARY KEY (ID)); +CREATE TABLE APPOINTMENT_EXCEPTION ( APPOINTMENT_ID INTEGER NOT NULL , EXCEPTION_DATE TIMESTAMP NOT NULL ); +CREATE TABLE CATEGORY ( ID INTEGER NOT NULL , PARENT_ID INTEGER , CATEGORY_KEY VARCHAR(50) NOT NULL , LABEL VARCHAR(255) , DEFINITION TEXT, PARENT_ORDER INTEGER, PRIMARY KEY (ID)); +CREATE TABLE DYNAMIC_TYPE ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(20) NOT NULL , DEFINITION TEXT NOT NULL, PRIMARY KEY (ID)); +CREATE TABLE EVENT ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(20) NOT NULL , OWNER_ID INTEGER NOT NULL , CREATION_TIME TIMESTAMP , LAST_CHANGED TIMESTAMP, LAST_CHANGED_BY INTEGER, PRIMARY KEY (ID)); +CREATE TABLE EVENT_ATTRIBUTE_VALUE ( EVENT_ID INTEGER NOT NULL , ATTRIBUTE_KEY VARCHAR(20) NOT NULL , VALUE VARCHAR(1000)); +CREATE TABLE PERIOD ( ID INTEGER NOT NULL , NAME VARCHAR(255) NOT NULL , PERIOD_START TIMESTAMP NOT NULL , PERIOD_END TIMESTAMP NOT NULL , PRIMARY KEY (ID)); +CREATE TABLE PERMISSION ( RESOURCE_ID INTEGER NOT NULL , USER_ID INTEGER , GROUP_ID INTEGER , ACCESS_LEVEL INTEGER NOT NULL , MIN_ADVANCE INTEGER , MAX_ADVANCE INTEGER , START_DATE TIMESTAMP , END_DATE TIMESTAMP ); +CREATE TABLE PREFERENCE ( USER_ID INTEGER, ROLE VARCHAR(200) NOT NULL , STRING_VALUE VARCHAR(1000), XML_VALUE TEXT); +CREATE TABLE RAPLA_USER ( ID INTEGER NOT NULL , USERNAME VARCHAR(30) NOT NULL , PASSWORD VARCHAR(130) , NAME VARCHAR(200) NOT NULL , EMAIL VARCHAR(150) NOT NULL , ISADMIN INTEGER NOT NULL , PRIMARY KEY (ID)); +CREATE TABLE RAPLA_USER_GROUP ( USER_ID INTEGER NOT NULL, CATEGORY_ID INTEGER NOT NULL ); +CREATE TABLE RAPLA_RESOURCE ( ID INTEGER NOT NULL , TYPE_KEY VARCHAR(100) NOT NULL, IGNORE_CONFLICTS INTEGER NOT NULL,OWNER_ID INTEGER , CREATION_TIME TIMESTAMP , LAST_CHANGED TIMESTAMP, LAST_CHANGED_BY INTEGER, PRIMARY KEY (ID)); +CREATE TABLE RESOURCE_GROUP ( ID INTEGER NOT NULL , GROUP_ID INTEGER NOT NULL); +CREATE TABLE RESOURCE_ATTRIBUTE_VALUE ( RESOURCE_ID INTEGER NOT NULL , ATTRIBUTE_KEY VARCHAR(25), VALUE VARCHAR(1000)); diff --git a/webapp/WEB-INF/rapla.xconf b/webapp/WEB-INF/rapla.xconf new file mode 100644 index 0000000..7d47306 --- /dev/null +++ b/webapp/WEB-INF/rapla.xconf @@ -0,0 +1,74 @@ + + + + + + + + de + en + fr + es + zh + cs + nl + pl + + + + + + + + admin + + + + file + + + + + + + utf-8 + + data.xml + no + no + + + + + + + + + + + + db_user + your_pwd + + + diff --git a/webapp/WEB-INF/raplaclient.xlog b/webapp/WEB-INF/raplaclient.xlog new file mode 100644 index 0000000..5cdd60d --- /dev/null +++ b/webapp/WEB-INF/raplaclient.xlog @@ -0,0 +1,39 @@ + + + + + + + + + + + System.out + + %5.5{priority} %21.21{time:yyyyMMdd HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + + + + + ${context-root}/logs/rapla-client.log + + %5.5{priority} %21.21{time:yyyyMMdd HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + true + + 1m + + + + + + + + + + + + diff --git a/webapp/WEB-INF/raplaserver.xconf b/webapp/WEB-INF/raplaserver.xconf new file mode 100644 index 0000000..3d94061 --- /dev/null +++ b/webapp/WEB-INF/raplaserver.xconf @@ -0,0 +1,78 @@ + + + + + + + + de + en + fr + es + zh + cs + nl + pl + + + + + utf-8 + + + + + + file + + + + + utf-8 + + data.xml + no + no + + + + + + + + + + + + db_user + your_pwd + + + + + file + sql + + + + diff --git a/webapp/WEB-INF/raplaserver.xlog b/webapp/WEB-INF/raplaserver.xlog new file mode 100644 index 0000000..315ee98 --- /dev/null +++ b/webapp/WEB-INF/raplaserver.xlog @@ -0,0 +1,74 @@ + + + + + + + + + + + + ${context-root}/logs/rapla-server.log + + %5.5{priority} %21.21{time:yyyyMMdd HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + true + + 1m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/webapp/WEB-INF/simpsons-data.xml b/webapp/WEB-INF/simpsons-data.xml new file mode 100644 index 0000000..74fb21c --- /dev/null +++ b/webapp/WEB-INF/simpsons-data.xml @@ -0,0 +1,630 @@ + + + + + Verwaltungseinheit + Administrative Entity + + channel-6 + + + elementary-springfield + + + springfield powerplant + + Sicherheitabteilung + securitydepartment + + + Abfallbeseitigung + waste disposal + + + + + Ressourcen + resources + + Fahrzeugtypen + vehicle-types + + Bus + bus + + + PKW + car + + + + Raumtypen + room-types + + Klassenraum + classroom + + + Studio + studio + + + Bar + bar + + + Konferenzraum + conference room + + + + + Vorlesung + lecture + + Schwierigkeitsgrade + difficulty levels + + viel zu einfach + too simple + + + viel zu schwierig + too hard + + + zu langweilig + too boring + + + + + Benutzergruppen + user-groups + + Ressourcen eintragen + register resources + Enregistrer des ressources + + + Einstellungen bearbeiten + modify preferences + Modifier la préférence + + + + + + + + Fahrzeug + vehicle + + resource + {name} + + + Name + name + + + + PS + hp + + + + Anzahl Plätze + number of seats + + + + + gehört zu + belongs to + + category[key='department'] + + + + Fahrzeugtyp + type of vehicle + + category[key='resources']/category[key='vehicle-types'] + + + + + + + Raum + room + + resource + {name} + + + Name + name + + + + Tafel + blackboard + + + + Anzahl der Plätze + number of seats + + + + Raumtyp + type of room + + category[key='resources']/category[key='room-types'] + + + + gehört zu + belongs to + + category[key='department'] + + + + + + + + Dozent + lecturer + + person + {surname} {forename} + + + Titel + title + + + + Nachname + surname + + + + Vorname + forename + + + + email + email + + + + + arbeitet für + works for + + category[key='department'] + + + + + + + + Meeting + meeting + + reservation + {name} + + + Name + name + + + + Gäste erlaubt + guests permitted + + + + + + + + Vorlesung + lecture + + reservation + {name} + + + Name + name + + + + Schwierigkeitsgrad + difficulty level + + category[key='lecture']/category[key='level'] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + room A66 + true + 30 + category[key='conferenceroom'] + category[key='springfield-powerplant']/category[key='security-department'] + + + + + + classroom 3a + true + 24 + category[key='classroom'] + category[key='elementary-springfield'] + + + + + + studio 1 + false + 150 + category[key='studio'] + category[key='channel-6'] + + + + + + Ottos bus + 250 + 50 + category[key='elementary-springfield'] + category[key='bus'] + + + + + + Moes bar + false + 50 + category[key='bar'] + + + + + + Principal + Skinner + Seymour + scinner@elementary-springfield.edu + category[key='elementary-springfield'] + + + + + + Simpson + Homer + simpson@security.power-plant.sim + category[key='springfield-powerplant'] + + + + + + Mr. + Burns + Monty + chief@power-plant.sim + category[key='springfield-powerplant'] + + + + + + Gumble + Barney + gumble@duff.beer + + + + + + Miss + Bouvier + Selma + selma@simgles.com + + + + + + Brockman + Kent + kent@channel6.com + category[key='channel-6'] + + + + + + Krustofski + Herschel + krusty@channel6.com + category[key='channel-6'] + + + + + + Simpson + Abraham + abe@retirement-castle.old + + + + + + Simpson + Lisa + lisa@mensa.org + + + + + + Mann + Otto + otto@elementary-springfield.edu + category[key='elementary-springfield'] + + + + + + Szyslak + Moe + lisa@moes-tavern.com + + + + + + + + + + + + + + + Duffs seminar + category[key='too-easy'] + + + + + + + + + + + + + + drinking at Moes + true + + + + + + + + + + + + + + lesson for veterans + category[key='too-boring'] + + + + + + + + + + + + + + + + + storys about the past + category[key='too-boring'] + + + + + + + + + + + + + brewing techniques + category[key='too-hard'] + + + + + + + + + + + + + + + + Itchy and Scratchy + true + + + + + + + + + + + + + bowling + false + + + + + + + + + + + + + jam session + true + + + + + + + + + enviromental protection + category[key='too-boring'] + + + + + + + + + + + + + + power planting + category[key='too-easy'] + + + + + + + + + + + + + Han Tan Bantan + category[key='too-boring'] + + + + + + + + + + + + + diff --git a/webapp/WEB-INF/web.xml b/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..29690e4 --- /dev/null +++ b/webapp/WEB-INF/web.xml @@ -0,0 +1,80 @@ + + + + + + + + RaplaServer + RaplaServer + Rapla + + org.rapla.MainServlet + + + config-file + raplaserver.xconf + + + + log-config-file + raplaserver.xlog + + 3 + + + + RaplaServer + /rapla/* + + + + RaplaServer + /rapla + + + + + RaplaServer + /server + + + + RaplaServer + /index.jsp + + + + RaplaServer + /raplaclient.jnlp + + + + RaplaServer + /raplaapplet.jsp + + + + RaplaServer + /calendar.jsp + + + + RaplaServer + /report.jsp + + + + RaplaServer + /export/* + + + + + + redirect.html + + + diff --git a/webapp/default.css b/webapp/default.css new file mode 100644 index 0000000..456585d --- /dev/null +++ b/webapp/default.css @@ -0,0 +1,58 @@ +/* Use this file to customize the Rapla HTML Pages to your style */ +body { + font:12px/18px "Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif; + color: #333333; +} + +/* Button Appearance */ + +.button { + border:none; + cursor:pointer; + display:inline-block; + overflow:visible; + padding:0; + margin:0; + height:29px; + background:url("images/button.gif") right top; +} + +.button a, .button input { + font-size: 13px; + font-weight: bold; + font-family: Arial,Helvetica,Helvetica Neue,Verdana,sans-serif; + text-decoration:none; + color: #FFFFFF !important; + cursor:pointer; + outline:none; + overflow:visible; + white-space:nowrap; + + border:none; + display:inline-block; + padding: 0 18px; + margin:0 !important; + + line-height:29px; + height:29px; + width:auto; + + background:url("images/button.gif") no-repeat left top; +} + +/* Browser fixes */ +.button input::-moz-focus-inner { + padding: 0; + border: none; +} + +.menuEntry +{ + padding-top:5px; + padding-bottom:5px; +} +/* You can also customize the calendar +.month_table { + background-color: #FFFFAA; +} +*/ \ No newline at end of file diff --git a/webapp/images/button.gif b/webapp/images/button.gif new file mode 100644 index 0000000000000000000000000000000000000000..06295bf9f399b290a0cf9412f408eca558dcad53 GIT binary patch literal 2485 zcmeH``9IT-1IOR4S=xN|&Dv(Ua^Dd#bhu)eBOf6Y^^v1;d_NUZ-&ox3O zRF2AAQSL?N+{~O~oAr@zpa0?etpTk+ZY2wY9aJoScJ$gTB80$&)8tTwH8zZ7*KDh{a+rU%o6Q zCFSPkCL<%GuCDIx?rvvir>d%|tgMViqpw`KfS{VxUlHWMt&w;i00U;=_jz z<>lp%A3tttYPz(vbo1s-M@Pr``S}wkPF%WlX@7s8$K&bh>R!Ei)!*MgEG*2^(-RJd zU%PfqR#sM8T6%PJ^!)kr%gf8BPMx}Y_pXA1f{%|6ola*k820w|dU|?6K|wn^J5QcG zVYAuM(b3<(e=jH~n46nJB9T#1QCu$9&(CjhadCZp{mYjxV`F1{K3_sY0);{i4-e<& z=H}$&JbwJx)zx);d^|BRab;yCIXO8lE^cFEBQrD8!^2}?VIey^J3Ktx+uJ)mJ$+(g z;`;UL#l^)B9y~}(OJlKEg@uLp@85^PU}w*s&Ckyd4h{|p2?-1goSmIrU0wC{^_`rY zWHOlq0%2xmrl_dsmlojv`yUxNxi2gL0M7u;e|Z0V0stQZfnX_2Xo`ZuZ}N{+VO7OF z2`~lQ0_>}jkI5*#TQihbrM>BL7D-Yzjb(i=RP_+)ka{VYIcNkso@LaY-~P z5l(rba5&iUhD{$Swd*BzwC$};HQk>3{I;FDN$W{Ily!X9vCn3V)_4!U`_B&paLO*e zx~ChE;IY?=KEHqeD?bqN*<)cu04)lvOr%9a3>dT+n3d{$EZj9YaX8>Rq*FdG0x_(v5Szck&BQJg8)mCzRvjSIg11hRk^6s>(uH=V)Qll5# zn+T*AM#Sghp+e8hx_(0ot1}2uk%5fjr^-~x;uHfWqcp=xeYGsp_10>6j$id^ML`&I zwUQ98&Lox@@P$Nt!ImFDh-N0UhNOO|zE;~jVSKE%b)|ZZ)WKn{)pvq4SPdT#w^^?! z$~COUL4!3`(+IOoKwe+J7&tENTeIFmr83vawCI8L)}^f58*dmDH5+ZLmbH!ctxp=8 z9lH~^H{bGBYBt|3I~M~|QGiZor!dkhv=yvUyOjkpWNr1ptTnekz}@a_e?K0Qe`LjW$C8O&cLB1wE^t!FHMt)W-@2djB9_{VxHo%Ca)gS+u#vs3ic-&-G$ zA%AZ-&6$EF0R7Fs*~4V*gWVd7kb}J`|M~;YO!(#jmzHqqCvPb`KZMc#bO z5!1)xg~i4~4iC7$*B}1$Sls+oAcO#jVmk%VTX-;zAc&-Nf{eGKU?~J)6>OK7hYtQ& zXeSIJ7bPCK6(hS;1hz(L!}7LbRdK~)Zj^3B+g6-TN-@MA+k>WV#bXAG#ltB*GJKsl z5GopdSb&d`M{hs1RxCc2O;lAh-cEE%DS=mFKdO6dC%F%nAjp)D+L7DIK9EvWFZR>v zJl!NDtsAaBf;VW}P7U!bk)jioFx2g|h`~}BE~WQ8e>)uyDU%bmp_rq0GM?hf1nqgwprZ0BrOyF`eL;Yft6JOiJLm0W5^?3~Zhif(Z96X;Qpz>` zZ3aB3J6WypWf3pAjB_|supqcXCqWYDh-T-EoUAyV-8blG%+4K2snD;q8M@`c&YK#n zFd+901xK>;X^=`xwwf?p=Z2i6PnXC<-{&xrMDA7!-EYQbIFic#i#J$#p4)dg{Fu)! z0-!`wQQMJd^ezExPc%pNk3=@&!NLOFAQTLrKTe9=tMP$qhy~MxO-2#~ZG1Y#Ci*8{qxb4U53rte z+sQWS9w}m|<{Gzu@*RJ#9uKYc5w)A@MspgT+SlGdw!4EAqXdm%4lu;O1;ra^jX5{X zybK4fB>Qrj2++C!Ydh-KJWeywzV4RW0Cl2`^SU9m?vB6RH|ldLr=?{Xf2@ zAXLqcU_xWiFg#FbPx|x3pEE1Q+&3esqd0Ve+i!~9M; literal 0 HcmV?d00001 diff --git a/webapp/images/favicon.ico b/webapp/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0c6439d8bb0ddb3c30db59c0e522808f1b7e92d5 GIT binary patch literal 4286 zcmcgv2UJy87X5&ljIp3tGZVi$7RbbcAUXm9>Y(y9qJkpQZ4faQ>?knHLL7}1OH?uz z5XI0`q)HXR5(E`1sPs=qP=t@L=bVe56}clbXx~hLx%muCm|%jTLx(EV)zx!I&t>A?L9ix_CiEqIPWYci zuU@^D%Vbk9bLI?KS(fF(Mj_L4f=D&jvd~pudhd5ULNk;xq}-wZXh-` z7C}M5IDGgpJUlkT$C&Z37M004y5}Z>IpG^Z4+7VB zTQPtpSAYGrX8sv}KfHPK1~oM`0+p4O$j!~g{rmTE^X4riB_$y-F%cIpUc|9u$FOOW zI~FZkB>ZW~+g!|=H50OFX3*Ck2dd{6ojZ5VAb-vh$2tP%N{!GORAb|GbaVo_-mYCs z0Y_b39cpW9@#4h`G4e5MDJ(3+g9i^t%T1)Er3rshQc@5Z83|wCFVmBXV0EtMBM5_r%s)E`1<-59XfOf>(;Hq@#Du45fOp(Uw=heX=$ql z*1?{^UwEW&w0)9@$ncpZXDIUB}z(4pin5p9^JNWtMH6-z~{49yoREpBH_v7 z$B)6jBqt|9Pj7TU8{9ngjh5EXf(v0`XliN}Yg2m5V^dQTPMtahLqkLSo$8DAFu$9d z8^(+o0|VN3rlzLYzkk2*im$1vsuDW$^Yg)eoj)JQ-gEDKKeW} zH6}*#pSe6dJYZsMOgc`Yxw%>JaDPZ6kNy1os83p9(!>dfq}pY@d@Xy&b;=s1PMusr z#9zHn-mP0V11&AB>lPNXX@6Cqp`oEQ=bQu1E$_Rtc?7V;#!aNwv%S zmwP6MvTpb|BH}Xo^yw4$KDVBpo~e(IPnCs*Mah~qYw+mNBjG(?qs%4u!Dr8&VGi{> z2YY+SslJ%^?%liCw|6h1qM{HS97H|Qk=8gx_{`TU`B~!HwQJD6eS63E`A3f)t-EK> zo?_Z-6|SzX*tTsOyti-1v7<*t557S)Ye&8HhabGf{@t))z0k$?kBy0e8S%-?reexu zQ%sY|uwun>k#nVoJaR1>8XBV?l`Wo0-(b-jf0&wEH2M}ImZ_;>%f3(?V0c=F`2@P>N==Z?YQ?!FQ9 z?y&Gf{Ay}yX1cn%c%D}%&S(8xb9^5LA9KEyy_Y@Z@25|n!XkPuTTxG)CYy={P7Ww9 zFBj`?=}TO<6&P=5SV`Q2+TiE+D7AL&I;@gSnTYD5dr;KVUZefrNJ<);00n(CG$^1T zDEB<`3(%fqZ?dSjgoTA7G&DqkD;n(l+DoCwra<)T5+h(@YmhT;wA`y0W}J%RVRGT0L(H;){i)H767B`$4|(>s*Z z+S)qIaq%+6aSs#Z`F245#aSp#-GRcWg(!%yMPalP3Zfk$zqT3GPcGn9>0LC`RSPX7 zrA619X6jEZ{g5>&b@Bcq@2iM=NL&27ckd2czI^$O-hHLndtJUl=Dv=|K4%R1mBlE! zvJ^ErF?jL#0;(UJhdgl=o*e6eyf7IGBW+NUvH_KMenM@20_tmuh3~9KXnJc2zY}O^ zbco9D)lA8)s6)v8iw=kMy>oeZ#Lfi^ZQo`^8-;mGqJh^PL;k$*u3dHgaI$GPC? z87=a~9z`)uD2kkq;wT#wMOdIX#vY}~D^QWX1GUd1@w)O6TaT?e*Qt-4;_udU_DyPSmX!&75TyX$Pdvc{;4Rs zO!&=cAx0H_NV=zj%3dHeOz{0@CNfd!-?H-)?0a*Z&?Xwn`)o70Knb%v;aaScI e5{Z=Nr92Xh81!8U&*u_}CmG|3Y6*1*FZ>Iv>(S-_ literal 0 HcmV?d00001 diff --git a/webapp/redirect.html b/webapp/redirect.html new file mode 100644 index 0000000..043c0bf --- /dev/null +++ b/webapp/redirect.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/webapp/webclient/logo.gif b/webapp/webclient/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..0032e22860f895788c0955e017fdb227600cdb87 GIT binary patch literal 793 zcmZ?wbhEHbRA5kGI2OqO1kB7#oSZD8!rbyQg6e9j8X6j!nwmyNMiD;Bk-o}NzRJ;l z$}s^du>mUaL8|e=stLhrK|w)Dp=zO_p($bNso@%_5gOs);TchynbDeAF`C&iT9uhb z85tRwnVH$y+4=eTg@uJhMMcHM#U&*rrKP2v6*lGNH%;^5tjLv}9--Lo`&@AAmK%cJ+Lh~2*`{=n+Q z1FMq`u1#IDX3e2>X@}Nj9Nv(9WJAu;jd>e3Y}mMQKAazNP5+mg3EuHy__x zx^?T;ZQHhO-@bjvjvYsi965XT?41kCZ``CV=i}|^=IY|?o~+fZXI@29+WF%B zOYO3`a?&r%-qrSE!nF`BzfQjjIrpwLoJA=oC)Wq<%84vq>OI3K|C~(q=S-Ug8TH?E zBELjmT3lW*c~-Ai>8c&8Le?*OqIE7id}=~(mu!si^Ic`um$^c9@-%jDE1d3@XBFNx zMI&I|mJL0T#?Q~__H~HeZQ`1$8Iq*ul-P8nk4AuZKE1Wn0 literal 0 HcmV?d00001 diff --git a/webapp/webclient/raplaclient.xconf b/webapp/webclient/raplaclient.xconf new file mode 100644 index 0000000..b07788e --- /dev/null +++ b/webapp/webclient/raplaclient.xconf @@ -0,0 +1,35 @@ + + + + + + + + de + en + fr + es + zh + cs + nl + + + + + + + + + remote + + + + + ${download-url} + + + diff --git a/webapp/webclient/raplaclient.xlog b/webapp/webclient/raplaclient.xlog new file mode 100644 index 0000000..1543df1 --- /dev/null +++ b/webapp/webclient/raplaclient.xlog @@ -0,0 +1,39 @@ + + + + + + + + + + + System.out + + %5.5{priority} %21.21{time:yyyyMMdd HH:mm:ss:S} [%5.25{category}]: %{message}\n%{throwable} + + + + + + + + + + + + +
  • null if none of the above criterias matched. + */ + public DynamicType guessType() throws RaplaException { + DynamicType[] types = guessTypes(); + if ( types.length > 0) + { + return types[0]; + } + else + { + return null; + } + } + + public DynamicType[] guessTypes() throws RaplaException { + DynamicType dynamicType = null; + getLogger().debug("Guessing DynamicType from " + object); + if (object instanceof DynamicType) + dynamicType = (DynamicType) object; + + if (object instanceof Classifiable) { + Classification classification= ((Classifiable) object).getClassification(); + dynamicType = classification.getType(); + } + if (dynamicType != null) + { + return new DynamicType[] {dynamicType}; + } + String classificationType = null; + if ( Reservation.TYPE.is( raplaType )) { + classificationType = DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION; + } else if ( Allocatable.TYPE.is( raplaType )) { + if ( isPerson ) { + classificationType = DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION; + } else { + classificationType = DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION; + } + } + DynamicType[] dynamicTypes = getQuery().getDynamicTypes( classificationType ); + return dynamicTypes; + + } + + protected void newEntity() throws RaplaException { + if ( Category.TYPE.is( raplaType )) { + getEditController().edit((Entity)object, parent); + } else { + Object obj = newEntity(raplaType); + if (obj instanceof Classifiable) { + DynamicType type = guessType(); + final Classification newClassification = type.newClassification(); + ((Classifiable)obj).setClassification(newClassification); + } + getEditController().edit((Entity)obj, parent); + } + } + + protected void edit() throws RaplaException { + getEditController().edit((Entity)object, parent); + } + + protected void delete() throws RaplaException { + if (object == null) + return; + Entity[] objects = new Entity[] { (Entity) object}; + DialogUI dlg = getInfoFactory().createDeleteDialog( objects, parent); + dlg.start(); + if (dlg.getSelectedIndex() != 0) + return; + getModification().removeObjects(objects); + } + + protected void deleteSelection() throws RaplaException { + if (objectList == null || objectList.size() == 0) + return; + DialogUI dlg = getInfoFactory().createDeleteDialog(objectList.toArray(), parent); + dlg.start(); + if (dlg.getSelectedIndex() != 0) + return; + getModification().removeObjects((Entity[])objectList.toArray( Entity.ENTITY_ARRAY)); + } + + public void setPerson(boolean b) { + isPerson = b; + } + +} + diff --git a/src/org/rapla/gui/internal/action/ReservationAction.java b/src/org/rapla/gui/internal/action/ReservationAction.java new file mode 100644 index 0000000..9a62f97 --- /dev/null +++ b/src/org/rapla/gui/internal/action/ReservationAction.java @@ -0,0 +1,92 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; + +import java.awt.Component; +import java.awt.Point; + +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.ReservationWizard; +import org.rapla.plugin.RaplaExtensionPoints; + +public class ReservationAction extends RaplaObjectAction{ + ReservationWizard m_wizard; + public final static int EXCHANGE_ALLOCATABLE = 20; + public final static int NEW_WIZARD = 800; + public ReservationAction(RaplaContext sm,Component parent,Point p) throws RaplaException { + super(sm,parent,p); + raplaType = Reservation.TYPE; + } + + public ReservationAction setExchangeAllocatables(Object obj) { + this.type = EXCHANGE_ALLOCATABLE; + putValue(NAME, getString("exchange_allocatables")); + putValue(SMALL_ICON, getIcon("icon.edit")); + changeObject( obj ); + return this; + } + + public ReservationAction setNew(ReservationWizard wizard) { + super.setNew( Reservation.TYPE); + m_wizard = wizard; + if (m_wizard == null) { + m_wizard = (ReservationWizard) getService( RaplaExtensionPoints.RESERVATION_WIZARD_EXTENSION ); + } + if (m_wizard != null) + putValue(NAME, m_wizard.toString()); + return this; + } + + protected void edit() throws RaplaException { + getReservationController().edit( (Reservation) object ); + } + + + protected boolean canModifiy(Object object) { + if (super.canModify( object) ) { + return true; + } + if ( object instanceof Reservation ) { + return getQuery().canExchangeAllocatables( (Reservation) object) ; + } + return false; + } + + public DynamicType guessType() throws RaplaException { + DynamicType type = super.guessType(); + if ( type.getAnnotation( DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE).equals( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION)) { + return type; + } + return getQuery().getDynamicTypes(DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION)[0]; + } + + + public void changeObject(Object object) { + super.changeObject(object); + if (type == NEW) { + setEnabled( m_wizard != null); + } + + } + + protected void newEntity() throws RaplaException { + m_wizard.start(parent, (CalendarModel)getService( CalendarModel.ROLE), guessType()); + } + + +} diff --git a/src/org/rapla/gui/internal/action/RestartRaplaAction.java b/src/org/rapla/gui/internal/action/RestartRaplaAction.java new file mode 100644 index 0000000..78d06ec --- /dev/null +++ b/src/org/rapla/gui/internal/action/RestartRaplaAction.java @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import org.rapla.client.ClientService; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; + + +public class RestartRaplaAction extends RaplaAction{ + public RestartRaplaAction(RaplaContext sm) throws RaplaException { + super(sm); + putValue(NAME,getString("restart_client")); + putValue(SMALL_ICON,getIcon("icon.restart")); + } + + public void actionPerformed(ActionEvent arg0) { + ((ClientService)getService(ClientService.ROLE)).restart(); + } + + +} diff --git a/src/org/rapla/gui/internal/action/RestartServerAction.java b/src/org/rapla/gui/internal/action/RestartServerAction.java new file mode 100644 index 0000000..9c54673 --- /dev/null +++ b/src/org/rapla/gui/internal/action/RestartServerAction.java @@ -0,0 +1,48 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import javax.swing.SwingUtilities; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.server.RestartServer; + + +public class RestartServerAction extends RaplaAction { + /** + * @param sm + * @throws RaplaException + */ + public RestartServerAction(RaplaContext sm) throws RaplaException { + super(sm); + putValue(NAME,getString("restart_server")); + putValue(SMALL_ICON,getIcon("icon.restart")); + } + + public void actionPerformed(ActionEvent arg0) { + SwingUtilities.invokeLater( new Runnable() { + public void run() { + try { + ((RestartServer)getService(RestartServer.class.getName())).restartServer(); + } catch (RaplaException ex) { + getLogger().error("Error restarting ", ex); + } + } + }); + } + + +} diff --git a/src/org/rapla/gui/internal/action/ShowConflictsAction.java b/src/org/rapla/gui/internal/action/ShowConflictsAction.java new file mode 100644 index 0000000..a1621c6 --- /dev/null +++ b/src/org/rapla/gui/internal/action/ShowConflictsAction.java @@ -0,0 +1,59 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import javax.swing.JMenuItem; + +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; + +public class ShowConflictsAction extends RaplaAction { + + public static final String CONFIG_ENTRY = "org.rapla.showConflicts"; + + public ShowConflictsAction(RaplaContext sm) throws RaplaException { + super( sm ); + this.setEnabled( true); + putValue(NAME,getString("show_conflicts")); + //putValue(SMALL_ICON,getIcon("icon.unchecked")); + } + + public void actionPerformed(ActionEvent evt) { + + JMenuItem menu = (JMenuItem)evt.getSource(); + if(menu.isSelected()) { + menu.setSelected(false); + javax.swing.ToolTipManager.sharedInstance().setEnabled(false); + menu.setIcon(getIcon("icon.unchecked")); + } + else { + menu.setSelected(true); + javax.swing.ToolTipManager.sharedInstance().setEnabled(true); + menu.setIcon(getIcon("icon.checked")); + } + + if ( isModifyPreferencesAllowed()) + { + try { + Preferences prefs = this.newEditablePreferences(); + prefs.putEntry( CONFIG_ENTRY, ""+ menu.isSelected()); + getModification().store( prefs); + } catch (Exception ex) { + showException( ex, null ); + } + } + } +} diff --git a/src/org/rapla/gui/internal/action/ShowHolidaysAction.java b/src/org/rapla/gui/internal/action/ShowHolidaysAction.java new file mode 100644 index 0000000..485d3a7 --- /dev/null +++ b/src/org/rapla/gui/internal/action/ShowHolidaysAction.java @@ -0,0 +1,59 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import javax.swing.JMenuItem; + +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; + +public class ShowHolidaysAction extends RaplaAction { + + public static final String CONFIG_ENTRY = "org.rapla.showHolidays"; + + public ShowHolidaysAction(RaplaContext sm) throws RaplaException { + super( sm ); + this.setEnabled( true); + putValue(NAME,getString("show_holidays")); + //putValue(SMALL_ICON,getIcon("icon.unchecked")); + } + + public void actionPerformed(ActionEvent evt) { + + JMenuItem menu = (JMenuItem)evt.getSource(); + if(menu.isSelected()) { + menu.setSelected(false); + javax.swing.ToolTipManager.sharedInstance().setEnabled(false); + menu.setIcon(getIcon("icon.unchecked")); + } + else { + menu.setSelected(true); + javax.swing.ToolTipManager.sharedInstance().setEnabled(true); + menu.setIcon(getIcon("icon.checked")); + } + + if ( isModifyPreferencesAllowed()) + { + try { + Preferences prefs = this.newEditablePreferences(); + prefs.putEntry( CONFIG_ENTRY, ""+ menu.isSelected()); + getModification().store( prefs); + } catch (Exception ex) { + showException( ex, null ); + } + } + } +} diff --git a/src/org/rapla/gui/internal/action/ToolTipAction.java b/src/org/rapla/gui/internal/action/ToolTipAction.java new file mode 100644 index 0000000..bcc34e7 --- /dev/null +++ b/src/org/rapla/gui/internal/action/ToolTipAction.java @@ -0,0 +1,59 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action; +import java.awt.event.ActionEvent; + +import javax.swing.JMenuItem; + +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; + +public class ToolTipAction extends RaplaAction { + + public static final String CONFIG_ENTRY = "org.rapla.showTooltips"; + + public ToolTipAction(RaplaContext sm) throws RaplaException { + super( sm ); + this.setEnabled( true); + putValue(NAME,getString("show_tips")); + //putValue(SMALL_ICON,getIcon("icon.unchecked")); + } + + public void actionPerformed(ActionEvent evt) { + + JMenuItem toolTip = (JMenuItem)evt.getSource(); + if(toolTip.isSelected()) { + toolTip.setSelected(false); + javax.swing.ToolTipManager.sharedInstance().setEnabled(false); + toolTip.setIcon(getIcon("icon.unchecked")); + } + else { + toolTip.setSelected(true); + javax.swing.ToolTipManager.sharedInstance().setEnabled(true); + toolTip.setIcon(getIcon("icon.checked")); + } + + if ( isModifyPreferencesAllowed()) + { + try { + Preferences prefs = this.newEditablePreferences(); + prefs.putEntry( CONFIG_ENTRY, ""+ toolTip.isSelected()); + getModification().store( prefs); + } catch (Exception ex) { + showException( ex, null ); + } + } + } +} diff --git a/src/org/rapla/gui/internal/action/package.html b/src/org/rapla/gui/internal/action/package.html new file mode 100644 index 0000000..d78d505 --- /dev/null +++ b/src/org/rapla/gui/internal/action/package.html @@ -0,0 +1,6 @@ + +Actions can be reused with menus, popups or buttons. + + + + diff --git a/src/org/rapla/gui/internal/action/user/PasswordChangeAction.java b/src/org/rapla/gui/internal/action/user/PasswordChangeAction.java new file mode 100644 index 0000000..1bcec21 --- /dev/null +++ b/src/org/rapla/gui/internal/action/user/PasswordChangeAction.java @@ -0,0 +1,107 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action.user; +import java.awt.Component; +import java.awt.Point; +import java.awt.event.ActionEvent; + +import javax.swing.AbstractAction; + +import org.rapla.components.util.Tools; +import org.rapla.entities.User; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.toolkit.DialogUI; + + +public class PasswordChangeAction extends RaplaAction { + + Object object; + Component parent; + + public PasswordChangeAction(RaplaContext sm,Component parent,Point point) throws RaplaException { + super( sm); + this.parent = parent; + putValue(NAME, getI18n().format("change.format",getString("password"))); + } + + + public void changeObject(Object object) { + this.object = object; + update(); + } + + private void update() { + User user = null; + try { + user = getUser(); + setEnabled(object != null && (isAdmin() || user.equals(object))); + } catch (RaplaException ex) { + setEnabled(false); + return; + } + + } + + public void actionPerformed(ActionEvent evt) { + try { + if (object == null) + return; + changePassword((User) object, !getUser().isAdmin()); + } catch (RaplaException ex) { + showException(ex, this.parent); + } + } + + public void changePassword(User user,boolean showOld) throws RaplaException{ + new PasswordChangeActionA(user,showOld); + } + + class PasswordChangeActionA extends AbstractAction { + private static final long serialVersionUID = 1L; + PasswordChangeUI ui; + DialogUI dlg; + User user; + boolean showOld; + + PasswordChangeActionA(User user,boolean showOld) throws RaplaException{ + this.user = user; + this.showOld = showOld; + putValue(NAME, getString("change")); + ui = new PasswordChangeUI(getContext(),showOld); + dlg = DialogUI.create(getContext(),parent,true,ui.getComponent(),new String[] {getString("change"),getString("cancel")}); + dlg.setDefault(0); + dlg.setTitle(getI18n().format("change.format",getString("password"))); + dlg.getButton(0).setAction(this); + dlg.getButton(1).setIcon(getIcon("icon.cancel")); + dlg.start(); + } + + public void actionPerformed(ActionEvent evt) { + try { + char[] oldPassword = showOld ? ui.getOldPassword() : new char[0]; + char[] p1= ui.getNewPassword(); + char[] p2= ui.getPasswordVerification(); + if (!Tools.match(p1,p2)) + throw new RaplaException(getString("error.passwords_dont_match")); + getUserModule().changePassword(user , oldPassword, p1); + dlg.close(); + } catch (RaplaException ex) { + showException(ex,dlg); + } + } + } + + +} diff --git a/src/org/rapla/gui/internal/action/user/PasswordChangeUI.java b/src/org/rapla/gui/internal/action/user/PasswordChangeUI.java new file mode 100644 index 0000000..9bd037c --- /dev/null +++ b/src/org/rapla/gui/internal/action/user/PasswordChangeUI.java @@ -0,0 +1,93 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action.user; + +import java.awt.GridLayout; + +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JPasswordField; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.RaplaWidget; + + +public class PasswordChangeUI extends RaplaGUIComponent + implements + RaplaWidget +{ + JPanel panel = new JPanel(); + GridLayout gridLayout1 = new GridLayout(); + // The Controller for this Dialog + + JLabel label1 = new JLabel(); + JLabel label2 = new JLabel(); + JLabel label3 = new JLabel(); + + JPasswordField tf1 = new JPasswordField(10); + JPasswordField tf2 = new JPasswordField(10); + JPasswordField tf3 = new JPasswordField(10); + + public PasswordChangeUI(RaplaContext sm) throws RaplaException{ + this(sm,true); + } + + public PasswordChangeUI(RaplaContext sm,boolean askForOldPassword) throws RaplaException{ + super( sm); + panel.setLayout(gridLayout1); + gridLayout1.setRows(askForOldPassword ? 3 : 2); + gridLayout1.setColumns(2); + gridLayout1.setHgap(10); + gridLayout1.setVgap(10); + if (askForOldPassword) { + panel.add(label1); + panel.add(tf1); + } + + panel.add(label2); + panel.add(tf2); + panel.add(label3); + panel.add(tf3); + label1.setText(getString("old_password") + ":"); + label2.setText(getString("new_password") + ":"); + label3.setText(getString("password_verification") + ":"); + } + + public JComponent getComponent() { + return panel; + } + + public char[] getOldPassword() { + return tf1.getPassword(); + } + + public char[] getNewPassword() { + return tf2.getPassword(); + } + + public char[] getPasswordVerification() { + return tf3.getPassword(); + } +} + + + + + + + + + diff --git a/src/org/rapla/gui/internal/action/user/UserAction.java b/src/org/rapla/gui/internal/action/user/UserAction.java new file mode 100644 index 0000000..4de700c --- /dev/null +++ b/src/org/rapla/gui/internal/action/user/UserAction.java @@ -0,0 +1,111 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.action.user; +import java.awt.Component; +import java.awt.Point; +import java.awt.event.ActionEvent; + +import org.rapla.client.ClientService; +import org.rapla.entities.User; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.EditComponent; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.internal.edit.EditDialog; + + +public class UserAction extends RaplaAction { + Object object; + Component parent; + public final int NEW = 1; + public final int SWITCH_TO_USER = 3; + int type = NEW; + + public UserAction(RaplaContext sm,Component parent,Point point) throws RaplaException { + super( sm); + this.parent = parent; + + } + + public UserAction setNew() { + type = NEW; + putValue(NAME, getString("user")); + putValue(SMALL_ICON, getIcon("icon.new")); + update(); + return this; + } + + public UserAction setSwitchToUser() { + type = SWITCH_TO_USER; + if (getUserModule().canSwitchBack()) { + putValue(NAME, getString("switch_back")); + } else { + putValue(NAME, getString("switch_to")); + } + return this; + } + + public void changeObject(Object object) { + this.object = object; + update(); + } + + private void update() { + User user = null; + try { + user = getUser(); + if (type == NEW) { + setEnabled(isAdmin()); + } else if (type == SWITCH_TO_USER) { + setEnabled(getUserModule().canSwitchBack() || + (object != null && isAdmin() && !user.equals(object ))); + } + } catch (RaplaException ex) { + setEnabled(false); + return; + } + + } + + public void actionPerformed(ActionEvent evt) { + try { + if (type == SWITCH_TO_USER) { + if (getUserModule().canSwitchBack()) { + getUserModule().switchTo(null); + ((ClientService)getService( ClientService.ROLE)).restartGUI(); + putValue(NAME, getString("switch_to")); + } else if ( object != null ){ + getUserModule().switchTo((User) object); + ((ClientService)getService( ClientService.ROLE)).restartGUI(); + putValue(NAME, getString("switch_back")); + } + } else if (type == NEW) { + User newUser = (User) getModification().newUser(); + EditComponent ui = getEditController().createUI( newUser); + EditDialog gui = new EditDialog(getContext(),ui); + if (gui.start( newUser ,getString("user"), parent) == 0 + && getUserModule().canChangePassword() ) + changePassword(newUser,false); + object = newUser; + } + } catch (RaplaException ex) { + showException(ex, this.parent); + } + } + + public void changePassword(User user,boolean showOld) throws RaplaException{ + new PasswordChangeAction(getContext(),parent, null).changePassword( user, showOld); + } + + +} diff --git a/src/org/rapla/gui/internal/common/CalendarAction.java b/src/org/rapla/gui/internal/common/CalendarAction.java new file mode 100644 index 0000000..8a5fd34 --- /dev/null +++ b/src/org/rapla/gui/internal/common/CalendarAction.java @@ -0,0 +1,83 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.common; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.util.Date; +import java.util.List; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.toolkit.DisposingTool; +import org.rapla.gui.toolkit.RaplaFrame; + + +public class CalendarAction extends RaplaAction { + CalendarSelectionModel model; + List objects; + Component parent; + Date start; + + public CalendarAction(RaplaContext sm,Component parent,CalendarModel selectionModel) throws RaplaException { + super( sm); + this.model = (CalendarSelectionModel)selectionModel.clone(); + this.parent = parent; + putValue(NAME,getString("calendar")); + putValue(SMALL_ICON,getIcon("icon.calendar")); + } + + + public void changeObjects(List objects) { + this.objects = objects; + + } + + public void setStart(Date start) { + this.start = start; + } + + public void actionPerformed(ActionEvent evt) { + try { + RaplaFrame frame = new RaplaFrame(getContext()); + Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + frame.setSize(new Dimension( + Math.min(dimension.width,700) + ,Math.min(dimension.height-10,630) + ) + ); + if (start != null) + model.setSelectedDate(start); + if (objects != null && objects.size() > 0) + model.setSelectedObjects( objects ); + + if ( model.getViewId( ).equals("table")) { + model.setViewId("week"); + } + frame.setTitle("Rapla " + getString("calendar")); + + MultiCalendarView cal = new MultiCalendarView(getContext(),model, false ); + frame.setContentPane(cal.getComponent()); + frame.addWindowListener(new DisposingTool(cal)); + boolean packFrame = false; + frame.place( true, packFrame ); + frame.setVisible(true); + cal.getSelectedCalendar().scrollToStart(); + } catch (Exception ex) { + showException(ex, parent); + } + } +} + diff --git a/src/org/rapla/gui/internal/common/CalendarModelImpl.java b/src/org/rapla/gui/internal/common/CalendarModelImpl.java new file mode 100644 index 0000000..15f3bbe --- /dev/null +++ b/src/org/rapla/gui/internal/common/CalendarModelImpl.java @@ -0,0 +1,841 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.common; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.DateTools; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.Named; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentBlock; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.Conflict; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.plugin.abstractcalendar.AbstractHTMLCalendarPage; +import org.rapla.plugin.autoexport.AutoExportPlugin; +import org.rapla.plugin.export2ical.Export2iCalPlugin; +import org.rapla.plugin.weekview.WeekViewFactory; + +public class CalendarModelImpl implements CalendarSelectionModel +{ + + Date startDate; + Date endDate; + Date selectedDate; + List selectedObjects = new ArrayList(); + String title; + int columnSize = 100; + ClientFacade m_facade; + String selectedView; + I18nBundle i18n; + RaplaContext context; + RaplaLocale raplaLocale; + User user; + Map optionMap = new HashMap(); + + boolean defaultEventTypes = true; + boolean defaultResourceTypes = true; + + Map reservationFilter = new LinkedHashMap(); + Map allocatableFilter = new LinkedHashMap(); + + public CalendarModelImpl(RaplaContext sm, User user) throws RaplaException { + this.context = sm; + this.raplaLocale = (RaplaLocale) sm.lookup(RaplaLocale.ROLE); + i18n = (I18nBundle)sm.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + m_facade = (ClientFacade) sm.lookup(ClientFacade.ROLE); + if ( m_facade.isSessionActive()) { + user = m_facade.getUser(); + } + setSelectedDate( m_facade.today()); + DynamicType[] types = m_facade.getDynamicTypes( DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION); + if ( types.length == 0 ) { + types = m_facade.getDynamicTypes( DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION); + } + setSelectedObjects( Collections.singletonList( types[0]) ); + setViewId( WeekViewFactory.WEEK_VIEW); + this.user = user; + if ( user != null && !user.isAdmin()) { + selectUser( user ); + } + optionMap.put( AbstractHTMLCalendarPage.SAVE_SELECTED_DATE, "false"); + resetExports(); + } + + public void resetExports() + { + setTitle(null); + setOption( AbstractHTMLCalendarPage.SHOW_NAVIGATION_ENTRY, "true"); + setOption(AutoExportPlugin.HTML_EXPORT, "false"); + setOption(Export2iCalPlugin.ICAL_EXPORT, "false"); + } + + + private boolean setConfiguration(CalendarModelConfiguration config, final Map alternativOptions) throws RaplaException { + selectedObjects = new ArrayList(); + if ( config == null) + { + defaultEventTypes = true; + defaultResourceTypes = true; + allocatableFilter.clear(); + reservationFilter.clear(); + return true; + } + else + { + defaultEventTypes = config.isDefaultEventTypes(); + defaultResourceTypes = config.isDefaultResourceTypes(); + } + boolean couldResolveAllEntities = true; + + // get filter + title = config.getTitle(); + selectedView = config.getView(); + //selectedObjects + optionMap = new HashMap(); + if ( config.getOptionMap() != null) + { + optionMap.putAll( config.getOptionMap()); + } + if (alternativOptions != null ) + { + optionMap.putAll( alternativOptions); + } + ClassificationFilter[] filter = config.getFilter(); + final String saveDate = (String)optionMap.get( AbstractHTMLCalendarPage.SAVE_SELECTED_DATE); + if ( config.getSelectedDate() != null && (saveDate == null || saveDate.equals("true"))) { + setSelectedDate( config.getSelectedDate() ); + } + else + { + setSelectedDate( m_facade.today()); + } + if ( config.getStartDate() != null) { + setStartDate( config.getStartDate() ); + } + if ( config.getEndDate() != null) { + setEndDate( config.getEndDate() ); + } + selectedObjects.addAll( config.getSelected()); + for ( ClassificationFilter f:filter) + { + final DynamicType type = f.getType(); + final String annotation = type.getAnnotation(DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE); + boolean eventType = annotation != null &&annotation.equals( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + Map map = eventType ? reservationFilter : allocatableFilter; + map.put(type, f); + } + + return couldResolveAllEntities; + } + + public User getUser() { + return user; + } + + public CalendarModelConfiguration createConfiguration() throws RaplaException { + ClassificationFilter[] allocatableFilter = getAllocatableFilter(); + ClassificationFilter[] eventFilter = getReservationFilter(); + return createConfiguration(allocatableFilter, eventFilter); + } + + public CalendarModelConfiguration createConfiguration(ClassificationFilter[] allocatableFilter, ClassificationFilter[] eventFilter) throws RaplaException { + String viewName = selectedView; + for (Iterator it = selectedObjects.iterator();it.hasNext();) { + if ( it.next() instanceof Conflict) { + throw new RaplaException("Storing the conflict view is not possible with Rapla."); + } + } + + Set selected = new HashSet( selectedObjects); + final Date selectedDate = getSelectedDate(); + final Date startDate = getStartDate(); + final Date endDate = getEndDate(); + return m_facade.newRaplaCalendarModel( m_facade.newRaplaMap(selected), allocatableFilter,eventFilter, title, startDate, endDate, selectedDate, viewName, m_facade.newRaplaMap(optionMap)); + } + + public void setReservationFilter(ClassificationFilter[] array) { + reservationFilter.clear(); + try { + defaultEventTypes = createConfiguration(null,array).isDefaultEventTypes(); + } catch (RaplaException e) { + // DO Not set the types + } + for (ClassificationFilter entry: array) + { + final DynamicType type = entry.getType(); + reservationFilter.put( type, entry); + } + } + + public void setAllocatableFilter(ClassificationFilter[] array) { + allocatableFilter.clear(); + try { + defaultResourceTypes = createConfiguration(array,null).isDefaultResourceTypes(); + } catch (RaplaException e) { + // DO Not set the types + } + for (ClassificationFilter entry: array) + { + final DynamicType type = entry.getType(); + allocatableFilter.put( type, entry); + } + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getSelectedDate() + */ + public Date getSelectedDate() { + return selectedDate; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#setSelectedDate(java.util.Date) + */ + public void setSelectedDate(Date date) { + if ( date == null) + throw new IllegalStateException("Date can't be null"); + this.selectedDate = date; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getStartDate() + */ + public Date getStartDate() { + return startDate; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#setStartDate(java.util.Date) + */ + public void setStartDate(Date date) { + this.startDate = date; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getEndDate() + */ + public Date getEndDate() { + return endDate; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#setEndDate(java.util.Date) + */ + public void setEndDate(Date date) { + this.endDate = date; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getTitle() + */ + public String getTitle() { + return title; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#setTitle(java.lang.String) + */ + public void setTitle(String title) { + this.title = title; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#setView(java.lang.String) + */ + public void setViewId(String view) { + this.selectedView = view; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getView() + */ + public String getViewId() { + return this.selectedView; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getNonEmptyTitle() + */ + public String getNonEmptyTitle() { + if (getTitle() != null && getTitle().trim().length()>0) + return getTitle(); + + + String types = ""; + /* + String dateString = getRaplaLocale().formatDate(getSelectedDate()); + if ( isListingAllocatables()) { + try { + Collection list = getSelectedObjectsAndChildren(); + if (list.size() == 1) { + Object obj = list.iterator().next(); + if (!( obj instanceof DynamicType)) + { + types = getI18n().format("allocation_view",getName( obj ),dateString); + } + } + + } catch (RaplaException ex) { + } + if ( types == null ) + types = getI18n().format("allocation_view", getI18n().getString("resources_persons")); + } else if ( isListingReservations()) { + types = getI18n().getString("reservations"); + } else { + types = "unknown"; + } + */ + + return types; + } + + public String getName(Object object) { + if (object == null) + return ""; + if (object instanceof Named) { + String name = ((Named) object).getName(getI18n().getLocale()); + return (name != null) ? name : ""; + } + return object.toString(); + } + + public int getSize() { + return columnSize; + } + + public void setColumnSize(int columnSize) { + this.columnSize = columnSize; + } + + + private Collection getFilteredAllocatables() throws RaplaException { + List list = new ArrayList(); + Allocatable[] all = m_facade.getAllocatables(); + for (int i=0;i filter ; + if ( isDefaultEventTypes()) + { + filter = new ArrayList(); + for (DynamicType type :m_facade.getDynamicTypes( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION)) + { + filter.add( type.newClassificationFilter()); + } + } + else + { + filter = reservationFilter.values(); + } + return filter.toArray(ClassificationFilter.CLASSIFICATIONFILTER_ARRAY); + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getAllocatableFilter() + */ + public ClassificationFilter[] getAllocatableFilter() throws RaplaException { + Collection filter ; + if ( isDefaultResourceTypes()) + { + filter = new ArrayList(); + for (DynamicType type :m_facade.getDynamicTypes( DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION)) + { + filter.add( type.newClassificationFilter()); + } + for (DynamicType type :m_facade.getDynamicTypes( DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION)) + { + filter.add( type.newClassificationFilter()); + } + + } + else + { + filter = allocatableFilter.values(); + } + return filter.toArray(ClassificationFilter.CLASSIFICATIONFILTER_ARRAY); + } + + public Object clone() { + CalendarModelImpl clone; + try + { + clone = (CalendarModelImpl )super.clone(); + } + catch ( CloneNotSupportedException e ) + { + throw new IllegalStateException( e.getMessage() ); + } + return clone; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getReservations(java.util.Date, java.util.Date) + */ + public Reservation[] getReservations() throws RaplaException { + return getReservations( getStartDate(), getEndDate() ); + } + + public Reservation[] getReservations(Date startDate, Date endDate) throws RaplaException { + return (Reservation[]) getReservationsAsList( startDate, endDate ).toArray( Reservation.RESERVATION_ARRAY); + } + + private boolean hasAllocatedOne( Reservation reservation,Allocatable[] allocatables ) { + for (int j=0;j 0) { + return selectedReservations; + } + ClassificationFilter[] reservationFilter2 = getReservationFilter(); + if ( isDefaultEventTypes()) + { + reservationFilter2 = null; + } + Reservation[] reservations =m_facade.getReservations((User) null, start, end,reservationFilter2 ); + return Arrays.asList( reservations ); + + } + + private List getReservationsAsList(Date start, Date end) throws RaplaException { + + List reservations = new ArrayList(getRestrictedReservations( start, end)); +// Set reservationTypes = getSelectedTypes( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); +// if ( reservationTypes.size() > 0 ) { +// restrictReservationTypes( reservations, reservationTypes); +// } + Allocatable[] allocatables = getSelectedAllocatables(); + if ( allocatables.length> 0) { + restrict( reservations, allocatables ); + } + User[] users = getSelectedUsers(); + if ( users.length> 0 || isOnlyCurrentUserSelected()) { + restrict( reservations, users ); + } + Conflict[] conflicts = getSelectedConflicts(); + if ( conflicts.length > 0) { + restrict( reservations, conflicts ); + } + return reservations; + } + + /* (non-Javadoc) + * @see org.rapla.calendarview.CalendarModel#getAllocatables() + */ + public Allocatable[] getSelectedAllocatables() throws RaplaException { + Collection result = new HashSet(); + Iterator it = getSelectedObjectsAndChildren().iterator(); + while (it.hasNext()) { + RaplaObject object = (RaplaObject) it.next(); + if ( object.getRaplaType().equals( Allocatable.TYPE )) { + result.add( object ); + } + if ( object.getRaplaType().equals( Conflict.TYPE )) { + result.add( ((Conflict)object).getAllocatable() ); + } + } + return (Allocatable[]) result.toArray(Allocatable.ALLOCATABLE_ARRAY); + } + + public User[] getSelectedUsers() { + User currentUser = getUser(); + if ( currentUser != null && !m_facade.canReadReservationsFromOthers( currentUser)) + { + return new User[] {currentUser}; + } + return (User[]) getSelected(User.TYPE).toArray(User.USER_ARRAY); + } + + public Conflict[] getSelectedConflicts() throws RaplaException { + return (Conflict[]) getSelected(Conflict.TYPE).toArray(Conflict.CONFLICT_ARRAY); + } + + public Set getSelectedTypes(String classificationType) throws RaplaException { + Set result = new HashSet(); + Iterator it = getSelectedObjectsAndChildren().iterator(); + while (it.hasNext()) { + RaplaObject object = (RaplaObject) it.next(); + if ( object.getRaplaType().equals( DynamicType.TYPE )) { + if (classificationType == null || (( DynamicType) object).getAnnotation( DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE).equals( classificationType)) + { + result.add( object ); + } + } + } + return result; + } + + public Set getSelected(RaplaType type) { + Set result = new HashSet(); + Iterator it = getSelectedObjects().iterator(); + while (it.hasNext()) { + RaplaObject object = (RaplaObject) it.next(); + if ( object.getRaplaType().equals( type )) { + result.add( object ); + } + } + return result; + } + + public Date[] getConflictDates() throws RaplaException { + ArrayList list = new ArrayList(); + Conflict[] conflicts = getSelectedConflicts(); + for ( int i=0;i listA = new ArrayList(); + a1.createBlocks(maxStart, minEnd, listA ); + List listB = new ArrayList(); + a2.createBlocks( maxStart, minEnd, listB ); + for ( int i=0, j=0;i s2) + j++; + else + i++; + } + return null; + } + + protected I18nBundle getI18n() { + return i18n; + } + + protected RaplaLocale getRaplaLocale() { + return raplaLocale; + } + + public boolean isOnlyCurrentUserSelected() { + User[] users = getSelectedUsers(); + User currentUser = getUser(); + + + + return ( users.length == 1 && users[0].equals( currentUser)); + } + + public void selectUser(User user) { + for (Iterator it = selectedObjects.iterator();it.hasNext();) { + RaplaObject obj =(RaplaObject) it.next(); + if (obj.getRaplaType().equals( User.TYPE) ) { + it.remove(); + } + } + if ( user != null) + { + selectedObjects.add( user ); + } + } + + public Object getOption( String name ) + { + return optionMap.get( name ); + } + + public void setOption( String name, RaplaObject object ) + { + optionMap.put( name, object); + } + + public void setOption( String name, String string ) + { + optionMap.put( name, string); + } + + public boolean isDefaultEventTypes() + { + return defaultEventTypes; + } + + public boolean isDefaultResourceTypes() + { + return defaultResourceTypes; + } + + public void save(final String filename) throws RaplaException, + EntityNotFoundException { + final CalendarModelConfiguration conf = createConfiguration(); + + Preferences clone = (Preferences) m_facade.edit(m_facade.getPreferences(user)); + + if ( filename.equals(i18n.getString("default"))) + { + clone.putEntry( CalendarModelConfiguration.CONFIG_ENTRY, conf); + } + else + { + Map exportMap= ((RaplaMap)clone.getEntry(AutoExportPlugin.PLUGIN_ENTRY)); + Map newMap; + if ( exportMap == null) + newMap = new TreeMap(); + else + newMap = new TreeMap( exportMap); + newMap.put(filename, conf); + clone.putEntry( AutoExportPlugin.PLUGIN_ENTRY, m_facade.newRaplaMap( newMap )); + } + m_facade.store(clone); + } + + public void load(final String filename) + throws RaplaException, EntityNotFoundException { + final CalendarModelConfiguration modelConfig; + final Preferences preferences = m_facade.getPreferences(user); + final boolean isDefault = filename == null || filename.equals(i18n.getString("default")); + if ( isDefault ) + { + modelConfig = (CalendarModelConfiguration)preferences.getEntry(CalendarModelConfiguration.CONFIG_ENTRY); + + } + else + { + Map exportMap= ((RaplaMap)preferences.getEntry(AutoExportPlugin.PLUGIN_ENTRY)); + modelConfig = (CalendarModelConfiguration)exportMap.get(filename); + + } + if ( modelConfig == null && filename != null && !isDefault) + { + throw new EntityNotFoundException("Saved calendar with name '" + filename + "' not found."); + } + else + { + Map alternativeOptions = new HashMap(); + if (modelConfig != null && modelConfig.getOptionMap() != null) + { + // All old default calendars have no selected date + if (isDefault && (modelConfig.getOptionMap().get( AbstractHTMLCalendarPage.SAVE_SELECTED_DATE) == null)) + { + alternativeOptions.put(AbstractHTMLCalendarPage.SAVE_SELECTED_DATE , "false"); + } + // All old calendars are exported + if ( !isDefault && modelConfig.getOptionMap().get(AutoExportPlugin.HTML_EXPORT) == null) + { + alternativeOptions.put(AutoExportPlugin.HTML_EXPORT,"true"); + } + } + setConfiguration(modelConfig, alternativeOptions); + } + } + + @Override + public boolean isHolidaySelected() { + User[] users = getSelectedUsers(); + User currentUser = getUser(); + + + + return ( users.length == 1 && users[0].equals( currentUser)); + } +} + + diff --git a/src/org/rapla/gui/internal/common/CalendarSelectionModel.java b/src/org/rapla/gui/internal/common/CalendarSelectionModel.java new file mode 100644 index 0000000..c90f61f --- /dev/null +++ b/src/org/rapla/gui/internal/common/CalendarSelectionModel.java @@ -0,0 +1,44 @@ +package org.rapla.gui.internal.common; +import java.util.Collection; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.User; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; + +public interface CalendarSelectionModel extends CalendarModel, ClassifiableFilter{ + public String ROLE = CalendarSelectionModel.class.getName(); + RaplaConfiguration ALLOCATABLES_ROOT = new RaplaConfiguration("rootnode", "allocatables"); + + String getTitle(); + + void setTitle(String title); + + void setColumnSize(int columnSize); + + void setViewId(String viewId); + + String getViewId(); + + void setSelectedObjects(Collection selectedObjects); + + void setOption(String name, RaplaObject object ); + void setOption( String name, String string ); + void selectUser( User user ); + + /** If show only own reservations is selected. Thats if the current user is selected with select User*/ + boolean isOnlyCurrentUserSelected(); + + void setReservationFilter(ClassificationFilter[] array); + + void setAllocatableFilter(ClassificationFilter[] filters); + + public void resetExports(); + public void save(final String filename) throws RaplaException; + public void load(final String filename) throws RaplaException, EntityNotFoundException; + + /** If show Holiday is selected */ + boolean isHolidaySelected(); +} \ No newline at end of file diff --git a/src/org/rapla/gui/internal/common/ClassifiableFilter.java b/src/org/rapla/gui/internal/common/ClassifiableFilter.java new file mode 100644 index 0000000..c87bdf1 --- /dev/null +++ b/src/org/rapla/gui/internal/common/ClassifiableFilter.java @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.common; + +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.framework.RaplaException; + + +public interface ClassifiableFilter +{ + ClassificationFilter[] getReservationFilter() throws RaplaException ; + ClassificationFilter[] getAllocatableFilter() throws RaplaException ; + boolean isDefaultEventTypes(); + boolean isDefaultResourceTypes(); +} + diff --git a/src/org/rapla/gui/internal/common/InternMenus.java b/src/org/rapla/gui/internal/common/InternMenus.java new file mode 100644 index 0000000..18344ce --- /dev/null +++ b/src/org/rapla/gui/internal/common/InternMenus.java @@ -0,0 +1,18 @@ +package org.rapla.gui.internal.common; + +public interface InternMenus +{ + + public static final String FILE_MENU_ROLE = "org.rapla.gui.SystemMenu"; + public static final String EXTRA_MENU_ROLE = "org.rapla.gui.ExtraMenu"; + public static final String VIEW_MENU_ROLE ="org.rapla.gui.ViewMenu"; + public static final String EXPORT_MENU_ROLE ="org.rapla.gui.ExportMenu"; + public static final String ADMIN_MENU_ROLE ="org.rapla.gui.AdminMenu"; + public static final String EDIT_MENU_ROLE = "org.rapla.gui.EditMenu"; + public static final String IMPORT_MENU_ROLE ="org.rapla.gui.ImportMenu"; + public static final String NEW_MENU_ROLE ="org.rapla.gui.NewMenu"; + public static final String MENU_BAR = "org.rapla.gui.MenuBar"; + public static final String CALENDAR_SETTINGS = "org.rapla.gui.CalendarSettings"; + + +} diff --git a/src/org/rapla/gui/internal/common/MultiCalendarView.java b/src/org/rapla/gui/internal/common/MultiCalendarView.java new file mode 100644 index 0000000..1a18e45 --- /dev/null +++ b/src/org/rapla/gui/internal/common/MultiCalendarView.java @@ -0,0 +1,399 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.common; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import javax.swing.BorderFactory; +import javax.swing.ButtonGroup; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.Popup; +import javax.swing.PopupFactory; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.rapla.components.calendar.RaplaArrowButton; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.Tools; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.internal.edit.ClassifiableFilterEdit; +import org.rapla.gui.toolkit.IdentifiableMenuEntry; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.gui.toolkit.RaplaMenuItem; +import org.rapla.gui.toolkit.RaplaWidget; +import org.rapla.plugin.RaplaExtensionPoints; + + +public class MultiCalendarView extends RaplaGUIComponent + implements + RaplaWidget +{ + + private final JPanel page = new JPanel(); + private final JPanel header = new JPanel(); + Map viewMenuItems = new HashMap(); + JComboBox viewChooser; + + // Default view, when no plugin defined + private SwingCalendarView currentView = new SwingCalendarView() { + JLabel noViewDefined = new JLabel("No view defined"); + + public JComponent getDateSelection() + { + return null; + } + + public void scrollToStart() + { + } + + public JComponent getComponent() + { + return noViewDefined; + } + + public void update( ) throws RaplaException + { + } + + }; + + private final CalendarSelectionModel model; + final Map map; + /** renderer for weekdays in month-view */ + boolean editable = true; + boolean listenersEnabled = true; + + public MultiCalendarView(RaplaContext context,CalendarSelectionModel model) throws RaplaException { + this( context, model, true); + } + public MultiCalendarView(RaplaContext context,CalendarSelectionModel model, boolean editable) throws RaplaException { + super( context); + this.editable = editable; + map = getContainer().lookupServicesFor(RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION); + this.model = model; + String[] ids = getIds(); + { + ViewFactory factory = findFactory( model.getViewId()); + if ( factory == null) + { + if ( ids.length != 0 ) { + String firstId = ids[0]; + model.setViewId( firstId ); + factory = findFactory( firstId ); + } + } + } + RaplaMenu view = (RaplaMenu) getContext().lookup( InternMenus.VIEW_MENU_ROLE); + if ( !view.hasId( "views") ) + { + addMenu( model, ids, view ); + } + + addTypeChooser( ids ); + header.setLayout(new BorderLayout()); + header.add( viewChooser, BorderLayout.CENTER); + FilterEdit filter =new FilterEdit(context,model); + final JPanel filterContainer = new JPanel(); + filterContainer.setLayout( new BorderLayout()); + filterContainer.add(filter.getButton(), BorderLayout.WEST); + header.add( filterContainer, BorderLayout.SOUTH); + page.setLayout(new TableLayout( new double[][]{ + {TableLayout.PREFERRED, TableLayout.FILL} + ,{TableLayout.PREFERRED, TableLayout.FILL}})); + page.add( header, "0,0,f,f"); + page.setBackground( Color.white ); + update(); + } + private void addTypeChooser( String[] ids ) + { + viewChooser = new JComboBox( ids); + viewChooser.setVisible( viewChooser.getModel().getSize() > 0); + viewChooser.setSelectedItem( getModel().getViewId() ); + viewChooser.addActionListener( new ActionListener() { + public void actionPerformed(ActionEvent evt) { + if ( !listenersEnabled ) + return; + String viewId = (String) ((JComboBox)evt.getSource()).getSelectedItem(); + try { + selectView( viewId ); + } catch (RaplaException ex) { + showException(ex, page); + } + } + } + ); + viewChooser.setRenderer( new DefaultListCellRenderer() { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent(JList arg0, Object selectedItem, int index, boolean arg3, boolean arg4) { + super.getListCellRendererComponent( arg0, selectedItem, index, arg3, arg4); + if ( selectedItem == null) { + setIcon( null ); + } else { + ViewFactory factory = findFactory( (String)selectedItem); + setText( factory.getName() ); + setIcon( factory.getIcon()); + } + return this; + } + }); + } + + public class FilterEdit extends RaplaGUIComponent + { + protected RaplaArrowButton filterButton; + Popup popup; + ClassifiableFilterEdit ui; + + public FilterEdit(final RaplaContext context,final CalendarSelectionModel model) throws RaplaException + { + super(context); + filterButton = new RaplaArrowButton('v'); + filterButton.setText(getString("filter")); + filterButton.setSize(80,18); + filterButton.addActionListener( new ActionListener() + { + public void actionPerformed(ActionEvent e) { + + if ( popup != null) + { + popup.hide(); + popup= null; + filterButton.setChar('v'); + return; + } + boolean isResourceOnly = false; + try { + if ( ui != null) + { + ui.removeChangeListener( listener); + } + ui = new ClassifiableFilterEdit( context, isResourceOnly); + ui.addChangeListener(listener); + ui.setTypes( getQuery().getDynamicTypes( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION )); + ui.mapFrom(model); + final Point locationOnScreen = filterButton.getLocationOnScreen(); + final int y = locationOnScreen.y + 18; + final int x = locationOnScreen.x; + popup = PopupFactory.getSharedInstance().getPopup( filterButton, ui.getComponent(), x, y); + popup.show(); + filterButton.setChar('^'); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + + }); + + } + + private ChangeListener listener = new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + try { + final ClassificationFilter[] filters = ui.getFilters(); + model.setReservationFilter( filters ); + update(); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + }; + public JComponent getButton() + { + return filterButton; + } + + } + private void addMenu( CalendarSelectionModel model, String[] ids, RaplaMenu view ) + { + RaplaMenu viewMenu = new RaplaMenu("views"); + viewMenu.setText(getString("show_as")); + view.insertBeforeId( viewMenu, "show_tips"); + ButtonGroup group = new ButtonGroup(); + for (int i=0;i 0) { + for ( Iterator it = viewMenuItems.values().iterator();it.hasNext();) + { + RaplaMenuItem item = (RaplaMenuItem) it.next(); + if ( item.isSelected() ) + { + item.setIcon( getIcon("icon.empty")); + } + + } + RaplaMenuItem item = (RaplaMenuItem)viewMenuItems.get( viewId ); + item.setSelected( true ); + item.setIcon( getIcon("icon.radio")); + } + viewChooser.setSelectedItem( viewId ); + } finally { + listenersEnabled = true; + } + } + + private String[] getIds() { + List factoryList = new ArrayList(map.values()); + Collections.sort( factoryList, new Comparator() { + public int compare( Object arg0, Object arg1 ) + { + ViewFactory f1 = (ViewFactory ) arg0; + ViewFactory f2 = (ViewFactory ) arg1; + return f1.getMenuSortKey().compareTo( f2.getMenuSortKey() ); + } + }); + List list = new ArrayList(); + for (Iterator it = factoryList.iterator();it.hasNext();) { + ViewFactory factory = (ViewFactory ) it.next(); + list.add(factory.getViewId()); + } + return (String[] )list.toArray( Tools.EMPTY_STRING_ARRAY); + } + + private CalendarSelectionModel getModel() { + return model; + } + + private final HashMap cache = new HashMap(); + + public void update() throws RaplaException { + try + { + listenersEnabled = false; + if ( currentView!= null ) { + currentView.getComponent().setVisible( false ); + if ( currentView.getDateSelection() != null) + currentView.getDateSelection().setVisible( false ); + } + + final String viewId = model.getViewId(); + ViewFactory factory = findFactory( viewId ); + viewChooser.setSelectedItem( viewId ); + if ( factory == null) { + return; + } + + SwingCalendarView cal = (SwingCalendarView)cache.get( factory.getViewId() ); + if ( cal == null ) { + cal = factory.createSwingView( getContext(), getModel(), editable); + cache.put( factory.getViewId(), cal); + if ( cal.getDateSelection() != null) + page.add( cal.getDateSelection(), "1,0,f,f" ); + page.add( cal.getComponent(), "0,1,1,1,f,f" ); + cal.getComponent().setBorder( BorderFactory.createEtchedBorder()); + page.invalidate(); + } else { + cal.getComponent().setVisible( true ); + if ( cal.getDateSelection() != null) + { + cal.getDateSelection().setVisible( true ); + } + cal.update( ); + } + + currentView = cal; + } + finally + { + listenersEnabled = true; + } + } + + public SwingCalendarView getSelectedCalendar() { + return currentView; + } + + public JComponent getComponent() { + return page; + } + + +} diff --git a/src/org/rapla/gui/internal/common/NamedListCellRenderer.java b/src/org/rapla/gui/internal/common/NamedListCellRenderer.java new file mode 100644 index 0000000..a4a7ae0 --- /dev/null +++ b/src/org/rapla/gui/internal/common/NamedListCellRenderer.java @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.common; + +import java.awt.Component; +import java.util.Locale; +import java.text.MessageFormat; + +import javax.swing.JList; +import javax.swing.DefaultListCellRenderer; + +import org.rapla.entities.Named; + +public class NamedListCellRenderer extends DefaultListCellRenderer { + private static final long serialVersionUID = 1L; + + Locale locale; + MessageFormat format = null; + + public NamedListCellRenderer(Locale locale) { + this.locale = locale; + } + + public NamedListCellRenderer(Locale locale,String formatString) { + this(locale); + this.format = new MessageFormat(formatString); + } + + + public Component getListCellRendererComponent(JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) { + if (value instanceof Named) + value = ((Named) value).getName(locale); + if (format != null) + value = format.format(new Object[] {value}); + return super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus); + } +} diff --git a/src/org/rapla/gui/internal/common/PeriodChooser.java b/src/org/rapla/gui/internal/common/PeriodChooser.java new file mode 100644 index 0000000..ab0157a --- /dev/null +++ b/src/org/rapla/gui/internal/common/PeriodChooser.java @@ -0,0 +1,241 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.common; + +import java.awt.Component; +import java.util.Date; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JComboBox; +import javax.swing.JList; + +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.domain.Period; +import org.rapla.facade.ClientFacade; +import org.rapla.facade.PeriodModel; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class PeriodChooser extends JComboBox + { + private static final long serialVersionUID = 1L; + + Date selectedDate = null; + Period selectedPeriod = null; + + public static int START_ONLY = 1; + public static int START_AND_END = 0; + public static int END_ONLY = -1; + + int visiblePeriods; + I18nBundle i18n; + PeriodModel periodModel; + private boolean listenersEnabled = true; + private boolean isWeekOfPeriodVisible = true; + + public PeriodChooser( RaplaContext sm) throws RaplaException { + this(sm,START_AND_END); + } + + public PeriodChooser(RaplaContext sm,int visiblePeriods) throws RaplaException { + // super(RaplaButton.SMALL); + this.visiblePeriods = visiblePeriods; + i18n = (I18nBundle) sm.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + setPeriodModel(( (ClientFacade) sm.lookup(ClientFacade.ROLE) ).getPeriodModel()); + } + + + public void setPeriodModel(PeriodModel model) { + this.periodModel = model; + if ( periodModel != null ) { + try { + listenersEnabled = false; + this.setModel(new DefaultComboBoxModel(model.getAllPeriods())); + } finally { + listenersEnabled = true; + } + } + this.setRenderer(new PeriodListCellRenderer()); + update(); + } + + + private String formatPeriod(Period period) { + if ( !isWeekOfPeriodVisible) + { + return period.getName(); + } + + int lastWeek = period.getWeeks(); + int week = period.weekOf(selectedDate); + if (week != 1 && week >= lastWeek) { + return i18n.format( + "period.format.end" + ,period.getName() + ); + } else { + return i18n.format( + "period.format.week" + ,String.valueOf(period.weekOf(selectedDate)) + ,period.getName() + ); + } + } + + private String formatPeriodList(Period period) { + if (visiblePeriods == START_ONLY) { + return i18n.format( + "period.format.start" + ,period.getName() + ); + } else if (visiblePeriods == END_ONLY) { + return i18n.format( + "period.format.end" + ,period.getName() + ); + } else { + return period.getName(); + } + } + + public void setDate(Date date, Date endDate) { + try { + listenersEnabled = false; + + if (date != selectedDate) // Compute period only on date change + { + selectedPeriod = getPeriod(date, endDate); + } + + if ( selectedPeriod != null ) + { + selectedDate = date; + setSelectedItem(selectedPeriod); + } + else + { + selectedDate = date; + setSelectedItem(null); + } + repaint(); + revalidate(); + } finally { + listenersEnabled = true; + } + } + + public void setDate(Date date) { + setDate(date, null); + } + + private String getSelectionText() { + Period period = selectedPeriod; + if ( period != null ) { + return formatPeriod(period); + } else { + return i18n.getString("period.not_set"); + } + } + + public void setSelectedPeriod(Period period) { + selectedPeriod = period; // EXCO + listenersEnabled = false; + setSelectedItem(period); + listenersEnabled = true; + if (visiblePeriods == END_ONLY) { + selectedDate = period.getEnd(); + } else { + selectedDate = period.getStart(); + } + } + + + public Period getPeriod() { + return selectedPeriod; // getPeriod(selectedDate); + } + + private Period getPeriod(Date date, Date endDate) { + if (periodModel == null ) + return null; + if ( visiblePeriods == END_ONLY) { + return periodModel.getNearestPeriodForEndDate(date); + } else { + return periodModel.getNearestPeriodForStartDate(date, endDate); + } + } + + public Date getDate() { + return selectedDate; + } + + private void update() { + setVisible(periodModel != null && periodModel.getSize() > 0); + setDate(getDate()); + } + + protected void fireActionEvent() { + if ( !listenersEnabled ) + { + return ; + } + Period period = (Period) getSelectedItem(); + selectedPeriod = period; // EXCO + if (period != null) + { + if (visiblePeriods == END_ONLY) { + selectedDate = period.getEnd(); + } else { + selectedDate = period.getStart(); + } + } + super.fireActionEvent(); + } + + + class PeriodListCellRenderer extends DefaultListCellRenderer { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent( + JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) + { + if (index == -1) { + value = getSelectionText(); + } else { + Period period = (Period) value; + value = formatPeriodList(period); + } + return super.getListCellRendererComponent(list, + value, + index, + isSelected, + cellHasFocus); + } + } + + + public boolean isWeekOfPeriodVisible() + { + return isWeekOfPeriodVisible; + } + + public void setWeekOfPeriodVisible( boolean isWeekOfPeriodVisible ) + { + this.isWeekOfPeriodVisible = isWeekOfPeriodVisible; + } + +} diff --git a/src/org/rapla/gui/internal/common/RaplaClipboard.java b/src/org/rapla/gui/internal/common/RaplaClipboard.java new file mode 100644 index 0000000..b089341 --- /dev/null +++ b/src/org/rapla/gui/internal/common/RaplaClipboard.java @@ -0,0 +1,105 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.common; + +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.ModificationEvent; +import org.rapla.facade.ModificationListener; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; + +public class RaplaClipboard extends RaplaGUIComponent implements ModificationListener +{ + public static final String ROLE = RaplaClipboard.class.getName(); + private Appointment appointment; + private Reservation reservation; + private Allocatable[] restrictedAllocatables; + + public RaplaClipboard( RaplaContext sm ) throws RaplaException + { + super( sm ); + getUpdateModule().addModificationListener( this ); + } + + public void dataChanged( ModificationEvent evt ) throws RaplaException + { + if ( appointment == null ) + return; + if ( evt.isRemoved( reservation) ) + { + clearAppointment(); + } + } + + private void clearAppointment() + { + this.appointment = null; + this.reservation = null; + this.restrictedAllocatables = null; + } + + public void setAppointment( Appointment appointment, Reservation reservation, Allocatable[] restrictedAllocatables ) + { + this.appointment = appointment; + this.reservation = reservation; + this.restrictedAllocatables = restrictedAllocatables; + } + + public Appointment getAppointment() + { + return appointment; + } + + public Reservation getReservation() + { + return reservation; + } + + public Allocatable[] getRestrictedAllocatables() + { + return restrictedAllocatables; + } + +} + +/* + class AllocationData implements Transferable { + public static final DataFlavor allocationFlavor = new DataFlavor(java.util.Map.class, "Rapla Allocation"); + private static DataFlavor[] flavors = new DataFlavor[] {allocationFlavor}; + + Map data; + + AllocationData(Map data) { + this.data = data; + } + + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { + if (isDataFlavorSupported(flavor)) + return data; + else + throw new UnsupportedFlavorException(flavor); + } + + public DataFlavor[] getTransferDataFlavors() { + return flavors; + } + + public boolean isDataFlavorSupported(DataFlavor flavor) { + return flavor.equals(allocationFlavor); + } + + }*/ + diff --git a/src/org/rapla/gui/internal/edit/AbstractEditField.java b/src/org/rapla/gui/internal/edit/AbstractEditField.java new file mode 100644 index 0000000..9ea81fa --- /dev/null +++ b/src/org/rapla/gui/internal/edit/AbstractEditField.java @@ -0,0 +1,149 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; + +import javax.swing.JComponent; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; + +/** Base class for most rapla edit fields. Provides some mapping + functionality such as reflection invocation of getters/setters. + A fieldName "username" will result in a getUsername() and setUsername() + method. +*/ +public abstract class AbstractEditField extends RaplaGUIComponent + implements EditField + +{ + final static int DEFAULT_LENGTH = 30; + String fieldName; + + ArrayList listenerList = new ArrayList(); + + public AbstractEditField(RaplaContext sm) throws RaplaException { + super(sm); + } + + abstract public JComponent getComponent(); + MappingDelegate delegate; + + protected void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + void setDelegate(MappingDelegate delegate) { + this.delegate = delegate; + } + + public String getFieldName() { + return this.fieldName; + } + + public boolean isBlock() { + return false; + } + + public boolean isVariableSized() { + return false; + } + + public String getName() { + if (delegate != null) + return delegate.getName(); + + return getString(fieldName.toLowerCase()); + } + + protected String setMethodName() { + return "set" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1); + } + + protected String getMethodName() { + return "get" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1); + } + + private Method getMethod(String name,Object o,int params) throws RaplaException { + Method[] methods = o.getClass().getMethods(); + for (int i=0;i1 + && key.charAt(0) =='a' + && Character.isDigit(key.charAt(1)) + ) + { + try { + int value = Integer.valueOf(key.substring(1)).intValue(); + if (value >= max) + max = value + 1; + } catch (NumberFormatException ex) { + } + } + } + return "a" + (max); + } + + void removeAttribute() throws RaplaException { + int index = getSelectedIndex(); + Attribute att = dt.getAttributes() [index]; + dt.removeAttribute(att); + updateModel(); + } + + void createAttribute() throws RaplaException { + confirmEdits(); + AttributeType type = AttributeType.STRING; + Attribute att = (Attribute) getModification().newAttribute(type); + att.setKey(createNewKey()); + dt.addAttribute(att); + updateModel(); + listEdit.getList().setSelectedIndex( dt.getAttributes().length -1 ); + } + + public void addChangeListener(ChangeListener listener) { + listenerList.add(listener); + } + + public void removeChangeListener(ChangeListener listener) { + listenerList.remove(listener); + } + + public ChangeListener[] getChangeListeners() { + return (ChangeListener[])listenerList.toArray(new ChangeListener[]{}); + } + + protected void fireContentChanged() { + if (listenerList.size() == 0) + return; + ChangeEvent evt = new ChangeEvent(this); + ChangeListener[] listeners = getChangeListeners(); + for (int i = 0;i 1) + newRows = size.toString(); + + size = (Long) expectedColumns.getNumber(); + String newColumns = null; + if ( size != null && size.longValue() > 1) + newColumns = size.toString(); + final Object defaultValue = defaultSelectText.getValue(); + attribute.setDefaultValue( defaultValue); + attribute.setAnnotation(AttributeAnnotations.KEY_EXPECTED_ROWS , newRows); + attribute.setAnnotation(AttributeAnnotations.KEY_EXPECTED_COLUMNS, newColumns); + } else { + attribute.setAnnotation(AttributeAnnotations.KEY_EXPECTED_ROWS, null); + attribute.setAnnotation(AttributeAnnotations.KEY_EXPECTED_COLUMNS, null); + } + + String selectedTab = tabs[tabSelect.getSelectedIndex()]; + if ( selectedTab != null && !selectedTab.equals(AttributeAnnotations.VALUE_MAIN_VIEW)) { + attribute.setAnnotation(AttributeAnnotations.KEY_EDIT_VIEW, selectedTab); + } else { + attribute.setAnnotation(AttributeAnnotations.KEY_EDIT_VIEW, null); + } + } + + private void update() { + AttributeType type = types[classSelect.getSelectedIndex()]; + boolean categoryVisible = type.equals(AttributeType.CATEGORY); + final boolean textVisible = type.equals(AttributeType.STRING); + final boolean booleanVisible = type.equals(AttributeType.BOOLEAN); + final boolean numberVisible = type.equals(AttributeType.INT); + final boolean dateVisible = type.equals(AttributeType.DATE); + boolean expectedRowsVisible = textVisible; + boolean expectedColumnsVisible = textVisible; + categoryLabel.setVisible( categoryVisible ); + categorySelect.getComponent().setVisible( categoryVisible ); + expectedRowsLabel.setVisible( expectedRowsVisible ); + expectedRows.setVisible( expectedRowsVisible ); + expectedColumnsLabel.setVisible( expectedColumnsVisible ); + expectedColumns.setVisible( expectedColumnsVisible ); + defaultSelectCategory.getComponent().setVisible( categoryVisible); + defaultSelectText.getComponent().setVisible( textVisible); + defaultSelectBoolean.getComponent().setVisible( booleanVisible); + defaultSelectNumber.setVisible( numberVisible); + defaultSelectDate.setVisible( dateVisible); + } + + public void actionPerformed(ActionEvent evt) { + if (mapping) + return; + if ( evt.getSource() == classSelect) { + AttributeType newType = types[classSelect.getSelectedIndex()]; + if (newType.equals(AttributeType.CATEGORY)) { + categorySelect.setValue( rootCategory ); + } + } + fireContentChanged(); + update(); + } + + public void stateChanged(ChangeEvent e) { + if (mapping) + return; + + fireContentChanged(); + } + +} + diff --git a/src/org/rapla/gui/internal/edit/BooleanField.java b/src/org/rapla/gui/internal/edit/BooleanField.java new file mode 100644 index 0000000..1c0108f --- /dev/null +++ b/src/org/rapla/gui/internal/edit/BooleanField.java @@ -0,0 +1,96 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JRadioButton; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class BooleanField extends AbstractEditField implements ActionListener, FocusListener +{ + JPanel panel = new JPanel(); + JRadioButton field1 = new JRadioButton(); + JRadioButton field2 = new JRadioButton(); + + public BooleanField(RaplaContext sm,String fieldName) throws RaplaException { + super( sm); + setFieldName( fieldName ); + field1.setOpaque( false ); + field2.setOpaque( false ); + panel.setOpaque( false ); + panel.setLayout( new BoxLayout(panel,BoxLayout.X_AXIS) ); + panel.add( field1 ); + panel.add( field2 ); + ButtonGroup group = new ButtonGroup(); + group.add( field1 ); + group.add( field2 ); + field2.setSelected( true ); + field1.addActionListener(this); + field2.addActionListener(this); + + field1.setText(getString("yes")); + field2.setText(getString("no")); + field1.addFocusListener(this); + + } + + protected Object getValue() { + return field1.isSelected() ? Boolean.TRUE : Boolean.FALSE; + } + + protected String getMethodName() { + return "is" + Character.toUpperCase(fieldName.charAt(0)) + fieldName.substring(1); + } + + protected void setValue(Object object) { + if (object != null) { + boolean selected = ((Boolean)object).booleanValue(); + field1.setSelected(selected); + field2.setSelected(!selected); + } else { + field1.setSelected(false); + field2.setSelected(true); + } + } + + public void actionPerformed(ActionEvent evt) { + fireContentChanged(); + } + + public JComponent getComponent() { + return panel; + } + + public void focusGained(FocusEvent evt) { + Component focusedComponent = evt.getComponent(); + Component parent = focusedComponent.getParent(); + if(parent instanceof JPanel) { + ((JPanel)parent).scrollRectToVisible(focusedComponent.getBounds(null)); + } + } + + public void focusLost(FocusEvent evt) { + + } +} \ No newline at end of file diff --git a/src/org/rapla/gui/internal/edit/CategoryEditUI.java b/src/org/rapla/gui/internal/edit/CategoryEditUI.java new file mode 100644 index 0000000..7767b8a --- /dev/null +++ b/src/org/rapla/gui/internal/edit/CategoryEditUI.java @@ -0,0 +1,562 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JColorChooser; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTree; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; + +import org.rapla.components.calendar.RaplaArrowButton; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.Tools; +import org.rapla.entities.Category; +import org.rapla.entities.CategoryAnnotations; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.EditComponent; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.TreeFactory; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.gui.toolkit.RaplaColorList; +import org.rapla.gui.toolkit.RaplaTree; +import org.rapla.gui.toolkit.RaplaWidget; +import org.rapla.gui.toolkit.RecursiveNode; + +/** + * @author Christopher Kohlhaas + */ +public class CategoryEditUI extends RaplaGUIComponent + implements + EditComponent + ,RaplaWidget +{ + JPanel panel = new JPanel(); + + JPanel toolbar = new JPanel(); + RaplaButton newButton = new RaplaButton(); + RaplaButton newSubButton = new RaplaButton(); + RaplaButton removeButton = new RaplaButton(); + RaplaArrowButton moveUpButton = new RaplaArrowButton('^', 25); + RaplaArrowButton moveDownButton = new RaplaArrowButton('v', 25); + + JCheckBox editAdvanced = new JCheckBox(); + + CategoryNode rootNode; + Category rootCategory; + CategoryDetail detailPanel; + RaplaTreeEdit treeEdit; + DefaultTreeModel model; + boolean editKeys; + Listener listener = new Listener(); + TreeCellRenderer iconRenderer; + + public CategoryEditUI(RaplaContext sm) throws RaplaException { + super( sm); + detailPanel = new CategoryDetail(sm); + panel.setPreferredSize( new Dimension( 690,350 ) ); + treeEdit = new RaplaTreeEdit( getI18n(),detailPanel.getComponent(), listener ); + treeEdit.setListDimension( new Dimension( 250,100 ) ); + toolbar.setLayout( new BoxLayout(toolbar, BoxLayout.X_AXIS)); + toolbar.add(newButton); + toolbar.add(newSubButton); + toolbar.add( Box.createHorizontalStrut( 5 )); + toolbar.add(removeButton); + toolbar.add( Box.createHorizontalStrut( 5 )); + toolbar.add(moveUpButton); + toolbar.add(moveDownButton); + toolbar.add(editAdvanced); + panel.setLayout( new BorderLayout() ); + toolbar.add( editAdvanced ); + panel.add( toolbar, BorderLayout.NORTH ); + panel.add( treeEdit.getComponent(), BorderLayout.CENTER ); + + editAdvanced.setOpaque( false ); + newButton.addActionListener(listener); + newSubButton.addActionListener(listener); + removeButton.addActionListener(listener); + editAdvanced.addActionListener(listener); + moveUpButton.addActionListener( listener ); + moveDownButton.addActionListener( listener ); + iconRenderer = getTreeFactory().createRenderer(); + treeEdit.getTree().setCellRenderer( new TreeCellRenderer() { + public Component getTreeCellRendererComponent(JTree tree + ,Object value + ,boolean sel + ,boolean expanded + ,boolean leaf + ,int row + ,boolean hasFocus + ) { + if ( value instanceof CategoryNode) { + Category c = (Category) ((CategoryNode)value).getCategory(); + value = c.getName(getRaplaLocale().getLocale()); + if (editKeys) { + value = "{" + c.getKey() + "} " + value; + } + } + return iconRenderer.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus ); + } + }); + newButton.setText( getString("new_category") ); + newButton.setIcon( getIcon("icon.new")); + newSubButton.setText( getString("new_sub-category") ); + newSubButton.setIcon( getIcon("icon.new") ); + removeButton.setText( getString("delete") ); + editAdvanced.setText( getString("edit_advanced") ); + removeButton.setIcon( getIcon("icon.delete") ); + + detailPanel.addChangeListener( listener ); + detailPanel.setEditKeys( false ); + + editAdvanced.setText(getString("edit_advanced")); + + } + + final private TreeFactory getTreeFactory() { + return (TreeFactory) getService(TreeFactory.ROLE); + } + + + class Listener implements ActionListener,ChangeListener { + public void actionPerformed(ActionEvent evt) { + try { + if ( evt.getSource() == newButton ) { + createCategory( false ); + } else if ( evt.getSource() == newSubButton ) { + createCategory( true ); + } else if ( evt.getSource() == removeButton ) { + removeCategory(); + } else if ( evt.getSource() == moveUpButton ) { + moveCategory( -1); + } else if ( evt.getSource() == moveDownButton ) { + moveCategory( 1); + } else if ( evt.getSource() == editAdvanced ) { + editKeys = editAdvanced.isSelected(); + detailPanel.setEditKeys( editKeys ); + updateModel(); + } else if (evt.getActionCommand().equals("edit")) { + detailPanel.mapFrom( treeEdit.getSelectedValue() ); + } + } catch (RaplaException ex) { + showException(ex, getComponent()); + } + } + public void stateChanged(ChangeEvent e) { + try { + confirmEdits(); + } catch (RaplaException ex) { + showException(ex, getComponent()); + } + } + } + + public JComponent getComponent() { + return panel; + } + + public int getSelectedIndex() { + return treeEdit.getSelectedIndex(); + } + + + public void setObject(Object o) throws RaplaException { + if (!(o instanceof Category)) + throw new RaplaException("Only category objects are accepted: " + o.getClass()); + this.rootCategory = (Category)o; + updateModel(); + } + + private void createCategory(boolean bCreateSubCategory) throws RaplaException { + confirmEdits(); + Category newCategory; + RecursiveNode parentNode; + TreePath path = treeEdit.getTree().getSelectionPath(); + if (path == null) { + parentNode = rootNode; + } else { + RecursiveNode selectedNode = (RecursiveNode) path.getLastPathComponent(); + if (selectedNode.getParent() == null || bCreateSubCategory) + parentNode = selectedNode; + else + parentNode = (RecursiveNode)selectedNode.getParent(); + } + newCategory = createNewNodeAt( parentNode ); + updateModel(); + RecursiveNode newNode = rootNode.findNodeFor( newCategory ); + TreePath selectionPath = new TreePath( newNode.getPath() ); + treeEdit.getTree().setSelectionPath( selectionPath ); + detailPanel.requestFocus(); + } + + + private String createNewKey(Category[] subCategories) { + int max = 1; + for (int i=0;i1 + && key.charAt(0) =='c' + && Character.isDigit(key.charAt(1)) + ) + { + try { + int value = Integer.valueOf(key.substring(1)).intValue(); + if (value >= max) + max = value + 1; + } catch (NumberFormatException ex) { + } + } + } + return "c" + (max); + } + + // creates a new Category + private Category createNewNodeAt(RecursiveNode parentNode) throws RaplaException { + Category newCategory = getModification().newCategory(); + + Category parent = ((CategoryNode) parentNode).getCategory(); + newCategory.setKey(createNewKey(parent.getCategories())); + + newCategory.getName().setName(getI18n().getLang(), getString("new_category") ); + + parent.addCategory(newCategory); + getLogger().debug(" new category " + newCategory + " added to " + parent); + int index = parentNode.getIndexOfUserObject(newCategory); + if (index <0 ) + throw new RaplaException("Can't insert new Category"); + return newCategory; + } + + private void removeCategory() throws RaplaException { + TreePath[] paths = treeEdit.getTree().getSelectionPaths(); + if ( paths == null ) + return; + CategoryNode[] categoryNodes = new CategoryNode[paths.length]; + for (int i=0;i= 0) { + childList.add(nodes[i]); + if (getLogger().isDebugEnabled()) + getLogger().debug("Removing CategoryNode " + nodes[i].getCategory()); + } + } + if (path != null) { + int size = childList.size(); + Object[] childs = new Object[size]; + for (int i=0;i50) + { + Object[] param = new Object[3]; + param[0] = key; + param[1] = "'-', '_'"; + param[2] = "'_'"; + throw new RaplaException(getI18n().format("error.invalid_key", param)); + } + } + public void setEditKeys(boolean editKeys) { + detailPanel.setEditKeys(editKeys); + this.editKeys = editKeys; + } + + class CategoryNode extends RecursiveNode { + public CategoryNode(TreeNode parent,Category category) { + super(parent,category); + } + + protected Category getCategory() { + return (Category) getUserObject(); + } + + protected Object[] getChildObjects() { + return getCategory().getCategories(); + } + + protected RecursiveNode createChildNode(Object userObject) { + return new CategoryNode(this,(Category)userObject); + } + + public String toString() { + return getName(getCategory()); + } + } +} + +class CategoryDetail extends AbstractEditField + implements + ChangeListener +{ + JPanel panel = new JPanel(); + JLabel nameLabel = new JLabel(); + JLabel keyLabel = new JLabel(); + JLabel colorLabel = new JLabel(); + JButton colorChooserBtn = new JButton(); + Color currentColor; + + MultiLanguageField name; + TextField key; + TextField colorTextField; + JPanel colorPanel = new JPanel(); + + public CategoryDetail(RaplaContext sm) throws RaplaException { + super( sm); + name = new MultiLanguageField(sm,"name"); + key = new TextField(sm,"key"); + colorTextField = new TextField(sm,"color"); + double fill = TableLayout.FILL; + double pre = TableLayout.PREFERRED; + panel.setLayout( new TableLayout( new double[][] + {{5, pre, 5, fill }, // Columns + {5, pre ,5, pre, 5, pre, 5}} // Rows + )); + panel.add("1,1,l,f", nameLabel); + panel.add("3,1,f,f", name.getComponent() ); + panel.add("1,3,l,f", keyLabel); + panel.add("3,3,f,f", key.getComponent() ); + panel.add("1,5,l,f", colorLabel); + panel.add("3,5,f,f", colorPanel); + colorPanel.setLayout( new BorderLayout()); + colorPanel.add( colorTextField.getComponent(), BorderLayout.CENTER ); + colorPanel.add( colorChooserBtn, BorderLayout.EAST ); + + nameLabel.setText(getString("name") + ":"); + keyLabel.setText(getString("key") + ":"); + colorLabel.setText( getString("color") + ":"); + name.addChangeListener ( this ); + key.addChangeListener ( this ); + colorTextField.addChangeListener( this ); + + colorChooserBtn.setText( getString("change") ); + colorChooserBtn.addActionListener( new ActionListener() { + + public void actionPerformed(ActionEvent e) { + currentColor = JColorChooser.showDialog( + panel, + "Choose Background Color", + currentColor); + colorChooserBtn.setBackground( currentColor ); + if ( currentColor != null) { + colorTextField.setValue( RaplaColorList.getHexForColor( currentColor )); + } + fireContentChanged(); + } + + }); + + } + + public void requestFocus() { + name.requestFocus(); + } + + public void setEditKeys(boolean editKeys) { + keyLabel.setVisible( editKeys ); + key.getComponent().setVisible( editKeys ); + colorLabel.setVisible( editKeys ); + colorTextField.getComponent().setVisible( editKeys ); + colorChooserBtn.setVisible( editKeys ); + } + + public JComponent getComponent() { + return panel; + } + + public Object getValue() {return null;} + + public void setValue(Object object) {} + + public void mapFrom(Object object) throws RaplaException { + Category category = (Category) object; + name.mapFrom(category); + key.mapFrom(category); + String colorValue = category.getAnnotation(CategoryAnnotations.KEY_NAME_COLOR, null) ; + if ( colorValue != null) { + currentColor = RaplaColorList.getColorForHex( colorValue ); + colorTextField.setValue( colorValue ); + } else { + colorTextField.setValue( "" ); + currentColor = null; + } + colorChooserBtn.setBackground( currentColor ); + } + + public void mapTo(Object object) throws RaplaException { + Category category = (Category) object; + name.mapTo(category); + key.mapTo(category); + String colorValue = colorTextField.getValue().toString().trim(); + if ( colorValue.length() > 0) { + category.setAnnotation(CategoryAnnotations.KEY_NAME_COLOR, colorValue ); + } else { + category.setAnnotation(CategoryAnnotations.KEY_NAME_COLOR, null ); + } + } + + public void stateChanged(ChangeEvent e) { + fireContentChanged(); + } +} + + diff --git a/src/org/rapla/gui/internal/edit/CategoryListField.java b/src/org/rapla/gui/internal/edit/CategoryListField.java new file mode 100644 index 0000000..f793f84 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/CategoryListField.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.util.Vector; + +import org.rapla.entities.Category; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class CategoryListField extends ListField { + Category rootCategory; + + public CategoryListField(RaplaContext sm,String fieldName,Category rootCategory) throws RaplaException { + super(sm,fieldName); + this.rootCategory = rootCategory; + + Category[] obj = rootCategory.getCategories(); + Vector list = new Vector(); + list.add(nothingSelected); + for (int i=0;i 0); + i++; + } + + ruleListPanel.revalidate(); + ruleListPanel.repaint(); + } + + + public void actionPerformed(ActionEvent evt) { + if (evt.getSource() == attributeSelector) { + Attribute att = (Attribute)attributeSelector.getSelectedItem(); + try { + if (att != null) { + RuleComponent ruleComponent = getComponent(att); + if (ruleComponent == null) { + addRuleComponent().newRule( att); + } else { + ruleComponent.addOr(); + } + update(); + // invokeLater prevents a deadlock in jdk <=1.3 + javax.swing.SwingUtilities.invokeLater(new Runnable() { + public void run() { + attributeSelector.setSelectedIndex(-1); + } + }); + fireFilterChanged(); + } + } catch (RaplaException ex) { + showException(ex, getNewComponent()); + } + } + } + + public ClassificationFilter getFilter() throws RaplaException { + if ( type == null ) + return null; + ClassificationFilter filter = type.newClassificationFilter(); + int i=0; + for (Iterator it = ruleList.iterator();it.hasNext();) { + RuleComponent ruleComponent = (RuleComponent) it.next(); + Attribute attribute = ruleComponent.getAttribute(); + List ruleRows = ruleComponent.getRuleRows(); + int size = ruleRows.size(); + Object[][] conditions = new Object[size][2]; + for (int j=0;j"; + if (index == 3) + return "<>"; + if (index == 4) + return "<="; + if (index == 5) + return ">="; + + } + Assert.notNull(field,"Unknown AttributeType" + type); + return null; + } + + private void setOperatorValue(String operator) { + AttributeType type = attribute.getType(); + if ((type.equals(AttributeType.DATE) || type.equals(AttributeType.INT))) + { + if (operator == null) + operator = "<"; + JComboBox box = (JComboBox)operatorComponent; + if (operator.equals("<")) + box.setSelectedIndex(0); + if (operator.equals("=") || operator.equals("is")) + box.setSelectedIndex(1); + if (operator.equals(">")) + box.setSelectedIndex(2); + if (operator.equals("<>")) + box.setSelectedIndex(3); + if (operator.equals("<=")) + box.setSelectedIndex(4); + if (operator.equals(">=")) + box.setSelectedIndex(5); + + } + } + + private EditField createField(Attribute attribute) throws RaplaException { + operatorComponent = null; + AttributeType type = attribute.getType(); + String key = attribute.getKey(); + if (type.equals(AttributeType.CATEGORY)) + { + operatorComponent = new JLabel(""); + Category rootCategory = (Category)attribute.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + if (rootCategory.getDepth() > 2) { + Category defaultCategory = (Category) attribute.defaultValue(); + field = new CategorySelectField(getContext(),key,rootCategory,defaultCategory); + } else { + field = new CategoryListField(getContext(),key,rootCategory); + } + } + else if (type.equals(AttributeType.STRING)) + { + operatorComponent = new JLabel(getString("filter.contains")); + field = new TextField(getContext(),key); + } + else if (type.equals(AttributeType.INT)) + { + field = new LongField(getContext(),key); + DefaultComboBoxModel model = new DefaultComboBoxModel(new String[] { + getString("filter.is_smaller_than") + ,getString("filter.equals") + ,getString("filter.is_greater_than") + ,getString("filter.not_equals") + ,getString("filter.smaller_or_equals") + ,getString("filter.greater_or_equals") + }); + operatorComponent = new JComboBox(model); + + } + else if (type.equals(AttributeType.DATE)) + { + field = new DateField(getContext(),key); + DefaultComboBoxModel model = new DefaultComboBoxModel(new String[] { + getString("filter.earlier_than") + ,getString("filter.equals") + ,getString("filter.later_than") + ,getString("filter.not_equals") + }); + operatorComponent = new JComboBox(model); } + else if (type.equals(AttributeType.BOOLEAN)) + { + operatorComponent = new JLabel(""); + field = new BooleanField(getContext(),key); + ruleValue = new Boolean(false); + } + + Assert.notNull(field,"Unknown AttributeType"); + field.setDelegate(new MyMappingDelegate(field)); + return field; + } + + + public Object getValue() throws RaplaException { + ruleValue = field.getValue(); + return ruleValue; + } + + class MyMappingDelegate implements MappingDelegate { + AbstractEditField editField; + MyMappingDelegate(AbstractEditField field) { + this.editField = field; + } + public String getName() { + return getAttName(editField.getFieldName()); + } + public void mapFrom(Object o) throws RaplaException { + } + public void mapTo(Object o) throws RaplaException { + } + }; + } +} + diff --git a/src/org/rapla/gui/internal/edit/ClassificationEditUI.java b/src/org/rapla/gui/internal/edit/ClassificationEditUI.java new file mode 100644 index 0000000..2dc39aa --- /dev/null +++ b/src/org/rapla/gui/internal/edit/ClassificationEditUI.java @@ -0,0 +1,115 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import org.rapla.components.util.Assert; +import org.rapla.entities.Category; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeAnnotations; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class ClassificationEditUI extends AbstractEditUI { + public ClassificationEditUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected Classification classification; + + private String getAttName(String key) { + return getName(classification.getAttribute(key)); + } + + protected Attribute getAttribute(int i) { + return classification.getAttribute(((AbstractEditField) fields[i]).getFieldName()); + } + + private void setAttValue(String key,Object value) { + classification.setValue( classification.getAttribute(key), value ); + } + + private Object getAttValue(String key) { + return classification.getValue(classification.getAttribute(key)); + } + + private EditField createField(Attribute attribute) throws RaplaException { + AttributeType type = attribute.getType(); + String key = attribute.getKey(); + AbstractEditField field = null; + + if (type.equals(AttributeType.STRING)) { + Integer rows = new Integer(attribute.getAnnotation(AttributeAnnotations.KEY_EXPECTED_ROWS,"1")); + Integer columns = new Integer(attribute.getAnnotation(AttributeAnnotations.KEY_EXPECTED_COLUMNS,String.valueOf(TextField.DEFAULT_LENGTH))); + field = new TextField(getContext(),key, rows.intValue(), columns.intValue()); + } else if (type.equals(AttributeType.INT)) { + field = new LongField(getContext(),key); + } else if (type.equals(AttributeType.DATE)) { + field = new DateField(getContext(),key); + } else if (type.equals(AttributeType.BOOLEAN)) { + field = new BooleanField(getContext(),key); + } else if (type.equals(AttributeType.CATEGORY)) + { + Category defaultCategory = (Category) attribute.defaultValue(); + Category rootCategory = (Category) attribute.getConstraint(ConstraintIds.KEY_ROOT_CATEGORY); + if (rootCategory.getDepth() > 2) { + field = new CategorySelectField(getContext(),key, rootCategory, defaultCategory); + } else { + field= new CategoryListField(getContext(),key, rootCategory); + } + } + Assert.notNull(field, "Unknown AttributeType"); + field.setDelegate(new MyMappingDelegate(field)); + return field; + } + + public void setObject(Object object) throws RaplaException { + //classification = (Classification) ((Classification) object).clone(); + classification = (Classification) object; + this.o = classification; + DynamicType type = classification.getType(); + Attribute[] attributes = type.getAttributes(); + EditField[] fields = new EditField[attributes.length]; + for (int i=0;iSwitch on experienced settings to show the keys. " + ,ex); + + } + } + public Object getObject() { + return dynamicType; + } + + public void setObject(Object o) throws RaplaException { + dynamicType = (DynamicType) o; + name.mapFrom(o); + elementKey.mapFrom(o); + attributeEdit.setDynamicType(dynamicType); + updateAnnotations(); + } + + private void updateAnnotations() { + annotationText.setText( dynamicType.getAnnotation( DynamicTypeAnnotations.KEY_NAME_FORMAT ) ); + } + + private void validate() throws RaplaException { + Assert.notNull(dynamicType); + if ( getName( dynamicType ).length() == 0) + throw new RaplaException(getString("error.no_name")); + + if (dynamicType.getElementKey().equals("")) { + throw new RaplaException(getI18n().format("error.no_key","")); + } + checkKey(dynamicType.getElementKey()); + Attribute[] attributes = dynamicType.getAttributes(); + for (int i=0;i50) + { + Object[] param = new Object[3]; + param[0] = key; + param[1] = "'-', '_'"; + param[2] = "'_'"; + throw new RaplaException(getI18n().format("error.invalid_key", param)); + } + + + } +} \ No newline at end of file diff --git a/src/org/rapla/gui/internal/edit/EditControllerImpl.java b/src/org/rapla/gui/internal/edit/EditControllerImpl.java new file mode 100644 index 0000000..2d79a4f --- /dev/null +++ b/src/org/rapla/gui/internal/edit/EditControllerImpl.java @@ -0,0 +1,131 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.Component; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +import org.rapla.entities.Category; +import org.rapla.entities.Entity; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.EditComponent; +import org.rapla.gui.EditController; +import org.rapla.gui.RaplaGUIComponent; + +/**This class handles the edit-ui for all entities (except reservations).*/ +public class EditControllerImpl extends RaplaGUIComponent implements EditController +{ + Collection editWindowList = new ArrayList(); + + public EditControllerImpl(RaplaContext sm) throws RaplaException { + super(sm); + } + + void addEditDialog(EditDialog editWindow) { + editWindowList.add(editWindow); + } + + void removeEditDialog(EditDialog editWindow) { + editWindowList.remove(editWindow); + } + + + /* (non-Javadoc) + * @see org.rapla.gui.edit.IEditController#createUI(org.rapla.entities.RaplaPersistant) + */ + public EditComponent createUI(RaplaObject obj) throws RaplaException { + RaplaType type = obj.getRaplaType(); + EditComponent ui = null; + if ( Allocatable.TYPE.equals( type )) { + ui=new AllocatableEditUI(getContext()); + } else if ( DynamicType.TYPE.equals( type )) { + ui=new DynamicTypeEditUI(getContext()); + } else if ( User.TYPE.equals( type )) { + ui=new UserEditUI(getContext()); + } else if ( Period.TYPE.equals( type )) { + ui=new PeriodEditUI(getContext()); + } else if ( Category.TYPE.equals( type )) { + ui=new CategoryEditUI(getContext()); + } else if ( Preferences.TYPE.equals( type )) { + ui=new PreferencesEditUI(getContext()); + } + + if ( ui == null) { + throw new RuntimeException("Can't edit objects of type " + type.toString()); + } + return ui; + } + + protected String guessTitle(Object obj) { + if (obj instanceof Entity) + { + String type = ((Entity) obj).getRaplaType().getLocalName(); + return getString( type ); + } + return ""; + } + + /* (non-Javadoc) + * @see org.rapla.gui.edit.IEditController#edit(org.rapla.entities.Entity, java.awt.Component) + */ + public void edit(Entity obj,Component owner) throws RaplaException { + edit(obj, guessTitle(obj), owner); + } + + /* (non-Javadoc) + * @see org.rapla.gui.edit.IEditController#edit(org.rapla.entities.Entity, java.lang.String, java.awt.Component) + */ + public void edit(Entity obj,String title,Component owner) throws RaplaException { + // Lookup if the reservation is already beeing edited + EditDialog c = null; + Iterator it = editWindowList.iterator(); + while (it.hasNext()) { + c = (EditDialog)it.next(); + Object editObj = c.ui.getObject(); + if (editObj != null && editObj instanceof Entity && ((Entity)editObj).isIdentical(obj)) + { + break; + } + else + { + c = null; + } + } + + if (c != null) { + c.dlg.requestFocus(); + c.dlg.toFront(); + } else { + if ( obj.isPersistant()) { + obj = (Entity)getModification().edit(obj); + } + EditComponent ui = createUI( obj ); + EditDialog gui = new EditDialog(getContext(),ui, false); + gui.start(obj,title,owner); + } + //return c; + + } + +} + diff --git a/src/org/rapla/gui/internal/edit/EditDialog.java b/src/org/rapla/gui/internal/edit/EditDialog.java new file mode 100644 index 0000000..860b9fa --- /dev/null +++ b/src/org/rapla/gui/internal/edit/EditDialog.java @@ -0,0 +1,153 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.Component; +import java.awt.event.ActionEvent; + +import javax.swing.AbstractAction; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.apache.avalon.framework.activity.Disposable; +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.Entity; +import org.rapla.entities.domain.Allocatable; +import org.rapla.facade.ModificationEvent; +import org.rapla.facade.ModificationListener; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.EditComponent; +import org.rapla.gui.EditController; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.DisposingTool; + +public class EditDialog extends RaplaGUIComponent implements ModificationListener,Disposable { + DialogUI dlg; + boolean bSaving = false; + EditComponent ui; + boolean modal; + + public EditDialog(RaplaContext sm,EditComponent ui,boolean modal) throws RaplaException { + super( sm); + this.ui = ui; + this.modal = modal; + } + + public EditDialog(RaplaContext sm,EditComponent ui) throws RaplaException { + this(sm,ui,true); + } + + final private EditControllerImpl getPrivateEditDialog() { + return (EditControllerImpl) getService(EditController.ROLE); + } + + public int start(Object editObj,String title,Component owner) + throws + RaplaException + { + getLogger().debug("Editing Object: " + editObj); + ui.setObject(editObj); + JComponent editComponent = ui.getComponent(); + JPanel panel = new JPanel(); + panel.setLayout( new TableLayout( new double[][] { + { TableLayout.PREFERRED}, + { TableLayout.PREFERRED} + })); + if ( editObj instanceof Allocatable) + { + JLabel icon = new JLabel(" "); + icon.setIcon( getIcon("icon.resources")); + panel.add( icon, "0,0,r,t"); + } + panel.add( editComponent, "0,0"); + editComponent.setBorder(BorderFactory.createEmptyBorder(3,3,3,3)); + dlg = DialogUI.create(getContext(),owner,modal,panel,new String[] { + getString("save") + ,getString("cancel") + }); + dlg.setAbortAction(new AbortAction()); + dlg.getButton(0).setAction(new SaveAction()); + dlg.getButton(1).setAction(new AbortAction()); + dlg.getButton(0).setIcon(getIcon("icon.save")); + dlg.getButton(1).setIcon(getIcon("icon.cancel")); + dlg.setTitle(getI18n().format("edit.format",title)); + getUpdateModule().addModificationListener(this); + dlg.addWindowListener(new DisposingTool(this)); + dlg.start(); + if (modal) + { + return dlg.getSelectedIndex(); + } + else + { + getPrivateEditDialog().addEditDialog( this ); + return -1; + } + } + + protected boolean shouldCancelOnModification(ModificationEvent evt) { + return evt.hasChanged(ui.getObject()); + } + + public void dataChanged(ModificationEvent evt) throws RaplaException { + if (bSaving || dlg == null || !dlg.isVisible() || ui == null) + return; + if (shouldCancelOnModification(evt)) { + getLogger().warn("Object has been changed outside."); + DialogUI warning = + DialogUI.create(getContext() + ,ui.getComponent() + ,true + ,getString("warning") + ,getI18n().format("warning.update",ui.getObject()) + ); + warning.start(); + getPrivateEditDialog().removeEditDialog( this ); + dlg.close(); + } + } + + class SaveAction extends AbstractAction { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent evt) { + try { + ui.mapToObject(); + bSaving = true; + getModification().store( (Entity) ui.getObject()); + getPrivateEditDialog().removeEditDialog( EditDialog.this ); + dlg.close(); + } catch (RaplaException ex) { + showException(ex,dlg); + } + } + } + + class AbortAction extends AbstractAction { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent evt) { + getPrivateEditDialog().removeEditDialog( EditDialog.this ); + dlg.close(); + } + } + + public void dispose() { + getUpdateModule().removeModificationListener(this); + } +} + diff --git a/src/org/rapla/gui/internal/edit/EditField.java b/src/org/rapla/gui/internal/edit/EditField.java new file mode 100644 index 0000000..615d2b7 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/EditField.java @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import javax.swing.event.ChangeListener; + +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.RaplaWidget; + +/** Base class for most rapla edit fields. Provides some mapping + functionality such as reflection invocation of getters/setters. + A fieldName "username" will result in a getUsername() and setUsername() + method. +*/ +public interface EditField extends RaplaWidget +{ + public boolean isBlock(); + public boolean isVariableSized(); + /** Returns the proper translation/name of the field-name*/ + public String getName(); + public void mapTo(Object o) throws RaplaException; + public void mapFrom(Object o) throws RaplaException; + /** registers new ChangeListener for this component. + * An ChangeEvent will be fired to every registered ChangeListener + * when the component info changes. + * @see javax.swing.event.ChangeListener + * @see javax.swing.event.ChangeEvent + */ + public void addChangeListener(ChangeListener listener); + /** removes a listener from this component.*/ + public void removeChangeListener(ChangeListener listener); +} + diff --git a/src/org/rapla/gui/internal/edit/ListField.java b/src/org/rapla/gui/internal/edit/ListField.java new file mode 100644 index 0000000..97ee266 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/ListField.java @@ -0,0 +1,104 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.util.Vector; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.common.NamedListCellRenderer; + +public class ListField extends AbstractEditField implements ActionListener, FocusListener { + JPanel panel; + JComboBox field; + protected String nothingSelected; + Vector list; + + public ListField(RaplaContext sm,String fieldName,Vector v) throws RaplaException { + this(sm,fieldName); + setVector(v); + } + + protected ListField(RaplaContext sm,String fieldName) throws RaplaException { + super( sm); + setFieldName(fieldName); + panel = new JPanel(); + panel.setOpaque(false); + field = new JComboBox(); + field.addActionListener(this); + panel.setLayout(new BorderLayout()); + panel.add(field,BorderLayout.WEST); + field.setRenderer(new NamedListCellRenderer(getI18n().getLocale())); + nothingSelected = getString("nothing_selected"); + field.addFocusListener(this); + } + + protected void setVector(Vector v) { + this.list = v; + field.setModel(new DefaultComboBoxModel(v)); + } + + + public void setRenderer(ListCellRenderer renderer) { + field.setRenderer( renderer ); + } + + protected Object getValue() { + Object value = field.getSelectedItem(); + if (list.contains(nothingSelected) && nothingSelected.equals(value)) { + return null; + } else { + return value; + } + } + protected void setValue(Object value) { + if (list.contains(nothingSelected) && value==null) { + field.setSelectedItem(nothingSelected); + } else { + field.setSelectedItem(value); + } + } + public JComponent getComponent() { + return panel; + } + + public void actionPerformed(ActionEvent evt) { + fireContentChanged(); + } + + public void focusGained(FocusEvent evt) { + + Component focusedComponent = evt.getComponent(); + Component parent = focusedComponent.getParent(); + if(parent instanceof JPanel) { + ((JPanel)parent).scrollRectToVisible(focusedComponent.getBounds(null)); + } + + } + + public void focusLost(FocusEvent evt) { + + } +} diff --git a/src/org/rapla/gui/internal/edit/LongField.java b/src/org/rapla/gui/internal/edit/LongField.java new file mode 100644 index 0000000..8bdf5f4 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/LongField.java @@ -0,0 +1,81 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class LongField extends AbstractEditField implements ChangeListener, FocusListener { + JPanel panel = new JPanel(); + RaplaNumber field; + public LongField( RaplaContext sm,String fieldName ) throws RaplaException { + this( sm,fieldName, null ); + } + public LongField( RaplaContext sm, String fieldName, Long minimum ) throws RaplaException { + super( sm); + setFieldName( fieldName ); + panel.setLayout( new BorderLayout() ); + panel.setOpaque( false ); + field = new RaplaNumber( minimum, minimum, null, minimum == null ); + field.setColumns(8); + field.addChangeListener(this); + panel.add(field,BorderLayout.WEST); + field.addFocusListener(this); + } + protected Object getValue() throws RaplaException { + if (field.getNumber() != null) + return new Long(field.getNumber().longValue()); + else + return null; + } + protected void setValue(Object object) { + if (object != null) { + field.setNumber((Number)object); + } else { + field.setNumber(null); + } + } + + public void stateChanged(ChangeEvent evt) { + fireContentChanged(); + } + + public JComponent getComponent() { + return panel; + } + + public void focusGained(FocusEvent evt) { + + Component focusedComponent = evt.getComponent(); + Component parent = focusedComponent.getParent(); + if(parent instanceof JPanel) { + ((JPanel)parent).scrollRectToVisible(focusedComponent.getBounds(null)); + } + + } + + public void focusLost(FocusEvent evt) { + + } +} diff --git a/src/org/rapla/gui/internal/edit/MappingDelegate.java b/src/org/rapla/gui/internal/edit/MappingDelegate.java new file mode 100644 index 0000000..0d4a9dd --- /dev/null +++ b/src/org/rapla/gui/internal/edit/MappingDelegate.java @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import org.rapla.framework.RaplaException; +/** Allows the delegation of the mapTo, mapFrom and getName + methods of the EditField to an other class + */ +interface MappingDelegate { + public String getName(); + public void mapTo(Object o) throws RaplaException; + public void mapFrom(Object o) throws RaplaException; +} + diff --git a/src/org/rapla/gui/internal/edit/MultiLanguageField.java b/src/org/rapla/gui/internal/edit/MultiLanguageField.java new file mode 100644 index 0000000..0bc5d9a --- /dev/null +++ b/src/org/rapla/gui/internal/edit/MultiLanguageField.java @@ -0,0 +1,202 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Collection; + +import javax.swing.AbstractCellEditor; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.table.DefaultTableModel; + +import org.rapla.entities.MultiLanguageName; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.RaplaButton; + +public class MultiLanguageField extends AbstractEditField implements ChangeListener, ActionListener,CellEditorListener { + JPanel panel = new JPanel(); + TextField textField; + RaplaButton button = new RaplaButton(RaplaButton.SMALL); + MultiLanguageName name = new MultiLanguageName(); + MultiLanguageEditorDialog editorDialog; + + String[] availableLanguages; + + public MultiLanguageField(RaplaContext sm, String fieldName) throws RaplaException { + super( sm); + textField = new TextField(sm, "name"); + setFieldName(fieldName); + availableLanguages = getRaplaLocale().getAvailableLanguages(); + panel.setLayout( new BorderLayout() ); + panel.add( textField.getComponent(), BorderLayout.CENTER ); + panel.add( button, BorderLayout.EAST ); + button.addActionListener( this ); + button.setIcon( getIcon("icon.language-select") ); + textField.addChangeListener( this ); + } + + public void requestFocus() { + textField.getComponent().requestFocus(); + } + + public void stateChanged(ChangeEvent e) { + if (name != null) { + name.setName(getI18n().getLang() + ,(String)textField.getValue()); + fireContentChanged(); + } + } + + public void actionPerformed(ActionEvent evt) { + editorDialog = new MultiLanguageEditorDialog( button ); + editorDialog.addCellEditorListener( this ); + editorDialog.setEditorValue( name ); + try { + editorDialog.show(); + } catch (RaplaException ex) { + showException( ex, getComponent()); + } + } + + public void editingStopped(ChangeEvent e) { + setValue((MultiLanguageName) editorDialog.getEditorValue()); + fireContentChanged(); + } + + public void editingCanceled(ChangeEvent e) { + } + + protected Object getValue() { + return this.name; + } + + protected void setValue(Object object) { + this.name = (MultiLanguageName)object; + textField.setValue(name.getName(getI18n().getLang())); + } + + public void mapTo(Object object) { + // Don't need to map back because MultiLanguageName is modified directly + } + + public JComponent getComponent() { + return panel; + } + + class MultiLanguageEditorDialog extends AbstractCellEditor { + private static final long serialVersionUID = 1L; + + JTable table = new JTable(); + JLabel label = new JLabel(); + JPanel comp = new JPanel(); + MultiLanguageName editorValue; + Component owner; + MultiLanguageEditorDialog(JComponent owner) { + this.owner = owner; + table.setPreferredScrollableViewportSize(new Dimension(300, 200)); + comp.setLayout(new BorderLayout()); + comp.add(label,BorderLayout.NORTH); + comp.add(new JScrollPane(table),BorderLayout.CENTER); + } + + public void setEditorValue(Object value) { + this.editorValue = (MultiLanguageName)value; + table.setModel(new TranslationTableModel(editorValue)); + table.getColumnModel().getColumn(0).setPreferredWidth(30); + table.getColumnModel().getColumn(1).setPreferredWidth(200); + label.setText(getI18n().format("translation.format", editorValue)); + } + + public Object getEditorValue() { + return editorValue; + } + + public Object getCellEditorValue() { + return getEditorValue(); + } + + public void show() throws RaplaException { + DialogUI dlg = DialogUI.create(getContext(),owner,true,comp,new String[] { getString("ok"),getString("cancel")}); + dlg.setTitle(getString("translation")); + // Workaround for Bug ID 4480264 on developer.java.sun.com + if (table.getRowCount() > 0 ) { + table.editCellAt(0, 0); + table.editCellAt(0, 1); + } + dlg.start(); + if (dlg.getSelectedIndex() == 0) { + for (int i=0;i 2) { + groupSelect = new CategorySelectField(getContext(),"group", rootCategory); + } else { + groupSelect = new CategoryListField(getContext(),"group", rootCategory); + } + userPanel.add( new JLabel(getString("group") + ":"), "0,2,l,f" ); + userPanel.add( groupSelect.getComponent(),"2,2,l,f" ); + groupSelect.addChangeListener( this ); + } + + + reservationPanel = new JPanel(); + panel.add( reservationPanel , "0,2,f,f" ); + reservationPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), getString("allocatable_in_timeframe") + ":" )); + reservationPanel.setLayout( new TableLayout( new double[][] + {{pre,3, pre, 5, pre, 5}, // Columns + {pre, 5, pre}} // Rows + )); + + reservationPanel.add( new JLabel( getString("start_date") + ":" ) , "0,0,l,f" ); + reservationPanel.add( startSelection , "2,0,l,f" ); + startSelection.setModel( createSelectionModel() ); + startSelection.setSelectedIndex( 0 ); + + startDate = new DateField(sm,"start"); + reservationPanel.add( startDate.getComponent() , "4,0,l,f" ); + + minAdvance = new LongField(sm,"minAdvance", new Long(0) ); + reservationPanel.add( minAdvance.getComponent() , "4,0,l,f" ); + + reservationPanel.add( new JLabel( getString("end_date") + ":" ), "0,2,l,f" ); + reservationPanel.add( endSelection , "2,2,l,f" ); + endSelection.setModel( createSelectionModel() ); + endSelection.setSelectedIndex( 0 ); + + endDate = new DateField(sm,"end"); + reservationPanel.add( endDate.getComponent() , "4,2,l,f" ); + + maxAdvance = new LongField(sm,"maxAdvance", new Long(1) ); + reservationPanel.add( maxAdvance.getComponent() , "4,2,l,f" ); + + userPanel.add( new JLabel(getString("permission.access") + ":"), "0,4,f,f" ); + Vector vector = new Vector(); + int[] accessLevels = Permission.ACCESS_LEVEL_TYPES; + for (int i=0;i= Permission.ALLOCATE && level < Permission.ADMIN); + + int i = startSelection.getSelectedIndex(); + startDate.getComponent().setVisible( i == 1 ); + minAdvance.getComponent().setVisible( i == 2 ); + + int j = endSelection.getSelectedIndex(); + endDate.getComponent().setVisible( j == 1 ); + maxAdvance.getComponent().setVisible( j == 2 ); + } + + boolean listenersDisabled = false; + public void setValue(Object value) throws RaplaException { + try { + listenersDisabled = true; + + permission = (Permission) value; + if ( groupSelect != null ) + groupSelect.mapFrom( permission ); + userSelect.mapFrom( permission ); + accessField.mapFrom( permission ); + + int startIndex = 0; + if ( permission.getStart() != null ) + startIndex = 1; + if ( permission.getMinAdvance() != null ) + startIndex = 2; + startSelection.setSelectedIndex( startIndex ); + + int endIndex = 0; + if ( permission.getEnd() != null ) + endIndex = 1; + if ( permission.getMaxAdvance() != null ) + endIndex = 2; + endSelection.setSelectedIndex( endIndex ); + + startDate.mapFrom( permission ); + minAdvance.mapFrom( permission ); + endDate.mapFrom( permission ); + maxAdvance.mapFrom( permission ); + toggleVisibility(); + } finally { + listenersDisabled = false; + } + } + + + public void actionPerformed(ActionEvent evt) { + if ( listenersDisabled ) + return; + + try { + if (evt.getSource() == startSelection) { + int i = startSelection.getSelectedIndex(); + if ( i == 0 ) { + permission.setStart( null ); + permission.setMinAdvance( null ); + } + if ( i == 1 ) { + Date today = getQuery().today(); + permission.setStart( today ); + startDate.mapFrom ( permission ); + } if ( i == 2 ) { + permission.setMinAdvance( new Long(0) ); + minAdvance.mapFrom ( permission ); + } + } + if (evt.getSource() == endSelection) { + int i = endSelection.getSelectedIndex(); + if ( i == 0 ) { + permission.setEnd( null ); + permission.setMaxAdvance( null ); + } + if ( i == 1 ) { + Date today = getQuery().today(); + permission.setEnd( today ); + endDate.mapFrom ( permission ); + } if ( i == 2 ) { + permission.setMaxAdvance( new Long( 30 ) ); + maxAdvance.mapFrom ( permission ); + } + } + toggleVisibility(); + fireContentChanged(); + } catch ( RaplaException ex ) { + showException( ex, getComponent() ); + } + } + + public Object getValue() { + return permission; + } + + public void stateChanged(ChangeEvent evt) { + if ( listenersDisabled ) + return; + + try { + if (evt.getSource() == groupSelect) { + groupSelect.mapTo( permission ); + userSelect.mapFrom(permission); + } else if (evt.getSource() == userSelect) { + userSelect.mapTo( permission ); + if ( groupSelect != null ) + groupSelect.mapFrom(permission); + } else if (evt.getSource() == startDate) { + startDate.mapTo( permission ); + } else if (evt.getSource() == minAdvance) { + minAdvance.mapTo( permission ); + } else if (evt.getSource() == endDate) { + endDate.mapTo( permission ); + } else if (evt.getSource() == maxAdvance) { + maxAdvance.mapTo( permission ); + } else if (evt.getSource() == accessField ) { + accessField.mapTo( permission ); + toggleVisibility(); + } + fireContentChanged(); + } catch (RaplaException ex) { + showException( ex, getComponent() ); + } + } + + class UserListField extends ListField { + + public UserListField(RaplaContext sm,String fieldName) throws RaplaException{ + super(sm,fieldName); + Object[] obj = getQuery().getUsers(); + Vector list = new Vector(); + list.add(nothingSelected); + for (int i=0;i 1 ) { + model.removeElement(permission); + allocatable.removePermission(permission); + } + } + listEdit.getList().requestFocus(); + } + + private void createPermission() { + Permission permission = allocatable.newPermission(); + allocatable.addPermission( permission ); + model.addElement(permission); + } + + class Listener implements ActionListener, ChangeListener { + public void actionPerformed(ActionEvent evt) { + try { + if (evt.getActionCommand().equals("remove")) { + removePermission(); + } else if (evt.getActionCommand().equals("new")) { + createPermission(); + } else if (evt.getActionCommand().equals("edit")) { + permissionField.setValue( listEdit.getList().getSelectedValue() ); + } + } catch (RaplaException ex) { + showException(ex,getComponent()); + } + } + + public void stateChanged(ChangeEvent evt) { + Object permission = permissionField.getValue(); + model.set( model.indexOf( permission ),permission ); + } + + } + +} + + diff --git a/src/org/rapla/gui/internal/edit/PreferencesEditUI.java b/src/org/rapla/gui/internal/edit/PreferencesEditUI.java new file mode 100644 index 0000000..0ad2816 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/PreferencesEditUI.java @@ -0,0 +1,263 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Insets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSplitPane; +import javax.swing.border.Border; +import javax.swing.border.TitledBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; + +import org.rapla.entities.Named; +import org.rapla.entities.NamedComparator; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.PluginDescriptor; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.DefaultPluginOption; +import org.rapla.gui.EditComponent; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.TreeFactory; +import org.rapla.gui.toolkit.RaplaTree; +import org.rapla.gui.toolkit.RaplaWidget; +import org.rapla.plugin.RaplaExtensionPoints; + +public class PreferencesEditUI extends RaplaGUIComponent + implements + RaplaWidget + ,EditComponent + ,ChangeListener +{ + private JSplitPane content = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + protected TitledBorder selectionBorder; + protected RaplaTree jPanelSelection = new RaplaTree(); + protected JPanel jPanelContainer = new JPanel(); + protected JPanel container = new JPanel(); + JLabel messages = new JLabel(); + JPanel defaultPanel = new JPanel(); + OptionPanel lastOptionPanel; + Preferences preferences; + + /** called during initialization to create the info component */ + public PreferencesEditUI(RaplaContext sm) throws RaplaException { + super( sm); + jPanelContainer.setLayout(new BorderLayout()); + jPanelContainer.add(messages,BorderLayout.SOUTH); + messages.setForeground( Color.red); + Border emptyLineBorder = new Border() { + Insets insets = new Insets(2,0,2,0); + Color COLOR = Color.LIGHT_GRAY; + public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) + { + g.setColor( COLOR ); + g.drawLine(0,1, c.getWidth(), 1); + g.drawLine(0,c.getHeight()-2, c.getWidth(), c.getHeight()-2); + } + + public Insets getBorderInsets( Component c ) + { + return insets; + } + + public boolean isBorderOpaque() + { + return true; + } + }; + content.setBorder( emptyLineBorder); + jPanelContainer.add(content,BorderLayout.CENTER); + jPanelSelection.getTree().setCellRenderer(getTreeFactory().createRenderer()); + jPanelSelection.setToolTipRenderer(getTreeFactory().createTreeToolTipRenderer()); + container.setPreferredSize( new Dimension(700,500)); + content.setLeftComponent(jPanelSelection); + content.setRightComponent(container); + content.setDividerLocation(300); + Border emptyBorder=BorderFactory.createEmptyBorder(4,4,4,4); + selectionBorder = BorderFactory.createTitledBorder(emptyBorder, getString("selection") + ":"); + jPanelSelection.setBorder(selectionBorder); + content.setResizeWeight(0.4); + jPanelSelection.addChangeListener(this); + } + + final private TreeFactory getTreeFactory() { + return (TreeFactory) getService(TreeFactory.ROLE); + } + + protected OptionPanel[] getPluginOptions() throws RaplaException { + Map optionMap = getContainer().lookupServicesFor( RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION); + List optionList = new ArrayList(); + List pluginList = (List) getService( PluginDescriptor.PLUGIN_LIST); + for (Iterator it = pluginList.iterator();it.hasNext();) { + final PluginDescriptor plugin = (PluginDescriptor) it.next(); + OptionPanel optionPanel = (OptionPanel) optionMap.get(plugin.getClass().getName()); + if ( optionPanel == null ) { + optionPanel = new DefaultPluginOption(getContext()) { + + public String getDescriptorClassName() { + return plugin.getClass().getName(); + } + + public String getName(Locale locale) { + return plugin.toString(); + } + + }; + } + optionList.add( optionPanel ); + } + sort( optionList); + return (OptionPanel[])optionList.toArray(new OptionPanel[] {}); + } + + public void sort(List list) { + Collections.sort( list, new NamedComparator(getRaplaLocale().getLocale())); + } + + public OptionPanel[] getUserOptions() throws RaplaException { + Map optionMap = getContainer().lookupServicesFor( RaplaExtensionPoints.USER_OPTION_PANEL_EXTENSION ); + List optionList = new ArrayList(optionMap.values()); + sort( optionList); + return (OptionPanel[])optionList.toArray(new OptionPanel[] {}); + } + + public OptionPanel[] getAdminOptions() throws RaplaException { + Map optionMap = getContainer().lookupServicesFor( RaplaExtensionPoints.SYSTEM_OPTION_PANEL_EXTENSION ); + List optionList = new ArrayList(optionMap.values()); + sort( optionList); + return (OptionPanel[])optionList.toArray(new OptionPanel[] {}); + } + + protected JComponent createInfoComponent() { + JPanel panel = new JPanel(); + return panel; + } + + + private void setOptionPanel(OptionPanel optionPanel) throws Exception { + String title = getString("nothing_selected"); + JComponent comp = defaultPanel; + if ( optionPanel != null) { + title = optionPanel.getName( getRaplaLocale().getLocale()); + comp = optionPanel.getComponent(); + } + + TitledBorder titledBorder = new TitledBorder(BorderFactory.createEmptyBorder(4,4,4,4),title); + container.removeAll(); + container.setLayout(new BorderLayout()); + container.setBorder(titledBorder); + container.add( comp,BorderLayout.CENTER); + container.revalidate(); + container.repaint(); + } + + public String getTitle() { + return getString("options"); + } + + /** maps all fields back to the current object.*/ + public void mapToObject() throws RaplaException { + if ( lastOptionPanel != null) + lastOptionPanel.commit(); + } + + public void setObject(Object o) throws RaplaException { + this.preferences = (Preferences) o; + if ( preferences.getOwner() == null) { + messages.setText(getString("restart_options")); + } + TreeFactory f = getTreeFactory(); + DefaultMutableTreeNode root = new DefaultMutableTreeNode(""); + if ( preferences.getOwner() != null) { + Named[] element = getUserOptions(); + for (int i=0; i< element.length; i++) { + root.add( f.newNamedNode( element[i])); + } + } else { + { + Named[] element = getAdminOptions(); + DefaultMutableTreeNode adminRoot = new DefaultMutableTreeNode("admin-options"); + for (int i=0; i< element.length; i++) { + adminRoot.add( f.newNamedNode( element[i])); + } + root.add( adminRoot ); + } + { + Named[] element = getPluginOptions(); + DefaultMutableTreeNode pluginRoot = new DefaultMutableTreeNode("plugins"); + for (int i=0; i< element.length; i++) { + pluginRoot.add( f.newNamedNode( element[i])); + } + root.add( pluginRoot ); + } + } + DefaultTreeModel treeModel = new DefaultTreeModel(root); + jPanelSelection.exchangeTreeModel(treeModel); + } + + public Object getObject() { + return preferences; + } + + public void stateChanged(ChangeEvent evt) { + try { + if ( lastOptionPanel != null) + lastOptionPanel.commit(); + + OptionPanel optionPanel = null; + if ( getSelectedElement() instanceof OptionPanel ) { + optionPanel = (OptionPanel) getSelectedElement(); + if ( optionPanel != null) { + optionPanel.setPreferences( preferences ); + optionPanel.show(); + } + } + lastOptionPanel = optionPanel; + setOptionPanel( lastOptionPanel ); + } catch (Exception ex) { + showException(ex,getComponent()); + } + } + + public Object getSelectedElement() { + return jPanelSelection.getSelectedElement(); + } + + + public JComponent getComponent() { + return jPanelContainer; + } + +} + + + diff --git a/src/org/rapla/gui/internal/edit/RaplaFilterBox.java b/src/org/rapla/gui/internal/edit/RaplaFilterBox.java new file mode 100644 index 0000000..925d387 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/RaplaFilterBox.java @@ -0,0 +1,36 @@ +package org.rapla.gui.internal.edit; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; + +import org.rapla.components.calendar.RaplaComboBox; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.common.CalendarSelectionModel; + +public class RaplaFilterBox extends RaplaComboBox { + ClassifiableFilterEdit ui; + public RaplaFilterBox(RaplaContext context, CalendarSelectionModel filterObj) throws RaplaException { + super(new TestComponent()); + + boolean isResourceOnly = true; + ui = new ClassifiableFilterEdit( context, isResourceOnly); + JPanel mainPanel = new JPanel(); + + mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); + ui.setFilter(filterObj); + + // TODO Auto-generated constructor stub + } + + @Override + protected JComponent getPopupComponent() { + return ui.getComponent(); + } + + static class TestComponent extends JPanel + { + + } +} diff --git a/src/org/rapla/gui/internal/edit/RaplaListEdit.java b/src/org/rapla/gui/internal/edit/RaplaListEdit.java new file mode 100644 index 0000000..586ad40 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/RaplaListEdit.java @@ -0,0 +1,315 @@ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.ListModel; +import javax.swing.UIManager; +import javax.swing.border.EmptyBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.rapla.components.calendar.NavButton; +import org.rapla.components.calendar.RaplaArrowButton; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.gui.toolkit.RaplaColorList; +import org.rapla.gui.toolkit.RaplaWidget; + +final public class RaplaListEdit implements + RaplaWidget +{ + boolean coloredBackground = false; + int oldIndex = -1; + + JPanel mainPanel = new JPanel(); + + JLabel statusBar = new JLabel(); + JPanel identifierPanel = new JPanel(); + JLabel identifier = new JLabel(); + JLabel nothingSelectedLabel = new JLabel(); + JScrollPane scrollPane; + + NavButton prev = new NavButton('^'); + NavButton next = new NavButton('v'); + + RaplaArrowButton moveUpButton = new RaplaArrowButton('^', 25); + RaplaArrowButton moveDownButton = new RaplaArrowButton('v', 25); + + Color selectionBackground = UIManager.getColor("List.selectionBackground"); + Color background = UIManager.getColor("List.background"); + + JPanel jointPanel = new JPanel() { + private static final long serialVersionUID = 1L; + + int xa[] = new int[4]; + int ya[] = new int[4]; + public void paint(Graphics g) { + super.paint(g); + Dimension dim = getSize(); + int index = list.getSelectedIndex(); + + Rectangle rect = list.getCellBounds(index,index); + if (rect != null) { + int y = rect.y -scrollPane.getViewport().getViewPosition().y; + int y1= Math.min(dim.height,Math.max(0, y) + scrollPane.getLocation().y); + int y2= Math.min(dim.height,Math.max(0,y + rect.height) + scrollPane.getLocation().y); + xa[0]=0; + ya[0]=y1; + xa[1]=dim.width; + ya[1]=0; + xa[2]=dim.width; + ya[2]=dim.height; + xa[3]=0; + ya[3]=y2; + g.setColor(selectionBackground); + g.fillPolygon(xa,ya,4); + g.setColor(background); + g.drawLine(xa[0],ya[0],xa[1],ya[1]); + g.drawLine(xa[3],ya[3],xa[2],ya[2]); + } + } + }; + JPanel content = new JPanel(); + JPanel detailContainer = new JPanel(); + JPanel editPanel = new JPanel(); + + JList list = new JList() { + private static final long serialVersionUID = 1L; + + public void setModel(ListModel model) { + super.setModel( model ); + model.addListDataListener(new ListDataListener() { + public void contentsChanged(ListDataEvent e) { + modelUpdate(); + } + public void intervalAdded(ListDataEvent e) { + } + public void intervalRemoved(ListDataEvent e) { + } + }); + } + }; + + RaplaButton createNewButton = new RaplaButton(); + RaplaButton removeButton = new RaplaButton(); + + CardLayout cardLayout = new CardLayout(); + private Listener listener = new Listener(); + private ActionListener callback; + + public RaplaListEdit(I18nBundle i18n, JComponent detailContent,ActionListener callback) throws RaplaException { + this.callback = callback; + JPanel toolbar = new JPanel(); + toolbar.setLayout( new BoxLayout( toolbar, BoxLayout.X_AXIS)); + toolbar.add(createNewButton); + toolbar.add(removeButton); + toolbar.add(Box.createHorizontalStrut(5)); + toolbar.add(moveUpButton); + toolbar.add(moveDownButton); + mainPanel.setLayout(new TableLayout(new double[][] { + {TableLayout.PREFERRED,TableLayout.PREFERRED,TableLayout.FILL} + ,{TableLayout.FILL} + })); + jointPanel.setPreferredSize(new Dimension(15,50)); + mainPanel.add(content,"0,0"); + mainPanel.add(jointPanel,"1,0"); + mainPanel.add(editPanel,"2,0"); + editPanel.setLayout(cardLayout); + editPanel.add(nothingSelectedLabel, "0"); + editPanel.add(detailContainer, "1"); + content.setLayout(new BorderLayout()); + content.add(toolbar,BorderLayout.NORTH); + scrollPane = new JScrollPane(list + ,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS + ,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setPreferredSize(new Dimension(310,80)); + content.add(scrollPane, BorderLayout.CENTER); + content.add(statusBar, BorderLayout.SOUTH); + detailContainer.setLayout(new BorderLayout()); + editPanel.setBorder(BorderFactory.createRaisedBevelBorder()); + detailContainer.add(identifierPanel,BorderLayout.WEST); + detailContainer.add(detailContent, BorderLayout.CENTER); + //mainPanel.setBorder(new LineBorder(Color.black)); + + identifierPanel.setLayout(new BorderLayout()); + identifierPanel.add(prev,BorderLayout.NORTH); + identifierPanel.add(identifier,BorderLayout.CENTER); + identifierPanel.add(next,BorderLayout.SOUTH); + identifier.setBorder(new EmptyBorder(0,5,0,5)); + + next.addActionListener(listener); + prev.addActionListener(listener); + removeButton.addActionListener(listener); + createNewButton.addActionListener(listener); + moveUpButton.addActionListener(listener); + moveDownButton.addActionListener(listener); + + scrollPane.getViewport().addChangeListener(listener); + + // list.setDragEnabled(true); + list.addMouseListener(listener); + + list.addListSelectionListener(listener); + + modelUpdate(); + + createNewButton.setText(i18n.getString("new")); + createNewButton.setIcon(i18n.getIcon("icon.new")); + removeButton.setIcon(i18n.getIcon("icon.delete")); + removeButton.setText(i18n.getString("delete")); + nothingSelectedLabel.setHorizontalAlignment(JLabel.CENTER); + nothingSelectedLabel.setText(i18n.getString("nothing_selected")); + + } + + public JComponent getComponent() { + return mainPanel; + } + + public JLabel getStatusBar() { + return statusBar; + } + + public JList getList() { + return list; + } + + public void setListDimension(Dimension d) { + scrollPane.setPreferredSize(d); + } + + public void setMoveButtonVisible(boolean visible) { + moveUpButton.setVisible(visible); + moveDownButton.setVisible(visible); + } + + public int getSelectedIndex() { + return list.getSelectedIndex(); + } + + public void select(int index) { + list.setSelectedIndex(index); + if (index >=0) { + list.ensureIndexIsVisible(index); + } + } + + public void setColoredBackgroundEnabled(boolean enable) { + coloredBackground = enable; + } + + public boolean isColoredBackgroundEnabled() { + return coloredBackground; + } + + private void modelUpdate() { + removeButton.setEnabled(list.getMinSelectionIndex() >=0); + moveUpButton.setEnabled(list.getMinSelectionIndex() > 0); + moveDownButton.setEnabled(list.getMinSelectionIndex() >= 0 && + list.getMaxSelectionIndex() < (list.getModel().getSize() -1) ); + jointPanel.repaint(); + } + + + private void editSelectedEntry() { + Object selected = list.getSelectedValue(); + if (selected == null) { + cardLayout.first(editPanel); + return; + } else { + cardLayout.last(editPanel); + int index = getSelectedIndex(); + next.setEnabled((index + 1)0); + Color color = RaplaColorList.getAppointmentColor(0); + if ( isColoredBackgroundEnabled() ) { + color = RaplaColorList.getAppointmentColor(index); + } + identifierPanel.setBackground(color); + identifier.setText(String.valueOf(index + 1)); + + callback.actionPerformed(new ActionEvent(this + ,ActionEvent.ACTION_PERFORMED + ,"edit" + ) + ); + } + } + + class Listener extends MouseAdapter implements ListSelectionListener,ActionListener,ChangeListener { + public void actionPerformed(ActionEvent evt) { + if (evt.getSource() == next) { + select(Math.min(list.getModel().getSize()-1, getSelectedIndex() + 1)); + } else if (evt.getSource() == prev) { + select(Math.max(0, getSelectedIndex()-1)); + } + if (evt.getSource() == removeButton) { + callback.actionPerformed(new ActionEvent(RaplaListEdit.this + ,ActionEvent.ACTION_PERFORMED + ,"remove" + ) + ); + } else if (evt.getSource() == createNewButton) { + callback.actionPerformed(new ActionEvent(RaplaListEdit.this + ,ActionEvent.ACTION_PERFORMED + ,"new" + ) + ); + } else if (evt.getSource() == moveUpButton) { + callback.actionPerformed(new ActionEvent(RaplaListEdit.this + ,ActionEvent.ACTION_PERFORMED + ,"moveUp" + ) + ); + } else if (evt.getSource() == moveDownButton) { + callback.actionPerformed(new ActionEvent(RaplaListEdit.this + ,ActionEvent.ACTION_PERFORMED + ,"moveDown" + ) + ); + } + } + + public void valueChanged(ListSelectionEvent evt) { + //if (evt.getValueIsAdjusting()) + //return; + int index = getSelectedIndex(); + if (index != oldIndex) { + oldIndex = index; + editSelectedEntry(); + modelUpdate(); + } + } + + public void stateChanged(ChangeEvent evt) { + if (evt.getSource() == scrollPane.getViewport()) { + jointPanel.repaint(); + } + } + } +} + + + diff --git a/src/org/rapla/gui/internal/edit/RaplaTreeEdit.java b/src/org/rapla/gui/internal/edit/RaplaTreeEdit.java new file mode 100644 index 0000000..b9962ba --- /dev/null +++ b/src/org/rapla/gui/internal/edit/RaplaTreeEdit.java @@ -0,0 +1,206 @@ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreePath; + +import org.rapla.components.layout.TableLayout; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.framework.RaplaException; +import org.rapla.gui.toolkit.RaplaWidget; +import org.rapla.gui.toolkit.RecursiveNode; + +final class RaplaTreeEdit implements + RaplaWidget +{ + int oldIndex = -1; + + JPanel mainPanel = new JPanel(); + + JLabel nothingSelectedLabel = new JLabel(); + JScrollPane scrollPane; + + Color selectionBackground = UIManager.getColor("List.selectionBackground"); + Color background = UIManager.getColor("List.background"); + + JPanel jointPanel = new JPanel() { + private static final long serialVersionUID = 1L; + + int xa[] = new int[4]; + int ya[] = new int[4]; + public void paint(Graphics g) { + super.paint(g); + TreePath selectedPath = tree.getPathForRow( getSelectedIndex() ); + Rectangle rect = tree.getPathBounds( selectedPath ); + Dimension dim = getSize(); + if (rect != null) { + int y = rect.y -scrollPane.getViewport().getViewPosition().y; + int y1= Math.min(dim.height,Math.max(0, y) + scrollPane.getLocation().y); + int y2= Math.min(dim.height,Math.max(0,y + rect.height) + scrollPane.getLocation().y); + xa[0]=0; + ya[0]=y1; + xa[1]=dim.width; + ya[1]=0; + xa[2]=dim.width; + ya[2]=dim.height; + xa[3]=0; + ya[3]=y2; + g.setColor(selectionBackground); + g.fillPolygon(xa,ya,4); + g.setColor(background); + g.drawLine(xa[0],ya[0],xa[1],ya[1]); + g.drawLine(xa[3],ya[3],xa[2],ya[2]); + } + } + }; + JPanel content = new JPanel(); + JPanel detailContainer = new JPanel(); + JPanel editPanel = new JPanel(); + + JTree tree = new JTree() { + private static final long serialVersionUID = 1L; + + public void setModel(TreeModel model) { + super.setModel( model ); + model.addTreeModelListener(new TreeModelListener() { + public void treeNodesChanged(TreeModelEvent e) { + modelUpdate(); + } + public void treeNodesInserted(TreeModelEvent e) { + } + public void treeNodesRemoved(TreeModelEvent e) { + } + public void treeStructureChanged(TreeModelEvent e) { + } + }); + } + }; + + CardLayout cardLayout = new CardLayout(); + private Listener listener = new Listener(); + private ActionListener callback; + I18nBundle i18n; + + public RaplaTreeEdit(I18nBundle i18n,JComponent detailContent,ActionListener callback) throws RaplaException { + this.i18n = i18n; + this.callback = callback; + mainPanel.setLayout(new TableLayout(new double[][] { + {TableLayout.PREFERRED,TableLayout.PREFERRED,TableLayout.FILL} + ,{TableLayout.FILL} + })); + jointPanel.setPreferredSize(new Dimension(20,50)); + mainPanel.add(content,"0,0"); + mainPanel.add(jointPanel,"1,0"); + mainPanel.add(editPanel,"2,0"); + editPanel.setLayout(cardLayout); + editPanel.add(nothingSelectedLabel, "0"); + editPanel.add(detailContainer, "1"); + content.setLayout(new BorderLayout()); + scrollPane = new JScrollPane(tree + ,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS + ,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setPreferredSize(new Dimension(310,80)); + content.add(scrollPane, BorderLayout.CENTER); + detailContainer.setLayout(new BorderLayout()); + editPanel.setBorder(BorderFactory.createRaisedBevelBorder()); + detailContainer.add(detailContent, BorderLayout.CENTER); + scrollPane.getViewport().addChangeListener(listener); + + tree.addMouseListener(listener); + tree.addTreeSelectionListener(listener); + + modelUpdate(); + nothingSelectedLabel.setHorizontalAlignment(JLabel.CENTER); + nothingSelectedLabel.setText(i18n.getString("nothing_selected")); + } + + public JComponent getComponent() { + return mainPanel; + } + + public JTree getTree() { + return tree; + } + + public void setListDimension(Dimension d) { + scrollPane.setPreferredSize(d); + } + + public int getSelectedIndex() { + return tree.getMinSelectionRow(); + } + + public void select(int index) { + tree.setSelectionRow(index); + if (index >=0) { + TreePath selectedPath = tree.getPathForRow(index); + tree.makeVisible( selectedPath ); + } + } + + private void modelUpdate() { + jointPanel.repaint(); + } + + public Object getSelectedValue() { + TreePath treePath = tree.getSelectionPath(); + if (treePath == null) + return null; + return ((RecursiveNode)treePath.getLastPathComponent()).getUserObject(); + } + + private void editSelectedEntry() { + Object selected = getSelectedValue(); + if (selected == null) { + cardLayout.first(editPanel); + return; + } else { + cardLayout.last(editPanel); + callback.actionPerformed(new ActionEvent(this + ,ActionEvent.ACTION_PERFORMED + ,"edit" + ) + ); + } + } + + class Listener extends MouseAdapter implements TreeSelectionListener,ChangeListener { + public void valueChanged(TreeSelectionEvent evt) { + int index = getSelectedIndex(); + if (index != oldIndex) { + oldIndex = index; + editSelectedEntry(); + modelUpdate(); + } + } + + public void stateChanged(ChangeEvent evt) { + if (evt.getSource() == scrollPane.getViewport()) { + jointPanel.repaint(); + } + } + } +} + diff --git a/src/org/rapla/gui/internal/edit/TextField.java b/src/org/rapla/gui/internal/edit/TextField.java new file mode 100644 index 0000000..ca55821 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/TextField.java @@ -0,0 +1,108 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.text.JTextComponent; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class TextField extends AbstractEditField implements ActionListener,FocusListener,KeyListener { + JTextComponent field; + JScrollPane scrollPane; + Object oldValue; + public TextField(RaplaContext sm,String fieldName) throws RaplaException { + this( sm,fieldName, 1, DEFAULT_LENGTH); + } + + public TextField(RaplaContext sm,String fieldName, int rows, int columns) throws RaplaException { + super( sm); + setFieldName( fieldName ); + if ( rows > 1 ) { + field = new JTextArea(); + scrollPane = new JScrollPane( field, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); + ((JTextArea) field).setColumns( columns); + ((JTextArea) field).setRows( rows ); + } else { + field = new JTextField( columns); + } + addCopyPaste( field); + field.addFocusListener(this); + field.addKeyListener(this); + setValue(""); + } + + protected Object getValue() { + return field.getText().trim(); + } + + protected void setValue(Object object) { + if (object == null) + object = ""; + field.setText((String)object); + oldValue = (String) object; + } + public JComponent getComponent() { + if ( scrollPane != null ) { + return scrollPane; + } else { + return field; + } + } + + public void actionPerformed(ActionEvent evt) { + if (field.getText().equals(oldValue)) + return; + oldValue = field.getText(); + fireContentChanged(); + } + + public void focusLost(FocusEvent evt) { + if (field.getText().equals(oldValue)) + return; + oldValue = field.getText(); + fireContentChanged(); + } + + public void focusGained(FocusEvent evt) { + Component focusedComponent = evt.getComponent(); + Component parent = focusedComponent.getParent(); + if(parent instanceof JPanel) { + ((JPanel)parent).scrollRectToVisible(focusedComponent.getBounds(null)); + } + } + + public void keyPressed(KeyEvent evt) {} + public void keyTyped(KeyEvent evt) {} + public void keyReleased(KeyEvent evt) { + if (field.getText().equals(oldValue)) + return; + oldValue = field.getText(); + fireContentChanged(); + } + +} + diff --git a/src/org/rapla/gui/internal/edit/UserEditUI.java b/src/org/rapla/gui/internal/edit/UserEditUI.java new file mode 100644 index 0000000..faf36c5 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/UserEditUI.java @@ -0,0 +1,389 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.DefaultListModel; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JToolBar; +import javax.swing.JTree; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.TreeFactory; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.gui.toolkit.RaplaTree; + +/**************************************************************** + * This is the controller-class for the User-Edit-Panel * + ****************************************************************/ + +/*User + 1. username, string + 2. name,string + 3. email,string, + 4. isadmin,boolean +*/ + +class UserEditUI extends AbstractEditUI { + + /** + * @param sm + * @throws RaplaException + */ + public UserEditUI(RaplaContext sm) throws RaplaException { + super(sm); + EditField[] fields = new EditField[] { + new TextField(sm,"username") + // ,new BooleanField(sm,"maptoperson") + ,new PersonSelectField(sm) + ,new TextField(sm,"name") + ,new TextField(sm,"email") + ,new BooleanField(sm,"admin") + ,new GroupListField(sm) + }; + setFields(fields); + } + + class GroupListField extends AbstractEditField implements ChangeListener, ActionListener { + User user; + DefaultListModel model = new DefaultListModel(); + + JPanel panel = new JPanel(); + JToolBar toolbar = new JToolBar(); + + CategorySelectField newCategory; + RaplaButton removeButton = new RaplaButton(RaplaButton.SMALL); + RaplaButton newButton = new RaplaButton(RaplaButton.SMALL); + JList list = new JList(); + + /** + * @param sm + * @throws RaplaException + */ + public GroupListField(RaplaContext sm) throws RaplaException { + super(sm); + final Category rootCategory = getQuery().getUserGroupsCategory(); + if ( rootCategory == null ) + return; + newCategory = new CategorySelectField(sm,"group", rootCategory ); + newCategory.setUseNullCategory( false); + toolbar.add( newButton ); + toolbar.add( removeButton ); + toolbar.setFloatable( false ); + panel.setLayout( new BorderLayout() ); + panel.add( toolbar, BorderLayout.NORTH ); + final JScrollPane jScrollPane = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + jScrollPane.setPreferredSize( new Dimension( 300, 150 ) ); + panel.add( jScrollPane, BorderLayout.CENTER ); + newButton.setText( getString( "group" ) + " " + getString( "add" ) ); + removeButton.setText( getString( "group" ) + " " + getString( "remove" ) ); + newButton.setIcon( getIcon( "icon.new" ) ); + removeButton.setIcon( getIcon( "icon.remove" ) ); + newCategory.addChangeListener( this ); + newButton.addActionListener( this ); + removeButton.addActionListener( this ); + + list.setCellRenderer(new DefaultListCellRenderer() { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent(JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) + { + if ( value != null ) { + Category category = (Category) value; + value = category.getPath( rootCategory + , getI18n().getLocale()); + } + return super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus); + } + } + ); + } + + public JComponent getComponent() { + return panel; + } + + public boolean isBlock() { + return true; + } + + public boolean isVariableSized() { + return false; + } + + public void mapFrom(Object o) throws RaplaException { + user = (User) o; + model.clear(); + Category[] groups = user.getGroups();; + for ( int i = 0; i < groups.length; i++ ) { + model.addElement( groups[i] ); + } + list.setModel(model); + } + + protected Object getValue() { + return null; + } + + protected void setValue(Object object) { + } + + public void mapTo(Object o) throws RaplaException { + } + + public void actionPerformed(ActionEvent evt) { + if ( evt.getSource() == newButton) + { + try { + newCategory.showDialog(newButton); + } catch (RaplaException ex) { + showException(ex,newButton); + } + } + if ( evt.getSource() == removeButton) + { + for ( Object value: list.getSelectedValues()) + { + Category group = (Category) value; + if (group != null) { + user.removeGroup( group ); + model.removeElement( group ); + fireContentChanged(); + } + } + } + + } + + public void stateChanged(ChangeEvent evt) { + Category newGroup = (Category) newCategory.getValue(); + if ( ! user.belongsTo( newGroup ) ) { + user.addGroup( newGroup ); + model.addElement( newGroup ); + fireContentChanged(); + } + } + } + + class PersonSelectField extends AbstractEditField implements ChangeListener, ActionListener { + User user; + + JPanel panel = new JPanel(); + JToolBar toolbar = new JToolBar(); + + RaplaButton newButton = new RaplaButton(RaplaButton.SMALL); + RaplaButton removeButton = new RaplaButton(RaplaButton.SMALL); + + /** + * @param sm + * @throws RaplaException + */ + public PersonSelectField(RaplaContext sm) throws RaplaException { + super(sm); + final Category rootCategory = getQuery().getUserGroupsCategory(); + if ( rootCategory == null ) + return; + toolbar.add( newButton ); + toolbar.add( removeButton ); + toolbar.setFloatable( false ); + panel.setLayout( new BorderLayout() ); + panel.add( toolbar, BorderLayout.NORTH ); + newButton.addActionListener( this ); + removeButton.addActionListener( this ); + removeButton.setText( getString("remove") ); + removeButton.setIcon( getIcon( "icon.remove" ) ); + newButton.setText( getString("add") ); + newButton.setIcon( getIcon( "icon.new" ) ); + + } + + private void updateButton() { + final boolean personSet = user != null && user.getPerson() != null; + removeButton.setEnabled( personSet) ; + newButton.setEnabled( !personSet) ; + + fields[2].getComponent().setEnabled( !personSet); + fields[3].getComponent().setEnabled( !personSet); + + } + + public JComponent getComponent() { + return panel; + } + + public boolean isBlock() { + return false; + } + + public boolean isVariableSized() { + return false; + } + + public String getName() + { + return getString("bind_with_person"); + } + public void mapFrom(Object o) throws RaplaException { + user = (User) o; + updateButton(); + + } + + protected Object getValue() { + return null; + } + + protected void setValue(Object object) { + } + + public void mapTo(Object o) throws RaplaException { + } + + public void actionPerformed(ActionEvent evt) { + if ( evt.getSource() == newButton) + { + + try { + showAddDialog(); + } catch (RaplaException ex) { + showException(ex,newButton); + } + + } + + if ( evt.getSource() == removeButton) + { + user.setPerson( null ); + updateButton(); + } + + } + + public void stateChanged(ChangeEvent evt) { + } + + private void showAddDialog() throws RaplaException { + final DialogUI dialog; + RaplaTree treeSelection = new RaplaTree(); + treeSelection.setMultiSelect(true); + final TreeFactory treeFactory = getTreeFactory(); + treeSelection.getTree().setCellRenderer(treeFactory.createRenderer()); + + final DynamicType[] personTypes = getQuery().getDynamicTypes(DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION); + List filters = new ArrayList(); + for (DynamicType personType: personTypes) + { + if ( personType.getAttribute("email") != null) + { + final ClassificationFilter filter = personType.newClassificationFilter(); + filters.add( filter); + } + } + final Allocatable[] allocatables = getQuery().getAllocatables(filters.toArray(ClassificationFilter.CLASSIFICATIONFILTER_ARRAY)); + List allocatablesWithEmail = new ArrayList(); + for ( Allocatable a: allocatables) + { + final Classification classification = a.getClassification(); + final Attribute attribute = classification.getAttribute("email"); + if ( attribute != null) + { + final String email = (String)classification.getValue(attribute); + if (email != null && email.length() > 0) + { + allocatablesWithEmail.add( a ); + } + } + } + final Classifiable[] allocatableArray = allocatablesWithEmail.toArray(Classifiable.CLASSIFIABLE_ARRAY); + treeSelection.exchangeTreeModel(treeFactory.createClassifiableModel(allocatableArray)); + treeSelection.setMinimumSize(new java.awt.Dimension(300, 200)); + treeSelection.setPreferredSize(new java.awt.Dimension(400, 260)); + + + dialog = DialogUI.create( + getContext() + ,getComponent() + ,true + ,treeSelection + ,new String[] { getString("apply"),getString("cancel")}); + final JTree tree = treeSelection.getTree(); + tree.addMouseListener(new MouseAdapter() { + // End dialog when a leaf is double clicked + public void mousePressed(MouseEvent e) { + TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); + if (selPath != null && e.getClickCount() == 2) { + final Object lastPathComponent = selPath.getLastPathComponent(); + if (((TreeNode) lastPathComponent).isLeaf() ) + dialog.getButton(0).doClick(); + } + else if (selPath != null && e.getClickCount() == 1) { + final Object lastPathComponent = selPath.getLastPathComponent(); + if (((TreeNode) lastPathComponent).isLeaf() ) + dialog.getButton(0).setEnabled(true); + else + dialog.getButton(0).setEnabled(false); + } + } + }); + dialog.setTitle(getName()); + dialog.start(); + if (dialog.getSelectedIndex() == 0) { + Iterator it = treeSelection.getSelectedElements().iterator(); + while (it.hasNext()) { + user.setPerson((Allocatable) it.next()); + fields[2].mapFrom( user); + fields[3].mapFrom( user); + updateButton(); + } + } + } + } + + final private TreeFactory getTreeFactory() { + return (TreeFactory) getService(TreeFactory.ROLE); + } + +} diff --git a/src/org/rapla/gui/internal/edit/package.html b/src/org/rapla/gui/internal/edit/package.html new file mode 100644 index 0000000..691f8ad --- /dev/null +++ b/src/org/rapla/gui/internal/edit/package.html @@ -0,0 +1,6 @@ + +Edit-dialogs for all rapla entities. + + + + diff --git a/src/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.java b/src/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.java new file mode 100644 index 0000000..10f5f7a --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.java @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.util.ArrayList; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.entities.domain.Appointment; +/** Provides AppointmentListener handling.*/ +public class AbstractAppointmentEditor extends RaplaGUIComponent { + ArrayList listenerList = new ArrayList(); + + public AbstractAppointmentEditor(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void addAppointmentListener(AppointmentListener listener) { + listenerList.add(listener); + } + + public void removeAppointmentListener(AppointmentListener listener) { + listenerList.remove(listener); + } + + public AppointmentListener[] getAppointmentListeners() { + return (AppointmentListener[])listenerList.toArray(new AppointmentListener[]{}); + } + + protected void fireAppointmentAdded(Appointment appointment) { + AppointmentListener[] listeners = getAppointmentListeners(); + for (int i = 0;i + * GUI for editing the allocations of a reservation. Presents two TreeTables. The left one displays + * all available Resources and Persons the right one all selected Resources and Persons. + *

    + *

    + * The second column of the first table contains information about the availability on the + * appointments of the reservation. In the second column of the second table the user can add + * special Restrictions on the selected Resources and Persons. + *

    + * + * @see Reservation + * @see Allocatable + */ +public class AllocatableSelection extends RaplaGUIComponent implements AppointmentListener, PopupListener, RaplaWidget +{ + JSplitPane content = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); + JPanel leftPanel = new JPanel(); + JTreeTable completeTable; + RaplaButton btnAdd = new RaplaButton(RaplaButton.SMALL); + RaplaButton btnCalendar1 = new RaplaButton(RaplaButton.SMALL); + JPanel rightPanel = new JPanel(); + JTreeTable selectedTable; + RaplaButton btnRemove = new RaplaButton(RaplaButton.SMALL); + RaplaButton btnCalendar2 = new RaplaButton(RaplaButton.SMALL); + + Reservation mutableReservation; + + AllocatablesModel completeModel = new CompleteModel(); + AllocatablesModel selectedModel = new SelectedModel(); + AppointmentCellEditor appointmentCellEditor; + Map appointmentMap = new HashMap(); + Appointment[] appointments; + String[] appointmentStrings; + String[] appointmentIndexStrings; + + CalendarSelectionModel calendarModel; + EventListenerList listenerList = new EventListenerList(); + Listener listener = new Listener(); + + //FilterAction filterAction; + AllocatableAction addAction; + AllocatableAction removeAction; + AllocatableAction calendarAction1; + AllocatableAction calendarAction2; + + User user; + + public AllocatableSelection(RaplaContext sm) throws RaplaException + { + this(sm, false); + } + + public AllocatableSelection(RaplaContext sm, boolean addCalendarButton) throws RaplaException + { + super(sm); + double pre = TableLayout.PREFERRED; + double fill = TableLayout.FILL; + double tableSize[][] = { { pre, 12, pre, 3, fill, pre}, // Columns + { pre, fill } }; // Rows + leftPanel.setLayout(new TableLayout(tableSize)); + + if (addCalendarButton) + leftPanel.add(btnCalendar1, "0,0,l,f"); + leftPanel.add(btnAdd, "5,0,r,f"); + rightPanel.setLayout(new TableLayout(tableSize)); + rightPanel.add(btnRemove, "0,0,l,f"); + if (addCalendarButton) + rightPanel.add(btnCalendar2, "2,0,c,c"); + content.setLeftComponent(leftPanel); + content.setRightComponent(rightPanel); + content.setResizeWeight(0.3); + + appointmentCellEditor = new AppointmentCellEditor(new RestrictionTextField()); + + btnAdd.setEnabled(false); + btnCalendar1.setEnabled(false); + btnRemove.setEnabled(false); + btnCalendar2.setEnabled(false); + + addAction = new AllocatableAction("add"); + removeAction = new AllocatableAction("remove"); + calendarAction1 = new AllocatableAction("calendar1"); + calendarAction2 = new AllocatableAction("calendar2"); + + btnAdd.setAction(addAction); + btnRemove.setAction(removeAction); + btnCalendar1.setAction(calendarAction1); + btnCalendar2.setAction(calendarAction2); + + completeTable = new JTreeTable(completeModel); + Color tableBackground = completeTable.getTree().getBackground(); + JScrollPane leftScrollpane = new JScrollPane(completeTable); + leftScrollpane.getViewport().setBackground(tableBackground); + leftPanel.add(leftScrollpane, "0,1,5,1,f,f"); + completeTable.setGridColor(RaplaColorList.darken(tableBackground, 20)); + completeTable.setToolTipRenderer(new RaplaToolTipRenderer()); + completeTable.getSelectionModel().addListSelectionListener(listener); + completeTable.setDefaultRenderer(Allocatable.class, new AllocationCellRenderer()); + completeTable.addMouseListener(listener); + + selectedTable = new JTreeTable(selectedModel); + JScrollPane rightScrollpane = new JScrollPane(selectedTable); + rightScrollpane.getViewport().setBackground(tableBackground); + rightPanel.add(rightScrollpane, "0,1,5,1,f,f"); + selectedTable.setToolTipRenderer(new RaplaToolTipRenderer()); + selectedTable.getSelectionModel().addListSelectionListener(listener); + selectedTable.setGridColor(RaplaColorList.darken(tableBackground, 20)); + selectedTable.setDefaultRenderer(Appointment[].class, new RestrictionCellRenderer()); + selectedTable.addMouseListener(listener); + + selectedTable.setDefaultEditor(Appointment[].class, appointmentCellEditor); + completeTable.getTree().setCellRenderer(new AllocationTreeCellRenderer(false)); + selectedTable.getTree().setCellRenderer(new AllocationTreeCellRenderer(true)); + completeTable.getColumnModel().getColumn(0).setMinWidth(60); + completeTable.getColumnModel().getColumn(0).setPreferredWidth(120); + completeTable.getColumnModel().getColumn(1).sizeWidthToFit(); + selectedTable.getColumnModel().getColumn(0).setMinWidth(60); + selectedTable.getColumnModel().getColumn(0).setPreferredWidth(120); + selectedTable.getColumnModel().getColumn(1).sizeWidthToFit(); + content.setDividerLocation(0.3); + + calendarModel = (CalendarSelectionModel) ((CalendarSelectionModel) getService(CalendarSelectionModel.ROLE)).clone(); + FilterEdit filter = new FilterEdit( sm, calendarModel); + leftPanel.add(filter.getButton(), "4,0,r,f"); +// filterAction = new FilterAction(getContext(), getComponent(), null); +// filterAction.setFilter(calendarModel); +// filterAction.setResourceOnly(true); + } + + public void addChangeListener(ChangeListener listener) + { + listenerList.add(ChangeListener.class, listener); + } + + public void removeChangeListener(ChangeListener listener) + { + listenerList.remove(ChangeListener.class, listener); + } + + final private TreeFactory getTreeFactory() + { + return (TreeFactory) getService(TreeFactory.ROLE); + } + + protected void fireAllocationsChanged() + { + ChangeEvent evt = new ChangeEvent(this); + Object[] listeners = listenerList.getListenerList(); + for (int i = listeners.length - 2; i >= 0; i -= 2) + { + if (listeners[i] == ChangeListener.class) + { + ((ChangeListener) listeners[i + 1]).stateChanged(evt); + } + } + } + + public void refresh(ModificationEvent evt) throws RaplaException + { + boolean updateBindings = false; + { + if (evt.isModified(Allocatable.TYPE)) + { + updateBindings = true; + completeModel.setAllocatables(getAllAllocatables(), completeTable.getTree()); + } + } + { + Set allocatables = new HashSet(selectedModel.getAllocatables()); + Set removed = evt.getRemoved(allocatables); + Set changed = evt.getChanged(allocatables); + if (changed.size() > 0 || removed.size() > 0) + { + updateBindings = true; + Iterator it = removed.iterator(); + while (it.hasNext()) + { + Object obj = it.next(); + mutableReservation.removeAllocatable((Allocatable) obj); + allocatables.remove(obj); + } + + selectedModel.setAllocatables(allocatables, selectedTable.getTree()); + } + updateButtons(); + } + if (updateBindings || evt.isModified(Reservation.TYPE)) + updateBindings(mutableReservation.getAppointments()); + + } + + /** Implementation of appointment listener */ + public void appointmentAdded(Appointment appointment) + { + setAppointments(mutableReservation.getAppointments()); + updateBindings(new Appointment[] { appointment }); + } + + public void appointmentChanged(Appointment appointment) + { + setAppointments(mutableReservation.getAppointments()); + updateBindings(new Appointment[] { appointment }); + } + + private void updateBindings(Appointment[] appointments) + { + try + { + // System.out.println("getting allocated resources"); + for (int i = 0; i < appointments.length; i++) + { + Appointment appointment = appointments[i]; + Set allocatables = new HashSet(Arrays.asList(getQuery().getAllocatableBindings(appointment))); + appointmentMap.put(appointment, allocatables); + } + completeModel.treeDidChange(); + selectedModel.treeDidChange(); + } + catch (RaplaException ex) + { + showException(ex, content); + } + } + + public void appointmentRemoved(Appointment appointment) + { + appointmentMap.remove(appointment); + setAppointments(mutableReservation.getAppointments()); + updateBindings(appointments); + } + + public JComponent getComponent() + { + return content; + } + + private List getAllocatableList(Allocatable[] allocatables) throws RaplaException + { + List result = Arrays.asList(allocatables); + return result; + } + + private List getAllAllocatables() throws RaplaException + { + Allocatable[] allocatables = getQuery().getAllocatables(calendarModel.getAllocatableFilter()); + return getAllocatableList(allocatables); + + } + + private List getAllocated() throws RaplaException + { + return getAllocatableList(mutableReservation.getAllocatables()); + } + + private boolean bWorkaround = false; // Workaround for Bug ID 4480264 on developer.java.sun.com + + public void setReservation(Reservation mutableReservation) throws RaplaException + { + this.mutableReservation = mutableReservation; + this.user = getUser(); + //filter = getQuery().getAllocatableFilter("*"); + setAppointments(mutableReservation.getAppointments()); + List allocatableList = getAllAllocatables(); + completeModel.setAllocatables(allocatableList); + // Expand allocatableTree if only one DynamicType + final CalendarModel calendarModel = (CalendarModel) getService(CalendarModel.ROLE); + completeModel.expandObjects(calendarModel.getSelectedObjectsAndChildren(), completeTable.getTree()); + selectedModel.setAllocatables(getAllocated(), selectedTable.getTree()); + updateBindings(appointments); + updateButtons(); + JTree tree = selectedTable.getTree(); + for (int i = 0; i < tree.getRowCount(); i++) + tree.expandRow(i); + + // Workaround for Bug ID 4480264 on developer.java.sun.com + bWorkaround = true; + if (selectedTable.getRowCount() > 0) + { + selectedTable.editCellAt(1, 1); + selectedTable.editCellAt(1, 0); + } + bWorkaround = false; + //filterAction.removePropertyChangeListener(listener); +// filterAction.addPropertyChangeListener(listener); +// btnFilter.setAction(filterAction); + // We have to add this after processing, because the Adapter in the JTreeTable does the same + SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + completeModel.selectObjects(calendarModel.getSelectedObjects(), completeTable.getTree()); + } + }); + } + + private void setAppointments(Appointment[] appointments) + { + this.appointments = appointments; + this.appointmentStrings = new String[appointments.length]; + this.appointmentIndexStrings = new String[appointments.length]; + for (int i = 0; i < appointments.length; i++) + { + this.appointmentStrings[i] = getAppointmentFormater().getVeryShortSummary(appointments[i]); + this.appointmentIndexStrings[i] = getRaplaLocale().formatNumber(i + 1); + } + } + + private boolean isAllocatableSelected(JTreeTable table) + { + return isElementSelected(table, true); + } + + private boolean isElementSelected(JTreeTable table, boolean allocatablesOnly) + { + int start = table.getSelectionModel().getMinSelectionIndex(); + int end = table.getSelectionModel().getMaxSelectionIndex(); + if (start >= 0) + { + for (int i = start; i <= end; i++) + { + TreePath path = table.getTree().getPathForRow(i); + if (path != null && (!allocatablesOnly || ((DefaultMutableTreeNode) path.getLastPathComponent()).getUserObject() instanceof Allocatable)) + return true; + } + } + return false; + } + + public Set getMarkedAllocatables() + { + return new HashSet(getSelectedAllocatables(completeTable.getTree())); + } + + protected Collection getSelectedAllocatables(JTree tree) + { + return getSelectedElements(tree, true); + } + + protected Collection getSelectedElements(JTree tree, boolean allocatablesOnly) + { + TreePath[] path = tree.getSelectionPaths(); + int size = 0; + if (path != null) + size = path.length; + Collection list = new ArrayList(); + for (int i = 0; i < size; i++) + { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) path[i].getLastPathComponent(); + Object obj = node.getUserObject(); + if (obj != null && (!allocatablesOnly || obj instanceof Allocatable)) + list.add(obj); + } + return list; + } + + protected void remove(Collection elements) throws RaplaException + { + Iterator it = elements.iterator(); + boolean bChanged = false; + while (it.hasNext()) + { + Allocatable a = (Allocatable) it.next(); + if (mutableReservation.hasAllocated(a)) + { + mutableReservation.removeAllocatable(a); + bChanged = true; + } + } + if (bChanged) + { + selectedModel.setAllocatables(getAllocated(), selectedTable.getTree()); + } + fireAllocationsChanged(); + } + + protected void add(Collection elements) throws RaplaException + { + Iterator it = elements.iterator(); + boolean bChanged = false; + while (it.hasNext()) + { + Allocatable a = (Allocatable) it.next(); + if (!mutableReservation.hasAllocated(a)) + { + mutableReservation.addAllocatable(a); + bChanged = true; + } + } + if (bChanged) + { + selectedModel.setAllocatables(getAllocated(), selectedTable.getTree()); + selectedModel.expandObjects(elements, selectedTable.getTree()); + } + fireAllocationsChanged(); + } + + private Date findFirstStart() + { + Date firstStart = null; + for (int i = 0; i < appointments.length; i++) + if (firstStart == null || appointments[i].getStart().before(firstStart)) + firstStart = appointments[i].getStart(); + return firstStart; + } + + private void updateButtons() + { + { + boolean enable = isElementSelected(completeTable, false); + calendarAction1.setEnabled(enable); + enable = enable && isAllocatableSelected(completeTable); + addAction.setEnabled(enable); + } + { + boolean enable = isElementSelected(selectedTable, false); + calendarAction2.setEnabled(enable); + enable = enable && isAllocatableSelected(selectedTable); + removeAction.setEnabled(enable); + } + } + + class Listener extends MouseAdapter implements ListSelectionListener, MouseListener + { + public void valueChanged(ListSelectionEvent e) + { + updateButtons(); + } + + public void mousePressed(MouseEvent me) + { + if (me.isPopupTrigger()) + firePopup(me); + } + + public void mouseReleased(MouseEvent me) + { + if (me.isPopupTrigger()) + firePopup(me); + } + + public void mouseClicked(MouseEvent evt) + { + if (evt.getClickCount() < 2) + return; + JTreeTable table = (JTreeTable) evt.getSource(); + int row = table.rowAtPoint(new Point(evt.getX(), evt.getY())); + if (row < 0) + return; + Object obj = table.getValueAt(row, 0); + if (!(obj instanceof Allocatable)) + return; + try + { + if (table == completeTable) + add(getSelectedAllocatables(completeTable.getTree())); + else + remove(getSelectedAllocatables(selectedTable.getTree())); + } + catch (RaplaException ex) + { + showException(ex, content); + } + } + + + } + + protected void firePopup(MouseEvent me) + { + Point p = new Point(me.getX(), me.getY()); + JTreeTable table = ((JTreeTable) me.getSource()); + int row = table.rowAtPoint(p); + int column = table.columnAtPoint(p); + Object selectedObject = null; + if (row >= 0 && column >= 0) + selectedObject = table.getValueAt(row, column); + //System.out.println("row " + row + " column " + column + " selected " + selectedObject); + showPopup(new PopupEvent(table, selectedObject, p)); + } + + public void showPopup(PopupEvent evt) + { + try + { + Point p = evt.getPoint(); + JTreeTable table = ((JTreeTable) evt.getSource()); + RaplaPopupMenu menu = new RaplaPopupMenu(); + if (table == completeTable) + { + menu.add(new JMenuItem(addAction)); + menu.add(new JMenuItem(calendarAction1)); + } + else + { + menu.add(new JMenuItem(removeAction)); + menu.add(new JMenuItem(calendarAction2)); + } + getQuery().getUsers(); + menu.show(table, p.x, p.y); + } + catch (RaplaException ex) + { + showException(ex, getComponent()); + } + } + + class CompleteModel extends AllocatablesModel + { + public int getColumnCount() + { + return 2; + } + + public boolean isCellEditable(Object node, int column) + { + return false; + } + + public Object getValueAt(Object node, int column) + { + return ((DefaultMutableTreeNode) node).getUserObject(); + } + + public String getColumnName(int column) + { + switch (column) + { + case 0: + return getString("selectable"); + case 1: + return getString("selectable_on"); + } + throw new IndexOutOfBoundsException(); + } + + public Class getColumnClass(int column) + { + switch (column) + { + case 0: + return TreeTableModel.class; + case 1: + return Allocatable.class; + } + throw new IndexOutOfBoundsException(); + } + + } + + class SelectedModel extends AllocatablesModel + { + public int getColumnCount() + { + return 2; + } + + public boolean isCellEditable(Object node, int column) + { + if (column == 1 && bWorkaround) + return true; + Object o = ((DefaultMutableTreeNode) node).getUserObject(); + if (column == 1 && o instanceof Allocatable) + return true; + else + return false; + } + + public Object getValueAt(Object node, int column) + { + Object o = ((DefaultMutableTreeNode) node).getUserObject(); + if (o instanceof Allocatable) + { + switch (column) + { + case 0: + return o; + case 1: + return mutableReservation.getRestriction((Allocatable) o); + } + } + if (o instanceof DynamicType) + { + return o; + } + return o; + //throw new IndexOutOfBoundsException(); + } + + public void setValueAt(Object value, Object node, int column) + { + Object o = ((DefaultMutableTreeNode) node).getUserObject(); + if (column == 1 && o instanceof Allocatable && value instanceof Appointment[]) + { + if (mutableReservation.getRestriction((Allocatable) o) != value) + { + mutableReservation.setRestriction((Allocatable) o, (Appointment[]) value); + fireAllocationsChanged(); + } + } + fireTreeNodesChanged(node, ((DefaultMutableTreeNode) node).getPath(), new int[] {}, new Object[] {}); + } + + public String getColumnName(int column) + { + switch (column) + { + case 0: + return getString("selected"); + case 1: + return getString("selected_on"); + } + throw new IndexOutOfBoundsException(); + } + + public Class getColumnClass(int column) + { + switch (column) + { + case 0: + return TreeTableModel.class; + case 1: + return Appointment[].class; + } + throw new IndexOutOfBoundsException(); + } + } + + abstract class AllocatablesModel extends AbstractTreeTableModel implements TreeTableModel + { + TreeModel treeModel; + + public AllocatablesModel() + { + super(new DefaultMutableTreeNode()); + treeModel = new DefaultTreeModel((DefaultMutableTreeNode) super.getRoot()); + } + + // Types of the columns. + Collection allocatables; + + public void setAllocatables(Collection allocatables) throws RaplaException + { + this.allocatables = allocatables; + treeModel = getTreeFactory().createClassifiableModel((org.rapla.entities.domain.Allocatable[]) allocatables.toArray(Allocatable.ALLOCATABLE_ARRAY)); + DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + int childCount = root.getChildCount(); + int[] childIndices = new int[childCount]; + Object[] children = new Object[childCount]; + for (int i = 0; i < childCount; i++) + { + childIndices[i] = i; + children[i] = root.getChildAt(i); + } + fireTreeStructureChanged(root, root.getPath(), childIndices, children); + } + + public void setAllocatables(Collection allocatables, JTree tree) throws RaplaException + { + this.allocatables = allocatables; + Collection expanded = new HashSet(); + for (int i = 0; i < tree.getRowCount(); i++) + { + if (tree.isExpanded(i)) + { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getPathForRow(i).getLastPathComponent(); + expanded.add(node.getUserObject()); + } + } + setAllocatables(allocatables); + expandNodes(expanded, tree); + } + + void expandNodes(Collection expanded, JTree tree) + { + if (expanded.size() == 0) + return; + for (int i = 0; i < tree.getRowCount(); i++) + { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getPathForRow(i).getLastPathComponent(); + if (expanded.contains(node.getUserObject())) + { + tree.expandRow(i); + } + } + + } + + public Collection getAllocatables() + { + return allocatables; + } + + public void expandObjects(Collection expandedNodes, JTree tree) + { + // we need an enumeration, because we modife the set + Enumeration enumaration = ((DefaultMutableTreeNode) getRoot()).preorderEnumeration(); + while (enumaration.hasMoreElements()) + { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) enumaration.nextElement(); + Iterator it = expandedNodes.iterator(); + while (it.hasNext()) + { + if (it.next().equals(node.getUserObject())) + { + DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent(); + int row = tree.getRowForPath(new TreePath(parent.getPath())); + tree.expandRow(row); + } + } + } + } + + public void selectObjects(Collection expandedNodes, JTree tree) + { + Enumeration enumaration = ((DefaultMutableTreeNode) getRoot()).preorderEnumeration(); + List selectionPaths = new ArrayList(); + while (enumaration.hasMoreElements()) + { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) enumaration.nextElement(); + Iterator it = expandedNodes.iterator(); + while (it.hasNext()) + { + if (it.next().equals(node.getUserObject())) + { + selectionPaths.add(new TreePath(node.getPath())); + } + } + } + tree.setSelectionPaths((TreePath[]) selectionPaths.toArray(new TreePath[] {})); + } + + public void treeDidChange() + { + DefaultMutableTreeNode root = (DefaultMutableTreeNode) getRoot(); + int childCount = root.getChildCount(); + int[] childIndices = new int[childCount]; + Object[] children = new Object[childCount]; + for (int i = 0; i < childCount; i++) + { + childIndices[i] = i; + children[i] = root.getChildAt(i); + } + fireTreeNodesChanged(root, root.getPath(), childIndices, children); + } + + public Object getRoot() + { + return treeModel.getRoot(); + } + + public int getChildCount(Object node) + { + return treeModel.getChildCount(node); + } + + public Object getChild(Object node, int i) + { + return treeModel.getChild(node, i); + } + } + + class RestrictionCellRenderer extends DefaultTableCellRenderer + { + private static final long serialVersionUID = 1L; + + Object newValue; + JButton button = new JButton(); + + public void setValue(Object value) + { + newValue = value; + super.setValue(""); + } + + public void setBounds(int x, int y, int width, int heigth) + { + super.setBounds(x, y, width, heigth); + button.setBounds(x, y, width, heigth); + } + + public void paint(Graphics g) + { + Object value = newValue; + if (value instanceof Appointment[]) + { + super.paint(g); + java.awt.Font f = g.getFont(); + button.paint(g); + g.setFont(f); + paintRestriction(g, (Appointment[]) value, this); + } + } + } + + class AllocationCellRenderer extends DefaultTableCellRenderer + { + private static final long serialVersionUID = 1L; + + Object newValue; + + public void setValue(Object value) + { + newValue = value; + super.setValue(""); + } + + public void paint(Graphics g) + { + Object value = newValue; + super.paint(g); + if (value instanceof Allocatable) + { + paintAllocation(g, (Allocatable) value, this); + } + } + } + + class RaplaToolTipRenderer implements TableToolTipRenderer + { + public String getToolTipText(JTable table, int row, int column) + { + Object value = table.getValueAt(row, column); + return getInfoFactory().getToolTip(value); + } + } + + private int indexOf(Appointment appointment) + { + for (int i = 0; i < appointments.length; i++) + if (appointments[i].equals(appointment)) + return i; + return -1; + } + + private boolean conflictingAppointments[]; // stores the temp conflicting appointments + private int conflictCount; // temp value for conflicts + private int permissionConflictCount; // temp value for conflicts that are the result of denied permissions + + // returns if the user is allowed to allocate the passed allocatable + private boolean isAllowed(Allocatable allocatable, Appointment appointment) + { + Date start = appointment.getStart(); + Date end = appointment.getMaxEnd(); + Date today = getQuery().today(); + return allocatable.canAllocate(user, start, end, today); + } + + // calculates the number of conflicting appointments for this allocatable + private void calcConflictingAppointments(Allocatable allocatable) + { + if (conflictingAppointments == null || conflictingAppointments.length != appointments.length) + conflictingAppointments = new boolean[appointments.length]; + conflictCount = 0; + permissionConflictCount = 0; + final boolean holdBackConflicts = allocatable.isHoldBackConflicts(); + for (int i = 0; i < appointments.length; i++) + { + Set allocatables = (Set) appointmentMap.get(appointments[i]); + conflictingAppointments[i] = false; + + if (allocatables != null && allocatables.contains(allocatable) ) + { + if ( ! holdBackConflicts) + { + conflictingAppointments[i] = true; + conflictCount++; + } + } + else if (!isAllowed(allocatable, appointments[i]) ) + { + if ( ! holdBackConflicts) + { + conflictingAppointments[i] = true; + conflictCount++; + } + permissionConflictCount++; + } + } + } + + private void paintAllocation(Graphics g, Allocatable allocatable, JComponent c) + { + calcConflictingAppointments(allocatable); + if (appointments.length == 0) + { + } + else if (conflictCount == 0) + { + g.setColor(Color.green); + g.drawString(getString("every_appointment"), 2, c.getHeight() - 4); + return; + } /* + * else if (conflictCount == appointments.length) { + * g.setColor(Color.red); + * g.drawString(getString("zero_appointment"),2,c.getHeight()-4); + * return; + * } + */ + int x = 2; + Insets insets = c.getInsets(); + FontMetrics fm = g.getFontMetrics(); + for (int i = 0; i < appointments.length; i++) + { + if (conflictingAppointments[i]) + continue; + x = paintApp(c, g, fm, i, insets, x); + } + } + + private void paintRestriction(Graphics g, Appointment[] restriction, JComponent c) + { + if (restriction.length == 0) + { + g.drawString(getString("every_appointment"), 2, c.getHeight() - 4); + return; + } + int x = 0; + Insets insets = c.getInsets(); + FontMetrics fm = g.getFontMetrics(); + for (int i = 0; i < appointments.length; i++) + { + for (int j = 0; j < restriction.length; j++) + { + if (restriction[j].equals(appointments[i])) + x = paintApp(c, g, fm, i, insets, x); + } + } + } + + private int paintApp(Component c, Graphics g, FontMetrics fm, int index, Insets insets, int x) + { + int xborder = 4; + int yborder = 1; + int width = fm.stringWidth(appointmentIndexStrings[index]); + x += xborder; + g.setColor(RaplaColorList.getAppointmentColor(index)); + g.fillRoundRect(x, insets.top, width, c.getHeight() - insets.top - insets.bottom - yborder * 2, 4, 4); + g.setColor(c.getForeground()); + g.drawRoundRect(x - 1, insets.top, width + 1, c.getHeight() - insets.top - insets.bottom - yborder * 2, 4, 4); + g.drawString(appointmentIndexStrings[index], x, c.getHeight() - yborder - fm.getDescent()); + x += width; + x += 2; + int textWidth = fm.stringWidth(appointmentStrings[index]); + g.drawString(appointmentStrings[index], x, c.getHeight() - fm.getDescent()); + x += textWidth; + x += xborder; + return x; + } + + class RestrictionTextField extends JTextField + { + private static final long serialVersionUID = 1L; + + Object newValue; + + public void setValue(Object value) + { + newValue = value; + } + + public void paint(Graphics g) + { + Object value = newValue; + super.paint(g); + if (value instanceof Appointment[]) + { + paintRestriction(g, (Appointment[]) value, this); + } + } + } + + class AppointmentCellEditor extends DefaultCellEditor implements TableCellEditor, MouseListener, KeyListener, PopupMenuListener, ActionListener + { + private static final long serialVersionUID = 1L; + + JPopupMenu menu = new JPopupMenu(); + RestrictionTextField editingComponent; + boolean bStopEditingCalled = false; /* + * We need this variable + * to check if + * stopCellEditing + * was already called. + */ + + DefaultMutableTreeNode selectedNode; + int selectedColumn = 0; + Appointment[] restriction; + + public AppointmentCellEditor(RestrictionTextField textField) + { + super(textField); + editingComponent = (RestrictionTextField) this.getComponent(); + editingComponent.setEditable(false); + + editingComponent.addMouseListener(this); + editingComponent.addKeyListener(this); + menu.addPopupMenuListener(this); + } + + public void mouseReleased(MouseEvent evt) + { + showComp(); + } + + public void mousePressed(MouseEvent evt) + { + } + + public void mouseClicked(MouseEvent evt) + { + } + + public void mouseEntered(MouseEvent evt) + { + } + + public void mouseExited(MouseEvent evt) + { + } + + public void keyPressed(KeyEvent evt) + { + } + + public void keyTyped(KeyEvent evt) + { + } + + public void keyReleased(KeyEvent evt) + { + showComp(); + } + + /** + * This method is performed, if the user clicks on a menu item of the + * JPopupMenu in order to select invividual appointments + * for a resource. + * + * Changed in Rapla 1.4 + */ + public void actionPerformed(ActionEvent evt) + { + // Refresh the selected appointments for the resource which is being edited + updateRestriction(Integer.valueOf(evt.getActionCommand()).intValue()); + + if (evt.getSource() instanceof javax.swing.JCheckBoxMenuItem) + { + // Refresh the state of the "every Appointment" menu item + ((JMenuItem) allMenu).setSelected(restriction.length == 0); + } + else + { + // "every Appointment" has been selected, stop editing + fireEditingStopped(); + selectedTable.requestFocus(); + } + } + + public void popupMenuWillBecomeVisible(PopupMenuEvent e) + { + bStopEditingCalled = false; + } + + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) + { + if (!bStopEditingCalled) + { + AppointmentCellEditor.super.stopCellEditing(); + } + } + + public void popupMenuCanceled(PopupMenuEvent e) + { + // BUGID: 4234793 + // This method is never called + } + + SmallIntMap appointmentList = new SmallIntMap(); + JMenuItem allMenu = new JRadioButtonMenuItem(); + + /** + * This method builds and shows the JPopupMenu for the appointment selection + * + * Changed in Rapla 1.4 + */ + private void showComp() + { + Object selectedObject = selectedNode.getUserObject(); + Allocatable allocatable = null; + if (selectedObject instanceof Allocatable) + { + allocatable = (Allocatable) selectedObject; + calcConflictingAppointments(allocatable); + } + Icon conflictIcon = getI18n().getIcon("icon.allocatable_taken"); + allMenu.setText(getString("every_appointment")); + appointmentList.clear(); + menu.removeAll(); + allMenu.setActionCommand("-1"); + allMenu.addActionListener(this); + menu.add(new JMenuItem(getString("close"))); + menu.add(new JSeparator()); + menu.add(allMenu); + + menu.add(new JSeparator()); + for (int i = 0; i < appointments.length; i++) + { + JMenuItem item = new JCheckBoxMenuItem(); + + // Prevent the JCheckboxMenuItem from closing the JPopupMenu + item.setUI(new StayOpenCheckBoxMenuItemUI()); + + // set conflicting icon if appointment causes conflicts + String appointmentSummary = getAppointmentFormater().getShortSummary(appointments[i]); + if (allocatable != null && conflictingAppointments[i]) + { + item.setText((i + 1) + ": " + appointmentSummary); + item.setIcon(conflictIcon); + } + else + { + item.setText((i + 1) + ": " + appointmentSummary); + } + appointmentList.put(i, item); + item.setBackground(RaplaColorList.getAppointmentColor(i)); + item.setActionCommand(String.valueOf(i)); + item.addActionListener(this); + menu.add(item); + } + + for (int i = 0; i < appointments.length; i++) + { + ((JMenuItem) appointmentList.get(i)).setSelected(false); + } + + Appointment[] apps = restriction; + ((JMenuItem) allMenu).setSelected(apps.length == 0); + for (int i = 0; i < apps.length; i++) + { + // System.out.println("Select " + indexOf(apps[i])); + ((JMenuItem) appointmentList.get(indexOf(apps[i]))).setSelected(true); + } + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + Dimension menuSize = menu.getPreferredSize(); + Point location = editingComponent.getLocationOnScreen(); + int diffx = Math.min(0, screenSize.width - (location.x + menuSize.width)); + int diffy = Math.min(0, screenSize.height - (location.y + menuSize.height)); + menu.show(editingComponent, diffx, diffy); + } + + private void setRestriction(Appointment[] restriction) + { + this.restriction = restriction; + } + + /** select or deselect the appointment at the given index */ + private void updateRestriction(int index) + { + if (index < 0) + { + restriction = Appointment.EMPTY_ARRAY; + } + else + { + Collection newAppointments = new ArrayList(); + // get the selected appointments + + // add all previous selected appointments, except the appointment that + // is clicked + for (int i = 0; i < restriction.length; i++) + if (!restriction[i].equals(appointments[index])) + { + newAppointments.add(restriction[i]); + } + + // If the clicked appointment was selected then deselect + // otherwise select ist + if (!containsAppointment(appointments[index])) + newAppointments.add(appointments[index]); + restriction = (Appointment[]) newAppointments.toArray(Appointment.EMPTY_ARRAY); + } + // Workaround for JDK 1.4 Bug ID: 4234793 + // We have to change the table-model after cell-editing stopped + selectedModel.setValueAt(restriction, selectedNode, selectedColumn); + } + + private boolean containsAppointment(Appointment appointment) + { + for (int i = 0; i < restriction.length; i++) + if (restriction[i].equals(appointment)) + return true; + return false; + } + + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) + { + Component component = super.getTableCellEditorComponent(table, value, isSelected, row, column); + if (value instanceof Appointment[]) + { + setRestriction((Appointment[]) value); + ((RestrictionTextField) component).setText(""); + } + + ((RestrictionTextField) component).setValue(value); + // Workaround for JDK 1.4 Bug ID: 4234793 + // We have to change the table-model after cell-editing stopped + this.selectedNode = (DefaultMutableTreeNode) selectedTable.getTree().getPathForRow(row).getLastPathComponent(); + this.selectedColumn = column; + return component; + } + + public Object getCellEditorValue() + { + return restriction; + } + + public boolean shouldSelectCell(EventObject event) + { + return true; + } + + public boolean isCellEditable(EventObject event) + { + return true; + } + + public boolean stopCellEditing() + { + bStopEditingCalled = true; + boolean bResult = super.stopCellEditing(); + menu.setVisible(false); + return bResult; + } + } + + class AllocationTreeCellRenderer extends DefaultTreeCellRenderer + { + private static final long serialVersionUID = 1L; + + Icon conflictIcon; + Icon freeIcon; + Icon notAlwaysAvailableIcon; + Icon personIcon; + Icon personNotAlwaysAvailableIcon; + Icon forbiddenIcon; + boolean checkRestrictions; + + public AllocationTreeCellRenderer(boolean checkRestrictions) + { + forbiddenIcon = getI18n().getIcon("icon.no_perm"); + conflictIcon = getI18n().getIcon("icon.allocatable_taken"); + freeIcon = getI18n().getIcon("icon.allocatable_available"); + notAlwaysAvailableIcon = getI18n().getIcon("icon.allocatable_not_always_available"); + personIcon = getI18n().getIcon("icon.tree.persons"); + personNotAlwaysAvailableIcon = getI18n().getIcon("icon.tree.person_not_always_available"); + this.checkRestrictions = checkRestrictions; + setOpenIcon(getI18n().getIcon("icon.folder")); + setClosedIcon(getI18n().getIcon("icon.folder")); + setLeafIcon(freeIcon); + } + + public Icon getAvailableIcon(Allocatable allocatable) + { + if (allocatable.isPerson()) + return personIcon; + else + return freeIcon; + } + + public Icon getNotAlwaysAvailableIcon(Allocatable allocatable) + { + if (allocatable.isPerson()) + return personNotAlwaysAvailableIcon; + else + return notAlwaysAvailableIcon; + } + + private Icon getIcon(Allocatable allocatable) + { + calcConflictingAppointments(allocatable); + if (conflictCount == 0) + { + return getAvailableIcon(allocatable); + } + else if (conflictCount == appointments.length) + { + if (conflictCount == permissionConflictCount) + { + if (!checkRestrictions) + { + return forbiddenIcon; + } + } + else + { + return conflictIcon; + } + } + else if (!checkRestrictions) + { + return getNotAlwaysAvailableIcon(allocatable); + } + for (int i = 0; i < appointments.length; i++) + { + Appointment appointment = appointments[i]; + if (mutableReservation.hasAllocated(allocatable, appointment) && !getQuery().hasPermissionToAllocate(appointment, allocatable)) + { + return forbiddenIcon; + } + } + if (permissionConflictCount - conflictCount == 0) + { + return getAvailableIcon(allocatable); + } + Appointment[] restriction = mutableReservation.getRestriction(allocatable); + if (restriction.length == 0) + { + return conflictIcon; + } + else + { + boolean conflict = false; + for (int i = 0; i < restriction.length; i++) + { + Set allocatables = (Set) appointmentMap.get(restriction[i]); + if (allocatables.contains(allocatable)) + { + conflict = true; + break; + } + } + if (conflict) + return conflictIcon; + else + return getNotAlwaysAvailableIcon(allocatable); + } + } + + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) + { + DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; + Object nodeInfo = node.getUserObject(); + if (nodeInfo != null && nodeInfo instanceof Named) + { + value = ((Named) nodeInfo).getName(getI18n().getLocale()); + } + + if (leaf) + { + if (nodeInfo instanceof Allocatable) + { + setLeafIcon(getIcon((Allocatable) nodeInfo)); + } + } + Component result = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + + return result; + } + + } + + class AllocatableAction extends AbstractAction + { + private static final long serialVersionUID = 1L; + + String command; + + AllocatableAction(String command) + { + this.command = command; + if (command.equals("add")) + { + putValue(NAME, getString("add")); + putValue(SMALL_ICON, getIcon("icon.arrow_right")); + + } + if (command.equals("remove")) + { + putValue(NAME, getString("remove")); + putValue(SMALL_ICON, getIcon("icon.arrow_left")); + } + if (command.equals("calendar1") || command.equals("calendar2")) + { + putValue(NAME, getString("calendar")); + putValue(SMALL_ICON, getIcon("icon.calendar")); + } + } + + public void actionPerformed(ActionEvent evt) + { + try + { + if (command.equals("add")) + { + add(getSelectedAllocatables(completeTable.getTree())); + } + if (command.equals("remove")) + { + remove(getSelectedAllocatables(selectedTable.getTree())); + } + if (command.indexOf("calendar") >= 0) + { + JTree tree = (command.equals("calendar1") ? completeTable.getTree() : selectedTable.getTree()); + CalendarAction calendarAction = new CalendarAction(getContext(), getComponent(), calendarModel); + calendarAction.changeObjects(new ArrayList(getSelectedElements(tree, false))); + calendarAction.setStart(findFirstStart()); + calendarAction.actionPerformed(evt); + } + } + catch (RaplaException ex) + { + showException(ex, content); + } + } + } + + +/** + * This class is used to prevent the JPopupMenu from disappearing when a + * JCheckboxMenuItem is clicked. + * + * @since Rapla 1.4 + * @see http://forums.oracle.com/forums/thread.jspa?messageID=5724401#5724401 + */ + class StayOpenCheckBoxMenuItemUI extends BasicCheckBoxMenuItemUI + { + protected void doClick(MenuSelectionManager msm) + { + menuItem.doClick(0); + } + } + + public class FilterEdit extends RaplaGUIComponent + { + protected RaplaArrowButton filterButton; + Popup popup; + ClassifiableFilterEdit ui; + + public FilterEdit(final RaplaContext context,final CalendarSelectionModel model) throws RaplaException + { + super(context); + filterButton = new RaplaArrowButton('v'); + filterButton.setText(getString("filter")); + filterButton.setSize(80,18); + filterButton.addActionListener( new ActionListener() + { + public void actionPerformed(ActionEvent e) { + + if ( popup != null) + { + popup.hide(); + popup= null; + filterButton.setChar('v'); + return; + } + boolean isResourceOnly = true; + try { + if ( ui != null) + { + ui.removeChangeListener( listener); + } + ui = new ClassifiableFilterEdit( context, isResourceOnly); + ui.addChangeListener(listener); + ui.setFilter( model); + final Point locationOnScreen = filterButton.getLocationOnScreen(); + final int y = locationOnScreen.y + 18; + final int x = locationOnScreen.x; + popup = PopupFactory.getSharedInstance().getPopup( filterButton, ui.getComponent(), x, y); + popup.show(); + filterButton.setChar('^'); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + + }); + + } + + private ChangeListener listener = new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + try { + final ClassificationFilter[] filters = ui.getFilters(); + calendarModel.setAllocatableFilter( filters); + completeModel.setAllocatables(getAllAllocatables(), completeTable.getTree()); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + }; + public JComponent getButton() + { + return filterButton; + } + + } +} \ No newline at end of file diff --git a/src/org/rapla/gui/internal/edit/reservation/AppointmentController.java b/src/org/rapla/gui/internal/edit/reservation/AppointmentController.java new file mode 100644 index 0000000..2d04393 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/AppointmentController.java @@ -0,0 +1,1167 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.ButtonGroup; +import javax.swing.DefaultListCellRenderer; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import javax.swing.JScrollPane; +import javax.swing.SwingConstants; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.container.ContainerUtil; +import org.rapla.components.calendar.DateChangeEvent; +import org.rapla.components.calendar.DateChangeListener; +import org.rapla.components.calendar.RaplaCalendar; +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.components.calendar.RaplaTime; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.RepeatingEnding; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.ReservationHelper; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.CalendarOptions; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.PeriodChooser; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.MonthChooser; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.gui.toolkit.RaplaWidget; +import org.rapla.gui.toolkit.WeekdayChooser; + +/** GUI for editing a single Appointment. */ +public class AppointmentController extends RaplaGUIComponent + implements + Disposable + ,RaplaWidget +{ + JPanel panel = new JPanel(); + + SingleEditor singleEditor = new SingleEditor(); + + JPanel repeatingSelection = new JPanel(); + JPanel repeatingContainer = new JPanel(); + RepeatingEditor repeatingEditor = new RepeatingEditor(); + + Appointment appointment; + Repeating repeating; + + ArrayList listenerList = new ArrayList(); + JPanel repeatingType = new JPanel(); + JRadioButton noRepeating = new JRadioButton(); + JRadioButton weeklyRepeating = new JRadioButton(); + JRadioButton dailyRepeating = new JRadioButton(); + JRadioButton monthlyRepeating = new JRadioButton(); + JRadioButton yearlyRepeating = new JRadioButton(); + + CardLayout repeatingCard = new CardLayout(); + // Button for splitting appointments + RaplaButton convertButton = new RaplaButton(); + + public AppointmentController(RaplaContext sm) throws RaplaException { + super( sm); + panel.setLayout(new BorderLayout()); + panel.add(repeatingType,BorderLayout.NORTH); + repeatingType.setLayout(new BoxLayout(repeatingType,BoxLayout.X_AXIS)); + repeatingType.add(noRepeating); + repeatingType.add(weeklyRepeating); + repeatingType.add(dailyRepeating); + repeatingType.add(monthlyRepeating); + repeatingType.add(yearlyRepeating); + + repeatingType.add( Box.createHorizontalStrut(40)); + repeatingType.add(convertButton); + ButtonGroup buttonGroup = new ButtonGroup(); + buttonGroup.add( noRepeating ); + buttonGroup.add( weeklyRepeating ); + buttonGroup.add( dailyRepeating ); + buttonGroup.add( monthlyRepeating ); + buttonGroup.add( yearlyRepeating ); + + panel.add(repeatingContainer,BorderLayout.CENTER); + + Border emptyLineBorder = new Border() { + Insets insets = new Insets(1,0,0,0); + Color COLOR = Color.LIGHT_GRAY; + public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) + { + g.setColor( COLOR ); + g.drawLine(0,0, c.getWidth(), 0); + + } + + public Insets getBorderInsets( Component c ) + { + return insets; + } + + public boolean isBorderOpaque() + { + return true; + } + + }; + + Border outerBorder = (BorderFactory.createCompoundBorder( + BorderFactory.createEmptyBorder(0,5,0,5) + //,BorderFactory.createEmptyBorder() + ,emptyLineBorder + ) + ); + + repeatingContainer.setBorder(BorderFactory.createCompoundBorder( + outerBorder + ,BorderFactory.createEmptyBorder(10,5,10,5) + ) + ); + repeatingContainer.setLayout(repeatingCard); + repeatingContainer.add(singleEditor.getComponent(),"0"); + repeatingContainer.add(repeatingEditor.getComponent(),"1"); + + singleEditor.initialize(); + repeatingEditor.initialize(); + ActionListener listener = new ActionListener() { + public void actionPerformed(ActionEvent evt) { + switchRepeatings(); + } + }; + noRepeating.addActionListener(listener); + weeklyRepeating.addActionListener(listener); + monthlyRepeating.addActionListener(listener); + dailyRepeating.addActionListener(listener); + yearlyRepeating.addActionListener(listener); + noRepeating.setText(getString("no_repeating")); + weeklyRepeating.setText(getString("weekly")); + dailyRepeating.setText(getString("daily")); + monthlyRepeating.setText(getString("monthly")); + yearlyRepeating.setText(getString("yearly")); + // Rapla 1.4: Initialize the split appointment button + convertButton.setText(getString("appointment.convert")); + } + + private void switchRepeatings() { + if (noRepeating.isSelected()) { + repeatingCard.show(repeatingContainer,"0"); + singleEditor.mapFromAppointment(); + appointment.setRepeatingEnabled(false); + } else { + RepeatingType repeatingType; + if ( monthlyRepeating.isSelected()) + { + repeatingType = RepeatingType.MONTHLY; + } + else if ( yearlyRepeating.isSelected()) + { + repeatingType = RepeatingType.YEARLY; + } + else if ( dailyRepeating.isSelected()) + { + repeatingType= RepeatingType.DAILY; + } + else + { + repeatingType = RepeatingType.WEEKLY; + } + int repeatings = getCalendarOptions().isInfiniteRepeating() ? -1 : (1 * getCalendarOptions().getnTimes()); //BJO 00000012 -1:infinite; >0:=n-times + ReservationHelper.makeRepeatingForPeriod(getPeriodModel(), appointment, repeatingType, repeatings ); + repeatingEditor.mapFromAppointment(); + repeatingCard.show(repeatingContainer,"1"); + } + fireAppointmentChanged(); + } + + public void setAppointment(Appointment appointment) { + this.appointment = appointment; + this.repeating = appointment.getRepeating(); + if (appointment.getRepeating() != null) { + repeatingEditor.mapFromAppointment(); + repeatingCard.show(repeatingContainer,"1"); + if (repeating.isWeekly()) + weeklyRepeating.setSelected(true); + if (repeating.isDaily()) + dailyRepeating.setSelected(true); + if (repeating.isMonthly()) + monthlyRepeating.setSelected(true); + if (repeating.isYearly()) + yearlyRepeating.setSelected(true); + } else { + singleEditor.mapFromAppointment(); + repeatingCard.show(repeatingContainer,"0"); + noRepeating.setSelected(true); + } + } + + public Appointment getAppointment() { + return appointment; + } + + public void dispose() { + ContainerUtil.dispose( singleEditor ); + ContainerUtil.dispose( repeatingEditor ); + } + + public JComponent getComponent() { + return panel; + } + + /** registers new ChangeListener for this component. + * An ChangeEvent will be fired to every registered ChangeListener + * when the appointment changes. + * @see javax.swing.event.ChangeListener + * @see javax.swing.event.ChangeEvent + */ + public void addChangeListener(ChangeListener listener) { + listenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeChangeListener(ChangeListener listener) { + listenerList.remove(listener); + } + + public ChangeListener[] getChangeListeners() { + return (ChangeListener[])listenerList.toArray(new ChangeListener[]{}); + } + + protected void fireAppointmentChanged() { + if (listenerList.size() == 0) + return; + ChangeEvent evt = new ChangeEvent(this); + ChangeListener[] listeners = getChangeListeners(); + for (int i = 0;i0) { + exceptionButton.setForeground(Color.red); + } else { + exceptionButton.setForeground(UIManager.getColor("Label.foreground")); + } + String countValue = String.valueOf(count); + if ( count < 9 ) { + countValue =" " + countValue + " "; + } + exceptionButton.setText(getString("appointment.exceptions") + " (" + countValue + ")"); + } + + private void showEnding(int index) { + if (index == REPEAT_UNTIL) { + endDate.setVisible(true); + endDatePeriodPanel.setVisible(isPeriodVisible()); + numberPanel.setVisible(false); + } + if (index == REPEAT_N_TIMES) { + endDate.setVisible(false); + endDatePeriodPanel.setVisible(false); + numberPanel.setVisible(true); + } + if (index == REPEAT_FOREVER) { + endDate.setVisible(false); + endDatePeriodPanel.setVisible(false); + numberPanel.setVisible(false); + } + } + + private void mapFromAppointment() { + if (exceptionDlg != null && exceptionDlg.isVisible()) + exceptionDlg.dispose(); + repeating = appointment.getRepeating(); + if (repeating == null) { + return; + } + listenerEnabled = false; + try { + updateExceptionCount(); + if (exceptionEditor != null) + exceptionEditor.mapFromAppointment(); + + interval.setNumber(new Integer(repeating.getInterval())); + + startDate.setDate(appointment.getStart()); + startDatePeriod.setDate(appointment.getStart()); + startTime.setTime(appointment.getStart()); + endTime.setTime(appointment.getEnd()); + + weekdayInMonthPanel.setVisible(repeating.isMonthly()); + intervalPanel.setVisible( repeating.isDaily() || repeating.isWeekly()); + dayInMonthPanel.setVisible( repeating.isYearly()); + + if ( repeating.getEnd() != null ) { + endDate.setDate(DateTools.subDay(repeating.getEnd())); + endDatePeriod.setDate(DateTools.cutDate(endDate.getDate())); + number.setNumber(new Integer(repeating.getNumber())); + if (!repeating.isFixedNumber()) { + endingChooser.setSelectedIndex(REPEAT_UNTIL); + showEnding(REPEAT_UNTIL); + } else { + endingChooser.setSelectedIndex(REPEAT_N_TIMES); + showEnding(REPEAT_N_TIMES); + } + } else { + endingChooser.setSelectedIndex(REPEAT_FOREVER); + showEnding(REPEAT_FOREVER); + } + + startDatePeriod.setVisible(isPeriodVisible() && ( repeating.isDaily() || repeating.isWeekly()) ); + endDatePeriod.setVisible( repeating.isDaily() || repeating.isWeekly()); + if (repeating.isWeekly() ||repeating.isMonthly()) + { + dayLabel.setVisible(false); + weekdayChooser.setVisible(true); + monthChooser.setVisible(false); + Calendar calendar = getRaplaLocale().createCalendar(); + calendar.setTime(appointment.getStart()); + weekdayChooser.selectWeekday(calendar.get(Calendar.DAY_OF_WEEK)); + } + + if (repeating.isYearly()) + { + dayLabel.setVisible(false); + weekdayChooser.setVisible(false); + monthChooser.setVisible(true); + Calendar cal = getRaplaLocale().createCalendar(); + cal.setTime(appointment.getStart()); + monthChooser.selectMonth(cal.get(Calendar.MONTH) ); + int numb = cal.get( Calendar.DAY_OF_MONTH); + dayInMonth.setNumber( new Integer( numb)); + } + + if (repeating.isMonthly()) + { + Calendar cal = getRaplaLocale().createCalendar(); + cal.setTime( appointment.getStart()); + int numb = cal.get( Calendar.DAY_OF_WEEK_IN_MONTH); + weekdayInMonth.setNumber( new Integer( numb)); + } + + if (repeating.isDaily()) + { + dayLabel.setVisible(true); + weekdayChooser.setVisible(false); + monthChooser.setVisible(false); + } + + String typeString = repeating.getType().toString(); + startDateLabel.setText(getString(typeString) + " " + getString("repeating.start_date")); + + int daysBetween = (int) DateTools.countDays(appointment.getStart(),appointment.getEnd()); + if (daysBetween == 0) { + dayChooser.setSelectedIndex(SAME_DAY); + days.setVisible(false); + } else if (daysBetween == 1) { + dayChooser.setSelectedIndex(NEXT_DAY); + days.setVisible(false); + } else { + dayChooser.setSelectedIndex(X_DAYS); + days.setNumber(new Integer(daysBetween)); + days.setVisible(true); + } + final boolean wholeDaysSet = appointment.isWholeDaysSet(); + startTime.setEnabled( !wholeDaysSet); + endTime.setEnabled( !wholeDaysSet); + dayChooser.setEnabled( !wholeDaysSet); + oneDayEventCheckBox.setSelected( wholeDaysSet ); + } finally { + listenerEnabled = true; + } + convertButton.setEnabled( repeating.getEnd() != null); + getComponent().revalidate(); + } + + private boolean isPeriodVisible() { + try { + return getQuery().getPeriodModel().getSize()>0; + } catch (RaplaException e) { + return false; + } + } + + private void showExceptionDlg() throws RaplaException { + exceptionEditor = new ExceptionEditor(); + exceptionEditor.initialize(); + exceptionEditor.mapFromAppointment(); + exceptionEditor.getComponent().setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); + exceptionDlg = DialogUI.create( + getContext() + ,getComponent() + ,true + ,exceptionEditor.getComponent() + ,new String[] { + getString("back") + }); + exceptionDlg.setTitle(getString("appointment.exceptions")); + exceptionDlg.start(); + updateExceptionCount(); + } + } + + + class ExceptionEditor implements ActionListener,ListSelectionListener { + JPanel content = new JPanel(); + RaplaCalendar exceptionDate; + RaplaButton addButton = new RaplaButton(RaplaButton.SMALL); + RaplaButton removeButton = new RaplaButton(RaplaButton.SMALL); + JList specialExceptions = new JList(); + JList generalExceptions = new JList(new String[] {"Feiertage","Dies academicus"}); + public ExceptionEditor() { + // Create a TableLayout for the frame + double pre =TableLayout.PREFERRED; + double min =TableLayout.MINIMUM; + double fill =TableLayout.FILL; + double yborder = 8; + double size[][] = + {{pre,pre,0.1,50,100,0.9}, // Columns + {yborder,min,min,fill}}; // Rows + TableLayout tableLayout = new TableLayout(size); + content.setLayout(tableLayout); + } + + public JComponent getComponent() { + return content; + } + + public void initialize() { + addButton.setText(getString("add") ); + addButton.setIcon( getIcon("icon.arrow_right")); + removeButton.setText( getString("remove")); + removeButton.setIcon( getIcon("icon.arrow_left")); + exceptionDate = createRaplaCalendar(); + /* + this.add(new JLabel(getString("appointment.exception.general") + " "),"0,1"); + this.add(new JScrollPane(generalExceptions + ,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS + ,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER) + ,"1,1,1,3,t"); + */ + JLabel label =new JLabel(getString("appointment.exception.days") + " "); + label.setHorizontalAlignment(SwingConstants.RIGHT); + content.add(label,"3,1,4,1,r,t"); + content.add(exceptionDate,"5,1,l,t"); + content.add(addButton,"4,2,f,t"); + content.add(removeButton,"4,3,f,t"); + content.add(new JScrollPane(specialExceptions + ,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS + ,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER) + ,"5,2,5,3,t"); + generalExceptions.setEnabled(false); + + addButton.addActionListener(this); + removeButton.addActionListener(this); + specialExceptions.addListSelectionListener(this); + removeButton.setEnabled(false); + specialExceptions.setFixedCellWidth(200); + specialExceptions.setCellRenderer(new DefaultListCellRenderer() { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent(JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) { + if (value instanceof Date) + value = getRaplaLocale().formatDateLong((Date)value); + return super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus); + } + }); + specialExceptions.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent evt) { + if (evt.getClickCount()>1) { + removeException(); + } + } + }); + } + + public void mapFromAppointment() { + if (appointment.getRepeating() == null) + specialExceptions.setListData(new Object[0]); + else + specialExceptions.setListData(appointment.getRepeating().getExceptions()); + // exceptionDate.setDate( appointment.getStart()); + Date expDate = appointment.getReservation().getSelectedSlotDate(); + if( expDate == null) + exceptionDate.setDate( appointment.getStart()); + else + exceptionDate.setDate(expDate); + } + + public void actionPerformed(ActionEvent evt) { + if (evt.getSource() == addButton) { + addException(); + } + if (evt.getSource() == removeButton) { + removeException(); + } + } + + private void addException() { + Date date = exceptionDate.getDate(); + if (appointment.getRepeating().isException(date.getTime())) { + return; + } + appointment.getRepeating().addException(date); + specialExceptions.setListData(appointment.getRepeating().getExceptions()); + fireAppointmentChanged(); + } + + private void removeException() { + if (specialExceptions.getSelectedValues() == null) + return; + Object[] selectedExceptions = specialExceptions.getSelectedValues(); + for ( int i = 0; i< selectedExceptions.length;i++) { + appointment.getRepeating().removeException((Date)selectedExceptions[i]); + } + specialExceptions.setListData(appointment.getRepeating().getExceptions()); + fireAppointmentChanged(); + } + + public void valueChanged(ListSelectionEvent e) { + if (e.getSource() == specialExceptions) { + removeButton.setEnabled(specialExceptions.getSelectedValue() != null); + } + } + } + + private class ListRenderer extends DefaultListCellRenderer { + private static final long serialVersionUID = 1L; + + public Component getListCellRendererComponent(JList list,Object value, int index, boolean isSelected, boolean cellHasFocus) { + if ( value != null) { + setText(getString( value.toString())); + } + return this; + } + } +} + + diff --git a/src/org/rapla/gui/internal/edit/reservation/AppointmentIdentifier.java b/src/org/rapla/gui/internal/edit/reservation/AppointmentIdentifier.java new file mode 100644 index 0000000..9d73d90 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/AppointmentIdentifier.java @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.Insets; +import java.awt.FontMetrics; +import java.awt.Graphics; +import javax.swing.JLabel; +import org.rapla.gui.toolkit.RaplaColorList; + +/** A label with a background-color corresponding to the index + of the appointment. + @see RaplaColorList#getAppointmentColor + */ +public class AppointmentIdentifier extends JLabel { + private static final long serialVersionUID = 1L; + + String text; + int index = 0; + public void setIndex(int index) { + this.index = index; + } + public void setText(String text) { + this.text = text; + super.setText(text + " "); + } + + public void paintComponent(Graphics g) { + FontMetrics fm = g.getFontMetrics(); + Insets insets = getInsets(); + String s = text; + int width = fm.stringWidth(s); + int x = 1; + g.setColor(RaplaColorList.getAppointmentColor(index)); + g.fillRoundRect(x + ,insets.top + ,width +1 + ,getHeight()-insets.top -insets.bottom-1,4,4); + g.setColor(getForeground()); + g.drawRoundRect(x-1 + ,insets.top + ,width +2 + ,getHeight()-insets.top -insets.bottom-1,4,4); + g.drawString(s + ,x + ,getHeight() /2 + fm.getDescent() + 1); + } +} diff --git a/src/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.java b/src/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.java new file mode 100644 index 0000000..994c32a --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.java @@ -0,0 +1,313 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.swing.BoxLayout; +import javax.swing.DefaultListModel; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListCellRenderer; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.apache.avalon.framework.activity.Disposable; +import org.apache.avalon.framework.container.ContainerUtil; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentBlock; +import org.rapla.entities.domain.AppointmentStartComparator; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.edit.RaplaListEdit; +import org.rapla.gui.toolkit.RaplaWidget; + +/** Default GUI for editing multiple appointments.*/ +class AppointmentListEdit extends AbstractAppointmentEditor + implements + RaplaWidget + ,Disposable +{ + + private AppointmentController appointmentController; + private RaplaListEdit listEdit; + + protected Reservation mutableReservation; + private Listener listener = new Listener(); + DefaultListModel model = new DefaultListModel(); + // use sorted model to start with sorting + // respect dependencies ! on other components + //SortedListModel sortedModel = new SortedListModel(model, SortedListModel.SortOrder.ASCENDING, new AppointmentStartComparator()); + + AppointmentListEdit(RaplaContext sm) throws RaplaException { + super( sm); + appointmentController = new AppointmentController(sm); + listEdit = new RaplaListEdit(getI18n(),appointmentController.getComponent(), listener); + appointmentController.addChangeListener(listener); + // activate this as a first step + // listEdit.getList().setModel(sortedModel); + listEdit.getList().setModel(model); + listEdit.setColoredBackgroundEnabled(true); + listEdit.setMoveButtonVisible(false); + JLabel status =listEdit.getStatusBar(); + status.setFont( status.getFont().deriveFont( (float)9.0)); + listEdit.getList().setCellRenderer(new AppointmentCellRenderer()); + } + + public JComponent getComponent() { + return listEdit.getComponent(); + } + + public void setReservation(Reservation mutableReservation, Appointment appointment) { + this.mutableReservation = mutableReservation; + Appointment[] appointments = mutableReservation.getAppointments(); + model.clear(); + for (int i = 0; i 0 ){ + listEdit.select(0); + } + updateStatus(); + } + + public void dispose() { + ContainerUtil.dispose( appointmentController ); + } + + private void removeAppointments() { + Object[] objects = listEdit.getList().getSelectedValues(); + for (int i=0;i -1 ? selectedIndex :appointments.length-1; + final Appointment toClone = appointments[index]; + //this allows each appointment as template + appointment = getReservationController().copyAppointment(toClone); + + Repeating repeating = appointment.getRepeating(); + if (repeating != null) { + repeating.clearExceptions(); + } + + + } + mutableReservation.addAppointment(appointment); + model.addElement(appointment); + + updateStatus(); + fireAppointmentAdded(appointment); + listEdit.select(model.getSize()-1); + } catch (RaplaException ex) { + showException(ex, getComponent()); + } + } + + /** + * Splits a repeating Appointment into single not repeating Appointments + * + * @since Rapla 1.4 + */ + private void splitAppointment() + { + try + { + // Generate time blocks from selected appointment + List splits = new ArrayList(); + Appointment appointment = appointmentController.getAppointment(); + appointment.createBlocks(appointment.getStart(), DateTools.fillDate(appointment.getMaxEnd()), splits); + + // Switch the type of the appointment to single appointment + appointmentController.noRepeating.doClick(); + + // Remove the first time block because it is equal to the appointment + if ( splits.size() > 0) + { + splits.remove(0); + } + // Create single appointments for every time block + for (AppointmentBlock block: splits) + { + Appointment newApp = (Appointment) getModification().newAppointment(new Date(block.getStart()), new Date(block.getEnd())); + // Add appointment to list + mutableReservation.addAppointment(newApp); + model.addElement(newApp); + fireAppointmentAdded(newApp); + } + + // Refresh the status info + updateStatus(); + } + catch (RaplaException ex) + { + showException(ex, getComponent()); + } + } + + private void updateStatus() { + Reservation event = mutableReservation; + Appointment[] appointments = event.getAppointments(); + int count = 0; + for (int i = 0; i blocks = new ArrayList(); + appointment.createBlocks( appointment.getStart(), DateTools.fillDate(repeating.getEnd()), blocks); + count += blocks.size(); + } + String status = ""; + if (count >= 0) + status = getString("total_occurances")+ ": " + count; + listEdit.getStatusBar().setText( status ); + } + + class AppointmentCellRenderer implements ListCellRenderer { + Border focusBorder = UIManager.getBorder("List.focusCellHighlightBorder"); + Border emptyBorder = new EmptyBorder(1,1,1,1); + + Color selectionBackground = UIManager.getColor("List.selectionBackground"); + Color background = UIManager.getColor("List.background"); + + AppointmentRow row = new AppointmentRow(); + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + row.setAppointment((Appointment) value,index); + row.setBackground((isSelected) ? selectionBackground : background); + row.setBorder((cellHasFocus) ? focusBorder : emptyBorder); + return row; + } + }; + + class AppointmentRow extends JPanel { + private static final long serialVersionUID = 1L; + + JPanel content = new JPanel(); + AppointmentIdentifier identifier = new AppointmentIdentifier(); + AppointmentRow() { + double fill = TableLayout.FILL; + double pre = TableLayout.PREFERRED; + this.setLayout(new TableLayout(new double[][] {{pre,5,fill,10,pre},{1,fill,1}})); + this.add(identifier,"0,1,l,f"); + this.add(content,"2,1,f,c"); + + this.setMaximumSize(new Dimension(500,40)); + content.setOpaque(false); + identifier.setOpaque(true); + identifier.setBorder(null); + } + + public void setAppointment(Appointment appointment,int index) { + identifier.setText(getRaplaLocale().formatNumber(index + 1)); + identifier.setIndex(index); + content.setLayout(new BoxLayout(content,BoxLayout.Y_AXIS)); + content.removeAll(); + JLabel label1 = new JLabel(getAppointmentFormater().getSummary(appointment)); + content.add( label1 ); + if (appointment.getRepeating() != null) { + label1.setIcon( getIcon("icon.repeating") ); + Repeating r = appointment.getRepeating(); + List periods = getPeriodModel().getPeriodsFor(appointment.getStart()); + String repeatingString = + getAppointmentFormater().getSummary(r,periods); + content.add(new JLabel(repeatingString)); + if ( r.hasExceptions() ) { + content.add(new JLabel( getAppointmentFormater().getExceptionSummary( r ) ) ); + } + } else { + label1.setIcon( getIcon("icon.single") ); + } + } + } + + class Listener implements ActionListener, ChangeListener + { + public void actionPerformed(ActionEvent evt) + { + if (evt.getActionCommand().equals("remove")) + { + removeAppointments(); + } + else if (evt.getActionCommand().equals("new")) + { + createNewAppointment(); + } + else if (evt.getActionCommand().equals("split")) + { + splitAppointment(); + } + else if (evt.getActionCommand().equals("edit")) + { + Appointment app = (Appointment) listEdit.getList().getSelectedValue(); + appointmentController.setAppointment(app); + } + } + + public void stateChanged(ChangeEvent evt) + { + Appointment appointment = appointmentController.getAppointment(); + model.set(model.indexOf(appointment), appointment); + updateStatus(); + fireAppointmentChanged(appointment); + } + } +} + + diff --git a/src/org/rapla/gui/internal/edit/reservation/AppointmentListener.java b/src/org/rapla/gui/internal/edit/reservation/AppointmentListener.java new file mode 100644 index 0000000..0e6e112 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/AppointmentListener.java @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; +import java.util.*; + +import org.rapla.entities.domain.Appointment; + +public interface AppointmentListener extends EventListener { + void appointmentAdded(Appointment appointment); + //#TODO should accept many appointments + void appointmentRemoved(Appointment appointment); + void appointmentChanged(Appointment appointment); +} + + + diff --git a/src/org/rapla/gui/internal/edit/reservation/ConflictTableModel.java b/src/org/rapla/gui/internal/edit/reservation/ConflictTableModel.java new file mode 100644 index 0000000..7bb39b7 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/ConflictTableModel.java @@ -0,0 +1,104 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006-2003 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import javax.swing.table.AbstractTableModel; + +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.Named; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentFormater; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.Conflict; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class ConflictTableModel extends AbstractTableModel +{ + private static final long serialVersionUID = 1L; + + Conflict[] conflicts; + String[] columnNames; + AppointmentFormater appointmentFormater; + I18nBundle i18n; + + public ConflictTableModel(RaplaContext serviceManager,Conflict[] conflicts) throws RaplaException + { + this.conflicts = conflicts; + i18n = (I18nBundle) serviceManager.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + appointmentFormater = (AppointmentFormater) serviceManager.lookup(AppointmentFormater.ROLE); + + columnNames = new String[] + { + i18n.getString("conflict.reservation1") + , i18n.getString("conflict.appointment1") + , i18n.getString("conflict.resource") + , i18n.getString("conflict.reservation2") + , i18n.getString("conflict.user") + , i18n.getString("conflict.appointment2") + }; + + } + + private String getName(Named named) { + return named.getName(i18n.getLocale()); + } + + public String getColumnName(int c) + { + return columnNames[c]; + } + + public int getColumnCount() + { + return columnNames.length; + } + + public int getRowCount() + { + return conflicts.length; + } + + public Object getValueAt(int r, int c) + { + + switch (c) { + + case 0: return(getName(conflicts[r].getReservation1())); + case 1: return(appointmentFormater.getSummary(conflicts[r].getAppointment1())); + case 2: return(getName(conflicts[r].getAllocatable())); + case 3: return(getName(conflicts[r].getReservation1())); + case 4: return(conflicts[r].getUser2().getName()); + case 5: return(appointmentFormater.getSummary(conflicts[r].getAppointment2())); + } + return null; + } + + public Reservation getReservationAt(int i) { + return conflicts[i].getReservation1(); + } + + public Appointment getAppointmentAt(int i) { + return conflicts[i].getAppointment1(); + } + +} + + + + + + + + + diff --git a/src/org/rapla/gui/internal/edit/reservation/NoWizard.java b/src/org/rapla/gui/internal/edit/reservation/NoWizard.java new file mode 100644 index 0000000..c741750 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/NoWizard.java @@ -0,0 +1,70 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.Component; +import java.util.Date; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.ReservationWizard; + +/** This ReservationWizard displays no wizard and directly opens a ReservationEdit Window +*/ +public class NoWizard extends RaplaGUIComponent implements ReservationWizard { + public NoWizard(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void start(Component component,CalendarModel model,DynamicType type) throws RaplaException { + Date startDate = model.getSelectedDate(); + if ( startDate != null ) + { + Date time = new Date (DateTools.MILLISECONDS_PER_HOUR * getCalendarOptions().getWorktimeStart()); + startDate = getRaplaLocale().toDate(startDate,time); + } + if (startDate == null) { + startDate = getQuery().today(); + Date time = new Date (DateTools.MILLISECONDS_PER_HOUR * getCalendarOptions().getWorktimeStart()); + startDate = getRaplaLocale().toDate(startDate,time); + } + Date endDate = new Date(startDate.getTime() + DateTools.MILLISECONDS_PER_HOUR); + Reservation r = getModification().newReservation(); + if (type != null) + r.setClassification(type.newClassification()); + Appointment appointment = getModification().newAppointment(startDate, endDate); + r.addAppointment(appointment); + Allocatable[] allocatables = model.getSelectedAllocatables(); + if ( allocatables.length == 1) + { + r.addAllocatable( allocatables[0]); + } + getReservationController().edit( r ); + } + + public String toString() { + return getString("reservation.create_without_wizard"); + } +} + + + + diff --git a/src/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl.java b/src/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl.java new file mode 100644 index 0000000..e5ba632 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl.java @@ -0,0 +1,541 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.Component; +import java.awt.Container; +import java.awt.Point; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.table.TableColumn; + +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.Command; +import org.rapla.entities.EntityNotFoundException; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.Conflict; +import org.rapla.facade.ModificationEvent; +import org.rapla.facade.ModificationListener; +import org.rapla.facade.ModificationModule; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.ReservationController; +import org.rapla.gui.ReservationEdit; +import org.rapla.gui.internal.view.ConflictInfoOldUI; +import org.rapla.gui.toolkit.DialogUI; + +public class ReservationControllerImpl extends RaplaGUIComponent + implements + ModificationListener, ReservationController +{ + /** We store all open ReservationEditWindows with their reservationId + * in a map, to lookup if the reservation is already beeing edited. + That prevents editing the same Reservation in different windows + */ + Collection editWindowList = new ArrayList(); + + public ReservationControllerImpl(RaplaContext sm) throws RaplaException { + super(sm); + getUpdateModule().addModificationListener(this); + } + + void addReservationEdit(ReservationEdit editWindow) { + editWindowList.add(editWindow); + } + + void removeReservationEdit(ReservationEdit editWindow) { + editWindowList.remove(editWindow); + } + + public void edit(Reservation reservation) throws RaplaException { + startEdit(reservation,null); + } + + public void edit(Appointment appointment)throws RaplaException { + startEdit(appointment.getReservation(), appointment); + } + + public ReservationEdit[] getEditWindows() { + return (ReservationEdit[]) editWindowList.toArray( new ReservationEdit[] {}); + } + + private ReservationEditImpl newEditWindow() throws RaplaException { + ReservationEditImpl c = new ReservationEditImpl(getContext()); + return c; + } + + private ReservationEdit startEdit(Reservation reservation,Appointment appointment) + throws RaplaException { + // Lookup if the reservation is already beeing edited + ReservationEditImpl c = null; + Iterator it = editWindowList.iterator(); + while (it.hasNext()) { + c = (ReservationEditImpl)it.next(); + if (c.getReservation().isIdentical(reservation)) + break; + else + c = null; + } + + if (c != null) { + c.frame.requestFocus(); + c.frame.toFront(); + } else { + c = newEditWindow(); + ModificationModule mod = getModification(); + boolean bNew = false; + if ( reservation.isPersistant()) { + reservation = (Reservation) mod.edit(reservation); + } else { + try { + getModification().getPersistant( reservation); + } catch ( EntityNotFoundException ex) { + bNew = true; + } + } + // only is allowed to exchange allocations + c.editReservation(reservation, appointment, bNew); + if ( !canModify( reservation) ) + { + c.deleteButton.setEnabled( false); + disableComponentAndAllChildren(((ReservationEditImpl)c).appointmentEdit.getComponent()); + disableComponentAndAllChildren(((ReservationEditImpl)c).reservationInfo.getComponent()); + } + } + return c; + } + + static void disableComponentAndAllChildren(Container component) { + component.setEnabled( false ); + Component[] components = component.getComponents(); + for ( int i=0; i< components.length; i++) + { + if ( components[i] instanceof Container) { + disableComponentAndAllChildren( (Container) components[i] ); + } + } + } + + + + public void deleteAppointment(Appointment appointment,Date from,Component sourceComponent,Point point) throws RaplaException { + Reservation reservation = appointment.getReservation(); + Reservation mutableReservation = (Reservation)getModification().edit(reservation); + Appointment app = mutableReservation.findAppointment(appointment); + + if (app.getRepeating() != null) { + String dateString = getRaplaLocale().formatDate(from); + DialogUI dialog = DialogUI.create( + getContext() + ,sourceComponent + ,true + ,getString("delete") + ,getI18n().format("delete_appointment.format" + ,dateString) + ,new String[] { + getString("serie") + ,getString("single_appointment") + ,getString("cancel") + } + ); + dialog.setIcon(getIcon("icon.question")); + dialog.getButton(0).setIcon(getIcon("icon.repeating")); + dialog.getButton(2).setIcon(getIcon("icon.cancel")); + dialog.start(point); + int index = dialog.getSelectedIndex(); + if (index == 2) + return; + if (index == 1) { + app.getRepeating().addException(from); + save(mutableReservation,sourceComponent); + return; + } + if (mutableReservation.getAppointments().length == 1) { + getModification().remove( mutableReservation ); + return; + } + } + + + // remove appointment if there are other appointments in the reservation + if ( mutableReservation.getAppointments().length > 1) { + // remove all allocatables that are restricted to the removed appointment + Allocatable[] allocatables = mutableReservation.getAllocatables(); + for (int i=0;i 0) { + JLabel warningLabel = new JLabel(); + warningLabel.setText(getString("warning.conflict")); + warningLabel.setForeground(java.awt.Color.red); + content.add(warningLabel,"0,1"); + content.add(getConflictPanel(conflicts),"0,2"); + } + content.add(infoComponent,"0,4"); + DialogUI dialog = DialogUI.create( + getContext() + ,sourceComponent + ,true + ,content + ,new String[] { + getString("save") + ,getString("back") + } + ); + + if (conflicts.length > 0) + dialog.setDefault(1); + dialog.getButton(0).setIcon(getIcon("icon.save")); + dialog.getButton(1).setIcon(getIcon("icon.cancel")); + dialog.setTitle(getI18n().format("confirm.dialog.title",getName(reservation))); + dialog.start(); + if (dialog.getSelectedIndex() == 0) { + try { + saveCommand.execute(); + } catch (Exception ex) { + showException(ex,sourceComponent); + return; + } + } + } + + class SaveCommand implements Command { + Reservation reservation; + boolean saved; + public SaveCommand(Reservation reservation) { + this.reservation = reservation; + } + + public void execute() throws RaplaException { + getModification().store( reservation ); + saved = true; + } + + public boolean hasSaved() { + return saved; + } + } + + private JComponent getConflictPanel(Conflict[] conflicts) throws RaplaException { + ConflictInfoOldUI panel = new ConflictInfoOldUI(); + ConflictTableModel model = new ConflictTableModel(getContext(),conflicts); + panel.getTable().setModel(model); + TableColumn column = panel.getTable().getColumn(getString("conflict.appointment2")); + panel.getTable().removeColumn(column); + column = panel.getTable().getColumn(getString("conflict.reservation1")); + panel.getTable().removeColumn(column); + return panel.getComponent(); + } + + + + +} + + + diff --git a/src/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.java b/src/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.java new file mode 100644 index 0000000..26add15 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.java @@ -0,0 +1,475 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.BorderLayout; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyVetoException; +import java.beans.VetoableChangeListener; +import java.util.Date; + +import javax.swing.AbstractAction; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.JToolBar; +import javax.swing.border.Border; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.apache.avalon.framework.container.ContainerUtil; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.Command; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.RepeatingType; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.domain.ReservationHelper; +import org.rapla.facade.ModificationEvent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.ReservationController; +import org.rapla.gui.ReservationEdit; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.EmptyLineBorder; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.gui.toolkit.RaplaFrame; + +class ReservationEditImpl extends RaplaGUIComponent implements ReservationEdit +{ + protected Reservation mutableReservation; + + JToolBar toolBar = new JToolBar(); + RaplaButton saveButtonTop = new RaplaButton(); + RaplaButton saveButton = new RaplaButton(); + RaplaButton deleteButton = new RaplaButton(); + RaplaButton closeButton = new RaplaButton(); + + JPanel mainContent = new JPanel(); + //JPanel split = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + + RaplaFrame frame; + + ReservationInfoEdit reservationInfo; + AppointmentListEdit appointmentEdit ; + AllocatableSelection allocatableEdit; + + boolean bSaving = false; + boolean bDeleting = false; + boolean bSaved; + boolean bNew; + TableLayout tableLayout = new TableLayout(new double[][] { + {TableLayout.FILL} + ,{TableLayout.PREFERRED,TableLayout.PREFERRED,TableLayout.FILL} + } ); + + private final Listener listener = new Listener(); + + ReservationEditImpl(RaplaContext sm) throws RaplaException { + super( sm); + reservationInfo = new ReservationInfoEdit(sm); + appointmentEdit = new AppointmentListEdit(sm); + allocatableEdit = new AllocatableSelection(sm,true); + + // horizontalSplit.setTopComponent(appointmentEdit.getComponent()); + //horizontalSplit.setBottomComponent(allocatableEdit.getComponent()); + /* + try { + // If run on jdk < 1.3 this will throw a MethodNotFoundException + // horizontalSplit.setResizeWeight(0.1); + JSplitPane.class.getMethod("setResizeWeight",new Class[] {double.class}).invoke(horizontalSplit,new Object[] {new Double(0.1)}); + } catch (Exception ex) { + } + */ + + frame = new RaplaFrame(sm); + mainContent.setLayout( tableLayout ); + mainContent.add(reservationInfo.getComponent(),"0,0"); + mainContent.add(appointmentEdit.getComponent(),"0,1"); + mainContent.add(allocatableEdit.getComponent(),"0,2"); + //allocatableEdit.getComponent().setVisible(false); + saveButtonTop.setAction( listener ); + saveButton.setAction( listener ); + toolBar.setFloatable(false); + saveButton.setAlignmentY(JButton.CENTER_ALIGNMENT); + deleteButton.setAlignmentY(JButton.CENTER_ALIGNMENT); + closeButton.setAlignmentY(JButton.CENTER_ALIGNMENT); + JPanel buttonsPanel = new JPanel(); + //buttonsPanel.add(deleteButton); + buttonsPanel.add(saveButton); + buttonsPanel.add(closeButton); + toolBar.add(saveButtonTop); + toolBar.add(deleteButton); + deleteButton.setAction( listener ); + closeButton.addActionListener(listener); + appointmentEdit.addAppointmentListener(allocatableEdit); + appointmentEdit.addAppointmentListener(listener); + allocatableEdit.addChangeListener(listener); + reservationInfo.addChangeListener(listener); + reservationInfo.addDetailListener(listener); + frame.addVetoableChangeListener(listener); + + frame.setIconImage( getI18n().getIcon("icon.edit_window_small").getImage()); + + JPanel contentPane = (JPanel) frame.getContentPane(); + contentPane.setLayout(new BorderLayout()); + mainContent.setBorder(BorderFactory.createLoweredBevelBorder()); + contentPane.add(toolBar, BorderLayout.NORTH); + contentPane.add(buttonsPanel, BorderLayout.SOUTH); + contentPane.add(mainContent, BorderLayout.CENTER); + Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + frame.setSize(new Dimension( + Math.min(dimension.width,990) + // BJO 00000032 temp fix for filter out of frame bounds + ,Math.min(dimension.height-10,720) + //,Math.min(dimension.height-10,1000) + ) + ); + + Border emptyLineBorder = new EmptyLineBorder(); + //BorderFactory.createEmptyBorder(); + Border border2 = BorderFactory.createTitledBorder(emptyLineBorder,getString("reservation.appointments")); + Border border3 = BorderFactory.createTitledBorder(emptyLineBorder,getString("reservation.allocations")); + appointmentEdit.getComponent().setBorder(border2); + allocatableEdit.getComponent().setBorder(border3); + + saveButton.setText(getString("save")); + saveButton.setIcon(getIcon("icon.save")); + + saveButtonTop.setText(getString("save")); + saveButtonTop.setMnemonic(KeyEvent.VK_S); + saveButtonTop.setIcon(getIcon("icon.save")); + + deleteButton.setText(getString("delete")); + deleteButton.setIcon(getIcon("icon.delete")); + + closeButton.setText(getString("abort")); + closeButton.setIcon(getIcon("icon.abort")); + + } + + protected void setSaved(boolean flag) { + bSaved = flag; + saveButton.setEnabled(!flag); + saveButtonTop.setEnabled(!flag); + } + + /* (non-Javadoc) + * @see org.rapla.gui.edit.reservation.IReservationEdit#isModifiedSinceLastChange() + */ + public boolean isModifiedSinceLastChange() { + return !bSaved; + } + + final private ReservationControllerImpl getPrivateReservationController() { + return (ReservationControllerImpl) getService(ReservationController.ROLE); + } + + /* (non-Javadoc) + * @see org.rapla.gui.edit.reservation.IReservationEdit#addAppointment(java.util.Date, java.util.Date, java.lang.String, int) + */ + public void addAppointment(Date start, Date end, RepeatingType repeatingType, int repeatings) throws RaplaException { + Appointment appointment = getModification().newAppointment( start, end ); + if ( repeatingType != null ) { + ReservationHelper.makeRepeatingForPeriod( getPeriodModel(),appointment, repeatingType , repeatings); + } + + mutableReservation.addAppointment(appointment); + setReservation( mutableReservation, appointment ); + setSaved(false); + frame.requestFocus(); + } + + + void deleteReservation() throws RaplaException { + if (bDeleting) + return; + getLogger().debug("Reservation has been deleted."); + DialogUI dlg = DialogUI.create( + getContext() + ,mainContent + ,true + ,getString("warning") + ,getString("warning.reservation.delete") + ); + dlg.setIcon(getIcon("icon.warning")); + dlg.start(); + closeWindow(); + } + + void updateReservation(Reservation newReservation) throws RaplaException { + if (bSaving) + return; + getLogger().debug("Reservation has been changed."); + DialogUI dlg = DialogUI.create( + getContext() + ,mainContent + ,true + ,getString("warning") + ,getString("warning.reservation.update") + ); + try { + dlg.setIcon(getIcon("icon.warning")); + dlg.start(); + setReservation((Reservation) getModification().edit(newReservation) , null); + } catch (RaplaException ex) { + showException(ex,frame); + } + } + + void refresh(ModificationEvent evt) throws RaplaException { + allocatableEdit.refresh(evt); + } + + void editReservation(Reservation mutableReservation, Appointment appointment, boolean bNew) throws RaplaException { + setSaved(!bNew); + //printBlocks( appointment ); + this.bNew = bNew; + deleteButton.setEnabled(!bNew); + + setReservation(mutableReservation, appointment); + + setTitle(); + boolean packFrame = false; + frame.place( true, packFrame); + frame.setVisible( true ); + // Insert into open ReservationEditWindows, so that + // we can't edit the same Reservation in different windows + getPrivateReservationController().addReservationEdit(this); + // #TODO this should be done in allocatableEdit + //allocatableEdit.content.setDividerLocation(0.5); + //frame.requestFocus(); + reservationInfo.requestFocus(); + getLogger().debug("New Reservation-Window created"); + } + +/* + private void printBlocks( Appointment appointment ) + { + AppointmentBlockArray array = new AppointmentBlockArray(); + { + Calendar cal = getRaplaLocale().createCalendar(); + cal.set( Calendar.YEAR, 2004); + Date start = cal.getTime(); + cal.set( Calendar.YEAR, 2007); + Date end = cal.getTime(); + appointment.createBlocks(start, end, array); + } + for ( int i=0;i< array.size();i++) + { + Date start = new Date(array.getStartAt( i )); + Date end = new Date(array.getEndAt( i )); + SimpleDateFormat format = new SimpleDateFormat(); + format.setTimeZone( getRaplaLocale().getTimeZone()); + System.out.println( format.format(start) + " - " + format.format(end)); + } + } +*/ + /* (non-Javadoc) + * @see org.rapla.gui.edit.reservation.IReservationEdit#getReservation() + */ + public Reservation getReservation() { + return mutableReservation; + } + + private void setTitle() { + String title = getI18n().format((bNew) ? + "new_reservation.format" : "edit_reservation.format" + ,getName(mutableReservation)); + frame.setTitle(title); + } + + private void setReservation(Reservation newReservation, Appointment appointment) throws RaplaException { + this.mutableReservation = newReservation; + appointmentEdit.setReservation(mutableReservation, appointment); + allocatableEdit.setReservation(mutableReservation); + reservationInfo.setReservation(mutableReservation); + } + + + public void closeWindow() { + ContainerUtil.dispose(appointmentEdit); + getPrivateReservationController().removeReservationEdit(this); + frame.dispose(); + getLogger().debug("Edit window closed."); + } + + + class Listener extends AbstractAction implements AppointmentListener,ChangeListener,VetoableChangeListener, ReservationInfoEdit.DetailListener { + private static final long serialVersionUID = 1L; + + // Implementation of ReservationListener + public void appointmentRemoved(Appointment appointment) { + setSaved(false); + } + + public void appointmentAdded(Appointment appointment) { + setSaved(false); + } + + public void appointmentChanged(Appointment appointment) { + setSaved(false); + } + + public void stateChanged(ChangeEvent evt) { + if (evt.getSource() == reservationInfo) { + getLogger().debug("ReservationInfo changed"); + setSaved(false); + setTitle(); + } + if (evt.getSource() == allocatableEdit) { + getLogger().debug("AllocatableEdit changed"); + setSaved(false); + } + } + public void detailChanged() { + boolean isMain = reservationInfo.isMainView(); + if ( isMain != appointmentEdit.getComponent().isVisible() ) { + appointmentEdit.getComponent().setVisible( isMain ); + allocatableEdit.getComponent().setVisible( isMain ); + if ( isMain ) { + tableLayout.setRow(0, TableLayout.PREFERRED); + tableLayout.setRow(1, TableLayout.PREFERRED); + tableLayout.setRow(2, TableLayout.FILL); + } else { + tableLayout.setRow(0, TableLayout.FILL); + tableLayout.setRow(1, 0); + tableLayout.setRow(2, 0); + } + mainContent.validate(); + } + } + + + public void actionPerformed(ActionEvent evt) { + try { + if (evt.getSource() == saveButton || evt.getSource() == saveButtonTop) { + save(); + } + if (evt.getSource() == deleteButton) { + delete(); + } + if (evt.getSource() == closeButton) { + if (canClose()) + closeWindow(); + } + } catch (RaplaException ex) { + showException(ex, null); + } + } + + public void vetoableChange(PropertyChangeEvent evt) throws PropertyVetoException { + if (!canClose()) + throw new PropertyVetoException("Don't close",evt); + closeWindow(); + } + }; + + protected boolean canClose() { + if (!isModifiedSinceLastChange()) + return true; + + try { + DialogUI dlg = DialogUI.create( + getContext() + ,mainContent + ,true + ,getString("confirm-close.title") + ,getString("confirm-close.question") + ,new String[] { + getString("confirm-close.ok") + ,getString("back") + } + ); + dlg.setIcon(getIcon("icon.question")); + dlg.setDefault(1); + dlg.start(); + return (dlg.getSelectedIndex() == 0) ; + } catch (RaplaException e) { + return true; + } + + } + + + /* (non-Javadoc) + * @see org.rapla.gui.edit.reservation.IReservationEdit#save() + */ + public void save() throws RaplaException { + save( true ); + } + + public void save(boolean confirm) throws RaplaException { + if (mutableReservation.getAllocatables().length == 0 ) { + DialogUI dialog = DialogUI.create( + getContext() + ,frame + ,true + ,getString("warning") + ,getString("warning.no_allocatables_selected") + ,new String[] { + getString("continue") + ,getString("back") + } + ); + dialog.setIcon(getIcon("icon.warning")); + dialog.setDefault(1); + dialog.start(); + if (dialog.getSelectedIndex() != 0) + return; + } + getPrivateReservationController().save(mutableReservation,frame,new SaveCommand(), confirm); + } + + /* (non-Javadoc) + * @see org.rapla.gui.edit.reservation.IReservationEdit#delete() + */ + public void delete() throws RaplaException { + try { + DialogUI dlg = getInfoFactory().createDeleteDialog(new Object[] {mutableReservation} + ,frame); + dlg.start(); + if (dlg.getSelectedIndex() == 0) { + bDeleting = true; + getModification().remove( mutableReservation ); + closeWindow(); + } + } finally { + bDeleting = false; + } + } + + class SaveCommand implements Command { + public void execute() { + frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + try { + getModification().checkReservation(mutableReservation); + bSaving = true; + getModification().store(mutableReservation); + setSaved(true); + } catch (RaplaException ex) { + showException(ex,frame); + } finally { + frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + if (bSaved) + closeWindow(); + bSaving = false; + } + } + } + +} diff --git a/src/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.java b/src/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.java new file mode 100644 index 0000000..306063f --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.java @@ -0,0 +1,341 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.edit.reservation; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; + +import javax.swing.BorderFactory; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.border.Border; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeAnnotations; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.NamedListCellRenderer; +import org.rapla.gui.internal.edit.ClassificationEditUI; +import org.rapla.gui.internal.edit.EditField; +import org.rapla.gui.toolkit.EmptyLineBorder; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.gui.toolkit.RaplaWidget; +/** + Gui for editing the {@link Classification} of a reservation. Same as + {@link org.rapla.gui.internal.edit.ClassificationEditUI}. It will only layout the + field with a {@link java.awt.FlowLayout}. + */ +public class ReservationInfoEdit extends RaplaGUIComponent + implements + RaplaWidget + ,ActionListener +{ + JPanel content = new JPanel(); + MyClassificationEditUI editUI; + + DynamicType oldDynamicType; + Classification classification; + Classification oldClassification; + Classifiable classifiable; + + ArrayList listenerList = new ArrayList(); + ArrayList detailListenerList = new ArrayList(); + JComboBox typeSelector = new JComboBox(); + RaplaButton tabSelector = new RaplaButton(); + boolean isMainViewSelected = true; + + public ReservationInfoEdit(RaplaContext sm) throws RaplaException { + super( sm); + editUI = new MyClassificationEditUI(sm); + } + + public JComponent getComponent() { + return content; + } + + + public void requestFocus() { + editUI.requestFocus(); + } + + private boolean hasSecondTab(Classification classification) { + Attribute[] atts = classification.getAttributes(); + for ( int i=0; i < atts.length; i++ ) { + String view = atts[i].getAnnotation(AttributeAnnotations.KEY_EDIT_VIEW,AttributeAnnotations.VALUE_MAIN_VIEW); + if ( view.equals(AttributeAnnotations.VALUE_ADDITIONAL_VIEW)) { + return true; + } + } + return false; + } + + public void setReservation(Classifiable classifiable) throws RaplaException { + content.removeAll(); + this.classifiable = classifiable; + classification = classifiable.getClassification(); + oldClassification = classification; + + DynamicType[] types = getQuery().getDynamicTypes( DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + DynamicType dynamicType = classification.getType(); + oldDynamicType = dynamicType; + + typeSelector = new JComboBox( types ); + typeSelector.setSelectedItem(dynamicType); + typeSelector.setRenderer(new NamedListCellRenderer(getI18n().getLocale())); + typeSelector.addActionListener( this ); + + + content.setLayout( new BorderLayout()); + JPanel header = new JPanel(); + header.setLayout( null ); + header.add( typeSelector ); + Border border = new EmptyLineBorder(); + header.setBorder( BorderFactory.createTitledBorder( border, getString("reservation_type") +":")); + Dimension dim = typeSelector.getPreferredSize(); + typeSelector.setBounds(135,0, dim.width,dim.height); + tabSelector.setText(getString("additional-view")); + tabSelector.addActionListener( this ); + Dimension dim2 = tabSelector.getPreferredSize(); + tabSelector.setBounds(145 + dim.width ,0,dim2.width,dim2.height); + header.add( tabSelector ); + header.setPreferredSize( new Dimension(600, Math.max(dim2.height, dim.height))); + content.add( header,BorderLayout.NORTH); + content.add( editUI.getComponent(),BorderLayout.CENTER); + + tabSelector.setVisible( hasSecondTab( classification ) || !isMainViewSelected); + editUI.setObject( classification ); + + editUI.getComponent().validate(); + updateHeight(); + content.validate(); + + } + + /** registers new ChangeListener for this component. + * An ChangeEvent will be fired to every registered ChangeListener + * when the info changes. + * @see javax.swing.event.ChangeListener + * @see javax.swing.event.ChangeEvent + */ + public void addChangeListener(ChangeListener listener) { + listenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeChangeListener(ChangeListener listener) { + listenerList.remove(listener); + } + + public ChangeListener[] getChangeListeners() { + return (ChangeListener[])listenerList.toArray(new ChangeListener[]{}); + } + + public void addDetailListener(DetailListener listener) { + detailListenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeDetailListener(DetailListener listener) { + detailListenerList.remove(listener); + } + + public DetailListener[] getDetailListeners() { + return (DetailListener[])detailListenerList.toArray(new DetailListener[]{}); + } + + protected void fireDetailChanged() { + DetailListener[] listeners = getDetailListeners(); + for (int i = 0;i= layout.getNumColumn()) + { + col = 1; + if ( i < fields.length -1) + { + row ++; + layout.insertRow( row, 5); + height +=5; + row ++; + layout.insertRow( row, TableLayout.PREFERRED); + height += maxCompHeightInRow; + maxCompHeightInRow = 0; + } + } + } + height += maxCompHeightInRow; + + } + + public void requestFocus() { + if (fields.length>0) + fields[0].getComponent().requestFocus(); + } + + public void stateChanged(ChangeEvent evt) { + try { + Object o = this.classification; + ((EditField)evt.getSource()).mapTo( o ); + fireInfoChanged(); + } catch (RaplaException ex) { + showException(ex, this.getComponent()); + } + } + } + + public boolean isMainView() { + return isMainViewSelected; + } + + +} + diff --git a/src/org/rapla/gui/internal/edit/reservation/SortedListModel.java b/src/org/rapla/gui/internal/edit/reservation/SortedListModel.java new file mode 100644 index 0000000..334f522 --- /dev/null +++ b/src/org/rapla/gui/internal/edit/reservation/SortedListModel.java @@ -0,0 +1,377 @@ +package org.rapla.gui.internal.edit.reservation; + +/* + * SortedListModel.java + * + * Copyright 2006 Sun Microsystems, Inc. ALL RIGHTS RESERVED Use of + * this software is authorized pursuant to the terms of the license + * found at http://developers.sun.com/berkeley_license.html . + * + */ + +import java.text.Collator; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import javax.swing.AbstractListModel; +import javax.swing.DefaultListModel; +import javax.swing.ListModel; +import javax.swing.event.EventListenerList; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; +import java.text.Collator; + +/** + * SortedListModel decorates an unsorted ListModel to provide + * a sorted model. You can create a SortedListModel from models you + * already have. Place the SortedListModel into a JList, for example, to provide + * a sorted view of your underlying model. + * + * @author John O'Conner + */ +public class SortedListModel extends AbstractListModel { + + private SortedListModel() {} + + /** + * Create a SortedListModel from an existing model + * using a default text comparator for the default Locale. Sort + * in ascending order. + * @param model the underlying, unsorted ListModel + */ + public SortedListModel(ListModel model) { + this(model, SortOrder.ASCENDING, null); + } + + /** + * Create a SortedListModel from an existing model + * using a specific comparator and sort order. Use + * a default text comparator. + * + *@param model the unsorted list model + *@param sortOrder that should be used + */ + public SortedListModel(ListModel model, SortOrder sortOrder) { + this(model, sortOrder, null); + } + + /** + * Create a SortedListModel from an existing model. Sort the model + * in the specified sort order using the given comparator. + * + *@param model + *@param sortOrder + *@param comp + * + */ + public SortedListModel(ListModel model, SortOrder sortOrder, Comparator comp) { + unsortedModel = model; + unsortedModel.addListDataListener(new ListDataListener() { + public void intervalAdded(ListDataEvent e) { + unsortedIntervalAdded(e); + } + + public void intervalRemoved(ListDataEvent e) { + unsortedIntervalRemoved(e); + } + + public void contentsChanged(ListDataEvent e) { + unsortedContentsChanged(e); + } + + }); + this.sortOrder = sortOrder; + if (comp != null) { + comparator = comp; + } else { + comparator = Collator.getInstance(); + } + + // get base model info + int size = model.getSize(); + sortedModel = new ArrayList(size); + for (int x = 0; x < size; ++x) { + SortedListEntry entry = new SortedListEntry(x); + int insertionPoint = findInsertionPoint(entry); + sortedModel.add(insertionPoint, entry); + } + } + + /** + * Retrieve the sorted entry from the original model + * @param index index of an entry in the sorted model + * @return element in the original model to which our entry points + */ + public Object getElementAt(int index) throws IndexOutOfBoundsException { + int modelIndex = toUnsortedModelIndex(index); + Object element = unsortedModel.getElementAt(modelIndex); + return element; + } + + /** + * Retrieve the size of the underlying model + * @return size of the model + */ + public int getSize() { + int size = sortedModel.size(); + return size; + } + + + /** + * Convert sorted model index to an unsorted model index. + * + *@param index an index in the sorted model + *@return modelIndex an index in the unsorted model + * + */ + public int toUnsortedModelIndex(int index) throws IndexOutOfBoundsException { + int modelIndex = -1; + SortedListEntry entry = sortedModel.get(index); + modelIndex = entry.getIndex(); + return modelIndex; + + } + + /** + * Convert an array of sorted model indices to their unsorted model indices. Sort + * the resulting set of indices. + * + *@param sortedSelectedIndices indices of selected elements in the sorted model + * or sorted view + *@return unsortedSelectedIndices selected indices in the unsorted model + */ + public int[] toUnsortedModelIndices(int[] sortedSelectedIndices) { + int[] unsortedSelectedIndices = new int[sortedSelectedIndices.length]; + int x = 0; + for(int sortedIndex: sortedSelectedIndices) { + unsortedSelectedIndices[x++] = toUnsortedModelIndex(sortedIndex); + } + // sort the array of indices before returning + Arrays.sort(unsortedSelectedIndices); + return unsortedSelectedIndices; + + } + + /** + * Convert an unsorted model index to a sorted model index. + * + * @param unsortedIndex an element index in the unsorted model + * @return sortedIndex an element index in the sorted model + */ + public int toSortedModelIndex(int unsortedIndex) { + int sortedIndex = -1; + int x = -1; + for (SortedListEntry entry : sortedModel) { + ++x; + if (entry.getIndex() == unsortedIndex) { + sortedIndex = x; + break; + } + } + return sortedIndex; + } + + /** + * Convert an array of unsorted model selection indices to + * indices in the sorted model. Sort the model indices from + * low to high to duplicate JList's getSelectedIndices method + * + * @param unsortedModelIndices + * @return an array of selected indices in the sorted model + */ + public int[] toSortedModelIndices(int[] unsortedModelIndices) { + int[] sortedModelIndices = new int[unsortedModelIndices.length]; + int x = 0; + for(int unsortedIndex : unsortedModelIndices) { + sortedModelIndices[x++] = toSortedModelIndex(unsortedIndex); + } + Arrays.sort(sortedModelIndices); + return sortedModelIndices; + } + + private void resetModelData() { + int index = 0; + for (SortedListEntry entry : sortedModel) { + entry.setIndex(index++); + } + } + + public void setComparator(Comparator comp) { + if (comp == null) { + sortOrder = SortOrder.UNORDERED; + comparator = Collator.getInstance(); + resetModelData(); + } else { + comparator = comp; + Collections.sort(sortedModel); + } + fireContentsChanged(ListDataEvent.CONTENTS_CHANGED, 0, sortedModel.size()-1); + } + + /** + * Change the sort order of the model at runtime + * @param sortOrder + */ + public void setSortOrder(SortOrder sortOrder) { + if (this.sortOrder != sortOrder) { + this.sortOrder = sortOrder; + if (sortOrder == SortOrder.UNORDERED) { + resetModelData(); + } else { + Collections.sort(sortedModel); + } + fireContentsChanged(ListDataEvent.CONTENTS_CHANGED, 0, sortedModel.size()-1); + } + } + + /** + * Update the sorted model whenever new items + * are added to the original/decorated model. + * + */ + private void unsortedIntervalAdded(ListDataEvent e) { + int begin = e.getIndex0(); + int end = e.getIndex1(); + int nElementsAdded = end-begin+1; + + /* Items in the decorated model have shifted in flight. + * Increment our model pointers into the decorated model. + * We must increment indices that intersect with the insertion + * point in the decorated model. + */ + for (SortedListEntry entry: sortedModel) { + int index = entry.getIndex(); + // if our model points to a model index >= to where + // new model entries are added, we must bump up their index + if (index >= begin) { + entry.setIndex(index+nElementsAdded); + } + } + + // now add the new items from the decorated model + for (int x = begin; x <= end; ++x) { + SortedListEntry newEntry = new SortedListEntry(x); + int insertionPoint = findInsertionPoint(newEntry); + sortedModel.add(insertionPoint, newEntry); + fireIntervalAdded(ListDataEvent.INTERVAL_ADDED, insertionPoint, insertionPoint); + } + } + + /** + * Update this model when items are removed from the original/decorated + * model. Also, let our listeners know that we've removed items. + */ + private void unsortedIntervalRemoved(ListDataEvent e) { + int begin = e.getIndex0(); + int end = e.getIndex1(); + int nElementsRemoved = end-begin+1; + + /* + * Move from end to beginning of our sorted model, updating + * element indices into the decorated model or removing + * elements as necessary + */ + int sortedSize = sortedModel.size(); + boolean[] bElementRemoved = new boolean[sortedSize]; + for (int x = sortedSize-1; x >=0; --x) { + SortedListEntry entry = sortedModel.get(x); + int index = entry.getIndex(); + if (index > end) { + entry.setIndex(index - nElementsRemoved); + } else if (index >= begin) { + sortedModel.remove(x); + bElementRemoved[x] = true; + } + } + /* + * Let listeners know that we've removed items. + */ + for(int x = bElementRemoved.length-1; x>=0; --x) { + if (bElementRemoved[x]) { + fireIntervalRemoved(ListDataEvent.INTERVAL_REMOVED, x, x); + } + } + + } + + + /** + * Resort the sorted model if there are changes in the original + * unsorted model. Let any listeners know about changes. Since I don't + * track specific changes, sort everywhere and redisplay all items. + */ + private void unsortedContentsChanged(ListDataEvent e) { + Collections.sort(sortedModel); + fireContentsChanged(ListDataEvent.CONTENTS_CHANGED, 0, sortedModel.size()-1); + } + + /** + * Internal helper method to find the insertion point for a new + * entry in the sorted model. + */ + private int findInsertionPoint(SortedListEntry entry) { + int insertionPoint = sortedModel.size(); + if (sortOrder != SortOrder.UNORDERED) { + insertionPoint = Collections.binarySearch((List)sortedModel, entry); + if (insertionPoint < 0) { + insertionPoint = -(insertionPoint +1); + } + } + return insertionPoint; + } + + private List sortedModel; + private ListModel unsortedModel; + private Comparator comparator; + private SortOrder sortOrder; + + public enum SortOrder { + UNORDERED, + ASCENDING, + DESCENDING; + } + + class SortedListEntry implements Comparable { + private SortedListEntry() { + + } + + public SortedListEntry(int index) { + this.index = index; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public int compareTo(Object o) { + // retrieve the element that this entry points to + // in the original model + Object thisElement = unsortedModel.getElementAt(index); + SortedListEntry thatEntry = (SortedListEntry)o; + // retrieve the element that thatEntry points to in the original + // model + Object thatElement = unsortedModel.getElementAt(thatEntry.getIndex()); + if (comparator instanceof Collator) { + thisElement = thisElement.toString(); + thatElement = thatElement.toString(); + } + // compare the base model's elements using the provided comparator + int comparison = comparator.compare(thisElement, thatElement); + // convert to descending order as necessary + if (sortOrder == SortOrder.DESCENDING) { + comparison = -comparison; + } + return comparison; + } + + private int index; + } +} diff --git a/src/org/rapla/gui/internal/print/CalendarPrintDialog.java b/src/org/rapla/gui/internal/print/CalendarPrintDialog.java new file mode 100644 index 0000000..0464eca --- /dev/null +++ b/src/org/rapla/gui/internal/print/CalendarPrintDialog.java @@ -0,0 +1,336 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.print; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.print.PageFormat; +import java.awt.print.Paper; +import java.awt.print.Printable; +import java.awt.print.PrinterException; + +import javax.swing.AbstractAction; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextField; + +import org.rapla.components.iolayer.ComponentPrinter; +import org.rapla.components.iolayer.IOInterface; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaDefaultContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.ErrorDialog; +import org.rapla.gui.toolkit.RaplaButton; +import org.rapla.plugin.RaplaExtensionPoints; + + +public class CalendarPrintDialog extends DialogUI +{ + private static final long serialVersionUID = 1L; + + private JPanel titlePanel = new JPanel(); + private JPanel southPanel = new JPanel(); + private JLabel titleLabel = new JLabel(); + private JLabel sizeLabel = new JLabel(); + private JComboBox sizeChooser; + private JTextField titleEdit = new JTextField(); + + private RaplaButton cancelbutton; + private RaplaButton formatbutton; + private RaplaButton printbutton; + private RaplaButton savebutton; + private JScrollPane scrollPane; + + IOInterface printTool; + ExportServiceList exportServiceList; + + public static int[] sizes = new int[] {50,60,70,80,90,100,120,150,180,200}; + public static double defaultBorder = 11.0; //11 mm defaultBorder + + I18nBundle i18n; + + Listener listener = new Listener(); + PageFormat m_format; + + protected SwingCalendarView currentView; + CalendarSelectionModel model; + Printable printable; + + private JComponent page = new JComponent() + { + private static final long serialVersionUID = 1L; + + public void paint(Graphics g) + { + try { + paintPaper( g, m_format); + printable.print( g, m_format, 0); + } catch (PrinterException e) { + e.printStackTrace(); + } + } + + protected void paintPaper(Graphics g, PageFormat format) { + g.setColor(Color.white); + g.fillRect(1, 1, (int)format.getWidth(), (int)format.getHeight()); + g.setColor(Color.black); + g.drawRect(1, 1, (int)format.getWidth() - 2, (int)format.getHeight() - 2); + } + + }; + + + public static CalendarPrintDialog create(RaplaContext sm,Component owner,boolean modal,CalendarSelectionModel model,PageFormat format) throws RaplaException { + CalendarPrintDialog dlg; + Component topLevel = getOwnerWindow(owner); + if (topLevel instanceof Dialog) + dlg = new CalendarPrintDialog(sm,(Dialog)topLevel); + else + dlg = new CalendarPrintDialog(sm,(Frame)topLevel); + + try { + dlg.init(modal,model,format); + } catch (Exception ex) { + throw new RaplaException( ex ); + } + return dlg; + } + + protected CalendarPrintDialog(RaplaContext sm,Dialog owner) throws RaplaException { + super(sm,owner); + exportServiceList = new ExportServiceList( sm); + } + + protected CalendarPrintDialog(RaplaContext sm,Frame owner) throws RaplaException { + super(sm,owner); + exportServiceList = new ExportServiceList( sm); + } + + private void init(boolean modal,CalendarSelectionModel model,PageFormat format) throws Exception { + super.init(modal,new JPanel(),new String[] {"print","format","print_to_file","cancel"}); + this.model = model; + + RaplaContext context = getContext(); + printTool = (IOInterface) context.lookup(IOInterface.ROLE); + i18n = (I18nBundle) context.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + + m_format = format; + if (m_format == null) { + m_format = createPageFormat(); + m_format.setOrientation(m_format.getOrientation()); + } + + ViewFactory factory = (ViewFactory)context.lookup( RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + "/" + model.getViewId()); + RaplaDefaultContext contextWithPrintInfo = new RaplaDefaultContext(context); + contextWithPrintInfo.put(ViewFactory.PRINT_CONTEXT, new Boolean(true)); + currentView = factory.createSwingView( contextWithPrintInfo, model, false); + if ( currentView instanceof Printable) + { + printable = (Printable)currentView; + } + else + { + printable = new ComponentPrinter( currentView.getComponent(), true); + } + String title = model.getTitle(); + content.setLayout(new BorderLayout()); + titlePanel.add(titleLabel); + titlePanel.add(titleEdit); + new RaplaGUIComponent( context).addCopyPaste(titleEdit); + + String[] blockSizes = new String[sizes.length]; + for (int i=0;i0); + //swingCalendar.setPrintView(true); + currentView.update(); + sizeLabel.setText(i18n.getString("width") + ":"); + titleLabel.setText(i18n.getString("weekview.print.title_textfield")+":"); + setTitle(i18n.getString("weekview.print.dialog_title")); + printbutton.setIcon(i18n.getIcon("icon.print")); + savebutton.setText(i18n.getString("print_to_file")); + savebutton.setIcon(i18n.getIcon("icon.save")); + printbutton.setText(i18n.getString("print")); + formatbutton.setText(i18n.getString("weekview.print.format_button")); + cancelbutton.setText(i18n.getString("cancel")); + cancelbutton.setIcon(i18n.getIcon("icon.cancel")); + + /* + if (getSession().getValue(LAST_SELECTED_SIZE) != null) + weekview.setSlotSize(((Integer)getSession().getValue(LAST_SELECTED_SIZE)).intValue()); + */ + int columnSize = model.getSize(); + sizeChooser.setSelectedItem(String.valueOf(columnSize)); + + titleEdit.addActionListener(listener); + titleEdit.addKeyListener(listener); + sizeChooser.addActionListener(listener); + + } + + private void updateSizes( PageFormat format) + { + page.setPreferredSize( new Dimension( 900,900)); + //currentView.getComponent().setBounds(0,0,2000,1000); + //currentView.getComponent().setBounds(0,0,1000,1000); + } + + private PageFormat createPageFormat() { + PageFormat format= (PageFormat) printTool.defaultPage().clone(); + format.setOrientation(PageFormat.LANDSCAPE); + Paper paper = format.getPaper(); + paper.setImageableArea( + defaultBorder * IOInterface.MM_TO_INCH * 72 + ,defaultBorder * IOInterface.MM_TO_INCH * 72 + ,paper.getWidth() - 2 * defaultBorder * IOInterface.MM_TO_INCH * 72 + ,paper.getHeight() - 2 * defaultBorder * IOInterface.MM_TO_INCH * 72 + ); + format.setPaper(paper); + return format; + } + + public void start() { + super.start(); + } + + private class Listener extends AbstractAction implements KeyListener { + private static final long serialVersionUID = 1L; + + public void keyReleased(KeyEvent evt) { + try { + model.setTitle(titleEdit.getText()); + currentView.update(); + scrollPane.invalidate(); + scrollPane.repaint(); + } catch (Exception ex) { + showException(ex); + } + } + public void keyTyped(KeyEvent evt) { + } + public void keyPressed(KeyEvent evt) { + } + public void actionPerformed(ActionEvent evt) { + try { + if (evt.getSource()==sizeChooser) { + try { + int slotSize = Integer.valueOf((String)sizeChooser.getSelectedItem()).intValue(); + model.setColumnSize(slotSize); + } catch (Exception ex) { + return; + } + currentView.update(); + scrollPane.invalidate(); + scrollPane.repaint(); + } + if (evt.getSource()==titleEdit) { + model.setTitle(titleEdit.getText()); + currentView.update(); + scrollPane.invalidate(); + scrollPane.repaint(); + } + + + if (evt.getSource()==formatbutton) { + m_format= printTool.showFormatDialog(m_format); + updateSizes( m_format); + scrollPane.invalidate(); + scrollPane.repaint(); + } + + if (evt.getSource()==printbutton) { + if (printTool.print(printable, m_format, true)) + { + // We can't close or otherwise it won't work under windows + //close(); + } + } + + if (evt.getSource()==savebutton) { + exportServiceList.export( + printable + ,m_format + ,scrollPane + ); + } + + } catch (Exception ex) { + showException(ex); + } + } + } + + public void showException(Exception ex) { + ErrorDialog dialog; + try { + dialog = new ErrorDialog(getContext()); + dialog.showExceptionDialog(ex,this); + } catch (RaplaException e) { + } + } +} + diff --git a/src/org/rapla/gui/internal/print/ExportService.java b/src/org/rapla/gui/internal/print/ExportService.java new file mode 100644 index 0000000..07050ba --- /dev/null +++ b/src/org/rapla/gui/internal/print/ExportService.java @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.print; + +import java.awt.Component; +import java.awt.print.PageFormat; +import java.awt.print.Printable; + + +public interface ExportService extends org.rapla.entities.Named { + void export(Printable printable,PageFormat pageFormat,Component parentComponent) throws Exception; +} diff --git a/src/org/rapla/gui/internal/print/ExportServiceList.java b/src/org/rapla/gui/internal/print/ExportServiceList.java new file mode 100644 index 0000000..f421b41 --- /dev/null +++ b/src/org/rapla/gui/internal/print/ExportServiceList.java @@ -0,0 +1,107 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.print; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import java.util.Collection; +import java.util.HashMap; + +import javax.swing.BorderFactory; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.ListSelectionModel; + +import org.rapla.components.iolayer.IOInterface; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.framework.StartupEnvironment; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.NamedListCellRenderer; +import org.rapla.gui.toolkit.DialogUI; + + +public class ExportServiceList extends RaplaGUIComponent { + + HashMap exporters = new HashMap(); + /** + * @param sm + * @throws RaplaException + */ + public ExportServiceList(RaplaContext sm) throws RaplaException { + super(sm); + IOInterface printInterface = (IOInterface) getService( IOInterface.ROLE); + boolean applet =((StartupEnvironment)getContext().lookup(StartupEnvironment.ROLE)).getStartupMode() == StartupEnvironment.APPLET; + if (printInterface.supportsPostscriptExport() && !applet) { + PSExportService exportService = new PSExportService(getContext()); + addService("psexport",exportService); + } + } + + public void export(Printable printable,PageFormat pageFormat,Component parentComponent) throws Exception + { + Collection services = exporters.values(); + Object[] serviceArray = services.toArray(); + JList list = new JList(serviceArray); + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); + panel.add(new JLabel(getString("weekview.print.choose_export")),BorderLayout.NORTH); + panel.add(list,BorderLayout.CENTER); + list.setCellRenderer(new NamedListCellRenderer(getI18n().getLocale())); + list.setSelectedIndex(0); + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + DialogUI dlg = DialogUI.create(getContext(),parentComponent,true,panel, + new String[] { + getString("export") + ,getString("cancel") + }); + dlg.setTitle(getString("weekview.print.choose_export")); + dlg.getButton(0).setIcon(getIcon("icon.save")); + dlg.getButton(1).setIcon(getIcon("icon.cancel")); + dlg.start(); + if (dlg.getSelectedIndex() != 0 || list.getSelectedIndex() == -1) + return; + + ExportService selectedService = (ExportService)serviceArray[list.getSelectedIndex()]; + selectedService.export(printable,pageFormat, parentComponent); + } + + public void addService(Object policy,ExportService exportService) { + exporters.put(policy, exportService); + } + + public void removeService(Object policy) { + exporters.remove(policy); + } + + public ExportService select(Object policy) throws RaplaContextException { + ExportService result = (ExportService) exporters.get(policy); + if (result == null) + throw new RaplaContextException("ExportService", "Service not found for key " + policy); + return result; + } + + public boolean isSelectable(Object policy) { + return exporters.get(policy) != null; + } + + public ExportService[] getServices() { + return (ExportService[]) exporters.values().toArray(new ExportService[0]); + } + +} diff --git a/src/org/rapla/gui/internal/print/PSExportService.java b/src/org/rapla/gui/internal/print/PSExportService.java new file mode 100644 index 0000000..cfbdf6f --- /dev/null +++ b/src/org/rapla/gui/internal/print/PSExportService.java @@ -0,0 +1,56 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.print; + +import java.awt.Component; +import java.awt.print.PageFormat; +import java.awt.print.Printable; +import java.util.Locale; + +import org.rapla.components.iolayer.IOInterface; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; + + + +public class PSExportService extends RaplaGUIComponent implements ExportService { + public final static String EXPORT_DIR = PSExportService.class.getName() + ".dir"; + IOInterface printInterface; + + + public PSExportService(RaplaContext sm) throws RaplaException { + super(sm); + printInterface = (IOInterface) getService(IOInterface.ROLE); + } + + + public void export(Printable printable,PageFormat pageFormat,Component parentComponent) throws Exception + { + String dir = (String) getSessionMap().get(EXPORT_DIR); + String file = printInterface.saveAsPostscriptShowDialog + ( + dir + ,printable + ,pageFormat + ,false + ,parentComponent + ); + if (file != null) + getSessionMap().put(EXPORT_DIR,file); + } + + public String getName(Locale locale) { + return getI18n().getString("weekview.print.postscript"); + } +} diff --git a/src/org/rapla/gui/internal/print/PrintAction.java b/src/org/rapla/gui/internal/print/PrintAction.java new file mode 100644 index 0000000..4d2603b --- /dev/null +++ b/src/org/rapla/gui/internal/print/PrintAction.java @@ -0,0 +1,79 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.print; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.print.PageFormat; + +import javax.swing.SwingUtilities; + +import org.rapla.client.ClientService; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; + + +public class PrintAction extends RaplaAction { + CalendarSelectionModel model; + PageFormat m_pageFormat; + public PrintAction(RaplaContext sm) throws RaplaException { + super( sm); + setEnabled(false); + putValue(NAME,getString("print")); + putValue(SMALL_ICON,getIcon("icon.print")); + } + + public void setModel(CalendarSelectionModel settings) { + this.model = settings; + setEnabled(settings != null); + } + + + public void setPageFormat(PageFormat pageFormat) { + m_pageFormat = pageFormat; + } + + public void actionPerformed(ActionEvent evt) { + Component parent = (Component)getService(ClientService.MAIN_COMPONENT); + try { + boolean modal = true; + final CalendarPrintDialog dialog = CalendarPrintDialog.create(getContext(),parent,modal, model, m_pageFormat); + final Dimension dimension = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); + dialog.setSize(new Dimension( + Math.min(dimension.width,900) + ,Math.min(dimension.height-10,700) + ) + ); + + SwingUtilities.invokeLater( new Runnable() { + public void run() + { + dialog.setSize(new Dimension( + Math.min(dimension.width,900) + ,Math.min(dimension.height-11,699) + ) + ); + } + + } + ); + dialog.startNoPack(); + + } catch (Exception ex) { + showException(ex, parent); + } + } +} + diff --git a/src/org/rapla/gui/internal/splitpanes/HolidaySelectionPane.java b/src/org/rapla/gui/internal/splitpanes/HolidaySelectionPane.java new file mode 100644 index 0000000..7020e61 --- /dev/null +++ b/src/org/rapla/gui/internal/splitpanes/HolidaySelectionPane.java @@ -0,0 +1,155 @@ +/*--------------------------------------------------------------------------* | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.splitpanes; + +import java.awt.Font; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import javax.swing.JCheckBox; +import javax.swing.tree.DefaultTreeModel; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.action.HolidayAction; +import org.rapla.gui.internal.action.ShowConflictsAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.InternMenus; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.internal.view.TreeFactoryImpl; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.gui.toolkit.RaplaMenuItem; +/** FIXME This class is not correctly named the code should be moved elsewhere*/ +public final class HolidaySelectionPane extends RaplaFiltrableSelectionPane { + + HolidayAction holidayAction; + RaplaMenuItem holidayReservations; + JCheckBox onlyHolidayReservations; + + public HolidaySelectionPane(RaplaContext context, MultiCalendarView view, CalendarSelectionModel model) throws RaplaException { + super(context, view, model); + onlyHolidayReservations = new JCheckBox(); + onlyHolidayReservations.setFont(onlyHolidayReservations.getFont().deriveFont(Font.PLAIN, (float) 10.0)); + holidayAction = new HolidayAction(context, model); + onlyHolidayReservations.setAction(holidayAction); + onlyHolidayReservations.setIcon(getIcon("icon.unchecked")); + onlyHolidayReservations.setSelectedIcon(getIcon("icon.checked")); + + //buttonsPanel.add(onlyOwnReservations); + + holidayAction.addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + try { + if ( evt.getPropertyName().equals("model")) { + updateActions(); + updateTree(); + applyFilter(); + } + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + }); + + holidayReservations = new RaplaMenuItem("view_holidays"); + holidayReservations.setText(getString("view_holidays")); + holidayReservations.setAction(holidayAction); + holidayReservations.setIcon(getIcon("icon.unchecked")); + // filterAction.setResourceOnly(false); + + RaplaMenu viewMenu = (RaplaMenu)getContext().lookup( InternMenus.VIEW_MENU_ROLE); +// RaplaMenuItem filterMenu = new RaplaMenuItem("filter"); +// filterMenu.setAction( filterAction ); +// viewMenu.insertBeforeId( filterMenu,"view_save" ); + + holidayReservations = new RaplaMenuItem("view_holidays"); + holidayReservations.setText( getString("view_holidays")); + holidayReservations.setAction( holidayAction ); + holidayReservations.setIcon( getIcon("icon.unchecked")); + viewMenu.insertBeforeId( holidayReservations, "show_tips" ); + + } +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + private boolean canSeeEventsFromOthers() { + try { + Category category = getQuery().getUserGroupsCategory().getCategory(Permission.GROUP_CAN_READ_EVENTS_FROM_OTHERS); + if (category == null) { + return true; + } + User user = getUser(); + return user.isAdmin() || user.belongsTo(category); + } catch (RaplaException ex) { + return false; + } + } + + +// protected HashSet getSelectedObjects() throws RaplaException { +// HashSet elements = new HashSet(treeSelection.getSelectedElements()); +// if (ownReservations.isSelected()) { +// elements.add(getUser()); +// } +// getModel().setSelectedObjects(elements); +// return elements; +// } + + + protected DefaultTreeModel generateTree() throws RaplaException { + ClassificationFilter[] filter = getModel().getAllocatableFilter(); + boolean onlyHoliday = model.isHolidaySelected(); + User conflictUser = onlyHoliday ? getUser() : null; + final TreeFactoryImpl treeFactoryImpl = (TreeFactoryImpl) getTreeFactory(); + DefaultTreeModel treeModel = treeFactoryImpl.createModel(filter, conflictUser, null); + return treeModel; + } + + + + //////////////////////////////////////////////////////////////////////////// + private void updateActions() throws RaplaException + { + /*if (!canSeeEventsFromOthers()) { + holidayAction.setEnabled(false); + }*/ + /*if (holidayAction != null) { + boolean oldState = holidayAction.isEnabled(); + holidayAction.setEnabled(false); + + boolean isSelected = model.isHolidaySelected(); + holidayReservations.setIcon(isSelected ? getIcon("icon.checked") : getIcon("icon.unchecked")); + onlyHolidayReservations.setSelected(isSelected); + holidayReservations.setSelected(isSelected); + holidayAction.setEnabled(oldState); + }*/ + + /*if ( !canSeeEventsFromOthers()) + { + holidayAction.setEnabled( false ); + }*/ + + //boolean isSelected = model.isHolidaySelected(); + + + boolean oldState = holidayAction.isEnabled(); + boolean isSelected = getClientFacade().getPreferences().getEntryAsBoolean( ShowConflictsAction.CONFIG_ENTRY, false); + holidayReservations.setIcon(isSelected ? getIcon("icon.checked") : getIcon("icon.unchecked")); + onlyHolidayReservations.setSelected(isSelected); + holidayReservations.setSelected(isSelected); + holidayAction.setEnabled(oldState); + } +} diff --git a/src/org/rapla/gui/internal/splitpanes/RaplaConflictSelectionPane.java b/src/org/rapla/gui/internal/splitpanes/RaplaConflictSelectionPane.java new file mode 100644 index 0000000..81eeb5f --- /dev/null +++ b/src/org/rapla/gui/internal/splitpanes/RaplaConflictSelectionPane.java @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------* | Copyright (C) 2008 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.splitpanes; + +import java.util.Date; + +import javax.swing.tree.DefaultTreeModel; + +import org.rapla.entities.User; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.facade.Conflict; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.RaplaSelectionPane; +import org.rapla.gui.internal.common.CalendarModelImpl; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.internal.view.TreeFactoryImpl; +import org.rapla.gui.toolkit.PopupEvent; + +public class RaplaConflictSelectionPane extends RaplaSelectionPane { + + public RaplaConflictSelectionPane(RaplaContext context, MultiCalendarView view, CalendarSelectionModel model) throws RaplaException { + super(context, view, model); + } + + + protected DefaultTreeModel generateTree() throws RaplaException { + ClassificationFilter[] filter = getModel().getAllocatableFilter(); + boolean onlyOwn = model.isOnlyCurrentUserSelected(); + User conflictUser = onlyOwn ? getUser() : null; + DefaultTreeModel treeModel = ((TreeFactoryImpl) getTreeFactory()).createConflictModel(filter, conflictUser); + return treeModel; + } + + + public void applyFilter() throws RaplaException { + Object lastSelected = treeSelection.getInfoElement(); + boolean lastClickedElementIsConflict = lastSelected instanceof Conflict; + if (lastClickedElementIsConflict) { + Date[] date = ((CalendarModelImpl) model).getConflictDates(); + if (date.length > 0) { + if (model.getStartDate() != null && model.getStartDate().after(date[0])) { + model.setStartDate(date[0]); + } + if (model.getEndDate() != null && model.getEndDate().before(date[date.length - 1])) { + model.setEndDate(date[date.length - 1]); + } + model.setSelectedDate(date[0]); + } + } + super.applyFilter(); + } + + @Override protected void showTreePopup(PopupEvent evt) + { + // No Popup visible + } +} diff --git a/src/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.java b/src/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.java new file mode 100644 index 0000000..8e39597 --- /dev/null +++ b/src/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.java @@ -0,0 +1,128 @@ +/*--------------------------------------------------------------------------* | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.splitpanes; + +import java.awt.BorderLayout; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.HashSet; + +import javax.swing.JComponent; +import javax.swing.Popup; +import javax.swing.PopupFactory; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.tree.DefaultTreeModel; + +import org.rapla.components.calendar.RaplaArrowButton; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.RaplaSelectionPane; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.internal.edit.ClassifiableFilterEdit; + +public abstract class RaplaFiltrableSelectionPane extends RaplaSelectionPane { + + boolean treeListenersEnabled = true; + protected FilterEdit filterEdit; + + + public RaplaFiltrableSelectionPane(final RaplaContext context, MultiCalendarView view, final CalendarSelectionModel model) throws RaplaException { + super(context, view, model); + buttonsPanel.setLayout( new BorderLayout()); + filterEdit = new FilterEdit(context, model); + buttonsPanel.add(filterEdit.getButton(), BorderLayout.EAST); + } + + + protected abstract DefaultTreeModel generateTree() throws RaplaException; + + + protected HashSet getSelectedObjects() throws RaplaException { + HashSet elements = new HashSet(treeSelection.getSelectedElements()); + getModel().setSelectedObjects(elements); + return elements; + } + + public class FilterEdit extends RaplaGUIComponent + { + protected RaplaArrowButton filterButton; + Popup popup; + ClassifiableFilterEdit ui; + + public FilterEdit(final RaplaContext context,final CalendarSelectionModel model) throws RaplaException + { + super(context); + filterButton = new RaplaArrowButton('v'); + filterButton.setText(getString("filter")); + filterButton.setSize(80,18); + filterButton.addActionListener( new ActionListener() + { + public void actionPerformed(ActionEvent e) { + + if ( popup != null) + { + popup.hide(); + popup= null; + filterButton.setChar('v'); + return; + } + boolean isResourceOnly = true; + try { + if ( ui != null) + { + ui.removeChangeListener( listener); + } + ui = new ClassifiableFilterEdit( context, isResourceOnly); + ui.addChangeListener(listener); + ui.setFilter( model); + final Point locationOnScreen = filterButton.getLocationOnScreen(); + final int y = locationOnScreen.y + 18; + final int x = locationOnScreen.x; + popup = PopupFactory.getSharedInstance().getPopup( filterButton, ui.getComponent(), x, y); + popup.show(); + filterButton.setChar('^'); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + + }); + + } + + private ChangeListener listener = new ChangeListener() { + + public void stateChanged(ChangeEvent e) { + try { + final ClassificationFilter[] filters = ui.getFilters(); + model.setAllocatableFilter( filters); + updateTree(); + applyFilter(); + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + }; + public JComponent getButton() + { + return filterButton; + } + + } + +} diff --git a/src/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane.java b/src/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane.java new file mode 100644 index 0000000..a03c381 --- /dev/null +++ b/src/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane.java @@ -0,0 +1,147 @@ +/*--------------------------------------------------------------------------* | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.gui.internal.splitpanes; + +import java.awt.Font; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + +import javax.swing.JCheckBox; +import javax.swing.tree.DefaultTreeModel; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.domain.Permission; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.action.OnlyMyAction; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.internal.common.InternMenus; +import org.rapla.gui.internal.common.MultiCalendarView; +import org.rapla.gui.internal.view.TreeFactoryImpl; +import org.rapla.gui.toolkit.RaplaMenu; +import org.rapla.gui.toolkit.RaplaMenuItem; +/** FIXME This class is not correctly named the code should be moved elsewhere*/ +public final class RaplaResourceSelectionPane extends RaplaFiltrableSelectionPane { + + OnlyMyAction myEventsAction; + RaplaMenuItem ownReservations; + JCheckBox onlyOwnReservations; + + public RaplaResourceSelectionPane(RaplaContext context, MultiCalendarView view, CalendarSelectionModel model) throws RaplaException { + super(context, view, model); + + onlyOwnReservations = new JCheckBox(); + onlyOwnReservations.setFont(onlyOwnReservations.getFont().deriveFont(Font.PLAIN, (float) 10.0)); + myEventsAction = new OnlyMyAction(context, model); + onlyOwnReservations.setAction(myEventsAction); + onlyOwnReservations.setIcon(getIcon("icon.unchecked")); + onlyOwnReservations.setSelectedIcon(getIcon("icon.checked")); + + //buttonsPanel.add(onlyOwnReservations); + + myEventsAction.addPropertyChangeListener(new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + try { + if ( evt.getPropertyName().equals("model")) { + updateActions(); + updateTree(); + applyFilter(); + } + } catch (Exception ex) { + showException(ex, getComponent()); + } + } + }); + + ownReservations = new RaplaMenuItem("only_own_reservations"); + ownReservations.setText(getString("only_own_reservations")); + ownReservations.setAction(myEventsAction); + ownReservations.setIcon(getIcon("icon.unchecked")); + // filterAction.setResourceOnly(false); + + RaplaMenu viewMenu = (RaplaMenu)getContext().lookup( InternMenus.VIEW_MENU_ROLE); +// RaplaMenuItem filterMenu = new RaplaMenuItem("filter"); +// filterMenu.setAction( filterAction ); +// viewMenu.insertBeforeId( filterMenu,"view_save" ); + + ownReservations = new RaplaMenuItem("only_own_reservations"); + ownReservations.setText( getString("only_own_reservations")); + ownReservations.setAction( myEventsAction ); + ownReservations.setIcon( getIcon("icon.unchecked")); + viewMenu.insertBeforeId( ownReservations, "show_tips" ); + + } + + private boolean canSeeEventsFromOthers() { + try { + Category category = getQuery().getUserGroupsCategory().getCategory(Permission.GROUP_CAN_READ_EVENTS_FROM_OTHERS); + if (category == null) { + return true; + } + User user = getUser(); + return user.isAdmin() || user.belongsTo(category); + } catch (RaplaException ex) { + return false; + } + } + + +// protected HashSet getSelectedObjects() throws RaplaException { +// HashSet elements = new HashSet(treeSelection.getSelectedElements()); +// if (ownReservations.isSelected()) { +// elements.add(getUser()); +// } +// getModel().setSelectedObjects(elements); +// return elements; +// } + + + protected DefaultTreeModel generateTree() throws RaplaException { + ClassificationFilter[] filter = getModel().getAllocatableFilter(); + boolean onlyOwn = model.isOnlyCurrentUserSelected(); + User conflictUser = onlyOwn ? getUser() : null; + final TreeFactoryImpl treeFactoryImpl = (TreeFactoryImpl) getTreeFactory(); + DefaultTreeModel treeModel = treeFactoryImpl.createModel(filter, conflictUser, null); + return treeModel; + } + + + + + private void updateActions() throws RaplaException + { + if (!canSeeEventsFromOthers()) { + myEventsAction.setEnabled(false); + } + if (myEventsAction != null) { + boolean oldState = myEventsAction.isEnabled(); + myEventsAction.setEnabled(false); + + boolean isSelected = model.isOnlyCurrentUserSelected(); + ownReservations.setIcon(isSelected ? getIcon("icon.checked") : getIcon("icon.unchecked")); + onlyOwnReservations.setSelected(isSelected); + ownReservations.setSelected(isSelected); + myEventsAction.setEnabled(oldState); + } + + if ( !canSeeEventsFromOthers()) + { + myEventsAction.setEnabled( false ); + } + + + } +} diff --git a/src/org/rapla/gui/internal/view/AllocatableInfoUI.java b/src/org/rapla/gui/internal/view/AllocatableInfoUI.java new file mode 100644 index 0000000..6e1a937 --- /dev/null +++ b/src/org/rapla/gui/internal/view/AllocatableInfoUI.java @@ -0,0 +1,141 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Permission; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class AllocatableInfoUI extends ClassificationInfoUI { + public AllocatableInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + void insertPermissions( Allocatable allocatable, StringBuffer buf ) { + User user; + Date today; + try { + user = getUser(); + today = getQuery().today(); + } catch (Exception ex) { + return; + } + boolean firstPermission = true; + if ( user.isAdmin() ) { + return; + } + Permission[] permissions = allocatable.getPermissions(); + boolean everytime = false; + for ( int i = 0; i < permissions.length; i++ ) { + Permission permission = permissions[i]; + if ( permission.affectsUser ( user ) + && permission.getMinAllowed( today ) == null + && permission.getMaxAllowed( today ) == null ) { + everytime = true; + break; + } + } + + for ( int i = 0; i < permissions.length; i++ ) { + Permission permission = permissions[i]; + if ( permission.affectsUser( user ) ) { + if ( firstPermission ) { + firstPermission = false; + buf.append( "" ); + buf.append( getString( "allocatable_in_timeframe" ) ); + buf.append( ":" ); + buf.append("
    "); + if ( everytime ) { + buf.append( getString("everytime") ); + break; + } + } + + if ( permission.getMinAllowed( today ) != null ) { + Date date = permission.getMinAllowed( today ); + buf.append( getRaplaLocale().formatDate( date ) ); + } else { + buf.append(getString("open")); + } + buf.append(" - "); + if ( permission.getMaxAllowed( today ) != null ) { + Date date = permission.getMaxAllowed( today ); + buf.append( getRaplaLocale().formatDate( date ) ); + } else { + buf.append(getString("open")); + } + buf.append("
    "); + } + } + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) { + Allocatable allocatable = (Allocatable) object; + StringBuffer buf = new StringBuffer(); + insertModificationRow( allocatable, buf ); + insertClassificationTitle( allocatable, buf ); + createTable( getAttributes( allocatable, controller, false),buf,false); + return buf.toString(); + } + + public List getAttributes(Allocatable allocatable,LinkController controller, boolean excludeAdditionalInfos) { + ArrayList att = new ArrayList(); + att.addAll( super.getClassificationAttributes( allocatable, excludeAdditionalInfos )); + final Locale locale = getLocale(); + User owner = allocatable.getOwner(); + User lastChangeBy = allocatable.getLastChangedBy(); + if ( owner != null) + { + final String ownerName = owner.getName(locale); + String ownerText = encode(ownerName); + if (controller != null) + ownerText = controller.createLink(owner,ownerName); + + att.add( new Row(getString("resource.owner"), ownerText)); + } + if ( lastChangeBy != null && (owner == null || !lastChangeBy.equals(owner))) { + final String lastChangedName = lastChangeBy.getName(locale); + String lastChangeByText = encode(lastChangedName); + if (controller != null) + lastChangeByText = controller.createLink(lastChangeBy,lastChangedName); + att.add( new Row(getString("last_changed_by"), lastChangeByText)); + + } + + return att; + } + + public String getTooltip(Object object) { + Allocatable allocatable = (Allocatable) object; + StringBuffer buf = new StringBuffer(); + insertClassificationTitle( allocatable, buf ); + insertModificationRow( allocatable, buf ); + Collection att = new ArrayList(); + att.addAll(getAttributes(allocatable, null, true)); + createTable(att,buf); + insertPermissions( allocatable, buf ); + return buf.toString(); + } + + + +} + diff --git a/src/org/rapla/gui/internal/view/AppointmentInfoUI.java b/src/org/rapla/gui/internal/view/AppointmentInfoUI.java new file mode 100644 index 0000000..d7b69a2 --- /dev/null +++ b/src/org/rapla/gui/internal/view/AppointmentInfoUI.java @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + + +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class AppointmentInfoUI extends ReservationInfoUI { + public AppointmentInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + public String getTooltip(Object object) { + Appointment appointment = (Appointment) object; + Reservation reservation = (Reservation) appointment.getReservation(); + StringBuffer buf = new StringBuffer(); + insertModificationRow( reservation, buf ); + insertAppointmentSummary( appointment, buf ); + insertClassificationTitle( reservation, buf ); + createTable( getAttributes( reservation, null, null, true),buf,false); + return buf.toString(); + } + + void insertAppointmentSummary(Appointment appointment, StringBuffer buf) { + buf.append("
    "); + buf.append( getAppointmentFormater().getSummary( appointment ) ); + buf.append("
    "); + } + + +} + diff --git a/src/org/rapla/gui/internal/view/CategoryInfoUI.java b/src/org/rapla/gui/internal/view/CategoryInfoUI.java new file mode 100644 index 0000000..a766724 --- /dev/null +++ b/src/org/rapla/gui/internal/view/CategoryInfoUI.java @@ -0,0 +1,29 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import org.rapla.entities.Category; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class CategoryInfoUI extends HTMLInfo { + public CategoryInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) throws RaplaException{ + Category category = (Category) object; + return category.getName( getRaplaLocale().getLocale()); + } +} + diff --git a/src/org/rapla/gui/internal/view/ClassificationInfoUI.java b/src/org/rapla/gui/internal/view/ClassificationInfoUI.java new file mode 100644 index 0000000..a46c3cc --- /dev/null +++ b/src/org/rapla/gui/internal/view/ClassificationInfoUI.java @@ -0,0 +1,130 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.Locale; + +import org.rapla.entities.Timestamp; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.AttributeAnnotations; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class ClassificationInfoUI extends HTMLInfo { + public ClassificationInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + public void insertClassificationTitle( Classifiable classifiable, StringBuffer buf ) { + Classification classification = classifiable.getClassification(); + buf.append( ""); + Locale locale = getRaplaLocale().getLocale(); + encode( classification.getType().getName(locale), buf ); + if ( classifiable instanceof RefEntity ) + { + int id = ((SimpleIdentifier)((RefEntity) classifiable).getId()).getKey(); + buf.append(" ("); + buf.append(Integer.valueOf(id)); + buf.append(")"); + } + buf.append( ""); + } + + protected void insertClassification( Classifiable classifiable, StringBuffer buf ) { + insertClassificationTitle( classifiable, buf ); + Collection att = new ArrayList(); + att.addAll(getClassificationAttributes(classifiable, false)); + createTable(att,buf,false); + } + + protected Collection getClassificationAttributes(Classifiable classifiable, boolean excludeAdditionalInfos) { + Collection att = new ArrayList(); + Classification classification = classifiable.getClassification(); + + Attribute[] attributes = classification.getAttributes(); + for (int i=0; i< attributes.length; i++) { + Attribute attribute = attributes[i]; + String view = attribute.getAnnotation( AttributeAnnotations.KEY_EDIT_VIEW, AttributeAnnotations.VALUE_MAIN_VIEW ); + if ( view.equals(AttributeAnnotations.VALUE_NO_VIEW )) { + continue; + } + if ( excludeAdditionalInfos && !view.equals( AttributeAnnotations.VALUE_MAIN_VIEW ) ) { + continue; + } + Object value = classification.getValue(attribute); + /* + if (value == null) + continue; + */ + String name = getName(attribute); + String valueString = null; + Locale locale = getRaplaLocale().getLocale(); + if (value instanceof Boolean) { + valueString = getString(((Boolean) value).booleanValue() ? "yes":"no"); + } else { + valueString = classification.getValueAsString(attribute, locale); + } + att.add (new Row(name,encode(valueString))); + } + return att; + } + + protected String getTooltip(Object object) { + Classifiable classifiable = (Classifiable) object; + StringBuffer buf = new StringBuffer(); + Collection att = new ArrayList(); + att.addAll(getClassificationAttributes(classifiable, false)); + createTable(att,buf,false); + return buf.toString(); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) { + Classifiable classifiable = (Classifiable) object; + StringBuffer buf = new StringBuffer(); + insertClassification( classifiable, buf ); + return buf.toString(); + } + + void insertModificationRow( Timestamp timestamp, StringBuffer buf ) { + final Date createTime = timestamp.getCreateTime(); + final Date lastChangeTime = timestamp.getLastChangeTime(); + if ( lastChangeTime != null) + { + buf.append("
    "); + if ( createTime != null) + { + buf.append(getString("created_at")); + buf.append(" "); + buf.append(getRaplaLocale().formatDate(createTime)); + buf.append(", "); + } + buf.append(getString("last_changed")); + buf.append(" "); + buf.append(getRaplaLocale().formatDate(lastChangeTime)); + buf.append("
    "); + buf.append("\n"); + } + } + +} + + diff --git a/src/org/rapla/gui/internal/view/ConflictInfoOldUI.java b/src/org/rapla/gui/internal/view/ConflictInfoOldUI.java new file mode 100644 index 0000000..1e5fc6b --- /dev/null +++ b/src/org/rapla/gui/internal/view/ConflictInfoOldUI.java @@ -0,0 +1,66 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.Action; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; + +import org.rapla.gui.toolkit.RaplaWidget; + +public class ConflictInfoOldUI + implements RaplaWidget +{ + JPanel content = new JPanel(); + JTable jTable1 = new JTable(); + private Action editAction = null; + + public ConflictInfoOldUI() { + content.setLayout(new BorderLayout()); + jTable1.setPreferredScrollableViewportSize(new Dimension(400, 70)); + JScrollPane scrollPane = new JScrollPane(jTable1); + content.add(scrollPane,BorderLayout.CENTER); + + jTable1.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent event) { + if(event.getClickCount() == 2 && editAction!=null) { + editAction.actionPerformed(new ActionEvent(ConflictInfoOldUI.this, ActionEvent.ACTION_PERFORMED, "")); + } + } + }); + } + + public JTable getTable() { + return jTable1; + } + + public void setEditAction(Action action) { + editAction = action; + } + + public JComponent getComponent() { + return content; + } + +} + + + diff --git a/src/org/rapla/gui/internal/view/ConflictInfoUI.java b/src/org/rapla/gui/internal/view/ConflictInfoUI.java new file mode 100644 index 0000000..2810965 --- /dev/null +++ b/src/org/rapla/gui/internal/view/ConflictInfoUI.java @@ -0,0 +1,52 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import org.rapla.facade.Conflict; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class ConflictInfoUI extends HTMLInfo { + public ConflictInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) { + Conflict conflict = (Conflict) object; + StringBuffer buf = new StringBuffer(); + + buf.append( ""); + buf.append( getName(conflict.getAllocatable() )); + buf.append( " " ); + buf.append( getAppointmentFormater().getSummary(conflict.getAppointment1())); + buf.append( ""); + buf.append( "
    " ); + buf.append( "'" ); + buf.append( getName(conflict.getReservation1() )); + buf.append( "'" ); + buf.append( "
    " ); + buf.append( getString("with")); + buf.append( " '" ); + buf.append( getName(conflict.getReservation2() )); + buf.append( "' " ); + buf.append( " " + getString("reservation.owner") + " "); + buf.append( conflict.getUser2().getName()); + + return buf.toString(); + } + + public String getTooltip( Object object ) { + return createHTMLAndFillLinks( object, null); + } +} + diff --git a/src/org/rapla/gui/internal/view/DeleteInfoUI.java b/src/org/rapla/gui/internal/view/DeleteInfoUI.java new file mode 100644 index 0000000..9e65b44 --- /dev/null +++ b/src/org/rapla/gui/internal/view/DeleteInfoUI.java @@ -0,0 +1,57 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class DeleteInfoUI extends HTMLInfo { + public DeleteInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) { + Object[] deletables = (Object[]) object; + StringBuffer buf = new StringBuffer(); + buf.append(getString("delete.question")); + buf.append("
    "); + for (int i = 0; i"); + } + return buf.toString(); + } + + public void updateInfo(Object object, ViewTable controller) throws RaplaException { + controller.setTitle( getString("delete.title") ); + controller.setText( createHTMLAndFillLinks(object, controller) ); + } +} + + + + + + + + + + + + + + diff --git a/src/org/rapla/gui/internal/view/DependencyInfoUI.java b/src/org/rapla/gui/internal/view/DependencyInfoUI.java new file mode 100644 index 0000000..90d57bb --- /dev/null +++ b/src/org/rapla/gui/internal/view/DependencyInfoUI.java @@ -0,0 +1,65 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.Iterator; + +import org.rapla.entities.DependencyException; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class DependencyInfoUI extends HTMLInfo { + public DependencyInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) throws RaplaException{ + DependencyException ex = (DependencyException) object; + StringBuffer buf = new StringBuffer(); + buf.append(getString("error.dependencies")+":"); + buf.append("
    "); + Iterator it = ex.getDependencies().iterator(); + int i = 0; + while (it.hasNext()) { + Object obj = it.next(); + buf.append((++i)); + buf.append(") "); + buf.append( obj ); + buf.append("
    "); + if (i == 30 && it.hasNext()) { //BJO + buf.append("... " + (ex.getDependencies().size() - 30) + " more"); //BJO + break; + } + } + return buf.toString(); + } + + protected String getTitle(Object object, LinkController controller) { + return getString("info") + ": " + getString("error.dependencies"); + } +} + + + + + + + + + + + + + + diff --git a/src/org/rapla/gui/internal/view/DynamicTypeInfoUI.java b/src/org/rapla/gui/internal/view/DynamicTypeInfoUI.java new file mode 100644 index 0000000..1c35157 --- /dev/null +++ b/src/org/rapla/gui/internal/view/DynamicTypeInfoUI.java @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.ArrayList; +import java.util.Collection; + +import org.rapla.entities.Category; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.entities.dynamictype.AttributeType; +import org.rapla.entities.dynamictype.ConstraintIds; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class DynamicTypeInfoUI extends HTMLInfo { + public DynamicTypeInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller){ + DynamicType dynamicType = (DynamicType) object; + StringBuffer buf = new StringBuffer(); + Collection att = new ArrayList(); + att.add(new Row(getString("dynamictype.name"), strong( encode( getName( dynamicType ) )))); + Attribute[] attributes = dynamicType.getAttributes(); + for (int i=0;i 0 ) { + StringBuffer buf = new StringBuffer(); + int size = text.length(); + for ( int i= 0; i"); + } else { + buf.append( c ); + } // end of switch () + } // end of for () + text = buf.toString(); + } + return text; + } + + + static public void addColor(String color,StringBuffer buf) { + buf.append(" color=\""); + buf.append(color); + buf.append('\"'); + } + + static public void createTable(Collection attributes,StringBuffer buf,boolean encodeValues) { + buf.append(""); + Iterator it = attributes.iterator(); + while (it.hasNext()) { + Row att = (Row) it.next(); + buf.append("\n"); + buf.append("\n"); + buf.append(""); + buf.append("\n"); + } + buf.append("
    "); + encode(att.field,buf); + buf.append(":"); + if (att.value != null) { + if (encodeValues) + encode((String)att.value,buf); + else + buf.append(att.value); + } + buf.append("
    "); + } + + static public String createTable(Collection attributes, boolean encodeValues) { + StringBuffer buf = new StringBuffer(); + createTable(attributes, buf, encodeValues); + return buf.toString(); + } + + static public void createTable(Collection attributes,StringBuffer buf) { + createTable(attributes,buf,true); + } + + + static public String createTable(Collection attributes) { + StringBuffer buf = new StringBuffer(); + createTable(attributes,buf); + return buf.toString(); + } + + + static public void highlight(String text,StringBuffer buf) { + buf.append(""); + encode(text,buf); + buf.append(""); + } + + static public String highlight(String text) { + StringBuffer buf = new StringBuffer(); + highlight(text,buf); + return buf.toString(); + } + + static public void strong(String text,StringBuffer buf) { + buf.append(""); + encode(text,buf); + buf.append(""); + } + + static public String strong(String text) { + StringBuffer buf = new StringBuffer(); + strong(text,buf); + return buf.toString(); + } + + abstract protected String createHTMLAndFillLinks(Object object,LinkController controller) throws RaplaException ; + protected String getTooltip(Object object) { + if (object instanceof Named) + return ((Named) object).getName(getI18n().getLocale()); + return null; + } + + public class Row { + String field; + String value; + Row(String field,String value) { + this.field = field; + this.value = value; + } + public String getField() { + return field; + } + public String getValue() { + return value; + } + } + +} + + + + + + diff --git a/src/org/rapla/gui/internal/view/InfoFactoryImpl.java b/src/org/rapla/gui/internal/view/InfoFactoryImpl.java new file mode 100644 index 0000000..1c8be9f --- /dev/null +++ b/src/org/rapla/gui/internal/view/InfoFactoryImpl.java @@ -0,0 +1,206 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.awt.Component; +import java.awt.Point; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.StringSelection; +import java.awt.event.ActionEvent; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.AbstractAction; +import javax.swing.JComponent; + +import org.rapla.components.iolayer.ComponentPrinter; +import org.rapla.components.iolayer.IOInterface; +import org.rapla.entities.Category; +import org.rapla.entities.Named; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.facade.Conflict; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.InfoFactory; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.HTMLView; +/** The factory can creatres an information-panel or dialog for +the entities of rapla. +@see ViewTable*/ +public class InfoFactoryImpl extends RaplaGUIComponent implements InfoFactory + +{ + Map views = new HashMap(); + + public InfoFactoryImpl(RaplaContext sm) throws RaplaException{ + super( sm); + views.put( DynamicType.TYPE, new DynamicTypeInfoUI(sm) ); + views.put( Reservation.TYPE, new ReservationInfoUI(sm) ); + views.put( Appointment.TYPE, new AppointmentInfoUI(sm) ); + views.put( Allocatable.TYPE, new AllocatableInfoUI(sm) ); + views.put( User.TYPE, new UserInfoUI(sm) ); + views.put( Period.TYPE, new PeriodInfoUI(sm) ); + views.put( Conflict.TYPE, new ConflictInfoUI(sm) ); + views.put( Category.TYPE, new CategoryInfoUI(sm) ); + } + + /** this method is used by the viewtable to dynamicaly create an + * appropriate HTMLInfo for the passed object + */ + HTMLInfo createView( RaplaObject object ) throws RaplaException { + if ( object == null ) + throw new RaplaException( "Could not create view for null object" ); + + HTMLInfo result = ( HTMLInfo ) views.get( object.getRaplaType() ); + if (result != null) + return result; + throw new RaplaException( "Could not create view for this object: " + object.getClass() ); + } + + public JComponent createInfoComponent( Object object ) throws RaplaException { + ViewTable viewTable = new ViewTable(getContext()); + viewTable.updateInfo( object ); + return viewTable.getComponent(); + } + + public String getToolTip(Object obj) { + return getToolTip(obj,true); + } + + public String getToolTip(Object obj,boolean wrapHtml) { + try { + if ( !(obj instanceof RaplaObject)) + { + return null; + } + RaplaObject o = (RaplaObject )obj; + if ( !views.containsKey( o.getRaplaType())) + { + return null; + } + String text = createView( o ).getTooltip( o); + if (wrapHtml && text != null) + return HTMLView.createHTMLPage( text ); + else + return text; + } catch(RaplaException ex) { + getLogger().error( ex.getMessage(), ex ); + } + if (obj instanceof Named) + return ((Named) obj).getName(getI18n().getLocale()); + return null; + } + + /* (non-Javadoc) + * @see org.rapla.gui.view.IInfoUIFactory#showInfoDialog(java.lang.Object, java.awt.Component) + */ + public void showInfoDialog( Object object, Component owner ) + throws RaplaException + { + showInfoDialog( object, owner, null); + } + + /* (non-Javadoc) + * @see org.rapla.gui.view.IInfoUIFactory#showInfoDialog(java.lang.Object, java.awt.Component, java.awt.Point) + */ + public void showInfoDialog( Object object, Component owner, Point point ) + throws RaplaException + { + + final ViewTable viewTable = new ViewTable(getContext()); + final DialogUI dlg = DialogUI.create(getContext(),owner + ,false + ,viewTable.getComponent() + ,new String[] { + getString( "copy_to_clipboard" ) + ,getString( "print" ) + ,getString( "back" ) + }); + + if ( !(object instanceof RaplaObject)) { + viewTable.updateInfoHtml( object.toString()); + } + else + { + viewTable.updateInfo( object, createView((RaplaObject)object) ); + } + dlg.setTitle( viewTable.getDialogTitle() ); + dlg.setDefault(2); + dlg.start( point ); + + dlg.getButton(0).setAction( new AbstractAction() { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent e) { + try { + DataFlavor.getTextPlainUnicodeFlavor(); + viewTable.htmlView.selectAll(); + String plainText = viewTable.htmlView.getSelectedText(); + //String htmlText = viewTable.htmlView.getText(); + //InfoSelection selection = new InfoSelection( htmlText, plainText ); + StringSelection selection = new StringSelection( plainText ); + IOInterface printTool = (IOInterface) getContext().lookup(IOInterface.ROLE); + printTool.setContents( selection, null); + } catch (Exception ex) { + showException(ex, dlg); + } + } + }); + dlg.getButton(1).setAction( new AbstractAction() { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent e) { + try { + IOInterface printTool = (IOInterface) getContext().lookup(IOInterface.ROLE); + printTool.print( + new ComponentPrinter(viewTable.htmlView, true) + , printTool.defaultPage() + ,true + ); + } catch (Exception ex) { + showException(ex, dlg); + } + } + }); + } + + /* (non-Javadoc) + * @see org.rapla.gui.view.IInfoUIFactory#createDeleteDialog(java.lang.Object[], java.awt.Component) + */ + public DialogUI createDeleteDialog( Object[] deletables, Component owner ) throws RaplaException { + ViewTable viewTable = new ViewTable(getContext()); + HTMLInfo deleteView = new DeleteInfoUI(getContext()); + DialogUI dlg = DialogUI.create(getContext(),owner + ,true + ,viewTable.getComponent() + ,new String[] { + getString( "delete.ok" ) + ,getString( "delete.abort" ) + }); + dlg.setIcon( getIcon("icon.warning") ); + dlg.getButton( 0).setIcon(getIcon("icon.delete") ); + dlg.getButton( 1).setIcon(getIcon("icon.abort") ); + dlg.setDefault(1); + viewTable.updateInfo( deletables, deleteView ); + dlg.setTitle( viewTable.getDialogTitle() ); + return dlg; + } +} + diff --git a/src/org/rapla/gui/internal/view/LicenseInfoUI.java b/src/org/rapla/gui/internal/view/LicenseInfoUI.java new file mode 100644 index 0000000..061037d --- /dev/null +++ b/src/org/rapla/gui/internal/view/LicenseInfoUI.java @@ -0,0 +1,107 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; +import java.awt.Component; +import java.awt.Dimension; + +import javax.swing.JComponent; +import javax.swing.JScrollPane; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; + +import org.rapla.components.xmlbundle.LocaleChangeEvent; +import org.rapla.components.xmlbundle.LocaleChangeListener; +import org.rapla.components.xmlbundle.LocaleSelector; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.DialogUI; +import org.rapla.gui.toolkit.HTMLView; +import org.rapla.gui.toolkit.RaplaWidget; + +final public class LicenseInfoUI + extends + RaplaGUIComponent + implements + HyperlinkListener + ,RaplaWidget + ,LocaleChangeListener +{ + JScrollPane scrollPane; + HTMLView license; + LocaleSelector localeSelector; + + public LicenseInfoUI(RaplaContext sm) throws RaplaException { + super( sm); + license = new HTMLView(); + license.addHyperlinkListener(this); + scrollPane= new JScrollPane(license); + scrollPane.setOpaque(true); + scrollPane.setPreferredSize(new Dimension(450, 100)); + scrollPane.setBorder(null); + localeSelector = (LocaleSelector) sm.lookup( LocaleSelector.ROLE); + localeSelector.addLocaleChangeListener(this); + setLocale(); + } + + public void localeChanged(LocaleChangeEvent evt) { + setLocale(); + scrollPane.invalidate(); + scrollPane.repaint(); + } + + private void setLocale() { + license.setBody(getString("license.text")); + } + + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + String link = e.getDescription(); + viewLicense(getComponent(), false, link); + } + } + + public JComponent getComponent() { + return scrollPane; + } + + public void viewLicense(Component owner,boolean modal,String link) { + try { + LicenseUI license = new LicenseUI( getContext()); + DialogUI dialog = DialogUI.create(getContext(),owner,modal,license.getComponent(), new String[] {getString("ok")} ); + dialog.setTitle(getString("licensedialog.title")); + dialog.setSize(600,400); + if (link.equals("warranty")) { + dialog.start(); + license.getComponent().revalidate(); + license.showBottom(); + } else { + dialog.start(); + license.getComponent().revalidate(); + license.showTop(); + } + } catch (Exception ex) { + showException(ex,owner); + } + } + +} + + + + + + + + + diff --git a/src/org/rapla/gui/internal/view/LicenseUI.java b/src/org/rapla/gui/internal/view/LicenseUI.java new file mode 100644 index 0000000..c24c085 --- /dev/null +++ b/src/org/rapla/gui/internal/view/LicenseUI.java @@ -0,0 +1,93 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import java.awt.Point; +import java.io.IOException; +import java.net.URL; + +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextPane; +import javax.swing.JViewport; + +import org.rapla.components.util.IOUtil; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.RaplaWidget; + +public class LicenseUI extends RaplaGUIComponent + implements + RaplaWidget +{ + JPanel panel = new JPanel(); + BorderLayout borderLayout1 = new BorderLayout(); + GridLayout gridLayout2 = new GridLayout(); + FlowLayout flowLayout1 = new FlowLayout(); + JTextPane license = new JTextPane(); + JScrollPane jScrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, + JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + + public LicenseUI(RaplaContext sm) throws RaplaException { + super( sm); + panel.setOpaque(true); + panel.setLayout(borderLayout1); + panel.add(jScrollPane,BorderLayout.CENTER); + license.setOpaque(false); + license.setEditable(false); + panel.setPreferredSize(new Dimension(640,400)); + + try { + String text = getLicense(); + license.setText(text); + } catch (IOException ex) { + license.setText(ex.getMessage()); + } + license.revalidate(); + + } + + public JComponent getComponent() { + return panel; + } + + private String getLicense() throws IOException { + URL url= LicenseUI.class.getClassLoader().getResource("org/rapla/COPYING"); + return new String(IOUtil.readBytes(url),"UTF-8"); + } + + public void showTop() { + JViewport viewport = new JViewport(); + viewport.setView(license); + jScrollPane.setViewport(viewport); + viewport.setViewPosition(new Point(0,0)); + } + + public void showBottom() { + JViewport viewport = new JViewport(); + viewport.setView(license); + jScrollPane.setViewport(viewport); + Dimension dim = viewport.getViewSize(); + viewport.setViewPosition(new Point(dim.width,dim.height)); + } + + + } + + + diff --git a/src/org/rapla/gui/internal/view/LinkController.java b/src/org/rapla/gui/internal/view/LinkController.java new file mode 100644 index 0000000..80a5112 --- /dev/null +++ b/src/org/rapla/gui/internal/view/LinkController.java @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +interface LinkController +{ + void createLink(Object object,String link,StringBuffer buf); + String createLink(Object object,String link); +} + diff --git a/src/org/rapla/gui/internal/view/PeriodInfoUI.java b/src/org/rapla/gui/internal/view/PeriodInfoUI.java new file mode 100644 index 0000000..29f1ebe --- /dev/null +++ b/src/org/rapla/gui/internal/view/PeriodInfoUI.java @@ -0,0 +1,56 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.Collection; +import java.util.ArrayList; + +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Period; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; + +class PeriodInfoUI extends HTMLInfo { + public PeriodInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) { + Period period = (Period) object; + Collection att = new ArrayList(); + RaplaLocale loc = getRaplaLocale(); + + att.add(new Row(getString("name"), strong( encode( getName( period ) )))); + att.add(new Row( + getString("start_date") + ,loc.getWeekday( period.getStart() ) + + ' ' + + loc.formatDate(period.getStart()) + ) + ); + att.add(new Row( + getString("end_date"), + loc.getWeekday( DateTools.subDay(period.getEnd()) ) + + ' ' + + loc.formatDate( DateTools.subDay(period.getEnd()) ) + ) + ); + return createTable(att, false); + } + + protected String getTooltip(Object object) { + return createHTMLAndFillLinks( object, null); + } +} + diff --git a/src/org/rapla/gui/internal/view/ReservationInfoUI.java b/src/org/rapla/gui/internal/view/ReservationInfoUI.java new file mode 100644 index 0000000..5432b43 --- /dev/null +++ b/src/org/rapla/gui/internal/view/ReservationInfoUI.java @@ -0,0 +1,174 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class ReservationInfoUI extends ClassificationInfoUI { + + public ReservationInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + private void addRestriction(Reservation reservation, Allocatable allocatable, StringBuffer buf) { + Appointment[] appointments = reservation.getRestriction(allocatable); + if ( appointments.length == 0 ) + return; + buf.append(""); + buf.append(" ("); + for (int i=0; i0) + buf.append(", "); + encode(getAppointmentFormater().getShortSummary(appointments[i]), buf ); + } + buf.append(")"); + buf.append(""); + } + + private String allocatableList(Reservation reservation,Allocatable[] allocatables, User user, LinkController controller) { + StringBuffer buf = new StringBuffer(); + for (int i = 0;i 0) { + att.add (new Row( getString("resources"), resourceList )); + } + Allocatable[] persons = reservation.getPersons(); + String personList = allocatableList(reservation, persons, user, controller); + if (personList.length() > 0) { + att.add (new Row( getString("persons"), personList ) ); + } + return att; + } + + void insertAllAppointments(Reservation reservation, StringBuffer buf) { + buf.append( ""); + buf.append( "\n" ); + buf.append( "\n" ); + buf.append( "\n"); + Appointment[] appointments = reservation.getAppointments(); + for (int i = 0;i\n" ); + buf.append( "\n"); + buf.append( "\n"); + buf.append( ""); + buf.append( "\n"); + } + buf.append( "
    "); + String appointmentLabel = getString("appointments"); + encode(appointmentLabel, buf); + buf.append( ":"); + buf.append( "
    \n"); + if (appointments[i].getRepeating() != null) { + buf.append (""); + } else { + buf.append (""); + } + buf.append( "\n"); + String appointmentSummary = + getAppointmentFormater().getSummary( appointments[i] ); + encode( appointmentSummary, buf ); + Repeating repeating = appointments[i].getRepeating(); + if ( repeating != null ) { + buf.append("
    "); + buf.append(""); + List periods = getPeriodModel().getPeriodsFor(appointments[i].getStart()); + String repeatingSummary = + getAppointmentFormater().getSummary(repeating,periods); + encode( repeatingSummary, buf ) ; + if ( repeating.hasExceptions() ) { + buf.append("
    "); + buf.append( getAppointmentFormater().getExceptionSummary(repeating) ); + } + buf.append("
    "); + } + buf.append( "
    \n"); + } + + + +} + diff --git a/src/org/rapla/gui/internal/view/TreeFactoryImpl.java b/src/org/rapla/gui/internal/view/TreeFactoryImpl.java new file mode 100644 index 0000000..932b319 --- /dev/null +++ b/src/org/rapla/gui/internal/view/TreeFactoryImpl.java @@ -0,0 +1,638 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.awt.Component; +import java.awt.Font; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JTree; +import javax.swing.UIManager; +import javax.swing.border.Border; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.MutableTreeNode; +import javax.swing.tree.TreeCellRenderer; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreeNode; + +import org.rapla.components.util.Assert; +import org.rapla.components.util.InverseComparator; +import org.rapla.entities.Category; +import org.rapla.entities.Named; +import org.rapla.entities.NamedComparator; +import org.rapla.entities.RaplaType; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Period; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.domain.ReservationStartComparator; +import org.rapla.entities.dynamictype.Classifiable; +import org.rapla.entities.dynamictype.Classification; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.entities.dynamictype.DynamicType; +import org.rapla.entities.dynamictype.DynamicTypeAnnotations; +import org.rapla.facade.Conflict; +import org.rapla.facade.QueryModule; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.TreeFactory; +import org.rapla.gui.internal.common.CalendarSelectionModel; +import org.rapla.gui.toolkit.RecursiveNode; +import org.rapla.gui.toolkit.TreeToolTipRenderer; + +public class TreeFactoryImpl extends RaplaGUIComponent implements TreeFactory { + public TreeFactoryImpl(RaplaContext sm) throws RaplaException { + super(sm); + this.defaultIcon = getIcon("icon.tree.default"); + } + + Icon defaultIcon; + + public TreeModel createClassifiableModel(Classifiable[] classifiables) throws RaplaException { + return createClassifiableModel(classifiables, null); + } + + public DefaultTreeModel createClassifiableModel(Classifiable[] classifiables, final DynamicType[] dynamicTypes) throws RaplaException { + boolean addOnlyTypesWithVisibleChildren = false; + List typeList = new ArrayList(); + if (dynamicTypes == null || dynamicTypes.length == 0) { + final QueryModule query = getQuery(); + typeList.addAll(Arrays.asList(query.getDynamicTypes(DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION))); + typeList.addAll(Arrays.asList(query.getDynamicTypes(DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION))); + typeList.addAll(Arrays.asList(query.getDynamicTypes(DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION))); + addOnlyTypesWithVisibleChildren = true; + } + else + { + for (DynamicType type: dynamicTypes) { + typeList.add(type); + } + } + Map nodeMap = new HashMap(); + for (DynamicType type: typeList) { + TreeNode node = new NamedNode(type); + nodeMap.put(type, node); + } + + DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT"); + Comparator comp = null; + if (classifiables.length > 0 && classifiables[0] instanceof Reservation) { + comp = new InverseComparator(new ReservationStartComparator(getLocale())); + } else { + comp = new NamedComparator(getLocale()); + } + Set sortedClassifiable = new TreeSet(comp); + sortedClassifiable.addAll(Arrays.asList(classifiables)); + for (Iterator it = sortedClassifiable.iterator(); it.hasNext();) { + Classifiable classifiable = (Classifiable) it.next(); + Classification classification = classifiable.getClassification(); + NamedNode childNode = new NamedNode((Named) classifiable); + DynamicType type = classification.getType(); + Assert.notNull(type); + DefaultMutableTreeNode typeNode = (DefaultMutableTreeNode) nodeMap.get(type); + Assert.notNull(typeNode); + typeNode.add(childNode); + + } + int count = 0; + for (DynamicType type: typeList) { + DefaultMutableTreeNode typeNode = (DefaultMutableTreeNode) nodeMap.get(type); + // Only add typeNodes with children + if (!typeNode.isLeaf() || !addOnlyTypesWithVisibleChildren) + root.insert(typeNode, count++); + } + return new DefaultTreeModel(root); + } + + public TreeCellRenderer createComplexRenderer() { + return new ComplexTreeCellRenderer(); + } + + private boolean isInFilter(ClassificationFilter[] filter, Classifiable classifiable) { + if (filter == null) + return true; + for (int i = 0; i < filter.length; i++) { + if (filter[i].matches(classifiable.getClassification())) { + return true; + } + } + return false; + } + + private boolean isInFilter(ClassificationFilter[] filter, DynamicType type) { + if (filter == null) + return true; + for (int i = 0; i < filter.length; i++) { + if (filter[i].getType().equals(type)) { + return true; + } + } + return false; + } + + private boolean hasRulesFor(ClassificationFilter[] filter, DynamicType type) { + if (filter == null) + return false; + for (int i = 0; i < filter.length; i++) { + if (filter[i].getType().equals(type) && filter[i].ruleSize() > 0) { + return true; + } + } + return false; + } + + private Collection getConflicts(ClassificationFilter[] allocatableFilter, User user) throws RaplaException { + + List result = new ArrayList(); + Conflict[] conflicts = getQuery().getConflicts(getQuery().today()); + for (int i = 0; i < conflicts.length; i++) { + Conflict conflict = conflicts[i]; + if (!isInFilter(allocatableFilter, conflict.getAllocatable())) { + continue; + } +// if (!isInFilter(reservationFilter, conflict.getReservation1()) && !isInFilter(reservationFilter, conflict.getReservation2())) { +// continue; +// } + if (user != null && !user.equals(conflict.getReservation1().getOwner()) && !user.equals(conflict.getReservation1().getOwner())) { + continue; + } + result.add(conflict); + } + return result; + } + + /** + * Returns the Resources root + * + * @param filter + * @param selectedUser + * @return + * @throws RaplaException + */ + public TypeNode createResourcesModel(ClassificationFilter[] filter) throws RaplaException { + TypeNode treeNode = new TypeNode(Allocatable.TYPE, CalendarSelectionModel.ALLOCATABLES_ROOT, getString("resources")); + Map nodeMap = new HashMap(); + + boolean resourcesFiltered = false; + + DynamicType[] types = getQuery().getDynamicTypes(DynamicTypeAnnotations.VALUE_RESOURCE_CLASSIFICATION); + for (int i = 0; i < types.length; i++) { + DynamicType type = types[i]; + if (hasRulesFor(filter, type)) { + resourcesFiltered = true; + } + if (!isInFilter(filter, type)) { + resourcesFiltered = true; + continue; + } + + NamedNode node = new NamedNode(type); + treeNode.add(node); + nodeMap.put(type, node); + } + + // creates typ folders + types = getQuery().getDynamicTypes(DynamicTypeAnnotations.VALUE_PERSON_CLASSIFICATION); + for (int i = 0; i < types.length; i++) { + DynamicType type = types[i]; + if (hasRulesFor(filter, type)) { + resourcesFiltered = true; + } + if (!isInFilter(filter, type)) { + resourcesFiltered = true; + continue; + } + + NamedNode node = new NamedNode(type); + treeNode.add(node); + nodeMap.put(type, node); + } + + treeNode.setFiltered(resourcesFiltered); + + // adds elements to typ folders + Allocatable[] allocatables = getQuery().getAllocatables(); + for (Allocatable classifiable: sorted(allocatables)) { + if (!isInFilter(filter, classifiable)) { + continue; + } + Classification classification = classifiable.getClassification(); + NamedNode childNode = new NamedNode((Named) classifiable); + DynamicType type = classification.getType(); + Assert.notNull(type); + DefaultMutableTreeNode typeNode = (DefaultMutableTreeNode) nodeMap.get(type); + Assert.notNull(typeNode); + typeNode.add(childNode); + } + return treeNode; + } + + private Collection sorted(T[] allocatables) { + TreeSet sortedList = new TreeSet(new NamedComparator(getLocale())); + sortedList.addAll(Arrays.asList(allocatables)); + return sortedList; + } + + public TypeNode createReservationsModel() throws RaplaException { + TypeNode treeNode = new TypeNode(Reservation.TYPE, getString("reservation_type")); + + // creates typ folders + DynamicType[] types = getQuery().getDynamicTypes(DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION); + for (int i = 0; i < types.length; i++) { + DynamicType type = types[i]; + + + NamedNode node = new NamedNode(type); + treeNode.add(node); + } + treeNode.setFiltered(false); + return treeNode; + } + + public DefaultTreeModel createModel(ClassificationFilter[] filter, User selectedUser, RaplaType classificationType) throws RaplaException { + // Resources and Persons + // Add the resource types + // Add the resources + // Add the person types + // Add the persons + // Eventtypes + // Add the event types + // Conflicts (0) + // Add the conflicts + // Users + // Add the users + // Categories (the root category) + // Add the periods + + DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT"); + + if (classificationType != null) { + if (classificationType.equals(Allocatable.TYPE)) { + TypeNode resourceRoot = createResourcesModel(filter); + root.add(resourceRoot); + + } + } + + else + { + TypeNode resourceRoot = createResourcesModel(filter); + root.add(resourceRoot); + if (isAdmin()) { + + DefaultMutableTreeNode userRoot = new TypeNode(User.TYPE, getString("users")); + User[] userList = getQuery().getUsers(); + for (final User user: sorted(userList)) { + DefaultMutableTreeNode node = new DefaultMutableTreeNode(); + node.setUserObject( user); + userRoot.add(node); + } + root.add(userRoot); + + + TypeNode reservationsRoot = createReservationsModel(); + root.add(reservationsRoot); + + CategoryNode categoryRoot = new CategoryNode(getI18n().getLocale(), null, getQuery().getSuperCategory()); + root.add(categoryRoot); + + // set category root name + getQuery().getSuperCategory().getName().setReadOnly(false); + getQuery().getSuperCategory().getName().setName(getI18n().getLang(), getString("categories")); + getQuery().getSuperCategory().getName().setReadOnly(true); + + + + + DefaultMutableTreeNode periodRoot = new TypeNode(Period.TYPE, getString("periods")); + Period[] periodList = getQuery().getPeriods(); + for (final Period period: sorted(periodList)) { + NamedNode node = new NamedNode(period); + periodRoot.add(node); + } + root.add(periodRoot); + } + } + return new DefaultTreeModel(root); + } + + public DefaultTreeModel createConflictModel(ClassificationFilter[] filter, User selectedUser) throws RaplaException { + // Resources and Persons + // Add the resource types + // Add the resources + // Add the person types + // Add the persons + // Eventtypes + // Add the event types + // Conflicts (0) + // Add the conflicts + // Users + // Add the users + // Categories (the root category) + // Add the periods + + DefaultMutableTreeNode root = new DefaultMutableTreeNode("ROOT"); + Collection conflicts = getConflicts(filter, selectedUser); + DefaultMutableTreeNode conflictRoot = new TypeNode(Conflict.TYPE, getI18n().format("conflictUC", new Integer(conflicts.size()))); + for (Iterator it = conflicts.iterator(); it.hasNext();) { + conflictRoot.add(new NamedNode((Conflict) it.next())); + } + root.add(conflictRoot); + + + return new DefaultTreeModel(root); + } + + class TypeNode extends DefaultMutableTreeNode { + private static final long serialVersionUID = 1L; + + boolean filtered; + RaplaType type; + String title; + + TypeNode(RaplaType type, Object userObject, String title) { + this.type = type; + this.title = title; + setUserObject(userObject); + } + + TypeNode(RaplaType type, Object userObject) { + this(type, userObject, null); + } + + public RaplaType getType() { + return type; + } + + public boolean isFiltered() { + return filtered; + } + + public void setFiltered(boolean filtered) { + this.filtered = filtered; + } + + public Object getTitle() { + if (title != null) { + return title; + } else { + return userObject.toString(); + } + } + + } + + public DefaultMutableTreeNode newNamedNode(Named element) { + return new NamedNode(element); + } + + public TreeModel createModel(Category category) throws RaplaException { + return new DefaultTreeModel(new CategoryNode(getI18n().getLocale(), null, category)); + } + + public TreeModel createModelFlat(Named[] element) { + DefaultMutableTreeNode root = new DefaultMutableTreeNode(""); + for (int i = 0; i < element.length; i++) { + root.add(new NamedNode(element[i])); + } + return new DefaultTreeModel(root); + } + + public TreeToolTipRenderer createTreeToolTipRenderer() { + return new RaplaTreeToolTipRenderer(); + } + + public TreeCellRenderer createRenderer() { + return new ComplexTreeCellRenderer(); + } + + static public class CategoryNode extends RecursiveNode implements MutableTreeNode { + Locale locale; + + public CategoryNode(Locale locale, TreeNode parent, Category category) { + super(parent, category); + this.locale = locale; + } + + protected Category getCategory() { + return (Category) getUserObject(); + } + + + protected Object[] getChildObjects() { + return getCategory().getCategories(); + } + + + protected RecursiveNode createChildNode(Object userObject) { + return new CategoryNode(locale, this, (Category) userObject); + } + + + public String toString() { + return getCategory().getName(locale); + } + + public void insert(MutableTreeNode child, int index) { + } + + public void remove(int index) { + } + + public void remove(MutableTreeNode node) { + } + + public void setUserObject(Object object) { + } + + public void removeFromParent() { + parent = null; + } + + public void setParent(MutableTreeNode newParent) { + parent = newParent; + + } + } + + public class NamedNode extends DefaultMutableTreeNode { + private static final long serialVersionUID = 1L; + + NamedNode(Named obj) { + super(obj); + } + + + public String toString() { + Named obj = (Named) getUserObject(); + if (obj != null) { + return obj.getName(getI18n().getLocale()); + } else { + return super.toString(); + } + } + }; + + // TODO this class is a bit of Hack + class ComplexTreeCellRenderer extends DefaultTreeCellRenderer { + private static final long serialVersionUID = 1L; + + Icon personIcon; + Icon folderClosedIcon; + Icon folderOpenIcon; + Font normalFont; + Font bigFont; + Border nonIconBorder = BorderFactory.createEmptyBorder(1, 0, 1, 0); + Border conflictBorder = BorderFactory.createEmptyBorder(2, 0, 2, 0); + + public ComplexTreeCellRenderer() { + personIcon = TreeFactoryImpl.this.getIcon("icon.tree.persons"); + // folderClosedIcon = UIManager.getIcon("Tree.closedIcon"); + // folderOpenIcon = UIManager.getIcon("Tree.openIcon"); + folderClosedIcon = getI18n().getIcon("icon.folder"); + folderOpenIcon = getI18n().getIcon("icon.folder"); + normalFont = UIManager.getFont("Tree.font"); + bigFont = normalFont.deriveFont(Font.BOLD, (float) (normalFont.getSize() * 1.2)); + setLeafIcon(defaultIcon); + + } + + public void setLeaf(Object object) { + Icon icon = null; + if (object instanceof Allocatable) { + if (((Allocatable) object).isPerson()) { + icon = personIcon; + } else { + icon = defaultIcon; + } + + } else if (object instanceof DynamicType) { + DynamicType type = (DynamicType) object; + String classificationType = type.getAnnotation(DynamicTypeAnnotations.KEY_CLASSIFICATION_TYPE); + if (DynamicTypeAnnotations.VALUE_RESERVATION_CLASSIFICATION.equals(classificationType)) { + setBorder(conflictBorder); + } else { + icon = folderClosedIcon; + } + } + if (icon == null) { + setBorder(nonIconBorder); + } + setLeafIcon(icon); + } + + + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { + setBorder(null); + setFont(normalFont); + setClosedIcon(folderClosedIcon); + setOpenIcon(folderOpenIcon); + if (value != null && value instanceof TypeNode) { + TypeNode typeNode = (TypeNode) value; + Icon bigFolderIcon; + if (typeNode.getType().equals(User.TYPE)) { + bigFolderIcon = getI18n().getIcon("icon.big_folder_users"); + } else if (typeNode.getType().equals(Period.TYPE)) { + bigFolderIcon = getI18n().getIcon("icon.big_folder_periods"); + } else if (typeNode.getType().equals(Reservation.TYPE)) { + if (typeNode.isFiltered()) { + bigFolderIcon = getI18n().getIcon("icon.big_folder_events_filtered"); + } else { + bigFolderIcon = getI18n().getIcon("icon.big_folder_events"); + } + } else if (typeNode.getType().equals(Conflict.TYPE)) { + bigFolderIcon = getI18n().getIcon("icon.big_folder_conflicts"); + } else { + if (typeNode.isFiltered()) { + bigFolderIcon = getI18n().getIcon("icon.big_folder_resources_filtered"); + } else { + bigFolderIcon = getI18n().getIcon("icon.big_folder_resources"); + } + } + setClosedIcon(bigFolderIcon); + setOpenIcon(bigFolderIcon); + setLeafIcon(bigFolderIcon); + setFont(bigFont); + value = typeNode.getTitle(); + } else if (value instanceof CategoryNode) { + Category category = ((CategoryNode) value).getCategory(); + if (category.getParent() == null) { + setClosedIcon(getI18n().getIcon("icon.big_folder_categories")); + setOpenIcon(getI18n().getIcon("icon.big_folder_categories")); + setFont(bigFont); + } else { + boolean hasChildren = category.getCategories().length > 0; + if (!hasChildren) { + setClosedIcon(null); + setOpenIcon(null); + setLeafIcon(null); + setBorder(nonIconBorder); + } + } + } else { + Object nodeInfo = getTheUserObject(value); + if (nodeInfo instanceof Conflict) { + Conflict conflict = (Conflict) nodeInfo; + String text = getInfoFactory().getToolTip(conflict); + value = text; + setBorder(conflictBorder); + setLeafIcon(null); + } else { + setClosedIcon(folderClosedIcon); + setOpenIcon(folderOpenIcon); + if (leaf) { + setLeaf(nodeInfo); + } + } + } + Component result = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + return result; + } + + } + + private static Object getTheUserObject(Object node) { + if (node instanceof DefaultMutableTreeNode) + return ((DefaultMutableTreeNode) node).getUserObject(); + if (node instanceof RecursiveNode) + return ((RecursiveNode) node).getUserObject(); + return node; + } + + class RaplaTreeToolTipRenderer implements TreeToolTipRenderer { + public String getToolTipText(JTree tree, int row) { + Object node = tree.getPathForRow(row).getLastPathComponent(); + Object value = getTheUserObject(node); + if (value instanceof Conflict) { + return null; + } + return getInfoFactory().getToolTip(value); + } + } + +} diff --git a/src/org/rapla/gui/internal/view/UserInfoUI.java b/src/org/rapla/gui/internal/view/UserInfoUI.java new file mode 100644 index 0000000..834a514 --- /dev/null +++ b/src/org/rapla/gui/internal/view/UserInfoUI.java @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; + +import java.util.ArrayList; +import java.util.Collection; + +import org.rapla.entities.Category; +import org.rapla.entities.User; +import org.rapla.entities.domain.Allocatable; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +class UserInfoUI extends ClassificationInfoUI { + public UserInfoUI(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected String createHTMLAndFillLinks(Object object,LinkController controller) { + User user = (User) object; + StringBuffer buf = new StringBuffer(); + if (user.isAdmin()) { + highlight(getString("admin"),buf); + } + Collection att = new ArrayList(); + att.add(new Row(getString("username"), strong( encode( user.getUsername() ) ) ) ); + + final Allocatable person = user.getPerson(); + if ( person == null) + { + att.add(new Row(getString("name"), encode(user.getName()))); + att.add(new Row(getString("email"), encode(user.getEmail()))); + } + else + { + att.addAll(getClassificationAttributes(person, false)); + } + createTable(att,buf,false); + + Category[] groups = user.getGroups(); + if ( groups.length > 0 ) { + buf.append(getString("groups") + ":"); + buf.append("
      "); + for ( int i = 0; i < groups.length; i++ ) { + buf.append("
    • "); + String groupName = groups[i].getPath( null , getI18n().getLocale()); + encode ( groupName , buf); + buf.append("
    • \n"); + } + buf.append("
    "); + } + return buf.toString(); + } + + public String getTooltip(Object object) { + return createHTMLAndFillLinks( object, null ); + } +} + diff --git a/src/org/rapla/gui/internal/view/ViewTable.java b/src/org/rapla/gui/internal/view/ViewTable.java new file mode 100644 index 0000000..dbda045 --- /dev/null +++ b/src/org/rapla/gui/internal/view/ViewTable.java @@ -0,0 +1,148 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.internal.view; +import java.awt.Dimension; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JScrollPane; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; + +import org.rapla.components.util.Assert; +import org.rapla.entities.RaplaObject; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.toolkit.HTMLView; +import org.rapla.gui.toolkit.RaplaWidget; + +/**Information of the entity-classes displayed in an HTML-Component */ +public class ViewTable extends RaplaGUIComponent + implements + HyperlinkListener + ,RaplaWidget + ,LinkController +{ + String title; + HTMLView htmlView = new HTMLView(); + JScrollPane pane = new JScrollPane(htmlView, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER) { + private static final long serialVersionUID = 1L; + + public Dimension getPreferredSize() { + Dimension pref = super.getPreferredSize(); + Dimension max = getMaximumSize(); + //System.out.println( "PREF: " + pref + " MAX: " + max); + if ( pref.height > max.height ) + return max; + else + return pref; + } + }; + Map linkMap; + int linkId = 0; + boolean packText = true; + + public ViewTable(RaplaContext sm) throws RaplaException { + super( sm); + linkMap = new HashMap(7); + htmlView.addHyperlinkListener(this); + htmlView.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); + pane.setMaximumSize( new Dimension( 600, 500 )); + } + + /** HTML-text-component should be sized according to the displayed text. Default is true. */ + public void setPackText(boolean packText) { + this.packText = packText; + } + + public JComponent getComponent() { + return pane; + } + + public String getDialogTitle() { + return title; + } + + public void updateInfo(Object object) throws RaplaException + { + if ( object instanceof RaplaObject) + { + final InfoFactoryImpl infoFactory = (InfoFactoryImpl)getInfoFactory(); + final HTMLInfo view = infoFactory.createView((RaplaObject)object); + updateInfo(object,view); + } + else + { + updateInfoHtml( object.toString()); + } + } + + public void updateInfo(Object object, HTMLInfo info) throws RaplaException { + linkMap.clear(); + final String html = info.createHTMLAndFillLinks( object, this); + updateInfoHtml(html); + } + + public void updateInfoHtml( String html) throws RaplaException { + if (html !=null ) { + setText( html); + } else { + setText(getString("nothing_selected")); + htmlView.revalidate(); + htmlView.repaint(); + } + } + + public void setTitle(String text) { + this.title = text; + } + + public void setText(String text) { + String message = HTMLView.createHTMLPage(text); + htmlView.setText(message, packText); + } + + public void createLink(Object object,String link,StringBuffer buf) { + linkMap.put(new Integer(linkId),object); + buf.append("
    "); + HTMLInfo.encode(link,buf); + buf.append(""); + } + + public String createLink(Object object,String link) { + StringBuffer buf = new StringBuffer(); + createLink(object,link,buf); + return buf.toString(); + } + + public void hyperlinkUpdate(HyperlinkEvent e) { + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + String link = e.getDescription(); + getLogger().debug("Hyperlink pressed: " + link); + Object object = linkMap.get(new Integer(link)); + Assert.notNull(object,"link was not found in linkMap"); + Assert.notNull(getInfoFactory()); + try { + getInfoFactory().showInfoDialog(object,htmlView); + } catch (RaplaException ex) { + showException(ex,getComponent()); + } // end of try-catch + } + } +} + diff --git a/src/org/rapla/gui/package.html b/src/org/rapla/gui/package.html new file mode 100644 index 0000000..b80ccc3 --- /dev/null +++ b/src/org/rapla/gui/package.html @@ -0,0 +1,9 @@ + +This is the base package of the GUI-client. Communication through the backend +is done through the modules of org.rapla.facade package. +The gui-client is normally started through the RaplaClientService. +You can also plug-in your own components into the gui. + + + + diff --git a/src/org/rapla/gui/toolkit/DateCellRenderer.java b/src/org/rapla/gui/toolkit/DateCellRenderer.java new file mode 100644 index 0000000..88f9955 --- /dev/null +++ b/src/org/rapla/gui/toolkit/DateCellRenderer.java @@ -0,0 +1,38 @@ +/** + * + */ +package org.rapla.gui.toolkit; + +import java.awt.Component; +import java.util.Date; + +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; + +import org.rapla.framework.RaplaLocale; + +final public class DateCellRenderer extends DefaultTableCellRenderer { + private static final long serialVersionUID = 1L; + + RaplaLocale raplaLocale; + + public DateCellRenderer(RaplaLocale raplaLocale) { + this.raplaLocale = raplaLocale; + } + public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) + { + final Date date = (Date) value; + boolean appendTime = !raplaLocale.toDate(date, false ).equals( date); + if ( appendTime ) + { + value = raplaLocale.formatDateLong( date) + " " + raplaLocale.formatTime( date) ; + } + else + { + value = raplaLocale.formatDateLong( date); + } + //setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT ); + return super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); + } + +} \ No newline at end of file diff --git a/src/org/rapla/gui/toolkit/DialogUI.java b/src/org/rapla/gui/toolkit/DialogUI.java new file mode 100644 index 0000000..d1f225c --- /dev/null +++ b/src/org/rapla/gui/toolkit/DialogUI.java @@ -0,0 +1,409 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; +import java.awt.AWTEvent; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dialog; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.GridLayout; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.WindowEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.Icon; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.KeyStroke; + +import org.rapla.components.calendar.jdk14adapter.AWTAdapterFactory; +import org.rapla.components.calendar.jdk14adapter.FocusTester; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.LocaleChangeEvent; +import org.rapla.components.xmlbundle.LocaleChangeListener; +import org.rapla.components.xmlbundle.LocaleSelector; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class DialogUI extends JDialog + implements + FrameController + ,LocaleChangeListener +{ + private static final long serialVersionUID = 1L; + + protected RaplaButton[] buttons; + protected JComponent content; + private JPanel jPanelButtonFrame = new JPanel(); + private JLabel label = null; + private boolean useDefaultOptions = false; + private boolean bClosed = false; + private Component parent; + + private int selectedIndex = -1; + private FrameControllerList frameList = null; + protected boolean packFrame = true; + private LocaleSelector localeSelector; + private I18nBundle i18n; + + private RaplaContext context = null; + private ButtonListener buttonListener = new ButtonListener(); + private boolean m_modal; + + private Action abortAction = new AbstractAction() { + private static final long serialVersionUID = 1L; + + public void actionPerformed(ActionEvent evt) { + close(); + } + }; + + + public static Component getOwnerWindow(Component component) { + if (component == null) + return getInvisibleSharedFrame(); + if (component instanceof Dialog) + return component; + if (component instanceof Frame) + return component; + Container owner = component.getParent(); + return getOwnerWindow(owner); + } + + private static String[] getDefaultOptions() { + return new String[] {"ok"}; + } + + public DialogUI(RaplaContext sm, Dialog parent) throws RaplaException { + super( parent ); + service( sm ); + } + + public DialogUI(RaplaContext sm, Frame parent) throws RaplaException { + super( parent ); + service( sm ); + } + + /** @see #getInvisibleSharedFrame */ + private static JFrame invisibleSharedFrame; + + /** @see #getInvisibleSharedFrame */ + private static int referenceCounter = 0; + + /** If a dialogs owner is null this frame will be used as owner. + A call to this method will increase the referenceCounter. + A new shared frame is created when the referenceCounter is 1. + The frame gets disposed if the refernceCounter is 0. + The referenceCounter is decreased in the dispose method. + */ + private static Frame getInvisibleSharedFrame() { + referenceCounter ++; + if (referenceCounter == 1) + { + invisibleSharedFrame = new JFrame(); + invisibleSharedFrame.setSize(400,400); + FrameControllerList.centerWindowOnScreen(invisibleSharedFrame); + } + return invisibleSharedFrame; + } + + public static DialogUI create(RaplaContext sm,Component owner,boolean modal,JComponent content,String[] options) throws RaplaException { + DialogUI dlg; + Component topLevel = getOwnerWindow(owner); + if ( topLevel instanceof Dialog) + dlg = new DialogUI(sm,(Dialog)topLevel); + else + dlg = new DialogUI(sm,(Frame)topLevel); + + dlg.parent = owner; + dlg.init(modal,content,options); + return dlg; + } + + + public static DialogUI create(RaplaContext sm,Component owner,boolean modal,String title,String text,String[] options) throws RaplaException { + DialogUI dlg= create(sm,owner,modal,new JPanel(),options); + dlg.createMessagePanel(text); + dlg.setTitle(title); + return dlg; + } + + + + public static DialogUI create(RaplaContext sm,Component owner,boolean modal,String title,String text) throws RaplaException { + DialogUI dlg = create(sm,owner,modal,title,text,getDefaultOptions()); + dlg.useDefaultOptions = true; + return dlg; + } + + public RaplaButton getButton(int index) { + return buttons[index]; + } + + protected void init(boolean modal,JComponent content,String[] options) { + super.setModal(modal); + m_modal = modal; + AWTAdapterFactory fact = + AWTAdapterFactory.getFactory(); + if (fact != null) { + fact.createFocusAdapter( this ).ignoreFocusComponents(new FocusTester() { + public boolean accept(Component component) { + return !(component instanceof HTMLView) ; + } + }); + } + + this.content = content; + + this.enableEvents(AWTEvent.WINDOW_EVENT_MASK); + + JPanel contentPane = (JPanel) this.getContentPane(); + contentPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); + contentPane.setLayout(new BorderLayout()); + contentPane.add(content, BorderLayout.CENTER); + contentPane.add(jPanelButtonFrame,BorderLayout.SOUTH); + jPanelButtonFrame.setLayout(new FlowLayout(FlowLayout.CENTER)); + setButtons(options); + contentPane.setVisible(true); + + /* + We enable the escape-key for executing the abortCmd. Many thanks to John Zukowski. + Java-Tip 72 + */ + KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); + contentPane.getActionMap().put("abort",buttonListener); + contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(stroke,"abort"); + } + + protected void setButtons(String[] options) { + buttons = new RaplaButton[options.length]; + + for (int i=0;i0) + setDefault(0); + jPanelButtonFrame.invalidate(); + } + + protected JComponent createButtonPanel() { + GridLayout gridLayout = new GridLayout(); + JPanel jPanelButtons = new JPanel(); + jPanelButtons.setLayout(gridLayout); + gridLayout.setRows(1); + gridLayout.setHgap(10); + gridLayout.setVgap(5); + gridLayout.setColumns(buttons.length); + for (int i=0;i 1) { + getButton(0).setText(i18n.getString("ok")); + getButton(1).setIcon(i18n.getIcon("icon.abort")); + getButton(1).setText(i18n.getString("abort")); + } else { + getButton(0).setText(i18n.getString("ok")); + } + } + localeSelector = (LocaleSelector) sm.lookup( LocaleSelector.ROLE); + localeSelector.addLocaleChangeListener(this); + frameList = (FrameControllerList) sm.lookup(FrameControllerList.ROLE); + frameList.add(this); + } + + protected I18nBundle getI18n() { + return i18n; + } + + protected RaplaContext getContext() { + return context; + } + + /** the default implementation does nothing. Override this method + if you want to react on a locale change.*/ + public void localeChanged(LocaleChangeEvent evt) { + + } + + public void setIcon(Icon icon) { + try { + if (label != null) + label.setIcon(icon); + } catch (Exception ex) { + } + } + + FrameControllerList getFrameList() { + return frameList; + } + + /** close and set the selectedIndex to the index Value. Usefull for modal dialogs*/ + public void close(int index) { + selectedIndex = index; + close(); + } + + // The implementation of the FrameController Interface + public void close() { + if (bClosed) + return; + dispose(); + } + + public void dispose() { + bClosed = true; + try { + if (getOwner() == invisibleSharedFrame) + referenceCounter --; + super.dispose(); + if (referenceCounter == 0 && invisibleSharedFrame!= null) + invisibleSharedFrame.dispose(); + if (frameList != null) + frameList.remove(this); + if ( localeSelector != null ) + localeSelector.removeLocaleChangeListener(this); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + // The implementation of the DialogController Interface + public void setDefault(int index) { + this.getRootPane().setDefaultButton(getButton(index)); + } + + public void setTitle(String title) { + super.setTitle(title); + } + + public boolean isClosed() { + return bClosed; + } + + public void start(Point p) { + //Validate frames that have preset sizes + //Pack frames that have useful preferred size info, e.g. from their layout + if (packFrame) { + this.pack(); + } else { + this.validate(); + } + if (parent != null) { + FrameControllerList.placeRelativeToComponent(this,parent,p); + } else { + getFrameList().placeRelativeToMain(this); + } + // okButton.requestFocus(); + bClosed = false; + super.setVisible( true ); + if (m_modal) { + dispose(); + } + } + + public void start() { + start(null); + } + + public void startNoPack() { + packFrame = false; + start(null); + } + + protected void processWindowEvent(WindowEvent e) { + if (e.getID() == WindowEvent.WINDOW_CLOSING) { + abortAction.actionPerformed(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"")); + } else if (e.getID() == WindowEvent.WINDOW_CLOSED) { + close(); + } + } + + private void createMessagePanel(String text) { + JPanel panel = (JPanel) content; + panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS)); + label = new JLabel(); + + HTMLView textView = new HTMLView(); + JEditorPaneWorkaround.packText(textView, HTMLView.createHTMLPage(text) ,450); + JPanel jContainer = new JPanel(); + jContainer.setLayout(new BorderLayout()); + panel.add(jContainer); + jContainer.add(label,BorderLayout.NORTH); + panel.add(textView); + } + +} + + + + + + + + + + + + + + + + + diff --git a/src/org/rapla/gui/toolkit/DisposingTool.java b/src/org/rapla/gui/toolkit/DisposingTool.java new file mode 100644 index 0000000..51b50da --- /dev/null +++ b/src/org/rapla/gui/toolkit/DisposingTool.java @@ -0,0 +1,17 @@ +package org.rapla.gui.toolkit; + +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import org.apache.avalon.framework.container.ContainerUtil; + +/** Disposes an object on window close. Must be added as a WindowListener + to the target window*/ +final public class DisposingTool extends WindowAdapter { + Object m_objectToDispose; + public DisposingTool(Object objectToDispose) { + m_objectToDispose = objectToDispose; + } + public void windowClosed(WindowEvent e) { + ContainerUtil.dispose(m_objectToDispose); + } +} diff --git a/src/org/rapla/gui/toolkit/EmptyLineBorder.java b/src/org/rapla/gui/toolkit/EmptyLineBorder.java new file mode 100644 index 0000000..a17169b --- /dev/null +++ b/src/org/rapla/gui/toolkit/EmptyLineBorder.java @@ -0,0 +1,32 @@ +/** + * + */ +package org.rapla.gui.toolkit; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Insets; + +import javax.swing.border.Border; + +public class EmptyLineBorder implements Border { + Insets insets = new Insets(0,0,0,0); + Color COLOR = Color.LIGHT_GRAY; + public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) + { + g.setColor( COLOR ); + g.drawLine(30,8, c.getWidth(), 8); + + } + + public Insets getBorderInsets( Component c ) + { + return insets; + } + + public boolean isBorderOpaque() + { + return true; + } +} \ No newline at end of file diff --git a/src/org/rapla/gui/toolkit/ErrorDialog.java b/src/org/rapla/gui/toolkit/ErrorDialog.java new file mode 100644 index 0000000..be437fd --- /dev/null +++ b/src/org/rapla/gui/toolkit/ErrorDialog.java @@ -0,0 +1,224 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.lang.reflect.Method; + +import javax.swing.DefaultListModel; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.JScrollPane; + +import org.apache.avalon.framework.CascadingException; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +final public class ErrorDialog { + RaplaContext sm; + Logger logger; + I18nBundle i18n; + /** + * @param sm + * @throws RaplaException + */ + public ErrorDialog(RaplaContext sm) throws RaplaException { + this.sm = sm; + this.i18n = (I18nBundle) sm.lookup(I18nBundle.ROLE + "/org.rapla.RaplaResources"); + this.logger = (Logger) sm.lookup(Logger.class.getName()); + } + + private RaplaContext getContext() { + return sm; + } + + protected I18nBundle getI18n() { + return i18n; + } + + protected Logger getLogger() { + return logger; + } + + public static final int WARNING_MESSAGE = 1; + public static final int ERROR_MESSAGE = 2; + public static final int EXCEPTION_MESSAGE = 3; + + /** This is for the test-cases only. If this flag is set + the ErrorDialog throws an ErrorDialogException instead of + displaying the dialog. This is useful for testing. */ + public static boolean THROW_ERROR_DIALOG_EXCEPTION = false; + + private void test(String message,int type) { + if (THROW_ERROR_DIALOG_EXCEPTION) { + throw new ErrorDialogException(new RaplaException(message),type); + } + } + + private void test(Throwable ex,int type) { + if (THROW_ERROR_DIALOG_EXCEPTION) { + throw new ErrorDialogException(ex,type); + } + } + + private String createTitle(String key) { + return getI18n().format("exclamation.format",getI18n().getString(key)); + } + + public void show(String message) { + test(message,ERROR_MESSAGE); + try { + showDialog(createTitle("error"),message,null); + } catch (Exception ex) { + System.err.println(message); + } + } + + public void showWarningDialog(String message,Component owner) { + test(message,WARNING_MESSAGE); + try { + showWarningDialog(createTitle("warning"),message,owner); + } catch (Exception ex) { + System.err.println(message); + } + } + + static private String getCause(Throwable e) { + String message = e.getMessage(); + if (message != null && message.length() > 0) { + return message; + } + if (e instanceof CascadingException) { + Throwable cause = ((CascadingException)e).getCause(); + if (cause != null) + message = getCause( cause ); + } + return message; + } + + static public String getMessage(Throwable e) { + String message = getCause(e); + if (message == null || message.length() == 0) + message = e.toString(); + return message; + } + + public void showExceptionDialog(Throwable e,Component owner) { + test(e,EXCEPTION_MESSAGE); + try { + String message = getMessage(e); + if ( getLogger() != null ) + getLogger().error(message, e); + JPanel component = new JPanel(); + component.setLayout( new BorderLayout()); + component.add( new JLabel( message ),BorderLayout.NORTH); + boolean showStacktrace = true; + Throwable nestedException = e; + + do + { + if ( nestedException instanceof RaplaException) + { + showStacktrace = false; + nestedException = ((RaplaException) nestedException).getCause(); + } + else + { + showStacktrace = true; + } + } + while ( nestedException != null && !showStacktrace); + + if ( showStacktrace) + { + try { + Method getStackTrace =Exception.class.getMethod("getStackTrace",new Class[] {}); + final Object[] stackTrace = (Object[])getStackTrace.invoke( e, new Object[] {} ); + final JList lister = new JList( ); + final JScrollPane list = new JScrollPane(lister, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + list.setBorder( null); + JPanel stackTracePanel = new JPanel(); + final JCheckBox stackTraceChooser = new JCheckBox("show stacktrace"); + stackTracePanel.setLayout( new BorderLayout()); + stackTracePanel.add( stackTraceChooser, BorderLayout.NORTH); + stackTracePanel.add( list, BorderLayout.CENTER); + stackTracePanel.setPreferredSize( new Dimension(300,200)); + stackTracePanel.setMinimumSize( new Dimension(300,200)); + component.add( stackTracePanel,BorderLayout.CENTER); + lister.setVisible( false ); + stackTraceChooser.addActionListener( new ActionListener() { + + public void actionPerformed(ActionEvent e) { + DefaultListModel model =new DefaultListModel(); + if (stackTraceChooser.isSelected() ) { + for ( int i=0;i< stackTrace.length;i++) { + model.addElement( stackTrace[i]); + } + } + lister.setModel( model ); + lister.setVisible( stackTraceChooser.isSelected()); + } + + }); + } catch (Exception ex) { + } + } + + DialogUI dlg = DialogUI.create(getContext(),owner,true,component, new String[] {getI18n().getString("ok")}); + dlg.setTitle(createTitle("error")); + dlg.setIcon(getI18n().getIcon("icon.error")); + dlg.start(); + } catch (Exception ex) { + ex.printStackTrace(); + e.printStackTrace(); + } + } + + private void showDialog(String title, String message,Component owner) { + try { + DialogUI dlg = DialogUI.create(getContext(),owner,true,title,message); + dlg.setIcon(getI18n().getIcon("icon.error")); + dlg.start(); + } catch (Exception ex2) { + getLogger().error(ex2.getMessage()); + } + } + + public void showWarningDialog(String title, String message,Component owner) { + try { + DialogUI dlg = DialogUI.create(getContext(),owner,true,title,message); + dlg.setIcon(getI18n().getIcon("icon.warning")); + dlg.start(); + } catch (Exception ex2) { + getLogger().error(ex2.getMessage()); + } + } +} + + + + + + + + + + diff --git a/src/org/rapla/gui/toolkit/ErrorDialogException.java b/src/org/rapla/gui/toolkit/ErrorDialogException.java new file mode 100644 index 0000000..fb17ec7 --- /dev/null +++ b/src/org/rapla/gui/toolkit/ErrorDialogException.java @@ -0,0 +1,47 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import org.apache.avalon.framework.CascadingRuntimeException; + +/** This exception is thrown by the ErrorDialog and + is used to test error-messages. + @see ErrorDialog */ +final public class ErrorDialogException extends CascadingRuntimeException { + private static final long serialVersionUID = 1L; + + int type; + + /** @param type The type of the Error-Message. + @see ErrorDialog */ + public ErrorDialogException(Throwable throwable,int type) { + super(String.valueOf(type),throwable); + this.type = type; + } + + /** returns the type of the Error-Message. + @see ErrorDialog */ + public int getType() { + return type; + } + +} + + + + + + + + + diff --git a/src/org/rapla/gui/toolkit/FrameController.java b/src/org/rapla/gui/toolkit/FrameController.java new file mode 100644 index 0000000..9989e63 --- /dev/null +++ b/src/org/rapla/gui/toolkit/FrameController.java @@ -0,0 +1,26 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; +/** All classes implementing this Interface must call + FrameControllerList.addFrameController(this) on initialization + FrameControllerList.removeFrameController(this) on close + This Class is used for automated close of all Frames on Logout. +*/ +public interface FrameController { + void close(); // must call FrameControllerList.remove(this); + } + + + + + diff --git a/src/org/rapla/gui/toolkit/FrameControllerList.java b/src/org/rapla/gui/toolkit/FrameControllerList.java new file mode 100644 index 0000000..dd38911 --- /dev/null +++ b/src/org/rapla/gui/toolkit/FrameControllerList.java @@ -0,0 +1,230 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.Toolkit; +import java.awt.Window; +import java.util.ArrayList; +import java.util.Stack; + +import org.apache.avalon.framework.logger.LogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.Assert; +import org.rapla.components.util.Tools; + +/**All rapla-windows are registered on the FrameControllerList. + The FrameControllerList is responsible for positioning the windows + and closing all open windows on exit. +*/ +final public class FrameControllerList implements LogEnabled { + public final static String ROLE = FrameControllerList.class.getName(); + private Stack openFrameController = new Stack(); + private Window mainWindow = null; + Point center; + Logger logger = null; + ArrayList listenerList = new ArrayList(); + + public FrameControllerList() { + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + center = new Point(screenSize.width / 2 + ,screenSize.height / 2); + } + + public void enableLogging(Logger logger) { + this.logger = logger; + } + + protected Logger getLogger() { + return logger; + } + + /** the center will be used by the + centerWindow() function. */ + public void setCenter(Container window) { + center.x = window.getLocationOnScreen().x + window.getSize().width/2; + center.y = window.getLocationOnScreen().y + window.getSize().height/2; + } + + /** the center will be used by the + centerWindow(Window) function. + @see #centerWindow(Window) + */ + public void setCenter(Point center) { + this.center = center; + } + + /** the main-window will be used by the + placeRelativeToMain(Window) function. + @see #placeRelativeToMain(Window) + */ + public void setMainWindow(Window window) { + this.mainWindow = window; + } + + public Window getMainWindow() { + return mainWindow; + } + + /** places the window relative to the main-window if set. + Otherwise the the centerWindow(Window) method is called. + @param newWindow the window to place + */ + public void placeRelativeToMain(Window newWindow) { + if (getLogger() != null && getLogger().isDebugEnabled() && mainWindow != null) + getLogger().debug("placeRelativeToMainWindow(" + Tools.left(mainWindow.toString(),60) + ")"); + if (mainWindow ==null) + centerWindow(newWindow); + else + placeRelativeToWindow(newWindow,mainWindow); + } + + /** adds a window to the FrameControllerList */ + public void add(FrameController c) { + Assert.notNull(c); + Assert.isTrue(!openFrameController.contains(c),"Duplicated Entries are not allowed"); + openFrameController.add(c); + } + + /** removes a window from the FrameControllerList */ + public void remove(FrameController c) { + openFrameController.remove(c); + String s = c.toString(); + if (getLogger() != null && getLogger().isDebugEnabled()) + getLogger().debug("Frame closed " + Tools.left(s,60) + "..."); + fireFrameClosed(c); + if (openFrameController.size() == 0) + fireListEmpty(); + } + + /** closes all windows registered on the FrameControllerList */ + public void closeAll() { + while (!openFrameController.empty()) { + FrameController c = (FrameController) openFrameController.peek(); + int size = openFrameController.size(); + c.close(); + if ( size <= openFrameController.size()) + getLogger().error("removeFrameController() not called in close() in " + c); + } + } + + public void addFrameControllerListener(FrameControllerListener listener) { + listenerList.add(listener); + } + + public void removeFrameControllerListener(FrameControllerListener listener) { + listenerList.remove(listener); + } + public FrameControllerListener[] getFrameControllerListeners() { + synchronized(listenerList) { + return (FrameControllerListener[])listenerList.toArray(new FrameControllerListener[]{}); + } + } + + protected void fireFrameClosed(FrameController controller) { + if (listenerList.size() == 0) + return; + FrameControllerListener[] listeners = getFrameControllerListeners(); + for (int i = 0;i screenSize.width) + x = screenSize.width - windowSize.width; + + if (y + windowSize.height > screenSize.height) + y = screenSize.height - windowSize.height; + + if (x<0) x = 0; + if (y<0) y = 0; + window.setLocation(x,y); + } + + /** places the window relative to the owner-window. + The newWindow will be placed in the middle of the owner-window. + @param newWindow the window to place + @param owner the window to place into + */ + public static void placeRelativeToWindow(Window newWindow,Window owner) { + placeRelativeToComponent(newWindow,owner,null); + } + + public static void placeRelativeToComponent(Window newWindow,Component component,Point point) { + if (component == null) + return; + Dimension dlgSize = newWindow.getSize(); + Dimension parentSize = component.getSize(); + Point loc = component.getLocationOnScreen(); + + if (point != null) { + int x = loc.x + point.x - (dlgSize.width) / 2; + int y = loc.y + point.y - ((dlgSize.height) * 2) / 3; + //System.out.println (loc + ", " + point + " x: " + x + " y: " + y); + fitIntoScreen(x,y,newWindow); + } else { + int x = (parentSize.width - dlgSize.width) / 2 + loc.x; + int y = loc.y + 10; + fitIntoScreen(x,y,newWindow); + } + } + +} + + + + + + + + + + + + + + diff --git a/src/org/rapla/gui/toolkit/FrameControllerListener.java b/src/org/rapla/gui/toolkit/FrameControllerListener.java new file mode 100644 index 0000000..87172b1 --- /dev/null +++ b/src/org/rapla/gui/toolkit/FrameControllerListener.java @@ -0,0 +1,32 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +public interface FrameControllerListener { + void frameClosed(FrameController frameController); + void listEmpty(); +} + + + + + + + + + + + + + + diff --git a/src/org/rapla/gui/toolkit/HTMLView.java b/src/org/rapla/gui/toolkit/HTMLView.java new file mode 100644 index 0000000..bb2f94d --- /dev/null +++ b/src/org/rapla/gui/toolkit/HTMLView.java @@ -0,0 +1,98 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.net.URL; + +import javax.swing.JTextPane; + +final public class HTMLView extends JTextPane { + private static final long serialVersionUID = 1L; + + public HTMLView() { + setOpaque(false); + setEditable(false); + setContentType("text/html"); + setDefaultDocBase(); + } + + public static String DEFAULT_STYLE = + "body {font-family:SansSerif;font-size:12;}\n" + + ".infotable{padding:0px;margin:0px;}\n" + + ".label {vertical-align:top;}\n" + + ".value {vertical-align:top;}\n" + ; + private static URL base; + private static Exception error = null; + + /** will only work for resources inside the same jar as org/rapla/gui/images/repeating.png */ + private void setDefaultDocBase() { + if (base == null && error == null) { + try { + String marker = "org/rapla/gui/images/repeating.png"; + URL url= HTMLView.class.getClassLoader().getResource(marker); + if (url == null) { + System.err.println("Marker not found " + marker); + return; + } + //System.out.println("resource:" + url); + String urlPath = url.toString(); + base = new URL(urlPath.substring(0,urlPath.lastIndexOf(marker))); + //System.out.println("document-base:" + base); + } catch (Exception ex) { + error = ex; + System.err.println("Can't get document-base: " + ex + " in class: " + HTMLView.class.getName()); + } + } + + if (error == null) + ((javax.swing.text.html.HTMLDocument)getDocument()).setBase(base); + } + + /** calls setText(createHTMLPage(body)) */ + public void setBody(String body) { + try { + setText(createHTMLPage(body)); + } catch (Exception ex) { + setText(body); + } + } + static public String createHTMLPage(String body,String styles) { + StringBuffer buf = new StringBuffer(); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(body); + buf.append(""); + buf.append(""); + return buf.toString(); + } + + static public String createHTMLPage(String body) { + return createHTMLPage(body,DEFAULT_STYLE); + } + + public void setText( String message, boolean packText ) + { + if (packText) { + JEditorPaneWorkaround.packText(this, message ,600); + } else { + setText( message); + } + } + +} diff --git a/src/org/rapla/gui/toolkit/IdentifiableMenuEntry.java b/src/org/rapla/gui/toolkit/IdentifiableMenuEntry.java new file mode 100644 index 0000000..72df542 --- /dev/null +++ b/src/org/rapla/gui/toolkit/IdentifiableMenuEntry.java @@ -0,0 +1,7 @@ +package org.rapla.gui.toolkit; + +/** Adds an id to the standard Swing Menu Component as JSeperator, JMenuItem and JMenu*/ +public interface IdentifiableMenuEntry +{ + String getId(); +} diff --git a/src/org/rapla/gui/toolkit/JEditorPaneWorkaround.java b/src/org/rapla/gui/toolkit/JEditorPaneWorkaround.java new file mode 100644 index 0000000..4c64148 --- /dev/null +++ b/src/org/rapla/gui/toolkit/JEditorPaneWorkaround.java @@ -0,0 +1,57 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; +import java.awt.Dimension; +import java.awt.FontMetrics; + +import javax.swing.JEditorPane; + +/** #BUGFIX + * This is a workaround for a bug in the Sun JDK + * that don't calculate the correct size of an JEditorPane. + * The first version of this workaround caused a NullPointerException + * on JDK 1.2.2 sometimes, so this is a workaround for a workaround: + * A zero-sized component is added to the StartFrame- Window + * This component will be used to calculate the size of + * the JEditorPane Components. + */ +final class JEditorPaneWorkaround { + static public void packText(JEditorPane jText,String text,int width) { + int height; + if (width <=0 ) + return; + try { + jText.setSize(new Dimension(width,100)); + jText.setText(text); + height = jText.getPreferredScrollableViewportSize().height; + } catch ( NullPointerException e) { + jText.setSize(new Dimension(width,100)); + jText.setText(text); + FontMetrics fm = jText.getFontMetrics(jText.getFont()); + height = fm.stringWidth(text)/width * fm.getHeight() + 50; + } // end of try-catch + jText.setSize(new Dimension(width,height)); + jText.setPreferredSize(new Dimension(width,height)); + } +} + + + + + + + + + + + diff --git a/src/org/rapla/gui/toolkit/MenuInterface.java b/src/org/rapla/gui/toolkit/MenuInterface.java new file mode 100644 index 0000000..07fa108 --- /dev/null +++ b/src/org/rapla/gui/toolkit/MenuInterface.java @@ -0,0 +1,21 @@ +package org.rapla.gui.toolkit; + +import java.awt.Component; + +import javax.swing.JComponent; +import javax.swing.JMenuItem; + +/** JPopupMenu and JMenu don't have a common interface, so this is a common interface + * for RaplaMenu and RaplaPopupMenu +*/ +public interface MenuInterface { + JMenuItem add(JMenuItem item); + void remove(JMenuItem item); + void addSeparator(); + void removeAll(); + + void removeAllBetween(String startId, String endId); + void insertAfterId(Component component,String id); + void insertBeforeId(JComponent component,String id); + +} \ No newline at end of file diff --git a/src/org/rapla/gui/toolkit/MonthChooser.java b/src/org/rapla/gui/toolkit/MonthChooser.java new file mode 100644 index 0000000..cb31346 --- /dev/null +++ b/src/org/rapla/gui/toolkit/MonthChooser.java @@ -0,0 +1,65 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas, Bettina Lademann | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.util.Locale; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; + +import org.rapla.components.calendarview.MonthMapper; + +/** ComboBox that displays the weekdays in long format + */ +public final class MonthChooser extends JComboBox +{ + private static final long serialVersionUID = 1L; + + MonthMapper mapper; + + public MonthChooser() + { + this( Locale.getDefault() ); + } + + public MonthChooser( Locale locale ) + { + setLocale( locale ); + } + + public void setLocale( Locale locale ) + { + super.setLocale( locale ); + if ( locale == null ) + return; + mapper = new MonthMapper( locale ); + setModel( new DefaultComboBoxModel( mapper.getNames() ) ); + } + + public void selectMonth( int month ) + { + setSelectedIndex( month ); + } + + /** returns the selected day or -1 if no day is selected. + @see java.util.Calendar + */ + public int getSelectedMonth() + { + if ( getSelectedIndex() == -1 ) + return -1; + else + return getSelectedIndex(); + } + +} diff --git a/src/org/rapla/gui/toolkit/PopupEvent.java b/src/org/rapla/gui/toolkit/PopupEvent.java new file mode 100644 index 0000000..de10587 --- /dev/null +++ b/src/org/rapla/gui/toolkit/PopupEvent.java @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.util.EventObject; +import java.awt.Point; + +public class PopupEvent extends EventObject { + private static final long serialVersionUID = 1L; + + Point m_point; + Object m_selectedObject; + + public PopupEvent(Object source, Object selectedObject, Point p) { + super(source); + m_selectedObject = selectedObject; + m_point = p; + } + public Object getSelectedObject() { + return m_selectedObject; + } + + public Point getPoint() { + return m_point; + } +} diff --git a/src/org/rapla/gui/toolkit/PopupListener.java b/src/org/rapla/gui/toolkit/PopupListener.java new file mode 100644 index 0000000..0e96879 --- /dev/null +++ b/src/org/rapla/gui/toolkit/PopupListener.java @@ -0,0 +1,17 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +public interface PopupListener { + public void showPopup(PopupEvent evt); +} diff --git a/src/org/rapla/gui/toolkit/RaplaButton.java b/src/org/rapla/gui/toolkit/RaplaButton.java new file mode 100644 index 0000000..100f1f6 --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaButton.java @@ -0,0 +1,59 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.Insets; +import javax.swing.JButton; +import javax.swing.Action; + +public class RaplaButton extends JButton { + private static final long serialVersionUID = 1L; + + public static int SMALL= -1; + public static int LARGE = 1; + public static int DEFAULT = 0; + + private static Insets smallInsets = new Insets(0,0,0,0); + private static Insets largeInsets = new Insets(5,10,5,10); + + public RaplaButton(String text,int style) { + this(style); + setText(text); + } + + public RaplaButton(int style) { + if (style == SMALL) { + setMargin(smallInsets); + } else if (style == LARGE) { + setMargin(largeInsets); + } else { + setMargin(null); + } + } + + public void setAction(Action action) { + String oldText = null; + if (action.getValue(Action.NAME) == null) + oldText = getText(); + super.setAction(action); + if (oldText != null) + setText(oldText); + } + public RaplaButton() { + } + + +} + + + diff --git a/src/org/rapla/gui/toolkit/RaplaColorList.java b/src/org/rapla/gui/toolkit/RaplaColorList.java new file mode 100644 index 0000000..6ebf5c8 --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaColorList.java @@ -0,0 +1,188 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.Color; +import java.util.Random; +import java.util.ArrayList; +import java.util.Arrays; + +/** WARNING: This class is about to change its API. Dont use it */ +final public class RaplaColorList { + public final static Color[] COLORS= + { + + /* + * using hex codes of colorsis easier than using + * the Color constructor with separated r, g and b values + * + * thus we decided to use the getColorForHex method + * which takes a hex String and returns a new Color object + * + * in the end this is an array of seven different colors + * + */ + + getColorForHex("#a3ddff"), // light blue + getColorForHex("#b5e97e"), // light green + getColorForHex("#ffb85e"), // orange + getColorForHex("#b099dc"), // violet + getColorForHex("#cccccc"), // light grey + getColorForHex("#fef49d"), // yellow + getColorForHex("#fc9992"), // red + + }; + + public final static Color[] APPOINTMENT_COLORS= + { + new Color(0xee, 0xee, 0xcc), + new Color(0xcc, 0x99, 0xcc), + new Color(0xad, 0xac, 0xa2), + new Color(0xcc, 0xaa, 0x66), + new Color(0xcc, 0xff, 0x88), + }; + public final static String DEFAULT_COLOR_AS_STRING = getHexForColor( COLORS[0]); + + + private static ArrayList colors = new ArrayList(Arrays.asList(COLORS)); + private static ArrayList appointmentColors = new ArrayList(Arrays.asList(APPOINTMENT_COLORS)); + private static Random randomA = null; + private static Random randomB = null; + + static private float rndA() + { + if (randomA == null) + randomA = new Random(7913); + return (float) (0.45 + randomA.nextFloat()/2.0); + } + + + static private float rndB() + { + if (randomB == null) + randomB = new Random(5513); + return (float) (0.4 + randomB.nextFloat()/2.0); + } + + final static public Color getResourceColor(int nr) + { + if (colors.size()<=nr) { + int fillSize = nr - colors.size() + 1; + for (int i=0;iprintHex( buf,10, 2 ) appends "0A" to the string buffer.*/ + static void printHex(StringBuffer buf,int value,int size) { + String hexString = Integer.toHexString(value); + int fill = size - hexString.length(); + if (fill>0) { + for (int i=0;i=0;i --) { + char c = value.charAt( i ); + int number; + if ( c >= '0' && c<='9') { + number = c - '0'; + } else if ( c >= 'A' && c<='F') { + number = (c - 'A') + 10; + } else { + throw new NumberFormatException("Can't parse HexValue " + value); + } + result += number * basis; + basis = basis * 16; + } + return result; + } + + public static Color getColorForHexOrNull(String hexString) { + if ( hexString != null ) { + try { + return RaplaColorList.getColorForHex(hexString ); + } catch ( NumberFormatException ex ) { + } + } + return null; + } + + public static Color getColorForHex(String hexString) throws NumberFormatException { + if ( hexString == null || hexString.indexOf('#') != 0 || hexString.length()!= 7 ) + throw new NumberFormatException("Can't parse HexValue " + hexString); + String rString = hexString.substring(1,3).toUpperCase(); + String gString = hexString.substring(3,5).toUpperCase(); + String bString = hexString.substring(5,7).toUpperCase(); + int r = decode( rString); + int g = decode( gString); + int b = decode( bString); + return new Color(r, g, b); + } + + + public static Color darken(Color color, int i) { + int newBlue = Math.max( color.getBlue() - i, 0); + int newRed = Math.max( color.getRed() - i, 0); + int newGreen = Math.max( color.getGreen() - i, 0); + return new Color( newRed, newGreen,newBlue, color.getAlpha()); + } + +} diff --git a/src/org/rapla/gui/toolkit/RaplaFrame.java b/src/org/rapla/gui/toolkit/RaplaFrame.java new file mode 100644 index 0000000..bebb069 --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaFrame.java @@ -0,0 +1,124 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.AWTEvent; +import java.awt.event.WindowEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyVetoException; +import java.beans.VetoableChangeListener; +import java.util.ArrayList; + +import javax.swing.JFrame; + +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class RaplaFrame extends JFrame + implements + FrameController +{ + private static final long serialVersionUID = 1L; + + FrameControllerList frameList = null; + ArrayList listenerList = new ArrayList(); + /** + This frame registers itself on the FrameControllerList on contextualzize + and unregisters upon dispose(). + Use addVetoableChangeListener() to get notified on a window-close event (and throw + a veto if necessary. + * @throws RaplaException + */ + public RaplaFrame(RaplaContext sm) throws RaplaException { + enableEvents(AWTEvent.WINDOW_EVENT_MASK); + /* + AWTAdapterFactory fact = + AWTAdapterFactory.getFactory(); + if (fact != null) { + fact.createFocusAdapter( this ).ignoreFocusComponents(new FocusTester() { + public boolean accept(Component component) { + return !(component instanceof HTMLView) ; + } + }); + }*/ + frameList = (FrameControllerList) sm.lookup(FrameControllerList.ROLE); + frameList.add(this); + } + + protected void processWindowEvent(WindowEvent e) { + if (e.getID() == WindowEvent.WINDOW_CLOSING) { + try { + fireFrameClosing(); + close(); + } catch (PropertyVetoException ex) { + return; + } + } + super.processWindowEvent(e); + } + + public void addVetoableChangeListener(VetoableChangeListener listener) { + listenerList.add(listener); + } + + public void removeVetoableChangeListener(VetoableChangeListener listener) { + listenerList.remove(listener); + } + + public VetoableChangeListener[] getVetoableChangeListeners() { + return (VetoableChangeListener[])listenerList.toArray(new VetoableChangeListener[]{}); + } + + + + void fireFrameClosing() throws PropertyVetoException { + if (listenerList.size() == 0) + return; + // The propterychange event indicates that the window + // is closing. + PropertyChangeEvent evt = new PropertyChangeEvent( + this + ,"visible" + ,new Boolean(true) + ,new Boolean(false) + ) + ; + VetoableChangeListener[] listeners = getVetoableChangeListeners(); + for (int i = 0;i=0; + } + + public void insertAfterId(Component component,String id) { + if ( id == null) { + getPopupMenu().add( component ); + } else { + int index = getIndexOfEntryWithId( id ) ; + getPopupMenu().insert( component, index + 1); + } + } + + public void insertBeforeId(JComponent component,String id) { + int index = getIndexOfEntryWithId( id ); + getPopupMenu().insert( component, index); + } + + +} + + diff --git a/src/org/rapla/gui/toolkit/RaplaMenuItem.java b/src/org/rapla/gui/toolkit/RaplaMenuItem.java new file mode 100644 index 0000000..58b87ba --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaMenuItem.java @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import javax.swing.JMenuItem; + +public class RaplaMenuItem extends JMenuItem implements IdentifiableMenuEntry { + private static final long serialVersionUID = 1L; + + String id; + + public RaplaMenuItem(String id) { + super(); + this.id = id; + } + + public String getId() { + return id; + } + + public static RaplaMenuItem[] EMPTY_ARRAY = new RaplaMenuItem[] {}; + +} + + diff --git a/src/org/rapla/gui/toolkit/RaplaMenubar.java b/src/org/rapla/gui/toolkit/RaplaMenubar.java new file mode 100644 index 0000000..6c6851c --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaMenubar.java @@ -0,0 +1,83 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.Component; +import java.util.ArrayList; +import java.util.Iterator; + +import javax.swing.JMenuBar; + +public class RaplaMenubar extends JMenuBar { + private static final long serialVersionUID = 1L; + + public RaplaMenubar() { + super(); + } + + /** returns -1 if there is no */ + private int getIndexOfEntryWithId(String id) { + int size = getComponentCount(); + for ( int i=0;i< size;i++) + { + Component component = getComponent( i ); + if ( component instanceof IdentifiableMenuEntry) { + IdentifiableMenuEntry comp = (IdentifiableMenuEntry) component; + if ( id != null && id.equals( comp.getId() ) ) + { + return i; + } + } + } + return -1; + } + + public void insertAfterId(String id,Component component) { + int index = getIndexOfEntryWithId( id ) + 1; + insert( component, index); + } + + public void insertBeforeId(String id,Component component) { + int index = getIndexOfEntryWithId( id ); + insert( component, index); + } + + private void insert(Component component, int index) { + int size = getComponentCount(); + + ArrayList list = new ArrayList(); + + // save the components begining with index + + for (int i = index ; i < size; i++) + { + list.add( getComponent(index) ); + } + // now remove all components begining with index + for (int i = index ; i < size; i++) + { + remove(index); + } + // now add the new component + add( component ); + + // and the removed components + for (Iterator it = list.iterator();it.hasNext();) + { + add( (Component) it.next() ); + } + } + +} + + diff --git a/src/org/rapla/gui/toolkit/RaplaPopupMenu.java b/src/org/rapla/gui/toolkit/RaplaPopupMenu.java new file mode 100644 index 0000000..53dc8d1 --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaPopupMenu.java @@ -0,0 +1,79 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.Component; + +import javax.swing.JComponent; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; + +public class RaplaPopupMenu extends JPopupMenu implements MenuInterface { + private static final long serialVersionUID = 1L; + + public RaplaPopupMenu() { + super(); + } + + private int getIndexOfEntryWithId(String id) { + int size = getComponentCount(); + for ( int i=0;i< size;i++) + { + Component component = getComponent( i ); + if ( component instanceof IdentifiableMenuEntry) { + IdentifiableMenuEntry comp = (IdentifiableMenuEntry) component; + if ( id != null && id.equals( comp.getId() ) ) + { + return i; + } + } + } + return -1; + } + + public void removeAllBetween(String startId, String endId) { + int startIndex = getIndexOfEntryWithId( startId ); + int endIndex = getIndexOfEntryWithId( endId); + if ( startIndex < 0 || endIndex < 0 ) + return; + + for ( int i= startIndex + 1; i< endIndex ;i++) + { + remove( startIndex ); + } + + } + + public void insertAfterId(Component component,String id) { + if ( id == null) { + add ( component ); + } else { + int index = getIndexOfEntryWithId( id ) ; + insert( component, index +1); + } + } + + public void insertBeforeId(JComponent component,String id) { + int index = getIndexOfEntryWithId( id ); + insert( component, index); + } + + public void remove( JMenuItem item ) + { + remove( item ); + } + + +} + + diff --git a/src/org/rapla/gui/toolkit/RaplaSeparator.java b/src/org/rapla/gui/toolkit/RaplaSeparator.java new file mode 100644 index 0000000..ca72a92 --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaSeparator.java @@ -0,0 +1,33 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import javax.swing.JSeparator; + +public class RaplaSeparator extends JSeparator implements IdentifiableMenuEntry { + private static final long serialVersionUID = 1L; + + String id; + + public RaplaSeparator(String id) { + super(); + this.id = id; + } + + public String getId() { + return id; + } + +} + + diff --git a/src/org/rapla/gui/toolkit/RaplaTree.java b/src/org/rapla/gui/toolkit/RaplaTree.java new file mode 100644 index 0000000..9e8174c --- /dev/null +++ b/src/org/rapla/gui/toolkit/RaplaTree.java @@ -0,0 +1,459 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.gui.toolkit; + +import java.awt.Color; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Stack; + +import javax.swing.BorderFactory; +import javax.swing.JScrollPane; +import javax.swing.JTree; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeModel; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; + +import org.rapla.components.util.Tools; + +/** Encapsulates the complex tree class and provides some basic functionality like + * life model exchanging while keeping the Tree state or the integration of the popup listener. + */ +final public class RaplaTree extends JScrollPane { + private static final long serialVersionUID = 1L; + + ArrayList m_popupListeners = new ArrayList(); + ArrayList m_doubleclickListeners = new ArrayList(); + ArrayList m_changeListeners = new ArrayList(); + JTree jTree = new JTree() { + private static final long serialVersionUID = 1L; + public String getToolTipText(MouseEvent evt) { + if (toolTipRenderer == null) + { + return super.getToolTipText(evt); + } + int row = getRowForLocation(evt.getX(),evt.getY()); + if (row >=0) + { + return toolTipRenderer.getToolTipText(this,row); + } + return super.getToolTipText(evt); + } + + public Point getToolTipLocation(MouseEvent evt) { + return new Point(getWidth(), 0); + } + + }; + Listener listener = new Listener(); + + private boolean treeSelectionListenerBlocked = false; + private boolean bMultiSelect = false; + TreePath selectedPath = null; + TreeToolTipRenderer toolTipRenderer; + + public RaplaTree() { + jTree.setBorder( BorderFactory.createEtchedBorder(Color.white,new Color(178, 178, 178))); + jTree.setRootVisible(false); + jTree.setShowsRootHandles(true); + //jTree.putClientProperty("JTree.lineStyle", "None"); + getViewport().add(jTree, null); + + jTree.addTreeSelectionListener( listener ); + jTree.addMouseListener( listener ); + setMultiSelect(bMultiSelect); + } + + public void setToolTipRenderer(TreeToolTipRenderer renderer) { + toolTipRenderer = renderer; + } + + public void addChangeListener(ChangeListener listener) { + m_changeListeners.add(listener); + } + public void removeChangeListener(ChangeListener listener) { + m_changeListeners.remove(listener); + } + + /** An ChangeEvent will be fired to every registered ChangeListener + * when the selection has changed. + */ + protected void fireValueChanged() { + if (m_changeListeners.size() == 0) + return; + ChangeListener[] listeners = getChangeListeners(); + ChangeEvent evt = new ChangeEvent(this); + for (int i = 0;i 1"); + // System.out.println("Button= " + me.getButton() + "Cliks= " + me.getClickCount() + " " + me.getComponent().getClass().getName()); + } + } + } + + public void setEnabled(boolean enabled) { + jTree.setEnabled(enabled); + } + + private Object getFromNode(TreeNode node) { + if (node == null) return null; + return getObject(node); + } + + private Object getLastSelectedElement() { + if (selectedPath != null) { + TreeNode node = (TreeNode) + selectedPath.getLastPathComponent(); + return getFromNode(node); + } else { + return null; + } + } + + private static Object getObject(Object treeNode) { + try { + if (treeNode == null) + return null; + if (treeNode instanceof DefaultMutableTreeNode) + return ((DefaultMutableTreeNode) treeNode).getUserObject(); + if (treeNode instanceof RecursiveNode) + return ((RecursiveNode) treeNode).getUserObject(); + return treeNode.getClass().getMethod("getUserObject",Tools.EMPTY_CLASS_ARRAY).invoke(treeNode, Tools.EMPTY_ARRAY); + } catch (Exception ex) { + return null; + } + } + + public void exchangeTreeModel(TreeModel model) { + boolean notifySelection; + try { + treeSelectionListenerBlocked = true; + notifySelection = exchangeTreeModel( model, jTree ) ; + } finally { + treeSelectionListenerBlocked = false; + } + if ( notifySelection ) { + this.fireValueChanged(); + } + } + + /** Exchanges the tree-model while trying to preserve the selection an expansion state. + * Returns if the selection has been affected by the excahnge.*/ + public static boolean exchangeTreeModel(TreeModel model,JTree tree) { + Collection expanded = new HashSet(); + Collection selected = new HashSet(); + for (int i=0;i0) { + return col.iterator().next(); + } else { + return null; + } // end of else + } + + + public List getSelectedElements() { + TreePath[] path = jTree.getSelectionPaths(); + int size = 0; + if (path != null) + size = path.length; + List list = new LinkedList(); + for (int i=0;i < size;i++) { + TreeNode node = (TreeNode) path[i].getLastPathComponent(); + Object obj = getFromNode(node); + if (obj != null) + list.add(obj); + } + return list; + } + + public Object getInfoElement() { + if ( bMultiSelect) { + return getLastSelectedElement(); + } else { + return getSelectedElement(); + } // end of else + } + + public void unselectAll() { + jTree.setSelectionInterval(-1,-1); + } + + public void requestFocus() { + jTree.requestFocus(); + } + + public void expandAll() { + int i = 0; + while (i 1) { + RecursiveNode[] nodes2 = new RecursiveNode[nodes.length-1]; + System.arraycopy(nodes,0,nodes2,0,nodes.length-1); + tree.expandPath(new TreePath(nodes2)); + } + tree.setSelectionPath(treePath); + tree.scrollPathToVisible(treePath); + } + + /* returns the path from the root to the node*/ + public TreeNode[] getPath() { + int parentCount = countParents(); + TreeNode[] path = new TreeNode[parentCount + 1]; + for (int i=parentCount ;i>0;i--) { + if (i == parentCount) + path[i-1] = getParent(); + else + path[i-1] = path[i].getParent(); + } + path[parentCount] = this; + return path; + } + + /* returns the path from the root to the node*/ + public TreePath getTreePath() { + Object[] nodes = getPath(); + return new TreePath( nodes ); + } + + public int getIndex(TreeNode treeNode) { + Object[] childNodes = getChildNodes(); + for (int i=0;i +

    This document is the description of the classes and interfaces used in rapla.

    +

     Version @doc.version@

    +

    For more information contact the developers mailinglist +or take look at the documentation section on our homepage. +

    +@see @doc.homepage@ +@see mailinglist + + + diff --git a/src/org/rapla/package.html b/src/org/rapla/package.html new file mode 100644 index 0000000..a3d2c9a --- /dev/null +++ b/src/org/rapla/package.html @@ -0,0 +1,8 @@ + +

    This package contains the classes for initializing a rapla-system. It provides +to default entry-points for starting a rapla system. That are the Main and +the MainServer classes. +@see rapla.sourceforge.net + + + diff --git a/src/org/rapla/plugin/RaplaExtensionPoints.java b/src/org/rapla/plugin/RaplaExtensionPoints.java new file mode 100644 index 0000000..af03a1d --- /dev/null +++ b/src/org/rapla/plugin/RaplaExtensionPoints.java @@ -0,0 +1,72 @@ +package org.rapla.plugin; + + + + +/** Constant Pool of all basic extension points of the Rapla system. + * You can add your extension in the provideService Method of your PluginDescriptor + *

    + * container.addContainerProvidedComponent( REPLACE_WITH_EXTENSION_POINT_NAME, REPLACE_WITH_CLASS_IMPLEMENTING_EXTENSION, config);
    + * 
    + * @see org.rapla.framework.PluginDescriptor +*/ + +public interface RaplaExtensionPoints +{ + /** add your own views to Rapla, by providing a org.rapla.gui.ViewFactory */ + String CALENDAR_VIEW_EXTENSION = "org.rapla.gui.CalendarView"; + + /** A client extension is started automaticaly when a user has successfully login into the Rapla system*/ + String CLIENT_EXTENSION = "org.rapla.clientPlugin"; + /** A server extension is started automaticaly when the server is up and running and connected to a data store*/ + String SERVER_EXTENSION = "org.rapla.serverPlugin"; + + /** + * You can add arbitrary serlvet pages to your rapla webapp. + * + * Example that adds a page with the name "my-page-name" and the class + * "org.rapla.plugin.myplugin.MyPageGenerator". You can call this page with rapla?page=my-page-name + *

    + * In the provideService Method of your PluginDescriptor do the following +

    +     container.addContainerProvidedComponent( RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, "org.rapla.plugin.myplugin.MyPageGenerator", "my-page-name", config);
    +     
    + + *@see org.rapla.servletpages.RaplaPageGenerator + m*/ + String SERVLET_PAGE_EXTENSION = "org.rapla.serverPage"; + + /** You can add a specific configuration panel for your plugin.*/ + String PLUGIN_OPTION_PANEL_EXTENSION = "org.rapla.plugin.Option"; + /** You can add additional option panels for editing the user preference. + * @see org.rapla.entities.configuration.Preferences*/ + String USER_OPTION_PANEL_EXTENSION = "org.rapla.UserOptions"; + /** You can add additional option panels for the editing the system preferences + * @see org.rapla.entities.configuration.Preferences*/ + String SYSTEM_OPTION_PANEL_EXTENSION = "org.rapla.SystemOptions"; + + /** add your own wizard to create events. See ReservationWizard class */ + String RESERVATION_WIZARD_EXTENSION = "org.rapla.gui.Reservationwizard"; + + /** add your own menu entries in the context menu of an object. To do this add + an ObjectMenuFactory under this entry.*/ + String OBJECT_MENU_EXTENSION = "org.rapla.gui.ObjectMenuFactory"; + + + /** add your own submenus to the admin menu. Get the MenuExtensionPoint via the lookup method and add the menu. + * */ + String ADMIN_MENU_EXTENSION_POINT ="org.rapla.gui.AdminMenuInsert"; + /** add your own import-menu submenus*/ + String IMPORT_MENU_EXTENSION_POINT ="org.rapla.gui.ImportMenuInsert"; + /** add your own export-menu submenus*/ + String EXPORT_MENU_EXTENSION_POINT ="org.rapla.gui.ExportMenuInsert"; + /** add your own view-menu submenus*/ + String VIEW_MENU_EXTENSION_POINT ="org.rapla.gui.ViewMenuInsert"; + /** add your own edit-menu submenus*/ + String EDIT_MENU_EXTENSION_POINT = "org.rapla.gui.EditMenuInsert"; + /** add your own help-menu submenus*/ + String HELP_MENU_EXTENSION_POINT = "org.rapla.gui.ExtraMenuInsert"; + + /** you can add your own entries on the index page Just add a HTMLMenuEntry to the list*/ + String HTML_MAIN_MENU_EXTENSION_POINT = "org.rapla.servletpages"; +} diff --git a/src/org/rapla/plugin/RaplaPluginMetaInfo.java b/src/org/rapla/plugin/RaplaPluginMetaInfo.java new file mode 100644 index 0000000..f3335e1 --- /dev/null +++ b/src/org/rapla/plugin/RaplaPluginMetaInfo.java @@ -0,0 +1,13 @@ +package org.rapla.plugin; + + + + +/** Constant Pool of all meta infos Rapla system */ +public interface RaplaPluginMetaInfo +{ + + /** return Boolean.TRUE in the getPluginMetaInfos( String key ) to enable your plugin by default in the plugin options method */ + String METAINFO_PLUGIN_ENABLED_BY_DEFAULT = "org.rapla.framework.EnablePluginByDefault"; + +} diff --git a/src/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.java b/src/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.java new file mode 100644 index 0000000..a02e831 --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/AbstractHTMLCalendarPage.java @@ -0,0 +1,302 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.abstractcalendar; + +import java.io.IOException; +import java.text.ParseException; +import java.util.Calendar; +import java.util.Date; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.calendarview.html.AbstractHTMLView; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.entities.User; +import org.rapla.entities.configuration.RaplaConfiguration; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.gui.CalendarOptionsImpl; +import org.rapla.servletpages.RaplaPageGenerator; + +public abstract class AbstractHTMLCalendarPage extends RaplaComponent implements RaplaPageGenerator +{ + public static final String SHOW_NAVIGATION_ENTRY = "org.rapla.plugin.abstractcalendar.show_navigation"; + public static final String SAVE_SELECTED_DATE = "org.rapla.plugin.abstractcalendar.save_selected_date"; + protected AbstractHTMLView view; + String calendarviewHTML; + protected CalendarModel model = null; + RaplaBuilder builder; + + public AbstractHTMLCalendarPage(RaplaContext context, CalendarModel calendarModel) throws RaplaException { + super( context); + this.model = (CalendarModel) calendarModel.clone(); + } + + protected RaplaBuilder createBuilder() throws RaplaException { + RaplaBuilder builder = new HTMLRaplaBuilder( getContext()); + builder.setRepeatingVisible( false); + builder.setExceptionsExcluded( true ); + builder.setFromModel( model, view.getStartDate(), view.getEndDate() ); + return builder; + } + + abstract protected AbstractHTMLView createCalendarView(); + abstract protected int getIncrementSize(); + + public String getCalendarHTML() { + return calendarviewHTML; + } + + public String getDateChooserHTML( Date date) { + Calendar calendar = getRaplaLocale().createCalendar(); + calendar.setTime( date ); + return HTMLDateComponents.getDateSelection( "", calendar,getLocale()); + } + + public Date getStartDate() { + return view.getStartDate(); + } + + public Date getEndDate() { + return view.getEndDate(); + } + + public String getTitle() { + return model.getNonEmptyTitle(); + } + + public int getDay( Date date) { + Calendar calendarview = getRaplaLocale().createCalendar(); + calendarview.setTime( date); + return calendarview.get( Calendar.DATE); + } + + public int getMonth( Date date) { + Calendar calendarview = getRaplaLocale().createCalendar(); + calendarview.setTime( date); + return calendarview.get( Calendar.MONTH) + 1; + } + + public int getYear( Date date) { + Calendar calendarview = getRaplaLocale().createCalendar(); + calendarview.setTime( date); + return calendarview.get( Calendar.YEAR); + } + + public void generatePage( ServletContext context,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException + { + response.setContentType("text/html; charset=" + getRaplaLocale().getCharsetNonUtf() ); + java.io.PrintWriter out = response.getWriter(); + + String filename = getFilename( request ); + boolean navigationVisible = isNavigationVisible( request ); + + RaplaLocale raplaLocale= getRaplaLocale(); + Calendar calendarview = raplaLocale.createCalendar(); + calendarview.setTime( model.getSelectedDate() ); + if ( request.getParameter("today") != null ) { + calendarview.setTime( getQuery().today() ); + } else if ( request.getParameter("day") != null ) { + String dateString = request.getParameter("year") + "-" + + request.getParameter("month") + "-" + + request.getParameter("day"); + try { + SerializableDateTimeFormat format = new SerializableDateTimeFormat( raplaLocale.createCalendar()); + calendarview.setTime( format.parseDate( dateString, false ) ); + } catch (ParseException ex) { + throw new ServletException( ex); + } + if ( request.getParameter("next") != null) + calendarview.add( getIncrementSize(), 1); + if ( request.getParameter("prev") != null) + calendarview.add( getIncrementSize(), -1); + } + + Date currentDate = calendarview.getTime(); + model.setSelectedDate( currentDate ); + view = createCalendarView(); + view.setLocale( getRaplaLocale().getLocale() ); + view.setTimeZone(getRaplaLocale().getTimeZone()); + view.setToDate(model.getSelectedDate()); + model.setStartDate( view.getStartDate() ); + model.setEndDate( view.getEndDate() ); + + try { + builder = createBuilder(); + } catch (RaplaException ex) { + getLogger().error("Can't create builder ", ex); + throw new ServletException( ex ); + } + view.rebuild( builder); + + calendarviewHTML = view.getHtml(); + + + out.println(""); + out.println(""); + out.println(" " + getTitle() + ""); + out.println(" "); + out.println(" "); + // tell the html page where its favourite icon is stored + out.println(" "); + out.println(" "); + out.println(""); + out.println(""); + + // Start DateChooser + if (navigationVisible) + { + out.println("
    "); + out.println("
    "); + out.println(getHiddenField("page", "calendar")); + out.println(getHiddenField("user", model.getUser().getUsername())); + out.println(getHiddenField("file", filename)); + // add the "previous" button including the css class="super button" + out.println(" "); + out.println("  "); + out.println(getDateChooserHTML(currentDate)); + // add the "goto" button including the css class="super button" + out.println(""); + out.println(" "); + out.println(" "); + // add the "today" button including the css class="super button" + out.println(""); + out.println(" "); + // add the "next" button including the css class="super button" + out.println(""); + out.println("
    "); + out.println("
    "); + } + + // End DateChooser + // Start weekview + out.println("

    "); + out.println(getTitle()); + out.println("

    "); + out.println("
    "); + out.println(getCalendarHTML()); + out.println("
    "); + + // end weekview + out.println(""); + out.println(""); + + } + + public String getFilename(HttpServletRequest request) { + return request.getParameter("file"); + } + + + public boolean isNavigationVisible( HttpServletRequest request) { + String config = (String)model.getOption( SHOW_NAVIGATION_ENTRY ); + if ( config == null || config.equals( "true" )) + { + return true; + } + return !config.equals( "false" ) && request.getParameter("hide_nav") == null; + } + + String getHiddenField( String fieldname, String value) { + return ""; + } + + String getHiddenField( String fieldname, int value) { + return getHiddenField( fieldname, String.valueOf(value)); + } + + /* + public String getLegend() { + if ( !getCalendarOptions().isResourceColoring()) { + return ""; + } + Iterator it = view.getBlocks().iterator(); + LinkedList coloredAllocatables = new LinkedList(); + while (it.hasNext()) { + List list = ((HTMLRaplaBlock)it.next()).getContext().getColoredAllocatables(); + for (int i=0;i\n"); + buf.append("\n"); + buf.append(""); + buf.append( getI18n().getString("legend")); + buf.append(":"); + buf.append(""); + try { + AllocatableInfoUI allocatableInfo = new AllocatableInfoUI(getContext()); + while (it.hasNext()) { + Allocatable allocatable = (Allocatable) it.next(); + String color = (String) builder.getColorMap().get(allocatable); + if (color == null) // (!color_map.containsKey(allocatable)) + continue; + + buf.append(""); + buf.append(""); + buf.append( allocatable.getName(getRaplaLocale().getLocale()) ); + buf.append(""); + buf.append( allocatableInfo.getTooltip( allocatable)); + buf.append(""); + buf.append(""); + buf.append(""); + } + } catch (RaplaException ex) { + getLogger().error( "Error generating legend",ex); + } + buf.append("\n"); + buf.append(""); + return buf.toString(); + } + */ + + public CalendarOptions getCalendarOptions() { + RaplaConfiguration conf = null; + try { + User user = model.getUser(); + if ( user != null) + { + conf = (RaplaConfiguration)getQuery().getPreferences( user ).getEntry(CalendarOptionsImpl.CALENDAR_OPTIONS); + } + if ( conf == null) + { + conf = (RaplaConfiguration)getQuery().getPreferences( null ).getEntry(CalendarOptionsImpl.CALENDAR_OPTIONS); + } + if ( conf != null) + { + return new CalendarOptionsImpl( conf.getConfig()); + } + } catch (RaplaException ex) { + + } + return (CalendarOptions)getService( CalendarOptions.ROLE); + } + +} + diff --git a/src/org/rapla/plugin/abstractcalendar/AbstractRaplaBlock.java b/src/org/rapla/plugin/abstractcalendar/AbstractRaplaBlock.java new file mode 100644 index 0000000..07c6281 --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/AbstractRaplaBlock.java @@ -0,0 +1,149 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Gereon Fassbender, Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.abstractcalendar; + +import java.util.Date; +import java.util.List; + +import org.rapla.components.util.DateTools; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.Named; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.framework.RaplaLocale; + + +public abstract class AbstractRaplaBlock +{ + RaplaBuilder.RaplaBlockContext m_context; + Date m_start; + Date m_end; + RaplaLocale m_raplaLocale; + + AbstractRaplaBlock() { + + } + + void contextualize(RaplaBuilder.RaplaBlockContext context) { + m_context = context; + m_raplaLocale = getBuildContext().getRaplaLocale(); + } + + public String getName(Named named) { + return named.getName(m_raplaLocale.getLocale()); + } + + public Date getStart() { + return m_start; + } + + public Date getEnd() { + return m_end; + } + + protected I18nBundle getI18n() { + return getBuildContext().getI18n(); + } + + public void setStart(Date start) { + m_start = start; + } + + public void setEnd(Date end) { + m_end = end; + } + + public Appointment getAppointment() { + return getContext().getAppointment(); + } + + public Reservation getReservation() { + return getAppointment().getReservation(); + } + + RaplaBuilder.RaplaBlockContext getContext() { + return m_context; + } + + RaplaBuilder.BuildContext getBuildContext() { + return getContext().getBuildContext(); + } + + public boolean isMovable() { + return getContext().isMovable() && !isException(); + } + + public boolean startsAndEndsOnSameDay() { + return DateTools.isSameDay( + getAppointment().getStart().getTime() + ,getAppointment().getEnd().getTime() -1 + ) + ; + } + + String[] getColorsAsHex() { + List allocatables = getContext().getColoredAllocatables(); + if (allocatables.size() ==0 ) { + String color = RaplaBuilder.getColorForClassifiable( getReservation() ); + if ( color == null) { + color = getBuildContext().lookupColorString(null); + } + return new String[] {color}; + } + String[] results = new String[allocatables.size()]; + for (int i=0;i', 28); + int incrementSize = Calendar.WEEK_OF_YEAR; + CalendarModel model; + Listener listener = new Listener(); + JPanel periodPanel; + + JButton todayButton= new RaplaButton(getString("today"), RaplaButton.SMALL); + + public DateChooserPanel(RaplaContext sm, CalendarModel model) throws RaplaException { + super( sm ); + this.model = model; + periodChooser = new PeriodChooser(getContext(),PeriodChooser.START_ONLY); + dateSelection = createRaplaCalendar(); + + //prevButton.setText("<"); + //nextButton.setText(">"); + double pre =TableLayout.PREFERRED; + double[][] sizes = {{0.02,pre,5,pre,2,pre,0.02,0.9,5,0.02} + ,{/*0.5,*/pre/*,0.5*/}}; + TableLayout tableLayout = new TableLayout(sizes); + JPanel calendarPanel = new JPanel(); + TitledBorder titleBorder = BorderFactory.createTitledBorder(getI18n().getString("date")); + calendarPanel.setBorder(titleBorder); + panel.setLayout(tableLayout); + calendarPanel.add(dateSelection); + calendarPanel.add(todayButton); + calendarPanel.add(prevButton); + //rku: eingefuegt + + + calendarPanel.add(nextButton); + panel.add(calendarPanel, "1, 0"); + periodPanel = new JPanel(new GridLayout(1,1)); + titleBorder = BorderFactory.createTitledBorder(getI18n().getString("period")); + periodPanel.setBorder(titleBorder); + periodPanel.add(periodChooser); + panel.add(periodPanel,"7,0"); + + + periodChooser.setDate(getQuery().today()); + + nextButton.addActionListener( listener ); + prevButton.addActionListener( listener); + + dateSelection.addDateChangeListener( listener); + periodChooser.addActionListener( listener); + + todayButton.addActionListener(listener); + update(); + } + + boolean listenersEnabled = true; + public void update() throws RaplaException + { + listenersEnabled = false; + try { + final PeriodModel periodModel = getPeriodModel(); + periodChooser.setPeriodModel( periodModel); + if ( model.getSelectedDate() == null) { + model.setSelectedDate( getQuery().today()); + } + Date date = model.getSelectedDate(); + periodChooser.setDate( date); + dateSelection.setDate( date); + periodPanel.setVisible( periodModel.getSize() > 0); + + } finally { + listenersEnabled = true; + } + } + + + public void dispose() { + periodChooser.removeActionListener( listener ); + ContainerUtil.dispose( periodChooser ); + } + + public void setNavigationVisible( boolean enable) { + nextButton.setVisible( enable); + prevButton.setVisible( enable); + } + + /** possible values are Calendar.DATE, Calendar.WEEK_OF_YEAR, Calendar.MONTH and Calendar.YEAR. + Default is Calendar.WEEK_OF_YEAR. + */ + public void setIncrementSize(int incrementSize) { + this.incrementSize = incrementSize; + } + + /** registers new DateChangeListener for this component. + * An DateChangeEvent will be fired to every registered DateChangeListener + * when the a different date is selected. + * @see DateChangeListener + * @see DateChangeEvent + */ + public void addDateChangeListener(DateChangeListener listener) { + listenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeDateChangeListener(DateChangeListener listener) { + listenerList.remove(listener); + } + + public DateChangeListener[] getDateChangeListeners() { + return (DateChangeListener[])listenerList.toArray(new DateChangeListener[]{}); + } + + /** An ActionEvent will be fired to every registered ActionListener + * when the a different date is selected. + */ + protected void fireDateChange(Date date) { + if (listenerList.size() == 0) + return; + DateChangeListener[] listeners = getDateChangeListeners(); + DateChangeEvent evt = new DateChangeEvent(this,date); + for (int i = 0;i\n"); + for (int i=1;i<=31;i++) { + buf.append(""); + buf.append("\n"); + } + buf.append(""); + return buf.toString(); + } + + static public String getMonthSelection(String name, int selectedValue, Locale locale) { + StringBuffer buf = new StringBuffer(); + buf.append(""); + return buf.toString(); + } + + static public String getYearSelection(String name, int selectedValue, int minYear, int maxYear) { + StringBuffer buf = new StringBuffer(); + buf.append(""); + return buf.toString(); + } +} + + diff --git a/src/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.java b/src/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.java new file mode 100644 index 0000000..6c20cbc --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/HTMLRaplaBlock.java @@ -0,0 +1,143 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.abstractcalendar; + + +import org.rapla.components.calendarview.html.HTMLBlock; +import org.rapla.components.util.xml.XMLWriter; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.view.AppointmentInfoUI; + + +class HTMLRaplaBlock extends AbstractRaplaBlock implements HTMLBlock { + private int m_day; + private int m_row; + private int m_rowCount; + private int index = 0; + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public void setRowCount(int rows) { + m_rowCount = rows; + } + + public void setRow(int row) { + m_row = row; + } + + public int getRowCount() { + return m_rowCount; + } + + public int getRow() { + return m_row; + } + + public void setDay(int day) { + m_day = day; + } + + public int getDay() { + return m_day; + } + + public String getBackgroundColor() { + return getColorsAsHex()[0]; + } + + public String toString() { + StringBuffer buf = new StringBuffer(); + String label = XMLWriter.encode(getName( getReservation())); + String timeString = getTimeString(false); + + if ( getContext().isAnonymous()) { + String anonymous = "    ???"; + if ( timeString != null) { + return timeString + " " + anonymous; + } else { + return anonymous; + } + } + + if ( timeString != null) { + label = timeString + "
    " + label; + } + try { + AppointmentInfoUI reservationInfo = new AppointmentInfoUI(getContext().getBuildContext().getServiceManager()); + String url = null; + Attribute[] attributes = getReservation().getClassification().getAttributes(); + for ( int i=0;i" ); + if ( url != null) { + buf.append( ""); + } + buf.append( label ); + if ( url != null) { + buf.append( ""); + } + buf.append( ""); + buf.append(reservationInfo.getTooltip(getAppointment())); + buf.append( ""); + buf.append( "" ); + } catch (RaplaException ex) { + buf.append( label ); + } + if (getBuildContext().isPersonVisible()) { + Allocatable[] persons = getReservation().getPersons(); + for (int i=0; i"); + buf.append(""); + buf.append(XMLWriter.encode(getName(persons[i]))); + buf.append(""); + } + } + if (getBuildContext().isResourceVisible()) { + Allocatable[] resources = getReservation().getResources(); + for (int i=0; i"); + buf.append(""); + buf.append(XMLWriter.encode(getName(resources[i]))); + buf.append(""); + } + } + return buf.toString(); + } +} diff --git a/src/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.java b/src/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.java new file mode 100644 index 0000000..d246af4 --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/HTMLRaplaBuilder.java @@ -0,0 +1,70 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.abstractcalendar; + +import java.util.Calendar; +import java.util.Date; + +import org.rapla.components.calendarview.Block; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +class HTMLRaplaBuilder extends RaplaBuilder { + static String COLOR_NO_RESOURCE = "#BBEEBB"; + int m_rowsPerHour = 4; + /** shared calendar instance. Only used for temporary stored values. */ + String m_html; + int index = 0; + + public HTMLRaplaBuilder(RaplaContext sm) throws RaplaException { + super(sm); + } + + boolean isExceptionsExcluded() { + return true; + } + + Block createBlock(RaplaBlockContext blockContext, Date start, Date end) { + HTMLRaplaBlock block = new HTMLRaplaBlock(); + block.setIndex( index ++ ); + block.setStart(start); + block.setEnd(end); + block.contextualize(blockContext); + + Calendar calendar = getRaplaLocale().createCalendar(); + calendar.setTime(start); + int row = (int) ( + calendar.get(Calendar.HOUR_OF_DAY)* m_rowsPerHour + + Math.round((calendar.get(Calendar.MINUTE) * m_rowsPerHour)/60.0) + ); + block.setRow(row); + block.setDay(calendar.get(Calendar.DAY_OF_WEEK)); + + calendar.setTime(block.getEnd()); + int endRow = (int) ( + calendar.get(Calendar.HOUR_OF_DAY)* m_rowsPerHour + + Math.round((calendar.get(Calendar.MINUTE) * m_rowsPerHour)/60.0) + ); + int rowCount = endRow -row; + block.setRowCount(rowCount); + /* + System.out.println("Start " + start + " End " + end); + System.out.println("Block " + block.getReservation().getName(null) + + " Row: " + row + " Endrow: " + endRow + " Rowcount " + rowCount ); + */ + return block; + } + +} diff --git a/src/org/rapla/plugin/abstractcalendar/IntervallChooserPanel.java b/src/org/rapla/plugin/abstractcalendar/IntervallChooserPanel.java new file mode 100644 index 0000000..938f0c4 --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/IntervallChooserPanel.java @@ -0,0 +1,223 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.abstractcalendar; + +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; + +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.border.TitledBorder; + +import org.rapla.components.calendar.DateChangeEvent; +import org.rapla.components.calendar.DateChangeListener; +import org.rapla.components.calendar.RaplaCalendar; +import org.rapla.components.layout.TableLayout; +import org.rapla.components.util.DateTools; +import org.rapla.entities.domain.Period; +import org.rapla.facade.PeriodModel; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.PeriodChooser; +import org.rapla.gui.toolkit.RaplaWidget; + +public class IntervallChooserPanel extends RaplaGUIComponent + implements + RaplaWidget +{ + Collection listenerList = new ArrayList(); + PeriodChooser periodChooser; + + JPanel panel = new JPanel(); + RaplaCalendar startDateSelection; + RaplaCalendar endDateSelection; + boolean listenersEnabled = true; + CalendarModel model; + Listener listener = new Listener(); + JPanel periodPanel; + + public IntervallChooserPanel(RaplaContext sm, CalendarModel model) throws RaplaException { + super(sm); + this.model = model; + + periodChooser = new PeriodChooser(getContext(),PeriodChooser.START_AND_END); + periodChooser.setWeekOfPeriodVisible( false ); + + startDateSelection = createRaplaCalendar(); + endDateSelection = createRaplaCalendar(); + //prevButton.setText("<"); + //nextButton.setText(">"); + double pre =TableLayout.PREFERRED; + double[][] sizes = {{0.02,pre, 5, pre, 5,0.9,0.02} + ,{pre}}; + TableLayout tableLayout = new TableLayout(sizes); + panel.setLayout(tableLayout); + + JPanel startPanel = new JPanel(); + TitledBorder titleBorder = BorderFactory.createTitledBorder(getString("start_date")); + startPanel.setBorder(titleBorder); + + startPanel.add(startDateSelection); + panel.add(startPanel,"1,0"); + + JPanel endPanel = new JPanel(); + titleBorder = BorderFactory.createTitledBorder(getString("end_date")); + endPanel.setBorder(titleBorder); + endPanel.add(endDateSelection); + + panel.add(endPanel,"3,0"); + + periodPanel = new JPanel(new GridLayout(1,1)); + titleBorder = BorderFactory.createTitledBorder(getString("period")); + periodPanel.setBorder(titleBorder); + periodPanel.add(periodChooser); + + panel.add( periodPanel,"5,0"); + periodChooser.addActionListener( listener ); + + + startDateSelection.addDateChangeListener( listener ); + endDateSelection.addDateChangeListener( listener ); + update(); + } + + public void update() throws RaplaException + { + listenersEnabled = false; + try { + if ( model.getStartDate() == null) { + model.setStartDate( getQuery().today()); + } + if ( model.getEndDate() == null) { + Calendar cal = getRaplaLocale().createCalendar(); + cal.setTime( model.getStartDate()); + cal.add( Calendar.YEAR, 1); + model.setEndDate( cal.getTime()); + } + if ( model.getSelectedDate() == null) { + model.setSelectedDate( model.getStartDate() ); + } + Date startDate = model.getStartDate(); + startDateSelection.setDate( startDate); + final PeriodModel periodModel = getPeriodModel(); + periodChooser.setPeriodModel( periodModel); + periodChooser.setDate( startDate ); + Date endDate = model.getEndDate(); + periodPanel.setVisible( periodModel.getSize() > 0); + endDateSelection.setDate( DateTools.subDay(endDate)); + } finally { + listenersEnabled = true; + } + } + + /** registers new DateChangeListener for this component. + * An DateChangeEvent will be fired to every registered DateChangeListener + * when the a different date is selected. + * @see DateChangeListener + * @see DateChangeEvent + */ + public void addDateChangeListener(DateChangeListener listener) { + listenerList.add(listener); + } + + /** removes a listener from this component.*/ + public void removeDateChangeListener(DateChangeListener listener) { + listenerList.remove(listener); + } + + public DateChangeListener[] getDateChangeListeners() { + return (DateChangeListener[])listenerList.toArray(new DateChangeListener[]{}); + } + + /** An ActionEvent will be fired to every registered ActionListener + * when the a different date is selected. + */ + protected void fireDateChange(Date date) { + if (listenerList.size() == 0) + return; + DateChangeListener[] listeners = getDateChangeListeners(); + DateChangeEvent evt = new DateChangeEvent(this,date); + for (int i = 0;i in top of all HTML- and Swing-View Blocks + private boolean splitByAllocatables = false; + protected boolean isEmptyBlockVisible = false; + private HashMap colors = new HashMap(); //This currently only works with HashMap + private User editingUser; + private boolean isResourceColoring; + /** default buildStrategy is {@link GroupAllocatablesStrategy}.*/ + BuildStrategy buildStrategy; + + HashSet allReservationsForAllocatables = new HashSet(); + int max =0; + int min =0; + + List preparedBlocks = null; + private boolean conflictsSelected = false; + + public RaplaBuilder(RaplaContext sm) throws RaplaException { + super(sm); + buildStrategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + } + + public void setFromModel(CalendarModel model, Date startDate, Date endDate) throws RaplaException { + Collection reservations = new HashSet(Arrays.asList( model.getReservations( startDate, endDate ))); + Allocatable[] all = model.getSelectedAllocatables(); + Collection allocatables = Arrays.asList( all); + if ( model.getStartDate() != null && allocatables.size()> 0) { + allReservationsForAllocatables.addAll( Arrays.asList(getQuery().getReservations( all, startDate, endDate))); + } + conflictsSelected = false; + + for (Object selectedObject: model.getSelectedObjects()) + { + if (selectedObject instanceof Conflict) + { + conflictsSelected = true; + } + } + isEmptyBlockVisible = allocatables.size() == 0; + isResourceColoring =getCalendarOptions( model.getUser()).isResourceColoring(); + selectReservations( reservations ); + + + /* Uncomment this to color allocatables in the reservation view + if ( allocatables.size() == 0) { + allocatables = new ArrayList(); + for (int i=0;i< reservations.size();i++) { + Reservation r = (Reservation) reservations.get( i ); + Allocatable[] a = r.getAllocatables(); + for (int j=0;jo2.hashCode()) + return -1; + if (o1.hashCode() getAffectedAppointments(Collection selectedReservations, Collection selectedAllocatables, + Date start, Date end, boolean emptyBlockVisible, boolean excludeExceptions) { + if ( selectedAllocatables == null ) + selectedAllocatables = Tools.EMPTY_LIST; + List preparedBlocks = new ArrayList(); + // The appointments that are explictly connected to + // a selected allocatable + ArrayList connectedAppointments = new ArrayList(); + Iterator it = selectedReservations.iterator(); + while (it.hasNext()){ + Reservation r= (Reservation) it.next(); + //System.out.println("Selected : " + r.getName(Locale.getDefault())); + Appointment[] appointments= r.getAppointments(); + Allocatable[] allocatables = r.getAllocatables(); + + // this flag is set true if one of the allocatables of a + // reservation matches a selected allocatable. + boolean allocatableMatched = false; + + // a reservation is wildcardConnected, if at least one of its + // allocatables is connected to all appointments and + // this allocatable is selected. + boolean wildcardConnected = false; + + connectedAppointments.clear(); + for (int i=0; i splitBlocks(Collection preparedBlocks, Date startDate, Date endDate) { + List result = new ArrayList(); + for (AppointmentBlock block:preparedBlocks) { + long blockStart = block.getStart(); + long blockEnd = block.getEnd(); + Appointment appointment = block.getAppointment(); + boolean isException = block.isException(); + if (DateTools.isSameDay(blockStart, blockEnd)) { + result.add( new AppointmentBlock(blockStart, blockEnd, appointment, isException)); + } else { + long firstBlockDate = Math.max(blockStart, startDate.getTime()); + long lastBlockDate = Math.min(blockEnd, endDate.getTime()); + long currentBlockDate = firstBlockDate; + while ( currentBlockDate >= blockStart && DateTools.cutDate( currentBlockDate ) < lastBlockDate) { + long start; + long end; + if (DateTools.isSameDay(blockStart, currentBlockDate)) { + start= blockStart; + } else { + start = DateTools.cutDate(currentBlockDate); + } + if (DateTools.isSameDay(blockEnd, currentBlockDate) && !DateTools.isMidnight(blockEnd)) { + end = blockEnd; + }else { + end = DateTools.fillDate( currentBlockDate ) -1; + } + //System.out.println("Adding Block " + new Date(start) + " - " + new Date(end)); + result.add ( new AppointmentBlock(start, end, appointment,isException)); + currentBlockDate+= DateTools.MILLISECONDS_PER_DAY; + } + } + } + return result; + } + + + /** selects all blocks that should be visible and calculates the max start- and end-time */ + public void prepareBuild(Date start,Date end) { + boolean excludeExceptions = isExceptionsExcluded(); + HashSet allReservations = new HashSet( selectedReservations); + allReservations.addAll( allReservationsForAllocatables); + preparedBlocks = getAffectedAppointments(allReservations, selectedAllocatables, start, end, isEmptyBlockVisible, excludeExceptions); + preparedBlocks = splitBlocks(preparedBlocks, start, end); + + // calculate new start and end times + max =0; + min =24; + for (AppointmentBlock block:preparedBlocks) + { + int starthour = DateTools.getHourOfDay(block.getStart()); + int startminute = DateTools.getMinuteOfHour(block.getStart()); + int endhour = DateTools.getHourOfDay(block.getEnd()); + int endminute = DateTools.getMinuteOfHour(block.getEnd()); + if ((starthour != 0 || startminute != 0) && starthour0 || endminute>0)) + min = Math.max(0,endhour-1); + if ((endhour != 0 || endminute != 0) && (endhour != 23 && endminute!=59) && endhour>max) + max = Math.min(24,endhour + 1); + if (starthour>=max) + max = Math.min(24,starthour +1); + } + } + + public int getMin() { + Assert.notNull(preparedBlocks, "call prepareBuild first"); + return min; + } + + public int getMax() { + Assert.notNull(preparedBlocks, "call prepareBuild first"); + return max; + } + + abstract Block createBlock(RaplaBlockContext blockContext, Date start, Date end); + + public void build(CalendarView wv) { + ArrayList blocks = new ArrayList(); + BuildContext buildContext = new BuildContext(this, blocks); + Assert.notNull(preparedBlocks, "call prepareBuild first"); + for (AppointmentBlock block:preparedBlocks) + { + Date start = new Date( block.getStart() ); + Date end = new Date( block.getEnd() ); + Appointment appointment = block.getAppointment(); + RaplaBlockContext[] blockContext = getBlocksForAppointment( appointment, buildContext ); + for ( int j=0;j< blockContext.length; j++) { + blocks.add( createBlock(blockContext[j], start, end)); + } + } + + buildStrategy.build(wv, blocks); + } + + private RaplaBlockContext[] getBlocksForAppointment(Appointment appointment, BuildContext buildContext) { + boolean isEventSelected = selectedReservations.contains( appointment.getReservation()); + RaplaBlockContext firstContext = new RaplaBlockContext( appointment, this, buildContext, null, isEventSelected ); + List selectedAllocatables = firstContext.getColoredAllocatables(); + if ( !splitByAllocatables || selectedAllocatables.size() < 2) { + return new RaplaBlockContext[] { firstContext }; + } + RaplaBlockContext[] context = new RaplaBlockContext[ selectedAllocatables.size() ]; + for ( int i= 0;i0:=n-times + //int repeatingDuration = getCalendarOptions().getRepeating(); // 0:infinite; >0:=n-times <0: until + showPopupMenu( component, p, start,end, slotNr, selectedAllocatables, selectedAllocatable, repeatingDuration); + } + + protected void showPopupMenu(Component component,Point p,Date start,Date end, int slotNr, Allocatable[] selectedAllocatables, Allocatable selectedAllocatable, int repeatingDuration) + { + try { + User user = getUser(); + Date today = getQuery().today(); + boolean canAllocate = false; + for ( int i=0;i< selectedAllocatables.length; i++) { + if (selectedAllocatables[i].canAllocate( user, start, end, today)) + canAllocate = true; + } + RaplaPopupMenu menu= new RaplaPopupMenu(); + CalendarOptions options = getCalendarOptions(); + if ( canAllocate || (selectedAllocatables.length == 0 && canUserAllocateSomething( getUser())) ) { + ReservationAction action = new ReservationAction(getContext(), component,p); + Collection list = getModel().getSelectedObjectsAndChildren(); + if ( list.size() > 0) { + action.changeObject ( list.iterator().next()); + } + // set a default eventype: 1. from user preference 2. guess the type + String eventType = options.getEventType(); + DynamicType guessedType; + if(eventType==null) + guessedType = action.guessType(); + else + guessedType = getQuery().getDynamicType(eventType); + addAppointmentAction(menu,component,p).setNew(start,end, selectedAllocatable, null, guessedType, repeatingDuration); // 1x + RepeatingType rt = options.getRepeatingType(); + addAppointmentAction(menu,component,p).setNew(start,end, selectedAllocatable, rt, guessedType, repeatingDuration); // default repeating + + ReservationEdit[] editWindows = getReservationController().getEditWindows(); + for ( int i=0;i" + text + ""; + } + + private Color adjustColor( String org, int alpha ) + { + Map colorMap = (Map) alphaMap.get( alpha ); + if ( colorMap == null ) + { + colorMap = new HashMap(); + alphaMap.put( alpha, colorMap ); + } + Color color = (Color) colorMap.get( org ); + if ( color == null ) + { + Color or; + try + { + or = RaplaColorList.getColorForHex( org ); + } + catch ( NumberFormatException nf ) + { + or = RaplaColorList.getColorForHex( "#FFFFFF" ); + } + color = new Color( or.getRed(), or.getGreen(), or.getBlue(), alpha ); + colorMap.put( org, color ); + } + + return color; + } + + public void paint( Graphics g ) + { + Dimension dim = getSize(); + paint( g, dim.width, dim.height ); + } + + public void paint( Graphics g, int width, int height ) + { + int alpha = g.getColor().getAlpha(); + + if ( !getContext().isEventSelected() ) + { + alpha = 80; + paintBackground( g, width, height, alpha ); + } + else + { + paintBackground( g, width, height, alpha ); + } + + //boolean isException = getAppointment().getRepeating().isException(getStart().getTime()); + Color fg = adjustColor( FOREGROUND_COLOR, alpha ); //(isException() ? Color.white : Color.black); + g.setColor( fg ); + + if ( getAppointment().getRepeating() != null && getBuildContext().isRepeatingVisible() ) + { + if ( !getContext().isAnonymous() && getContext().isEventSelected() && !isException() ) + { + getBuildContext().getRepeatingIcon().paintIcon( this, g, width - 17, 0 ); + } + /* + if ( getBuildContext().isTimeVisible() ) + g.clipRect(0,0, width -17, height); + */ + } + // y will store the y-position of the carret + int y = -2; + // Draw the Reservationname + boolean small = (height < 30); + + String timeString = getTimeString(small); + StringBuffer buf = new StringBuffer(); + if ( timeString != null ) + { + if ( !small) + { + g.setFont( FONT_SMALL_TITLE ); + y = drawString( g, timeString, y, 2, false ) - 1; + } + else + { + buf.append( timeString ); + buf.append( " " ); + } + } + if ( !small) + { + g.setFont( FONT_TITLE ); + } + else + { + g.setFont( FONT_SMALL_TITLE ); + } + + if ( getContext().isAnonymous() ) + { + y += 4; + g.setFont( FONT_INVISIBLE ); + String label = getI18n().getString( "not_visible" ); + buf.append(label); + y = drawString( g, buf.toString(), y, 5, true ) + 2; + return; + } + + String label = getName( getReservation() ); + buf.append(label); + y = drawString( g, buf.toString(), y, 2, true ) + 2; + + // If the y reaches the lowerBound "..." will be displayed + double lowerBound = height - 11; + + if ( getBuildContext().isPersonVisible() ) + { + g.setFont( FONT_PERSON ); + g.setColor( fg ); + Allocatable[] persons = getReservation().getPersons(); + for ( int i = 0; i < persons.length; i++ ) + { + if ( !getContext().isVisible( persons[i] ) ) + continue; + String text = getName( persons[i] ); + if ( y > lowerBound ) + { + text = "..."; + y -= 7; + } + y = drawString( g, text, y, 7, true ); + } + } + + if ( getBuildContext().isResourceVisible() ) + { + Allocatable[] resources = getReservation().getResources(); + g.setFont( FONT_RESOURCE ); + g.setColor( fg ); + for ( int i = 0; i < resources.length; i++ ) + { + if ( !getContext().isVisible( resources[i] ) ) + continue; + String text = getName( resources[i] ); + if ( y > lowerBound ) + { + text = "..."; + y -= 7; + } + y = drawString( g, text, y, 7, true ); + } + } + } + + private void setExceptionPaint( Graphics g ) + { + Paint p = new TexturePaint( getExceptionImage(), new Rectangle( 14, 14 ) ); + ( (Graphics2D) g ).setPaint( p ); + } + + private void paintBackground( Graphics g, int width, int height, int alpha ) + { + String[] colors = getColorsAsHex(); + double colWidth = (double) ( width - 2 ) / colors.length; + int x = 0; + for ( int i = 0; i < colors.length; i++ ) + { + g.setColor( adjustColor( colors[i], alpha ) ); + g.fillRect( (int) Math.ceil( x ) + 1, 1, (int) Math.ceil( colWidth ), height - 2 ); + if ( isException() ) + { + setExceptionPaint( g ); + g.fillRect( (int) Math.ceil( x ) + 1, 1, (int) Math.ceil( colWidth ), height - 2 ); + } + x += colWidth; + } + + //g.setColor( adjustColor( "#000000", alpha ) ); + g.setColor( linecolor ); + g.drawRoundRect( 0, 0, width - 1, height - 1, 5, 5 ); + } + + private int findBreakingSpace( char[] c, int offset, int len, int maxWidth, FontMetrics fm ) + { + int index = -1; + for ( int i = offset; i < offset + len; i++ ) + { + if ( c[i] == ' ' && fm.charsWidth( c, offset, i - offset ) < maxWidth ) + index = i; + } + return index; + } + + private int findBreaking( char[] c, int offset, int len, int maxWidth, FontMetrics fm ) + { + int index = 0; + for ( int i = offset; i < offset + len; i++ ) + { + if ( fm.charsWidth( c, offset, i - offset ) < maxWidth ) + index = i; + } + return index - 1; + } + + // @return the new y-coordiante below the text + private int drawString( Graphics g, String text, int y, int indent, boolean breakLines ) + { + FontMetrics fm = g.getFontMetrics(); + //g.setFont(new Font("SimSun",Font.PLAIN, 12)); + char[] c = text.toCharArray(); + int cWidth = getSize().width - indent; + int height = fm.getHeight(); + + int len = c.length; + int offset = 0; + int x = indent; + int maxWidth = ( y >= 14 || getAppointment().getRepeating() == null || !getBuildContext() + .isRepeatingVisible() ) + ? cWidth + : cWidth - 12; + if ( !breakLines ) + { + maxWidth = maxWidth - 5; + } + else + { + while ( offset < c.length && fm.charsWidth( c, offset, len ) > maxWidth ) + { + int breakingSpace = findBreakingSpace( c, offset, len, maxWidth, fm ); + //int x = bCenter ? (getSize().width - width)/2 : indent ; + y = y + height; + if ( breakingSpace > 0 && breakLines ) + { + g.drawChars(c,offset,breakingSpace-offset,x,y); + // System.out.println("Drawing " + new String(c,offset,breakingSpace-offset)); + len -= breakingSpace - offset + 1; + offset = breakingSpace + 1; + } + else + { + int breaking = findBreaking( c, offset, len, maxWidth, fm ); + if ( breaking > 0 ) + { + g.drawChars(c,offset,breaking-offset,x,y); + g.drawString( "\\", fm.charsWidth( c, offset, breaking - offset ) + indent, y ); + // System.out.println("Drawing " + new String(c,offset,breaking-offset) + "\\"); + len -= breaking - offset; + offset = breaking; + } + else + { + return y; + } + } + // System.out.println("New len " + len + " new offset " + offset); + maxWidth = cWidth; + } + } + y = y + height; + + g.drawChars( c, offset, len, x, y ); + // System.out.println("Drawing rest " + new String(c,offset,len)); + return y; + } + + public void mouseClicked( MouseEvent arg0 ) + { + + } + + public void mousePressed( MouseEvent arg0 ) + {} + + public void mouseReleased( MouseEvent evt ) + { + Point mp = evt.getPoint(); + boolean inside = mp.x >= 0 && mp.y >= 0 && mp.x <= getWidth() && mp.y <= getHeight(); + changeLineBorder( inside && getContext().isEventSelected() ); + } + + public void mouseEntered( MouseEvent evt ) + { + if ( ( ( evt.getModifiers() & MouseEvent.BUTTON1_MASK ) > 0 ) || !getContext().isEventSelected() ) + { + return; + } + changeLineBorder( true ); + } + + public void mouseExited( MouseEvent evt ) + { + if ( ( evt.getModifiers() & MouseEvent.BUTTON1_MASK ) > 0 ) + { + return; + } + changeLineBorder( false ); + } + + public void mouseDragged( MouseEvent arg0 ) + {} + + public void mouseMoved( MouseEvent arg0 ) + { + // TODO Auto-generated method stub + + } + + private void changeLineBorder( boolean active ) + { + List blocks = getBuildContext().getBlocks(); + for ( Iterator it = blocks.iterator(); it.hasNext(); ) + { + SwingRaplaBlock block = (SwingRaplaBlock) it.next(); + + if ( block.getAppointment().equals( getAppointment() ) ) + { + block.linecolor = active ? LINECOLOR_ACTIVE : LINECOLOR_INACTIVE; + block.m_view.repaint(); + } + else if ( block.getReservation().equals( getReservation() ) ) + { + block.linecolor = active ? LINECOLOR_SAME_RESERVATION : LINECOLOR_INACTIVE; + block.m_view.repaint(); + } + } + } + + } + +} diff --git a/src/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.java b/src/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.java new file mode 100644 index 0000000..85ad1b2 --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/SwingRaplaBuilder.java @@ -0,0 +1,40 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.abstractcalendar; + +import java.util.Date; + +import org.rapla.components.calendarview.Block; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + + +public class SwingRaplaBuilder extends RaplaBuilder +{ + public SwingRaplaBuilder(RaplaContext sm) throws RaplaException { + super(sm); + } + + /** + * @see org.rapla.plugin.abstractcalendar.RaplaBuilder#createBlock(calendar.RaplaBuilder.RaplaBlockContext, java.util.Date, java.util.Date) + */ + Block createBlock(RaplaBlockContext blockContext, Date start, Date end) { + SwingRaplaBlock block = new SwingRaplaBlock(); + block.contextualize(blockContext); + block.setStart(start); + block.setEnd(end); + return block; + } +} diff --git a/src/org/rapla/plugin/abstractcalendar/package.html b/src/org/rapla/plugin/abstractcalendar/package.html new file mode 100644 index 0000000..72854e7 --- /dev/null +++ b/src/org/rapla/plugin/abstractcalendar/package.html @@ -0,0 +1,8 @@ + +Contains the rapla-specific classes that helps in the creation +of the calendar-like view plugins. +API in this package is likly to change + + + + diff --git a/src/org/rapla/plugin/appointmentmarker/AppointmentMarker.java b/src/org/rapla/plugin/appointmentmarker/AppointmentMarker.java new file mode 100644 index 0000000..4babccb --- /dev/null +++ b/src/org/rapla/plugin/appointmentmarker/AppointmentMarker.java @@ -0,0 +1,126 @@ +package org.rapla.plugin.appointmentmarker; + +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.StringTokenizer; +import java.util.TreeSet; + +import org.rapla.components.util.DateTools; +import org.rapla.components.util.SerializableDateTimeFormat; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.AppointmentBlock; +import org.rapla.entities.domain.Repeating; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.Attribute; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class AppointmentMarker extends RaplaComponent +{ + static public String ROLE = AppointmentMarker.class.getName(); + + public AppointmentMarker( RaplaContext context ) throws RaplaException + { + super( context ); + } + + /** returns if the event has the appointmentmarker attribute*/ + public boolean canBeMarked(Reservation event) + { + Attribute att = event.getClassification().getType().getAttribute( AppointmentMarkerPlugin.MARKER_ATTRIBUTE_KEY); + return att!= null; + } + + /** returns all the marked Dates as an Set (of Date object(*/ + public Set getMarkedDates(Reservation event) { + final Set markedDates = new TreeSet(); + Attribute att = event.getClassification().getType().getAttribute( AppointmentMarkerPlugin.MARKER_ATTRIBUTE_KEY); + + Object value = event.getClassification().getValue( att ); + final SerializableDateTimeFormat format = new SerializableDateTimeFormat(); + + // Parse the marked dates + if ( value != null) + { + StringTokenizer tokenizer = new StringTokenizer((String) value,";"); + while ( tokenizer.hasMoreTokens()) + { + String dateString=tokenizer.nextToken(); + try + { + Date markedDate = format.parseDate( dateString, false); + markedDates.add(markedDate); + } + catch (ParseException e) + { + getLogger().error("Couldnt parse date " + dateString + " for appointment marking. Ignoring"); + } + } + } + return markedDates; + } + + /** returns if the event is marked on the passed dates*/ + public boolean isMarked( Reservation event, Date date) + { + return isMarked( date, getMarkedDates( event)); + } + + /** same as isMarked but you can pass the markedDates*/ + static public boolean isMarked( Date date, Collection markedDates) + { + Date normalizedDate = DateTools.cutDate( date); + return markedDates.contains( normalizedDate ); + } + + /** marks/unmarks an event on the passed date*/ + public void setMarked( Reservation event, Date dateToMark, boolean mark) + { + final SerializableDateTimeFormat format = new SerializableDateTimeFormat(); + Set markedDates = getMarkedDates( event ); + Date currentSelectedDate = DateTools.cutDate( dateToMark ); + if ( mark ) + { + markedDates.add( currentSelectedDate ); + } + else + { + markedDates.remove( currentSelectedDate ); + } + String newValue = ""; + for (Iterator it = markedDates.iterator();it.hasNext();) + { + Date markedDate = (Date) it.next(); + newValue+=format.formatDate( markedDate) + ";"; + } + event.getClassification().setValue(AppointmentMarkerPlugin.MARKER_ATTRIBUTE_KEY, newValue); + } + + /** returns null if the event contains an appointment that repeats forever*/ + public List getAllBlocks(Reservation event) { + List blocks = new ArrayList(); + Appointment[] appointments = event.getAppointments(); + for (int i = 0; i array = marker.getAllBlocks( event ); + Set markedDates = marker.getMarkedDates( event ); + if ( array == null) + { + return null; + } + for ( AppointmentBlock block: array) + { + Date start = new Date(block.getStart()); + String dateString = getRaplaLocale().formatDate( start ); + if ( AppointmentMarker.isMarked( start, markedDates)) + { + dateString = " * " + dateString ; + } + else + { + dateString = " " + dateString ; + } + list.add( dateString); + } + return list; + + } + +} diff --git a/src/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.java b/src/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.java new file mode 100644 index 0000000..9124bf2 --- /dev/null +++ b/src/org/rapla/plugin/appointmentmarker/AppointmentMarkerOption.java @@ -0,0 +1,89 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.appointmentmarker; + +import java.awt.BorderLayout; +import java.util.Locale; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.layout.TableLayout; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.DefaultPluginOption; +import org.rapla.gui.OptionPanel; + +/** Not used yet */ +public class AppointmentMarkerOption extends DefaultPluginOption implements OptionPanel { + JTextField markerLabel = new JTextField(); + + public AppointmentMarkerOption( RaplaContext sm ) throws RaplaException + { + super( sm ); + } + + protected JPanel createPanel() throws RaplaException { + JPanel panel = super.createPanel(); + JPanel content = new JPanel(); + double[][] sizes = new double[][] { + {5,TableLayout.PREFERRED, 5,TableLayout.PREFERRED,TableLayout.FILL,5} + ,{TableLayout.PREFERRED,5,TableLayout.PREFERRED,5,TableLayout.PREFERRED} + }; + addCopyPaste( markerLabel); + markerLabel.setColumns( 10); + TableLayout tableLayout = new TableLayout(sizes); + content.setLayout(tableLayout); + content.add(new JLabel("Add a new text attribute (hidden) with the key 'appointmentmarker' to an eventtype."), "1,0,4,0"); + content.add(new JLabel("Then you can mark events of that type by right clicking in the calendar view."), "1,2,4,2"); + content.add(new JLabel("Marker Menu Label:"), "1,4"); + content.add( markerLabel, "3,4"); + panel.add( content, BorderLayout.CENTER); + return panel; + } + + + protected void addChildren( DefaultConfiguration newConfig) { + DefaultConfiguration markerLabelConf = new DefaultConfiguration("marker-label"); + markerLabelConf.setValue( markerLabel.getText() ); + newConfig.addChild( markerLabelConf ); + } + + protected void readConfig( Configuration config) { + String markerLabelText = config.getChild("marker-label").getValue("mark"); + markerLabel.setText( markerLabelText ); + } + + public void show() throws RaplaException { + super.show(); + } + + public void commit() throws RaplaException { + super.commit(); + } + + /** + * @see org.rapla.gui.DefaultPluginOption#getDescriptorClassName() + */ + public String getDescriptorClassName() { + return AppointmentMarkerPlugin.class.getName(); + } + + public String getName(Locale locale) { + return "Appointment Marker Plugin"; + } + +} diff --git a/src/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.java b/src/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.java new file mode 100644 index 0000000..07db9f8 --- /dev/null +++ b/src/org/rapla/plugin/appointmentmarker/AppointmentMarkerPlugin.java @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.appointmentmarker; +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; + +public class AppointmentMarkerPlugin implements PluginDescriptor +{ + public static final String PLUGIN_CLASS = AppointmentMarkerPlugin.class.getName(); + public static final String MARKER_ATTRIBUTE_KEY = "appointmentmarker"; + public String toString() { + return "Appointment Marker"; + } + + public void provideServices(Container container, Configuration config) { + container.addContainerProvidedComponent( RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION,AppointmentMarkerOption.class.getName(),AppointmentMarkerPlugin.class.getName(), config); + + if ( !config.getAttributeAsBoolean("enabled", false) ) + return; + + container.addContainerProvidedComponent( RaplaExtensionPoints.OBJECT_MENU_EXTENSION, AppointmentMarkerMenuFactory.class.getName(), PLUGIN_CLASS, config); + container.addContainerProvidedComponent( AppointmentMarker.ROLE, AppointmentMarker.class.getName(), PLUGIN_CLASS, config); + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + +} + diff --git a/src/org/rapla/plugin/archiver/ArchiverOption.java b/src/org/rapla/plugin/archiver/ArchiverOption.java new file mode 100644 index 0000000..24e2918 --- /dev/null +++ b/src/org/rapla/plugin/archiver/ArchiverOption.java @@ -0,0 +1,112 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.archiver; + +import java.awt.BorderLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Locale; + +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.configuration.DefaultConfiguration; +import org.rapla.components.calendar.RaplaNumber; +import org.rapla.components.layout.TableLayout; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.DefaultPluginOption; +import org.rapla.gui.OptionPanel; + +public class ArchiverOption extends DefaultPluginOption implements OptionPanel { + + RaplaNumber dayField = new RaplaNumber(new Integer(25), new Integer(0),null,false); + JCheckBox removeOlderYesNo = new JCheckBox(); + + + + public ArchiverOption(RaplaContext sm) throws RaplaException { + super(sm); + } + + protected JPanel createPanel() throws RaplaException { + JPanel panel = super.createPanel(); + JPanel content = new JPanel(); + double[][] sizes = new double[][] { + {5,TableLayout.PREFERRED, 5,TableLayout.PREFERRED,5, TableLayout.PREFERRED} + ,{TableLayout.PREFERRED,5,TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, TableLayout.PREFERRED} + }; + TableLayout tableLayout = new TableLayout(sizes); + content.setLayout(tableLayout); + content.add(new JLabel("Remove old events"), "1,0"); + content.add( removeOlderYesNo, "3,0"); + content.add(new JLabel("Older than"), "1,2"); + content.add( dayField, "3,2"); + content.add( new JLabel("days"), "5,2"); + removeOlderYesNo.addActionListener( new ActionListener(){ + + public void actionPerformed( ActionEvent e ) + { + dayField.setEnabled( removeOlderYesNo.isSelected()); + } + + }); + panel.add( content, BorderLayout.CENTER); + return panel; + } + + + protected void addChildren( DefaultConfiguration newConfig) { + if ( removeOlderYesNo.isSelected()) + { + DefaultConfiguration smtpPort = new DefaultConfiguration("remove-older-than"); + smtpPort.setValue(dayField.getNumber().intValue() ); + newConfig.addChild( smtpPort ); + } + } + + protected void readConfig( Configuration config) { + int days = config.getChild("remove-older-than").getValueAsInteger(-20); + boolean isEnabled = days != -20; + removeOlderYesNo.setSelected( isEnabled ); + dayField.setEnabled( isEnabled); + if ( days == -20 ) + { + days = 30; + } + dayField.setNumber( new Integer(days)); + } + + public void show() throws RaplaException { + super.show(); + } + + public void commit() throws RaplaException { + super.commit(); + } + + + /** + * @see org.rapla.gui.DefaultPluginOption#getDescriptorClassName() + */ + public String getDescriptorClassName() { + return ArchiverPlugin.class.getName(); + } + + public String getName(Locale locale) { + return "Archiver Plugin"; + } + +} diff --git a/src/org/rapla/plugin/archiver/ArchiverPlugin.java b/src/org/rapla/plugin/archiver/ArchiverPlugin.java new file mode 100644 index 0000000..79376dc --- /dev/null +++ b/src/org/rapla/plugin/archiver/ArchiverPlugin.java @@ -0,0 +1,42 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.archiver; +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; + +public class ArchiverPlugin implements PluginDescriptor +{ + + public static final String PLUGIN_CLASS = ArchiverPlugin.class.getName(); + public String toString() { + return "Archiver"; + } + + public void provideServices(Container container, Configuration config) { + container.addContainerProvidedComponent( RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION,ArchiverOption.class.getName(),ArchiverPlugin.class.getName(), config); + + if ( !config.getAttributeAsBoolean("enabled", false) ) + return; + + container.addContainerProvidedComponent( RaplaExtensionPoints.SERVER_EXTENSION, ArchiverService.class.getName(), PLUGIN_CLASS, config); + } + + public Object getPluginMetaInfos( String key ) + { + return null; + } + +} + diff --git a/src/org/rapla/plugin/archiver/ArchiverService.java b/src/org/rapla/plugin/archiver/ArchiverService.java new file mode 100644 index 0000000..3f646a0 --- /dev/null +++ b/src/org/rapla/plugin/archiver/ArchiverService.java @@ -0,0 +1,107 @@ +package org.rapla.plugin.archiver; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.util.DateTools; +import org.rapla.entities.User; +import org.rapla.entities.domain.Appointment; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.dynamictype.ClassificationFilter; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; + +public class ArchiverService extends RaplaComponent +{ + + String REMOVE_OLDER_THAN_ENTRY = "remove-older-than"; + + public ArchiverService( RaplaContext context, Configuration config ) throws RaplaException + { + super( context ); + String value = config.getChild( REMOVE_OLDER_THAN_ENTRY).getValue(null); + if ( value != null) + { + Timer timer = new Timer(true); + long period = Long.parseLong( value) * DateTools.MILLISECONDS_PER_DAY; + RemoveTask removeTask = new RemoveTask( period); + // Call it each hour + timer.schedule(removeTask, new Date(), DateTools.MILLISECONDS_PER_HOUR); + } + } + + class RemoveTask extends TimerTask + { + long period; + public RemoveTask( long period ) + { + this.period = period; + } + + public void run() + { + Date endDate = new Date(getClientFacade().today().getTime() - period); + try + { + Reservation[] events = getClientFacade().getReservations((User) null, null, endDate, ClassificationFilter.CLASSIFICATIONFILTER_ARRAY ); + List toRemove = new ArrayList(); + for ( int i=0;i< events.length;i++) + { + Reservation event = events[i]; + if ( isOlderThan( event, endDate)) + { + toRemove.add(event); + } + } + if ( toRemove.size() > 0) + { + getLogger().info("Removing " + toRemove.size() + " old events."); + Reservation[] eventsToRemove = (Reservation[])toRemove.toArray( Reservation.RESERVATION_ARRAY); + int STEP_SIZE = 100; + for ( int i=0;i< eventsToRemove.length;i+=STEP_SIZE) + { + int blockSize = Math.min( eventsToRemove.length- i, STEP_SIZE); + Reservation[] eventBlock = new Reservation[blockSize]; + System.arraycopy( eventsToRemove,i, eventBlock,0, blockSize); + getClientFacade().removeObjects( eventBlock); + } + } + } + catch (RaplaException e) + { + getLogger().error("Could not remove old events ", e); + } + } + } + + private boolean isOlderThan( Reservation event, Date maxAllowedDate ) + { + Appointment[] appointments = event.getAppointments(); + for ( int i=0;i + + + + Name for the view + Name der Ansicht + Nom de la vue + Nombre de la vista + Naam + + + Show navigation bar + Zeige den Navigationsbalken + Affiche la barre de navigation + Indicar la navegación + Navigatie balk + + + Publish calendar to HTML + Veröffentliche Kalender nach HTML + Publier le calendrier en HTML + Publicar el calendario a HTML + + + Web Server + Web-Server + Serveur Web + Servidor Web + Webový Server + Web Server + + + The following views are currently stored: + Folgende Ansichten sind vorhanden: + Les vues suivantes sont disponibles : + Las vistas siguientes están disponibles : + + + Exported calendars + Exportierte Kalender + Calendriers Exportés + calendarios exportados + Gepubliceerde Planningen + + + \ No newline at end of file diff --git a/src/org/rapla/plugin/autoexport/CalendarListPageGenerator.java b/src/org/rapla/plugin/autoexport/CalendarListPageGenerator.java new file mode 100644 index 0000000..b34ac7c --- /dev/null +++ b/src/org/rapla/plugin/autoexport/CalendarListPageGenerator.java @@ -0,0 +1,172 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.autoexport; + +import java.io.IOException; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; +import java.util.TreeSet; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.util.IOUtil; +import org.rapla.entities.User; +import org.rapla.entities.configuration.CalendarModelConfiguration; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.configuration.RaplaMap; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.internal.RaplaStartOption; +import org.rapla.servletpages.RaplaPageGenerator; + + +public class CalendarListPageGenerator extends RaplaComponent implements RaplaPageGenerator +{ + public CalendarListPageGenerator( RaplaContext context ) throws RaplaException + { + super( context ); + setChildBundleName( AutoExportPlugin.RESOURCE_FILE ); + } + + public void generatePage( ServletContext servletContext, HttpServletRequest request, HttpServletResponse response ) + throws IOException, ServletException + { + try + { + String username = request.getParameter( "user" ); + response.setContentType("text/html; charset=" + getRaplaLocale().getCharsetNonUtf() ); + java.io.PrintWriter out = response.getWriter(); + User[] users = getQuery().getUsers(); + Set sortedUsers =new TreeSet( Arrays.asList( users)); + if ( username != null) + { + users = new User[] { getQuery().getUser( username )}; + } + String calendarName = getQuery().getPreferences( null ).getEntryAsString(RaplaStartOption.TITLE, getString("rapla.title")); + out.println( "" ); + out.println( "" ); + out.println( "" + calendarName + "" ); + out.println( "" ); + out.println( "" ); + + out.println( "

    " + getString("webserver") + ": " + calendarName + "

    "); + + for (User user : sortedUsers) + { + Preferences preferences = getQuery().getPreferences( user ); + LinkedHashMap completeMap = new LinkedHashMap(); + CalendarModelConfiguration defaultConf = (CalendarModelConfiguration) preferences.getEntry( CalendarModelConfiguration.CONFIG_ENTRY ); + if ( defaultConf != null) + { + completeMap.put( getString("default"), defaultConf); + } + + final RaplaMap raplaMap = (RaplaMap) preferences.getEntry( "org.rapla.plugin.autoexport" ); + if ( raplaMap != null) + { + completeMap.putAll( raplaMap); + } + SortedMap sortedMap = new TreeMap( new TitleComparator( completeMap)); + sortedMap.putAll( completeMap); + Iterator it = sortedMap.entrySet().iterator(); + + int count =0; + while ( it.hasNext()) + { + Map.Entry entry = (Map.Entry)it.next(); + String key = entry.getKey(); + CalendarModelConfiguration conf = entry.getValue(); + final Object isSet = conf.getOptionMap().get(AutoExportPlugin.HTML_EXPORT); + if( isSet != null && isSet.equals("false")) + { + it.remove(); + continue; + } + if(count == 0) + { + String userName = user.getName(); + if(username == null || userName.trim().length() ==0) + userName = user.getUsername(); + out.println( "

    " + userName + "

    " ); //BJO + out.println( "
      " ); + } + count++; + String title = getTitle(key, conf); + + String filename =URLEncoder.encode( key, "UTF-8" ); + out.print( "
    • " ); + out.print( ""); + out.print( title); + out.print( "" ); + out.println( "
    • " ); + } + if (count > 0) + { + out.println( "
    " ); + } + } + out.println( "" ); + out.println( "" ); + } + catch ( Exception ex ) + { + java.io.PrintWriter out = response.getWriter(); + out.println( IOUtil.getStackTraceAsString( ex ) ); + throw new ServletException( ex ); + } + } + + private String getTitle(String key, CalendarModelConfiguration conf) { + String title = conf.getTitle() ; + if ( title == null || title.trim().length() == 0) + { + title = key; + } + return title; + } + + class TitleComparator implements Comparator { + + Map base; + + public TitleComparator(Map base) { + this.base = base; + } + + public int compare(String a, String b) { + + final String title1 = getTitle(a,base.get(a)); + final String title2 = getTitle(b,base.get(b)); + int result = title1.compareToIgnoreCase( title2); + if ( result != 0) + { + return result; + } + return a.compareToIgnoreCase( b); + + } + } + +} + diff --git a/src/org/rapla/plugin/autoexport/CalendarPageGenerator.java b/src/org/rapla/plugin/autoexport/CalendarPageGenerator.java new file mode 100644 index 0000000..e3d829f --- /dev/null +++ b/src/org/rapla/plugin/autoexport/CalendarPageGenerator.java @@ -0,0 +1,119 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.autoexport; + +import java.io.IOException; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.rapla.components.util.IOUtil; +import org.rapla.entities.User; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.internal.common.CalendarModelImpl; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.servletpages.RaplaPageGenerator; + +/******* USAGE: ************ + * ReadOnly calendarview view. + * You will need the autoexport plugin to create a calendarview-view. + * + * Call: + * rapla?page=calendar&user=&file= + * + * Optional Parameters: + * + * &hide_nav: will hide the navigation bar. + * &day=: int-value of the day of month that should be displayed + * &month=: int-value of the month + * &year=: int-value of the year + * &today: will set the view to the current day. Ignores day, month and year + * @throws IOException + * @throws ServletException + * @throws Exception + * @throws RaplaException + */ +public class CalendarPageGenerator extends RaplaComponent implements RaplaPageGenerator +{ + public CalendarPageGenerator( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public void generatePage( ServletContext servletContext, HttpServletRequest request, HttpServletResponse response ) + throws IOException, ServletException + { + try + { + String username = request.getParameter( "user" ); + String filename = request.getParameter( "file" ); + CalendarModelImpl model = null; + User user = getQuery().getUser( username ); + model = new CalendarModelImpl( getContext(),user ); + model.load(filename); + final Object isSet = model.getOption(AutoExportPlugin.HTML_EXPORT); + if( isSet == null || isSet.equals("false")) + { + throw new RaplaException( "Exportfile with name '" + filename + "' not published!" ); + } + + final String viewId = model.getViewId(); + ViewFactory factory = (ViewFactory) getService( RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + + "/" + + viewId ); + + if ( factory != null ) + { + RaplaPageGenerator currentView = factory.createHTMLView( getContext(), model ); + if ( currentView != null ) + { + currentView.generatePage( servletContext, request, response ); + } + else + { + writeFehler( response, "No view available for exportfile '" + + filename + + "'. Rapla has currently no html support for the view with the id '" + + viewId + + "'." ); + } + } + else + { + writeFehler( response, "No view available for exportfile '" + + filename + + "'. Please install and select the plugin for " + + viewId ); + } + } + catch ( Exception ex ) + { + java.io.PrintWriter out = response.getWriter(); + out.println( IOUtil.getStackTraceAsString( ex ) ); + throw new ServletException( ex ); + } + } + + private void writeFehler( HttpServletResponse response, String message ) throws IOException + { + response.setContentType( "text/html; charset=" + getRaplaLocale().getCharsetNonUtf() ); + java.io.PrintWriter out = response.getWriter(); + out.println( message ); + } + +} diff --git a/src/org/rapla/plugin/autoexport/calendar.css b/src/org/rapla/plugin/autoexport/calendar.css new file mode 100644 index 0000000..ed653cd --- /dev/null +++ b/src/org/rapla/plugin/autoexport/calendar.css @@ -0,0 +1,273 @@ +a, a:visited{ + color: black; + text-decoration: none; +} +a:hover{ + color: black; + background-color: #FFFF88; +} +#calendar a span.tooltip { + display: none; +} + +#calendar a span td { + padding: 0px; + font-size: small; + color: black; +} + +#legend { + align: center; + border-width: 0px; +} + +#legend a span { + display: none; +} + +#legend a span td { + padding: 0px; + font-size: small; + color: black; +} + +#calendar { + width: 100%; +} + +/** calendar tooltip */ +#calendar a:hover span.tooltip { + display: block; + bottom: 0.5em; + right: 0.5em; + padding: .5em; + z-index: 1; + font-size: small; + color: black; + background-color: #FFFF88; +/* Doesn't work in IE */ + position: fixed; + width: 500px; + border: 2px solid #000000; +} + +/* woraround for IE */ +#calendar a:hover span.tooltip { + // position: absolute; +} + +/** legend tooltip */ +#legend a:hover span { + display: block; + bottom: 0.5em; + right: 0.5em; + padding: .5em; + z-index: 1; + font-size: small; + color: black; + background-color: #FFFF88; +/* Doesn't work in IE + position: fixed; + width: auto; + */ + position: absolute; + width: 500px; + border: 2px solid #000000; +} + + +.title { + text-align:center; +} + +.datechooser { + text-align:center; +} + + +.week_table { + width: 100%; + empty-cells: show; + border-spacing:0px; + border-bottom-width:3px; + border-bottom-style:solid; + border-right-width:1px; + border-right-style:solid; + + padding:0px; + border-color:black; +/* workaround for IE */ +// border-collapse:collapse; + background-color: #FFFFFF; +} + +.week_emptycell_black { + font-size:9px; + margin: 0px; + border-top-style:solid; + border-top-width:1px; + border-left-width:0px; + border-right-width:0px; + padding-left: 0px; + padding-right: 0px; +} + +.week_separatorcell_black { + font-size:9px; + border-top-width:1px; + border-top-style:solid; + border-left-width:0px; + border-right-width:1px; + border-right-style:solid; + padding-left: 1px; + border-right-color: #CCCCCC; +} +.week_smallseparatorcell_black { + font-size:9px; + border-left-width:0px; + border-right-width:0px; + border-top-width:1px; + border-top-style:solid; + padding-left: 1px; + padding-right: 1px; + margin-left: 0px; + margin-right: 0px; +} + +.week_emptycell { + font-size:9px; + margin: 0px; + border-color:#CCCCCC; + border-top-style:solid; + border-top-width:1px; + border-left-width:0px; + border-right-width:0px; + padding-left: 0px; + padding-right: 0px; +} + +.week_separatorcell { + font-size:9px; + border-top-width:1px; + border-color:#CCCCCC; + border-top-style:solid; + border-left-width:0px; + border-right-width:1px; + border-right-style:solid; + padding-left: 1px; +} +.week_smallseparatorcell { + font-size:9px; + border-color:#CCCCCC; + border-left-width:0px; + border-right-width:0px; + border-top-width:1px; + border-top-style:solid; + padding-left: 1px; + padding-right: 1px; + margin-left: 0px; + margin-right: 0px; +} + +.week_header { + background-color: #DDDDDD; + text-align: left; + padding-left: 5px; + padding-right: 5px; + border-right-width:1px; + border-right-style:solid; + border-left-width:1px; + border-left-style:solid; + border-top-width:1px; + border-top-style:solid; + border-bottom-width:1px; + border-bottom-style:solid; +} + +.week_number { + font-size: 0.9em; + padding-left: 10px; + padding-right: 10px; + text-align: center; + white-space: nowrap; +} + + +.week_times { + background-color: #DDDDDD; + text-align:right; + padding-right: 7px; + vertical-align: top; + border-left-width:1px; + border-right-width:1px; + border-top-width:1px; + border-left-style:solid; + border-right-style:solid; + border-top-style:solid; +} + +.week_block { + margin: 0px; + padding: 3px; + border-left-width:1px; + border-right-width:1px; + border-top-width:1px; + border-left-style:solid; + border-right-style:solid; + border-top-style:solid; + font-size: 9pt; +} + +.month_table { + width: 100%; + background-color: #FFFFFF; + empty-cells: show; + border-spacing:0px; +/* workaround for IE */ +// border-collapse:collapse; + border: 1px; +} + +.month_header { + background-color: #DDDDDD; + text-align: center; + border:1px; + border-style:solid; +} + +.month_cell { + border:1px; + border-style:solid; +} + +.month_block { + font-size: 8pt; +/* + border:1px; +*/ + margin-bottom: 1px; +} + + +.person { + font-size: 10pt; + font-style: italic; +} + +.resource { + font-size: 10pt; +} + +.link { + text-decoration: underline; +} + +@page { + size: landscape; +} + +@media print { + .datechooser { + display: none; + } +} diff --git a/src/org/rapla/plugin/compactweekview/CompactWeekViewFactory.java b/src/org/rapla/plugin/compactweekview/CompactWeekViewFactory.java new file mode 100644 index 0000000..f2d2039 --- /dev/null +++ b/src/org/rapla/plugin/compactweekview/CompactWeekViewFactory.java @@ -0,0 +1,70 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.compactweekview; + +import javax.swing.Icon; + +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.SwingCalendarView; +import org.rapla.gui.ViewFactory; +import org.rapla.gui.images.Images; +import org.rapla.servletpages.RaplaPageGenerator; + +public class CompactWeekViewFactory extends RaplaComponent implements ViewFactory +{ + public final static String COMPACT_WEEK_VIEW = "week_compact"; + + public CompactWeekViewFactory( RaplaContext context ) throws RaplaException + { + super( context ); + } + + public SwingCalendarView createSwingView(RaplaContext context, CalendarModel model, boolean editable) throws RaplaException + { + return new SwingCompactWeekCalendar( context, model, editable); + } + + public RaplaPageGenerator createHTMLView(RaplaContext context, CalendarModel model) throws RaplaException + { + return new HTMLCompactWeekViewPage( context, model); + } + + public String getViewId() + { + return COMPACT_WEEK_VIEW; + } + + public String getName() + { + return getString(COMPACT_WEEK_VIEW); + } + + Icon icon; + public Icon getIcon() + { + if ( icon == null) { + icon = Images.getIcon("/org/rapla/plugin/compactweekview/images/week_compact.png"); + } + return icon; + } + + public String getMenuSortKey() { + return "B1"; + } + + +} + diff --git a/src/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.java b/src/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.java new file mode 100644 index 0000000..f2a38c9 --- /dev/null +++ b/src/org/rapla/plugin/compactweekview/CompactWeekViewPlugin.java @@ -0,0 +1,52 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.compactweekview; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; + +public class CompactWeekViewPlugin implements PluginDescriptor +{ + static boolean ENABLE_BY_DEFAULT = true; + + public String toString() { + return "Compact Week View"; + } + + public void provideServices(Container container, Configuration config) { + if ( !config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT)) + return; + + container.addContainerProvidedComponent + ( + RaplaExtensionPoints.CALENDAR_VIEW_EXTENSION + ,CompactWeekViewFactory.class.getName() + ,CompactWeekViewFactory.COMPACT_WEEK_VIEW + ,null + ); + } + + + public Object getPluginMetaInfos( String key ) + { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return new Boolean( ENABLE_BY_DEFAULT ); + } + return null; + } + +} + diff --git a/src/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage.java b/src/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage.java new file mode 100644 index 0000000..8c45412 --- /dev/null +++ b/src/org/rapla/plugin/compactweekview/HTMLCompactWeekViewPage.java @@ -0,0 +1,89 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.compactweekview; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.List; +import java.util.Set; + +import org.rapla.components.calendarview.html.AbstractHTMLView; +import org.rapla.components.calendarview.html.HTMLCompactWeekView; +import org.rapla.components.util.xml.XMLWriter; +import org.rapla.entities.domain.Allocatable; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.plugin.abstractcalendar.AbstractHTMLCalendarPage; +import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; + +public class HTMLCompactWeekViewPage extends AbstractHTMLCalendarPage +{ + + public HTMLCompactWeekViewPage( RaplaContext context, CalendarModel calendarModel) throws RaplaException + { + super( context, calendarModel); + } + + protected AbstractHTMLView createCalendarView() { + HTMLCompactWeekView weekView = new HTMLCompactWeekView(); + CalendarOptions opt = getCalendarOptions(); + Set excludeDays = opt.getExcludeDays(); + weekView.setExcludeDays( excludeDays ); + return weekView; + + } + + protected RaplaBuilder createBuilder() throws RaplaException { + RaplaBuilder builder = super.createBuilder(); + + builder.setSmallBlocks( true ); + builder.setSplitByAllocatables( true ); + + GroupAllocatablesStrategy strategy; + if ( builder.getAllocatables().size() > 0) { + strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + strategy.setAllocationGroups( builder.getAllocatables() ) ; + } else { + // put all Allocatables in the same group + strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ) { + protected Collection group(List blockList) { + ArrayList list = new ArrayList(); + list.add( blockList ); + return list; + } + }; + } + strategy.setFixedSlotsEnabled( true ); + builder.setBuildStrategy( strategy ); + + List allocatables = builder.getAllocatables(); + String[] slotNames = new String[ allocatables.size() ]; + for (int i = 0; i < slotNames.length; i++ ) { + Allocatable allocatable = (Allocatable) allocatables.get( i ); + String slotName = allocatable.getName( getRaplaLocale().getLocale() ); + slotNames[i] = XMLWriter.encode( slotName ); + } + ((HTMLCompactWeekView)view).setSlots( slotNames ); + return builder; + } + + protected int getIncrementSize() { + return Calendar.WEEK_OF_YEAR; + } + +} + diff --git a/src/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar.java b/src/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar.java new file mode 100644 index 0000000..4f8eed0 --- /dev/null +++ b/src/org/rapla/plugin/compactweekview/SwingCompactWeekCalendar.java @@ -0,0 +1,192 @@ + +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ + +package org.rapla.plugin.compactweekview; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.Point; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.Set; + +import javax.swing.JComponent; +import javax.swing.JLabel; + +import org.rapla.components.calendar.DateRenderer; +import org.rapla.components.calendar.DateRendererAdapter; +import org.rapla.components.calendarview.swing.AbstractSwingCalendar; +import org.rapla.components.calendarview.swing.SwingCompactWeekView; +import org.rapla.components.calendarview.swing.ViewListener; +import org.rapla.components.util.DateTools; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.entities.NamedComparator; +import org.rapla.entities.domain.Allocatable; +import org.rapla.entities.domain.Appointment; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.CalendarOptions; +import org.rapla.plugin.abstractcalendar.AbstractRaplaSwingCalendar; +import org.rapla.plugin.abstractcalendar.GroupAllocatablesStrategy; +import org.rapla.plugin.abstractcalendar.RaplaBuilder; +import org.rapla.plugin.abstractcalendar.RaplaCalendarViewListener; +import org.rapla.plugin.abstractcalendar.SwingRaplaBuilder; + + +public class SwingCompactWeekCalendar extends AbstractRaplaSwingCalendar +{ + /** + * Default slot size for each column of calendar view + * TODO: Make configurable + */ + private static final int DEFAULTSLOTSIZE = 120; + /** + * Default slot size for resource column preceding day columns + */ + private static final int DEFAULTRESOURCESLOTSIZE = 70; + + public SwingCompactWeekCalendar(RaplaContext sm,CalendarModel settings, boolean editable) throws RaplaException { + super( sm, settings, editable); + } + protected AbstractSwingCalendar createView(boolean showScrollPane) { + final DateRendererAdapter dateRenderer = new DateRendererAdapter((DateRenderer) getService(DateRenderer.class.getName()), getRaplaLocale().getTimeZone(), getRaplaLocale().getLocale()); + return new SwingCompactWeekView( showScrollPane ) { + private static final long serialVersionUID = 1L; + + protected JComponent createSlotHeader(Date date) { + JLabel component = (JLabel) super.createSlotHeader(date); + if ( date != null ) { + boolean today = DateTools.isSameDay(getQuery().today().getTime(), date.getTime()); + if ( today) + { + component.setFont(component.getFont().deriveFont( Font.BOLD)); + } + if (isEditable() && dateRenderer != null ) { + component.setOpaque(true); + Color color = dateRenderer.getBackgroundColor(date); + String toolTip = dateRenderer.getToolTipText(date); + component.setBackground(color); + component.setToolTipText(toolTip); + } + } + else + { + String text = getI18n().getString("resources"); + component.setText(text); + component.setOpaque(true); + component.setToolTipText(text); + } + return component; + } + }; + + } + + protected ViewListener createListener() throws RaplaException { + return new RaplaCalendarViewListener(getContext(), model, view) { + /** override to change the allocatable to the row that is selected */ + protected void showPopupMenu(Component component,Point p,Date start,Date end, int slotNr) + { + Allocatable[] selectedAllocatables; + try { + selectedAllocatables = getModel().getSelectedAllocatables(); + } catch (RaplaException ex) { + showException(ex, view); + return; + } + Allocatable selectedAllocatable = null; + if ( selectedAllocatables.length == 1 ) { + selectedAllocatable = selectedAllocatables[0]; + } + + if ( end.getTime()- start.getTime() == DateTools.MILLISECONDS_PER_DAY ) { + Calendar cal = getRaplaLocale().createCalendar(); + cal.setTime ( start ); + cal.set( Calendar.HOUR_OF_DAY, getCalendarOptions().getWorktimeStart()); + start = cal.getTime(); + end = new Date ( start.getTime() + 30 * DateTools.MILLISECONDS_PER_MINUTE ); + } + if ( selectedAllocatables.length > 0 ) { + int row = slotNr / DateTools.DAYS_PER_WEEK; + List sortedAllocatables = new ArrayList( Arrays.asList( selectedAllocatables)); + Collections.sort(sortedAllocatables, new NamedComparator( getLocale() )); + selectedAllocatable = (Allocatable) sortedAllocatables.get(row); + } + + showPopupMenu( component, p, start,end, slotNr, selectedAllocatables, selectedAllocatable); + } + + /* if the selcted view is a month-view or compact-view, the start-time will not be the selected time, + * but the time of the start-time of the appointment instead. The start-date is taken from the passed date. + * */ + protected Date calcStartDate(Date date, Appointment appointment) { + return getRaplaLocale().toDate( date, appointment.getStart() ); + } + + }; + } + + protected RaplaBuilder createBuilder() throws RaplaException { + RaplaBuilder builder = new SwingRaplaBuilder(getContext()); + builder.setRepeatingVisible( view.isEditable()); + builder.setEditingUser( getUser() ); + builder.setExceptionsExcluded( !getCalendarOptions().isExceptionsVisible() || !view.isEditable()); + builder.setFromModel( model, view.getStartDate(), view.getEndDate() ); + + builder.setSmallBlocks( true ); + builder.setSplitByAllocatables( true ); + + GroupAllocatablesStrategy strategy = new GroupAllocatablesStrategy( getRaplaLocale().getLocale() ); + strategy.setFixedSlotsEnabled( true); + strategy.setResolveConflictsEnabled( false ); + strategy.setAllocationGroups( builder.getAllocatables() ) ; + builder.setBuildStrategy( strategy ); + Allocatable[] allocatables = (Allocatable[])builder.getAllocatables().toArray( Allocatable.ALLOCATABLE_ARRAY); + String[] slotNames = new String[ allocatables.length ]; + for (int i = 0; i X1^@s6yEvDU00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3labT3lag+-G2N4000McNliru)dLg_HwpLu7Uuu}0|7}y zK~#9!&6mGUD@PQ@e`9(5XI!L7;~*l%8-ax|PC;*sv=V7(0Lgg+cmj&_sX}v8<^e7i zx|MxJ?H9Q5;sSFqLKH+okt~wJ8);!qiuD-(Rm2te-Xo26^vySO&K`ZAb{3xEM?gNu zNT=fh94dfL^DW>1@RR8@->ScEKY$oO5D~;YB4QAtIhX++aSUP%A|_h1bCGC|^!JN^ zd1P9gef)=CfB%Cx!25S^0DgJ@?#<61umA2J0wNLl(ex(*B7*5J7-L}p0b?Y3RU?DF z!qYjk;=9GK(CGvUAfM0EZnwY9=kqtGr>6swQVM{RlM{A#cSjCTN_`T(x3@P@%+}Tx z?RGorOh4(ZO+Fq=OG^OwzE7jkpja%jv9U3NE2Rj-koEQT|K&HE%@MxM8-u9zfRY*g zv}DI|xVgFE{{DUh?{>RfUS6`gy820cn>P-iwFZdwpEHYDSy|!e=x72jm&?!MZ*Fdm z@NM20fa|&pKW*5GJDtwdB3}x(d4~lY&*$^u!NCC!4-bQ4M1;G$I~ErgpM{5EIFZzG z9D*Pibfeenp|z$~t4#GKeV?_pwHLvQ#o|Pf^?LnDGvfjtcgHN3y%cWq z#yrnMYmMi52`i*o?s%5DwWb!Nab>wot+($$>dxG9P>PnR;z{QdC69* zHI-}y`dYZnt9;+5QmJr!e4MRRDu3?p@6X*$^?IH2^K;^vOa>7llgac%WU8Ca&dw+l z3NM0>y9}UKt3__g<#K4P$>nnYS|QEbO#=akVTkLxgkkt#g*5J_c?me~I1a5=3&(Mc z71H>(W?ll04R>+YWV}n@hsffYv52^ zUthDZumC_11f 0); + } + + if (zone != null) { + final String timezoneId = zone.getID(); + + try { + TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry(); + timezone = registry.getTimeZone(timezoneId); + } catch (Exception rc) { + final VTimeZone vTimeZone = new VTimeZone(); + timezone = new net.fortuna.ical4j.model.TimeZone(vTimeZone); + final int rawOffset = zone.getRawOffset(); + timezone.setRawOffset(rawOffset); + } + } + } + + private void initConfiguration() { + try { + ClientFacade facade = getClientFacade(); + Preferences preferences = (Preferences) facade.edit(facade.getPreferences(null)); + RaplaConfiguration raplaConfiguration = (RaplaConfiguration) preferences.getEntry("org.rapla.plugin"); + config = raplaConfiguration.find("class", Export2iCalPlugin.PLUGIN_CLASS); + } catch (RaplaException e) { + getLogger().error("Cannot read plugin configuration"); + } + } + + public void setiCalendarWorktime(CalendarOptions options, RaplaLocale locale) throws RaplaException { + calendar = locale.createCalendar(); + worktimeStartHour = options.getWorktimeStart(); + worktimeEndHour = options.getWorktimeEnd(); + } + + public Calendar createiCalender(Reservation[] reservations) { + + Calendar calendar = initiCalendar(); + addICalMethod(calendar, Method.PUBLISH); + addVTimeZone(calendar); + + if (reservations.length == 0) { + return null; + } + + for (int resIt = 0, resLen = reservations.length; resIt < resLen; resIt++) { + Appointment[] appointments = reservations[resIt].getAppointments(); + + for (int appIt = 0, appLen = appointments.length; appIt < appLen; appIt++) { + calendar.getComponents().add(createVEvent(appointments[appIt])); + } + } + + return calendar; + } + + private void addVTimeZone(Calendar calendar) { + + if (timezone != null) { + VTimeZone tz = timezone.getVTimeZone(); + calendar.getComponents().add(tz); + } + } + + /** + * Initialisiert ein neues leeres iCalendar-Objekt. + * + * @return Ein neues leeres iCalendar-Objekt. + */ + public Calendar initiCalendar() { + Calendar calendar = new Calendar(); + calendar.getProperties().add(new ProdId("-//Rapla//iCal Plugin//EN")); + calendar.getProperties().add(Version.VERSION_2_0); + return calendar; + + } + + public void addICalMethod(Calendar iCalendar, Method method) { + iCalendar.getProperties().add(method); + } + + public void addVEvent(Calendar iCalendar, Appointment appointment) { + iCalendar.getComponents().add(createVEvent(appointment)); + } + + /** + * Erstellt anhand des übergebenen Appointment-Objekts einen + * iCalendar-Event. + * + * @param appointment Ein Rapla Appointment. + * @return Ein iCalendar-Event mit den Daten des Appointments. + */ + private VEvent createVEvent(Appointment appointment) { + + PropertyList properties = new PropertyList(); + + + boolean isAllDayEvent = appointment.isWholeDaysSet() || isAllDayEvent(appointment.getStart(), appointment.getEnd()); + addDateStampToEvent(appointment, properties); + addCreateDateToEvent(appointment, properties); + addStartDateToEvent(appointment, properties, isAllDayEvent); + addLastModifiedDateToEvent(appointment, properties); + addEndDateToEvent(appointment, properties, isAllDayEvent); + addEventNameToEvent(appointment, properties); + addUidToEvent(appointment, properties); + addLocationToEvent(appointment, properties); + addCategories(appointment, properties); + addOrganizer(appointment, properties); + addAttendees(appointment, properties); + addRepeatings(appointment, properties); + + + VEvent event = new VEvent(properties); + + return event; + } + + /** + * add organizer to properties + * + * @param appointment + * @param properties + */ + private void addOrganizer(Appointment appointment, PropertyList properties) { + // means we do not export attendees so we do not have a meeting + if (!doExportAsMeeting) + return; + final User owner = appointment.getReservation().getOwner(); + try { + Organizer organizer = null; + if (owner.getEmail() != null && owner.getEmail().trim().length() > 0) { + try { + final URI uri = new URI("MAILTO:" + owner.getEmail().trim()); + organizer = new Organizer(uri); + } catch (URISyntaxException e) { + } + } + if (organizer == null) { + organizer = new Organizer("MAILTO:" + URLEncoder.encode(owner.getUsername(), "UTF-8")); + } + if (!"".equals(owner.getName())) + organizer.getParameters().add(new Cn(owner.getName())); + properties.add(organizer); + } catch (URISyntaxException e) { + throw new IllegalArgumentException(e); + } catch (UnsupportedEncodingException e) { + throw new IllegalArgumentException(e); + } + } + + + /** + * add attenddees if system property ical4j.validation.relaxed is set ony + * + * @param appointment + * @param properties + */ + private void addAttendees(Appointment appointment, PropertyList properties) { + if (!doExportAsMeeting) + return; + + Allocatable[] persons = appointment.getReservation().getPersons(); + + for (Allocatable person : persons) { + String email = null; + Attribute attr = person.getClassification().getAttribute(exportAttendeesAttribute); + if (attr != null && person.getClassification().getValue(attr) != null) + email = person.getClassification().getValue(attr).toString().trim(); + // determine if person has email attribute + if (email != null && email.length() > 0) { + try { + Attendee attendee = new Attendee(new URI(email)); + attendee.getParameters().add(Role.REQ_PARTICIPANT); + attendee.getParameters().add(new Cn(person.getName(Locale.getDefault()))); + attendee.getParameters().add(new PartStat(exportAttendeesParticipationStatus)); + properties.add(attendee); + } catch (URISyntaxException e) { + throw new IllegalArgumentException(e); + } + } + } + } + + private boolean isAllDayEvent(Date start, Date end) { + + calendar.setTime(start); + int startHour = calendar.get(java.util.Calendar.HOUR_OF_DAY); + + calendar.setTime(end); + int endHour = calendar.get(java.util.Calendar.HOUR_OF_DAY); + + boolean startsOnWorkTimeStart = startHour == worktimeStartHour; + boolean endsOnWorkTimeEnd = endHour == worktimeEndHour; + + return startsOnWorkTimeStart && endsOnWorkTimeEnd; + } + + /** + * F�gt dem Termin das Modifizierungsdatum hinzu + * + * @param appointment + * @param event + */ + private void addDateStampToEvent(Appointment appointment, PropertyList properties) { + Date lastChange = appointment.getReservation().getLastChangeTime(); + properties.add(new LastModified(convertRaplaLocaleToUTC(lastChange))); + } + + /** + * F�gt dem Termin den DTSTAMP hinzu lt. rfc muss dies dem Erstellungdatum + * des Objektes entsprechen. Da dies jedoch den Import erschwert und sinnlos + * ist, wird es auf das letzte Modifizierungsdatum geschrieben. + * + * @param appointment + * @param event + */ + private void addLastModifiedDateToEvent(Appointment appointment, PropertyList properties) { + Date lastChange = appointment.getReservation().getLastChangeTime(); + properties.add(new DtStamp(convertRaplaLocaleToUTC(lastChange))); + } + + /** + * Fügt die Wiederholungen des übergebenen Appointment-Objekts dem + * übergebenen Event-Objekt hinzu. + * + * @param appointment Ein Rapla Appointment. + * @param event Ein iCalendar Event. + */ + private void addRepeatings(Appointment appointment, PropertyList properties) { + Repeating repeating = appointment.getRepeating(); + + if (repeating == null) { + return; + } + + // This returns the strings DAYLY, WEEKLY, MONTHLY, YEARLY + String type = repeating.getType().toString().toUpperCase(); + + Recur recur; + + // here is evaluated, if a COUNT is set in Rapla, or an enddate is + // specified + if (repeating.getNumber() == -1) { + recur = new Recur(type, -1); + } else if (repeating.isFixedNumber()) { + recur = new Recur(type, repeating.getNumber()); + } else { + net.fortuna.ical4j.model.Date endDate = new net.fortuna.ical4j.model.Date(repeating.getEnd()); + // TODO do we need to translate the enddate in utc? + recur = new Recur(type, endDate); + } + + if (repeating.isDaily()) { + // DAYLY -> settings : intervall + recur.setInterval(repeating.getInterval()); + + } else if (repeating.isWeekly()) { + // WEEKLY -> settings : every nTh Weekday + recur.setInterval(repeating.getInterval()); + + calendar.setTime(appointment.getStart()); + recur.getDayList().add(WeekDay.getWeekDay(calendar)); + } else if (repeating.isMonthly()) { + // MONTHLY -> settings : every nTh Weekday + recur.setInterval(repeating.getInterval()); + calendar.setTime(appointment.getStart()); + int weekofmonth = Math.round(calendar.get(java.util.Calendar.DAY_OF_MONTH) / DateTools.DAYS_PER_WEEK) + 1; + recur.getDayList().add(new WeekDay(WeekDay.getWeekDay(calendar), weekofmonth)); + } else if (repeating.isYearly()) { + // YEARLY -> settings : every nTh day mTh Monthname + calendar.setTime(appointment.getStart()); + calendar.get(java.util.Calendar.DAY_OF_YEAR); + } else { + System.out.println("Invalid data in recurrency rule!"); + } + + properties.add(new RRule(recur)); + + // bugfix - if rapla has no exceptions, an empty EXDATE: element is + // produced. This may bother some iCal tools + if (repeating.getExceptions().length == 0) { + return; + } + + // Add exception dates + //DateList dl = new DateList(Value.DATE); + + // rku: use seperate EXDATE for each exception + for (Iterator itExceptions = Arrays.asList(repeating.getExceptions()).iterator(); itExceptions.hasNext(); ) { + DateList dl = new DateList(Value.DATE); + dl.add(new net.fortuna.ical4j.model.Date((Date) itExceptions.next())); + properties.add(new ExDate(dl)); + } + //properties.add(new ExDate(dl)); + } + + public String getAttendeeString(Appointment appointment) { + + String attendeeString = ""; + + Reservation raplaReservation = appointment.getReservation(); + Allocatable[] raplaPersons = raplaReservation.getPersons(); + + for (int i = 0; i < raplaPersons.length; i++) { + if (!isReserved(raplaPersons[i], appointment)) + continue; + + attendeeString += raplaPersons[i].getName(Locale.getDefault()); + attendeeString = attendeeString.trim(); + + if (i != raplaPersons.length - 1) { + attendeeString += ", "; + } else { + attendeeString = " [" + attendeeString + "]"; + } + } + + return attendeeString; + } + + /** + * Fügt die Kategorien hinzu. + * + * @param appointment Ein Rapla Appointment. + * @param event Ein iCalendar Event. + */ + private void addCategories(Appointment appointment, PropertyList properties) { + Classification cls = appointment.getReservation().getClassification(); + Categories cat = new Categories(); + cat.getCategories().add(cls.getType().getName(Locale.getDefault())); + properties.add(cat); + } + + /** + * Prüfe, ob eine Ressource für ein bestimmten Appointment + * reserviert ist. + * + * @param alloc + * @param when + * @return true, wenn die Ressource reserviert ist. + * false sonst + */ + private boolean isReserved(Allocatable alloc, Appointment when) { + Reservation reservation = when.getReservation(); + Appointment[] restrictions = reservation.getRestriction(alloc); + + for (int restIt = 0, restLen = restrictions.length; restIt < restLen; restIt++) { + if (when.equals(restrictions[restIt])) + return true; + } + + return (restrictions.length == 0); + } + + /** + * Fügt einem iCal-Event den Ort aus dem übergebenen + * Appointment-Objekt hinzu. + * + * @param appointment + * @param event + */ + private void addLocationToEvent(Appointment appointment, PropertyList properties) { + Allocatable[] allocatables = appointment.getReservation().getResources(); + + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < allocatables.length; i++) { + if (!isReserved(allocatables[i], appointment)) + continue; + + if (buffer.length() > 0) { + buffer.append(", "); + } + buffer.append(allocatables[i].getName(Locale.getDefault())); + } + + properties.add(new Location(buffer.toString())); + } + + /** + * Fügt einem iCal-Event die Termin-ID aus dem übergebenen + * Appointment-Objekt hinzu. + * + * @param appointment + * @param event + */ + private void addUidToEvent(Appointment appointment, PropertyList properties) { + String uid = getId(appointment.getReservation()) + getId(appointment); + properties.add(new Uid(uid)); + } + + /** + * Erzeugt eine eindeutige ID für den übergebenen Appointment. + * + * @param entity + * @return + */ + private String getId(RaplaObject entity) { + SimpleIdentifier id = (SimpleIdentifier) ((RefEntity) entity).getId(); + return entity.getRaplaType().getLocalName() + "_" + id.getKey(); + } + + /** + * Fügt einem iCal-Event den Termin-Namen aus dem übergebenen + * Appointment-Objekt hinzu. + * + * @param appointment + * @param event + */ + private void addEventNameToEvent(Appointment appointment, PropertyList properties) { + + String eventDescription = appointment.getReservation().getName(Locale.getDefault()); + if (attendeeToTitle) { + eventDescription += getAttendeeString(appointment); + } + properties.add(new Summary(eventDescription)); + } + + /** + * Fügt einem iCal-Event das Enddatum aus dem übergebenen + * Appointment-Objekt hinzu. + * + * @param appointment + * @param event + */ + private void addEndDateToEvent(Appointment appointment, PropertyList properties, boolean isAllDayEvent) { + + Date endDate = appointment.getEnd(); + java.util.Calendar calendar = java.util.Calendar.getInstance(); + + if (isAllDayEvent) { + DtEnd end = getDtEndFromAllDayEvent(endDate, calendar); + properties.add(end); + } else { + if (appointment.getRepeating() == null) { + DtEnd end = new DtEnd(convertRaplaLocaleToUTC(endDate)); + end.setUtc(true); + properties.add(end); + } else { + DtEnd end = getEndDateProperty(appointment, endDate); + properties.add(end); + } + } + } + + private DtEnd getEndDateProperty(Appointment appointment, Date endDate) { + + DateTime date = convertRaplaLocaleToUTC(endDate); + TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry(); + net.fortuna.ical4j.model.TimeZone tz = registry.getTimeZone(timezone.getID()); + date.setTimeZone(tz); + return new DtEnd(date); + } + + private DtEnd getDtEndFromAllDayEvent(Date endDate, java.util.Calendar calendar) { + + calendar.clear(); + calendar.setTime(endDate); + int year = calendar.get(java.util.Calendar.YEAR); + calendar.add(java.util.Calendar.DATE, 1); + int month = calendar.get(java.util.Calendar.MONTH); + int date = calendar.get(java.util.Calendar.DAY_OF_MONTH); + calendar.clear(); + calendar.set(year, month, date); + DtEnd end = new DtEnd(new net.fortuna.ical4j.model.Date(calendar.getTime())); + return end; + } + + /** + * Fügt einem iCal-Event das Startdatum aus dem übergebenen + * Appointment-Objekt hinzu. + * + * @param appointment + * @param event + */ + private void addStartDateToEvent(Appointment appointment, PropertyList properties, boolean isAllDayEvent) { + + Date startDate = appointment.getStart(); + + if (isAllDayEvent) { + DtStart start = getDtStartFromAllDayEvent(startDate, calendar); + properties.add(start); + } else { + if (appointment.getRepeating() == null) { + DtStart start = new DtStart(convertRaplaLocaleToUTC(startDate)); + start.setUtc(true); + properties.add(start); + } else { + DtStart start = getStartDateProperty(appointment, startDate); + properties.add(start); + } + } + } + + private DtStart getStartDateProperty(Appointment appointment, Date startDate) { + + DateTime date = convertRaplaLocaleToUTC(startDate); + TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry(); + net.fortuna.ical4j.model.TimeZone tz = registry.getTimeZone(timezone.getID()); + date.setTimeZone(tz); + return new DtStart(date); + } + + private DtStart getDtStartFromAllDayEvent(Date startDate, java.util.Calendar calendar) { + + calendar.clear(); + calendar.setTime(startDate); + int year = calendar.get(java.util.Calendar.YEAR); + int month = calendar.get(java.util.Calendar.MONTH); + int date = calendar.get(java.util.Calendar.DAY_OF_MONTH); + calendar.clear(); + calendar.set(year, month, date); + DtStart start = new DtStart(new net.fortuna.ical4j.model.Date(calendar.getTime())); + return start; + } + + /** + * Fügt einem iCal-Event das Erstelldatum aus dem übergebenen + * Appointment-Objekt hinzu. + * + * @param appointment + * @param event + */ + private void addCreateDateToEvent(Appointment appointment, PropertyList properties) { + + Date createTime = appointment.getReservation().getCreateTime(); + properties.add(new Created(convertRaplaLocaleToUTC(createTime))); + } + + private DateTime convertRaplaLocaleToUTC(Date date) { + return convertRaplaLocaleToUTC(date, timezone); + } + + public static DateTime convertUtcToRaplaLocale(Date date, TimeZone timezone) { + java.util.Calendar cal = java.util.Calendar.getInstance(); + cal.setTime(date); + cal.setTimeZone(timezone); + int offset = cal.getTimeZone().getOffset(date.getTime()); + cal.add(java.util.Calendar.MILLISECOND, +offset); + return new DateTime(cal.getTime()); + } + + /** + * Diese Methode wandelt das Rapla Datum in UTC um + * + * @param date Das zu konvertierende lokale Datum. + * @return Das nach UTC konvertierte Datum. + */ + public static DateTime convertRaplaLocaleToUTC(Date date, TimeZone timezone) { + + java.util.Calendar cal = java.util.Calendar.getInstance(); + cal.setTime(date); + cal.setTimeZone(timezone); + int offset = cal.getTimeZone().getOffset(date.getTime()); + cal.add(java.util.Calendar.MILLISECOND, -offset); + return new DateTime(cal.getTime()); + } + +} \ No newline at end of file diff --git a/src/org/rapla/plugin/export2ical/Export2iCalDialogInitializer.java b/src/org/rapla/plugin/export2ical/Export2iCalDialogInitializer.java new file mode 100644 index 0000000..5b6a85e --- /dev/null +++ b/src/org/rapla/plugin/export2ical/Export2iCalDialogInitializer.java @@ -0,0 +1,139 @@ +package org.rapla.plugin.export2ical; + +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.IOException; + +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; + +import org.rapla.components.iolayer.IOInterface; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.storage.RefEntity; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.StartupEnvironment; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.MenuExtensionPoint; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.server.RemoteServiceCaller; + +public class Export2iCalDialogInitializer extends RaplaGUIComponent { + + + + public Export2iCalDialogInitializer(RaplaContext sm) throws RaplaException { + super(sm); + + + + if (!isModifyPreferencesAllowed()) { + return; + } + + setChildBundleName(Export2iCalPlugin.RESOURCE_FILE); + + MenuExtensionPoint exportExtension = (MenuExtensionPoint) getService(RaplaExtensionPoints.EXPORT_MENU_EXTENSION_POINT); + + final StartupEnvironment startupEnvironment = (StartupEnvironment)getContext().lookup(StartupEnvironment.ROLE); + final int startupMode = startupEnvironment.getStartupMode(); + boolean hasserver = getUpdateModule().isClientForServer(); + if ( hasserver && startupMode != StartupEnvironment.APPLET) + { + exportExtension.insert(exportiCalToFile()); + } + getLogger().info("Export2iCal plugin added"); + } + + private JMenuItem exportiCalToFile() { + + JMenuItem item = new JMenuItem(getString("export_file_text")); + item.setIcon(getIcon("icon.export")); + item.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + getCalendarOptions(); + try { + CalendarModel raplaCal = ((CalendarModel) getContext().lookup(CalendarModel.ROLE)); + RemoteServiceCaller remote =(RemoteServiceCaller) getContext().lookup( RemoteServiceCaller.ROLE); + StringBuffer buf = new StringBuffer(); + for (Reservation reservation:raplaCal.getReservations()) + { + boolean first = buf.length() == 0; + if ( !first) + buf.append(","); + final String idString = ((RefEntity) reservation).getId().toString().split("_")[1]; + buf.append( idString ); + } + String ids = buf.toString(); + String result = remote.call( ICalExportRemoteServiceFactory.class.getName(),ICalExportRemoteServiceFactory.EXPORT, new String[] {ids}); + if ( result.trim().length() == 0) + { + JOptionPane.showMessageDialog(null, getString("no_dates_text"), "Export2iCal", JOptionPane.INFORMATION_MESSAGE); + } + else + { + String nonEmptyTitle = raplaCal.getNonEmptyTitle(); + if ( nonEmptyTitle.length() == 0) + { + nonEmptyTitle = "rapla_calendar"; + } + String name =nonEmptyTitle +".ics"; + export(result, name); + } + } catch (Exception ex) { + showException(ex, getMainComponent()); + } + } + }); + return item; + } + + private void export(String result, String name) throws RaplaException { + final byte[] bytes = result.getBytes(); + saveFile(bytes, name , new String[] {"ics","ical"}); +// JFileChooser fileChooser = new JFileChooser(); +// fileChooser.setFileFilter(new iCalFileFilter()); +// +// if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { +// String path = fileChooser.getSelectedFile().getPath(); +// File file = null; +// if (path.substring(path.length() - 4, path.length()).equals(".ics")) { +// file = new File(path); +// } else { +// file = new File(path + ".ics"); +// } +// try { +// FileWriter fileWriter = new FileWriter(file); +// BufferedWriter writer = new BufferedWriter( fileWriter); +// writer.write( result); +// //calOutputter.output(ical, fileWriter); +// JOptionPane.showMessageDialog(null, getString("export_file_succesfull_text"), "Export2iCal", JOptionPane.INFORMATION_MESSAGE); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } + } + +// private class iCalFileFilter extends FileFilter { +// public boolean accept(File file) { +// return (file.isDirectory() || file.getName().toLowerCase().endsWith(".ics")); +// } +// +// public String getDescription() { +// return "iCal Files"; +// } +// } + + public void saveFile(byte[] content, String filename, String[] extensions) throws RaplaException { + final Frame frame = (Frame) SwingUtilities.getRoot(getMainComponent()); + IOInterface io = (IOInterface) getService(IOInterface.ROLE); + try { + io.saveFile(frame, null, extensions, filename, content); + } catch (IOException e) { + throw new RaplaException("Can't export file!", e); + } + } +} diff --git a/src/org/rapla/plugin/export2ical/Export2iCalPlugin.java b/src/org/rapla/plugin/export2ical/Export2iCalPlugin.java new file mode 100644 index 0000000..5889943 --- /dev/null +++ b/src/org/rapla/plugin/export2ical/Export2iCalPlugin.java @@ -0,0 +1,87 @@ +package org.rapla.plugin.export2ical; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.xmlbundle.I18nBundle; +import org.rapla.components.xmlbundle.impl.I18nBundleImpl; +import org.rapla.framework.Container; +import org.rapla.framework.PluginDescriptor; +import org.rapla.plugin.RaplaExtensionPoints; +import org.rapla.plugin.RaplaPluginMetaInfo; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.ServerService; + + +public class Export2iCalPlugin implements PluginDescriptor { + + public static final String RESOURCE_FILE = Export2iCalPlugin.class.getPackage().getName() + ".Export2iCalResources"; + + public static final String PLUGIN_CLASS = Export2iCalPlugin.class.getName(); + public static final String PLUGIN_ENTRY = "org.rapla.plugin.export2ical"; + public static final String ICAL_EXPORT = PLUGIN_ENTRY+".selected"; + public static final String DAYS_BEFORE = "days_before"; + public static final String DAYS_AFTER = "days_after"; + + public static String PREF_BEFORE_DAYS = "export2iCal_before_days"; + public static String PREF_AFTER_DAYS = "export2iCal_after_days"; + + public static final String GLOBAL_INTERVAL = "global_interval"; + public static final String EXPORT_ATTENDEES = "export_attendees"; + public static final String EXPORT_ATTENDEES_EMAIL_ATTRIBUTE = "export_attendees_email_attribute"; + public static final String TIMEZONE = "timezone"; + public static final String FIRST_PLUGIN_STARTDATE = "first_plugin_startdate"; + public static final String LAST_MODIFIED_INTERVALL = "last_modified_intervall"; + + public static final String DEFAULT_timezone = "Etc/UTC"; + public static final int DEFAULT_daysBefore = 30; + public static final int DEFAULT_daysAfter = 30; + public static final boolean DEFAULT_basedOnAutoExport = true; + public static final boolean DEFAULT_globalIntervall = true; + public static final int DEFAULT_lastModifiedIntervall = 5; + public static String DEFAULT_attendee_resource_attribute = "email"; + public static String DEFAULT_attendee_participation_status; + + + static boolean ENABLE_BY_DEFAULT = true; + public static boolean DEFAULT_exportAttendees = false; + public static final String EXPORT_ATTENDEES_PARTICIPATION_STATUS = "export_attendees_participation_status"; + + public String toString() { + return "Export2iCal Plugin"; + } + + public void provideServices(Container container, Configuration config) { + + if (!config.getAttributeAsBoolean("enabled", ENABLE_BY_DEFAULT)) + return; + + try { + // Class.forName("net.fortuna.ical4j.model.parameter.PartStat"); + DEFAULT_attendee_participation_status = "TENTATIVE"; + } catch (Throwable ex ) { + } + + + container.addContainerProvidedComponentInstance(PLUGIN_CLASS, Boolean.TRUE); + container.addContainerProvidedComponent(I18nBundle.ROLE, I18nBundleImpl.class.getName(), RESOURCE_FILE, I18nBundleImpl.createConfig(RESOURCE_FILE)); + + if ( container.getContext().has( ServerService.ROLE) ){ + container.addContainerProvidedComponent(RaplaExtensionPoints.SERVLET_PAGE_EXTENSION, Export2iCalServlet.class.getName(), "iCal", config); + container.addContainerProvidedComponent( RaplaRemoteServiceFactory.ROLE, ICalExportRemoteServiceFactory.class.getName(), ICalExportRemoteServiceFactory.class.getName(),config); + container.addContainerProvidedComponent(RaplaExtensionPoints.SERVER_EXTENSION, Export2iCalChangeWatcher.class.getName(), PLUGIN_CLASS, config); + } else { + container.addContainerProvidedComponent(RaplaExtensionPoints.CLIENT_EXTENSION, Export2iCalDialogInitializer.class.getName(), PLUGIN_CLASS, config); + container.addContainerProvidedComponent(RaplaExtensionPoints.USER_OPTION_PANEL_EXTENSION, Export2iCalUserOption.class.getName(), PLUGIN_CLASS, config); + container.addContainerProvidedComponent(RaplaExtensionPoints.PLUGIN_OPTION_PANEL_EXTENSION, Export2iCalAdminOption.class.getName(), PLUGIN_CLASS, config); + } + + } + + + + public Object getPluginMetaInfos(String key) { + if ( RaplaPluginMetaInfo.METAINFO_PLUGIN_ENABLED_BY_DEFAULT.equals( key )) { + return new Boolean( ENABLE_BY_DEFAULT ); + } + return null; + } +} diff --git a/src/org/rapla/plugin/export2ical/Export2iCalResources.xml b/src/org/rapla/plugin/export2ical/Export2iCalResources.xml new file mode 100644 index 0000000..bf91f2d --- /dev/null +++ b/src/org/rapla/plugin/export2ical/Export2iCalResources.xml @@ -0,0 +1,90 @@ + + + + + Export view to iCal file + Exportiere Ansicht in iCal File + Exporte la vue en iCal File + + + Publish calendar to iCal + Veröffentliche Kalender nach iCal + Publier le calendrier en iCal + Publicar el calendario en iCal + + + previous days: + vorhergehende Tage: + les jours précédents: + + + subsequent days: + darauffolgende Tage: + les jours suivants: + + + User interval setting: + Benutzerspezifische Intervalleinstellung: + le paramètre d`intervalle utilisateur spécifique: + + + Successfully created. + Erfolgreich angelegt. + Créé avec succès. + + + Save iCal view + Ansicht als iCal speichern + Enregistrer la vue iCal + + + Export + Exportieren + Exporter + + + Cancel + Abbrechen + Annuler + + + iCal view name: + Name der iCal Ansicht: + Nom de la vue iCal: + + + Available iCal views: + Verfügbare iCal Ansichten: + Les vues iCal disponibles: + + + Available views based on html export: + Verfügbare Ansichten basierend auf HTML Export: + Les vues disponibles à la base d`HTML Export: + + + Delete + Löschen + Effacer + + + No dates available in the current view. + In der aktuellen Ansicht sind keine Termine vorhanden. + Pas de dates disponibles dans la vue en cours. + + + No name is given. + Kein Name gesetzt. + Aucun nom n'est donné. + + + The iCal file has been successfully created. + Die iCal Datei wurde erfolgreich erstellt. + Le fichier iCal a été créé avec succès. + + + use user interval setting + benutzerspezifische Intervalleinstellung verwenden + utiliser le paramètre d`intervalle utilisateur spécifique: + + \ No newline at end of file diff --git a/src/org/rapla/plugin/export2ical/Export2iCalServlet.java b/src/org/rapla/plugin/export2ical/Export2iCalServlet.java new file mode 100644 index 0000000..3d2fc3d --- /dev/null +++ b/src/org/rapla/plugin/export2ical/Export2iCalServlet.java @@ -0,0 +1,199 @@ +package org.rapla.plugin.export2ical; + +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.SimpleTimeZone; +import java.util.TimeZone; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import net.fortuna.ical4j.data.CalendarOutputter; +import net.fortuna.ical4j.model.Calendar; +import net.fortuna.ical4j.model.ValidationException; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.entities.User; +import org.rapla.entities.configuration.Preferences; +import org.rapla.entities.domain.Reservation; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.framework.RaplaLocale; +import org.rapla.gui.CalendarModel; +import org.rapla.gui.RaplaGUIComponent; +import org.rapla.gui.internal.common.CalendarModelImpl; +import org.rapla.servletpages.RaplaPageGenerator; + +public class Export2iCalServlet extends RaplaComponent implements RaplaPageGenerator { + + private int global_daysBefore; + private int global_daysAfter; + + private String username; + private String filename; + + private boolean global_interval; + private HttpServletResponse response; + private TimeZone timezone; + + private SimpleDateFormat rfc1123DateFormat; + + private SimpleTimeZone gmt = new SimpleTimeZone(0, "GMT"); + + private static java.util.Calendar calendar; + private Preferences preferences; + + public Export2iCalServlet(RaplaContext context, Configuration config) throws RaplaException { + super(context); + + RaplaLocale raplaLocale = getRaplaLocale(); + calendar = raplaLocale.createCalendar(); + + + + global_interval = config.getChild(Export2iCalPlugin.GLOBAL_INTERVAL).getValueAsBoolean(Export2iCalPlugin.DEFAULT_globalIntervall); + + global_daysBefore = config.getChild(Export2iCalPlugin.DAYS_BEFORE).getValueAsInteger(Export2iCalPlugin.DEFAULT_daysBefore); + global_daysAfter = config.getChild(Export2iCalPlugin.DAYS_AFTER).getValueAsInteger(Export2iCalPlugin.DEFAULT_daysAfter); + + timezone = TimeZone.getTimeZone(config.getChild(Export2iCalPlugin.TIMEZONE).getValue(Export2iCalPlugin.DEFAULT_timezone)); + + rfc1123DateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US); + rfc1123DateFormat.setTimeZone(gmt); + } + + public void generatePage(ServletContext servletContext, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + + this.response = response; + + filename = request.getParameter("file"); + username = request.getParameter("user"); + + boolean getAllAppointments = request.getParameter("complete") != null; + // if param COMPLETE is given, retrieve all appointments + + try { + User user = getQuery().getUser(username); + preferences = getQuery().getPreferences(user); + + CalendarModel calModel = getCalendarModel(user, filename); + + if (calModel == null) { + response.getWriter().println("The calendar '" + filename + "' you tried to retrieve is not published or available!"); + return; + } + + response.setHeader("Last-Modified", rfc1123DateFormat.format(Export2iCalChangeWatcher.getLastModified(calModel))); + final Object isSet = calModel.getOption(Export2iCalPlugin.ICAL_EXPORT); + + if((isSet == null || isSet.equals("false"))) + { + response.getWriter().println("The calendar '" + filename + "' you tried to retrieve is not published or available!"); + return; + } + + if (request.getMethod().equals("HEAD")) { + return; + } + + Reservation[] reserv = getAllAppointments ? getAllReservations(calModel) : calModel.getReservations(); + + write(reserv); + } catch (Exception e) { + response.getWriter().println(("An error occured giving you the Calendarview for user " + username + " named " + filename)); + response.getWriter().println(); + e.printStackTrace(response.getWriter()); + } + } + + + /** + * Retrieves CalendarModel by username && filename, sets appropriate before + * and after times (only if global intervall is false) + * + * @param user + * the Rapla-User + * @param filename + * the Filename of the exported view + * @return + */ + private CalendarModel getCalendarModel(User user, String filename) { + try { + CalendarModelImpl calModel; + + calModel = new CalendarModelImpl(getContext(), user); + calModel.load(filename); + + int daysBefore = global_interval ? global_daysBefore : preferences.getEntryAsInteger(Export2iCalPlugin.PREF_BEFORE_DAYS, 11); + int daysAfter = global_interval ? global_daysAfter : preferences.getEntryAsInteger(Export2iCalPlugin.PREF_AFTER_DAYS, global_daysAfter); + + Date now = new Date(); + + //calModel.getReservations(startDate, endDate) + + // set start Date + calendar.setTime(now); + calendar.add(java.util.Calendar.DAY_OF_YEAR, -daysBefore); + calModel.setStartDate(calendar.getTime()); + + // set end Date + calendar.setTime(now); + calendar.add(java.util.Calendar.DAY_OF_YEAR, daysAfter); + calModel.setEndDate(calendar.getTime()); + + //debug sysout + //System.out.println("startdate - before "+ calModel.getStartDate() + " - " + daysBefore); + //System.out.println("enddate - after "+ calModel.getStartDate() + " - " + daysAfter); + + return calModel; + + } catch (RaplaException e) { + getLogger().error("The Calendarmodel " + filename + " could not be read for the user " + username); + return null; + } catch (NullPointerException e) { + getLogger().error("There is no Calendarmodel named " + filename + " for the user: " + username); + return null; + } + } + + private Reservation[] getAllReservations(CalendarModel calModel) throws RaplaException { + + calendar.set(calendar.getMinimum(java.util.Calendar.YEAR), calendar.getMinimum(java.util.Calendar.MONTH), calendar.getMinimum(java.util.Calendar.DAY_OF_MONTH)); + calModel.setStartDate(calendar.getTime()); + + // Calendar.getMaximum doesn't work with iCal4j. Using 9999 + calendar.set(9999, calendar.getMaximum(java.util.Calendar.MONTH), calendar.getMaximum(java.util.Calendar.DAY_OF_MONTH)); + calModel.setEndDate(calendar.getTime()); + + return calModel.getReservations(); + } + + private void write(Reservation[] reserv) throws RaplaException, IOException { + + response.setContentType("text/calendar; charset=" + getRaplaLocale().getCharsetNonUtf()); + response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".ics"); + + if (reserv == null) { + throw new RaplaException("Error with returning '" + filename); + } + final RaplaContext context = getContext(); + Export2iCalConverter converter = new Export2iCalConverter(context,timezone, preferences); + RaplaGUIComponent comp = new RaplaGUIComponent(context); + converter.setiCalendarWorktime(comp.getCalendarOptions(), getRaplaLocale()); + Calendar iCal = converter.createiCalender(reserv); + CalendarOutputter calOutputter = new CalendarOutputter(); + PrintWriter responseWriter = response.getWriter(); + try { + calOutputter.output(iCal, responseWriter); + } catch (ValidationException e) { + getLogger().error("The calendar file is invalid!\n" + e); + } + } + +} diff --git a/src/org/rapla/plugin/export2ical/Export2iCalUserOption.java b/src/org/rapla/plugin/export2ical/Export2iCalUserOption.java new file mode 100644 index 0000000..59530e8 --- /dev/null +++ b/src/org/rapla/plugin/export2ical/Export2iCalUserOption.java @@ -0,0 +1,194 @@ +package org.rapla.plugin.export2ical; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Locale; + +import javax.swing.JCheckBox; +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JSpinner; +import javax.swing.SpinnerNumberModel; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.components.layout.TableLayout; +import org.rapla.entities.RaplaObject; +import org.rapla.entities.configuration.Preferences; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.gui.OptionPanel; +import org.rapla.gui.RaplaGUIComponent; + +/*** + * This is the user-option panel + * @author Twardon + * + */ +public class Export2iCalUserOption extends RaplaGUIComponent implements OptionPanel, ActionListener { + + private Preferences preferences; + private Configuration config; + private JPanel panel = new JPanel(); + + private JSpinner spiDaysBefore; + private JSpinner spiDaysAfter; + + private JCheckBox chkUseUserdefinedIntervall; + + public boolean addButtons = true; + private boolean global_interval; + + private int user_days_before; + private int user_days_after; + private int global_days_before; + private int global_days_after; + + private boolean userdefined; + private JCheckBox chkExportAttendees; + private JComboBox cbDefaultParticipationsStatusRessourceAttribute; + private boolean user_export_attendees; + private String user_export_attendees_participants_status; + + public Export2iCalUserOption(RaplaContext sm, Configuration config) throws RaplaException { + super(sm); + setChildBundleName(Export2iCalPlugin.RESOURCE_FILE); + this.config = config; + + } + + public JComponent getComponent() { + return panel; + } + + public String getName(Locale locale) { + return "Export2iCal"; + } + + public void createList() throws RaplaException { + + chkExportAttendees = new JCheckBox("export attendees of vevent"); + chkExportAttendees.addActionListener(this); + cbDefaultParticipationsStatusRessourceAttribute = new JComboBox(new Object [] { + "ACCEPTED", + "TENTATIVE" + + }); + cbDefaultParticipationsStatusRessourceAttribute.setSelectedItem(Export2iCalPlugin.DEFAULT_attendee_participation_status); + cbDefaultParticipationsStatusRessourceAttribute.setToolTipText("Define the default value for participation status"); + + + double[][] sizes = new double[][] { { 5, TableLayout.FILL, 5,TableLayout.FILL, 5 }, + { TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.PREFERRED, 5, + TableLayout.FILL, 5, + TableLayout.PREFERRED } }; + + TableLayout tableLayout = new TableLayout(sizes); + panel.setLayout(tableLayout); + + JPanel interval = new JPanel(); + interval.add(new JLabel(getString("previous_days_text"))); + spiDaysBefore = new JSpinner(new SpinnerNumberModel(30, 0, 100, 1)); + interval.add(spiDaysBefore); + interval.add(new JLabel(getString("subsequent_days_text"))); + spiDaysAfter = new JSpinner(new SpinnerNumberModel(30, 0, 100, 1)); + interval.add(spiDaysAfter); + chkUseUserdefinedIntervall = new JCheckBox(getString("use_user_interval_setting_text")); + chkUseUserdefinedIntervall.setSelected(userdefined); + interval.add(chkUseUserdefinedIntervall); + int before = global_interval ? global_days_before : user_days_before; + spiDaysBefore.setValue(new Integer(before)); + + int after = global_interval ? global_days_after : user_days_after; + spiDaysAfter.setValue(new Integer(after)); + + + + + if (addButtons) { + panel.add(new JLabel(getString("user_interval_setting_text")), "1,0"); + panel.add(chkUseUserdefinedIntervall,"1,2"); + panel.add(interval, "1,4"); + } + + + // set values + chkExportAttendees.setSelected(user_export_attendees); + cbDefaultParticipationsStatusRessourceAttribute.setSelectedItem(user_export_attendees_participants_status); + cbDefaultParticipationsStatusRessourceAttribute.setEnabled(user_export_attendees); + + panel.add(chkExportAttendees, "1,6"); + panel.add(new JLabel("participation status:"), "1,8"); + panel.add(cbDefaultParticipationsStatusRessourceAttribute, "3,8"); + + + chkUseUserdefinedIntervall.setEnabled(!global_interval); + spiDaysAfter.setEnabled(userdefined); + spiDaysBefore.setEnabled(userdefined); + + + chkUseUserdefinedIntervall.addActionListener(this); + + } + + public void show() throws RaplaException { + + global_days_before = config.getChild(Export2iCalPlugin.DAYS_BEFORE).getValueAsInteger(Export2iCalPlugin.DEFAULT_daysBefore); + global_days_after = config.getChild(Export2iCalPlugin.DAYS_AFTER).getValueAsInteger(Export2iCalPlugin.DEFAULT_daysAfter); + + userdefined = (preferences.hasEntry(Export2iCalPlugin.PREF_BEFORE_DAYS) || preferences.hasEntry(Export2iCalPlugin.PREF_AFTER_DAYS)); + + user_days_before = preferences.getEntryAsInteger(Export2iCalPlugin.PREF_BEFORE_DAYS, global_days_before); + user_days_after = preferences.getEntryAsInteger(Export2iCalPlugin.PREF_AFTER_DAYS, global_days_after); + + global_interval = config.getChild(Export2iCalPlugin.GLOBAL_INTERVAL).getValueAsBoolean(Export2iCalPlugin.DEFAULT_globalIntervall); + boolean global_export_attendees = config.getChild(Export2iCalPlugin.EXPORT_ATTENDEES).getValueAsBoolean(Export2iCalPlugin.DEFAULT_exportAttendees); + String global_export_attendees_participants_status = config.getChild(Export2iCalPlugin.EXPORT_ATTENDEES_PARTICIPATION_STATUS).getValue(Export2iCalPlugin.DEFAULT_attendee_participation_status); + + user_export_attendees = preferences.getEntryAsBoolean(Export2iCalPlugin.EXPORT_ATTENDEES, global_export_attendees); + user_export_attendees_participants_status = preferences.getEntryAsString(Export2iCalPlugin.EXPORT_ATTENDEES_PARTICIPATION_STATUS, global_export_attendees_participants_status); + + + createList(); + } + + public void setPreferences(Preferences preferences) { + this.preferences = preferences; + } + + public void actionPerformed(ActionEvent e) { + if (e.getSource()==chkUseUserdefinedIntervall){ + spiDaysBefore.setEnabled(chkUseUserdefinedIntervall.isSelected()); + spiDaysAfter.setEnabled(chkUseUserdefinedIntervall.isSelected()); + } + if (e.getSource() == chkExportAttendees) { + cbDefaultParticipationsStatusRessourceAttribute.setEnabled(chkExportAttendees.isSelected()); + } + } + + public void commit() { + + //saving an null object will delete the setting + if(!chkUseUserdefinedIntervall.isSelected()){ + preferences.putEntry(Export2iCalPlugin.PREF_BEFORE_DAYS, (RaplaObject)null); + preferences.putEntry(Export2iCalPlugin.PREF_AFTER_DAYS, (RaplaObject)null); + }else{ + preferences.putEntry(Export2iCalPlugin.PREF_BEFORE_DAYS, this.spiDaysBefore.getValue().toString()); + preferences.putEntry(Export2iCalPlugin.PREF_AFTER_DAYS, this.spiDaysAfter.getValue().toString()); + } + + preferences.putEntry(Export2iCalPlugin.EXPORT_ATTENDEES, ""+chkExportAttendees.isSelected()); + preferences.putEntry(Export2iCalPlugin.EXPORT_ATTENDEES_PARTICIPATION_STATUS, ""+cbDefaultParticipationsStatusRessourceAttribute.getSelectedItem().toString()); + + + } + +} diff --git a/src/org/rapla/plugin/export2ical/ICalExportRemoteServiceFactory.java b/src/org/rapla/plugin/export2ical/ICalExportRemoteServiceFactory.java new file mode 100644 index 0000000..9fcde78 --- /dev/null +++ b/src/org/rapla/plugin/export2ical/ICalExportRemoteServiceFactory.java @@ -0,0 +1,46 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.export2ical; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaException; +import org.rapla.server.RaplaRemoteServiceFactory; +import org.rapla.server.RemoteMethod; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; + +public class ICalExportRemoteServiceFactory extends RaplaComponent implements RaplaRemoteServiceFactory +{ + public static RemoteMethod EXPORT = new RemoteMethod("export",new String[] {"eventids"}); + Configuration config; + public ICalExportRemoteServiceFactory( RaplaContext context, Configuration config) throws RaplaException + { + super( context ); + this.config = config; + } + + public RemoteService createRemoteService(final RemoteSession session) throws RaplaException + { + if ( session == null ) + { + throw new RaplaException("Need to login first"); + } + RaplaICalExport service = new RaplaICalExport( session.getContext(), config); + service.setSession( session ); + return service; + } + +} + diff --git a/src/org/rapla/plugin/export2ical/RaplaICalExport.java b/src/org/rapla/plugin/export2ical/RaplaICalExport.java new file mode 100644 index 0000000..d7703e5 --- /dev/null +++ b/src/org/rapla/plugin/export2ical/RaplaICalExport.java @@ -0,0 +1,103 @@ +/*--------------------------------------------------------------------------* + | Copyright (C) 2006 Christopher Kohlhaas | + | | + | This program is free software; you can redistribute it and/or modify | + | it under the terms of the GNU General Public License as published by the | + | Free Software Foundation. A copy of the license has been included with | + | these distribution in the COPYING file, if not go to www.fsf.org | + | | + | As a special exception, you are granted the permissions to link this | + | program with every library, which license fulfills the Open Source | + | Definition as published by the Open Source Initiative (OSI). | + *--------------------------------------------------------------------------*/ +package org.rapla.plugin.export2ical; + +import java.io.IOException; +import java.io.OutputStream; +import java.text.ParseException; +import java.util.Map; +import java.util.TimeZone; + +import net.fortuna.ical4j.data.CalendarOutputter; +import net.fortuna.ical4j.model.Calendar; +import net.fortuna.ical4j.model.ValidationException; + +import org.apache.avalon.framework.configuration.Configuration; +import org.rapla.entities.domain.Reservation; +import org.rapla.entities.storage.RefEntity; +import org.rapla.entities.storage.internal.SimpleIdentifier; +import org.rapla.facade.RaplaComponent; +import org.rapla.framework.RaplaContext; +import org.rapla.framework.RaplaContextException; +import org.rapla.framework.RaplaException; +import org.rapla.server.RemoteService; +import org.rapla.server.RemoteSession; +import org.rapla.storage.impl.AbstractCachableOperator; + +public class RaplaICalExport extends RaplaComponent implements RemoteService +{ + RemoteSession session; + TimeZone timezone; + + public RaplaICalExport( RaplaContext context, Configuration config) throws RaplaException { + super( context ); + timezone = TimeZone.getTimeZone(config.getChild(Export2iCalPlugin.TIMEZONE).getValue(Export2iCalPlugin.DEFAULT_timezone)); + + } + + public void setSession ( RemoteSession session) { + this.session = session; + } + + public void export(String reservationIds, OutputStream out ) throws RaplaException, IOException + { + Export2iCalConverter converter = new Export2iCalConverter(getContext(),timezone, null); + converter.setiCalendarWorktime(getCalendarOptions(), getRaplaLocale()); + if ( reservationIds.length() == 0) + { + return; + } + String[] ids = reservationIds.split(","); + Reservation[] reservations = new Reservation[ids.length]; + for ( int i =0;i + + + + {0} of {1} errors. Consult log file + {0} von {1} Fehler. Consult Protokolldatei. + {0} sur {1} erreurs. Consultez le fichier journal. + {0} de {1} errores. Consulte el archivo de registro. + {0} z {1} chyb. Konzultovat log souboru. + {0} op {1} fouten. Raadpleeg logbestand. + + diff --git a/src/org/rapla/plugin/jndi/JNDIAuthenticationStore.java b/src/org/rapla/plugin/jndi/JNDIAuthenticationStore.java new file mode 100644 index 0000000..41b3c7e --- /dev/null +++ b/src/org/rapla/plugin/jndi/JNDIAuthenticationStore.java @@ -0,0 +1,1059 @@ +/* + * ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 1999-2003 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + * + * [Additional notices, if required by prior licensing conditions] + * + */ + + +package org.rapla.plugin.jndi; + + +import java.security.MessageDigest; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.Map; +import java.util.TreeMap; + +import javax.naming.AuthenticationException; +import javax.naming.CommunicationException; +import javax.naming.Context; +import javax.naming.Name; +import javax.naming.NameParser; +import javax.naming.NamingEnumeration; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.Attributes; +import javax.naming.directory.BasicAttribute; +import javax.naming.directory.BasicAttributes; +import javax.naming.directory.DirContext; +import javax.naming.directory.InitialDirContext; +import javax.naming.directory.SearchControls; +import javax.naming.directory.SearchResult; + +import org.apache.avalon.framework.activity.Startable; +import org.apache.avalon.framework.configuration.Configuration; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.ConsoleLogger; +import org.apache.avalon.framework.logger.Logger; +import org.rapla.components.util.Tools; +import org.rapla.entities.Category; +import org.rapla.framework.RaplaException; +import org.rapla.plugin.jndi.internal.JNDIConf; +import org.rapla.storage.AuthenticationStore; +import org.rapla.storage.RaplaSecurityException; + +/** + * This Plugin is based on the jakarta.apache.org/tomcat JNDI Realm + * and enables the authentication of a rapla user against a JNDI-Directory. + * The most commen usecase is LDAP-Authentication, but ActiveDirectory + * may be possible, too. + + *
  • 2L($H+n0c@z9 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

    {E3m8>MRkCW|myA8!SzuJtx>K(^z+cB)aPM|} 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�+!TvLG-Q(;qwn(iP;sax7>(5 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%0ArWLoM5D=#fxQQ^SXhkrZ%T% zVYeVROtff*gLXKjjhjpUKri3BDEwDs!YjN%m+YZdpKSMH*{cG6R2dh^wPdM&raCTc zWjzdSP`I{w-Khv|*$mSp7rmjOX9vo0-32F_P~kK?<{KnY?-^G~S9ADD^!qK|X0V5~ z15c0W(1}iAqYnNCD<^%^cRNsdyT>BicL903$%$cJI*^g{iR{QBbhVSp#x5U}wxp}5 z9(y!#jYVp_Zh4tpqY8cjT3NX?&XF@43ZJ+r`qna9Y&m1G2okAeqUj)5EpSgqo6ZwK zUC0B{7QcWt=_MOj=CM6xP$tx|lSu*v!h) zhCd)u4N;D*p2$FNi*LE=KIOw-7#z3bg zol9~!JK!!!A}W8Y)44D0v}UcBa9Q6zmu%Bg^$?j6?!_fGE7;{an!0FM#GF@6&7ST^ z-!wU{6@ljYn7nDY&aa}wp1Ekque)mK_md)Gu2+3gHMkx22IWs%rk|hLh$q!%+k z^`L#oMC6)K9#ED|qk>pu8DRO@n3S$wG&MjvVO^zqq93i8I1du&imd(pv$;snTqP6vbE$r~O(+ZyqPTL0-Ch*Xy-vpKy6Dhd#fq)G0f2Z)tSEjYGK|n>lLv|=>mJcQB%1Duh3@R!KAEQ4=#}pU=$9KQm?k&ub z`2``3IXZQ<-TAuHeY(@w`F?-7>GlITO>I8V8NDMOk%)RohtRQpw^}YZ29ofGGELb5 zA6}VzC@DfLP4P~>9~pEJ$#^oJL4J#Y7qjE|!o3vl&19E3x*8J_k^PPo2G3K<-**A` zxQlFmq24##YO#>Kv2*xRVQ@jB~TU#A^>K!mWYS#ioXi>l_Qpn7Ccqu|j z9c*byDiyYAvf0M#Y7+{FY+}P-HcWBj zHoQnITN6kt9o^S08wG0s#J%fUmzT<>jlJ2c1xwU}_miJ9!GxIb0U@s={!9^HmOF3~ zVho5VhIje~*-;7UC#oV>BRpsJwipTRH8GX2b*wC=8im-Lztj%C}{&@_|0>(ko+e>bjj{K$+QXYE;#!N4$11y zG)j0wjG^DiAH&`pe?uP;4-F3?h8G?pWOtq&6HOpO!|HU7p)rTH5eUZQMV$Z0xMNqV z|Eawtaw?d@=xGq!$_R(bi82=BtP8g`C-S&-Utl zBpZ6QvhIA?HY|eX6Zy;JMsgpHb>6UjxkWlN?l20}!Cm4lv@2%j-&!QlU{BcN-wCY# zdkReOU)}{-7i(*|f2OZs1sS=`Z~Mc;HH?KOd0r{0Nij+gDg%!_zcP;>yFz9@#SMj{Y61{Ph+b|>BG>z}@EPSELJl0 z==eG`$RRxu;$?P0iZ0iF`nSV;LIdV9!uvieHo@bud8C+_wZqr^cp%|(4saV4#EL6x zvqe?x5U6|+1IBV-7FbNYYLSUTwbBYFba!C2k z+BP>A8f7AN8J!@hK)dX5`j6`*?6pis2gpD{t;++tdaf*!T-zj5Fcbt)EHgyQkjduA z6VV(}8~bkgt4^Q4M{f5x%KG}_B2jIb0fYlZHP6CV%gioGrGZx`CG1VWmIb&ITaSp$k;7;yx9`U7(4R$`z-@y7|X>uGO>DxR~ z_#Fo6AU}Q(|9`^Zf2fH6NQ}XXI&w?jiLrH4QC*E6K|aY3STkkl zAP^qxaFUEnhV8Bn3?Fb&+x=q%~{Cb$>c{BC# z_wk(B@8=c!e4i~co2w4D^FE?!PPn@9EF`SmZIHfO!YZOcKJ~#F1>ddMg~?hfj>ZL9 zpnOh{qPBFn*&DZ7Hu7q@~2U)SBEv^XEfPWc5q zZ}4r~!jj07y65;b7+(D}2I zurc`OHMAUQ4)bKzAFlw2N6{j2uS06QrWQ(rcCr}S9$W0+nSsTg5BhYTytUkZuOOrRRH zailUgDRnkvx&u=Q#JY7ClwDYnPVpFpvu(*`{b)B>Ay2D}27Kh?>XZpvxxzP2e?we1 z$%xLykUy*jZ2<+g9Nx#7IP*<%oR-P8#!|Ywwf>s^!3ot`;ST(*aA@5sTqFQz z>Sl`jaf-R|_44&K_eaj2LJ&kGVG7ZA4iQ0x_3cD8@H>}`FhgZ2<<$nPXP9P~cU8`O8oB*GgfmU*c86M$bR zO!OC(N!r)s0`|@L5Mz=>=gKEB0kg#xE2WK@o_a;+4mbP4OAYHEANNb2%~Og$q3wyp zR0-e_7=fmxta<3w3!XoP4@UE~!g({&iJXpxotd~MuZ`*oiFo8(TOfFcO&Y!na4fX5 zs=bS%H=ca&n){!{Zlh`M5qr=9b`-u~zMH%P7+HCa!f|2Zm%<*BxmAHy# zsiNlUFd0Rm;c9aoO`G$Q=9OaG=13_kx8J$!gVyN+!MB~SJ#Mo+rypNDlbPHvy`Hx} z8T3%kIFSD|%*EJQytTwgZf}OpBVWZprl6U+CIsf~Sf z2C=dJmi+)NT)uq;$?(3(C!CEFT*-)=ZT(&a@j%I%=5-odT;0gui(9?cHm+gvWa*OV zhpYANJB7^f0o8ikXh91OXpy<0z46H16aFEI<44UR!?4&s|p9 z+0?@P5ys}+-tJDR96gc~r}Tx9HB#;cWyxcpuJ(}%0LPK)^0Bk0geqh45N~S2Qlp-#8PET)g zu_Ni_3hJn&S=MUoUhLvPg*dQ_>a~Oh)VChkoscz(<+G4V?@&Bb$8unF_9bh1@?-|; zF3xs;ce6XvjT0)S<>m7^nr#fxd(VB8@x#-QoqTEU0lZBfx9xb3e)23r`t;G?^Pa$^!Hi`O z;9|jLKxNuA_KPhtcX=rCZ&m7El>$hPZN+&HQ5-ZTWkzmEb;UIXbQfGW0!=wsQ7e>~ z)v~D~v13OayUZsRWn+6+uNtGcLWn8Rq0{Qrp9FD%B3**d%cVty3?5jES+36>>%`;h zKZ+_Vc-81ei56{9;e#zKAT&}DKCZ*l30al6Z4KoebTULkl{vLylc^dDkQ`0j3HEkU zoFyD2$xIwWB&gSa=Imv({pP5y;L`bftk}ev&yg|&NiI6W*gQI6D3E3RprK=|&m*gF-wy0=%qz>sU?1N-J?vM?>6iIiE%(=KpMt7~cE~kY%~2i-GfbnA zs-`#ZtlwrUHvL`3nms6%$x3jZVUZgQHVmTpRQ%1xkq|3Yf&k6+(tB3iEnFWRN%HsuRMUl2TB8 zzT;iZz|^5=alWHUjz3+NmHtm&gT2JJB>%?#FdC`d%;9jamfJ%YBTZi0$KplG7mXhW zyI|EL>bpY~JE!N+t>cZ-i=$IA#a;qfg$}zcnCo2z-JQQyGPAvR@~3a~Z$%~Y+cX>5 zj$Wm5TO}n;36A6**396RTGOk%TMXR#@Tr+s3_2{~Lgi{Bdvn&ZAGF)ftyHixG_@+V z4vC2VhNzE*40?%xl+%;f3u|gk8{l$=hvRM^lvC~yvXRQ!&B0hV@&dvp_t!6Qp&Fi0 zREw(`MN}v~fLu7iW^W(Cio|~ddPui69x5xyS=nVQW0yf56HvpSp#^Psl6)~rVIUbHGaX!c=Z zlIzOB=O&X8(FF0iQy^8h!U8Z?;PgAOG2H}wAfME4#y6QM+7Wlcj+X20#gOG0{ikZM zRxzwAM-6ImgN@)>WH%tPDy>H2n|HamVHfwK+MIw{V$c_>uPKH|w>JB?XXoCIDMn={ zhp{SF;{#ve2~vf#-LozT#c%^ZwgIouQtsj&Ae{+k#!K-aoqXDRyWPyZTuG zP6_ur0_-oO`>-PSwh{xAu2`y7S5ffbZXvg#Hv*>?FkxH6FAr6hb|dLHcK)4NcCNa; z=EmIGbqVcV3yaC$o2QkmzkhTpr1~E%f*Le3_re>I*J~cc(an{{)uDbYLbxD5FCuXaS%~Tqnx->k3&36ww z*)iAc5{|fqe|B@YwulBAS&?uUyF_I}kIf9D{pv}&vW^`(TF)X~im((_Xv0>r)IOvz z^cd5|aq9LH>yM@P5g=4smmf=u9JWA&9xP6w7NLPnB^y3BQ823Qw{73K#S$5}MRB6q z3LJoxzC37fhA|1{kkgaXGp(xOi84u-GF#bk`-Np`Mu#&zwP+1Wp0pv#Xazq3JyE@E zo9{{0N-jSyvNFoxiR0vIToGRwJJO{WW$jVB==qbA3fqJVzEK&7YFSyioM=jo)LedX zu0(RaX5wvJX~=FjU7-Qn9%*u0lc-{!^qL@BQRjDI*&pIEYWLw^4xrT|hrLV@Uqm^? zu@t%dCg_uY!z;-dS|gv&i&&cSQ%$0Nt~ChjmtSHFa&w*CG8{ZG%o!Cjfi|Jy-HqBpclH_{V^DDk|C11RnobZ%Ea>a7$;+uty`iCTQ1K+)6{kUbmF@$!EULhms?avjTQL&wiUoOhF_>vhxI`IhNjz$e4RBL@YnZW3#>YDp6aS^WG(p( ztH143|6jv%X#)>;X$z-+8p21bS$yMbOrO~)8B?b8ptxWTV zq&Po_L}Lgca%KZlqDU*PaxJ%1EM;Zk@(9)fG7zh!mIK?$=H|)Tm-F7=g)MTMz6-CN zuP3HV?Fx8f-KRN^*^k|~tvT+ulZ}Nx=tlIo%LZ-ewr&Pmx$O^Hyg2S`+`Y*0-S)(J zdm?`wJEVfA?%5)?i{ZUa9C{MHdb@8?kACor@}acjAMcO8N#KdSw%hkg^AP~Ud)z5; z9}SSfgV`(d;-xf;X#|o1KDzlI#@HBUa8+R~!m9_BUMlZ7k!{b{!Gd7!|pWeQ`F)Vjc7$Mio1sh#DSoCc%^?PtbNmp3N|3 z@*2xIh=DG~V4I<+U*}JX2UPH3T14WNl%lU|EWF5z1>8_g_ErC6^*#x6V$>s|!-~Nq zKP4mX4*zzigalQSBiSzMbm@s67)}h-_mBQ|z~Hp&;zQHQ6|cFxmP)MOkS#4i7DY=- zX)0`6V>44u6JLaM+HI(fx%#cnk=)SgYpbrOoW?7WLzuNNtz;S+L3mzNi~*q&4&cIx zF1^~{v?jgJs!=DJDMXjGISA+2HcI*Zn ztXu6>MEdaNV#=AEtH_F2F%^0g>Mm)+c%(_2V7@((16j9Bh(|pZ{rI5?y6!!ZKOuTZ zH%A~M{mg-i#(PNCD>VJf9xJ`*eFyrc@g(-cS_pghTFj-+TQPd?02V#n;BnRV`u_f~ zZv547tqx!^(h0B`?A8TPTj~mZ?LHdkU`@uhPd(B;VK} z^HbZM82#TMKI*rUD_i6?Odm|CF;$Cuh-So!kvB zS6S6ogm+4&3cv$R^e>jcXo;RR=v6lw5eT zlhIeV@S}=?vpo_?>o&z*W;#w*o})D-BP}o19I7Ui__NelGW?jE4Gl27xQ{?N<-;y`34fLP5TsyiheD5k{res^ycGmTGHdxBoG z7j=&l@Sr@s<6fU5uha85>IXOg7N}~7s^_t2D?M|!xGC{g#=n)3{f!JqY#*v8xMks6*%~s0jwO+v^K0~KVHqr_=6ZjCl&K*W(#jo zMXX&daVvx2!fy$^CBefbO-m|4;xU&3Q-&mo>8$3m=B2cyk>kd)>->stihf?@z04w% zLExeKFjfGhVo)Mk@=p-YxFY!YD}(Hf;wQ0S2^sFX;er;>OACY-7tUP@RIfkB()*SACANx3V47Vx7_73O=h_=G1wu+6?ZL*9A z(`3+X^3c$|%mo{5x6rtT=Q=|dh;H3#pmK!T`8YhXxB~xjDF8x+vbn!vCAe;lV0K~^ zd&~}iq)LCH-+zE@H~UC+;#WJ^4JFj{#!&4QawmonZiX3NTQ45fkkn4sz}@XgWlv~`7&kKRO2rYvS~H!R0N{*Y>0-#654@Q5FiF&mvHE{?60@rhaUnT z$xtlBy%ESgq$R+hK2Y6CplbQ2D8WOHkziLEQvzK(&?zQLtQDK&o*uKLevNy~RnN|r z_YjO3AxE{LU%4|)*sd+R_wy%WL(YH3!^)5YB7eu zIF?*jxc7X?T(+Qxmc-L9G^{0xoqd=wH`g;?37u074uGD#Y!Vf$3Kcl(#4vRYHnlR| zMKbuM3U7@&%y+V`t4}*!Y%MIE@w}Q#N(MDJw@S!6CuImE! zy+hx`Q#76qj2mWfd32V7NG95u$!4bMH}04Rte8ob><3Kct^E3%kL+eI?Hvv$5Fc=` zKrHeMp_v~d%-XFu!9hw;GRgVk$%WeQduq&#a_{xRDu%@s1I=Eo6&h<*Cj=E}1o>zM zdbA5N^%;mRke%rm{6P#53N>3(sn4-mz_93SrRq+Jc1b z>I)Yknf#r1XRQlJn(bNjT#VxjstfI(wH0FFnv>!hvF#N=k1B;Vo*@oBA{@q~R!Q3v z{PPwCWfMgj=DJj-oc5BnPV3t2igwiPwq&bp+C?qKXO#_4D(R^K+%NlS<#G`X>P1A2 zJ~D}3XxW2l*&3BFCaX&8vQ(Y^6R!QGu4Wi515DQRnO*rrmMi$>1nt94(zx%Ayv#8r zSyDY&?^vV z)G)GP*xm;)z#|k=dic-Rzh8(si+l82dh&|tIW%?+E;_@1+m`fb zmEEdpc~kDB!gyoL%&LIR)I-JMCFd>I8hfyoWW)hx6%{E+Rkw#TXSdU8ZpJyf6no{z z_CMR^xj&Qy6Ofju(DihoySpaZFx^?F38yP?X<29VwWbNORhffGyC8D}s#`WSb!$Mg zc&9NjcmgB6HT7B6P8J(}=Xk^w;TsOzX_mwkDDp&cULdZdj#}iC*Gb}v1$rP&Uj(Vh zQN6qQ0kW^cpwpTVV^r@wD4iTZEm_yc#vt4W+{-Lvbx3TwX93UQ{jXUH}66y=a97 z^>zEeI9)ZOwAjKj+3XKZFVW|%x5@lA$6H>JB#*`7C)yBc4j<8QPpki3C-x*fBV_D* z@>cP^TlpUe3DR~3#{a7TlC5ebhogew19k#D>1aV4++PvK@9(0qL3FmDN`uy9+X{iA zSv9i0O-ZBUnz6kORZoV+%4ohclD1ZckA?lFztD$H;xlI#XMVtUNB)LBbUH<|sAD@U z$dUTmwR-A4i~0BMb#?cL^L_<9>)Fdb=u=q!YAE`B0>%LE(|(hB_I*B<+3fp~xiSGw$m8EH~WbF5SxcvaB1h(dyN=KPlR)KnB^Jql?kvFet1 zGh?6^oV0RT?Ay#QL~0g&`&+^CEe^;Y5?zR8{iikj30KS~{aG zW`0t94is!rlyyrjKZB)N!g+bmxT{(U+x6UWJVbU<>Di1zs=awA_(?pQX*Q1ATf$zf zT;@IYpy-J7CQB-rh9zBMf_yViM22HRihL_ikXrQZhxS&N1$i}#&NEI?+KbM@^(P+% ziiTuWgGDE|<$9nhUG|-0pL>YCNvy9 zS)<19wFOG)C<16bJdNPL?pTwhYjt`QyJd~|(ooY-sadl5x1)qOD|Z?AwTA)tb_50c z1^CZlza1p3Lp}k>h8hO{3Fs@{bHB z#cNTRt&ze;i#d`I;E&w#(E%y7j<7?qz!J{XqvUPS4kQ}mrF<^U-qgTT8hrFq?Ht~ll`zwXAfLhE}V5xoD<&9^_^vN$0`(3am96A zP48}_U@R7pnxj-pfgAFgXzGDzuymdlImV8Ck6WPoLga}T2g6+b_1I?b{#b(a1s^D+ zZs8%T8hUVF@*gfB)!{1AM51k8 z>V2zkA&rqkpe@*MbjkVweR=|>hUm+!$d3R~$CT<4R)XB-VgU&rZR7 z@{aJz+ha4~GFHP>nGv~S*b2Cht9zbRhh_#n=84_riC=j)%GD;UZ}I~@n4CH;=c-T~ zknA(0>>WclOt>`&iHAt#A}Xk{&*qn1vLHZQT%z9)+A8YE_!pgNX`n&Tm0h5fT`V4F ziFENcBN0}?1FV*|4G7j0Qd~6VlxAgZO~Y>ysxW8V?r?ifwZ&&?FS^CfPUM5#HM`_8 zH@)zA`v`cC%+824eWm}%#SwGr?J;|3g@xKBRy%8J6D6;a@ZAzB(?sY z*FqGH%|VULN#^D;Tpk}Q{_y562q+RV38LGv4qpE}LMZkSR(ZHBa=MoN_tkPcdb-}- z?-Y3XodQY!Q?EnD#oF0I1Yl%h|9^LN{xMOER@qfUF~RT&0dmyC0kx~@tUCLgz4t1I1A%j?QqPFfU)wjb_R{VG zkFGQa7YtIFsm{C0w?9{J+*dJn&mUKMK4A8kBlxtz@{v+N_b38`2MC+O-3V%dt(5&* zKro>6=sjyd#Denl$URL6k__1Wp>Ewo{iO&-0+A7bB_VRed~_ti420FfX;Kp8;zkvv zj3fkE>hhL_=lJyW82Bk_ONoYz5*`mpHcyh_xJ5|Fmz24N^uYSS?AdCQWHV+X?JSL1 zVSCOpTA9*dS|6@KFDC)Lr0G;~th<|oMuW*xtDDF&x`7Zzsp8Eq2SqK02S7M`J*O0u zN*p%a9<=CdwD>$tEJ@asZ(yehY4UU8TRS2^rMp7I>qLjKChd}-ERd+mC3S!>uO=Kb zNt;Z-F!zDa5pVWLdp0@CYa9%cU`aAkvS!Yl)a2CPrR}NTG9WNF4VMX)hlOs(oEUAb z8L`zmD4fHzd<1?7mZi)@tEgm;=rJv?Y)rLcA20}b+vDIvXSX;mHdXgK=pv)Gqt0T8 zUq#VrJR1I7X^MzFT1+CT5^&PW%f)3Q#{NBWk20T6>q`N~AWhX8rUjLLUG4w$4+BYQ z|BqqKH&`N@^E)RdsnQY6EQIdk4z7rIxn zcyc-8K6yZbE5_;X!`PjsL8qhP$-6XmcT~^5BiTYNLmMG8yspf*6&mAq6n4eSRF+WA za0$2Uzq5*TcDWE>rMQOQ{48-X$%VW?YI0-8mW~5wV9CspPSWjXC2nYLU+|72KEPjq zI1Q)p;Ya>F*zghjMgxmcK#NjD;X89xXpQKZ8rDlGiu(Pz%%A3r+7P92j|8FEj7TTC z&#JtKY=SkJo0TZHhsa5-sz8_$FU6#(Ui#NH@E!DyH>7M@^JJ)o*r|ylb4tD2Pk)}Y z?Sv3b^U;Ze<>yAa+^-Eb-qwS#tDC5pgf^Vtahv`{gu7NNNoM4?hsO<$%F8~sEa55@ z{8!ruca_%gS=IrvEOOMK>Z~_4tAamIS*Izrjj`x^{ep1uhy8*cOVQRmZgc^3Tw$i4 z8lb^tG4Z|ZR;`nl(z#d(#%>^L3{gPqj%|YqeV4*CodO{b6<)U%6o+@|W3OVe()5{= z20YtS?Pp+>C|YWd*@9`|7rFh4`GO;=zYcgoBIZ*@$YqkLDtC!g4Qj(xRKL0AOMNIS zjwIm?$zq{q$+QcB>Gnm)Fy*Fkv7D;Xk6W(`QPASHN^$Aoq zn-8T#*^69iFLSJrtc5jEH!QK{zhW)izB#|HajyoCIDBa?X15xZmhp5xmt?=r5F*182X&vj6=5(h3E?d|5ot|Nsx znj~MmvY@p|8ac7po1@AfxCy^bL_X7RfBkin?icHS85FeDpZrn8kE$ZFo`KYhmDytK zaD1~T{{alg@`;@-ZyVp|+P_J>`}7si=N=(clXUX8`=8lhY5>c0@V9MTCgQ(gga4~S z{=X)Ysx|;*H4GnH7Z64d35e!1a5E<{hsKOO=lb@tkX=VMgl zCLTyc9x6;t)YOYjhL?&AIoLz{a087Q?HJmR*qiMO`_UDcz$puMZNg1EfW+B_$j_9W zxJyy?(HLz;EH0~=6-!leu%ULa3R&hXI;GJXg>5OAn`B+QU?f}J{yJO^^9 z&X)A|1InG-JCZa%M}4PX!D+UUrHpvXv;Hs@(0LujzaU=Tx->3bcw9QcI-c4VH~9vS zD}zJn;+m*IJi8}y!eC~KazHW)oOEXo?An_9;M$52#{9*En$l}XkcIV2y@MOA$@oOV z2*Wu$E&H2MH3?gM3?mX#1UvOO-X5HWqnla=U0~}d-6HmNos|?p@jFcDw9sf(jMnM3 zOjb3FfL`<~l5h;Fa8)q2VG=goKiuiNL;-|lZm7hKNW~eIHfF*%eV7UsIX{#3;IcS)bGkri-8IsAb69qyqtj;v+KlKj@o1gt$ctvnq}TR_QFU{5S&N;e)HHS! zoVe3GN=w@fy16&!17d=0u;q_1^B`TC1vS9nbt7RTSG}DXfj3Ff-_<6XJueNsVID z6E%Tsm!Q4YYS8V5uFixA-d_z#DdaTI;2|d-uh}Vt5!WA%d4hfrP+oX zI&(25uM$W|`=we&2sB~HdPtCA{7!Rh2=3tpr_xaKmrpxlh?ZcwD5!CV_NsnsT3E=f*=dQNu2>OOJ-XAhYCeCxU)O^qP!4B zrAq*=;~GYG?#+U`qFNQVxghu!p@1`zHBz5ucDzr4l%=oV%pz$Bq1ymY*bh^rT2@|m zSD`xRFLGRTS?5KdY!>SJ*!VFw@TJ1aEk$KasrAFo-fS%1y*Q}_7+BLN!_3o<#&^Ry=-g=Pbt5v_vy)}9hI z{HYcE8X0bBBT72mPfV346K_o%+$y*j)m!n>9ot@C9y*D2J0_2Q(|PMCOYOrNsfduq z6k|>yOc1>G*3dDl@t(8NK^56;to_^Kz94qE0MihGhAeHo3p{z4^167P*0fA8v)}ga zv=3~%w{QwuB%5|42d?|KZ&;3X<@MMp8>}gNtSKxcw6JUfM=_wENMbKjUOw;@Hz|yq zR@nb_&Uc?%t26+XqsQmHx*3yaUPK`!L&ZY4nY}Wbxlh=d#BI6jm7D$qTWoL>iRi)X z0UpzD+yEQ!^do;Ex2jdLFUjTZo69S}cVULPVhZ^(E_shQ+Uj0W`BDI~Zph>Ux@Z4B zO&84|rTLA(>LUeKq3F7nmrl`juIJ-$cgSzCJt*sh^avj$f@_9qwUXCZEg@_&{x%Ei zMH{c!YXpTly;bi}`zB32CY5o16S)pE(9sjq<4sGnv`{zQ*co3p_AmVT1v<*PLT zZgpbMwQ|R@QLFB!aC-@siNRU=AvYAxnwZ!*wqEJWP1q+tZ!lOSN#R!g{>X5p74KJ= zV?>Ydu)g`qUialKKsoXLO+_+btS%ip)fv3d*)(4dALb$x>U<12KL2apFF7BonLoed z(u<@6>d<1|ulg;Q$%llTIY*|RG)# zNWeFL(K@-B@f&T=+!HAel#hKCZE#KzRnF^sW?9<|9J%wS9$nQ*E6`k|$XqDPykrKa zQaqIbpx+S6ImFMU@x4X6bf__cin)W+jrgL%T<)fNotn5T=J4ZIOPKzU`thy&^Ix2A zC&jNs1-?Z$9^XwK^}lWM&G-tDSA(YMQ61TM$#)29Rm5Cdd=FJC`r2v&ErYL=h z_&R&W%2eiu?z*UrI_4h43ak+(3AV~4e2k66y-d|5D#0jAP^SluJ}NAzi3^#Oe`l2> zZ6z3(8ER-f#+{>V{T()jg>TypswtDiSLPk#(i|t}1Fvv!iCZ5S`%awUe3zwd3+MC8 zPJ-gmz#wVLGIjHbT;)Mqs0z|&JnB9Dg=FQMX2}UM&#NxjIxMKtU?zf#$(Fq$4ycRJ zq?`0|akWlx zOF_3w%XlfSyCy%!2yP!Jy{@|np@n52M01#!NNFUG-n#mM{nxN}K$b>Eo4LVJ zfud^dPji58*g|DGqge28PM7|<-sPoa60Fd)(pUwPCN0@(tPZ2hb<0%$gJ7^Qlk*#W z*sn~N*2JX;mR>VE8pR}hvV^)9;oI>vC9{Mf*F%**%Ve5!J^+s_enj{!+!9-296QW( z32aS&Duo$791+}|>iG69{a7e3(|OpatWyGfsls)Et{z`B9|1l~pI+`!Rsl*WIL%p- zWvh|grYpn=gRDg18hhNs^Iw{!Kzn%wbOb@`blXrLz)uS)*PxoLGnlLXu1H-pjm~h^ zy;Dgt=N>>D$ghyMOpSJiPtXAMqijvtXovL})o3&K2Z>-de+b^~t&q@NVCUQ=myw+E zJ>R0bEc8Xsd7i|Q=emS)0v{;~1=;DMGtWjP0I$#zDRA?m&cd@ZGmR>2Rj01uluKj) zC{(L3`|j~ym{HB2WjuRO;*Nh9c842uaCF^=nZwrmR?H9Je1+U1sLZ@4Y!-yD^OqGy74 z#r>K}Yny`q3eE%RtMTFQR>$GB|J!@&r{!_GgeOa$*=HL~sz8nugf)Iks<4a?g<=Yb zAYUhiat-a%v3$CYeI;5Sa`oyZLJh|y$EMSd#9-RuHj48?nO)`SaKfQ3(~2uO7ekneCsu$?bNfH;-?=ZSuRLB>j)2_JVSN|j z;2&-D+M^Sw5k-xLh_n`Usy5_cg0cGK;)1PBgA$B^20<{grkaFO-Zy1mJ!*PhO^sm5 z)eB;H?+8Ho=h(nQ#pDdtwA#Iw0m7xb_VNVKXKXV zcm5W#mvBQEXo?#UOt@V`nhvlKb{_RVmO(4PAKpv{f&DU@37T407nDXf5)6l?xa_Y- zf`p73F*c{*B+BDyui{n!<{-&|?UxoBGYddW7xL)Rr*vn^+ox9XCriuBj+_W5$#eGM zz>J}mr5#APi(9yE45TVaU-%y1BI`!V2LDCWrq~!YLoOK3)bvqckcOP)q%+dgWf~#@ zxJjXyd*}~LOD{mYs_S`+PtiMADUVgaS7jwy_9rRJqCA{hkfg}N$gGczdN@f@i66(D zin7)gV3|r%fKw}tfgM(5mW5RwEF)sK4uPSWun4*uiU_7mgsrH` zG>{viSjkq7E%y*PxKr;r5obLM2Ky&2+m5sb<6`hWlgzVtW{Qsu>nEn{7+~}fs!Np$ z57ln(>E>&nQIv@F$gJwuK zt7wFSDQ)CQj@4REP)||@Rn0bLTf7KbYRO~>;Jw{9v)#hi(G}73A%Nsvl-_-pM$$AU zHZfb-E#U{RWLTDmS)=A*E;SwN{2+Lh{WEh+uADJ>ec(-I?wpo)uq)>hcqJ0VN{ zPqkKcK09agJg=tHP4JduWRn*2%e$9J%ZP(Mh z0(p(w=}Y5quilS;;E^q)o!RavFy$u6P4-Tw@Wg}kN7%`8j6l;SuZr4!$qEX%8&nOrLcd%R zb5yfqHKnu=M`Yj{I!zzfHpQ{{yO|q`k*5ZFr+!_~D-$e+0MZk>z!0QIS}xLfx8QUI z=pRwa#TU;eKN0Ty2M3h`#3WIY<^F7^sCFd_<;L~WOK9=QXi=^$U`nbLV-gL3K}C4M zC8qM$VQ8Y`dvA`?jmOt-!!ZWld#YE@5Zy1|3PFx}E=`-yNrI2(r7OF90Cv^7E9AZu zFoU>-pGbP)JYkWX`ENVg7E#N!PW%w%j^QyU|_?O{H zwhFFRe2cbLO&b>lT4$Fot~ra|s~4BMpORw4h(F7R@zTX>l=4eDf0TEqID?e06}MlMcgQ$%DZ6&SyKXz-p5JfF;*lDppt+Vg zw47c(?l9h$;XIWd{5kEx#p{@&TJ;Wh>DJ`k?nUz=|4S?KlAr(W3HFDVJJj3qCYF%z zd_d2mZYzS$^ClE6K$rV;z=#*SM~&NUJs<#B&dMre1!;qFxM~aW5?<{g&`3uGc0`zY zu}M5u2`%P;WYyDJ#Z7r) zJ))q_yk1mZ*QE{?O-WO8lnpA=`35dKOBpXJ%}PmYZ9>>+c{f7~FDB5FH5f^uX;Ij$ zo=XyI^mH$*y1eQ}xSpr8iZUtkQCY*(b-9veqF{|i3A>ZrPfAa5d-v^H&&|dprMN@U zdy>RPh3k&-T=^bb_b%P-ZzFQCy_g2aAJSjVoRl&#WD9@Nz2ofZ$TS$7@XIzF-8I}v zb0NIN~R^r?!ld;Wy z#O=0==oIVs7U{@~a;>f)Uk^9l8nR-RrP(daWS{PDXi8R|Yg?t`nEvFjF;H@o8EEvV zo;1&oN#;PQcJI(JbxZ?yR^3`&*D!V0;ykB;#k{Z_J6`9(1nvrUqx{9dholm5g2CY4 zG^_E0&$2ds)bz#iJvD-o?-Tg$J+-DCto#ib^|emiIby*v?36c*5+3g51{7}2$Y_yH zj(9iF-RIC#F~5tFybOBikXTC5+ceA>#G7QND?S=PPECEYC&7I%^o#kKA#kePNbXG` z%4+_6&WAgoz;bNqy>tlkwxLjCriFDgHXLA8S-5jF)DYeaYp#z;LG!SE=Hmr2^-_mn zFmQ}Mk|CwiqTx)rVl7)rTh=bS(Bx^q9)t8u8s}xfKu3-~cb2~ejAR$;8#>52?&q8} zI!A@#1!?&DkD(2V5x`@BL`0s`)g$3XVe%4}X))=%8G|Z0?$X}SVpf-_2YT$3H#iPh z{f{ZViM1Mzdmxd7NhIIu(!9*p!$U9;s{EPqYbu+rUQcD(tK{Ogwe-+Jsedgd2spNNU^z=pg;@R? z=FwSPZT%pahfM3YGKYtD@t$OnJ*YEG;Bg7K9-a0RM9ja<5mA(Wi2=qeHcQIccEMfw zNJU3=ngb^1v_2ru;F+pR$RmhTzVh*qW1;S72WA{YU=m2W{;(*MFIanfQ zK)};TQ(g7HPBLn-aOEtas#2g(guO9hT{K~Ji*VvH*7xRuVW%dOuH<0wggPVRCjTH7 z&ESh>M_8nY31dcac)D9y>~M^{Sks`d^%641-5no zYV0{r^?(rG1vOmaDwh|AOKaO+u><$Wti-IP6)WkVp7>~NDR;A>T9bJa2-kOtoul7z zy0BSaaU@OV2nkgYSR~!XVQt6E58Pi1yFG`}d^8xG-DcP!IB6Ie$u8ec1Fw6L6@w0~ zhR0rE&PW9a@m_+UmCCs5;;oI0s(s^v7sEoJYCXn*E_uJSo~7V9e+gxNeTZ+<5i#ax z^1#bv?r!Rmb$X*WCTS63`;mye%^Fq_fWV4(+w-RDFk1u-O6+l(`}o$V{FAQU59u2*^Om9M|Va! z-Qwyd!C$xBV!da*qix1+?Y*5S%hQA7K3+&)0Fyh$5tTXE;UPn+B%sz7=s` z8Pk;yxWC;pT^@JfnXqwdgrIpVoJ*&zVT|&Dzqq19^4yIX5N+qlwn*5VkxZ|#wH+fZ z_j#aPZATb};t8ABBVYC7B*S3-1f=#ZbB9{Md;|>B@CIqb5ONul6{M+t?1%Zbd=CKf z8hS9egJyw~mnnu^uo(NPIZU^;OQlZ(lg6KDpjkbj_ejGH>p6ZQKI81g8A#o{>)hF zL{y$iIFX4?-;H(N;8T3kkiQsr@{viqX2dG0fA*WQIpCu2F3pE9r99Bs{-Fi8_Ct$8 zt19WtcTj&=z*LPH%&BHysKf#S#3*rvwaDo^2weul)iPS945uJ*B~dO?Vbo?cl0kC1 z_&H>I`672~jAjgu!64*ZFFK*JipMdpsoAFB@pAt0(cF{G!t<@^&&BGd$?9g41(#a! z#T#I?`o+Ri(1Odf=piS4kt?J|ydv8Cfz1M5B@@TrF0W$O+V5=K!DEGDY6Q~bCNQ#8 z!D#>Jlw_Q(O35;IVm+IvX*_34o_K6#5POS;>Q{=2IQ^1c3QKFki%*Mo%uiz;+;}W? zEXmH^0xR>8ZPTowi^|+bI6XQp0yDV*CFCDOUlIV6)Tt2j`Okmu zw|^T~uoKhro+O>U%xn-#Sj722j#a&1Z;-N$xrB|tNsL@D;^*vr$*v51O^xZ?`mWQ! zkMPvzRMZT6JBD^f52x&()vM{ohRg}52X@y9PL1Gi+D)0C5l}&>pm4}smD&NbSj`Eb zONjOOT;_!o>52F%?8*PA1!6!~Y|)dy7SZUs|asSqB0l~#_Mb1kPwH4kl6frdKeJkjEg%h&5 z)>N%fbp~E#m9yBSa@MMR*7!OVq`O4!k#snLmb)Z$?-8o|^Up(PKe=htt9{m#!&DO5e0k!OK z%g9US1C+arE?T#jTJbPeJl$4`;fr75@YWc%yORGc{H?@G-FQNaaooGIVbFIXiexUJT>xWk5(6!(u_cVn?}czIyvBG5?+%Wu*=f5 zX1)5o#Le6ytd43O`B=iRnlosAWS&Rg?7;Rx))I{ZwPb*LY9zo*0fqV#rFW(GJIgs= zC{?+X(#R#RJaU~$Q(7CRlEjKC1C3M9LAfIn%IdMLFCMG$TJ>UN&*)L_#VY%#RPm4| zYemue>G;8XjlqDYZiCriqiP6rZFAIjO7uGphd-KUO$lST-po}Q{QZ$y1LJzNfhI{g zu8yAuk2^?Sf3+v*tcQOs2=oe6aE&)(rgD@!h9@KaNI~wI+N>$UZQdBg_K2_4xQfO; zo2PkttgFW}SiUp5HgXQkfwa~QGxN=!#G;#k{kN2>Pw3clChYK4?DuXn^^4tj5}$td z^-f>Ox%2HW)jC2uMwmtn+0QAhMm$cKhdTks1n22Cy)0 z_-A5O7&kw7xlqubgb47?xuQKmvTTa8RTbDYF>ZNKm(pFD2Op8}Es=I!MuK7Fq-fbU z@M;(23|#8((0d{AmcjZsVKwdP(p=t0EKQ_yO(Ax&6cDZ;p=cy2#HpK#)RR%p@{3@8 zg%UbciPtzECjaXKEN*mdU(q)U_4Iu){GZq;MLTP2I~Nm2Q44F6|2-S{AD_6WNSSY+ zIE0|BXEd#jYhZt9Hp1`SV*FOhWu$&YOR046bYu?}G~6Dcu(E0}GxXG$p||XsH;^7U zND!k?NC(r-iGw=j_*!f|Cxc?qSf<5|F%x~2Mfpk|LdOr0fw@HlhyxitD!t*J1398vjpj2C@rXz&M%V3 z?@L_lpy;fop8yOcTqT@utG_pp{@oTuKsN+hio_~VW3pF8o}`$&N9he zeWBO=`yF&zWQzY6yc97m26>*rHbZu;TX}&+u5WU5Gn`Z|0$#g90hK;%z;#bHxB+)u zi3?&!_6P5E=eBxKjgH&}$qjXwm_zA4Kr5G-^I=a2r2|fZ+tr)Rhho~obldy_djG9g zj6@!zy=zsb7zri%pr1(28J&H0EhTU4@o(CZDp#;4%v0!K5JA(@mTvyH=y&XD zZ&3$x?*N}<(&Vth+FTtH*nD`M^Xa6{fq1uoa`ar%&7vYpWHk}o76-D4D!Oq0)h;PB zZ9oY95KVKHQ|OqMZjRXd1g$=e4v5v0eGcOx^bC3Y0mwRGWxQ%(&IscUC4v0=zob3Y z=W=1e!2S5ahW&3+(Er^R_WyXdcp)D-fAL)~bQAy)`}wj!fT9Zj6!*pP0~)F8+6Q$Hax4ZSai+-0Tf>ny==&xh1(fG?+uP$Xx`6iAYZ12Jf9mq zW2C1y;kKV4VPE|%$erffYwe#YVNuV~{%9y(YQ0Zhoy1;e@In|~dhnk;{j8mq+ac{; zx!c_+?=k*(6wi7fUuN4wq_(|9KYa4fio&5-)WzJJXij~Dls>oE@|ER~%D#%yGNTEF~}0_}UpI=R3(IY(A*1Ff_7$~U3UiX0>pugfL+C0EpUbN^{iZ3OKP zCzkRN#S^wKJZ4Ooh6{`5iUGgh?<`{E@|%<=Ng^QuC%ZC3A)J~@Z1BZJ&Fy@1Tv?5f z149;CwY`4su?{e%4{)S3bq$_teoGcZlUO~mXWqo%m1UCnUQU;eQXSHoKd@COX({bkrMVRaSnsQ6D*6Wu?VS+0 zaB`AfUxf}9oMic*zP>D4FVkJS5ECjpE66e1KADh;UF^%dDJRvON<;=3z4eWh@*c7N zIU!OwT?JeO7xVgQjHPzOM6D>Dkb9G>YYG+xlqdWilpK>(08oW#n70?l8;k5X)BkGO zz~bYVt}UGR6!>DfOP5ny{hRH!d#vq%W3WnuxabQnElPBA-2Y2dUIu8uM#7U&U~C9l zd_r8HRinV^Tg3EN*7cyOv#={q`BXVpT!@uXs?Apm1T6V}o{b(RDsgPWUG+Dy;jeFV zsIi}bxQIWtJ)VRLq%I=8BFea1Qi&_Ejbs=E9}Hq$qVMeRr$wQgwB%SZNIPA>DJ^2e zVtz@O4C3^Ml8}1jQ&`qM%a>)mM3WYb4yye&PcgckfpJg4Ssf@?KXnltOh7*>4pAf9 zQKydE1?tYQ_jfLuEfBU%!datM*Lu&Vi@TIG-i`ADa3y9OH(W2L$^d1s-Q=}>!WKp$ z?YGTo-8XWi4igVqFVV56aV=G*Ydk~9YO?z!1XtD@vt*;pe{v^*RhUY=BEl(@@LVF2 zB!m?PwIo!`k7D-T`h8|+e|~iQY;X5;iGexCwY<8-I&c zqj67|KkIu#<`&0?9pL6%3vr17Jiy;K!{1a7y_DGCBQg}u#FMVzw_cv2XsmSg2_inl zS;MXAT;RB#uVt8FuQ!-EGA3bSV>i+Vy-}}_PXsrr*F(mr*JH%Ywl%08M-QBb*;n## z#HBUvod7GT0EWKhulaGSX|tvTL8(D+4)cE*uv@Nw_y|n%|7JUS->Cew?MmOG<_<8U z5q5yLa!}Ay_O$tB?Y=i5Be$tf5FJRsrg>{>fl}#~MQJpmx>6isTVE*CtW_^$+iYC2 zZb%RnNz$_WD>?gbv8hCdrfrHp+)1NxORW=KHo?gy9sTO;F3j4%{i1}vh!{JrT%lDK zb+t+LQhoHY(TVV_TUF4Lc#8j;y1?NgiqvE2vaQN!RO*O?XykyQV+aY)td&I0Jyo;X z6`+I!qxQR8*B)5n8L=UQxwI(vl#1NBcD4&o4+ zHmS{Ws7Q6kmdhXur1xLhiq}KQk>$X!OXtIBxvnVUYa?xR8Pz<5tW$vt)?oTJ*mA^g znY;+|6nR9MGwH2)wa9Qd5~R_VS2;?sX09B5$oo>^@w@Jo;cro*_)A6J3@XDTePiA-@)=c6lbLW+$9=o z=zQ3h37Q!hi}qyvWMIfn4ag5*I2g#eLEnIMLq4?l$Dqkjo(D^|9&o2SqkJT-;Bbfu zx9wMF|L)7hVg1bU(Os)=Lq~Xp_b0?lFGl-fn^e=Cb0&d(w5Fi8IQ>_Y*tyZio*KrK z#i~9fQ~KzJeVJyH^7hM+laaoTcU_X?tlCn_q0@);E;}A|(UC^CcVs~-Tm)nmiHV7wU?9|$Q2(U83o^)SJ z_i%~rb0|DSx?U#y9&rt9&dBD+uW0VnES>pk|mE6?IH1L2NM2wLmH( z#q8if!`)p~Hrw!Os7C2fdj!5cehgK~kpn*|DzS}xzXQ0UJiq*wyL{Cv3a!?SeLrI` z-l-Js@_Qi#(b#+(4o3^nK{t zwCFs+s4O^tHBf2U!N!~_D5F7uDxHT#t94*U#{ZU~KVzfgSE?VTiArhFBP-|2AJ{?&1VA#%$Ey5kz}jiF!Tl@$BHy*q}y z^@`UM_}##xJ3$r#TQrtgC-D>La9?Wt zc`FxOzwCrhZj%_jNIO0`6IQ9LkCgBq{Vrc8<5U=S5?f{)AkD6soiK*y{0Q<7xF3C zwgQ5hlJvY)A@Fo=tcGI}%v;sB`~L8bhU2}4z81X%iz~=VtMrnAWBw>hfT1p5&u@`{j+qfi95InUU8I%jl|63(TLB z2Kf8kk^I9s16rnM3j&MI+hD6-(CYqlj2vBou+NOE*MyHd71F^qXLifh{9F1eZ=`)6 zCfYqzh3}|!SKDhaPk4KtiZNGGOg=p^Eow#3e2HAwL_;;6`u5$y77yqjGIWRBl{r3m zrcwL*L`~AoFb{1J@3@AR?&LQpWCWdwZ!GV$b3JMZ$0n~xyMRg1z5;7n^C96dc!HM_1&vq=$&#QUfGuEMI{puFXbQZcFi0`r}|pcbC#+Z zdD~8S1M=kRHns}51Vj-+WcEyTzPnWQ>|Rh4lyv(Gg6mtVxRg`7)m4k9MadKOEM=5k zXFEf`=093+-AX7*^xl>$slbnaY?r`1F3HnoK52-Y_6LaG3#v~$-w%Ncr%(# zeMxJo^BwW3WAejZgUTh?)#;~i$r0=iGczbeE1$H!f(`)IxqCJZ<2t!CJ6KhT!VK42 zqX1GDL&OY-%(=c_SFse?ZLt7^WVG*)SD^_TRQt1h>dRPI1OV-!8Bu-&6+v|B1#>GBU8W zHF5kOrp8--OtSCWHh4}goxKYauc>)AKLWE?)uE)70z%MXZuWy2&V^Yp|C?OcgPCJe)P=34B#1P1K z&EgIv>s1ICFz9QVK0NLzLPI-aYz=-0k)8jm9)pLGE`ofErxYyodO$f&g=tEd<(#UL zZ_}6O5mfI~4!i3%RHMJiB{`)5U!q=syNy+W?4Hb}-e+2UatLJxNbhKW0)7m>{r&DS zNoPP6v9>&{JmPc+`!AxPA&!vF-EY(lzn=ire?ni-+1lzKR#7J3kK(^udgoXHtH1o; zl$m)tOWDG_b|)0nMbXJ0wjx1+YyA7JL6w5FLSwd~4=dbvpbv%JepC?u5Q9U8EAR2k zD}$Dw*OBtus<|Z7q|7N{s-}&}Cz3P}JAKAP-Nwqx!eR;i%PB*y{$H;+6>=HIWxra@ zc*erHRgIz<4N%9JRbG@ZkdG0-HM+ui>(?g_rtnU-X7Nxxv=mXGWp#&JW|?MZ(M=$F zPY@dJhIOa+E)<&{G!6o`D1;2Lsa$+72SV=O4!25$k7B~^8bNLs_!3gH8QLfDtu>- zR&4j`M!L!=q6GTu_q@3@4ANK-cC6+9o(SOU!6T6kM=!ju9q$~q=`*@uwN5DX^OiQPxF35IC=|WDIWw76Rx|J*X16 z+COVE8R^5-jrXuCfETU}j;#~)r$PTbXdnG6&_5&Th*HxR`;B1l_eJ)fko;!^xgPA6 zc)`KJLBMTYz*$|uWktcOx8G;;_mx}5GnGZbv$yyAJ3HqI|5WzZ3%h{Rih>Wk=L0_0 z-}B=O`z1eSP?;DZe8*>|B*vwdp5#U) zWoQkIV|z^Sv4}v3K#)K{=^5w)Bv8TO@Fxa-#2cCDo9%)Ai;ZzvMK(t<{Er{tgg<`Z z{)e0T?~kWS1JWzgB<**$G2@o;;aFC&jEBsL0HZ`YZet>GqfA0#vCQmj;-WpXG^t*^ z#kb#D^nL6bBC>pK$7*=E8MivxG-;GbDMVF$NPR0MH1Mj5LXVLOck;&NmwUI}r1a>g zvQKyC)!Uz;JMOQe?A!A%p9e@n&0bfI5jiuKS2?nSX$`WEK%aEEzWWBRO5KEoDU;_Q zn3}QcU>G}2hIhqay^*6DlLst~kCaLus*0_)ycDTWznQNcqvuKmxIk99P6*>bJd+!+TfH6=8z=@Bi1c&yvHCM`z47lsd(KwRFrt$lr&}#No>NRQl zL@;X{W@UA$0_l>ooNpbgD`{t1XL@D+c54Jn;dJUA!eZJ1W^`?5+!E}~7g}Yy)=ZWw zZ%k+z-6DpM7F&h(s-$0w)%Aau@FBAJi=yY?2#i+&*%2EGr-rY+|I%9y#k|47v@>!f zzCybf@!HfEqqhtk>I5Ra^euY@UTl*;UO&RQW9`rXQ@c87^Rr4tqqo+z%Nk3tI3MV$$JT6_Y+v4x1&+ zwh?)dxP!CIp@~{Nvw2Qe!oI(T1<6 z{vjf_lq+;`+X9n&WNhQmN4c^2>s&cZs>Nord|2wKvLi`7&oa_Oa6z2{IrH3+_NJeo zaUyj^_RO)=ZcAchH2?0z?$;2~fEzKhDY3?Zh%hNRjXAdXGsE0D^Fj${E0K?aG{;4} zcIb0(lwWGAz05=7U8ORZWHt(bm8r`*&fHv?6y=dtoyi)sz!Y&fMW#s6VKv=?qSt`) zMIVB&7~A$nGH$Rv4t*9{2RjWz)Z8H+HgnHBnKi14nf=JKG6cT@aDF>kQ_6NT5M$V7W;f2=)9mG5K?^wo<)l@`jaqbN>ld) zJF>)77>_7(^$!Jv1TLb|hG82flbN{w0-ZdduUx%+&3K+SKhtStz>G?o!-Oa>5i3`7 z3*J3Ofx>Tc^6!o0r(}#C2yHmGz8|yNS-|d|U%Y*2HtE%YiCH>*JJUcTp^}TUCpBq~ z`F)TQjGM%QRVMm9boD!i4*(xQ&Ln=y#Q6CSd-XO5B3IPZKvzkA3EG7TyE$=4y46I> zmiN|!I+w>lLxUUxO^Fsk=eF9}6VrCE>WoHZDfV+7VulKbl1ZKQsyS!mMRzU{=kQ_s zShy2_dT@p@#7wDd%nS`DkMvjWT*rw=Ru{kC{0VrwLJ8dr-zmUXKGXHsi{om(EyPtI zRQc@`xqu<7ria2?0|KW6vhWXv)3_w5|2B*Ws!3q$HpeJHKrsr(&zE5zwlOfokO(3@ zusKip;qOIEYd{@8zi!tL6;ei#+ie~In(sAk)|N<%`8w5I0B2U=ki&1y@w3uo?6##RK!XI;!a>E~c#S*+5;LeTV4Rf`qT>sgrPzGe1#0l`owoBS!J?`Z>9@zBdLI!-t`3dMS z708*eCU9=i!jIPXmrcLgu0O=*mEYmyXK)>?%woJ0HaBv1heYS5WS%&tCym1do?b^6 zp`DPNa8(gJcgyuB2eUbn9}9Isy~1OagYg$i+r`xb1}=2CTpk{so6bWsXdS|{e^w{Q zom5&={E?@{#N@ar9Z8nCD1M`#$Z3OCfNZeTbXFViI#d0>2z%$?Ov1QJG`4N?jqPM& z+t$Rk?YyyV+qP|MVoWk|CY)sR?YCQd_q%uZR&`f*Rd@f zoe4*4Mb*5na-uK5Amsy{r9@-Ra{VGQSh3FJ-s&SM8B0>5lwP|hx6R5Xt~&PAv1s0R z9T`58D<@B}71g9h4kd!N+mXX%^f(@_R_$fr4jaZB=+w@IlAO;m=EmXxg2NF|;`fss zZr?p%q~<4NN82!6Z`Nz=LAUM`HsOxmrmDbE;%`Kq z5|JNZ+BfXY9ZzO|QC^nRRaynDP!W^!BaicSlpY(W64!prS|Y5(h}4~eTL&aR!u@`4 z;3(!(V)F*)_*L@v3{{pm_)f$3Pq|)Aq&0u?NM3TvGM{uO^@MxQJ%4=SKW?kMoulJh zBXUEiv*PF#I~?qUZx{PbOUTqEnW_?CLwh*ZGH+FxfGeN$SwZA7p)0j{+HZRn`vH0j zue|z%%L54I?yW0XuN(^j12K3O})%-5;$?zBil9gL*!d=j!gHC{y&U0=| zA4iSI{zF&*>K&o<9TN%knDN3dXa!I}8Odx=-R^=5A$u2^4i+syP9Y7W$(#6!bm*7p z^P$}FMdNWM;rhN40CIh4ixx0lC?H)H)*;0l2~SlSD4c{~PK`5D_J014+FdJcka*U&= zixUt^G(#52w%kuN1DKG!Fx_NVNu-^yxIJxVgSmGaDPi`H6igIPh?a}>rL88(pQ%gy zkP|MuJ+1zJOk0{L{%93xv(&Xyq^{x)nj$79c@JA4R^%#;|+IY8kc@)ZdyW$Y*i33t z(_AuS(voL^coBBusDTK;GZXGy9Z=rPo^BwDcUjqzaNMf=)3XWG+x6|igNP8mu95D$_GpBHu*gYWt9P0th@Mlf=7|dhwHVeg^ zvaisnY>Fh6?6hi$#GR*u?ucY@95!V1rsa+pSZ&~9SPR>X(&3*ywdlhNnN^cSes-BG zb%suLq?|hAc6R2ZIg3ZDq*12apFphZYiKZHx1T?*1SfL_@djnAvF0S5sS+`PY=!L~ zC^$_y1MP`07d4eoDbntMn}@eJ+>x>lZD_23Q*!D`D9nLnT3uDO=@oS@akrQRgHUk+ z*}UsIA^FiK^p+2rDr>(#6dW=6K9!tSt|wV~h&vp|hdL8#k`JAEX-?p^`>87<)fHiy zs`&NFP2Os#jLKo6S52EqT?ly`($pk>d@&AaDc~Ey{bjT7&ujR^m)0 zBk`ZoI;)nV5cTFg-I0|n^{n$lcR4i}2^_J1WpqpZqSvNsfi4LV>-i;aByQ4HM-Uv^ zlISb^!s&ShPee9H78&)^RuX4;CwQKYRC5=6h68tS@f*ci}DVZh&x!hg*C)?Q(62fG0UGtG=E7jq&NyBNfk>f;r^;e+d^F#uK-leFMHIw zq7S8)WQPU1rk=zu{BXHgbsX#J5H(0%w7-W=n7k>6{P;np87LNfB7(6Uph=GnSf5a? zzFB-$|N8;jYsB&eyEpmu^H0K3Uf#x9W>jtW=Vi+?4dzOIQE!8iAyTxbdNCqw9opZ= zI91`P@lJ~oD)ow{=?fhWF6Dm8zd9=>ho;BJ@gz@vDOE3|IwScY^GqZLf?*ghxH=JT z=y?0GuMaD8h9wLi4Z-b1-uj??zS*DPV1`v1OeT~B24G5y9+F_b5yA9dnqDEPL@vkq zYo96;ef?;xT?Tm|$LN8+XbHs7^A;elus;MLC+0!!RRcfRN%EnN*#gKXn7&RDpg(0M zet{mJfxLSC_#`3;Am%rOJjMoj760LnnGgUoQ4ew-5Ar(x{dPTt|7VZA@SY&y{Ts#4 z;ZR$U`+^_tbSdcUKMNTZz676tQr$k`4g|pM3xVI}gTLT|d{S}uL+UlLb4-WyE!N2#(4-1hM3{veeXHs_2>+Q{DoQ%ZmWXh*TJ*I_E0!|0s*4-eyA;@3)K}(z zp+|*E|A@XXWcIx%SzzR_s_wl@^5pq6(@z&IuqJnV+z6bx^quWArw15*{zDFgU18-8 z0^&h2Gnl8V`IebTh$5FQchKkM1C2Eh3@w#zOQY$mW~>%QT@6IBmht+AMDR4#^;Dho z#WRC4AB!!fbUAkKV8a)q|J0sYzWw*ks7XPJLm$1^yj`j{tw zFlMJ+%(CW85ua#jnJAt9!LpdpkOMNk*&tr~TCi`mBvo(77x(_;F7rgj!X%X$q4U{c z;oml1m`)qbeQi7F%4v(1gdjxLmwtXpM4J{dU9xP&*_+ZN!o8HJw9}$1wLU_1aAz}W zL-8>J3hQ(1i1!_!k{EW3FUa1s6ZF|{3Bsz=cXA{!^~`aRyH9HX9i$w1<6Ws;|7_<% zLD5FkZ(i!@z;!ZGH)u5bl~2}ZHD$av@lu2R_JqFqjWbjdC)^`{)=DkvT-~RspV#bH zeZpwV?lsP42Q+q^uR7%s%Y8^s=gAeF!cZvYwcjtp0r2*X6~QQ(ard6NZ9D%{hycv# zuEuf04oSRF|D`LPI)h&cSu)ICC7RF+QLB? zKcsHTZg)jr^J$|kUOvEj8sD@GaJ6Amhqnj-)ioryF-EJB9`?Rzkqi{un?JO!GL*$kNh_Hpb-+I`A7P#_y1M8Q_?cBmr?K$vuF3SGGp95 z+D+I`in0XpFWC53bkL3DfGOz`_ zki-PF=>4nG+G~Mz6-E2u5Rt^r>cT%TH?eg;0Lt2*;2oQ;fk>2=1m-89w+bgqV#?d7 zmamj0^lDePC7}lv3WNWGSyKF7r@Q#3DAJ%nKq&ryJO6)ze6i}=D&J{!0?nQEKoT$j zs#sJO1jRv75y{kQbZSzBmfGE^Ia_Gy5MwK!@~z?rG;xEBbgJ4#H?i4fv$ivNF!Dui z-i4r_!t>SXb3U;U=+8Uea1d6&TSBan4y6TE@FvWuT4-YIVWY2L;%O!O13<(RYtRK# zKr6wVB^Vo_QAEK}61#1<;DjE?SB<&r);T?38~*u`_bEKD=31SzNq_AmO3xgMEkBJR zix4vTFkZ9kTeY!D`axD9`+>TY;gf4Vs?@7%BN};j;D6llFx~wkj7hu%?F*0OdFUj4$C&cz z#VHwMr%Kx#)B8aE9_e@u!MrVgXuUd`740WllrP+{m_Bl$4RFu| z{FknBMTG~Q{oO^TzRzzk{Qn(0@}IKWZ>PEc$?3WMKdP^R9gK{69h}}!!j7bj-oY)Q z8EELzs)d>^2cY~ZIG8)H;m{8(GtZuT*C1;XI5?s*Qt<0R&crm7?R?h4DXqwCrI>e)`yy{=!>iZz7%9`;OvO|Ik`%f(!lV z2M1c7A7uLzh~XK%98hq^dJNInAN`le%E<0Q+2-#NAPC|A;4=EZeoevQr`i7)1~j)F zR4vfHa_84Gl2%dTkgtZV^EG~}jy~82xY)``>1~NwnD@P!pJv~1 zv7Jr)`gh}C2)Yp^1l54Z1kD_nj0j_-G?73b0qzM|9-4#2N_MPHJO^d@<6SuiT~%~K z3w(|Q{RdWAg43dWr2SHa9>}Z-@qkw%<4Yp80g4KS%Dt(~w*+?hzVK?e1!~^Xe5rxG zA~6N(#_@ z9YWLOYM7Y4#-&9eE@}6m$gZ&{4}e_9pP@dVJqqiygbU_gp?UfeDCgMH&fq4Lcl4b# zk=Q67_nM{WfYl8SYY5w$aj7PB5Za&f``W8ok#;VRc$nBVZ+R@WY}id^y){wjMEcm zr}$1y80kQ~5e;gkLzgkJuk#pW1|Z9f>|k(j9LXCi=Y68V`$pwrTQY zPaa&!MKt>m&OuQJ8M@XzSG0xonPV7QK8f880?OR%pYmM6`E>gl z-(cU)6)JbsPjkg5NPY4^gmSsQo*$G&INWwgW`BL1A+riZl8kci06_IA7i+dql?gWr z-HpqCj~G0$d#|u@7j!LD=Zyw#g`l=#n_3eyE?jf09_`$l?Hz*@dPC{o-ns93rX^_# zE^dVM_6Xf*4-X6p>R84-5*(<%h>{=e{0kn` zL%u=EJ&*!rJge2mSLQaNtOh6go)?GD}baMsM-!K8j>rS=%5m3BJ< z!wchLD4;EKA}yiyhmIe`Ld^+bG;v0?i5La61S-X3xqbckA!eOJ;10A0@Fch{MQS`< zSM{;I;$~@{Tl#cs)H>Ogc!K!5q1ddF)@VjFsuLQw8i0(Gfmqn>D#+-{&i`l*9=l0h*>7D5B1B*;FtB}ZQ2j}`yVXa|N z=06;Tam6P;Lf|iP*~4tFmv{7E6koW8BX8R+%Z*43Eq2CFI@T8L6LJ;OYpmmw-2>jI zjoO$wdOA5#mbIsc<4})<`P6i;SQ^wO39m9^@OKO0;spDTgJ^8vW~;+b)~31~Y1Zb*fh>P5FC%!+}|IXL{ z*5nGy{$Be|d|R&p{_hj|e?+~D+q*h@{g0_n4PJ3s3FFfq*G_YKIH)2L!SxU)8SD_4 zJ~bT5y#OI<62r1fQ(V$gavAf1RJ<5a2rE()^E2G_mVripq1!$Q`pB8 z+x4v);uMCjFm3m9D%E>HS+m_6=k}smG_X)F+ihIi1^i3uhoOi5w4u|C&MeuwR(5D- z#+aXa?S7>==-b0lsoz7b6?d5~M_%f4t;`Sq)Q{~l)$$r^295E1i$;cvp(89EZeD(i z2oWfQ;+mhIV}E*r#X(`{+X#)i4a$e_WNyk{GO%#$k+Bxqdb$i7^EUX;uQ#|RTQ4RG z6eW?pwRKf)mBz_q;1DS24C`*Lb@~GDt>;Run0|Z4m$P(ifsH1uFwglfKKKJ#4<0;M=NzEh4 zU7X+_?EG0ZFE4J9t+Gpj5uqO&od%Cyj#3-3OQROI$$EbPrj0KdgcGYSlL0eN#+Xb% zk*4r9oqm1_B~7Hmb=p8u{`Fs~H)f)OK-|9NO{w4VCX)Ya6aUYKJ*w&BtG1f^mB$yK zohc{fxifIAj0S;_JYp%f1{E8IBSR0%P-yf6pL&uaM!|e36Lue76IQUH_DNYcVM6<*4L@;ILLyhWs31U^oVPf3 z)EY;nJ*^<{i7QpT88wp@X5^a)=ifdWuqHNQI(-<)wW}m9S*R7&7hKM!AJS+~Z@la<*}`ws5w! z)YOhmE3>|o!f${&%SoxhHX>{!Sg5a=yK z+eGrZoX<5^m2U8=dQ)OSw9|Enb;xUC!HaoWCxq+ayvce8R>+gBwWK;6t9k{;42V=~ zi4|ApH+C)S#}+j#U)@ZwlEahUppv6K>W?}h7p-OomKCM_?c^ASxL1)hPmOaVc2N;0 z?c%Of>tPpvlbUTK0Xdj9C6*3lqI#G%Srm(Aot#XlGMr`~>qEH^6gd+miy|WF!>QHs zR2E@LiOZ&{9VJnwhCl5SjSz9l_2fiHz_qmwvomOm2Wa3?BwETsujkFoooxJ?R+`xI9n+J8t>$Mck7P&B8oz}MF>C=|Z+mxgo zP&6tEuz{*U#m-9w>txO34f?yC$i~VTW9x57{v;tX$ZhH+%AbS4VJ{bcxM(Cc;82S^Ub8y=o*c6f z#_CSUf?E}~iGAzg&~WoO!?`@Q-O-P}S_!_1wuJ0PDL*Vj@4hzxYh9GHox2@#~12tiIaEkushIvg$^?BacG zVWl)P_#=v5w{WK@*b~R)`+|`6dOPo#tg|#{A1x*#FeqiiO7qX=Pu^2`r%)pOB}^(y z-OF$DQJPDnap|M9lH2?jN5n4IkCll0gEO#ZAqCL17>Cze_??sCSj*=F!&_Nm|FCR7 zPhF(`G@o}wf4cR5a}mExE0Mq8zHQ@7IA3nXDSS6zrarhn1|w$gU79g`yD@yB*WMa1 z8OmS7|4LoloO`ZEJU1*wd@uRqko{hYf4+LqUdl*+qVJ*7@IKVRc<9_0#fh;JUC9Bw zjR9~fiRgWUHGe2A?iL|=KW7?dlKg1_kem$jffe+B(A{*}N0MYs{w>zUP~u{7j=;E< z!`bDD|6APC((KSB~#`{v|+c#*fTIRSV#4O?=gf8B)wV zm(NwDJ>3`YGWVLurpR8s$@|0u&e)tZkN?)OoR()Y-7d zP3Q|l={5bz2=ZF@>!x5@W8fqVw4v>!4PH~xj!%QdQOhj%Xu}(GYt6tJnDc8Zh~2a% zUMX!q+4Z8)R*qQT-&Gx_w#GYEvACYh{Zt*&xSz~ZRUOvYp3G^Fe0a?oT%Gmi>bIpW zpnlitw4ZI#IhhSJU}ZbVmp zBU;zN~c4O|*wz1+L4)zv^ni<~KD_oHa!X3yPWV_Lx^5FscZ2|Q|t5`0*Cx-3p zG{cYv;=O77>t;BIZHP|Qh_a)GKYXx6TcW}r%{Y$nAQ(jO9 zH);yPA-?}JPTR}wRE2N9F5Uxu#>#87xwhsmVAgR)lNg@=-V|ZF1Q%=e_G*NZDx%z- zfAp%-o^T`wqjT=^c}Wba$9vriTG9XfIm=uQ>Gls^s6}Ah>-NK=cXRM%(f&JRbeuGgq?x0~$#QDZQ-k|-%z?Z;)ub7*|dTvI39Q0)tM)M;d6H)^#+1qHXAmYgC zThYZZbh2pTD2n$@L{I&lP_7Y%4o%xZ#Zi4vSzpM06y(En6KH=*_anPTqIBPK>q6|y-=KGB$=Ebdkq05H$N;MmJeG+wz{G?!Tq)dkF1(tmy& ze;ckx-rL%YEoBo{ z$hJO!UL@+NFENgV{&^e{}(wk^h1}^-oGrjDSR*dc8J#b0M%;(JDFKrPPj26oG0c$ z=3v~b2uA)8y$3RdoN7)ur_sGRBV?8=ur{U@S`3khVjf8u*n22~5cTS*qgRsC6|9gY zy7QC&_slGx8ovyQgso(JNl`*G{t76-g3I}IKe0=3v^Y89$N)2*5pq}_3jv=VCwv}Z z*bXlI^~;dN_N{}2o(cvLqA-z!o)ktCCDe>tl75{3jz_IA&{wBsh;=dCpb^VY?jQc> zYKOY(z5?oyUs1#ly`VpbI#*ch2is&KB;Ix?bCV#(K*XU2#3ANy9di(~ZOHd=8;Lk% zj~^=EF$!i(y*|Nt^O7m-`6I~jzz++q)k2(fJfAI2Z}=bcj%%{e*%w&agyitjY&3)u zxp8MygDn|-J4)JYs2M!nbS_L}Z3UL$kjmN><{^=1Vl zhv5|&{kMCeC&v3kzz<*e;X{@llD|ikcOAj!0A5F0ss{oa60K&hxYB{QF2pq_{F)<( zOAW~Xesjz+h}SxZ*EYCit9f~%(V8dIzz@n2%~N^LZy^#gN{obV&qqHy$@vD}0FgI&J`(kZ^RGt!F2p79cH?i1PgFSF8MG>k z$Mz`nSb_g7Q@5zzT%Ukh+^D|ML_Hi}sTNA`=m*7$T=seGd0bOxV){&KP4D0BgIUp; zX(Bt0JKTZw0EJS`5*k14AMRU}+po`n55Nq*sdqx#fzpg|NmHFa{<22XSxKKtokVWX-Jdg$B&7XHk4U+N&Z`-9XI=|=4 znjY9Wg%!~>DnI2%55&Xwqz%CTRN#nGXnSh~U?KD|X{^8N_$H-q_(d@9&QXL1aZTd zg}VkzjKyd=$rhq1Z!ws~25ZYzcI%1~A69!Otc9v294bjJIdj2$$*TNoODOju-j!E= zTkfITso&?P@Tui^mji1Ns9M3PF=Zj*dJ^%DbybD6=)deSNZ7aC}SZMX-4$It@ zMcO-lhW(hpW=`HS3TgooUgYRCQ7|I+C9k(|OTT4>_>FU21!o|S{aagL#GgmP#{F*2 zx4dMm#bSk=+l=pqctFg3;p9D}ptyBGOD!Nj4+A#8brDhIGN>>gB|X1=0m<@N6l>75 zC@vwho|iWpvm+omG(L=gD>_CO7h*WQuvRz8GoaxBg%#<@RcJ;_gzW3|ba<8fC z*PeVg=k?}Bw+k}4WD=||F3$@4f{M0Z58HK6Q|0muCHLym_KCvJ#Uf%Q9Y}MZr`VI)@X%h#IaJF`p81A+deF)~TNi)cpm9%WVR*iVXVTyvF)cF?O8$0dd<9VNs+GM6R#ofo%VhsB>T z0>{mPl{oh662C{J^pi=P(euV9W>TOUD~@e`@2BTS7dDa29F`;K`0DMjz8vUcY7S+UdMqqw@qrAPjZ; zWO9J+MF{?ka&J`1^5vZK zG7R-!&iRD%?I8g!G7jJ@;dkKmLh&bh{k$_IcNbT%OC66ACawkTYJpvmu(@+x;I&@I z4hUC<&l9Z~7ZNXXcaVx|>lbVFzro1l^ZnSVKK21(7`gxtA84?nOw&rK_n&A6VVe}> zzLX6cX!h;KjxXlH4df)tdAM2rN$+EAexRqggwzxca5Tx|UGdTocVPE^4<7!HBFBaA zm7z#VJcOasZwCdSIE3Mq$~Cw}h^`rJDg>+Kq_x&i56(J)y=%$AtECx@c{4+JTQr2$ zLsJSfA^Q!6*t;R9&~`<$T~A+PhFZUni?B|bzC@?c4Pf?f(6ndLXa5+~_8L4${wTPP zlDQy=a8-zqM9n2|<)4bFZusnpl9%f**W;YIra+Plv4;ZXMOrd#Nf;|kR8-J6upSbMbckU}wq-M5kDYI;|VK)d1@Oy$%o;~k9s zolLGr{c>ztF>MVV1wqa zFZ|B%QISzX>8kEbKWadAk5>rbc!5dNsc5;MO;gH#`ey?CMQw7NRkZVOG)?F3mWHee{Ees(%a-MzMZS5AEb?acB|nWd!J)BK;-MqE>tc^v`&52eBVHu5!r6kWI$O zf13xCdnH)1YeUy*1KQRsQ*RXwt3tP&kSNv!{qDxOe|UO@2(6U$+&m$+X!W2l9s5Md z2xuI1YbxDUED+ynneD%RK4?JvV;Y@;u5h|dA>(%wUrRCXJhMJ`XdNs@J45|P=&}D=6Ohg`D!%d61@;K|9lG;*N>XCke0)VbA$#Q+!>8=$c}BHCiL_4~%p;Wp`l|)N0Cph1)n9bJ9a9 zYslEVJf;gg)%FJ$fL=ASq9#<5DRJI#C>M5*o5U+>?p)3ytwi@&&?PbTWDzV)v9#t# z673Qv>qLrlJ&*tae@UlWb~;GJ$_-oY&Eh1L8V+1n4i0T~tjFc&Df3TGDOA5=i$|lC zXxoR$E=w!}iC%sBy44`_e)_tte}z8`^Ji$YWW{F9PkvfVPfP-g#+(5bskd&BuiB{x z+j=lIWgDw_o$B!D*_6#XqRg$~Mz`X%F23k{*mU?kJ&$M%UBcH1&v*j*7EkFHv>`8IA%coabKcGI!!BsL3@yR^B4aC5Ol27qW#4p;(TgUUfI(q~>d0 zhQ1#P3q1;yY%!M*2b`r^i!^K#L(u(mO8WG_Q7=mf*2L}G!qOV-Va)g#ECirNRm6l* z&;_elBh_(7s$5NqIKY0v-yBK;6`a2171~7o-REx3oxlQ!8^|VF^pXq^v!X_&>*USzg26gvECo8I8W55`UhhC<}ppe9%7kXihTjb3^8fy5xk98 zy*h1#X`fO(qdhNOs(GhQ?VPMzZMxqY0?0~sS|Vn88rJolV$*IsG;Q-qbmP07yT1VH zmjxx&v6c>ey=Y?M+kKgUnktosAN$0E6YAn9@zDXl@ZfCNC-dt&Uifd z^8?Gi-v|G6?d0$bjevN<;oLIP?n$GyN;F%qQxk5a4y3;)`@L zKeKu$oeE_NLaPVBrO{?z@Iq=NR7j|nju{w9ncx8ks96) zhaWbOfHl0MtZLDw=&7*$p_dM+X)&`G1~Qo+e*^yaEfMF^j>at(2#5gd{~_X3&CAj3 ze{G2VLxioiy84yBxi@ngXl$g_)G(P8OA$y0EJ6_jH%=tMaWqbnOA4Bl%aGI3LqSCu zjqXrWt_qf|Y2`%Xh$maz>yEi)vBIq(j`a-EM8FT?Vk`8O233~CB}VWrdd?-2d*tXbO)_URuS+M{#fvNPa;p}t z@Z=v%*mLU^U6uJniP*$F)A;8W&gGb>mTbLvWQi=MP2(h7dT9#b&R8CV3g?o?dB_BR z$)CY}@n`m{6hkgCKAPaEOFJaWHE9)78q6e#&li>6a~l?$8RSs1qE~K-PG5j=)uPPF zcE7 zYy#C?`?8BfVyspU%bu2E;d^C@HJB(XmS>mt4$E{)duQbhQ~$bi?UMcxsU^2E-WH+WG2qMH0F@ECdN--mxJy=@uG=e zOg?C7nyE5j`sB#2j9Oy@ryjusk6T|jrlgk$Bgz_~hDT4tzK~L-PyzvM0jE*Tqdm7v z5ZBhq7!|&h_N=lZga+g^m%EYfM~5=2s)?oz%S#yo1lKe9Wazwe7sjK%b#yjrQDDS0 zu>wnds<*C<7th8FgEyc*lKV36S+&1d3Af??q= zVZY=e6X93cmlQL8O{pftjY3rFo{TMJ+A3z`-T zF{|MvG$4+Qy||*{#8fjx>DvKV4)ivsQPv^Zu~NEyos_Pi9wWtwcUsM;mPhb!T|En6 z=8|er@3mkfsgc?=Y!X;Hh>jE+Six<=Lq5{r2akQ=ineP>Tdjp%5Y3l#Lt~Tos_{s-2sBc#;d}YM2h%fmX`Nn7MtR z6vYZo%uHo9d}|w#W~2qI1o}b2Eo&H+_J$hn?f@fZ(8-{uDNQ2n&5qG=@C6nUpL9*n z;=-6~3lc*Geap@)hWUI$32JW$JQl{^-J+Jj5E@ijaa$5y&8_*Mt3d(WQc4^L#JiNx z1FY%Fni~4!5oyex-*1kl8KaS=TbMSMmWX#iI<#m`sx0m}>yTQ6D6Uv^*-m(kd3oB3 zldEoTM)-IC9RCA|e+U7GRaZ>DZ8*@&>ORqxQr`1=ek#Ct%ENgIOD%Jj;JdwX_Vaun*c<14#4JGaPMSrTv4{? zWXV!Pa)-_swHY>ttejrIRcGvRvse8U_RGEaEhZ9idbk zS@C2ALeD(rx9Ju%33DnEN_M6dBbd>n#*VmhC$aKzn#v;sf`tndzwF}LbOSuJH`7X#0j~2;*qIt`z(Zp@#_EQa-eZgci@;a`*N#FUlXw;+Py`ow%4*#wm4O9WUprXWnaxx)GxF@0a) zy_ATj-S`(}yBjm}u1dwV>y8={S|59djCauaadD?pyP&yey9{MD6_AQqowM9}syWo# z%kM8N9u;#x!^lI)>V{-z0X=FWRqTGOYUX;2$6F=K{TD*KevI!vhj$U`W`?a21no15 zVVyZmvaD!%YbZec@;u47x@e>96eY?`>Z|)QPupTW>ZYj)B7me@@rp4z+?z&bT39(< zOCJM{Rci2p$p`=o#$`@_+;y+OAk-l)=t*0S1G zW;1kz5f56e60L42(K{)i*-%P}aWX8J9>nLL$X7C;(yz`^6@543{nN#UY~-2KhlXgr z1}eSDRgpvMo|0?X;BShrH1l6HVp|s4;sr8?#0p$Sf!4Z}cE7sO3s!EUNu&6Nq|!l8 zskp$r-3`@;Ch*cgb7A$$^--M;9i}ENsZvO3p6TIZ$B~Y=X9uLQb@lev7Drx~)#{4< z+7lFjMYX5YZf=Wb1tnU_27!)}@qyv%=Mr^!$=Y)KdNch>6+nNelG??}aJ5|F`TjJL zT1PYd1j+(8&bAdRZY_dyvK&+vHm-ayQ$xZ;ML-$}iA%!tPO093XbfqiZ`T zn)edUdHVp4>~Nl6sK(}tKQzV|oG$5q2g}AZAK?0TVK@=wos`?d?DM_UfkoWFpYAVf z>3IH2T8QR7@Q2EaGXN0HD=i{3?TeQlQugd-1+v zIzGy1Z$O;$n_sb@91#WW!=ot*2s_XgPLgPXroqBM8H0fWG-rOqfY{!SF7yyS&vO*4 z9`xc4Y!pgSL`u+7ih`6EBvUQ<#$NQ{Zf242V^=bdyAmP+FGAoJOL)NR2YzEk3A$3{3&Ea19Ix`z)U-6aiD(%mgBEscO6-Q5i$Al=>F-7VcE zBHi7M2nz3YcXbyR-RJ*~pC1>2`Q9_n2=#IQi6apqKx>aym5`mzL- ztC0^~@sWd0)XMkoKfS8@{ypfSHr&RhNpHs|l@mzvPDBQ1KJD$)$8XtGuB1%gjZ9@| zzT)EDh+picHFsF$nR~a7@9LR&M0n6C+C;!BYp&Woru0^^==hp@0OHJ`neR<&?&bvzK{~1;k|Xu7t2Pms9!SKIabZmB!k1Y*LH;ZpFUj+iIzw=0 zn@1za_nwWp=;K2Nr}m77vR6jJXZD3auL&{KKNnFI`66vV9*lM>(WEz1o=k&bvKewV z=Zq0B<(q+5d(aa{5+Hh@tpkxitQGYkXskrBa)fuMwc4q4bh|Nok8CO)16!4j2UAQ0q&>I# zoNEu2|LH6fE36!@m!db*3R41=KKx0>TNuV1Itj27)&+*#)}-1>5Jo{zMlVn-I?uJ! zAegY50;UR_TqT?=G)(QcVJQRlr{LIU=1DGFh)-h+i^x+ z7r-z#Pa)JzTy4-~pzt^FpL%%XGW%h6w)rs>=a93pg({{j_-u=Ug?!2JtkF-sSCPWV@G>s*Qd*{r zndQgGuHC^@Z^t=v(=Y&4T4CFRf%gu34(uh+f2?K$xxX^xUMpaX;oifOxZ~E#!*x5` zcD-wEKPxI}SN4I~XZ27DH@8Bm&8pTbvvKPgL;w!Na@+&!otVU14^KF#Fu$?Tw!z)@ zpqA$vix~ZOaC%IFSU%D;P|uSDN!!xj`@X0`-W+{GojFwZmR6MbrPq)xX-)YYZ389z zx=Im4I<-(R^!ig%X~FtLrVTQf{&^#EhurkJWMAu8@Fy+o15@mXo-y|VNxoMA~+h79rl@Ui0!Xcl}Su%c5+@5 zDo-0@>>Jf$kT;T8g|w$mxhKx#d$1ONPRf2cSA*MKlt7!59>igd6#G`@G}khGoTUG3a{v6ue$uQ$4CdiGsG~ldAdQ7Oq}{?Y$I5sZ~@6TjIGY zNZy%1WLu{0F`6W2i!R#+c!P0eS+QCj3gA5oBLV^H+K>ae!jz$!(5L7(8Atej9D97n z(XleEXeczs6VG|TpxF|RC~gYEE^%(miNfi3%TSABlG|8c%a*pLZ6#gGD^1rxH!GFmU4hD>y`u-Ger-xr2}W5V{QD@b*uTE!Ej)l6rC1t^B_{w>*zDe zooyB&6KsJNS*Zeg%-L^#2and9>LqaPelKeUbhBv{t zap}kOp^@RIiti1lA-~cO7c2+d?q%jP6OG9Yjxm;yk4$%ZSeGOpoZ9IO@2znA(s{t< zq8)!$>*Arpqk567u^Dv&0l6a+E@82PcEzEL)w&ej(nmI`wtZ%et#(#!ZO;27=OyQ& zBy&CahVF^K^)|+3sgXnV3qMN==E<{y)(q6ssVy7K6Y1(Sn?@^*kuE*YJyqw>(|6ZN z%kGio2Ho^g-4n~Ov=c$l34_q$P7ge?w_HG18K0<)x>WeU&W1M6GbM)0^XV#kbZ&O{ zV9KOg#-H~Dy^#3qOj_(`s*Z-;vuwvLUZFqv__e?SZz7@yuxk%;BSDG1f=$VQ!(1RJ zs3=NcU8gbMMT#xPqW88D%9HW|gvYgxIW})jp{Ue4W<=QcyX@WfyCYV(FI3)@J2+jJ zLq0&D{lM+y&@P52KGsaWh84?+@CvSW^H5MaJQH<5PU#5kQ=Y_27LyT)?IF}+o}19q z3D7gPx-9~@HiM)0d}FD+n|Zgd*={{J@I$n+hJ3XX@v>RT^k>!MbZl1D6ER>-zn0DA ztjf)T6jj0tBo2iJ*MOK;!FSNqEKeEWc!Aa6a=#kr5v&P!>|})ro$bzY=zGAMg@?-! zanjH$_8>2?bTYMo-1^jK_ANup8yj$1t4RXHNVWZRzdC&8?gT$-rzw7o9RuI4@glK^ zTOuZe0N3o63Tf(1!z0aihzNc@3c82g0hGg@R2b2hbbCTWyl^~0iY%n6{vLK@v~t38 zU3mMJ%EvtGaxI^*)-POX>)|e+SW>qud8(@+ch3Ycj48dgo+VM3%6ZjN9Hf;H-KMQtc)+581@Ehv`7Vy@gIzbV6&&i65b6 z#z`UAiXN(_2=+tL8F+se1J7GJM1k{DZ~@yyO*F%2JFu?}BCUeoFC3rqz3JjTB=jTj3tPU63zz?UFIJz*iH?N&e_ zlfg0}qdPbe!!YR^RL`nESWTf*GK6LG68OP7a0zFaj21Hurvq2U)`Y3aqXSoyn=6c% zqMR#)J5cJHPgp_V8CHhycCka5edAKyHlI^BD>r8nF-1FP0(W5FHJ`F_@Ju_`(gAZW zIiQiLtC`jRWqb3-r31OSmlOwfV(N5ryKo2R0WNLo0s40e(i^zbXkR-Y}^F? zzx`%+-lhF~!8PMt&bQElV>p)7+hrHJ{%h!flm)7V+|ACH>Tb*fwoAe78zc{%27(K= z?CaexCgWfAJxJz5KWA>=ID1GmEbfHnUOx&s(~RFxWq~@rSvOWB!a9kZ$ z^r}?Mh6Z#Ts!@p@McFp%%I~*Oi0g zRr1=fdri~JShS}Fc8k0Q9vRnk)2Wf`!|T+HI-4+8`cQxLU`$haY|Tjj;*~AqyBBHp zjL%h<92u8XAG|zx|S=n=jbkkDlM| z3a?%FbC}VtKpP?2)!|8Uas;(_#+FgkQL|JF6#~Bz#uGe&&pMBL24+-?ITTx;)6gm? z21V{7(Mv6y zdBs{j(b#m^=VA|pt>jqiQm1?hKC~$z#50_3=4#e}vH2c3sV6o7{LG>x$Tzc}6+X~( zpnU3456Y~Rim?mY=B$Qb^}ZA>?QIC`o_BdWFIM4RrDge7b#?91?(7SR^6nM{{%esB zGo}2=ZiqYk4urZEqM2Wvn5P#-r}$NNF@5Ypn2@cCL@ITdGD2p@+SgB^FI)fSu19lL)kGO_*C&RQ-8MaLOmoxy`NILT0P->t3n_ zmNEo57|ZTWuCS-=cYU4VaeVFqwLhcd_{;@Hb5f(5t%_hZT!Cie@?A|bRSRU@a6ke& z0hi|kxq$J}+n-+3E^!1xIj~{r5O4N_;xI@(O|AUIdwrbjc5+d#tN})k z$2TDIaJGU0d$y7Ro~vTHGugOq+=s5Pjh3w?v(2 zQj-PpgLf4-!7>b!NmzQVJ z&g09NCQ0lJbfr)l^q@$s0S^tE#Vi$< zvvU(T=lJ){oSTcwGll67BG9ApXlTmqOVn&B1b1iGp|D>OOMOv1#@H-XU1Er4Rfbl& zMU}gusF#*UDE@$pQx##kLTMw<{i1?0e8w-xfurMJTu6y%O6Ur&DB=hicHEe zB#M8_^kB$Hje1OS$o%kawMD7SMkB@*^kY+W&(iYSgnDs)ONJaK{6 zh~`~P_zEkWh#@O45O2^&pu6D+z>RxOqhu}5O%a`~B*U3vw`$~MMn3G@o*#oFYII7_ zHWfj*;h(M6!7iRIp(i0Z(rp~_W93j?kbx^}NHgbGmlkZWbe-5`fBCeXfP(1m83mbZ zIpfWCBsh_DyhOclwnWpk-^O(rK673I$=B^7Ui}H2UqGN79J&hzCBP_08!wl#0k?1` zR%oN{2o=#i077JAlduC`AoeXIAcexWlmY_4MR28S4 zr@4e85yvH|^M)70pRzjQAh_H%8XDrDeP`!f(fOkX^vKn|8AD`dqf~tsXSmXl<#t;^ zVYQNbFm6Xu;@rz81#t?|V)f@q3)nYJ#U0bUYMWNZQtIn@ept8?Jq6Sb4`KYgO8Cix z$>bQKKZUmsps{^pUD*(xa!onH!*f_h8Ny8Q`A$M5Zjyb1@9Y_9> zBaMrCsfab5Drb~}eQy|aULStGbWlN5&ndfe!+p6X{aHCrbcoq9AtoDJ71^v|+kRZ{ z4%q{KhC(zxaTP6S{j&FrNGq2+gsbtmBiM{7Lsr{i$1J!bSd1+(Is1~1 zo?dP;jiiLx45rWbU*--K3x?lZk5iDIGC1sbCRZbkqd3E{Z;MzlfIBXIjaTaDVpPb^ z+hwr!73)U%Q;yv%vaSo>eiaL z1w#f69vr7-(-oS^c;x}JCWV?MjAu(=Rm%=_cphsZtwh10b)QbI%-cPWiJi2n4kT#Y^7R2jh+|j+v1lW7 z%%Qkm!+&~{O{;L>%(mJ-BhOmhv&PW+Y~MPH(-k4mUyuol;NlUviJ$0l(@42V?W7B? z#tc_cOQ`y|5n0b9(G1vduTksx**g^O*E}C=5b?*Gx4l%mX&sfg7O9AjL0lcf7>?<6 z4v=#;-GVN71~V-f3J8e(+=Al4RQzaXt{?BaKxuYp&2@bCvwV1coK2Hy(Xt7O(zo3L#8N(HI_ z(>C{@-3cuhf_YYm!IQQ>|PX( z(OcJ?giDaN=M)XA%tN<=Ig?m9A7A9Ot36|Eo;fDAUE&eH=2-t4fa1~j^t0#i6-!FD zU(^YX^(~%s#34n_0@fFth0fHxiN(B058294_G^ax*45i1|0!r_N_G3^nSRh|Y)c}X zUwGeO>5k{`qj48>bop30iueUaUJu#PS|?>pQg{wkznY?<{eaA?g8SARDMN0Cn6s zhV*N!CnUp#V#Ey5aVVZo#cmySK;;7>|^#K2?s+CTQZl*Z53K2)% zBf64U?m61ZUdO!%kc03v`*v~sW_+FU6n!g(H|E*-<~dgLw%3ei zls>qDM$Zg)9u52Fm`~`lmd!F&daIO)CvpT{&cDK9>niWRaDcE_P>*<_PlMJXA-Ep|=ldjK%d|48K!we*&bA-} zg}b%z(qnU&Hwnc7`Qj!zHww|(en{K=uU<_J86t2nrk)6($)Y^xXRUt? zu1bDX7g6k8MF6g6uc0E6A6bUPPVT`Vd=lk-@+GDz^s7A$VP2imr8=aZN$zgbNVR4} zI+&$TUVV4IcSYOgS*1!{ftu3i{iZ(KQ4EIxI~WyRtvp!ptHxER*Y1t;;{LMkjU7bE zJSayTjZ1J*oPq&lf#|6^d;xv5mHH_0FRT$(`J!=mI|x2B`yztnz&u70H!NYlsrI`Wy&Z^t(ltY;K;MfUWK<54^6%0N6S5zE<|xA~~r-tVX7Qb!ZQ z-4BjIw>K{m-bV*v#RTOG>gi5xYQED*?%KQxd2j<3mzLmJ@s{%{iluu-j?5t#NrCo+OB4~Vp#N{UXq%fK{~-~t{IgN z*f0vG#FpVkqB!xF#9-*vG?5Hs%NS>CCal+)#-K(-L|XebJ>gontJiFyYg~utpftEV zFG`AGTmN(t^W}v*wMX=)H615S-tg4^+!LnHeqZK#BQ!DVPpF8=39#kY*t%Um7t2z3 zFq=ntuzegz4a)m6Z5ZB)Y4tfVJnEL-zE4yn_se{pGB3kHtW2=znn%#rlj(Q!o!m7Q zJR^>8CvyAkTdmjvQNf+$gNqF(ST^uGT>YoZCwn(cp3bXZ!(l8wEO6ao+@sd}03X|h z@!ALNBY^>D`4L#nvy=p5J!5DO&58x7HcN}#XYa<~m3)a!*Bh!l zh~KR+MSjukEzBQ0sP!|`RjCs>)-XHK4^wLz@I9g(JlcqP{@iSvpWjpaLMJIcerF(sJGUuH(G)r%TG(%J|Pw}`m(}c;!9>sJi^paz;;qG4eDm}ren~d zR>E{IV(!+7M(*S!ev=qXg~awGZ9XojSOnA_OL;6u{`d`Yw|qA{ZgW-4_qyO}f*trkdg3@TM3 zvx?NRQ%%t17PP4l-wb`Si+gnthjA8T*P-RXx)sbDQk3S<9IhdR3^o)NBL+(>em73%r+=a+#&T@SQNG0d-Eev0)at zip7VW4(T*Gja{$&0OC`xe3%@yOWcWSN|WuuMdl|a4q(J5IU7EqnOnkZ1mhz^ZLOwn zrWevDrmk-9E>SzDrNo*?1pyHu{l!~5iq^meDmuXCVY+|5wG*xKZIN32t%pMlmzw<( zdKCJ-K1ppAUF-}~{=6|H1r+A77`Q$pB0^L$RHQ0%;ldUr;aOf}3FPqO{L8;YHaYLY9jxM4O{1XPz|Y#q*`I3}@A5?o1UAne!BuV>bfn9-9IuaTZ90 z(H1}+jv1?NbQOHdfP1Thh>)Pv&kp!nJKL-$BVp!@~^)jF31iw z8ecjTd~PyY)hJ|6ffU}1xIUs znW9!c>1fE}>KLT*7XJkCV@*7=^2*%C)E!&<+?6>qp+{z5qT2aFa^WTZ=g=Y^o#}bE zx=pDTuVu;ba@=37_t&kgmeUqyl-24km6pP?Xj7lV$Bk+-Igw| z^<*qDBOnjcL#jO2(Jc^iszLpc@e`#oU7KW)<>wO2!PVQgFzb7V3rHh# zm0g<8W5JA@K80?=2O$(F_S#x+WYIK#1#@#lBVWkJdkoD)xehZ46VQVSg#kg0h9I$W zP|Hms*%fHs%rmHV8}=yzhKkLEMt3MnlWK(LD0J z3N*=&FMnfXZTx*xUIVMAL>aXw$rYGkhk?R4E%}hyEa(?-g1Ac)5P}tpCpY--ZkGu_ zzn~hSiasRe;C>Dw${_)4==9zbbEgaW-TVsNE1Vk0PEzxUIMCy_Y@Rq>7)Y%TA40ui zI)HwbvId#;6h^W18U4X+wS-+u-~+iL?AWL{Mxw|36fAnWPeuG?EU(JPSxiol0`?MR)QY_Ei&g-&ZMrh5CIoFge=QhdyK) zIVjdmuU2~a8z@j8Fd|EUF^WAY^pQuKgqcuy@8l}fkQQan8*ML6#sG(zJxcmQl)QwU zH|oWue$e7uLTl!$7~K^{^)gs=Gy>p&wMX2*iVctg0UcFeb> zJ;y-2K|+AW;2Q8WmWhU<>ZIMbWI>3r1LXTN`Fw_+cJB>QDOO!Y%`JVpqJ2;F6zgJ1Ud-CcEh4J9j zjEV8ufu)!u8mgI74bw_As8nnYoR&9eCLzA$Rofn$}kG8dG-m^#7O$9wdNTtK2n1wwR5-F6istIH= zxTcP=@lnp^en#*pLX!d z`U)g_CjZbGO!m`bN~rWl7pzu?=v$tta!=|UlIlvkYRgdOg?c%rf(OJ5B6j$-v%OW! zavlz4ot~gsq(Pc&)x8Bjv*xiK=|*sQWFK%0dSwYNyQ*kZ9h}keLEKY;P1y*ICZviL zFM>1oLw!)*EHVq8tjwq&dGK6FZ3q9zV*wakL=)GR!PLlBu`kW<7IklkE)KEwt3A2A zQ_>p8r}L3)5V^Z@vt{v_*)qv-ZMkN>c~!5sn46>AiGlsXl}9rj5I7Kt`B1EV)x9wz zHxwHYGKHFv1aF@8D!O9#(8!MGDStR%-a$K*OH5q2T!T-#fG~QPRA5&*zeU(D5YWeM zry`-7GWW>IG^Q6nFjKP?UfVQzH!iH2zc#xNyZTkslfEM^tK`VtGs1#Y$qvyEi$;>K19Jn_PjJ_+CX^-4~EDyjD2S5z0fFW)m`h9ILz#cDnr}F zA}iVk11C4S{m;fY<8G`uIMoDmq2p?P&owq9IBP$|XAaC{ri{UK@{iazVIeph2)PNf zW1qdW$ptqtUd1e_ovJITuxjq>wrg!TwqoVx-qGW3CMQ4@Fkh+RTtkRwHJ9>H8*it1 znHj7`DuEqKxziLzwT08!$&5`SVm?G3JWZ&qRi6@veAX}%{cbsos%eZW%9-v-yfXf7 zt;PE{yone+8)avN0&>>-22Yq4cB_wQj0WOptDC))vnGMk_~8 zEhJ_<9)d@YD0DVM+aK9l*h);>qa8)ObWok1oZWF35te@T zmCS~?mnP^{?faA#p+h$uk%4_oDu-7IrtPNnsGI#SRiQUk1>gclQfPQxVlLf3a#OBa zkERZGCJ(+$s*3OrBDJE_C#k%~u?yu2E7=U`6snc5 z!w?Q9+P&9xHs2M#_X(?!m{MQ2Xae~hTQ-$=XEBs1KP}!4RFrvyb-5U&Oe${dQye^> z{;cIx%`&7Jjz;duq9HR~oI#=|8`{#x)C~BCD(WBHi6mOYWjB4u-#ymP99UUn9mff_`2g)VDk1ON31m%)Vn)P~OL1YJ(%Nwv+C(i}i%E64!Xx;IMj(PNxP} zc$81SC%n~Qy0*GC!uTW~!Ew)&__dRoEK+$+rMFZI4D08aeuHPK_$%i;B%uYl@MVjy z9`ziMmet5%X_A%I=mhLNt>*S*TH`NqhLUx{tX#ukSHtg8SGqhu!F<$@&)mmml@7No zH|>|W4q_f_vCQlAz=-3m=o%Mh1le(vE5=CQxT9=Jx{pWbqZ_v`LMa9_rw_)HV~-^%6mtHH&!MhKtaTopL1J#bQ< zS#x+#aoA_2%_59DK83^(bIt*g3}O8B=s* zx^4E#$0;V{MYh<7>sVLusk*G$Df~hexC-s2M@jl^>bAIFA5`pDuyb>6nJZVn#?s9? zg_L@t!WC9aU{~B_0KdHF&0k4h0k257InG`@SiR$!JB)>23{>?u{d;L#J95MNnG!Gq ziQ|`^XOT6_82q(`$st>ILyObq%EUh9*IQXlJ~#)WvV)fKl)MpoE6R@gtTIO6&Y)jkW&2OWBuY^m^~CG*SCh++3a<7?bH4b%+!&l0u78wtmS!10iX+$91>Z z%ui(J!!`3;gZa>QQ+fp5^7s$9XK2e`O$Ol;tGq7jbRErG+UrYgP-D^HL#5WIo|I5f z*KI^nPZ?IciU-1;64Hn#TSmAUKBB(jK6)DFX(wryTmmoqjPVyVAF;&-S>*EAAj&#b{LUdNomN%nwAK9@ zgLa{haE?5Wo%Wc_JIA}F9LFvnxEsy|IRvR46FT8Cn4|hxHP!_+W_4Z$JPdART67eL zLIr1rY#aBzhL)l;ei5(sxLDgP1H`Ceqi@`{U>MH=*q6MhlwIQ^Ka49xB?T&1m5x&N zgfo0^Ur`P9Q>BUvXU~a>_BrV+GsEGs*4NITR>zB%36ori*lP{E#!WojnQd3Jm-xzH zc9@FF>ShCJYd>k;og2(^QGAX25Cp^t@)zeKE86O_|9QfIfStbn_k*~7)E* zU1n#a1sYp}>}&_2?ZK6&HgM@#x8JeLx6!ltU>(~x?$es@H#G{z#QFPY#2FHWzOuxQ zeBui!r7Q6vPloq$BM^~ye_qImfza1;k)w7uA!keKpuW|no>K0Anb2Z z`QMC{uKGXb-YV@tfP1#v_qdq9o`^gkJ)aiEJ*_%Q71=5o^Y7YwN!9 zjR;g}`!Y%l8r~DR`r?<@3re^&fJ}Q>^%y+K<^94#s~@ zVj3Vpe;JsI#+F?XlRcfY;$xE|kENJKv+(uk;9=5h7ot%GZ&6=!nv|#^Ij^bWB}c8k z6xP%l-SeRd;frTJNcI_uY1#H4kcjePqg0?=kPy>BgWrq$jFJ@VSG_4i^hXjQ&4v{7 z8ou2xd8$h_w>=1MlQ8tQTl6;bf|HfHxFJAV`bAu2{;{5Y7~;6xV$S62H0&#$(vKlEi!@$Xc#Me-vvV3%g0K*lw~eht<9jC zB#}eY=xYg~%RIj{@;S^!wCX(6HGS4iiH(}T9V)`9gmy-p&h>_sWX&eM4AzZ*i#DAL z<)ks}KtLIKp4ip_9Ul56zdHs6QoYRD0;N6*sE;8nV|n}rC8u#V1uE>LvB<|N7{{6c zA|gt(1E-Zma)}%cY9Fz~QzFt-%g!r#wP(HfYfhkQwBELEV2=2G_6|9%4PK#_UU`_( zMiHciJE9F^q-%v;y6mLhiPaPgt=>k$+bwbVX3M}4tM&-yqt=p(?h%vz5ta2NeC51*q>@Oq^)V4yE1v1{fj zmDiLvW2p`#(y~a{za)M-gqub&iN0B2c|&>CN2&sB@+`LwQ?tsmaPW!ay)xCA+Q1d0 zW3l>IT?)R`54Q!B^@vnSZhD*e>k655`x7^l#*ZAr9EQ&cXg{-!@j2r0f3n_E4bN6$ z+Y#|ml7CUCTz+-)W6Ln$VS`pTJFrXGj|8mz1CbI|;HMFj7NIlKvez@G`yP${{m0+- z7yIdtEvyY_%`B{KwY8jRjrDA8oqm&@`hUs(2ZY8B*skmc2?_-EWj8zW6W9+}Kv;YZ zh|KhVBw1RR(K?!$4k=4mtg<4tY%1qP#U= zO3~9zblWT_YcUPH8Uh0DO263^Z-I{s9v@+Xjb)K&olYl0rBh)OBwvyKAUsHjDj-XB z<(hBf5>9GVca3DEHeurZ$jHdn=S=}%=~es+-)3!SS{zC$wAtIY znpPMO!-V*c*bFqEXg)D4T$OcPapD(2L+`%v0h9G5C1ISjQt8HAdNc%06FmrQ=_wT@ zuJ=gS@8gHKm!4EHsB_P=+cuAsnT5xVJPRvVDf8f6o>BuI)A~Xc7P4NZaO;)4l~W4NN0^~e*}YAEGO%ln^yz|8dF@YVO_LBm)BOFE?1C(m*kl;h_#|I6(w_N$q0fT zS%nLA#dExxE!m~UbeM&UlWM{3W8IwG%5MXd%4$A6F2r7i>DHc-tka(-RaYShBRfeeO|g98XS$;pn$l5w-eVA zQU$dQoP4|L^i0o0HY?l3;EoZQn+TYhyE-jzB}T43;n^&u^0qe&8y2vZNnVoZ+)!NU zm8wa}o@wUs(?k(^&iQsR^J0tasy~K>w%q85Z2iZQ=x_0nup+{THiD>9%hCh!Ag+ro7ekx$SQmNZ%2EC<+PePkF!J z-PGduvj45GZ>8n^DYuQDwY{m{@9z&R3HV1DEPo={8d~dV>Hf9=$lvq-QGoQH0Dm>B zzt;X;9gg0YUCUU@@gE{U{bBPB8k_`Hz}V`5r_uZn0R$w=>ml&dZ#Ms~!@upouWe&% zt)*itX{4_w=%i!%*Ewl_JI9}B5UM?!BmnsV_tk2nUL?4MG8t5uQ~2KP%gzUAYv4rGr7 zBm)j*`H`}`L>}LZG5D2P7Pmnj_X0!e$0&ck=<*$v<)ugXZ<4&JKC|&JrJ5KmxAy={ z&;5!JoW_cM=+{3cf6}GniC5$S}SwjnmRvbW0xeFtuzYF^wK?Fs`e&yJ-{5NXf z0#7L*-Cav|0KWK7wf_?)Y;OO}r|&lba?mDEBw)p&CmuA}^{~0>(huV3;>7oKPiwW?ne~xXkyq09{hl)BIS&A5$0tYjb zh^mS`m(#NWng$y^Wos=(rlKhbJn|5nM?q>o% z_LpMsFS${qIhHu!#E^g!Q{Ev$#N1C*FtoO?wKW9}8~@W__j4CUd0B}8&k6?mRd)>) zmv%o_5eN+Y20%yYcUaZyGE7OpNUVSo?pEXnx%Xq0^-O`LU+;I&#WFWXHvs4lXqDxT z4k8QgLjURr30T;f11lr}O#t1Z=N1;GB;UUL`QQ81L5MqRU;?P34seFMYSyXv-)?a~ zx7)22FC7qh75Gry5&co?y|zL;kOX+dH#3E`vp``=&SnH2?mM>LVky4ympuNM;HH(J~}_pQU5EJ|H8S%Ejh6$ z0ms4soZ#D(+V_;@B?2ekR$nMm0RF8(Ci<>q;F{%iefBH3xV((?uR3|-CH?^s04pD8Fz)hReflkr@qYQ@ zs}>Ar0C}_ll~Ui4kMYZId4OK+zs+=L|7!3?dxRjn3=q8l^4)l=^!0xsTl}IocB@29 zT?KFf_5H;40ETt75z4D)3W^)7yR03jS#TZB~UBwI+x4sZ@H32KyOm(uOl{o z9uaz`w|rd%B+Uf0Kn7gDr!21(P|)8=D`RJCY4;1Kdckd=f(wY54F2EjbgCBmIo4Lf{0@D8ZGiIO3*Z5Sw1NFuv9BqAM-$Sr)%&YL{K~yZsVSul0Q8H0 zp<(EMhZZ)sGy4xTb(8%ob|8+I0?qB+0M^9vJG6|pv7V0Yf500~Ridx}xf6kaa~ICf z^DDTrmJtwh4FK|ggx+VN4Rt^(`$vo*{9ZMHYnE58z&&t&TfiT*?QHdI?l&LsB6s;1 zP%lz|c8BB+u2t~2I4P}POt|>9)aP&mG;yF6yF0n{Ui2QKfRn8rzqPfNlbE~=J39-9 zvh}yvaKEtDyKc|7fLc}u2z(d);`#5;e+Gs>hm^kv>aatjw$^~XGSGgm6hU(Lp#Sh* zEgi#OgoFx0GZtCEYw0n64vgF{@1cnShd*1`SOT5}Ol2wlID6>lz$nqe^f3akQ8n-Z zMv^~Lme;u9eN>rWwTL8+MCW#Z9^-%jbGJoIF}fclXlh}jrz<9Zzg^^P^jpRNmMY-% zct6DY=9BU!_w&RpwC_j3LY(3B0iu-yCVqSerD=XY>f7nrGQSXva&?0L6rjZe%|G!S zn!e?)X@9uj{o?r-BkXqrzyYANcYz7k_XFjDS`Ex&TbSPu9G0I+A_hEV0yvQB?!;fZ z?Y+SJF=dcE#YF%{9AE&U{YL`&Odj`OB(-GlmLRz=uRN6+$GO}HOPZObz13&fWsl%I3X&LXX*7bZ|;zA5DHq~mn${{{c;zP}zsR-|#^zyS?98!%mQ zx7`(O_&?m`etWKGl*T*-YW}y8$>TeooYs2}TwX`Z{5MZjdN}-=RshPkF$C2e8h-z8 zXaaVoCcl52f;j#f2N)}W0RHfk4#a?`H~;GDe-~58$VSIn&sOjEaBK9^jxYe;27K=J z%p(VX1OGiVzc7U(2N47Wg6QWb4TeL%hTd-^*Y{z6v>Zf0rMo--BR+p0>w9eeCLxKu z*tbE+F9$m$JCjt~fbnC1X$q1%CKFx$FZTV??mfYVOaw^%zy~P&kCf$Qy>=h*kDfgc z%6?VL-ZrL7R07g@0h1_qgRRv1Z+X(do74A;xTDPGlL!>L7l@IRKLq?1zXkVxj|5s} zVW3;%bU$~{-wVVJsH)LGRegMi`{eL<-1})ipX&G>nB_J7^_R3?_p^RJ5#?{(9?XM( z*P*-Tqx{@y`+3K>zhPKJ_rUJ#ANMos=l9_MW`#1`$NK55_@8kW@{2Kd-9!`v%l9|5D?>HSrJ8zun;P ZH8#&Bz<~$>0%8jMy99#H5kLb0`G0H#6`TM7 literal 0 HcmV?d00001 diff --git a/lib/junit-3.8.jar b/lib/junit-3.8.jar new file mode 100644 index 0000000000000000000000000000000000000000..674d71e89ea154dbe2e3cd032821c22b39e8fd68 GIT binary patch literal 121070 zcmbrk1CV6hwk_Oc+qP}nwr$(4E_d0sZC7>Kwr$&d{hf2}dG~%1??n9fPwdQyHFD?7 zHTIlyry!qDw;?Jv$h_V2Ugsdo?{2v(d5AZ+tzr&FKJ4{AE zRzg%nNtsqg^j>CSTw02Tb{0m8hH`3Rx`vK%D>l%>QxnzcUK;Unggx zWv6BMN5uc6{_k^)_g_G|f6lRhp`DAfu!VuOof$C$t&z2Xlar6Ujue&vG7p*nXI~-i5u%&4#^6t_YK&C*e^HIJaGnC=x3uT zj^~L_FF&tP>Ze+fQn@*K3pwpmWsgmT#4{q2fRoCmYk%;fU#XCE@VjZxHq3EduCXM{ zHYpt0nPc)^I(il47Zt+e@gSB!&Lr;Q3 zQ?aqSIKKhUlZb)*0VkVCd5 ztmc=Psm2>G`k+`OZz;v8>jL=O87@2*1jL$kR$~ftP#yqu9)R8yX44c13ANCto}IQD z@N(>~!FS=`p-&a`rMf4`eDTMls*zrfxq1)Rhp=;f-h6-iZS& z`&i%&)$c;*#?`_W(gQgS!W!|c{m8vn3x1{-HgncNIgy3qgxJrYLWRiZtuWL@CXx5i z%TOCq1b|dB4rtAxF8AuFwX$_uDcIE?KC~|GRx969W2gdRFy1F0RuI#(&W5tk3@1GK z6Ns&SwSNe{YU+M;@D8GjGobsNM&Zb%uBZmI#G2|C61?L@5v;iawvf>l&1JmgU5ZCB zq^dR3Y!naj$hnu!yc+y)u6e^UhAFlCxy49`EH=tjtZtHDq&6T4HXX)ymK`*9Dj7u% zZFP`ltit-sWpcCUDAG|>)k#V&tXuz>tw6Rzj)jP2ozH}vF0e9tYmv!odzMg6%p$X1@Iy&<6 zeeU@7`~G^`u5p`<#PuetbQyZ={Ha zpxyv~pguYVgZY}sAcPL737oz^#~Q{8Q)P}8M!N#b(QKvOtf5$|h(CedmC@4z>IHHHG~OMQS0hZIZ83iYIC#zf;@!TWD9Re&&x>Yvt;l)gltCO*Kllj6d>i~ zltwl8+*w*k-)R@o#N8!vyaABT+&ys_OF<$Y%N#`B{n#%H~m|IY+8?;D^u+ zF|(S0OThCqOOHT+oHAUP%@u+f+XKhYhU&u=ii(SLVo7}^Af_XhY__(QKBzjR--u(h zKa)W*nM@UWaSeHWvsYCv=4;jZbR4rGVH6N$_YhpopS&?vm&F-;f5e^F&z%tOktzG=4$|!KrfnB zJRFyny(EJ6qlgGAnUr*H#qJy`rbX`0-1#&Jrt|G07%|puWh0@;l}^8WGat%}me(_T zmP7>u-SPQ`TqP-O@h9eLDQcz|^9&tG-C293=7G;lG-|G6X)5>0Yozb=0~Y$nO%4_-3pR*;C}8N9U~?u$ePMia6|8Xt|a zad*05Lc)(>VakYlAuluzPnnKfBR;Uyfw-MyRP?B|hG!}Y7PJbY$1q2&sZfr57)HD- z;6?KhZ)A%C*`h?27|r;!W>8eukxXn%qI$c~aM3pFWCS6kZH3qV^5lZx3P9$~y>bP0 zY3mw-O!I0(k^JZ-XP8+^T)D=G{mWLJ!4P3)RS`2Bt@&AZm|qE-F3u%LEW{NnI>TGe z&VDdHC7x#|a$<1IEiOwp&L~2PO2hV?o|PeHe!XRsQ=-!jWqW{=??9gVTX`m11d|JB z?}0Abdq;y`vAB?veKSIn4I`&{J=AwwoOz*ZjT+LVo)7XUbkiAB?TCp-lKko8K3nT@ zC*gM0V9rIox{E5)y44(Zljr4THJ(rHnqnNA#jN)&Ayy5oaVJZQAwLXwELA=|G5B(k_+|@+;+)VNHiXc8#Q^;bxW0~v-@&+U=;HG+ zxJ0Nt2Qgub*_e$;@O*^PwJDja^r~%? z3D<(@IiZl#o%1Ma~64me)K%3wrv8g-5gTeyIIsrX-suAd=m~^O5N??^>Iy6lo zAA(%UL^yzGR-v!t5L2|i+Epm+sPwsFvObN`l~x?sPwIfJAdeI!LtZMw zi6PX_V-B8&Dg${&ZFoMJ&g25_RC0KdhL~P$o^;Nz&2ni?*o>GLVrmUxfTPJ=IUM52 zYok(IWXNJ|EbX(gIFAOSHuxJ-vp|YAerluB2&*|KOa{DI9NeZgCiOuYL)gjLWPqS< zGa9z;QW;)zLB?;!Ax1Mf#vpA z5OPC;3sLRBa83zpxYxW0Lm1`<)a7^P1+-;6d3fEdjBuaI6tfqjBNWm`UQT3V`yXIJ zD=}aw*1CqTFGYB4?vsmXqnk!exiS4#Rb{>B8QL?S{p}kr+I7uSFIVqAH(K4a)q8!-D8N4lo4P z$b_=w=1@Hk?H=o_8(RRIOhYi!crd!>^vb*tQuQjgt>7CDVhQV~S5wbCzvvRhNwZaSfRUWOQp`y9&}$bc%53L+D(D>t3-M}`%FR_qbK;D;C_ zJZeB_Mpr_%-CUVPp5=BeMh`GRG#|sm%_45%qc4?Y zsdlrnvsva8gDnb$X5tj!HKf+ew8;|W#tAYBIvcG{x)eB#yq0;P4{@w;-ms-9UMmBl zQCKh>J_t{x6q`#GxJoVES>W<#>%00Y76-eM+)i^1ICQwh?%OG>8pRuZHsNFJ1=p{at?J8Ng=j<@)(zPkF zedM!0k{C>;CX>9U$|{Q^k?ZYa{k)@T;zrF37f|w4`~6U+`zu5?xfpfFE^C9>Tazq` z4gEZ@PWBDTo!7rdHqI*YJIeb#^w}0>*!csMb#Q-o5~Oi!pqa}&V^7+voXZzz-4b$T zR;OpGq7*0jnQs<1g+Z79S>_=z=Xp!`TZMTjBi%&t>)oU*wEGJX_H!Z@$NHn=mOhUJ z{Q>`{zq}jW?w=#Q!f;e zmnS6s7k{&V#Ik6jRb(E*yz0d4G=T5;h?Y1@ZD4~=m;srZD?^64KecY8h9IdND>h+y zk?7GaHqXGxVz8Jqr1yc8xl6K)<5?uqSP|iLmB^RX7<2q#3aKBgB^7<2Kq(LKJW!iD zm-s3oM-~crmODlb@By`QU)DZtUAVK}uog(?@+3Kkw=+-=d~dvq_g%ifv@-d@k1T~hMS0~v7UjQdWqC(CGe;9ACqV2|?_yD}EzFHI+4S}e_I zISx^V%auuG$RLYm9OkvzOz4-XEfr8!5 z^$yGSSpz$Z;U(bcD9x1)JBtcnJh3s?TpA6pcoam^PUXGc~lC zakP$l^N&!i`?gr_`Mjmc8*Avpt=bpIl-tOGol8Q^FyS3!WIw$~!at?g>+T@4CPQ61 z{n3ovaV-GN@GA=YZ`4Fv>rK~4)Ckh5x4Di}tw6Zc(%>< z${2!K?WV;l_EG#k@y8qUW8K5~g0t-%c5MfnRDmA$joH*_+ho&3WT&_<;qTeQjTky1 z+fUzOuE}M|FN}i$mk>`)aSQdy94Mog?b9g%q(-M7ZtOf8Dc8FrAT#C@h& zEeSVb_OMUaYwv9Z#8elYaM4Qp0!(UZTTt=qs9@pnwgw3O1c#f)Z6@Bb`1)ak$gS_0|*K_(ud!GXK1y3ImUANCJhJhe z01}pi0z=%wZ8*iQ(ahkre8~8EUOV5Izu>)vi0N*b-kK6~KrE<66mQik`J{QQ=MEH5 zpU}s-W^+gL=nDv}-7zRm=>#%a_7J@#h*;=XDr|PM4QBl8VDRW`Oeb>=ytspPyI61i zM!GTHMlHd0AAkSWW@iVWvYqr0E{wm=I*<9A{ ze@ZybAEWpGt*deWrmK}roSYT^VY&V{E0PZAj}@sl-fTtj_^D9{r>wq3EF2aqjtPAF z?hKPvycxBrv1cX$e!BzqqOdn*P8i2Hdf+?3VK(*qFS}|)A4V!@)D)BQGQum1@>`Mg zjT=S?BZUnI-k_A?Drg&VH_A`bZj7I61pdf6g`%r7A@AuKs4Bm<9FZpNEH`DQ1dEcw zuGY8d9c(@5V^F9ROR>WLmMdJLBPi{#8=Q(o@Cm;?K4{`jaxyRi08Inh(>`{*08A)I zP$l?|*k;+po8pXS2(>~1Uy}uaO35u84@uvOr{(m`A?LViHS!_)ic(*mo9r4R5EY9NEKG1P}4 z)`X@tT*MlH9s};tyrFr|&<1fgzkp_}60zq*yGh37n65zO$+VR6^Iv395%326IZ8;tc+Pg@2-W!gZ z);Mpm1pUV6mKsGdsVYyHap9+xMm)~E5e$_ow~ZGjOE9N*`We|c2Y2ajPt7FX6#Met z8cpkL#UB0+5jD7u({X*d6u1TIdQODRvqJj|3_~^5bn6aiR0HviQN_UxdI+TmZr1?j z(>-XEQul7dMDFb?(nvD|Ts!2XGq4CJF!P4J3IMviF&b&DB3QyO)qccYh)jMj@umom z#ZgoYwIB+;7k&2z;6;L4vh*Hkmw~S-4I}A%pS^6CA(PO&93i=Zn~^cT4=E^-9{TCr ztY_B?di81r4KU_65#SI*o~Pqew3Wh&aky%Nd;E-LP&Qc`sFjLtt@V0%MCzggE(c6P zD&d1NS^FG6${~2RDu|rZneQl!O#^(Z6~c@O&a|QEqkeL%@)?UoaqKqLSx|I@L;Q3_ z+=iMkEj8+*cvsKNy!Y%!JoEHJu{{1pN||nb2pY@8PdhcW%w{x%#7Tz;+nl=;2%9-n zt1f1h$Ky|QA%JPv4VbEZM%~%kFtyhyDB6Ao2%$yCRw)#;UhtZIn54A~ZJ!!Cm}Q1f z;uW^T zaeTVu!YU(~xWhdfTUiED(aWSyti(DWU`Q_F1!^o#)`jZyf%Q)20t!`VL~)k1U%!fo zk??XF1F$?pGMg7dEVr!s!XSlb%o6EMpmOLCL_M|_0WHtVM8H7<-lQr_TB#Oq3i9Gi zvgFJ(WN$h=Zbe|$7U}>~R-Pnb<3o?B9lYIv)-XM@3nDl<@)rxlu&e_$TxMhd(-7tLqk~^jI7WLbQ zdIMWN*$yk}Ek#(SqL$Iex!%z^8r{2m!OcOme=+TzF5!&+5J3K>8BdBOoY5t>-pjnc zY3$Z49<+V%%l!uEgWSPvEeKrqX@kpan$7I$efS(paYZmKZ$=KVOxw2r@w8dEk~SV6 zes-uDWQczISm^4FyVY@;(`Qx%RT0|6NfK2JS|oR)pgP`QXH*@cUUP(A`bw$~m$8s? zkyWT2_bCVnN{Mx@7Nb5JdccD5B&>9ht4n{x!yx6|23KM;25$aLa|l}Gx+alD(81}m zEsVC`9N!cA9OZgBXt=%llzV$?v9n+W2#TX!Wk`UJ>j#1)tbchwZR=`XQgKk>lkfIsRaP+?f2n%*>!C<^C#0G?>$vl0z&30Bv%A zHT@D82QlqGU4rdDc8UMc^qKzEBouY5kp49NmS3Bu9g|CqOPU3XtjWwGYBwVCz!0cV zy`P2c;m}fP5>o>FUE;u*(IT# z+R}!^*RF6}-=>iTNj^)j6IrO_(7!9+cA5nh9c}kq;^u8kfl4b{+CCFb81M>XCa%QQ5aceRnpC6k0eEujMnoghSV;-rf}<88C)zj&QFm0h^u!u z&YHB*WnQ;LOrIx6`lATa%O4RlG4_?OKXcmNAaK*8ywRU#V^D)KF})%GSh_<2q!>_ux{(uZzw6Dy|z+SB5YVuaP>!}M_^ zzsqiX%`i-h)ZAr|*K`kZOBSQy%%SHoOdV8lA!4o596~bP5ox8AoMMf`YUv~Tfnrs3 z-RjhNz1+jYXVnL_@bwRkpjV)2UjK*vn*S~P z%>QElU#ri{1Gb1QQKC`XO-bD51Gcz#_~iLv0r1M0qwmI9OArpIu4Y7ErTGDPJAr&X zcqCgGKmh~)Tzq!A^6~ZX76i3YCzN(mtdhp3l`aoJN=w}?TVkwU;DI-2B=RIYf&64+ zw{$Z$=Qak1svb||e=20{l{Hr`#G+(~FT)Li(3?n;q-0sLgZ|PFjJ4CXbRvy{#ON+V zZxTt>`iiWbBQ$m^P?8v-u4(i}zG?EO?s~n69XA3m2r?A1@JP*WG4Uo`(-}&}R3LAs zL7>ul&d{)mp?@FMOX6Iof@E8&i~JV8ZQ~}Pu5S@YxL)0OrGi_!r< zdWAj$A22=oE|DZ>E?|Z|?5ZD%xX$mUj@ZFlF>IlV7bY#e#jM})xuaSAZ9mbUP0$4r zX@BX|Jk@lrj3-}Ny=8DQWFQG^qW8s-FQMn}${G_uvZ85uc@Y zU7%Hof^YvLi*>XAb@cBOcD|eWx~&KQIjX->x=wa}@7Etv3;(yIvi!@7QPPt8lhR+s zRkS*)o(S*)15%4NP}I8R<_L-55E2EyNPKQ=v_f1nOqQI@6uu*Ccrz9Z|LiJwDTp*H zPFnhrA#FO9cJ000Hu3d!e~-4O-b)qICQHnH+KOj#z~RN6cuh#)&ZfrLgFc7zJmTW5 z)|lB61#2e>ciT+8@IV%=t3a0X_iDo_^hDeN00wj# zLcc4q3H})BQC;kSindWIcd1DBK@HDU!o~x5g>z%d&T?Jh4qM{Ziw_C=2R!)LU=Iyw z!C=uHVpLX5bg_DZj$C6HX($(|?f#V?6Yd6PtpzbJ8qMm`=2nwD|Ew_X_`)pGBEz5x zDAR$XSShH|6~z1R^jXZS4Er1Y6jB|GU`u{fTo_Ao27N%eAr3i8mYc+K@NX3cqa0d6 zio`mDJ&bH7`f4)IEr0S}O?a1#1)WD=#e&z$a&%BDH4Kz(7$IE6BL+|H1yD_m$3Am8 zK_3Q9Qqs}plSbL*C*$dl{p8%pzOQ^kc>>>a`>{Os2;94||i5Iox_`G|!QT zTJ{y&Cx@DtBszLTy|}RFTl*cqOr2{Zr$Q!?Z^oHn#At;9xGEN|9W2YTc~sq4O=voo z4OU7{v|eSoPE(m)-(T-M zLZEhaQY+XcnrZyrY-NyB#)e(Rn&YjrxBNkK>e3?g2ya?99_-0^x3L7)9kfb-97$`y z*Fpt^n@Ydpq#tjBYAtD%=gb>??Owq`gS@{bGoUP#M_z~qON|6=t_cL4_(xm|;)so( z(t+?mxT)|Xj(NEc?$iZ-$zM>=$jy)EMNSXc_pLb6K@J+@8=9PpFj-w9l*4^2p49%% zw>R>MyY)cU8$-yO+DexB>OGp$Gil2Xl@X+sb>UMHeJj;Gu8}8#&sg=8PLe+nv%nsU z8N;O8is)*f4)`8L-TWnvn3g+fH4^YV+G73O#{lQ0`ht3sXqD3dRIO9;2sOC$1+(PK zF1?y}F+Oox>2&1OxQXUI8W%b+BzPE9FnFZ7tp5J1>YL@OHc+cXA#EQOlXZQ_YPgzf z3U-TqNgIxQ`yW~l*x{um;{Q*(^`ea5ghw|sP}*Yl_|b+fN7R&uvpHOk*^mqcgefp ztz^aI?~LK(eXKQv5L*=6ovSdz%o7+p8NKv>HZOJjF%M25R_BI*hOVed?f#etlV_1m zM~=*!5YmnZ5)7M490%sLWpg}3xOF#L`&l^N>QQBO+H(EI5$g39CgU2tX9!>Z&9V12WID>hRL6<>qrRuer$ZZ~$RAIk<>O(e)`hOOdHQ zX~By|0MyGLGl(pI8-Hsc0DqCcRceZZs70fGdCYc6rxTxAZ=wNmG5?wp@ zKqqn@Vw7!)fw1zzP5?F}Q~H)bydzV<40V*#SPsS;R2e6Hd2e2^2q%t%SaJu`xM6%n zy;NjB(w76<=JsrT;;68{4Z*@w|7g|kWD`6T*o1S$IrJsl+8!(qLi6|I! zO}S>c2`k&iyuR4!w}|xK*TiJa7>YES=A6Pl!a3K1Bmd_{CPfikiGV+B{^zY||3Tz) z{EJP6@qe-@i-RLp@mNJ;tKAq7y(8)EA0}uZuW-tnB`RZKrcb)R-=IxF`|*QM^0x$3 zcxgtaQ-YVQtnJp8o~}X3Pp#LZ&yq%yFK=q?2e1Bwr-Ls%^cug^5;n)pVt^`Iop7pp#^emCiC zyX$uMofRH5lP;Mps!4gPg$!O(`f~$JC*VEeq;G17Es^+=IBr!^ms6_U5Cw#f5DM51 z!g1pe8R%PNckv%gsde@&W7ZLI=n+et-=0#Gf4Uyq0kCXm)WPf$XhUmI6%|9$L{l}cc{(t(f z|Kupi6T(}0@$s9(&6F`=ln6pXy$_SdFcr8jKMW$Az+bch-++PqEVeUfc2qhu4W3_1 zYk|_G%nGGZxhh$87BU^f8d-#jwrXv%Xi4$X(8{K1sY)|t`+4KpREqTJ`xt2B`HJUx zqk-;uk}2ogn2*D}_$|QVg2N||zjA0B?;L8OlDVJ`#V0Qo!vTp&rg4eTv)Htb&(ai- zJ@u|VS>%I7f{ZRonK|06iV3={)1o49X<#R6!0KmA{Lp906)~!lv=qeSEu<2oz$t%EKkoh z>_jy?l0^x3#hIl}WWF9v;rR=c_@5MhU?rskQ7P=cE8p1E5eQe&=j|L&1tH!KzvavP zjHNhH6`3rq?Ph{MlRYC9N`=9ih;~{IW&72c!nVlPoY_>_WMYD9Hr_|DJK z>@adsUS6mbDKUDCb5@3hern2}5B=(C2Ai9%ku9oXf<2c86~M?PDvC)Ji#aCxZqAx> zEw^T-(Oc0uk{*yjeNO9C506=dWf#`ZzKIVp){Tck%gl3B!jQHO1|ZDcTgkQt5$An5 z^gZ{}Ar1bKu|+uHych}EQ6XEt7JaT7`%DA1N~%*?PD;SQlBMla7@Wd#D7`=H3m?2( zn+gl_)R-5=O^!tYwAhUmdJ=7aXd>0?8g3~jVrsiE(K7L6EkwF8bA z@M(zi%pIUUjv8jIKd>jsqs`pN4yvWC=o`Eh(98~rlydH07^|wLw-^}hw9_Y^!NYR(>L0W7rh<* zRi?7qy|P^u=sJK0KA3OYzAn{4veMRG*E*W(W#P$d>T5mSv-PCTlu(e&6Z=MFI`OiQ?R(DZsf$(YkrHB*a zWPuPKw0lq!*D$?SYBX?jZ;kH*J9=Nmo33HA$q5gXVwWAv!j2^T=KfW(!!6#>B@_;= z5L`wz*3a}Yx&h9yY%By0S-sQG4~{pbtg*@*dD4!-ag=M44a)lpP7ZY3oc8-GEb$Z+ z52DU657AJkUE*LDE3LQ9w)*K#T4(FgTmuazq45mDSY?O;QyxU4JU-2Q%|D)h4g=gv zM4Q@^m(wB`TC-TuDUYNPyoKAz@Wq2B9CLEh+vYC<@nV zpHlf|UetAP;;V+}hmZF6bCEi7w%X%*8ZK!%n>@@iW zf1~NC(Q6a79VyvD4YJtGQNGC;2HsmyjGCFMo_qQo5n&Ad(!ihQEWV9Ml56F@KE+D zga&~;XIShP;Zz;xkM($HSVK&}>z@)33MlPAE5HTHns8yIT$*T^qKY*w*#cqj>?g(* zG|l80qLS@bb1s15drpsp5%s%J7|s+K(_-%OFs3~2cLqS(-;+mOD9NT-^}UA%RYG+27@9L(m+=-G;m02a^~1!3c|0E0`kNZz{a3BNPy=5`obfgNLm34UxIo zZd7&?%1IT^MnQiO3jAAk>0K=OoWa(2VH_-eErt2UWNlh|dCf1=kCKerU`AQ0NiN!Z z36PEN^3d#{vd`Lep2_7)Tsd=G% zfh^C22Nb)(?!5MqUhLESirM|KOZCy$(OW^%Fnw1)I?8E z&#H#>_c{SFw4?)27>pw}jK`FZW>2+hj{T@+Qcfy=qRdIRn1R0Q4N;c4tM^HES>>gA zuiq>3c45(;vNk;X_Cv(#T!}6ErnF@?0#(ZI-IM5zsvJiDl5Z62BOld`eqDYGl)6`V$ zA~x4q$a2n^u}io)IEcw0JVJAjQF3Iw9@|DaNk#vpI)B+|G>J`~aVrUa?4!ueAEi(q zZ-vB^+-X0J8v4mGfKP`Kc9==317WShxOduSt9}S7No$qwh+tLfa^}q7pqwo0SBM3x zm~NB;tp0kTpvp1ff8aR+b2e}Sz4$8`hjVaV6N=7LNo`;u<6fr1syYUyqfYAd0o#T4 z%@if^j#CV7Pc=YnU#sl8cZ|wOFGzy@ROJ`~BsP@_A2$Q?dbJkjhPov_8Uui4MFRnH zn37QSbWh<^=Gl}gbj;nTxfd=U7ER$fo!GQTS%Ky*TDfb7wi zw&bJz4RlIgYp}T+xJ*kY653FKs}P}~DFNu2ZLtXC4ACV`%|=;2pF2hV0mIgXgPUQK zfN>FqkD#RBSn*e0wX&MWBFfpiw31WBq%DJp$N3@)2xVopNNUB&vlvx=8JA^DJ1#=0 z;h$Y`a4IKWhB0r^#N5Dk=SE3+wsXsOmR#DS0hP5%nPQujSRiq!k9lzxg0hAKv0MFBuCx1=XTy8K7DGF}49;1%c!pa{g|SHyg#f0PWZ#yTEKb*V zu7+pYK2itZ2bE+iO|R=&SdWIMgbNU)e?kf#a4psl4Dg#15igXL=*`d+d(J|FjDI3z z)eNbcs*F7aGq`(ee5&^70h}>MtAPwVojunk;&I2I zc@_AWY8Nxo;K^*Bh&#J-QkN=vj_}!nJMJ$sRL3kEa{~Lo{*&~~A)ZIJd6?pRHbnfX1bo4+&zT`|$IKs6Gv0w4-?{w2WAJnaAK)AaS_gK@GlnEDP zEQoYJKAM$+XWWSIB2;{Ra=@l0&*WM+UC4g!$jI44shPgK^>Tp?>EDyJ{wM65y8YCW z1oWeM25?w~Z?4-w3$eK-GAdK-EGkh)mLE~`kRCcoqP(g~JXqq#{D4jbSst;23U9e} zsEqIUK#01+6)aI!C(Q37rm-aQM&5yq&A$&KfwMGFN**1~B<1zV;fDQhK`=^(S4t00 zu{qTWV2kDLfZ6V#Kyu(JgKlcrWU-JM2bZ@#(6?x7O}lVQq{{LB%-3QJUp*L?R9@|= z&`L$%2%6y`JADH@qdMm>86VsbH%yKFOMr_A9?5@jW|tC(_%iQ1nM zOW)Khz^rKbTFQZ059}QN1ybno_f6tGytx;G<~xEg8&R^205v;a-439=C+~$HmGu|l zq(-nv(xe6e%^qepO#1Mg0(a=KH|Q+dm8&MILq40>D6>3pZ59ARvO>>&wOg zdPaUgC+laBW%C}N&8;3 z^`J^TuZ6&6E85$MtnZXIoB%pIW}p?N>=v>ei_4YhYa6I^Q@rTe=nr`b+GW3P=4M#< z+4m1zpPrmKzr+k))q+zb71?hUy}aoK>^E&38NJeAbhJ9HtO?zwWEhkk!KUDdg+uL1 z+uhkSTv~O0 zWl2GzLB@Xel$5S8$Z;e=<#{w0C?6V3NsKR;ar(EPNI#;@a3VB>CYEti=4^Dv<*4W$ z*uvQz0+s)$c>N%JCI@oLP2W;3xKZ}sX^X*Ygi8J-pCuN?8)JPX)k}J^QUUIEWzU=v zOpOp4Lje2AeG@NL)JqBiBtson#z@xjY+KnUua*W>XCDFxrGf(UXNd z!-&ty-W9)ijAU*@`xWbsiE@jeJTY&kE68PGtEpzWq8oy1g*~8)t z7;gYHop+dOx9`!2SZ0rcCu4T&&G?GG)&oTz^6Fb%B%>{s;X&YoqS+o4Q!*ZVWZUy0 zqb;`{SMSH2VNjDyOV+PisAMIBniG5&-2Ot{7(Ojn@j@-!Rz{kHra5S~`{GT(0yT^* zE~3dk#808AtIj({Ne9(1Hr{5~=#4p1jsvJIW%TNt4*i@lbY2=h9ker*Z}e&n4xNNt zQ-XRmGoV*#m9V6YGE+{vPGVY-ZkUoE!iXnj*=Hc6fnW zDlKx8mTMKJEqoFQ%ZcS}?+XD>?~4~Y%FLyf%h|zu?0ILn6e`1mDn3k-0xo+6H0I43@!`Knjb-rAd}a z_9dznEUalPWyP-mi@b%}`!pPwN8WAJEo{qc`HY|vO=JrgU9Fr};{S)ScZ#yKOSV8O z?MmCW?MmCWZQHhOJ1cG5wkvI$H~;QFr|-F=`ycn=+xv0v^{rU3W<<=G0Whi)utGc0 zV^CV3q_d~?n-FPqM+kopd$z!sgtbw!Vs+s3kvubbx; zJAZE&HEI`~1}_Y0DbmuZHv0Sw<+>F1l6+QFn)s}Vj3;Y8B z(oakMkn-MXX}qlTt}dCWfH1t`$~+BM%meQsYX+u`w58JVL*fs6bNTx9g49vjIy_(I zf(Z8Mo9Hx+{TOny6|sx1P^3fSMv|q&2z6Lt-oAh+Z|-441#aQER&5C`A6-rpst4j} zHNY#;UQm*v?J@Q4>1Bh}OCjG;JDk&1F~U}qqZ6#51MSQ6Fca9PH`i63f-9~391uE9 zJ;%woxyz}uNz!I()Qu7!lzeSIUQ7k9oI-|Au}df-YNX=+ z{p@+3-5-HOvfdCdU}ch*`akE$yod`fw}ncc;f(j}9&&lKV8%|0PW4ogBVBoMaFawf zrOSr*PDe=`HTOINPEVZkUXF4V;D#4zgN=(q{y4muaq&W~v;SD-0$t^j7P&)gh|MWX zcqTXBEh)nW*G?` zTaeP@wW_nrG80LvD;HZ@MC!O9et*-_#Kxd_?OUWCA+>? zJ7pd~2%Gs`!lY$m!J$JG#`wv`)YlaO^qGYp{EoEi`9NBwMBEKiGiy~Rmczq@H%H2W zHksDQwa-?!s{Q-Bdq!!7`^jlOvlWPj8anAm!C%~9~gFtq;O_g zOk(2V>XCGLew{d3N<2y{`x+jZN|HAq&B(<*cx|{InRQx))PI-Yg1~cfPpoeg25Z!c zN&Ir{0YSWd@CnxXPQ0HV{ghuvDe%Ap;p8E05AS-PROY$T6w}sMjd}R$dzWRL0~`0g z31A-kc07BJ^f_b})G;FD_`t^iyuSyw$Ui)-qGuWL_l%$Lws~-B@6P{63cssd@5xYya-Z7`0(<9wj&JS4Ps1`fuF6H7FGFX z^0M17E|6n}-=-k~c2A0&+R za#!9=xxg%D+VqJ=xeRw1CQDR$_Xhw@$$C3Qk6lhXBu>?A9Q1?(diL&3JI2K=K7UXy z?;HEF#8QQ-2M15gk2cQ!=w|HFp< z$p*+uT$TUka0Y)(_5DJV3Jnc~1dtPeD)39OSfndSBC=(5%_Ji?MA)5_@Oc=^%V_;rD+YinH*g{wSbw807vZCWI-cP0=)YY z2jVv%=_R&SGn35^Nbcvj`mkRxbS88%%^AT=9!tGUDQ(qzqxHebAz50E`Hgg*#$4oc zId!z{wm1gU_d2Pj7BcZtvD9YL(W_R8XR6ERGNBx;?2Onm_Kp&-+-V7W_+XCpSa2}& z7&muGZS5;wrCWHSIQy2KVPtgibhfG|WejIZ$r0lOHNf=IYV4ptIGkfaIvg|~78I+m8;}ZEm6kuX=3@LSb!2QR~tJdEwF3dZ8q=9}SJ3GpGJ>K!F6DzV(Q?_Fe@}k1uYjxK14<3@;2l|eR61%Zqfs=tku2$_lTN`PQzugUgqpAp!4Wm zq0N#SDB8X=@elBgISH|ftR|yu?04p=<{eHoRgoi#C^So+2YJ9Z^zJW(Q29+TYU7 zeiYdc{Inip@5E0S63b*@KcYwI)u9s?G3nB~ZykM`D5zzQWIcJ4s_Q=%j0>y})&w_T z89~?V2_(leVA8*r-X)-+XDR7si&JN&D0)J)T(Z4Dj6YcHGf{2~&cOBg(k#-+WG-ys z$aBw8%eBjvzP=}DO>yO!D%0FlG_Xk&Bi%Ex&6wuf=(Q|-^_|rN%2A-W*^QW`Y)p2| z0#smVooV%&3YMi?=G-r^(Z~<#i%#z1p_J^d@+*RPZH`Skpl!&9*Ft+;xO&e z`6+7uVUTjP>OY`!w8$=RL3#E71bQ*--cDPhEo@kvIOcjk2O{&QFqjEh;>cKvsu|r&j|+UPpwmcj<3@(uWRtQB6}zfzWAp<;=lw?hUUnHSQmxsKg=4797j z3%Yxc4qfLikQL5Z!W ztft;F-xpxx>W+4_^g@MGfN_M56cBATm#Wvub*6?U48h`q32D@%b%th?{>Df}pU`uc zx*5^^7g&k(OW892CYl-jEft&aKV3BPMz%(Jjz)%mneV@Nfr?sxbqa9LFEv$4_$AAS zS5=m-pcLjlkA~dli6sal;1NAHS(O;swXdIp-2%NMl5{-}M8Kw#F~=Xbe+}^FZLM1S z%I+8$UruB>T(Ud3_Cz6UUobgKcKhg?5| zK8L!$-)ty|CkFn9qJO2jtpvqs(G*FdZ3?rz%aD14gf$cOO=-)%v<2K9ogx3H2x6@~ zvsS-cdi4bvay1pjyxcuKQP>rlMSm?*!5;@0(NKJvJ;*+8aNXFv-<9a^N$Zui77A6z zidG$#%1T}mjZE-w8Tck5_2|OmDI6T62xi7;96I#qCNDHY9czP^;pPr~KM!w-(bY6j zy(8rD)ZfLYOrJchsProjeHT=B~c)&`n=)EjYjKnDIaSI8vQ zvE3=~b7vONa>M5B;m#`8yrMGd?Vo{%XM^+2!q?Ra11{ zulUOp?H%Ir?I(s@1B4K;*Q$NcyF~0JFTdks_*1K!)Hh1$C9{{&wKTHSA)Ems0B_RJ zN;S>;9jhpO%EF@2*gmcm0R1PRV`+S6C9#Do;Hn5i=T-#d0=mZWCQteVG3^h5++*O@ zqo11No|Q&C1#Y3RLFokd-~fJfG7TM@<02dn(}Bk3YZU?U+hJTQ6SfE==_lc@{irI7 z@|;tn1uf*q6#qjR&zTdg*0&|rCy>Oc#zTRa^@mV3ks2*&rwQ-9T-OEJu*ZaoGnwbudUS#Hg&>8-e0 zCYPWJq>~7hT_c?t6D=YJu7-Q~kJMa4h@cK*dyYiw2sPehOJ=FyF}QE1L|>d4Ch;-c zbqYTkMP2x&0A$Y?sN9vwIEuruI;%cq6yE}HOMME+LSWpLPr8B33o8@!fijSo=gc>T zP;!-BLdTBtFPR-m(~>@27QmKUGWr3{%c?*-GbDP%K`VD~)*wZ}D*R{_siY9DF|dPa z(WhlOsR!%kDJJ#phth2esnI`rk#Q>9%nC$xG+O8xScMORg$vZC8#Ce^9fB^Gk!iDt zX^SQ#V7;nb8oJ0HDt14J?dTC<6&L4y{_?`?_$O`f-zEnAw_cdwznPeVk)xCC{{)L( za_fH?78A)9zzyj|3EgJh0OIp_c*5>CW1$`)2Yqf4oJ6*yqq0{7tWw3h0dU3{poMoLUL8r!JCL z!BaA#783$%^0b56?A>BQ=<}H_2J26wf#1I&+Aq|AjG0gFA&NTh3y6@`v%0`wkx_{i zx!F|73VhSSP@5y01xpI_2>l}#)c*Yp6VOe@jm zy&d4k;#imiUllLK)_NiH+#GnpDgs+2Pxs`J$|zc*YAB9i_1@ZL_Q#8BLB>{@OxycI1eN{gBjuYL#A?SbiO?ZE6IRD~{$8THD(;*FY z&l^vI7inl5f6h2TLpoB++VxA#TC>E)Lh@Te+npGJGSn5?V>K=Bf)d5L{=k8>I~TkF zF(W2e<>C2!ze_Rr`n=mi9dixk(YvFH0_09iQ5P126B)f0C3%%Sb=>s_&+2;sIvEx} zR&6Ciq>uqxI)`U*-;@003v+OTub5WmUgIWVd%G#C)Q3QZ{h16wxrZ13d+rXgEP6nU z3?jxksXtP=>(^9E#w+v zSMK@3MaQa{k$e@mI@bM35MH|=K%WD|a24W_V&aiWd!u>++qE~Q5-on+ z@?`mlL21!4CP%4|H^#nF8jNfVrz|(Ec9p7iSo?`M`4qhD&VJ1M9Q+8aQSYx5z1*VH ze5|orOx_kv?TB_l@0g(yb%VWecq487Rn2YP6D67PhmvKscE!9Y)c||r4Og)Fhg_f6 z`csVs)If^i2g@hmUsj`wtQ>dzZ8ea8>u&ztVeoI^Z9WGFBl~}$y{r@sSH(r-;boGP zG%OMTAOW&J@o+>ck-2mB^r;huOm@&SdAf6Rk3{ScKnd(@sCeoX{2E2!De66;>arB# zwER`0iX9DW{6(l2LhIf-Z*x42GM!wFuph5F9yytk(vP7!cXS@cSx%p4%}ZTXnx9t{ zHnQ+l`MlujHJlldCh8&bhoOzz(idh{G9^`tLn8b$8=Hqb^~`!CAsVbtS52V0)Ch`g z^wF$qz{t!@)~JeDbzoILl4Q&H2KP~!NHJv8xmV-7DH|uxWmNqs3LbsaR;-J6-`D9; zOq>Vj{ZWJ;eqaKl7r!@ACk4Iv2OlFzQ6+?vhOpj`J_{Ig;gglRZMAU!ayX#~FqSLA z+YU{V&ghRf39iVk1K?ywn;y6*#G3`%4Ce9f_CLIS!$oA$_#-$Wi1DIK`KHfDc@Oc6 z43NR1hB2v5fk%Ce8E~AT93DwlJf$xYm%{E zUY0$jeAu}UwAAmEEku~l`>aR%StDRRVy_f0ls&eW)Blv2&ruUVy?Q|7cd8a2lnLvy z#ltK{K=q!bd8ZTXDxpX1&|LZTYT`iwX3KE}jJgEwQ;m1WBs@Y{5fSkZwrDrVSU*=3pJO*=)l3w|AW*f;NNQCD z_04u)Lg3>>_s>d;=s(~+02f#`@07o`6_2Lx0640;I%8wXx32Fn$38Spv!9)PrzoDT zAPIQ0_AuuJHsi1{b`iW_UB-AA;~H6DA=Jyp-HrPIUU@qEz*buLXz!%(%-`>UcyymG z8{^r$H5{K-pcD9g*FfB(g0w|w&^5RbnY#HfU!-2~-#)<+dE7RZi7q6iFhH*7*INKX z&KE+{;+A``zPr_aZy%RL;I#OQ9rk`C0(AwHnN_UX6tiPcen6Wwznq|oY6u}Me0**B zwh3+*J-LGV1U=BFfrNZS?H^AYrv|}X_2V0xC;%xFO;L|pIyva{$16ew>F;*CN1EDz z&qwJj>kZ81#ur0SaK_NqkMxj&5v9W{|KNehnS(H3A7Z#9#PXAlJl9bEAbLr+XR;A5 z1k^&GWJw`KAr@her zD5X-U$YVN*m`Vi?B`K|3;OXxMH-B0QZv883SsXw~&yi}%f@SwslFF=0@H1IL(X;D? z03=;wsLUIhH$7d$eu0U&8T=-cMSsjXP!f}j1wSoA_THIXr(j@1pE}RjJkC&JCb0Qe zP=L-J@HVgw=xtc>A(qxzQ5Slz^=JlA4ie#uRZ^l+?V>daF@x(xq-6DxB+bm4wjm>5 zPHOo%UC87=`O4%DlS zwAjnxU7TOdT%ybILV6hSrc$?X$BvAbz=n#(8xSL1rdt%ctx&D@g-)FDOZjJ36{uTrbUJdEJ4mJ7s*?#7- zg1@zgP?0qz1z+_@I-gRhr{P7 zEAWm0K8;MovyXslAKG0={28wDhzu9w5enNn5Q4S)#yk*`_Kc6i_Z}Pk%naA19s3+A z;W>cstt#gxG4jqHFKR_;B8elu8mtFJh+l)0@7n|iOAX6v)F$g?~w~QDdrqSddOj#^oX53J?3??^T{tu6K{zr|I|sgk?|rIg{$x6ZHTQ%BU`kGW+`Djn zH0(UWUWKZ;l?F$cw|sxNH~l!3z)}1&e4pe+R^I!i#-aa)Rm+@oR3L>~b_&?J0ksnb zF{aeTA#D>muOZjO%-MuXx!$m(p7Fm({aK@aTHAXKgK^>mvI%kAsY{w@U zJGewQMaAvlB^wZ$+fw6Tg{F6jOFD(pCz_V}{U8OT?9k7gr_?`J{TIHRQjL?Tokj=> zyVpg01GqX2joE@)c(7(*clK&egiz|jX$)JL_vh~!IiAyn+z-N~o#q7Q=N^Rshk4du z)o?&60RVGZ-?fhYb*&m_)XGh%u1PWNnXAIBtACaa*YKGMCB9Wtb5Z{e%2WI=l>h&N zvhPH)u%4Nvk)e>i{r@BzqGY6G`o0T?0#HHzxnv|bQjq|Wk2~-J`jMF!w5eODs%QGV z@m3YxR>qb<`v$?2-_L&! zok;(~`xdaVvemOUbNJ^Ace4Li;yy}YQU+55=_{%ew`LWPK6STdiZrhYAR|5z7%US3 zGKxGL=sfmd)03$5V#Rr`rQiA6kD1bP5Yb(}9tAwc1_`mJ1`}(L$5tayjRtznKyy zjY=(kh3iu2$`Xe8Uo5<>gW!e%N256{=3bloDU-R5x81zn3Q&TAi*7q{)o0jjJX) z4+H|b1naay++%9rkeA(v!e!}834!aTKC zqVcQrkkBFJOH(hYl4yu;N7=D$4EP0Gg&WFQm(ILd+&iuj z(Kv)g=T98Ltj$LFQ4?0zc3GlK8?XbU`Ks6wDMQu?`r4U{r_DA`S_nZC2eE2*^3<%Z zlMwoCcbPf4VnF0R-W2n6;Kt|cOs!_th)ydxV48bSsrW`e6&55SVwsBJX0aPWfcLz_ zV5BLKvl=W4k%8K?7e;WlM5DR{UChskr@F4G2^&P--?YQ$L~!IB3v!t77Hf@n=$XX5DSA*8w)5UZOdT^nAUeyqGf_ijpXl#3N2Ce^#fN!@ zO8Obw>3}Vn?6h`v-yz3nrYu8J>7Va+rhCLF4gq<~*vKz-^LzIER1`TJ&(@QFHuZza zjk<;3DNBHs1ae1$G>#{DKwfzMOwKJCaYMD-u^>OBp~ zU1aMWlZ}DjseQPDhu!r3MEfi38^#d39?_~auGjQ-Va4dzx|x@Es)cGYH2`DHqDkC6 zI;sTZlI%Xi3}Ogf_)@k4#aJ;wC+I>56LMrvM}7mg(>|MH|0sfNEz21;eP>Xrz6V|X zcUOS_A6&t=aJ8e6fuo+j<-eSOloaPr|8I{A1Rjn;lC0>gew@v(A;t7KZma~SR!6hD zO2y?H!tgV1MvUZ6`_OAE=Lm`i1r0vFgNBhbT3Or4;9JeB%1)g<4TS>`eyFuWLT==i zh{bFw2b>4LoCCc#XA(Bh^+C4HK8@TaaCEwkS7Y8$%}e=0(ke;YB*=4o9!A!pa51Trx&NART*e zGi?abI0t<@b9zFc`ru;HSSpH11H;(m>t16`S#vux>99s)G(sR1TW>Qt`*ICqX$nFh zQc-zWLzoN#AVeT2AaJ@`I))mC8hW}PX3n5LbHQctMKk@NzSr}uK5nw|kox`aTmE)^ z{}#CT_Z|9wYp_YmX9}1~NMD<9qN>UACmATBa`aqlrd2WGMX>5r7-ZB)uQjI#EJQVi zcJ%-aO^uCR>bM2b-p8c{(Ts}2uosb1=oOCv-nTLK@0*)O5MrjodUfqj8xGz_ncLh) znx8LE&Af7c*w2c(cZM_xO$K5T8B0f!78ER%CKou=6(M-QEGSnvBgRhSKlAu?z1YX$ zC_pF@fD$1VhDjUMsEtk2z6UE<6)_@e0V;XSGo7K7hBifk1A9!^X$dhSf$)`5@Pn%m z`Z5DL-8c&4j!4CvEY+|Wv-ukHGYT_NQZHxInU>6{`2|0lr_G!Mo0^eDKSd%Qrw68u zuSmSAkv8!FFzcP9SK%(#v-hKzhBqZW{JET$=s#`8XChmHOqx-qDbQzZBAcia%Vl@x zooRwcjtUjsyx5<*M@PVbK$S5!-XkdGuVCT zf@8_(XsJ^O*3FXZ2C5(v;3br+keZMk#I{WXxJbP*#2Y6py_9g8bERvnY!eVRIcKkz#1EE-86^0mnVl07$Q&=*j^KD5=b{H8*nSJPLFGa@L+TbSW z3LKoNn2d7}ZIO?SS;{vQ+6vc@Oe{_kL>UYYL#~FBF%xX+da|_?S!v8As%ai$NMmUX zjS3XrXGod$ei7uE)PtyF0WO|* z6!BZDb_#+3J8a_k_!^vEkO9@1*DctD@sdqdBNr6ny*IP5g_2xBAfp;`gWB2&4Yx01 z^bwm+nF~wvrX!hBvoek)J#)6??=Wl`-Okc&rC^J@&Y}z{?HXxKW4Q|$Pl+FQnz_X- z&`geGA<(sC;e+&Y?9<}?CjQa*eyB8P0;A$Vj_OHy;Uc?EV_k5Gq5@EP-~dCbsv8SF zY-)!EYgg2^RyxelMLg#YTb7~>fLm4oJqI2qY-Tsdw{~pqA$n^8v}fSIvAVD4%wdra z>~m9Fjy1aKZwiPbEUPV+eLzF|`&!GA+X-yl8fEni+Tg0KGlQ1SZ zIz#BiPWKnVXjzyutFUVm?z><%0GN*yB+ghE~te=M-0@9FKPQk=IuH;E!@QdyUuw zuACj6AvcW?w=m~|=;;cs1dE0D$n+e>7g|>tpD?fI@U`W#FJ}2?(D~=&u}vu?3>H2{tb6OKd_}6Z<;j$ zt<^p?d)lwvwjX@(tdsrVZoBTyZDTD*JC#S-rcW<~Iz-mac=5Jxk8hu4=X@rMx?60l zQFEJLk5N7EQ1wDK~%d76hQEjq+r36IBk19)&7G^L@$i zp4D+6V1T==#v7;-X;!TV2fFvcqzZ}RQ=b=cjXD_H6Xj96Cnlykk1{=`C(f^UdA<7r z%q$t9ah1l~lE_onAb1%k_9T;4DxIWgm833#432r`c+At{m1&Hd>_xb2UUu}3$wINb z@#@g~$}z_Q{h(F_=GiEJdyU;GNU)AUf1EPsL7TTClq@s}WsxPL&C$ECsAzho^tPL0 z*@DVYbyehIi~rDeq%alI;8cfG+zHUBbVu_q*FMZxOu%BT2b_kJkLplfTa?uD*@m*4DnJYd34;S%btp|(`)t((9U5El-5$PDE7_@Oc-$UmcqK2~;$~B%PG&nF zGW#R{n25A-UO}5jS9EaUuwUajWiFVO46VOKH&xd(4foEVJgkR&ryKYQxYsLKJLS+b zG{H#7+Ui_)hH@++igfPx z)r5(KPN)EfXq<8X5fCjIYz%K9+~EtoGT zOr7*=hw5jkw8n>jlpcMV=Gy7MLG#kzg64nMtp6|8k~I6CDD^#`^`FH@rxKdHyJZQhQa z&M>XG^hHyX8)-CODNYk$g?Z+fHByk5YK_DA0_DmcDXJ2^C32dHuQVfB@=9(!$@K&2 z+NWvKChB=@KWGkfn~GbT9c+Pm##&;nLfW}G=qO>MBV8Qk52Pq{V zsuXsm9Y!O{jD{(%1kk>|Tv4nqxAKC(@$*Ax_?A(|J3!JWHtU$!2XohXsRkwdU_+qDV5b0%ZvYjiepZaOd#(?o#v_QfThvZNGDH9XWj(~I8H05UUH!YysCZN?1sH04tfqF^>PS9s1QMvFs;Eiq zuk6^0mM*Sn>r;89C?ftm1h&2kh=cT&49SyVOa$Yv^T$RI6thj|VnRdMODwmF&7PyS zysJe;ObSz%U|iD3uad1kqWZFtZB+5KRF=6Cy8ezMzCtXwV+^&{tH-lqkY1i!ud=ah zZ~=7vfDlQ)r@?03V&e=yc8D&udppbe=1IFu@-93TO|QNkfk^TJvb*_Ex8Rlf)%0^Z z;S~ho+38UFM;LvA!*%`X+_^y!XdZ({R*i&4%`aUEmsNz+h;28j0oCx?Uw;t)iZKi( z2z3I#_cQ#PukqjS9lY;d|L4Hq|7-XE+|z$reU!3=0-_3Z>KWOg!B1Zk_4qCekZEyA(fk;QAC1Y6)QyqW9Q0q?YWY~&Or8mo2q?z zmMRwWdH5DO&cJRiNw2P%7{1N5l5ft`jY_7Yvgjw!-9YlSgg?)em5Q%~((zzq*Nd$+D!5J`g<5cfBn^^|+T>695QUk%OI~CfN362*;PLP`=AWR}bai8i> zEinn{Cej3mj4lavb`|PJ6^J@CNo6!|sj5g=hDS3x=Ac#lYcAvtdbXi6Zx@h)@|tD~ zk?d!vAM$cX;>P`-TThWxS_-X*i`hoYz7R^ta;?+J5ZEkp$}XbvNl8QdveXaZO51|| zkhA=G2->4ndL_^B1mtJnoG?%E@W=+W>-6M&qa!8iHje?s z0d{bq4oj?*yOiEx)ju8h3?ZllF|yn&A;_?BW3(ylvfwrDo;2TFEi*;1ngvleC7%IB^;;4)mE*S{Z6M3DQUz?tBQWh}Bg=cZ9_Vk) zoaw6yOk_o^`N@I)PMsVUOMRS5HjLjP%`C-sUb;@b2vXQqFdY8ibffL!*X3J4i}z3k zAJe+9JgUYfhkrk*e-2UZc4Ee002fCK23=Fkv^}AAJE@M7^Ni)dzGuxFF^NH|0{pckJcMk6C4}oH^t= zuAwP7@CRzEOIVs$8iLC4oRUO7=<l^e|JXwpoM7d4Kp{`6zp`x234Q%Dvno2P@~zBm^*Ar zG-|SZOq>$E+R$gOVYnddA1tV>t6MfV`x=$|8@}tNz1ZH|+a#Y?Q0b~M{X#MOeIZuo zdHFt-Nk$~^pL1^REO&w}N+>rxceyLrM__Gl27Y%&()m6Ibj#FfP{PJHlUk*j)|*0Q zPugPiQM|~ekm6D}uS7#v#}PH<*9qe9Apfj5?T;S4ll`{{>i=}8dBsXe z0MWw*Z<|%DJF8SYRH*aPfHZn5(rP2|LHf&fG~DA@RL)wV#BYZ4O2{JpW8MRs+Mob3 zP{yj*mfKcZhfhZregyV6Ig2$+*=}zv)UP9A!m5DKYC~F)%HjR5um)rl}TA0Bekroo`V@heu=bo=aCeW+XnjaMF;lcdt-J^7Po^&G)|@;H9h z!3W9G8EF3xYMcO^F7zIVA)OdmV`B2r=nj8+bPM?WP<}RedmmYf5ANZvg%Jd0l~1hE3dkzeic(~2nb6H0tIx{5`0Q^RUW5Fuhrl@jiuB#i z;{m3jgFv&Xqj~)tKSuJgVXA%9|vn3{H z4ql)Hmx%`O=XIMm`Wu*4ZeHsH3%l?9vJ?NHBGx3!OYN>TZwyUxlMScWZrQ={2TY`l zG=&t2O5Q(w5cX8E^%6Y8fC3?`2)L{X1*D&8THzz9$men^M^=+P=A*bhcB4C^+>D@I)`y}|QU zrw#5QJYPtFqKQYOi4sCI<{}TIn3yW?S`ytj4vl?%tz;I=30lp+LWeZ^c;aDQoz zHJRlS7+I_r7GFW2<^Fo?U9chxLcuSj@FnurxiuVf1uKmurkZ=$H5AZ3`5$M({!3 z5F{Y*`npl9-^nyB^%4(m6oHSQe+r6ObYlo-pDW=S|8n8=u%>z{@2bKC`nvL+^wD_ji)A`?dekbIm0eKC9v=jTXSPy1m02v z13qnVA7z(Sp}o3R`US`AEKK^`B7B5K9>WFG&y+q`gMu9!`PA4n%dnFZBjMq2Rfe@L zE}Rs{hBOXiLuIES0}bNA7C43LP`huET8p391%+K5%>Z|(I9wz&X)+PQ9~ikfZTJ|g zsT^U`S)!&;1`V@a!Dn*iYlOpY zVgH%NWRb{8;f3=QimKhBtb_R$xoDpRLpy9UqZgp4UL%ik>0>HB0&5F4XF4m*=S;BX zx~9I#N`27&*#W%r8K#_JRKcWmvoJ+GW09d}1;Jpdt05e_H_kFMwm7xp!Ia7{T1J48 zn(6$w8?3B2$fK8rdo4pMBv$`oy`oHzFO^;ls<6!f52N`vQ%DYj!LoDa&%}e?Ag~pn znI{!cBiMu@SC5ny0Ws@nF`@P4n_MuRe(j(9%A|Zrmuu?W%LR)J(IMkk;?1T zq`^G1`-BFgcjW%uld&5uxhY`3gT}~g03lR(j>l%gykH@=b z8^ahqVIs=RYwkCtG({nkux3dULM|Tm;v{x|=DNYw{Gx~$2{dR@TOLT0I^L&syRJ)| zpDjB{%4Alk=S^N)OiZs6zNo%dg4OPoSy^@(^;c#@TWg@eL5ji6P>Ta8PWgc5O}V{+ zT1|`!j|Wa$9+D&pqvCdQpD5rx2ya?LC~|W#0)yA*rc;0?a@%a60Xrc7noII>V`^Ou zwFo}Zv)O&xz4gJf)P_ghn)BC$`E5f+NCJP{W4zZtN`8{`q@?}5t z+Zf+fg@Q@z0v2ns*eaIk>wC%+{HbM3dd1(4+RMW zCUX}zVZemav;Z2d0TVyXK7cN_&HZ)iD)ysbfY;^gN*$y3UF@7`x%Wm%gCB!_Jdr=K zgv{1OWpIaZ_y@hCR7Q_%k#5LyTE+K6K+E6g*k$J< zPCoKZcLceSv&!;3lUrbjbr>z5^R5M;@veEGv>)W72&S^oa&2?lP@O{P>R;)mH0J}# zCNs0WMfey+^tnVEBr%rP?9_83P3owSu$xlWb&q<19= zXDF15aZ{FMaM@qh*G{<9-ib=uZU0_M@r2SDtNnFvHNnK1%O|R77p=Ld<(8Jf5_Edn zA6^(<(^-%P!IKuZc&dq$1Qr;FSCEFQ4s@65N7XoK?6USp2cN%mkJMMa`wEQ9?6x)P z0O(-3h&5dflC%*nzBUB)6eMHR7%@A&1_{1m>->b?Q*@4n7vuPZBl{vn3liDLfO`sNV(Z0f`MLp!Oh{;(lSb8gd&J2~Q z4In%3SAUSaC8}z^CJI{oVvy>EoCL2mNX$>jO>LEYOxFAfw^{0rS_8Mm(yvVg4b$V&b4Vy3lFfjLnZn36J&s#w0oN9chUq1? zT=@R}iF8>42CATRfc7T4~|dL&vO-9-H&RHIdk zgR|s_q1eAbN$|DdXWR3plteyBRlog}=vGvYLI{HfcHA1G;*>wM%Fg4Tely*`y`|#)EmFKhjk7|X5 zMYyUM8_GSH{=O%G-_-lur>8%vYC9L`!Y_Lu*=Wn3E(N_f3kJQ0Xrk9rEH)WQsZ3jM zNVSZ1US(%xI|#HsXN`uvt7FTxFHTX5nr~a2ZESyLdP^%ARrj4fB@$aPdPQy?L32D& zZA_(Rt{48=zi-O{_~;3ANamjL9WjgAqJb#rEUbF~`zW&6=Y#oGTywaWp6EXNs(ch? z1M9smzV|BQ_j)|=c%#Fq7VQ&g-tGi2_{n>t>Z012nFCW8Il;QI&(TF-^`tnGXXlk^ciQG^Pt(nSO;%(AzfoAuKCLe1w>EcJs{14*~pzHJR^^hRq!|}m#tFcS7kerPJ=GT%_q)Tzx|oeio3$N zC1ixs?aQ2>7urZ_;I<;9qc62g_+343W4{~r~|e+^6iH~C8SYgos9=I1+c{FniKOgM!v4-eSzo?J{XP%H0u zQ5J-5pD>zXaeCU+(Ay0g6?c+`i@=Tw{#y)?tzdx1u;cO9a(-&!?k{z0V_9Tr=S znwxW-y4IsX50dJO%~ht$T?%s<1@lHi{@WWuMWUw!y1jEf2U1i>v#E8FDpPa6_VjNa zEy7PY-4tM*k3nV`Avuje`0rQqVgWeKKpX*y!ra`{8~CZ(bWMJ_)#F?+y{5E)H@Lg~ z1mQ2jv1DkhdS6-{-#a&rGFjh>+z+dgfitTx7%8h*8Q#-EJzjWcOuexm7My)k;0dft z>)tzEgt=G8>QI1~`PG)10MnxwrCe27HY{CVG6srJpL&z-ultK>VY5_twQ(Yb8YI-g zG&fU?k@WJxXaeF#eD=XK5^n1;1UIs(9;Hu!kv3crsrd(@mA{~!?sN&6y2Ovf@zjiY zQV93)kRKGY2_t3K7*C~XW&$B*WFp{a$KD7ZUN% z#lX$2?z16dX!80VDH6jCm$}GXZAn!+HvttbS2N`BTp0fO zi?qljwalhM*qIv}wk`Zpki_mb*}t2iqlqY>D6Kkh2&5O;d5 z+ZHZ!vBCNk_#vR|T*gwEQ39-rPX%H6q;w5WQd>-M*0=JRPp;$vnIP71h;L>j;}(pF zAmZjlDT|>ZQ}az})(JMIeKwK9(1ymTYxyzpzt_7F$TT;&5;PVxp_PiZ(eh6j=|M%4 zN+1&j&t`DYX%UlL=D+9hg56v!@{+&$C?0%`K3W}_)EJJ3-nRO+D&4HMj3{Viw!V&; zHw~8Lh)7i9uj#JMXeUD;4}OUlhRL)9XjE2h@#3BPdi)I=2_Gg`i?5>;eY*?jJ4AGf zi{pF%LD6{?9n^5U$P$9IX^BBq3x^CEjIS9wbxbLcq=F^H3@@hxsF~%^1xm?h$$WMJ zAy->G7x1TZpo8Q}5IX;j=ZaY8WX^_2tVujfBXt3K$Zz1(KoJWv+P-etHg%CThNPU* zhr21y8dApk^ptFzm^OEAY<>XA;@`{*vxJfl_T$#EJ2>UyLd?B8riP0PmN*Jpy zJ!J}>{lb&e%7YO4Ak;W)!T17wQ4XN)exy@gZFu;0Sy{sS!#+m6uB1^=Fc=8j-P8{8 zBSmHFUKqKko{SPSx!x4lZq>7oAZM2{L3j?~Akb5M90jaVt`NP6D1DhF9~%OP$1rNKNCs-IrU+`Anh zWG#_MQ-AS|e1U((C)c?d^!1);U}@=Rqn&+Ft98Xm$_sw|28QZSp}cntf&<|xptJP3 zDQd|^hq1<8pY8SRDQV9;{TJ1VlUL>VH-4SR5`NuZT)RWhGW z#G}bCf}iTIjx6Z@9}Mc*PK5; z%&k>rjNBPqUs>kGdf>Frid%Z$^y<4b=rkKmGTuYZH@|9i?uJI=?+wJfjqf_uV)S_-^#6h z=m&N3H{TLK^Fs^TblY_bp)u+#i0ab9X9X)isjQbA6nEvL2emhvJhEIVa%oXDuc?yn zxK=hyTum^g>(X&oH@8^(XyTbSRM8ORx@Rf|3=lhT{{%q2jw0W7-T>uTqkJaRn}a60 z@X)eK{J_1lh1}KKLrD`sBGHp)apl}$#%&(WG{T|kr<@e|{849j4Q;n6VUPnTObn&f z(+=zreJgc9W;UNbNx7knmnp`WVK&Pbh{u~$^lnJh&jGQ6r8~W&d0$pWgrlxEkWCDXHR{W4y zrMiAGsBMfxaHILSo5#{%Fxoh)cNe)siC~ig3@BR&8R*6YZa>c`ZoS=1S|s*6b?@3( z_7*!H!RGN{3G%owTx<}3aG!An<9d$$1TUtZnNaArDbsLTeF6a5z?394uY4Lind4S| z_M=1hO2#(p3`6H5B?PXmU41*<6lNz2*}3+?Z#ZIfRgLDDkM>+#6R`Pt>Yg%O_Rr6^ za;=&kd{EH`+le$73&Z&>E8n*1t_>?+=ySLxTA`jMneeeQoWS#bN#OIC2C-Tv{cv}YdPm#5iwUt7#_PobAdYctsowv&__SyvjsvDeRrs-F>l zGen}jFVcA_QRHz?nZw7lhg^E7afURDq$AP4s0d-?f4E0J_V~caUo(BaQAd}iLm88=3b+o4NRNxjNsYQN}fE8Q@GjmoP);F;S=VU5QJN&mm`+8 zW%T1JkaebH-bejCyLyk%V0+b0va&+}wi2ih+n0d;Nkss!oeF22#C9Bi$DKP>oE?#WQ=J%U~le}DSLJ9q@;l{|N= z_+q~LARH?!u&VQV4z`9Zvgo990dzsF5QJ$07eIm5IrFO{^yUbJvna3FE`b z*X?IdT`&~T`#IQCy9w?(|LZYV23GGd8PKVz%Lx?T1i=h7{(@HEZ>?hfI|eohYk*VB zzR)MHZ*pD6;G4hsz4Q6Fv%N&T#W(%uet^CGJide@w8vZC+?|6C6{~slJUcIRKL)*n zRT0byKWoMB#X;t^vZ3kS;O-HtCQRHc@a_rYea=QKO|V2>gnxO?$d^B=6v^;PrQ~8I z2a9HrGnM0;61}sALxE2F$n-Lde+Az7;>_(PRV4a5*gG!gh;o&#C>l2=k6klAM0`azV}QbyidJW|ek!C7B%3@eKfan^NBI}oV?uB(Z$SC0iT^8(K$vDEab|RWj-_i4x@Jh{q)fe zQ#Wf_XVt2(YVdQ}z!XWMaR27XbHu;ZHO8E{g*AAH0qdz>wu`0No&!FW}{^M?Bn z!SqDQxWB){G@#i6eLpFRht3-N;9Qiq(&v>6=$+RuBlxX@-@|W~3Ot|FqWM4&O6=T> zdF!-!$iPpFbF5uR1%-Aj(qCZ;>#4|YeuLMpIYYiPJ$loLXd&^*vbj~cg!d-cG8(>Zv;NE_W+#28p6%Bnuie*7i`G%@u+Y*4tGoF2(l#K$uDBObIjY_m_hJOz` zc(}t%120h9Xm``sm^teQz*DZ_!AP2Tf~HfGQNXKAN*(5!p)mk0c#gblw&Yhwhv1!g z&O1o?Cc%amXoxewEsn=KsBj`_ExKO+E17m}nw~T{4*5<@8A9t#YcEQ1KMvt-I4eg_ z^94ph29>Juy74*wVDOe5%-E&=A^%A4Hjxu62vu^~)l@>h#Zti~FvYaPHt8T-8)%yF zvyAXPt#`o>8N|bA<-zCpnP+LyL+owo!pNiyajgeg{KIL+hgpdMkMVfq(Q>Lfvj%v= z$?f*1SsgX7p~)*_UPI!ZQ_@Xn0NR`z&N8O`5zS?UNP8OsW=q`dSNLb&Tw8*uo7$)@ zTJ9ybkwJE|;OAJ7M?B;tgXpW__yl$Ts!8oGm!4>6Mg#4atK^bTXjWhRBL_1u4l}qp zb%Y{y^7^0Bfkd-8vryz)2v5aG$}6b~z4kI$Bc|w+h32&zej`hMWi5#m2~|JKt}G8} z$bX|uxq0y&tMNs?70fu|%Xot~c(mC)(^6^Aeg&x=J!Z!6m zy(RW?|65`cOv6}i6O1%nw)N>1%I&QsHtW)13CJfiG)Hi%gTe+R+EG_lD0gVhLFl=Fdl;?l z6wB2_Q3Lwyer9H711*{^r)H+Uq>sW^$_S3! zP6W4PVUDTxom_%>)?j7WDkZfN7&c@F9qE(~S(am-f4OoCwH*(LH4KXA;?N>?R&yH5n z*?S1ZRpwEx`B0wODbEEK>pjbS`gCq)&!kuQ2J@xX0nbcjmEMJT>4?Zk?q>$I~uo??A&Ulo!`E|U z$1(7+Pg`cgX*>i^GFY&oZkn8RWv<{@-LhpC%h2!~V+6`$kQ*i0{Lsxm(#20EQCuUo zW2w-9jfX|q>a|v78{Nq=!lkQ z7+x+VQB-D0aITwaS&oJKg#~rqOGhtEWY8_ELShgcLbn^?u-985sL`5yW4GBCx!ZA( z!q6`_r$&=-nI{`Vhk=xvx(3$>p<|9thSAsUt{5|E;Z$7;IY7ieAh{; ztl^}B=n_z&Z{fIS-{-+GDIg28zM}j+U)$MhaG#-Cs})n{A>X@BRac{W=|vG0{=_^y zJVb$py@_0kdd&%Kt8Y|f3v<_0M#qa{E86nmv*T~7z{26-O=@ogZw=Rp@3Xi;u8z{w zQktO4I!M8AVLF;Vdo7P1OZ^rhX{=~8207zk_i;`23aODK{Ch8GObzMxhQUn2IdbiL zC2g5xJMZvo-0m(__=h`X=(D1b;~4NNX}X?<$#evx7o<1bE_a;^pe!YWdzCSZ7T%Vn zb{Bh(Wxb9!LOAzqw&nBz48pcS<3WO?Dak?EeYqD;4xhU#UqDyv_9x8q+BdjeYbe_b zi*3!Q^0$5j_0uC)$Y08?vq4-RBiG-(Dg~xP&&^OFjOOpTs&=rXX!H-=nt^s7NPn*X z>^Wa5{C3fG@okHdYPHo$e9aZx8F@C9Z3c0f?M58BM#^wX7+@7YlFY~XMG8O%H20$W zSHK*)K}^Mp%lM=(o=E6|UUf0>r@teVv_bMh?0Wxw6tM+oR}uxT`k9BtP&sp#S0n+y z25c1``#fiT1R-L?_4bV6nM8FCZK6Bon~evm<|rw#n1YiZ`d!>zU?mXjP{4eAZq zT)%Z5&;wz=BOEAFaRY9C_c0#gW5G@W42$Em9fUO5g$LxzSp(@U{B{(T0{ya~hXv^z zZrSd#;F(zb*cgGEK_)iD;Y;uPHrqsICppMG{>D3C@CvM>h7f(GYPY@o@@Wax?i*8w z%%Jg0?=NhB#}0)-R6C@5yWoY@Y2421gYieJ#%?@&(32&;B+j82&!iW-j*;6Fts5Kz z;>%w66W63uRxCL)=@Q~bOfyRlcx^cw_RJ-a&Yog?g268!1KR$RwlhfC zg=uW%mskT#V*RUs8r2Nj7}M{sGh)*9eQ2M#Mdu6zwUnXV=+lJE5&d07!S<_T2lZ(* z_4=E$e5+G=0S@sM+^Rj=I~x8xsHz|Q2z#CY)*U~iz@9&ISREaxY6r91MSpbbqSPl> zM`(75(hdc8j%rb)$a;Ki_uDf;lX2VQ;&u7rbgJlEQPk!yUz;Pb*F=y?F66o{4vsMx z48x=Er8tTXFCHZznVjVD9O(NL1Yl2cQ=_F4?Cvdx7;eTVEzGfo{q3M9CCPT7r;Zhr z1WEc*R+Rfm3xQq{X*h==D5VyDY~qsR>1F{^z`5+Lx2TE}*jW3{io}d>in<@?e-gJP zrpF}!zLb|wzRECvO7WfCaZZ~oVZ z#4iKDzdHQ>GI6Ahi0VJ~ef{`4SNz??fAiY}3?06RZc3(x&i^Vj8A@>?c7M^+DMBXE z6KAG=06zjIM2tlEO=pi0z&jsk?ENNt`^G)e5;MJ|w|UXI{`m0R#=WH*L9H8OK;G12 zAXWzyL?de`w6^82bT3sdN+Bh5H)L2<<3ehv3w-fK+vnp}!Bs`H z3@@^viz0~++t!ruuD@gh)-IQAtKS6X9}bB;X*m6ZzyA5P{&L9ZKOFLxZpXi$xrDW@ zfvJ`8|8SBDR8&_+R7U!U3MCo{R(tQswn3krrMMKBi`WkWv5m(fNMvDfRJjxVQ=5!_=X0 zk(8XA>GT~Z8n37S<)N8N_&(>M8-+S9#}zWUju^g~@aDI_sv4No&YZt44+afG zMG+t`H9-&8JB-#7LUD&3h{CH5bsmDr5|xC=5){CvzCx`ExnBuAs!9JdEQycc++cjC z?s$d1nlk9!?_4(EE>&?Zwg};eKu8ix^n8HND$}{IZuh~ zuyV<(n}?=N@2DF%u;n4mF|$%tJw?+LxlzUV*J$!W)Sz+$QHSoenH8L!5sX)+T0KQ5 zDYk}YmxUQ@7J~JWIN#G2d{5hWI?HI;@coQLhN~v9^H!1#{a`RvVf3H6lKZ zvAfAJS08Yae}>tW^!neHrBfv)(&z zi3NKZZdkzHnGsgaA z;SAAWN=@H>;)tzAyg~z9nCnZZaWt(v1;ZOd9Ffy0J3_+b6wXD5Ty@zqNkdw)=mCTx zS{ExqN%y0|wmbP1RfhD9_?D}#vcq%MLLEIx&SL`@x1QNOO@_882TRx5iFC>e@2WY6 zn)+sM4;R;qe~|d<(caZDK<5%Mr&k*CI~p@@j@ALv6xP%}w(dqgeumw#Yce90TBzNH6JYiCL9uzAAg9*QX(XPBWnJn`?}&3wy&bR_Xdgc}JaVa+Qwn zPJI5)9ux_Vs@iXV>UdPqi}Y20iFay#=|%k&1L-n@|CaZV|Ctmltc|UyjZKa0A06sz zBoy>x^qwaAzX3t(tbHrO=%U2ac?Jxi^!|9$MFY;)Ir0Ytg?R&&`$YfnFa6X(fg}Ae z&^6H6(whPx`@Rnj8WjkYheeNriGpQu0GDLPN~^1j817RS9}={k4`|u3BTA2firUgd z&fk{9GWjT;Rvtyz46SxwQ3-qL3uBxJRbn%Z3|{CXZpvZNBkVV^~vM{Q7d zqc^Z@s#Sm4%7|tVFcx0&AfNf8%*6_O@uR4^o!UtAWQH<%Rh>!lea&vSkhe{Xz_mG< zIP}7Hok^0$!}@;QTE4QH8irHlQG24_O+6RTpXtw3+MuGWdi&**zQ2j({xfq>{L^c4 zh8BP2jz8Pw|Hvi(kGdKe|EJt?(5K`Y3!M|c7@3Tk3BKid!U96GV4{pbbp=6enOy5C zOZnDNV=QdQpkKPe_fXKST)293L_RE_pX?jU-kq#xFR#%wn=*s&QRolEu1E$}al)}8 zYd;Aho=HOnPzlCCTw}na9|)$q(X6DOKrezgFxsnw5x0%mPN3AizmeNgKt-YgkV&DR zG}#a5-0#NH=H{F7_;*h|_=#j3F7n4}TFt@r_8BK*HoM*DM{}~oY96-JKZ&$ItX*^cum?!DU#-u zInz3XA2k_#e@mNFV3UQ~IdF1RG1QBSfnb#5YN-)jZLlYxCYB7BmeX8mm*M&yWdv^q zNhb^B-oEwcc~-O`qmyYCMhFC{cy#yz%DF~e#F^M7NHf>0Ff?%`^u9$`-aI9cieNhB zFM9`(My0$3e)QZQFr*|dn9j5V%iG`>odMtS`yo*OtskZ}HW7(@P> zc>T35*#Q1LTDZ`lOHV7nRs433XqC3FWoFDsce^-QN%U^jWY^bCuL7YbMF`srWyInWddWOe=wHVomaU=lCF4_j#&&gg>5eOV zZG6WXNm(dGhdC-mAA6^pt$|F_B#KDgb{~lc%`?V%&-c-3_V+pxlY}qwc0DVi?x7cY zqPfQaIIcEKKUhU^*UQ%M9yp2@UA3@$;7Jmt7N{|2|&YTk2X^{5`%R>BAX3O?>pC!z2kB2f1KXBhmizBPGkI|sury;Nsio3A_5zpfLO zQtS{tJV+VIeHG7Oeu06BI=O)t0F=P^cq%|M)w;0(F#+q58{<8IE~K`IRG$4EzUW2= z_g);^dg0)@vQCb=Ehi^xrw_HR@a;@~{(oqr|6k$5iVBB+T=ro5|m!67VJ2mKBJgnf?{ zM(b`K1HiP2==y*&a1B_3<@)3HKysa>Ud_RYH+CPt;6tT#_@ zeDMl6;r1*nSD~@c8FbVAqV-YJ`}6t!n<=A>cuoUqtJBgQ;bP;P(c&%t=pr6a(c@U? zvV(;4lE=(uJxFd)gOA&y(G#byL*oLX4D&DSav!KUETjzhl#`{ZM&!tsq~Deg*y1@$ z*C0i+44&#M!csrh8UcOn4g*f8d_8z7F<+Y44d%|xNDdGJn`X~qLl2u*&g12j+p5Q| zQ{duO@2-iUXTPhC)(RzIa)GIKu2eZjH7}Frgvh}h(%nwNA+TW>h0Cb-AS3{>+ zac0XJAzOUJVC-8+bF%pq{JV957=aF?Eb131wh&NmQU>?GPw0{dBPF@OBhH3a@Ju}Z zrsQK=5N9S``HsGcb0N3rS5VOPR+_ILlx$GGA#3JlaQQ}k=bZn&wF>na@HCdnnkk#7 za+t-JPrb*Q%?M5;Yeg1-vJL?FMwEAGe!FzqOb%j1;vKOLcXyIC%j}F24>#NP+rH{Z z1(t9er4kq!FY!x|o`u0l+cm-NS^gWez4IKbj5eg~B4T^q1;4lb6Th2$Fmj_6(MMl7 z=B11U?I$D(GHoPX+x5p)P6e8EY_&Wim%b{Eae*LyCAUSh%#P~brXs;DdT0IG_X_~S zOz~+R;M0W1V^^@uYmlrPtL9oCW2|v|O5G5{h#Ehza@)n|_=zLc$U)|AWQ|CYuXbBC z@&&U#>04-G|zvZSmH*dzSDipf`b_%-2v{P(8>oPVq-_lx7BxG>INS0 z)GbSjz@9xu!xdM?K;`m*HRQksBRAP8I&65KT>NbC{6k3sq3RihAu-G#We_An_O1fDxFXJ%7_$A%xi9E`^VzUM0>cZJ)wS(<(|56?8G?4K&l&Rsn)^~4l$AerlO8Ov z7q+MP;b3#5yU#|aSoj#C3G!JQZX>2i#ITS|#tOq(Bc@f3z-Xhu!|p_7h!jKZ!ZW1k zKoeM%6y3Xf^l^%Ln*B#S z5;n-44*g0u0RLw&{;$)-pD@N(Bk`XVqQ4zSmH*&yB7a<-p=+riAfN+=grrC?BSq5V ziQ$>xfg`~|tJsQY=?obVPvr5Kmm^m;I%<IW{RXwG?K|jOf!xqSV}|liuG^AV5$T9NsBnFlx?VE;gMAYaOSOWOaN6 zA1?}0U`bNLh$@mSqZhO;URGU94|z-rRp^s=(IG{0WLl@0+EF&0?5?75pR{L?@w} zOC=5+(Ut4PBExH~MnG3jwO&6XK?z)NEu7Fm$zjg%M-S(L>$QM$Caf?5t@(mRI=wyyjTCNwpZaVPuaqMCRgbd3 zVL7tLaFmTiicZc#Sc#ObLl2a*5w8l`#Su(3eLP4}h%yY8WQfCsVS0}ZZw|HTLlB}a z!eFp|z1HFMa5#ujPTlgz8n_o$v?<8iRR|`Lu+An3#n_K)D+Ux*8Us$*?UL_!SWrpv zZz-Yi$NCYWQ)Xx~hP(-wbm{?zH5fganUb>ggAs)f{vO>UOc6Y%S>f`1*Yc?|^V^WAP2ggCFZ&38f-{dqGc5(tR_CQRB_bw@z)M{{sO5kHgN-E3h$=jY6UE< z{dulV`M&)sL=~z%5`!X8Nh(arfi-;|qWN%{?5Lb?w{6-qyKf8RH`m|1aPpNP|T78KAJZb^WT_}W`qDs?ud_%3qrp91X&zM1B8}7#*mw_sU)-vDo!JJ1Fv7ZrWxsQ74;`ac1#VunzsGhD@3iNe9Y7auY*DJb4*_qOig`+A&xEP+N`)h&S*!an!DgfL^40jQU%)DX#4*wAl2 z5&7#3Ce{y!1n$Apx;Kzj`>I3gA#-x;T8$x1=^3j<-z0yaaSxVV(}$^EH7*9`5wZta zWJFT(x@102B>34E!&oiIUz;!2odzSqB^Dms{>i|SUfEO!fCe2;A*qQB zKUO;q(Vx(~Z+4@f0$l8W(C`GljQFEdc<7)%L4J@^zfp0wKXW__!>B@U{eF8Q`JiIg ziiM}Ut!lpEt;051Ez(`)l@hmRnXY9ckeq}Mg@s=QrR`rUN?fM{g^Wr)j;tRgw;uwY zI?>VEucxh3w>35Nov3^>OVLIq>+PgGq;i|L0W7{fQzD!bak}y3q8wZA{Z-aiEw+DV zBPyO-o(Rlu$L}w+@1vetIyCH;)Iq-HwB{_CfQx^A+o193hr}osFEH2m~PI%v?CtLx|jS&UXil8 z1YNx!rMPVWgjRHZsF3OxeJLyT;Mf!(ox5BKnzS!oa&n zCoXJGXq)ZCIo}6w9$9d>pjTX44ZE1B^Gn${f;*a)tTevYxZmA`6*lZCJ4t}%vUYsFvJpQYIIo3=NL z3bqX^VAVRh#vHQ~q6aU*>-dUS8E$0lTZVo+S9}MslzvlR=x6k>3E<*wJR-4)SOnB&!*>%~MYkZH>}MGnDV-I^o3%V)5E>x#H%2CIyGqN3Hn) z+Yk!_Ysn{DEGa_#xh?8k3TGBSOdUx8>Dms$h-`E~XPh0f~Rog{{ z?aD4p?CoO5x@nG>CfUV)`)kYHnmklGUsDLlbr-#vk1t$nct_*4fv=Og@5MMnQ%K!o ze2V|Dl(!TMX%qK*mmI>@k%6@gQoo1Yd3VC!1+{41h!MVDr0?Jk-~gD!QH61#f4VJ% z-cUn-^rDx(Y=9k4KAJWrSmF;S7uP9;g|73g`4I6ng{)u$Gy7 zkT0eUCigNC$r6|k=JO>nh$};HM_|KJ&w8`%<9UezhTl=|^wP*fO{8guf7*p!-lb9h zT5pgy4MkD5qyhV^6OH)^*TT$uLyP|ceM3`xb#QyhIe=MPd>YOSkLA|(SiphLN>ctB zbGn_!Xm9b7c+T40F7}T|10ZG!L7w%y(Oj$%(HHE<#*xB;+KjO>4MCcYJBzX^Y25ep zJdO;CykITp%4{!|gk<;N*@1+!dmc`qcfPE{o5>mE33N}=M0?-Ov@m^_Fe{ldzK^qw zy2oA}A>?Ev4225RJkSws@%oGg)D?q*5{0gtD9q)E@xN^2FwvndpuUKV;kyF$va@ z#F*tbYa!AfH)=DN%?%Dyg*z}^ji_`yD3;FJ?VhT)b-!_lG2-aEyJWa<4D5b_ZwO@> z7_aq)cgwFmLosm-5^lSix%gse6$B-_sBnzG)5P;vZ+Uc#7~No0?XYhObxd?Vf}md$ z$9jijXb;p=a(BN=c*43(40r-9ldQ{6ZwNVN#FZ-%Qp-c1xV-$trH+h`PonJO;Ej3#E1d|WMeQEe4|R4?S4Ih(ut{Bu<4*oA^OqbfH`@ON?%@3s-1#4B!heaJ zO9_FL{!8RMZ>FPTj^Iy)^TW4{jJdtIH-i6`I;YHGVF&z@I+vywfEV$kBlIr_DuPwf zG!-?9>NM9fwK9{{6E*V6V*0zpxj$SOup1tyMHrL>6eSd1*HF(;*GLzL9$gKfC@~1k zpSWGW{rzdo*MBenTK_wAMesjaC+BGOcfn0dnQkfnFW`;}3}scVv6Ak32O4$+)Wr;n z2rZ77$DPT%-4xHjROfn^;|ahk!4?<6yrFnGb!^Q2m5Xb0Lw5@%8EVm$kYQgjG9m9q zPPV)yR#u53w-tJTcH)`h5rVpTW9J8|xnZvk8qqO_Ch?>f7L6VV3Oy9AxGDwpd>CpZ z?KiP#Hf>tie8aQ&mD#cvoCH!WvRd7g)@d(^yfO(Z+@96MtXWpiR{ZQ^uGqH8Lg@RYy6vixw! zTdijbtwJ!Dh(D+~!ExRIK1gkysK9op#}3^Yths(~aBuB?j|Tw3kK*g&cL5_f!zYp` zs;@wpB&ZDBC@5bb{nbkRG^;8Fb}+1HCwfGapmZKL)o!{FM>~>`)SK!6~ctvLmwB5H~-~)Jg}qepJ_7?Wx+$*8qDj z2^#N`*!-2q0DjcS&Od7jr@N}@uU{@S`I`&>2{z;ZXUEz*e|4xhn$qyGzvs6gxCg2I-Qh?v7z(A)+EB4 z57!gmn{1&oF|R-wVDEd1{RF3d_Q!{-0Lgvzn8S}Gnk>H4Tb&1NWreTe|l<4OCM z#M(tT1-t;?qhG$1cF+KSl#HV$9j$Li+zQZZu57JU>6{1^BJ6GexP8@(TfA_?M#gob z3`^_6fd&RL{eHUMmUGX_0DHzbGrl*R^AG&y+T{n?J_UGJiPtMy)h@J=06B5fXZH4^ zp*;l$f&nEpThhEHk%UU&@eZcpO;>jf&t%D@fY;4hiHV&(J|}P{r>Eb@Z#Av;DsEo5 z5UwgjE}Ds21EqJh7XKe-?;PFfmUWF*Y}>Z&q+;8)Rk3Z`wv&oev2ELSQZaANIo+dg z_j%v`?svyX{(Z)8?6vk@m~+h~O{X99{oL@LhehCqcrsq@Lut|BIj9XslIW?6x#k@o z(VS9|*$u?)n)6xZT!tN0Zwh^jkoU)h!$Xkek~w$o{BmpGcvPPf_GqV4)+DtlujpD< zpJ;TT8+D}81G~n#(H<((qncNhydl_`jG=cZmicmJILlBq$0R2&$D$lu>0cKF4(VJq z=F75W|ArL(-&vROACN+}wa`0BcVsVxEgLbjDYn+I+BMNeyngad?vNO-A9MYQ2 zx#;W^%q2Bw$9w)++MYrzWU7JWQanRJn5PLI?kW_2q7Vl7NM1@m$?Z+A- z#X&Li$=Xm z+4cc6uV%`;u&?4uTcxUNj56KFosiOb92ZZZ_>$1Gif+~Hj@+3vuo2_fH*0Am+t>N| zmSNZ1CJSTe-Qv?dy#g67(qX|&k{D&t4FswC$K!vM10U%2Wyk3MYR7-+=lu`2^e-z0 zsXl9BEurwh0W)Eau?|ODgCvxO?fI%14et)JM*(1=iEbl<)5@GV#)6t-GYEG zlKgZ#+xy-n62)?-3>Qz9KN12&l{P ztn1!u_Ap}|g3aW$1w~E+G3ztZV?W#lmZPZ(3viItH~CIe%XoRRrjOFlLE3;VG(F{1 zEkbj}@!J=Z{Y?&iTRd6(ipz)J8VNRL=k6%2wWCUdE3VTQnu<-WB2rPb#;oQROWl&U z&on^6iYA@D*!pnQN8zeWC{=)z1A|hk#XI52<#my*uuPZF7J_Z#lA=zGvZ*Sg*^2Nb z>A==xPD>3{2t;F#l?*0yOExUbQ+jBvEa!bNfU4ESv#D_oqEVG`j@G36q^OkQIDI!A zK|ggVHzSvHBGV?+Q16s=ZrDhN+f#-{3=54?Fo6jFJ74M z@^uBOZ`Zlf9B_C}RK8&oG~X+gvr#0((K{H$?tp74CP5k|6AY+Iy3$7P-eZE&lm866 z!>YYtd?Yl!q!HCzA$+$H6_~XRRaR3K>ap_!MLqt>P;^vpoC(-QdqU;25pV+RPC1+T?uVt7J@_c*| z$+&7td=+-8Lh0VmkdSsP@8zzc$}o25Xsyc=$TaH!`WsMVmcemJY}wqyn7)b@>3uz- z*}Sx8jpUgQLn@OazOne=5V>8k&&!^8q3D;J$d@?$m%0wh{%PA-#czW4C0#c>(L}8@ zCPf?4z{l5$qfqf`6KJL^JHaR4uD4jJ_@wb=8F0M26yARM;Rkp#Z5LK0I*O*7MU9B;4D&{VDsYul7a2I(mH%X1r+_jO&qEoV)DylU_k_B(9*)M0qGx&mLheCf{X6T(#d z>Ad?Ib|;YYX8HUp*}>je3dR`wLnd{NKbkQS#${~W*iA0nj%nSIPk0J*JHBW#rNc@Z zYl%{OFGA=sLrn8vh(}&6mb;B5>~AbG1Yh>cTlfo6$4NK?lyoTVrO3XYL-H(sy{zQ zq3QZC!6+rzH+rtRV^6BsPmA^>{2WZ5_HpIT0f9;yx&A{nYk)NakaKDRM*03r!0IrT zaKk8e)$fwj<5`nxngDD%zMROKy)-0uQh~NKyG?lyi0)(t!q~Li=mWuPQ0P?po`i3M zgrvb-5-pa5Z-=YFJi_foz7)R{1xyG%TSGmPuNMJtcQ|+<*(Gm){KRtee-5bTj<{f# zQtj~Ow|;*2D(v(|xC)zJqTTHg^U^~&>NpZ8?Bv(%4>1PDiF*O$)tQkal*pQw15^<7 z&Ux%aBOI+0A%>SPSDFt!EgL=x*!=A&bg!f&OOl^_eJvEAG4?6!>5h<-BC<+kkrbsz ze7pkg{yhM9I@gq_Ww(hIu~4EiP}CT(ORn2cwvMx^9ol&Z@a$e$<-%^0#gC@a5QsG| zF6Dr}dVp2pB6nWK(Gac1N18owqdk(vF!l5MHzaJ)z06gkJvpZ zikD%me%o8;8n@e*edtl}?u{isi$H-9N_U8j_~z+e+A|`~DIq0hZ!Pj1-kQgc?Ab}; zyid_J-A9ZDe4FbH68?y~0_o)aI=C1>TQ zc}4KmlcKBhuJAc8g0~F>U$!geluq{|q7J*83jiP8?!i%Cms;-?VtkynaQjQ(5^l!x z(OAxC*%CKX-*UvBjvAL|{lU+N*^8VTG>e7p8Xb>!7@s4q@fw|)onCJ0j>o?U_L&#I zAnU$n2q^ze1^GYIIQ+jQ>4LUSHeZAoIei;rtAE6Q6>~={Rg4Zp^<-w;mFNU^J8QC& zU7_R+b|~{zcInV&kud6#+Py_dlzzgg)zEJ1ZB z>y;FRCi`u+Od!6e5r9h%retGHSYAJgbErnkl9MZz1a;G^pANQ}Fsllsvj()P@jXXYRh zfp{U(I(wmjvZaPn{7$;8`s8Ma=o>GQ8(s;OBo8J z$YoSJch1Gzk{wE|s$B`K0)lTWzLe+0orZ}7p-xhe=A}-_eGMEo7_HXOM;9mUd$Rm$ zg@!z)mdCw~l#iE-+rm-bR|z2?) zd4G=+b3`eG4$!#^)4X58_A*}Uo$zUM;gYo@%qhlIg)i4T)j(@u&4M4yDU_Bx`5sBI zNn&9FO-3bhAJ#xnhmW;1XV_{SZmX(hEt?+Mw0QhdwzfC;p#k_-#GhuJ){H;g|&0t3{9>M;yz5Q|6!qyPYOa z;)j1Y+qMjfsoms8;S{a)Ed37kfE#K`v? z92JnO0#x<30;3xf?IRgCs3>SRDx0aMbQi0rt>dKnbK0(L_-{Dl-55;zvi4G~&z)cE z)M^culWk0dIyWkIdF4eqC}<}wT-p2qBraV@956Tc#5N@Z0)_G|UAu_9VvV)M$Y7XQ z%q?Aq5qx63Q{(d02Q9mT;r56GK4#)GyYU>1@J!#Am~KWYi*}GEA7tZC3)5sQpBjjs zpq-@BCW)P-gDs!1dFkdmw--s8nd!Hs)I+=aCwl?&a|;YkLaS|H;%Dggs3>s<3>!#f zltD5mFN{O`Q=SVw3R3biR&^Gk0(vm^ebiZo?i{o87BDqxNXMw%5M{#v9~wZV=@o)Z zSK7dLSmm!kz=Q*-pngWIG_)4qA0~+R3^^FtxzY6YCLrz#8?35}D)$@~@z&;3T0Eg< ztKLX^dVDQsR`GhG#i6#wkfB`0DDSo+8NS*BqwEYp>(4_;&#P?ZQ?P@eV@z*-cU2D@ zziWuglWe2BP$ROpnJn=3&wLoS$b6@#PUYLqyG*g+GI3YE+m*-u!ZxC z8*5m_#VEoKnj7kZ_{sKdRQFj+fqgLqZHApUM*8Vv85R1<1KQFXz6fDf@Yj zs0)Bc3h8U#POxt#4t{sf%^(){Z}#&WCDo+`meOotY>dZiTil^=bnuXz0Y8gs>t1}- z4*SL)U5(^#2$W9lM+o=T-zXFddNR;^lf-nZuD&l zwqU~TVR8#Jh(5ogJMY?kWOvgdBlJ2PcSF5-$C-BZZ&i5ubPSff>$=`_?&Z9_ zLwQ`=o)7rc%9aT?D}=nW3tO@b6}6!%-VJw%b)2<2FM(Iic8j zAhdFkwzdmPIrBtGA*iI3gsxPBv{!|;wPjPs*`pXjw?r3e#YDCEsq*zxJxss#ai5E% z+X-RT^>K`|2#sIrL)YOGM7oSFEB6zPM-7NrEXh+fg}$PPUvVN^!8V~@e|Pv<<@?A2 z#-@sP4FJ0d$UBd{uA$i7hy4b^Es&?tUBW((dcAU}SFh5I)|WNWLx`*Ee87tcwB8TR zE+Z;(JdEVHEY3+J;Snrm6#0lTD8I@pmJwps*fJpei%z9g7+QB=33wp0mH|Q`0 z+AtqtbUiYxbLbqI$(b`PiD71o*n?qa(a2;_h>wWOU@#fvCLXVQ2?N%@!j}4g(&mc{ zelL**7&&ihgiI$5I~-Qx+k2aov43L<&ORvA6%^f?B!i(FjfjePqyb4pcY^B}*fvmP z(Mv-$twhlgkZMXIkWipZSPc4m)(8ZOq_VzHz^oAp3eC>E-56j?y&LZ6Mqw`|;)!D* zh|pWPpGx@6=3f3NmDqhn{-UU0RZ{f5(@}};89}3bKcx13+@c*gjDGZb9x+>^_f^oi z{XOZLG|W^7wMOF34DE`zODGVSQ*(qr=&Tq6UC}rUiM$8oTC}cWc%>bh1H>o3P4^Y= zkM;v##mEvP__uG*aR06M%=fqaL&(@f|7$(e-v<4NzsP@vmcllU_HGKsHeYiJ|0L^X zDQ$gixr6^eUFBkzB@a@eQsReS^H&m%lIxYMtu3AjjOV?x_NZ)W>9D*6+wR&==={DL zaI^BY72Kl=9~Ehjq>YJyT5d`x04?$7H&`=PO3{tFxR63#?(btczq7cE3eGV-acDkpJehdhm2>^mcH(SQ4 z=!dZVa&gKvYrnO2f}z)f2CuX`W~-Byl~gjJZ8<}FA*k-1+m@Se_kMcf%087rZJ8V+ z1&1LAoJ3^r!m`BCC{+v$=E$I6nM-M=_C`iQNLd)v3H2RlxQdb^u|d$n?_{&*xiban zR~n2B(u`{i>qjH%^s>_}^jil*MD4j*$UZPzyb18qcgG#GjbM`SZnZp^wa-vPl&UD*i4Rw!$n*%8Z*LW*lK!UuKr% z*h7AP>dau`%Q78CB)ra~XQPjhrq1<$T@Giue2@pjXlx2CY6(ZY)aS6t6WRoMp);!z zBSWyHa*Rh#8lrq>fELK^$7C^A81G|$B;qDDM_2{V-liD*YdS)$TMu3TtC6PnUkR(< z|1Z5+$zI>k_zwh2+Scfw*>;xFn!=Ym^CSQx?gmQ=w1jH`OR@ zkz(lSuP9x}_}0B4`gEh=HAo~-mfZrqVRn7LSkV>?k1&3Y9lw)$Jee!;czB(v+1ehm zu4EWLSC!H(yfEBYuR1;<=`2u&uFXFY8Q7K7nkKFJy*C4shXTh+Q#I_+O0zghVguZR z4*JkYbkQFrONVO3Pn+K}Fg4wtFeh!pB;+v5p^eZQH~BlCT(jPhs|3jp1k{Hx%@o{- zT!tS$j~)=5sUar@LV%!Ih&3(6rb=IEx;PhNg629eAWz!FLz#p6hovGFy4E2L8Vga4 zdTT>RpYQTq*qqkoCkXz-C@tC;DBpgu8Zxw9{sF4FS>ceoehztpCe-I%K`t6kyaS$K zf=%)h1ke~GFoc<)Pah7>Fzm7sIeKrdBd!VfiWd8cadI#=RxjaUeYCT)JQGT!KC_fU zBvZe$V}$8waqhgcNzA%iSRR*MoWWuolV72dHi<>AG)hNm7;OaT5_K?a1YUB?Q@*|{ z;xgoHogKou{xOebCe|-?-fdE4VVq2Z>mVY6bwe>Nh4Fy|>*h7M-qbLc+PYCrj8zc z=Xx$k5h9~$(9G8qu~e$sNp}w)R`D=}xzL4w7b@ZHKkiEEgv!(1uR-R~BDJF}YaEz-~x{t@GpYeH7K25@Yj#r^G9TQoqcX^S5}oW*FZUuf^t`gqVTDwQ$XP)`~uVZcUl!Pv_4=j43e~wR{M%< zdpoqdOWhq&@mmIeTw6Wt$8E1$JNI1Mu;4pYo@qrX+oJr(cNT69j~G@rPWb^X6j|N5 z*1OB4n0hHM8Owx3aS|@!WhC@G7V&xGMFO;6I*F$!CKc8M)9pgA zd0T(Pn$+6TAM{^LW1N56+4!HeF7^NC+xb`Bo26u_I41|s(+r|00H2tm3?SbRXrbh( z&@U>Pr^dgk!T*jp3gS;-7e9YGb)9n@i7IM>-NmsNW51qJ2vEp*8nS+Lxl(WXc=#GK zr3*g*!flGaS((~e!Ku8VRdZ~SUSp2ZH(}N)U+b3M)Kv0;b7=>WLfh$oYU6e1ohn7~OO#UO-4L=s$_*f@&P z@I843I4F;&B*U|_uCezbzscZ7Z~;d}B?igF;s7tZl|7qd2tnLyTO#?-y2*{i#`{^u zU*hNPh(x%2$`!2^uGvcX1dIOQt?1F%+jMy$`ny*GuqawpZ~11H#@2Oq)qa)E&Zt;FYzm}e9PBvEg{QDVzsCyh3E;eB zxt?taKJ)K`305)fD+eXOkXdLmomgygU8vJ76~3IOAQAQ$EH!U$rI!i|e!d!2G$di5 zP&C{yVZRCaiFi4UWFN#NsM;a^h^p4Zvz}syRt8Vu8uQ2!0#(}HoJ21jQ~=D_x)YCH zA&lqP!av6h%@m-Hfng*LI?Ho?X|pd)$oE~Q;X%-%ys@?0%V$1imKsZ|9)&u52~RYe z0GHVFS{wX5JU=o9W8Yu7b}aK2k>6W2I07(q(@P~Zj*)q2=WgiON)G#UBS1TZpHcjI%@ND`${e9bAJZ#@wPCLG3G}!dA)NxA6X>YfZ=?4Z z%+W{C#1X7xj4PDRcJGPxg*RVQ>s(Lo`B<+(aAi;qreK#`qfeM&$fD&uBQjxX0n;XY zqb*j1&kl5!Stg+cBeTR`XMmbCZUB41GG$Xh>(48p|G4EHFeFkO)!8?Ql%lMTE zg~yVc1{!xM?iRN%Vg(5IEwBbONEBvbV4%VcnQV=m20ts4F+XVB@y}Wg|_& z6RO=dj@NkJEua}p0q&bY63B0qf`QCo+Y~|QCC?ZJe1AgBI8`dVu3tBr;;V!8zcUwz z|8}GQkv4u2L;etl_$SI7C9f%q`L$zIWEy3iQoyoG0ay^3{^B%4JYz7>RWg)x;F`A^ z0$M%9h^~~cLcBs8?+?&^FU^nlxUV=vYSOrCER9Ka$_Fp57tIPPQKVKS4sDa1Cp5{0 zFbNOrj%g7`m~80r0!&9WRmKDSt z5_=qqT1XH@<#DAZ$>>QMf395 z7!4McDOFHLuc(MwyMIX=vf60L)T)!^QoM@@$oN#9$yx-3oQzWi&Q-~U@I5tMPzU-R zx(mCn;ZUKp3>2L;PZmro z$Li;#^iF6&$l9qki2&6pGTY=K2B6;)HzNjNmMQgu)z&39zDa|dc$FV@sqMmPd_yWF z-DzVpj$3;`qJAu%nPu2^%*z9Vww0R&PbzzfWbE~rmWu0AeMUL*b>}o=6a@zAiahwA ze@>i2vE!D+e*u&S{}rI*{6E?FA141JjS@7rvigtWK-p3eOBvl8wpqGKb5&rD6@(f* z8J@Q6!JiZbMPqed4w+t~-KG~pyLDu+r@J?Gw27~BW>(9wBu-1k$k zH2o=#D>u5SFVdsi@1?D-cR!o)T`oT^F8+yIrp;{SHQ37WI`b7jswIDonRpMR3B#V- zHxlzT%ep2K?Gp=lz&)R)*3Cb+}l7|S2(12zB!vyKULTr7Tmz2br-V-UwlA=PIs zaUxq@5vi!at%{1me%U0Zl9-_c)dgTjz`IR`HWbQJ-EJfo0$trf{>llm0T$w|SSBOM zl<|tJ7x^a|r|ZZMPg69q+d4a+#4?3wC@+!Lh_4prqRCz`DIf-Gv$}QCG1*{>ia|b3 z0{WBPC|V0~-7J2R$pYDBLI{UVRT9ukAk~d~E3w(K^eh8A^a%w%NjK?tncXx@G0*d9 z2;^1fLBAplR)-pdY_3`K4xG?o>i* z+1V{nPBV#A!~!b~J@Sm4-9-7i!#WxP!i0rcs(e;& zz`BA#d~wUA-uD!T;bW^C&B~}NAxCg6n+oX!Vj$a{Cdx@171hfW=lLtgDAHl@umR&kAd6L)7A$ePsJn5v!fTBAQfGjJyM; zoZ+shCpN=gTir+DxrCi&DwPM#3wD^Dh{vig(T28a_rvE{#t$q~li+I#8!XFt6(H_? z>7AK|)*!|%DjXH(+`7ZOV+keQw~Iv+k|Qsn(lULFThoSfn$DvDB|+r%R9rleq)Kk$ zOJYN$wsmQWOi>UGL>4N3N~%1pot?PRQO1%{-8~QbY$cW8)HUTeGKk`OeV;6NEa#9~ zUIVfHTlNhC)=q4R#VPyU(+Gp!1Fnv)MBGx@&RzkB1<>@)z4vl+jdH)q?P(6f zG=td1WTzsD-4Q!NQYRlK-ojQYljkvA>;2kRQdc{&qR94!&|h&@Oh=XxHu?HzyZb_l}Hf(7;-LLjYQr#@)+|mr{tA8N_^Id`ph^;%nSCP5VYK z{zT!QwTmxn2spPsv5io&Ny&Kru1U|akiExx+7h7+TYJTTSF8~>YhLT>%h=R=2Z!&r zhH}|tzJ_y2eI7W#-3@i=jnF_RGz;Cd(b=Rs3G(N(Txz4rX^s& z`x{sNHH6F!0chkXt7c)100a6Wvxsvy9tSR8H|O|zvK0jv9Nb?VK1;JVA5Fx-AsRCK zh<|TBUb=L>($M*QI$X&r<)U?gpKFY-nviDeFkC!WV&E-GQ=MV%se6nvtN6nM#tD0= z$7r_l;B~RLnT;F!m%=Zrd)my3ncjw!12-hbFdGyz0m2X=?gyLVcHyJFf>4nYojNXF3AP_fB{^l{n-&H z4-Z4)j!XnLBewWkWDt&48pl9exK=z@zP0Ivg}I;zReG6X8gs3G*l-DT5cYf)UP!EN zjp(OzSaprjZl5EL5Lh3d>1i?(UN5ho3Eb4!sL&vZnGfNP-vyi@9VbY7I3Tutay3^I zK`kse@LZ%{H=sP8`9zYze9$Gm0sHX&+>hR$sZMjXqDh5G34L;g9 z&=|=qHp}9DEbI8NA$Gv`fcK8I-a}(oppA=Ia5w717(^ySu4A<2$?CYFG z`ov>4`lu^tR&ZeRyQKJ0G{1JFq6~gh^QLiUq~JJkilYmrNqa+H&`81b2eZ6LFOdV`%@&7VzJ|2!BSh9uPgaG5k*AW zo$)~V9)+qdqYCz8I;8_{L?x4q+&NacA0lRUcPKF@C47Dur8W%O3?UjF1amUYCH^1> zxS7u;V={R^eimDus|YJBa?>brcKHDCa*Opr%QFC|ojQKzZUkCnu;~wiNONu~Ib-)g zVgId^LZ7A)Qf*N`1>F4Z%Q}N6SaXcov}R)-K}8zF!rw1uVxwh<-`L945ys(5MD0H4 ze%LLF>C9RS!W13mPlRzS)l&b$2&5nr&qMmXk$!b*sZZT|dxuwd$6S$1(4-^LC`Mw< zZojB)dMd5L&uPL&Ca->kE_EWym&$|*DNZDe4P%WM+uhuAN{5_A?jz-sN(!j1Rb|V{t16jm z3&;8gdb*Q4|MQr@^NDYr#gI^~S^Mx*7CE+dlAF<6@+%O^R(-|Tb}$2dm9nQpzKC@q z%I_nZ&29;rL2SCd1G0l}f$g#cpRQ-WF?QW)n0cFTF0yTz<~qW~9(%Y#owtUfPcF9* zIwDm3l+QZ@oI9JghBi-*flv^vQQ!`ziBc%-+4rq+(sTx9uw{muv5v{w0B$*gHrS&C+W}+@;QQDk7&M~xxXD&Iv<|v?WY0)r2p;hi?Z&t5 zM0zpE8t?a9C554}W3wI5vCN>}Ms@X?JC?{qJytJwPriNh-l^Hbs@fbuG%9?Xwhj&O z#G=j1zRchVc(g;8Jlepmyy6aYo=wl2GZDJR&L$h>RpK9__K|=b&zmH3R6+nQZ*>qu z*@df6qeXJm=&{U>gQHuHfa2|zu9jHJdaNb?J%ei=?pSGHp6E*_H0QH@xZHCr*}*fT zYVTUVjb9F{P0&^mX$|^1QU@<;s?#qc@xZDrJRRzCO)J~X$a1ygg)#)zaxjO!|Aijx zk-hCj)s8D9{&I3FA89Miqs}46_=?QD>lh!Z!(veM3ljc`{>Rs>zu^IMsKB2upgc#A z0CnHlQlI&HC=V_U0$|90%I043+6U79t$eao4(XQgDiGQXJ#p1I*osq0AYjU zs~06H1W{-qge!$A$6=0d2h$hwx3A9Y!@2|#;UIz(0zkRq17gHdn@OwnBE<~{{!ox7 zlbkVa&VI0qBBatAqf^T7nCK@@2uKW~ zq}ezB7&D<1-k+tu{Ruv1!espQIX8_$V??5FepJY3lRWGF(4pDbWVi~_x8`QP_PGU$gpf98lm=Rxn zI{jxL8DSj6PGP=GexWd;R@#?ktN#3!1pXm<@o9Npx-?_;aAI1kd8!FgoMip5)&`4K z{fGpnRlOWs)U=gA0=ggdf+7)1#vM5oIk$0fY2wfE?_vC>#1b0B@(;O-J3pcc>GenH zmGXNhdZ{yl5+kV?4{UalCzQg!ym((9A$h`N^y_oK8^p#;xKEjv1=q|OX{r>zrzuYB zFe=V-!X|RFj7N~0FZ{|yt-R4G0M`Nwq$~?U-^soxG$SC{3zrgh{oq;M^5KCNyzQT`{-PxeS+w}BsyYFdBD6rY%`y>0MzjFp7`SLiO|LSpn9|ZWz z$>nXsvhw8aPzqUygP3q=i4Y*_Y>EWqZ2?^N&YnL|FN$;HJc(vba75CXjAg zQXQKldmF?L2Zx4ikd!f}PL$BevvthKYgmj+`~d$U!bUkaxZM8rntS}$qxjcY$v@fF ze;tLb<-g8g-vnMSb$FcqY>hhj6Pk>6^W}OcU{@AZ1QgT+6bBUl+XxqZ*~AH(5qEAk zqok?I>a7<<@gwnbv)d-`FFk>viH4;$*SXek4{dL?a7HztukZr~F4UZqqx$vpl)wJ} z6^{P1L;m--LC)UR)ZW;^K|uc>(nwD6nqO!u^3dlTRMFZ+5Gv&~q_CfjYThPGPb#^e znqm}0F6Xh+1ubH&xHPBODq^UDoU_S5pN}9uS*4o?4`yN@mS|3#K zufFa^<2An84Sv05K1f^qmaDE>A<#(uhiT3x86t<*jZ~Hqdb^(_fn?~*wAwnWLhb{x z%o;qw^To|mPDb=)1R&C)m`LixxlG8QT9;yypdZCYrPp;cr{zM{XF^Sa8^O_l;h4`U z=;emOR_=X7QwP=Kx#O{qzt$gs@xbYRJYrA|N-KPkxGhnF(4d_GAiw zNn#qidbL(&*oe@_%EJoDqbnoPA%16+{sdkZ;`wj`s8UE zR3p?IoAKH!qlYg0lw$$4QbW>1sW_gQ%y0K&zMq+a~l6F{{z{Qq#pF&-#T`1|gXfh#G8EI7Htk zh-5<v-YNQ2)yo!_(cd=#$G9im5XdLh-cw$>o1=WaYv`Y zK9>%I3|N&tOwnue364m;J2WYeexpv%$}6j$B~QOA)zI%05o#T6_9fHjb#j+zQxbGT zjnDr4v-KMjhTW_4^{62KSEv>DZ<*5OUcq@P6a+Q0tcIGbj%Jr zGZxGbbp@v7Dw*{ANZ-5?vH3-?0G?74U396zff!@n`?8M^dusLrw)Z!_@)8G<0cTum zUh>w}jkJ}GU*4}%y0-9rEb}0=+}6$1UB@_TRVHhcDxPz;9>ELo5a532ioesIxg$}p zln)%bjKtgGzDwaZTCY>s^3r}OZ-9uvB&jpQy%~&{KaT;9EYKM8gu_TsMhhpllVTAJ}tr73d=yQkbDH(fj@u z&+H2f7J6bWQ>u-dc+inFF6whCQ2J-+a|jXkpH;7ixwDGsZ{gQAm$!#}OpiLKu5Cq~^39>?mon z;j+Gk=&GvMekn1RQgNHs&{x`x4TAM<+=vgaOlLVAC%Z!lNyfHJW)()2{}Xrr^BZN) zlDyOm;}ujSOHtRwDA}x&ae=}6WO1E)CtHb=rEC-Tn7RCL$dg#qsiDlRBe$O{2qsePF)ShcB5XGJjqVA4mIv;%+RYvuk zjeKvQH>2jgGhRk{bJcX>s1{}?zqs3xruSMxwka!+VU9uxs?;-9_1TXe2G+_Qez8v; zCo1-#+KNT*&=;{hoj$mB7ae-K2l?ir5e?{F20G6H^EM~-y2L0^52lXl)UqRNG#Flo zQ`%da5*xx#xSyWz;_!YYZQK=I&s}*uQZfC54NGEOLZsY-1%?m8-&h8Yz{I>Ro#uzt&TdSX+nqw^er%jAfe^#;%vBkzW>VpDcplW$BtAH@AUY z44wz`iry|%;V+?d;aM%xi6q`~trSYp?by?!%Rw8E2|JLWJ32^hY(cmshop=}j&M)k z@}Osga$gLirH?z^U=k2z+sf948*Lw5d}A2d{0D%32v zVe)Q5oEJJj&BzraAV=}{hj7cWqBZH|^xIhZLU!b6o~H4p@s!<77fT4!{dT;w9WK|O ze?LC6*)IXO&eH2 z3@4*XtGD>^wOWv-q3J5z+vN{25ek-kgxT+Lo-O^U*jy;v%l(UD%(jP78q;SgAVzugc!xidjM?d;64yLjoW0JK$e+$ znnPo-U(a#u&Kd7@$rm1R8D9JD6SY&Ss5!DZ9z2^^xne+?03)=<)H-V$I~4D8QoVXt zKe17=^#<&yO}yx^7d3~11#LOUO+D>OBjL#Znp&@H%V|ydf_EVPEhGBRl!N?l@A&^@ z?!R92q(2*^$RD6cpaMe9p)J135SGYG{*p}Lh^#`IL%rmJZr}h`kOjzj3SWP{$@lFE@;Cxf?Dz#j*rf^hvK39>ast*3PT#>B zjnY zZZOC!h&N5Gxgbo-nO}jea-_Tw{k+Pl^r&wN&h=BWw-`WLb*jjeOvynhO^o5G9KcXP zJc^>2bhBf?H*5Y&MP1h*FFs)<6AdaQ3BrUZy`+?pA&*puHq$Cu?zJ<~;A=P-X{$=c zG;Y>~fRwR4p9{5`pN2nkHcDFvnfqxMN89#(O`L>yYb=`owz1w?e;0p_IY)?F1B&t1{LL2L- zKh7DG$q{sx`or%ujLU8y0_-7(Vw-5}_BG2>*?Vi1aD4a`I((-_2PkprP~Wmfv3R1# z#Io^ns9?7Zgv{N{UUNI~-9TkEx8LE?4?m}gpb!RqTWW;S6MxPaRZ*6C3riMB@0iTv zv1t+qwBJ)a#J6Kn0{%GNSSdk+GgMQ03Jo0WtsBM|btPVdnrli9kDB2NxVI+=j9A`p z3e@k@>t?AapS?&cbVE)NK<_igeELPRN4b$b>nPiVWGU3VXpwE$QFTLK&5w}St_UF6 zcF^>lmMj;tq-2=Qe0(GFtcf6x*1c@nQXW^_tk-?8%}typ>4&Crr`rAQd0`~S%-pa8(77CnN>lK1WPhhvz7Om`^W4(7B#HE43+U`!w^899>Wq1>?Bn zjMGYn8k5?-r*V)@8cd0GmvcHFj^U^HTQU@$o{^?{Ki;FI3DOXpoa?7nD zSoU1xJ;3g*yK;F021%@Nj+_-i+kA@65j39GMbvWBhb+Oh#!PWA<)_SbLN?y)L+zU< zgG8uSvB5N^Wzf_zGQqR5fm9Lp9|@ihJ~?57UVF{eYo!m#u21&@!!#mB$JRIKe31Ka4CdXMU(ahpX)0beEq<(zk zz4DCh%+_?K-Va=npjcJ;2JG+bHOy}4kK3k(^HVO8G@0SK0Ej`T9$ePOShLL?{V39M48OOcR-Q3pNbVl}nr;lz zx-pw?=B_z+G#R=MgvkwYHlZMh5_gnoY8rS|&VU1QagySLTYLAl$J3{9yU+mG$=H}{ zkW*rzQOzz(3A64HR`x1dC`p|rMZd+=_64kJBiwJvU2-^FqKg|868SWTpNM!Iu;IFR zdq^e3yc2Pm_hJ$}*Hgde+~c>ssC*?Ix{Elr72w$MJHJL0iC_`5iEU8M4kEU$tr2c# zUd=r$gl7^xj)k8l-MnM)ur*;pLh4Wdq#$pYagI`dB^!GGwnpVYBhcT$xj!P%SDqng z`!xvV>iAdeQI76_1>i>xnri%D5g?g4w(8;bRmj(f!++7QVX+)1ZDVp}4FbECGYA>A zwz)l6zsg>Ey%F+-;0)A1jjYRWp-5mSY0_G5Wcod>*0}~6IxT&m3`rwRsPdW!M*;)h zk-%JQlC$-bmSQNdhyCRw`d9lk&DfOg4)r<$C&XHi(&~ZMlM%Yx)%&BmQ2Ea>Y7-u! z2DY>@xOTa8i1$wsMIR-+Jb%hJrSd?`)9=5q%#s7AZ?P}_#3+k4`GK3i!tCLHt^M); z$3Xmb3^rft$PE7oz)F^X6#qPe5m0A(wZm=O6$WkKMNb0!a*#>sA~3Puc&EsyDH}$3 z@IG;awxpTSDFbmTs$5e9|0pzy-eC0%X;CO}|++z`*cLyf8(RRz=?rwaGOCKW0RQ{fM?m}DT9Xsy~A4eMOkRb_z~W?Vy=8Gdbjz(%(hP8_Txx_-h9gZ`T+MZZun z+HXy$uvEo37ecqiH~2hFt|wysYu$7ZRhDoxS1M!N;D$=aTi3#C!lE>Wkc`-U-A|>C z6UBq96jQz624b(R-z?Y@?qNhB97y%UpCoI})1a43cOZ;fs#jFKVaQc!@h?_zH^cov z+&0ooQ$Ou`m_LgUqRCv#iwo%bEqk2_buEmrr!a@b;~@l8tooT*qmN+Z=*;$M=x!_O z%&16+HRw&0`O4K5WO@+z@qxzUs(0~g=dzV{iQ3RkQN>@AwLM~Bh9Ob}lbd$(00Xpu$CiPPBuv7H#T1o@dP z$lj?I7_gjCiSV5@!E=_(_y{fJEnh=0M(u4f9LChI82%EpAzf35Zt;bv>~i+q1)G*9c%8{zhe7GTg%nswl?akSHSRv zwEXXFt-m)Q|8c|rbZz>7vdU00w)#70U0W&g^miL&O50yFadNUXoTnt6cKJMK_pT?+X2}r z;!qt?Ns&9FIko#ven;2Hks=aQ$*!dJ7L`i4(U*b3Q1#jUm}<{irxtBF~*f7RZ8o ztqb;K;l*a)gfJ_ZB!@dNLmkKJ!HghIh=j+|Hsmo6(O13qSJcF7zM zE34;_n{_0WyBnFeX;nr0TubCz`8R9@ATg`awJ%C+rfM}|a55c-%xB9#%E@r$p8rHN zFcnnsV!uj=UtcEv|7+fVJY7z)TQ-RD@Pl0d=e^D-LNwESALjCYBF!Ch4Xl3f zhqQMH6SQ5j04q`HN@rHuwr$(CZQHhO+qP}nwvEaA_wAm=JaZS_i*NNUPrQK>5hrjz zJ^F5O*iuC;8=0{M>va*y%acd_8cC)NyNL3`hWCiIppcC@h%CbDzl*%|fs8A%e&5vy zsW5&FIuyrd-LUX%zE$P&mKgphalw9oql=2DUl3h^tn_(er@P=x?I}FV8?yA|lW#Ej z8q^6DN#Z^on{w;k*j%>e#d&DpHpz`96|mlqIipq_=C zW!iW4+A}hK1|8ehkQ_X^z;+`=?6aKp-C$B5#2oGncNZTUCM?`~jk+UTa;Cnm+4Dv! zn`d91D0>tDy*YtJatlPmWPMsw{EoBCC&Gf{3?{C6CRMw#v~%ox1^w46*VhK6X!$XN z+y8?Z{9BR6QBL!p2-d8r(Nhf2@G+X$G$%x?Uiiq;p}EW`35m_{ctqfWsUM z>lKI3vw}*2L3WhpZ2|kf=Y>Q)WwJ~h;r2H%(HRO?w4<3y4A&9Z^Mpw8Bv7B4#=>rZ z%&C{;L`WnS*j{5&8*@OU60JeI@XgvhJyC-CdM7Nv)lYKqXIH<=5B@AbtpedICG*+U zsq77*)N)|nH|=3TVx2|WO)0N|{DO!aHqw!@-Z7GH18Wrd^)Z9sYg3V>Nz2>ws{Mt9p^Qw z9H;RPYubPseg7wcLegTE7)Q4lZv0~1XYwY%_rwEWl^7PpYZblZ)z{FqsVgMp?)J2x z@;G$2YZojLjIhSlU=?_Al_9Yy_+yI4O>+yE?SM;AmZuC3~Lw9}D>WKUe_$fBE^qAH}I3O(IU_O2zfM z3w3gF50U()6G9Ta7(X5eGLHx$bh`m18{m_%nvAWzh{t_x)6XAD@~GD5dLbI9+l_L61;e)bT!C5dNS zo_ho7x3zKxRQz(XnYdGEA#nY+QolWDT=hsadma%j&et~5Ml+gy8QLFrPzNVTx(IeF zb}R+2hhCT#jz}aIqCXetF9469f>%&JmVCU+ujy1R*g3f((Kru#nRY@Z50h@IA3H24 zwa;E7%sj(4-W%o|0N5VR(i1vbIXFln3L1VPZLcX`$BpP1%cxF)D~!XG^lc1?>$nKs z{>Qa!0_#-!)so*}+_LE%DcqM%=A9S-6i{Ir* znavrD73xboFe4v7&KwkMi|YJ3@CVb*{{yBB|Ance?0>O<&d%pV>9Yluo^{Zp0h1t4_=Vi!Ar1dc1R~)lQCv)P(jRBJPi1m@Uwicr5qscR zMAeBDd);XY`%AoQCKhbhk;vJ8o~-StE zG*rPZCx`_aEP29M64ke|6(e!-5;&D9WW%8-CcL29L0vl z#7~t`F9`r0PP=3Y2Rjevp<)96jS9?B_7=+XXB?}kM)HO&o&tJ7*)lEh7%6xNn^z;H z0BMXs7Cen&6F_<-g;tA&s?S4l|CYA?<*&+-M_|7Fl;zfVWVXxdi%Yn2q`!K_)%K7s=#INo5x(+Qsm8$vzyRlfHpXFX5X=#E6qPnV&EjCxD6w9!dCsEu` z-ag9+p@57z4p-Z4)1gRRoI8ybHy`%gvG%+CC=kz^e{`K+22~v_cn{{? zmqV4GUaibd74~b4cL__0)1yOml2?fWXp0JWF6Hb6glR#Up74MFLL^`qpv5U9=(icQ zd%4VM8tn}0GDVQ8J3wpe%ymy%SP$-ug9)0~q$gr4ZR$<9YWc~8LG-lnFhxUhhaoZC ziVTksHfQu)B5|wGLH^=7rt0o`%M+4&W6G0B>8J4~HXWo+8tuFIqb&zb$tShy*XE;0 z?ox)nKXFq@w^Dg%h2u`r=mBR9V|ME;zEF-g5!x%*$nt|2D^BP<)wFQ*7wW^OgjQH( zhW9)rGZ@6ir^+Dd%R13^jMF4?LGv%!LmY$D`rJFLx2q4?#JV6VGS^JjU0($fZZ6uO zhLchGvZ2QhyKhA7cR~l^K*A6<&kOg%!yM{h{*M4*(6Pl|u z|8<`lD$r}jEs-14`UqW=H5<-fl&bG_*p3JkPEB58Gh+4b zCW*F8^{&!5;z1=3yoZ1Pwruq!@0LNHyE8)=@7BwTfHW?88RT+(!60{zE0?Y%O1$j? z5&Pqjp;0UhgdX4lTj|?w8Ozfx<+UC_YPclO7`oX%hfFK5M+Jg}t{>(PJ}9Wx8hjrX zY&bYv2A@-M(JzaYQ?+m#e}{=hw!LqB7#tHOA+njzgoN+{$7CkZOUAf@TM8(GsJ_lT!YF@xHGuJCijVTc! zCRoENb+Qm50OVewF|ZNGG1(+_POqOsD7k>{G686AoQsbsc`ec5>+A0)!&o5nh_HWD z$XQ}4{ZjFWbXYpXxX_0!FDRz#|6HumgOQ}7+3qsdHCUd65aV*6KXpo2ml$+1S?SO4 zNj6_!Bu;W#Xe0L-;Lv(;iTbT(YAj<=yG4JI$Mm+1egr<^Y2}2Fc+57eKBfR*87Xh4 zQC7ZFJQZ8b9;_8Ayue*#7VnmPrFH`v-&;=40j@MX^P&itJ$p*u`>G`-ov6@jBcUH; zH75QjV-^|nAqi4kU>7!IP4QKI541lujm~x_Hry-c+BIMoic~0B=LP;R#1S}q`}2Py zL+$?|GO+wRGRXZvtq7iDW0BX(1=0YV3z*=P$`UR)siHN}Dhx^C{CHP1hf)}b2 zS>lL&-Qr{HM<;sKx!Dq8&tZx3`I#v!;j5a4!FMA@HIt{a;Li?kYr@AB+X5WuT?oNT z?F!BNg_iix>X|4cjCF8~`v(%5j=)!&&c}~$Wu?oax)8S;Fj@M}Ar8&HIZ~GDz{T|! zZJt$}#Rj=_zwmU4!U9lf1zw!4~jTKzS=LUMCjw$D#-< zP6`QEC@&c};q0bsNByP!oh7RMwt$=HXQZX9N3f@NmWK$Rj91+Hyu!X$&xAFqsI2@y;>6IRepB3KQ;$Byh|$Q!S1WAef1{2EXf_>j?MmGOEd?DB zrNamvuoea0{zb~g;X7S3q}{G#T=`|>%u28ND*jVemzT7j#an~?%ttfaesL(=2Z zY$yy~1@fLOLE%jO0UNo&)|(Bu?RKL>Y~tLo4-JPr$5qD8)rA!JR!dtvt_KD14J>S) zf~l(^7M-eeMF?@BBGp)FN#fvr(ehS#P)*|3{#8Qqf)Ik=`q)Bihl~>HV+Q|uEUcCq z4VB>h2nasQML;B=Mz5NF!^k47@gB#Dd+(h6Go~FB#pLUWz<5MIHoOw7?a})O^vX3& zw-!gkpX2-Jm?J(=bIpj_Ey~=fKd|2a5OMB%LxC_q4?FYc`~N56{$mT_-vmseyr%V> z%+Eq54SO3Nx|gMWx^_v=hRz8F#JwH?5rM#8RW!maj5Abnr^-`P!Y>L0!TrEwt(W|W zYtj}f*$5_9&f`zFtm8}9_s`+vY7sr4Xp|(-Tys!E)`m?llVq3xsI0&$@(&M1ApI2V zo92!Sn`UjVHFPlYnHYnSL9N6|_ox|~ej6f|I>Ro$noH9b#~_E}OmvLUo~DvKU3n~U zRZ0nJ(ln^jqGvH00!YDmpQwl^#3{5Hnsgz+d#Kf>%P`_y+n-~#Vz8wa?#Rv(SLvZ>|WkH>0Ynt&wEh zgc1@*l?)aqB_LxkB%SG*8!N5N=lt_XU~-y*zn&u>c`+jY7GPoeiI2P`%-TvKE;s>p zjFAbomiWv;H8W)cmkJ(M@GU>+B#vEkgG&ChXTYVI$s*Lk*q2!=8|q11?2gY75o#|0 z&Ou!ESB3xYpAHT}9cMfoU$+OV7~xU9SdFr;f8t5=5l8~fdUi2g1=joh6VD??W10Zoe#t)3`Ac5)sg~( zko%3^ecpLltAK}jg`&>JM;Z4SuEtxRpU=b60W?2%OUD(r@zh zrSfuo!8{f7tqvsm*QPnwE5quFaRpFJs>&?%ml4s}z%{i5+d?_?!!KLJ1F|lcla%4I zC=lGvgHmr;+AhVVVfTmwsWI}2pe>FKWyS_ZUYr}Qk&r?dTCw255p zLuAx-?U=7UaP4b5Tn^B8nQKC^2MPtN+9%R&F$@bbkH-;uEjETYv zg?ctGEg%^54O%TaTMrlvS8Q&Xr`&xjGE3&yIyDwakaqLu+*2CB(#2g}gZw+2zzC5N zjTipAiFeS3*;2S78xtq}xHYO>MFH>{E<}@N?ns1HjX0utsc_1N9&f$rI$zU^hB*A&w2=ilkcKlwP!>#8Ywp;(y`b63| ziY6tCweRK_hjwaOMCOKxCmOi0V2(D7*6TiaVjtw}k3V8r%$Hy9b;?_q`k-{m1crXl z4dm)1Dl`x^k*mp|moCHEGV>&$mPn&7OnXINPW@M2i7ntx%Z&iM z@Gwy-0M?o>ffgB;r!WjR0>R9(@bLMgfxMo7_L9D7OA2B3Iz*z?ZH9t9Jm9s@bW*ZO z1>wt{+wh5fQtA*cxA#ly{ag9xv`oEV7=RHtQY^t-%26?xJ<6Y3=xcC-&UigdK9`sy zRlMg!dhK`Owkwr@lXUW@w>}ipn%;5}|K_pgE2sWi2$ z%pAsW*qrBrFeTjoM9M^#h{1o6BUS$~1^$mN>%WPwe`Bk!$E>^^smzh>B)$> zcwr4Vz?5V^vyDY;xKn*o7Jl5~H3}Xl`m){%w^JyvVeK><(VWK{_Sg5_!Q3Od=-H^q z?xk@=3;d;2@~B#1mQ!+t0&?bVI#7pL*f%xPi-s<1r=cS*BeWGQRM=@UPyuwix&{Un zYI5kj3NZUn*b|8hjUbXHhLJC0G92BqM`9?baQf2lR@n>8b)@N*K_9XkNKmbjlTN>| zTZy-GOw;deYs{3#lBEo z0v0mwVvg&9MOoS|9IHV_f@I>uv{7`1b;1ndT`&tx4+Ad(7`7|4OMNnnJyvR`v^l1P z@vm}wXHGE~0tl{W_7aCd)u*7BV#qYC@O?tdKdXFc@5f?rutu&bZ;138k*hdfl#(|!%xnRaNNlC4Rgq<6ZY*JtzgyuHRM$& z$fMid@7SpuY#Cy54m5(|=5S7hdulByv`@vf<1@yE6`2OMK^um!!Cfp#M*bhwcR{+e zEyP7E7dIsEa7?FIs57RgNRz%KM!H>yofsgcPNeHaYffa-Bg#uyw073Cg5h-DTa{BJ zhCeAUWzI4ia`7JLrSLM(EOjWUNohyaPQ{Ewk?rNRagU{YS zg+o5zB~i!^s`dYSRR2v{dAUwzw?Vs)sqqvO`UcFQ5!c=5oJYqaWoTF9!vNo zPb@B`h&X>*OAfO@4>+>aaG9uqIBS829uutH_uR*y?~i|MEp#(;Z4k&xH+4uB6-hRe zz#d#n5^l&J5mESWgSKsxVH(M=0_Ls?6*#S37WSLfUPuQ}` zs{@lX&sLHZoO@)-gqkfHP~rbn6Qk@cMmG72N*KoY?CSuIGU%n~jxZI%8}H`ee;{8! zlrk+pv~_GBburwsq|(5fCXbjVvWaG3t!<)tQs+1a(Urbizv}O+dydO?Al^05X`0|5 zE%)`-!F2~9fe=;1n9%Sa^+A4CvBV0wKP9(WwxMLmBQU&ifC>0uwg~|Ks{EN~X8L_U zc#93Tk&4i)=axy zTYJl^=V;c()=aVRD?WhKz5ITuOX4Ic@N@IM>ghN>JsV_Pu@PRF{R+?O|RAkk@ z;kDN2EX8MxaM-MtJ)4rd4Eu|5%CeaHG4qyvk&0eVguAnpShj=;{Ko4BZ(Or$F1_9M zVFnJdFPRg^EfGvHhs|ae;@FyyXZ^%#_{=efcTi+6z01NO48X9Cp*;kvirqR#3m2z( zdoG>%`m6_^A@6^AT%_svlz+X=>i<2e|E}pBV>Hcw6rh5(5iFH2n}pI;;!Wm(sq=7E zsmZ|$1=UDI)Xi?ZG>VM|Ci<=_=CYASKo9b`ak$A2CIm*!OrPxVS6=BOm93n;&X3f@EJ6fDI{_J%BAnf zn4WF+ITap0Rc?Rp1 zWY-Yfwc~C#S7rch3H;D^?oQo}Ht9AMW!klgErgF2J5*)WZE-?9JV5BENhz8#DX@J5 z2K75^50Vx4qOSXU^SgdBv)>JQmOoP_M4nS3F_x>T@}2SmR)mdsRfEqIrO=k7o5Z~9 zpm=}3q8!s4V3RWhx-``Sa$9A+#+m!?*OHL3{KnQqIbTe{Pw zSuQ+}aQ{MnTkyyXM3}i)ny6d8uJ~+Af_>`vz9tP^3s@HS!+kv5UAUURLP^O#;V4K?R4!qh z9`$%;3K)9I0WrODtigozBX^&8{t_KKG6XaS)vH+DSkGn$J1zvd<1US`d6Uc}9+3I6 zK9U!qQ{eLE&-qqfL=N`hPCmfttbLJ=oT*^vPmyCn zGlKxF|9(ZALmYZ-B7^ORoSq?9dHcv8>=u+!W%ET@hc_`MqH%N?4l>EXy|5lG9`G{0 zk~Yq{6ma(ra%5Q>uF0=5dKmK4v}XoctI>q2E39fQbh6~<*Q9K?YUw{$n^!DhMF!B= zvIJ2=zdD;EH*f!#ElED&$tgEKLuaa}R##m1OOAYWOt-)xB(<|K!v4i+xxaksf}Z6k z;BEY9vV|Jv2%^`^Wb(nw3ug8EqR`_>$U>X4p)XIcVTHgy3DAp(9!t$=&Q8s2)}o9A zM-&v2>`2q}>~ae}geOK5;D~bL=z8rW8u+!D-eiEyfA%6$GL7k6x|thH5k=EWp~=C> zn!y)F;IKCXpEg`+o(xOX-|%Zh$%ksP7NSB>g-|%jIMk1oYE)w_sXT7B^ASW)zwTG({gYt^v)G5b<59^(at*wPNhC6)I4or1-6ucB<0C7#*Wx%9x27<${6 zogCu@^r!4HJtag_Lg$endTehh3S#)HVcn3fM-e<&Y%m6V_vdT=Y!4E44&1c#w6kB( zu^K#o(;T=o6LPsv?>Qbkk62*Kqkp&2KiOR-A?%njd?wEs20DOiLc`}tR7-Xp{zzYd zV~61&M_n|O>eDb*upK_u*Ym1A=(qWWw!yPwvXm}wBVhs`8-;uEDW@+8aR1H{$zkuH zjPbGj#bnZ!RHZMoyzfqf_(wovBj5hl0=ZQ|y3647j-|>CfYX()Q^0)>bhy*%juik) zFbt+#qi_(_M~2n@bo0JF%!f+P?phwZ1z~IaCT=)L5yAkI^SiUdntX=?a~^_DRXA`? zg|Cb{j=zv_=Q*l0_TcK_vwmoO7cT4?+WCO>Izt8zeo5QM_leBVjEYk2`$h+qXD-kR zKTJ&*bjkw`=K$&!tZ8^K7D)MwUt1NAGfsfa4T+}F9R34}6Db-8s@o^<_$8bh{DUyy zI^Y*o@>d=2iLqREUa@M)bdLZa(+LT6N+$gLIbY|dZwNQC0H6MB{R295@HFdDJmVlg zb&qvmOd?x>5eSSjzqc?o@|^YQb5HVo0c)T8NgL~fugD`r3EKjC5;ll5+cZkk0 z87+S%V0cw=rp=c&O7>6*-U0A+}aKPoIv0Kc#HMo28_cPbU0? zjr$wa4Cj&`7@wwV4YRDIEgynE)HRpCwd1>TKA~qKG&b;Mj7UYM$P-8jaCu%$ z;GI+sj9)I(C_^y5npE^Mll8&-e4(!|FOZmlGHC>JNg)Cl7qF-vLh$4f?OD*E_bW~H z4Gr?4PcYogAh>B(Wh|`Tpp3+!{^FxZm*Vqtrk-;ZM26hzA+`XT@FJ1+z`D8h;r@~k zxO?CgkATycq*Y6>{S(*bjc9qoqII$3-mR;l6JAe3~70xl6O9L z7H+5~cNiWgwoU1dILa8h#RikUSU)?(2uUVFc78CFBF!F-?0&S_%229<6i*@elCxt5 zD4S{?g{*$1BB~ z0dpwM=-;q&SgOZC07u0+4K<`4vvNu^*%e8XePPN9`Z zhKgbdI5vj?EL9$S#BAm8PIs=!`(vMY20~E))6$f$1|Vn6^Geo+NF8vDq-zGC1wdUo zGWjjX;G9+q;IHF~V38Fz|mn#@{47r{<19b>^D z5Nu`B)NSNdqj?7P^rA7O4MW9ck3z)<42xP)7>6K-k*c=PE^flG`SjE;CxrnKuOe;E zItkhVXj90gZ-#%>Y;z+k*Q9Btme!@YN56!sj~7(dGk+HswWw*}i(oa)l2`S^5H*Uh zqi+xK5I{Wt-tT~`rJ}@O$>snQ42Nn`*ZWKFUf(iUS}lJru+Hi}Fb#l0wgeCD+z9Nh z7IUw*=cLfN$8-zH+XZ!$-bbr`CfYsTDDn3`!6d5ic7Kg=-F;zdpMLY#Gq-9#G%~r0 zp67&86f2f5TQSG*n?{$^d#h*B3i;2dQCsuLks#H8mEKMR3{b2OzrhaSdAN8`8J#kC8=+T7qbup|BYs$wE?vy=3 zObIDK3TC!y>8CVMZO4m&(X02sD|F7Rtz3#D=DqmEJDb0qzz&pU-aMEonX}R-X~2 znE^Q9X6&RjaPViV4>xk|A*H$3Jp_@sd@&nyV+(noZ;iiKr+ z5svGYM3Lm!0#F?zF|Ib`blxIv$LEiq0bxBaN z)VrBZ2@PpG4AMJIqx_1nc_OAaMjQGgY5hI!Mq-OF2FGG;n~n^oL!kpO@J+^W6kF`S zjD)dNjmB#2Fr0<4_P@;B+qqm)Ww=OeCq4vNLz5+ih+-r6W^{1&q8l8q970p|#!7p9 zxrty}i6J@cf=G>t$fnn%T>5zIl#L1y46P;J2qZOIGydR?La-!ZW#)}mS-yo>f`#%P z(FLi_+mBGh<5CgmP0=Psc5UXNG9a`@3TUa;HEkti9*K-FmN(jvl(-#HYR^7bNDY0V zY2q;M(R*YS!?GNkyh9Q1pxV-zi>e<0+T-=QS7!(xOC4#d0MQxStr7;2SnVyg&NpG0 zzG^t(e+$9Q(3y2f>(STTc+oH$g{w>84xoHX;M#AFr=XRU*lR8koHt>UzM6CZpR|m% zQBI!Rb!sQgd|0s~=4dL3A#Oia7D90_gLVxgbsmwYyp3{6zRk3nMNAuenQ9maf9moW z&KrID5l{`i4!gcxai%28x8-os+QT89g;GD=K2u=61C-YqaXa!Qy(i|qrwg!hHnT%e z(e4flP53*0O+O}1N3Yf#@i;Or;o7QXqTZiBQ-f_Jd3_4O263y;#Z`vgVH-OeKIhjq zm!LdSelfvX`Gy`(v@LKu9H33~mB|2=hv(s)Gklfknoj}d3D44m+Z@2MJh>t7$%+qn zq$eBQ(VyUa2DDZA0(RXL-0}NP$~Bq3Za(gL1>e)-%s=+B_erIg@cnYO6T_I#GE=uD z)crCSz+}`ZGXb6mIHa z6XuymYuDP${ME74$Abp1jbck> za=zFmle*y}?nRUe9?K~Axjaee0h2T}kKGM-E{{PI$XPqI6Q{2MF>2(-J4`9SD5=DJ z7yq1h@-+>>^^wHsrOs&52Ud0)v7p6pMlR0!(yK4&cJg;Xj{j`i6_!$Dw9J~$g+A{v zL*ONF_mcHr0TQEfNzJ5Oxx3*DJ5r1@FsnhWhIgYv+>}E|A16Jpxw7^(^6$hlPbcjKeC~aqs;L_%aW8<;@#(|vOC|qwWE0C5h(WfHkF`Ae$I|)_ zYG;Ocxl9_w<2M%;dn2k+qIq8p8;-G&MMkOg_(d8g(}yw-E7Sr$YiOruhu?HIE|Q8p zSotNCms1fry0cc^%E{|-vPwc2%b$c-y}(DF#-yQ!8!&H&7X8x9<4 zVDck#m*N1vPmcgp7Mx}Zc{;t#i@jAmdL9yb<9f8eqV9+d;6v-?Qad)}3?WwQ74~(h z4^Oun?8-um(8`Gj(ZgTN@@=}_B^cEtYx@h9AQ>a2MW>bLdug;)_s3@B=yNGjSi;A{ zs%#MP>vPpmc+<$6Tdp|L`Jv%^4_q5(3&jCjf@lA7tFdY3u2ZY zdOj~27Wima6(AAgRLB!0qt*O8E0)B5LGF7cC}WbCC`Dz^Ei1w%_1ei(DuVj55Sfg? z>*fl3jyu8oW78ZB$?BK!FNlq_u3tg%alfny*V``|f@Oqrm^GFz-RK=x@%Et}3j)3^ z$(30)pQH=ugNn}P(gc@-7`&9hrROBy*Ayt7$rp642fsyn`MYAwb! z`97tF3tKWQ5_z@o8RUbV(-+4ReGl+dLp>f~psQ!C%2{6$(K)H9WJ5X^l_%4yqz z!YE}g93}M)ct&QKXg-rs`#s+h3RvqV(%0RLlHpxYaNh^>nD$>aQd?|+wE-1Lc=y5t)z@g zpGw_P4|`&?Y-@!#rHX+3*)0nnwae-)Nu$-t=F1%4pUKak|X0~*$m zG7vT|7BU4a?4N;ey%N7Vg(Dxyn?lbQt>)qML(D%3hkmytY+mifGdt8CJ@Gl`|zSS&wd z)cPX6@Fc0(oPycX8Pk@rzQblCT*)FQv@x-vdS+ps3tBlK#Cl{Vde)Nv)a>lnv@XWL z^qtGwoVtf+JJo;_VIOW@cyAiut~tm)IRALk6$(r4peo{Of-GTc7A*P_R7Nb5UMQCF zdLIk6M93}&iN{jVzF{JiUGrS;y{2+#bN4P2J->tNx4B4 z$|W=>)YfGRO4aLjnUdq44a}0IJ1C-hM8TKHPq0?|Lwn8>O*_UQWWUBW(Z#EQV77e# zGen_Z(M4*JV9FTg0LssXde;D&&zX^mhTu@#pJGyaY~e-(DYv_Ikg02Oz*ggT0GYJ> zC#VQT9&!OtA5Ba&b34Fj(8I!qOG%!q{f@9o9F1O%?TVC#14K?=8V1H8kV2mc*fIfq z0|@#;C$0R1&7gWHLjg?=?dfeJjz0?FD+0)3?D&>Q>&Ss%lYg(&|4IBf2(Y#leTmtp zIB*CrehD?amz}S|kfPC5z)YiQ6ub7Cxw&;TL+Y@|?GJ1m_u??R5x}ByNW*AAH zsI^6st5|6rPYaB|*r}?+{#d%VnCv%|Y0Ht|&QSDE@rD?>v3EZi-JrafN;lBXi z$9k9#89%Fk5&BR_v{t91hj5=$mlG^e)h*~YRar?vQ#C~_KJCzs_7aXR7mh9iv7XgN zGsV>XB{1;j8GGjtUp!qHI1xe3w0^b^E@FM>Sr3Gu*Z{}n;xB-KjtW&QTWUdnt!whnOvAwRjA6Y zF9n>oRS;FA;#_>;WIlZ6m|@FC-g)NR`(E0!grgkF7QZnkB<+ApRCt*8MFMK*Xv~H_ z%SUp5ShL=p#@p+TbpF*+0qlK$0{c;S!KmQ>2+YygFy`9~RsNFB$OE5qMz-f*0*|bH zL^LA{1`%gNQC8f~kkMb->pKtT!QtFu%gxwG=3{DVRk9(DP7kggb_nX1V2HM3;tppC z*bl`b?T`G@jbFM5;EBPs*i-M~6J=J3qRm*G9knTbnd+nLGvUMfFMFG6f^Lkm%NX@&`RR-84)GPu{!nJqPiIKfsj4oB({VK*C@XMIkI zLsbASTb303ew+guZ z<^0b%f|KeWtShAF=$I0bp}HHRzp6Ccw#EvMIcDs+a(qO2RncrSZnu0VKKzjeJ~+tY}hoWs>x6I3@B#(pm(`ZJ{Xx#+?wkzbZ; z5^=oYRGmSILKrqS#d7X^4`)lWYxqRwm1ya9Odn(b7j|{bOLkpG)lNmD0u}ZVg{4EA zfkEj{2odtST1aJC0SGpEZ~vQQqHS$&RulMq+7VQUQdSe{{87Tij;Z}aLxGR-*}$GI z$r`@SzAVawK27kjE<-dfk_$-I-ZEHuw{K0hze~0-ix)udgDdcR^3Jn%QT|CHqEoc( z3T46L9*Hf3N*WL29*QkR&Eg!3Eyh;L=6>L|?sITduqqwSnuXIkI*+Zf{^I_DVG-XB zDIJbprPyQmrLC>qp$|)7DjOqJSA5@yL}p?K^n$g|&%jaMcLe7vB*PIU>@(BCJEh5_ zJ873msJKNU3%ZeiSej9&{XlC4v4?Cg?k#T3(0z25c*gb{u;hjU8CAei!xrV#cAyG1 z)s}~bhQ=1P*Nsl;%dD0yQhd~IxqA8AVB?>g)ekMQs_VbZ3<`ENR7lLYYS&23YqxAv zS0x*jmt7%3p_|a$`#JQ$`xM2|xy;!*KwN=f-1(Cau3a3K& z%+97(SIEyTuBn(_lVf2mA;W_`MH4gcNCdBrVT!3$>okL&dtR1`Fd?9rF6)@56Te!5 zVbEZs{W^z-pTo5o`{J@dtlbCemE)QrK)yW`?blLXI;+_KjUNpzBUUBlW&?8A>+a04Aq`Skt0;WWUR&2ie3vHhbTqT$X#=Mn-oaK?mF``v*xs_xvMLaG*s(!2?56dYJ1m zV7cuR_ICi-u&*BQDNDU^N8z*aRXbg>U*u+dUeZusq&3KZ=}%V$h4c@7D0*@j_UlB} zha_0?%vASqvSAVkkmHmo@^tlRSu`N7pabqG0<$$m7xR*i!WKgS%}q$N#s}9Bt6-eK z9)Bdw9rdbSArkrTHlw~PF=O)8?%xkjf&f^POi{N-ZoA2-h!qrv3axph4rfgzIoLq+ z?P=IB1EvplRc%#M>oD1z5hoRJn0!_uZvxUy>P!mlYEcES1j7et8&JAze`hh~aSryF zZ_1gZR`{U+!&kW4MOAxnX!Efg>p@4UDhpY7A_S?on`=Q z5yZUdD&dP|{8UDhb9le=-cu3c(Bx-5U|aU9u*qGH83>j61a(~nPt zdfr{p*(b~r@4Fm4j(WNvK8(JPP1I&_y~27OK933u9ilJG^_F~moR{QGP+Y}FC#M44 zjV{R!DIQSL?(!`T45SbHZ+fT{qJErO(~+qG)D2)VsBMHgxG+l!-^qj)=ytWB zquax%T;x~cN#V|BBO;b<2#CQZO`i&+Z)XLQ6nMD<7*#*4|39R?Q?ThmR##O}VJtBI%&uepQeA2wVOD)s=iD2{k zb}97ww@R(wGZJ=>JO}30;}vv=?nQOM$_Xq|k1Kr{@qj$hXXBCy_Gxsv1H2+mib8TggUlqt&bqjc{R_PsslGW%`axcaD-?A zIG&_ExqHpn!_nr0^$3-(NvAbd4mlHWzE2?d<4>~D&*j0-w8G`DWun!`nXBE1p;uv!-=s>UE?{8FjlQyPNu2Dy!$M9C#qM-~D z8(bD$dp^$L`4dpY$j`n6|R)~ z<^$HTnF;4dK`)S02i2lL?a$`PN#Y8ErmoQdt5Tq8f@l2N9 ziU63~ocQdVb4eb`M?cNY^VMs^E5;ZItBf-$1(h@tn`s!cR=#%!EJ_m66`HT|`ix$i zW0aDGlyYJ}A@0L2adsrcEl3Utzi^Z-9Uf)4oUw+|#WsCmeEg*NTM#A;?moW`} zNmvS*KC!*UVGg5ZVx??wVrhj~KPV6@Y|vCHWpAUm%PCu8;Yor(Vhx05d(%Ibx{G8n z0fljqU!Id^wy9R%pvy^WQcfx}`aIhyXkA6QN48{XydrZ-S4>jhZJ2a!q3$+B6~yk- zf>TQ01c~*7pc{_M+R%b)9Q!>UjJT@1Y+4h1^h*P*hNK4ux1bfFCOxa{3$qo19bwCQ zA*Slj9Y7?|8PSB^HV3tecX1l<>0E1GnGSaBY;c@`SwO(+s2!7BRB@^OAMsM=$;p=> zPIMjgRP)L!K8Y@kBf&~aJUr#-WD1|swCX(YwolD6mXoh~jyW^_^8BYBY_5W|bc($* zHc!*_V!yZ~bfck+77o4YGqVk$_?S)TrnOP3WOOB?A)ZA_aB=U0Ixdz7Y?V2~&MGRK zY7P)eiAA%kJ}t$5hbgA2@wA7`fdU5?c0(`fbbso^cEpgiqgq$aZ1PXU=3{2Hf3PPxt^oeM>a zY_Rm-1S(>H(m_1o^@A;MJjIE2PGWWUK^ZDqG@{RTi?DHFd5|KlP!lx81a5GVK@5^f zl%^zc--b*XiK1tVuv+6{3)uN9=2M4~sEc-*T5|Yr3rgspdaVd$S`vdLV8UZ<8=#0$ zcGA0;;4oq7Sc}1H<>ffVdK+$$Ma7%rhT9pQ@6c*os8%?$gvEGOH~z#M;t3tZYsJbqxAn!@M6{Y9yt*&V zL3HMu+jO^8>+^B{+Ey*YIa7(&b&$g?9ez8ZCIPGN*3adg6dYQ#VUQ*@Bt;&>J6mEj z{gIMW9I83~gcncn|(2e5l^k;d|>)#+U50p;g; z#uCL|Rb&_Gz3)I!srGN?b zsGn!&$9m(;ZYyzd7|6xNhxvrFJ2^v|l!UhVp5eys0OxV`6Op}c#aur#ofmupm(3!0 zI#!7r-r4ij0(LyjP6ewjq`%`x!>g8Atqi5<3yngI_cR*kcfdWeUFyalOA=t`nM0qd zC<}dGFhNLt_s2rmJKIiVwK!iH+WO*+d%}B7Rc(xh9jo5{&O5JSxYKk)BsiYN3rOEB zcb;Wiz@0y+T#3%^ceE+;Kftz~a4}a$T~lmnsB$)?&H)LcQ$-47lDQ7?+l*k49XyvT zT70x&j_QGEA*qVMbW7F43P0Q=_anEBMQ#ZlTJ`t4H}(q$()6*m4F&f9){_L?Xq{Ts zLynlP!Jwol+Y^?{F4-f(8f52Hki;hz;bNTi>^GAeG=Sh5}3r@{njqhBYO>ti6Yjr+#AtC+t-@e zBo_t%kS;r6^=vm)?bjN5kT)>iC{gr?G#5SqcoeecopWyR0m^fsd!rG2fn^JR)+56` zpi9uV+&K@b;(D!CDzrUBYOM=2K+RZWCO<-BJu(TqBD|O%o_Uk8M{518!|T9D>+BbE zbu77sdl6@5bE!I?y#zI3Ii)?IFTYgwNR| z%U60{x8RBNBYRoZqGDWI)W(P=Bc<^M%%HR0Hp!qZ3*yBs-$-U?&c=j#Q`d5W-;xfo znAT#KWPb!}plU=@HMOxOacWF`#Re;pzYHtB@#Z80GI~Z58*`b1IjX{McwXu$ybZWta%~{0EXK9RYDsgB@G6O`7k~2~l zhT3#=W8zc|Qie`?qR{QEOEQCZM19T3(L^CVX>0vwbXAccEc%Vk;(pTs;Wi`Z?g^ZE z%C%jeowwq~!al8h>=t(KIqKGR#I^05rL!)hw!>wzCgT)xuer~KYn$cMoGn~>k7dRC z{cqB$)%tG$f68CK+O_{lAN>Ed7x~XR@4viy|7)MuDW+4ppAIQ7Iz2AwYocmnj zj`GOLLEx;$CX3qktiEun$qVwTu@rs94F?mFJKz-%Ec7Z@qi($Tw&<3)uwt}nTdn1f z>oHEWbcGWmNl=ikz0R~X3mXhd@S|hq#nyiN`JKzfTry3p0@g9uZ-k4 zo{-`e7I7Rb1zMTyJ_ONaoYt03s;tY(Lh_?Wi4MMMni`pQM3l?+pT`!~?-XCm!f5%t zU#dI6JUeW?jyvSWK*y?3ntPTzWu%%}?ILX7{|4pXHSXa8{47WRYeD*dR$CMNx8Mu~ zBTFL#N1OkHZ2ci;{2QOd8fuN$TqM@$&0HytvzE|ynXU_8NCCzV`2$a~tU3+2v|LSX zc#%ERL1+N^FRo>#7##e1;I4P3!`15h`EztOnE|2<`1pS4EKM!xS_BEls>!)~hTYj+ zUMIFM7^HzyMVw@++?^d=l2`ykE^^!10I}!95OK9avBUi0Qtd85A9SCTOOBO?gtKF{ z_MM;Xr5DT9-%RPi`h1YrxSBR+Y_m?8l8Yk&l7!`@cY5=b>Ri8ddV&chxjw+$t;HZ- zNf=Pgi*kOF6=PNzr6rZXr^gDlTNZH2pb=qts^6vR9$9)@*X|8CvZdUuZO-Z$J z6b<_Th=aVlv@Z&T@*5p7ZRqBLC}Iy9rxQmS*=tKrk$sCECZI7HY5%D_!&<@ZPXBfU z@SlA}1vlbZgJX{E8MfiOZVZ#X9f=v$v^`@C9t%C<8Wo^p`YhljMOahqf14lY8ueTx z{KWU47vTRdG5(LH-b-#=obU&cWt3;7Zy|}beT@$pX&O$+4=;oikn@M=UHrH#(X2eT zJ?{m8;hq!dtcU937q57S(&(Q7RoM-Zp8)4;Z+~^;`8$0erC2mJGVr?>KPYK{peCeY z2qC4hk=wYz0p?S?QTmIXmG4x{?xDh>`?@73x{%~(%#pBxMTR*k6$UX8i0a}Z0It;0_yShazsB+JH5p+Or!7`{Kx1Le6Slv!Jh2>ZpU$G<^G3S3L8<6 zoYG^cVw7Du2&0T6=Q*@t61lz6i(5=T+v~(!!5R%RtnHXVOvR}z0!!BUZw+W&RgwF@ z{@sp$l&$<;^;u6O+lMvp$Gn6 z0VUursh%Ql6JJ1KEbG%ok3#a5o6i6%N?m}~=I6(R!=P%(z~u<9COU-{7%>4PEttco z?9d}&)>10Z6*d0$XI@;cXu))bOI&Pmz}gm-e7?v?W1lac;WGv|C<_FOy{fIQ9#1q> z5?DBP>42L1ChBb9GAx?LSwI)+Lx<>@``mm6H>iw|6H6eaq|qE>w)7PSDh9Tk z2jG9nSelF&q|<&Pz5f3v(*MzNd&!QA1JNUK*ESlQn>Kbes-tR|3KfUb01G9Q;UTe7 zJ7II?3J;;D7NB$sKF|W=?)1UlODPdChZ!oWJtDXiT!5Upi1bEMIUOv>rSNQ$#3uy}|lEBs9b*zH% zwYs4n183@lGPJ}-xP$uE@aEj(@zo+ddt+2JY}(LzO@E8E&;-Sb8-VRYt)@W@njN2M z4nTY3z_F-=t8-`V8rq-Jy?=U>xxqDJ zPcX1`DK5t%&>Te`vs2O0=_NmOV+a)CIPE2|B@Nvj$T(;O4ew+H zdN8Sn4}+ON&*SuCT0|dfDrL!(JViDrj5IOCr8e$+xERMSo#7hO3@b|SPgu+xlGHKE z&ReAB#((!4+{Sojdha!#cshP&l57g-Frw9%f`CX`oCmVk`By9#I}Oo2e_|Q`kFjL> z=UZ3M#!27ONWjv}z~Wzq^hQ5~>Hk1wcj)YHCfvcL2)R^JD3M#0 zYO?UJVwwP>Mrf@r<9!9`@R^q`2=V6ND$ze9lxh*(?ro*sW-yvWeI8#|Z<86|R)c{i z3*|LrZMjzR zy5`(vwZa$+(DTZ@8^YIPKau$klC|0-e)DS#1HM-lJLc?Ld%~NMPTygghd~@$=d^+) zM048hxu*-*r4UCWT>wnH5wr6eS~Vl1ge&r6g4lOXA&++nkBSvz!=kHB1|`^NXQ5oD zZ~-ePXbmP7A!!IheebH$jiPg&T8m?zCzy4vH-Lpyb)=6b?vwZNMW#aBcsOG}jtW*X z7=c&PuEmf6ovU65xg)Zb2;=j_ujxm0# z@h2^C{?W#U;h)n&!pQBv3bX%LQpjn^{HPMSfi!rQtjNt9a}=#g0h_FG-;@pJDp<_K z%fSPl;jImUQR_HGU(}@3(;sqqb9l>6GXe6!d%aRxb&e<4UB18GKS9MhgoJh`56KkQ zqK7Fu(8#;RYOQ6n*WBR}yJrkBmX#{V3&^1HWm^)K=aLOB=a~c7j!UDl*%yj3kwj0c z!p5(GSg285Ms!C5fu{Qj3+hC7 zLiwty{=BiYaTJ%3Prq}uYvMK-brTaB-KoveGl0P0xY}&-j!!+9&SgNA_WxG9*r1S> z)J?3SH7%+o+0p)i49z6QG9$XWM)`$1A%TR2GZ)s52Dvx)Nm8DSr)07v_Ea2zG-)Q( zP~)u_>E-@Onn8=mWATzV#(sT|#zKqv`^;`Qos{+B`?0}M(@*L0tA^+v^hLVgvnY)} z$sxJ^IfL}Y*`oWVrRf{7_1gJ}Jo`70r%;y6^bn0hrRtOtS2{h`G+M_R?7@>wjh%lc zC(QDbbZr3Rcs)yI=55Leu{ON|pi#J6q*gdXBEr+oe~~+o=o0xVf06<2ACrOZpOZmW z&tA{c(#TT5MbFmu|2ZH2%UWUHx^y8i$vpg!Sbxw8k}Bucp9?{N$;@=1pkTY%$+UUZ zI^B!!Lyai!-`)y%%sexUkbvaAB$*yR_6iQu8SOeUJU;wb60Rh&S3yxmeEYtG-9NFkVoK`_{-NKA%~5d_R(XmuQMErm1OzK)a5hv_xT30ql$lj@?5k9LClqFoOUc%UM zoj^|wyQK=a&0Eq0b*nO%ePosQB>nOQ zzq*4L!+4epA)8Mz%ts?Hrt=c^9B6|dnjCu&ndqLONJJOj3l!%k)FkuaqiGW-EBN|G zM4};5oC=Ik>jHTheMB9)O|Sgc#UWMg*Rcc>tZS0S%o<-CKpaDWXOImOw8@i1BAs?n ztP!m~B6klZ>wP~g$qq#pK2(kPkb!^yH)3W#4Hrz}=OV-YN5l;MKPT$Hx^n>|OG|kp zYeOUZ|DCBn%vJ?VB_wYeB1?p%q~D^24an4khCePvm1}=ySsJa#sK+#@yB_N{diLT5 zE{Z^Oyh9kH_F20h1Ttq6X3>XXz3)WWd0brFAnEc)4WF+z9kPxye#)1-XWs5lU*(7$ z4d2{H_to3`Eym&wb(g#QvHRnMa?5Uc%o$ja!?yaejy&@+V?HoV)nu7Nh-frb@$7Q6l7M6H_lN)uzA8o&uXH^-OfrPa7AY^ciDIy9XVr|R`3T;!IpKC!HZ zKA49Q(Ne!~nwR* z$L?3xy8diyr=s=QLI9!VCV|e!kB>3Om{@gYu00vTqB1m_?n!A%?;;HSS$AtZ#qAea zFL#w#@0w(2Rg}#+2U7#tlPT0t;f(a;(<5o>HFgT8nl1WEX5W9?H&%vhO$DC967DMF z?n2?5S&3)qdzD{iAA<*>kh7VXg}XDIfM(j1LYd}@>(U_a0>Us!(|lGK#{&*Ue7cz2 zS>ng-$W^BMOkWv`BU_CpC1wB7YG$9+3%d3y;H64_h;-x{^e*y-sJc^{v`C?$qWi+j zEQ7|%kGo3<{g~2f6g~{{S$p&upmn6;?B2lXQE+MUqS?=#i^Wp-fHMZY#Bge(q@>um z5cF`#e7LEik#i1NhllBK)r%q*smYPK-g6!s)ZlP7Y)3}^7DvP@KNhVfKs@Iq@ zX*^&)l!7Ch-TMOVC9JsH?I|a_b>NqFZZQ7CFxZtH773$4mMYY0=98%M#tmy`wmF%ID(UI(c~SkJ`4<=WyJH) z?t$~=^`P&89+tZ0NNqwZX1X_QY1JiKw)vjK?3t=$bec--d|wy$b?uA0Y?GHA&9ff7 z)_TKHyBR3Gh;QFzI*b7Z%sZjllSO7t*uC@~HXrKVv)?4I)1@lcd!2aY;2Q@N(idFT zxjik6hOHs%2a;!MXhw>KkwYzpPEjnjHhI?`1C^-V24}U4s2+1Y{ZSfHlG0iwSnqam6=D^9LKiORjZJ4~^%YhX%sbZk zPlS85$CcAA;A?)4)t5k*eyD%X5~JOJ4H-xC5nDB&X~~IKvc7r$?X|Sd*aVuSvyo-> zrzb8|2VLY4nq(65Il+lVqjMpY*(Fz@{@{U(VW}PT2)kClVeaDJ`*#taqWc!j_&; zRC3Y)kJ?wRCR~vvaOSTv2I=^P8f3>qL(q?QT#*oMjF$&#v?9D%#&ULdCFkqT5Ayo3 zRt3>SQzttQu@Q1fVWv=8K%J_nj(s8jHW+h=Bd%s=F(a*R=fl6a-c@OU<5urGUc(rH z-J)5O5fMHBDVlhTc_Yj{o9L%hn_$$I6n5RdN*qf(dC_mA$vL}lEQ4-3q*NAE4w9JA zvWUUN80rUXK@cwH0bQkJ_6$~r^5P9fEtHsOf7e+;9ie=|DC>JTKKkfxuhf03C=>7O z&Vv@>`c;n$n$RX7>+_`B)x(*WDC(#&+LBmT@<9`1I$+{L7UAFGiy~i{1P9(Ed=!ux zrY*h`y6&%yyd&JUtd_?bke&dIeQNxG31$$Ob(ZvcIw*sUzcB>%ST6yxRe*WQFQSV9 zrk`pZaoA^JeG|-=S@8_3c?_fBl+`|jV9e234k(}pMG@ee2w|rv>wLopg7EtfkEwjT z9{5R?Z$mnRfwguCJ%7rXnS?pk5Oe_(;C4iVE(mtsx}7FBxq|8xDn#F5@(Db8#Lplu z=M<@Z*ZGIjrYi|$b8gZb>@ z{O_wr)GeA7MW_{;;vc%)Rl|lJ=~j}sneCQ{&k3Hcim_vl_~YAYv3k9D-n8WETV^^` zOFzq_t@ZHgr%e1+N~*r`F2HfIbP-B36JWS(_)sz5NJEnW_^BA8sB5lvC*43wK=7TI ztC!h9(^|eV!{kd|=@*<&f!b@dnG?b@hqV5HGxKu7%(1c9C+Ukq;TIe%s}FMk@BV87 zetk@$V$<(0%~{+5fx>4&Uk@%bHy2|(DuLW>- z9kDXj8@q3YS76qmJC}nF%jpVkVV(QwZs*$h@?zA0Li!|8%H$wh@fzZ~gws!~`&2rd z{{4x-haqlll=1h1osKvt>qv!>qE;jvL6mt6TSf`U2EqW+z7!?t^<+E?CkDsOqyTKp zQAY6HdcBO<$V8;t`O$*PyZ{YUQMTY7#2a!?X{YaIzaU~Z+!~V4XM*i+$bGZJ_At*@ z&4V^0faN%&=wn7#WjAj-vqDXjzT`evZ8ysaV*frZ`GX}o*6|l8)WS#AZ*J|GhVR5e zwQHzd+&))&8@KK<)v-GVaxQ6|VF~wmAAbyetVT8}nYdO5tUx`1UDRv7R27WeTqRF?%c+`jsbXT^hm|`EERFvb4z)zmeE1f~kIanaTF~6#VT`R6zsix% zM7OV6peUYvv;k_1LUXwguK~dUG%UhuC zFG|vm5NM4UadziTUfWlU<~G$R#aWhY{p#uu(xg!dFe>iw4TLeWmQd{&+TgBATD}aY zI1^tj+>@QB)I1)lrKeofFQUe+9*ikBYTnZl5Qs>l@gkTkC{H!k^Vz@MCiGC_k&rNp z%yIw}SnJr+e3~`y&}1YZPq&eIUNuX%HXeE8;pfz2Ni%Z)w<28X@Z4PT}r{% zGOqzW#2a5uQ3gH0zEq z&g(I5o)%PKEjREBi6~+~z-jGia|yy0!ys}a7P;$+4uK@os0n8lsw5cbrN)RwX3OV4 zvXRqzZ{;BqY#m6{20U^4kA%5odS$2vToR-+|OSQ zg{xnUTR}Xtr7BLWnOI!QD!C6`LI^yYtB`kG=*sPly>?Pgw~2lVSAaAkUoy(fmKa89VG=n^ev~2E-g)U>QQ+p6Dl8(~Tjz}!otH+3OffsV&#;k;uG|*}gk5Uv9 zKuOO#RI`j+GO@b_S9BCIfs0gj_(C`>(_!(atXo00N*TJULR77#bVU%Bx*3gEbp|YV z201gSNj}Gg6*QS$+x{_yEt z9)iK+;kJh9_QfOr7=K2`vX7Dxybjl!-qJq+17)iM1qvs^YJD8V&l5~HvCU?=5e)wU zfZ&Rj?}{WA!<%I&^zHUEH;os$O_-e70PYm_eoNEi;la8k5P81tar>TN%J}%j(}8<< z@CwJnH(;+$?FZ@A4oBI8j@QTNUE?1OTIbrrxOT(FqdeX1O4qv_@5w#7OvU3?W;ppd!$4J@a)m0r62LWOf) zY+qc*R(X~+SmFH@`7LIVH9JjO|I+dO+TiVtAAbBXef)SouI8D@;wiV?oixZAes}fM zaVLG(9-ie++8t#8-PjSjZ){!}i_sp&(Vq0ymbDMy35RW|SE`vPY+(tm0LvsDQ#)KN8rcl&T_o*z~my^KMrf>0(0FowE%&4luN4Y2^61fNTi z1IG+7c#~DV2+Wm`*7M^g&kV4KROv|j3Hn0kFhZz0t=t8Jn|thyB=v$uV}jcaNoor% zz4!a+s(ClQ=EMYs+bT}mnYHtr&FjKDBkvQ3u+OB0VNfS2mNAl6|2ORplSVY@je{pj zcP~15e|#N;%qWMaG=Zfst%)Zxfkf4an){DWn|WzLCAFtg*^9F9f=5A`&EY_+^3qLY z7L`TlfyWbmRf63{$(TIsq`1^-KNyHKUXECy>rsu!GYCu3v}?!m`#XeOC;WB1LkLA( zDIBX+ft-#e;$vv^WVXar@MXt0u>sTJ63|_YdXI!*55EA2tLhE%^e94;j$ z8n=6tJ>zRXsNKh#-3qShu5|RN>YWD1iP`Jhb2hD8`P;}{K%OL`9}qe*RK_A7+U@lh z#c^jB>sUu8Tj!Y%k&q*JXpVi{v&_9^^U`$j<(L>7U($Ut+IcG9=IsS%*eRQzRd!d+ z&`;)6gcAp!wI1Rox!&Y%7mzF~z>SI35KF+PM8j+}$7a~7yDJ`GbBjo1t9%VX_UajC zaji0vIE@diB87IFJX{`NM?a9mZV4@O@s4*%7Zzmf(BDtWUprx|^Wrxhpt>JmYS&R4 za>ymF^fYTHC z>RB6E{%>#GK*i60jm5ZO5m5Hj#d9ia8-$=)a08i?Er^9Q@)}Eh2}0#c#94RwQIfTc zT?9(^ucz3&n;#9{RM-f6YxDP~zvQBhtq2z4iY5X&ue0Q*Pn5#? z(H0bLZVZ<3yV%xt(eV)LM`$TV!d_5}FgT1eg{+t&(NbZbnaibEXX@IuHqMEe9z|`X zGn_8oZPqbZ0Y0)U72Z*d2pUi0nDA|-sq_)}`8opeGvM^(N_b>Wq%Ym#my;T-=$Y}g zf?fs*>P$OVO`^!TP?Vg8qUjyA#vlXV8vFx%PX->)%yO!je9EWOI*J~<-tkgFywC^j za)J%{xPF1PO_RI0!mPduaWY1Aof)2x5u_2XBB|7K^Szj=n7}1hV|98&-G5&&9DBao z-isP~ZLY|T(*TNK)K_uhyN+vId@)9S#0 z&PYKz8!NXvE+&)qCs1zdgCJrnXo_~m${?mfE(;q9h84lI(1pnandu2hufnb)m82_G zg{H?0Nfn$|Wr3=`p3waAT6*{+v)op-Nf^X09r@a7x~OXQ@@>3u8#|osTYJxFwGDoB zm)Z!Am=}QTT@lZy?2}I11)oMGgZ3|PhR$FJWVB%a=Uae$L%BhMq?J?&vfbZ21;Z?3D0gTSI2hkXc(IHmp&e7%v$mY z7QvJP;(6&5gtRS4Ws-nN!1OW&bZWzTgb`_+To<*Al2djNmoQ?ig>wB0xQIiox6^QC zfhs-9w!RfVD-4X86~T=rM9;)H#^SrxT>KJ8PLL&XEnz1SbV25TgkBoJJ$iNP0ozGS z@1X~xI&R8(1+qt>@_Rx{H<3yZmJ?{A@B0-Lg+M@>QQO?oxZ?f&H)m6IVG)Uut)w z`_Fa?XfN)}LR*dq(wl;wBlELFXn(f;DKh^Ei-~l|D9+<_V0tP(6fU6*>S{+95P~;d z>hmsB^?tOWezd;%fI5P2egk=7_n^rKq-hZKNAoLTQl<<6j);2KB)N8Hm(iLdN3dxL z9M`X!*&9EIdxG1XP+BOxI6|Y|8`okcNlGAvSG3*DSRNuVia81a+yJGyO3Sa%KO}_J z$5;mAOYwvlN5mS_ejvcK7|y*|Q>G)iDhwBe_Hv0Xj(?(tnD)r*t} z5`o&?;34Pw^FD6MDoCRCqYR=o*b|p28TzQS7uh~N4r@HMd@CDlL@(7eV--z~+560G zm2!G%Lo=R<`UTT|rH8ZoE1L8HtTVZSpKF=;-l6wn+7?0FnM=masIlNWo!D~W6 z3AomxP_CGaA|6+My|6rEXBIauoYK3S*_^gS23zN8Sh;^li6P#z-X5}1dy8kP4nF5* z!VXHK)M81{4if~6*J=*MnXI`W*Ir9{R%#FA=4bj|&%$-XS6@@@jYQTxv-JJ4JZ?_M zagkjTi01qRqdzRf%EgY}BQs#iL5|)<;~p{jVv~Mpw1X>q*(14C6?*5a)w-Qp;yJDM!UB%yy#8DE*5nkDY5%Y z*f!)TSWnhGmY3bnIkZL#-%tg7Z8+c@qxTJ@_y+X1XU?{=ZK7|Ne=`~4*BN$J<^9it z1$VZ+%MFhTfR9sR`EQ>`fKQgUa#(UmhUM%V`24_>+vpeI?6@TE4WFQCu`xEQuAXGe zWt^e6FgLRZ`^oAT3(aF4gk~6t7nEF|e?!9q>TFqKf1Kmz2jn~if zPpBvA7@AJhD!h*ZK8h;So#+Ax2oDm*SDnWfUQ=Di8Kd3bpO3(eD}KD_ZAJA#M*)}Y zlPP27yKK#ws>%*8CFZu9KtpgT%Cu$4cPP90SKd~=j8>(Lo>L7pqT40LoEtkyppQ_G zr!9l*0u~Lxe=K1bsAPuYl1k6r(v=EXUJ3bylg8%=jl<5NEb_whk+1Gl(XN(GTxkWY zYMzkn0OWao{IB=NWXTZAsP=L{X$hLlJTe^bG3*^?&Pgw}g zRuE@1S7rE>Fs6(fHO%ujIsW$0FtEqeD&(r6i%^u}2w^FV^+mnVdzbpAO|6XPw@l4c zSz%@>WMffzzaVDfIxsDeD|$JCl7u+iZ}R*e!CrQJn*o?tMs|p8Rcac05!A5nz-Ylp zdRXzvez~K29I9;N+|GoOk`M9LVsxEot#F{# z&J{;vD00lY^DE0UVmTLdjN}rbc1Y5gG76HaT5A)ZAtfnxn?u*^APjlZt(Nt{-IPs) zc+@R;=|LZ(u2j>!5MdY?63bsy z`XC9|XU|Xx`G$_AwvyLTW--=vT+yb7{T+zJR$%VFM6mj#w3uV*GSXDKQ4$?UIW0j} zzx!%ggyx<#9opL;si;YUr;k34p}*T7$c6Ce4)mCLcp#Nl)PlIrf&AMgQ#s7IBEvTvspK^m9MD0EX^&($dvG*#GF$ywfM;Si&M!O% z#;P2t64YkCBy)0jrBN|}2o3(YoBGno|Kt>P#KdHxwb+OZLrMGC#tj)JFe_|LqCVp)<|oam;+5dBVXF;u&sgv&KT zV_e)&YVw&A-M^AnkA;K9MPL^V*aPDgN5GzDiUo+G0 zOQG6g&XFOazBf_)MiZ;0(aL>#Ky*zM7#x| zdMoN@bF^3`!a>j&Bk)> zNz}RdxH|z(yM|50Ci0zdC{LV>@&c`_r6=gTF*v z#X62_B)9;pe>)%FV6b1vggkP=@C@kbd9l%D^oPDPM9IBf#?xcxo93MifVtaZeX{vx zI&uUoo4G)lz~uuV7bBC|qZ3~aos6137o_)!jWs4^NewXIjO|+Llvv}~(8#_X-m-<- zrEMW1SZi$!1|r%}kPr(Y#)-y~5}r9Che;ZR)eG81ZB6rn29l5$(eKJ*#j`f?(a)on zRr19WKuBMkiPaKZ*M<1?lKr}l0V7%kTwp*C)CTT_fUEeWr@s`)Cd1NK#_2OJ&GZ1P zE+BJul}E4GP903?vwz0zT>Td}2LqT2VzI~tRBHsq&Z%8fTfN)gg?QP+b^8!voLQE( z#^%gmc(~z^Y-m9@qV42 zM^y3t=<8b`H}_jY@4RB&6;+~9*H)rQ1lfSs`hdGV)DQJuyV#^JhGC2_sgJLycKKM0 zx!m7Aa68y;I4}Pe%5Yb&%M$+n^{et{?(jcLJMjP8M&n!7G9FjgI___qgOit;W)B>@D zUQ)4z?)~)-(zOIN!9RXswEqBk{ma%|rcnvt4jk;?*4B2`^}f}9tu%T3{eGelFyo5} zv6MN2*%sd!9JMFc#JGs40&Z*kAU07jh40$>Hwyf@U>fjPFQoV2FQn)`-^r%p z#`RBft%9rHvGDhNbw%?Yb9sHWu|)GQ+d*i=R2ZDn4qa#A!5RUmKn3+-^kjjr=oSsm zr`s0kVg}@(LQjX$PWRL18S_nwJtjOyp&W+6gaaR|!Pd$Kr39G_y#h^?OoF6(oq?LH zQ+H%>IKJmW0^bQI3Y^6qAvfou;L1&cgd5F3p0_HDxWlCXH8$tm+g-#Y1tfGK(9107F(6n#gP2U;p&a4U5Fs#5-q+wcG$1$6cZM9f8f$C>2Yw4O-qrx>@R9u0k9<3d@4-7 zmFhiiSWp{{xn0R=dLXx}NstN&OSLZ@*-%gG{f!H!C@wFrFym;_wLrJ1twOLu6|c4! zr>evsw3qi}G)jDHAQ#c;8p%Z74Iqak!Z=<+SHdTzg;y8*DM{3d%3HkV4?!Qq+Uh(e z6g`{eks#vaA*-MU0DVPb&c|r!u0O8Txt1U{J)rj5)IMp|YoQ^|Ql+z}0-iC|oAP{g|FaH6i3?sa3V%-{3PpXmo%cMvK~SQwq;`{h|WCDG96Awi^K_GZ{Mz z(t$gCed7U==}p541m?twQ8Zt2Y^-%@Hh=iCzZbbNT45(~eE`8hX!L2K zDY*lrsZR!Vd5}_bl2yL-7(8GCa+~Rre366G@Yk;;T{9QlPCJ}3-lDIak-nc)DV=s) zGc_tU*zzLXZ@Oc>(%VlaaIrhoy`DSYZu4nV{LWk?(9D^KQk;!m|EQ9@QYV=;H@%8A z6A(MnGG8x-k^t)#2jpf{Bh~Y6i8!0G<5>Jvv;Q$sb+Ehq)j3UNn}Mf&ttzMO62pAB zI>#D-9A??B#Tx)xqJOARPeJ1ykVP}D1@pDpcgeTWP=S2*JhTg5spF*J=GQjMtwp5; zc={~hh#Vz)J#7y3B~CVe6?}QwIt}5XHs2c-MaOOwu?6KQ#zPn2^K5nz!Gk$&C&u%9 z9pClc?6b!SIIR8hzC;T6s}W=VvV1`D%`E~C4lN4Kmd|N*$gAyp65vyY5E0Y%(CpWh zZ3(44z`DY2nkWEhd%o3Wsi_D+wDX|3zD;hGfkeq)!VEN+ZhuoL!!8mQACkNU!GWt< zm+p@a%dO+Z!4H7UhIo=-tA=)LrxpI|Ym*I}9ZS@2o{->LM2}iX?hl@U^VA!?6{F*K zx`<(;fx#2-sIddnj28U8tA2XPnSAprZv>sfB8=IHYCEljB>5MP;}=S>?Z0QQ-yq#! zkomjOi2J#ZBGCc7{H|OJLo+x!Iz0-6o4Xbxk)7yiv^}R$+C6KE4-{E) zw%F57!}7I?2Nc>A{wW_xehxa`wF#+G6QLto>|W(2<<|VX`?i0-a0`ZkK3x7TR|*K> zM8Dxg&$Tno?aPgJM{I-MT6qTJEHlP$4?dsRL0(^P4^uw4Vsd*U^XBMym?;@*x=vt* zAKM8lW62VGZuk`J|K7uXc-Rp-%$sf&uRkQ6lwd4 zv$8$1l|Nh`0A_<72?jI;? zo5r^0KRhw9J*zhMBm8Wo#8dueql@Ne*JES&*b`3PXmz*t5P){hrDv}4wY@FKT4iaO zetAW-W%`i&YT;+frs@X?Meb=Ko;NcDdfF4*^=dm9+^V^fI-ibPzFd@=_dKsta?A9+ zID@|;ga2CKnqr?9F5~FXCzJ7b-B6$Ra!$hncO)Ajew>MNM}4cqsbG`7fP@J6T+>eYWe zc5~gmfS|DFVBQzpQ!BWPUvX^x+rvCuAR}SZ^JAC-bN>0<7azAX~s5|h3+ii392Xgt<%ys>73)rz2 zM6oj~>ZoQr0TQ9Vg$X>_xH`ZP0tl!(!WAZ<1%n^I2GUROD) zpCAw29~J_+8NeS}4ZF*6F$+%tPhJ&=)GkJXucX*wkh!FUrL432&b`j=(vRFvZkv1q zzugs8O}_7zTwXW2>V5x)^3e2_8sa9S2w;*>89T}qFzK;V67*9 z@dY&Ho_U%RQPN~al7L0(+c}Lcp*b~cI-PSgE#VgZFX+_|hiN8q=a8$5id1UB-X@CV zoY+X4EKG7+7xrlB2sZK$X#2t}tw=`Vx<$ld&Q3KSWuDwTd3dlJ3Oy7fNn%hC0F@S2 z8qOYn=>BfI+?P(lxIgg$1Xeqj5y6ue#N-zz70+6HT>U~;7CFSjFdqWF!C^Hopb>HB zTcOaM>`SF%YP5sC0jbfBjwdI>tdz@lt7@%weWpASLqQt;jlWm#<~$ zC>kzwgt%$r`G*5`L9d=ZQg0tAw;${sbJv%N4$D+!OBTJv+seQS4sxrYs8sA{}}t?}+xp<6_AQPB{lyjJcIfm4=J+4mj?SM0y9 zdWL);WOM+gM_-spKA;_atLp>8E{@HiL5!qK`e02UDe?Rm6+BO`txYn?sDb#s%5n>< z-vraelU3$CY=%X~7BKg%&97YwQYU0;le$9Byfue>rf$1%<*1bPog~rw%O4W?u1*>= zclQpIgC9Ncf2K;P4z|=dmsBN0a?Cf(KyYeE-p|nKku}H5#)!*Wy2nU+uO3^6F38o1 z`Sx56#x*d%wyAHZz$1}lS1hfYC}Q8(swequ^q*y4c~3=)-$r1&!~pR_xOnch=C&^q~;p<2qyFsxuLu{ScA$Ad|bYNA@QD6Y_fT z@lNvk4L#rYD%aDY$!U@vapkO14E4Tuw@(lc zSWiXqTvE2f`<|s-+jesqf;OE%dsZm_&;j+XAc6Dm=vjWSwSF>q2x)}+^GiA#t?(>4 zNL?F#LEUk)^b!n*Dlukt!uv?=!3C@Mw~2GF*`ftQlr`NYb%*e%w3mI?F5q)6je9`n zpc}=t8@Y?~F#6eH%P&GIZ=>JMtog+*se1L~5Y+IJwpipui(jUH^inM)v&Ak?Hi_>T zZ@8=C+iS{O{v2Kh(!<}qUOP^DfV%wxbKJ?5?+E5c?+>|O;F%2#YpJ(~$h2GWF*GOW zCx|rh*1;XVr{;_Z1?u=a%kO*U9ufN@a0!pm9^w@)GXHUA?v&sg+1}n>%I1OW@=94o z)>y=VAr53+jqKu7Z2i|KQQMAc`U4F(qs zdMTRI&nEK5m@zMHx`6d(mg@bkk}GD?^K$lZnjaY>iaHINNo)^AqSfcmCO2t|6unZs zO(e(cCKN|E+9lEN^pr@d#pXJRQ{ZR)q)MO5!P(PC&XuO0nbX%iAy41Jb#+W8WpV+`FkE zV)6cunpU%v_0O-jdG}~vJybVrBq-OoDScd4>$x$!{zzHMy<4_NTW=mqi8505Jx#J5 zuKXG|V}JtD{sVW)_1Qjef79C~NdfwPU1EM|Dm9Er&MNmagFNrX5O;EHE1x)}Vnw#P zI#Oe1Iy!cAh+0aqzw}ffEs4Omg>i1s#(94c&DzV2pKtsSwz^)zvPvQ{ty1km@woBu z@n@RD!O786EBIG=E6OVmY&dkjqh!$XNN;E~A+ua07;T=UXT}|i2;yNj!IjB5Sj7_D zM=@8r;T$|IJg!;S;*ILqM74`bWBFBhR7uhvu>UWIa z>+JRS?imHw{F2$A&x&@zGEVEs6C_+Dl4xJYnudVUiukDvCd!SBz zazRkbmh?)z$vUpdx(P>yWgUOTQ(ax~Z%>O8VRDHd zZo<}TNQK6`i!Rfyo@ajdLQ*NxFJd{*km^P=d)=bi;kxgEJ=}ELWarBRVQZ|F0mcwb z$43PfeFGZ;>^~NM{QP!6jH0mr3`j}_j_j3`(4!|M=rEZyqzcI1eG1f9E{RJAY)uUko7NQ2L}d;X|$q3W}4uA}=GPr!aMu9Bl~syoUfMNJN}_-_n|RKWojf3sW$gXe^weQvh(*hj)}TzFlf}Xq+>{R zOSWccXvp*0JZ$Xs;G+yFD$8`Cl?W162bS!VJ3@bvO_%&XnYx3B8OZJ!q`Q zJi$V~AXsivSJQ$0V@~6F4?XS@iC=55DH^(MDfX5}p}%JIfSoWj+~Tw19hdVFm2x77 zT(oi8yYCiOpSCN8*_t=O62$rnsYTBXnF(JFyE7>ryqz@tDlD?OnVVP2!X2_H9~Uhiu9l@g z8YU?eA8USYCf5nx7%O#j_Fm6J(i*&(7^MaIg5%8$l78;BybTirfrXXJGkm(9>_23Uk80+B`jVIO2*1tS zaF8(%G3>o8w11@A?wl5nbzrJ0iL`v!Su4W#K?;{yjEA(PUpH0-r(HY65S6x0=wC%e z?ByO6D;Z+zD($;Q$#D1`vsblQ0Y&cC*$%p^LXd%aH`( zn8D(%!mWCF-eyFOgX6dz&RG51j`$CWjMIeA4Liil9md=|n~T-#vv2bqb-L(KR+~Zp z?LB!+=CF;ngW2gjlT^3gR)=yje0xt{RhHW=@t8Vvz_!>sKDF=rSNqm!cd{|6sXE^U z=Nd_wj*tu1>vc0#5vt1v*D@>Dqo3VfyqPs#GpO+_IqyxT;9HN%5zXfT&yqVYwS9Td z*&``D|BdN7Pg={8u>Yv>?c=kJ6uPSJ>2kqa5O4EkSq(p1qDW%>aw<*uaZQWHt|;*? z;u+@xt78$tz1KHcd|H%n87T^NO*5n0qAypg+*%X8&N}f!2LdzXNC*pjP0RUN3{Fo+ z)%WGuI*-x$ksGG>jhO}R_smD$ZAh=>RemE38(h6l@x-a`yO#eaLW>hQYj|`st&^V< z`=X-~3I-{LP8@aA>-Z$LHetP(T%dHkud#)Xv$R%|rGA>0{iVFzOFoY@f3g;@{E2Cj z6#aI|c*4!-mBdp4$z8BV`!{3d@c5Y5wfH8vW`-a~9QqwAy`sMe4v8K!v$QxqzCA-j z9SKpDybz0XjxM)f^qY@GDdh?QdsM}>DEiVPk4{?B9Kz0BK3+?@T4qCh*5a7Z_EYrUZlGh})DeVeR^o0-_7sahvR zE~KQ!C`C!xxt~fqvrk&gl+B>?J}~tb=tI^W z=0DgIXTz*lpv0Htn?=h+%L2-}1ll{xwq*{hP=APaNL#GY82Ik}nM4dO-frXe2G`|_ zS0YsG7WHwc%2%K-VwEdw9=<##B>Dh))J<}rhjfwY6yro&qt|u( zl`5%BW8-M^R7;Ms6P1GJ7NCuLw%dalyf&^Ox}HNmC-!^ zK1^_Fg z&?@1XPxLPspRG1uX$l+5s*b1Jimn)X8N|L^k~vWGNc>WPsLGMhE@2)2(T?}S&THW$ zS#KV5K7GKc5IvI>Fac*UAIZ|oPvD=;eoHeb(Y&EJM%P%Au(&02{rI&=Mvu*uhKOeZ zY_cqjLR>>r*t>zdHD}Z8|(T@<5zgm7_r1Le+fxX5!b+DmOUp z=zYRTn|72hKkQB1;z7Vk^Gem^w7@cs>0J#0?RagCmDiNhRQ*$rXeO%9F*DTL4*%fT zFQ<5~ViB(^o^5Jy;%0gup1N9UgQ;HK?O4Ydw%q$O2bXkHueYpmx7w2Bn1nhkt~xg9 z6gAln%73EFW(knnZq5ISCu_>K>ZLldKUC({TFrpZ_Ql$4G51_isCcX=t`Wy;UUofE z;^4HA@657FYp?VDUH1VGhrtJq@UVlzt)Wl^zd0P9 zAKMV|T97Ot-N%gvCZOK;Di$yB+okeY|9uMWYAKwZY-OL`@V+ICy*!p$^xon2ZFP39 z+&jT_H$J2n2`AU<+6fLw7tV7LeolMQVDZgH>?RSZMW#-8VT4PR!gs628;)D&1HRkV z!AV|9pD5FJadQ1s&-~#VUj&srEQr$Vn6p7UG0AXwx7KWKm4$)3jLq1+(619)maex( zm#f4s5h#;g9pt7okUW&@@+!~qE-#`hDDSG#!GqoguSjTFU5KEQm&{JkhIQ4MtA2KL z;|hPQ&zrm9meduwIP4i$I@QoA#z(NtC=@e&TjnbV{yZT(v#lm$O4l@y${>)_?B>hN zV*-~ZiRNqH+!s4@-L6X*u4m**M!*Px5)=+Q*H%>b9EEu z*PHsyZ+?p)UHBgKA>v+&X@p=^C4(=;tM?4Kw9`GL3q2xE$3z0%rKR6Ur>+ipexoM& z%6D~CXOU(8=nabXEB5RIp=F$96f5PUCdPwx^fa%HH_wmMAr}b?+D@;`gR?g*z>b{@ z>bQ86IAGfjD35DUmkEJ0{VrrUTk^=qbIOhx>i9-PXA*%_PQ~4p!KtLYY zL5cjIe+wsg`djUsyr!y(vi2qZb1FMu?1HvF3BK0-U63!n1D=1aR_?6RhE|98PZbc5)V&DH%73P=V7y7O7FV8}@@tfe$$q4XY zGQk-f$YU@66&CQ9U#9-m#`0GjT@gw!h@GR=pPv%^lHwoCr}7=t6~F>^!M4DjWo)qD zhXbO+23&g+H9!aID6UDI)Qh0f8-Swz#{o||z*sv`8jeH94(su5EaRLN0syMU2MRzhTxHww5K;du&$nPVy(8aL~D1iF{Gvxv^F`$U^7)ZAh z^>2=j&E)4uYK4WsIRZ6cLpW;tdDCEL31ZeUhs61e5fDs#mtY&mvBI!4pJ|qXbunNS z>|$jBov|qS`z%3pgB5AMo(Kl4d%IYfOjudJPpjL-+UBXz1RP3WG*shXWx>i4#cVHp z=e3GZjB=5&V`Yh9W+|284+jF){ardvb6{nOV`gb7GpODIEM!ol>R8Q%l_i0hRT5Fu zW&l{iyI4UySXq*oS#-8S4p%|&cuL{m0EgO9_(2wh*(WfQEX`vTkz;HL=vRPBJIcK3 zAJUEiM&29&y9z}{lQwcYEVf`uT?_ki84x8wFae|QC?_@kn~GV|u$u{^Ho$gJ;BTms zzCDkDsqAhJbwYqq5h<)91P;YajZXeJ(SvLe&?B+#kP`A!~GWtXNmtx4n;ZPSWmOB&fn?eKR z>I5GU5jzUIB{mXhUlj<<4r-z7;)2b7qXQQ$%7N|jLAr*_^8S@LtKD2hM|&rT3k?1X z?COHWZ!G3d2_O@`I`CosM+8q9w!5KVBtw8hnjzq%NX%B`vU>A15mc@OA379Vu-$GP zcJIS~`@t{+xH1DsGf_J%m_23=_R#PV>8TL{cIyXrLsjuI95V~q6j&`5PW9kQFHlVf zG%uUO?4*AYWxdX@X9V zy?B@#v>=i##2rXy52Ry8p(XfWrtR6Gj#GHl@Pbs<8ua$4*@?-mJ#d(1`|6T#dKk~nndW20X>@mL;DV0+6OfM^MOECpXgEbX2poO^g0Mz1 z6&=Buh{%)6cVlmrDD%}RZhVUaI6`1WCKRmx12inu-Q3RA0&2nU-dE+VAC+p)uk1;0#S{N^>q4c|Qi65%6I~ku9Pejic@80yYn^p`68uuBry_>(|ym zO>$sES`=Jp1xDO%7e>0s8H>zrWV($Dv_l=yq^i*|2#A9P#N}sV@t-YW5Zp-q9rW<0 zz{~`-C63jiaew+82;!fSw^!>n!N1N%0abzT;xM78Y~6~9i9L9cnk!~_&K&}pH-Qfe z3QeUA0}XU9*gJb9ueLXA@j2j}+{Mdm$H3dug2-w9?0fy>4ZyPoJXF6c>ph+Vk;mwVwbOdXN9l({OR zV$d`5fFTWa)JW^z1BY2vyhp7ACkb$HzLTOmNa`RuOwrL5xkK;gaS51ddi7>B5TKP`Zml)J0!u7a~rtF6fhhc3fb^8 zI{CM?Kx83@Fic4g(nH`plqp7_39f^Nl|mt&n*R^t?-wAAvHREW=r+mT_e8oCxqdR2?7f;_SKVhJ>BY9W4q6 z`niK>LY-si;NhYP1tJvT3fF)+V3_wHS$Q?-)d|3(2>}mvgcLY{&O#1lXa891Km2;c zTB?l?$Y%y}Qq;u)27>>EyW8uK(q@m!n0Vwp}$moW<1vI-DUeeV|eUNj7Am`LHwO%L)_0^HIr z9E5T&oDgQ))%U|smjK+>E}S*>UN|g6+bI9+f3fpi?u6hBReVPO=h zY(3M5&*1=~Mxl+I(8FJurz$OITsnEyEm zcv_|33x{Ea6p5pdZD`B_(iQEJj*(?A9EL?wB<{Fdm?|GYA=i^or8~m57Y@TZDH7*7 z(d-YrA14)jP;p@#d*LuFl_GH!A5N!n1L=@!`%Ead`^32i4vX8}rf1d)2DF}CGziZg zG%Q{hClS_!bQ9#2P^hv=oY;eg#p&)*byy;OxOf+hQeY1n7N5()o8t%qw31!41;IUN zSX}P)zB><)%OSD5XiXrc#~Q9!JdWyROd?V?!R(^L7{`CNi_m`m4cOJwpghEe-?@9l;M6v7A z33U9h%^A^L&VUH zu=6khRG+Q~nI8rt{1qFs8Fu~*j~PX1VUU&Y=Aj)(uv0wbzKfk3=$TM(su_Q9*ni1~ zPTRRr40Vn-nu|vJm*MT!6S=c&=T0K97P6x#72~4qGrOR^A50u@aNNK@8{iubrC@Bp F`9DH82$KK+ literal 0 HcmV?d00001 diff --git a/lib/server/.cvsignore b/lib/server/.cvsignore new file mode 100644 index 0000000..e69de29 diff --git a/lib/server/SERVER-LIBRARIES.txt b/lib/server/SERVER-LIBRARIES.txt new file mode 100644 index 0000000..f4c6b4e --- /dev/null +++ b/lib/server/SERVER-LIBRARIES.txt @@ -0,0 +1 @@ +Place in this folder all jars that should only be used by the server application. \ No newline at end of file diff --git a/lib/server/avalon-logging.jar b/lib/server/avalon-logging.jar new file mode 100644 index 0000000000000000000000000000000000000000..472042ed168b63633cfb999b4253ec4ac0373444 GIT binary patch literal 169549 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 literal 0 HcmV?d00001 diff --git a/lib/server/backport-util-concurrent-3.1.jar b/lib/server/backport-util-concurrent-3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..3a4c2797abfeef86c8e298f542322f6a4a4f0df7 GIT binary patch literal 331716 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

  • Q&nKcffYvPBzlj_npc-Y^ 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

  • _}R5lq)%!YN?GUYg8_2sJ(o3 zX4FJyduK<~WBbESvlF2rP(M(|O6JOpIVL8=? z-cBb2vU_TflfX(^WGe3~tAjlUE1>~_&SE7rJKR9xyz+Fe$WUOtmHtbwUeIoPvmfIo zZb!H!@OUA$65K&7P*qt*ZYHy{uHvWO?Cu$ZyDx zi(!y)U0~z)vFuwlp_9TM%J*Tlx&^P*X=sUM*fG2c-CQ|G4r@G;GM@_&^?H~LuV#r) z4Kbq^`SpzLfW+-bpOLh`;PS_r&y|49{seZ06}A)R1oSGd@hxy2jd_%pe1|C2_9rA? tapTVz`<#0;i_tjuo5x@V?&2P^%ec?{5>~lppu(ehfQS4Fb%w0`{Q@!v)kgpT literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/DynamicTypeEditUI.class b/eclipse-build/org/rapla/gui/internal/edit/DynamicTypeEditUI.class new file mode 100644 index 0000000000000000000000000000000000000000..8d0a8d279ce92a6a9fcb1a0b58b7091ee364a106 GIT binary patch literal 7462 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 CHKt+! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/EditControllerImpl.class b/eclipse-build/org/rapla/gui/internal/edit/EditControllerImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..bc76fddc98ab37be57f13b94b43390bd8c26ac5c GIT binary patch literal 4647 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 C7asBe literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/EditDialog$SaveAction.class b/eclipse-build/org/rapla/gui/internal/edit/EditDialog$SaveAction.class new file mode 100644 index 0000000000000000000000000000000000000000..a774108fbb99022010a46678fcac784d631684d3 GIT binary patch literal 1795 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 UE@HffsqPUPu$t@RysiQM2kkq)mH+?% literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/EditField.class b/eclipse-build/org/rapla/gui/internal/edit/EditField.class new file mode 100644 index 0000000000000000000000000000000000000000..86ce050642338b93889c5f1e0280d82dce5394e5 GIT binary patch literal 489 zcmZXRO-}+b5Qe7;R#Ev-(6c5caIuM3ZW=fdO~hd0t?Z8LK({5`@)3WU2Y-M+$~X%K zBpy1Gwohl?dHePK@d*Goa4um-z?Jif@_J&lN~Wa92J}`Ng)s%y;m{>Cv4nzv>PXMD zGTJ8UVK~AlNZ1o_v0WfIXU6>WF)#T{ae_gBr0mwXXe?m2*?JLBp=_W%>7l_sy<^M- zbN4z$0rh69w`tT5o@~+bt3r zuuF!gDzB})&WB^)*b81o{tC(7O4x_ow1PHo4vgIkBT=~`Mlo2+)7 z)yi?p`_Yz1OA7_s@O~7^n-ppp$P5ENF~dK>KLQNjxx129N>Ug+9_{YE=YHp$?|k>% z`}cqU>CXU0@rM-J6!!bUni*K@u4S%O9MkbaJMb*mw2Mw?&N$_8%CX&I3LOf$cQYMZ zDTjeo2q(ENUecv7c+uLhOzTQ$+8eePnq!5~@jZdHJv&IDTVZdD$&_EHlxr3Wo$Hoo zy9#&Ah~1`HzT$Xm=IMDE&2xHH!c*AOJU!u;R{U{)lNLKYKfJ&-i?(YQLYubz+SYU} z0xgCC=V;d9GN}4oC3IYKiS~ZLxvt}m=Y%H}riW)59IOUb$-d$Tm&^sBZ^9>an_>P& z@Mt6nnORauPi_|Mb)lo2!hphkw?wWRGRg_RXs4m@9s|2@r^30$g(<&axl2~y$ag&0L8{9N4<=}O7gdqkwsMK7 zC(LibDx=huo+IZ9Y9ozyJSZFtQ^NlP2T{gZ10y(~U@&7X(g?1WbW#zSr4$Y_%Ntdf zMh=I>^wpAQlE~b!xX{kG3q{ zlI6-?tk+I+6U$O!__%>j;5nWbw5^>L)1h5T<5T!d3ZEu1jhaX8(!gi&IieTX`Yp#} z<7?_9HO-$(<9WQ8!V5KsL|F`cK_I&9%N5HdK<7pjX7Y@RaTIP_46VYYS!-Q)+Z0}I z0*uTe660iV8jjZCR}Fj(uP|FOp3IiLk@=JDXdfxu6>Gi5?&N*j?M$V$(=8jW_Yr6n+vP2ij46 z*1%i%S+xD;Eozd{x4>v|u!RcDFAV$=zlzMqeRd_*Je%NbfnAbJxOP5nF%n5*P&)5# z4Ez??6mBmU0$=)LAw26ZIb}y5%X@AP#tn0KE2oY0S;{_5sa>q+Rl9OEXDhd%^*GHQ zy=2ChdsBMRuLK2q%8{$V4ryTed_5?P<6aiM9c}0Y?~%NF@~Gr5}I?kBpuy_YN6^xJ-V6=dG0Zt(dJjtg!jJF<-jvInZjWUnK)ybW^;quF;b+Fr%O z96H9K4{RaNp?tQA6EbxjV;r5R;t~0hnf?z~aavxkV{Vyd^MAxyg>9Ux;;C%5->Rap zg*7qYq|-=lR1=jWfd@&Ci2)qKAPzI#QNBHdlXw`9;s{oF_i%9(A^VvSurCU}PC%tj zKqV%iL#}|NLksCVsh!awC|C={$ou&dQw7j&?^2>y8E>tn#8J zr(Fy`MjL_e5#$kO+<;8$i7|9zJOS5JhwH%=Y!ape&*Hflt{lVd7q}`uHp8a`y;j91 zucA-h=;ZTP(W$PDT%+H1t&@I&0F!hzMOB=l9;Op6_s1@~Ny-=TCA#`Dt-GQAiThJ{ ziEF=tS6TwdG&vp^`5Sg|M3lf#UVRI_^2JbIm3)&y%u?iYbU4pCE+m4;)bq|Hf?#d- zrRe%Kd_4}pA|xa(1;9TK!tDMn;em1pWsuf(MhGf-dc$#nCNmM zqRx6mo%j~M&7}(8!FOY*7nzliI>aQuH_JWpA^Llpemc21e}~^QOmc$3&~G4a*K#rOXS6iO57S$>_?%h7jFLtrbfA~ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/LongField.class b/eclipse-build/org/rapla/gui/internal/edit/LongField.class new file mode 100644 index 0000000000000000000000000000000000000000..1e28d1f4aecbce17cc665f8e3e0c12dbde1d9021 GIT binary patch literal 3281 zcmbVO`%@EF6#gy=EQD171*<3mzCuEbwNN-GYykVVFZ+J? zhyDfrYG-PgsWTn>i=FBJ)Y|XvZjwzz+vyCm+{d}+obNl|xi^3Q{p)W44&g@ybpm@W zdm(9SxvZ94C>Tk@badO)vPnH-ILVY{E{qy_HlrXcka(QwskyvkYiVbM=lmlL0^L`% zWo3TMy+%qU$PLW&uONf71)vr zdK;gTtApI0ml+DgQ6(g87`kpYgygQXm;|v1UXq)n$vBbYB+9~hI3M2AR0I~ zZ);2Xie+E*tcNYqvFZ%Efs9t3YohevO~9p+I=p z%IFagjfxFu7a03r@dFvjBDwi&N*Si^0lc8iWp#nJltuV6nr+CrzZiBFjl97A0PM$9 zo>bN4mk2IkUW2a0l0cJNib--PW4l!ik`_S-yCm#x>h3?l?we82OHU7%J%S$Wk)HMn zgra>jO(b-`iY7!PwS6jLhzqEB-P59%QG4{^lw^p6Kzmt%LzbPVjO2#Df%Py0CB^mJ`J|mxw$KP+Hq+d zz=VoPoD*o_*_wNyC*a7-qsqYT31x|GzEq%qTLMJ6EhDgD+R@TiC$yZ~844~4bXV%K zzRDG_^IK}At>7hrjg?gyK%j9!cV@J#to)W}Um(7ZP;&i>idXR(WkOr8eznGaRU^2J zIR#o(bZ<{Z8YH$U%cy=lHpO@Z7cnoD!&Ji2ad~AmvfjQ$RX0>oepN*lWK62Plv0(o zpOJLfV7bMrZg=0CY(PhIbWcJ|u-7ZtdhfxAd>h=73*=Qeva#Fd4O@3F7t<;G2}F@@>y1wz;>Vi(vk7<9^0yUUOqTu8m~`g*|ol`DjB|ocNDxWu&sP)1k~r6 zsaV0g0v)BI%R8bHFoGNSK*9U|&E`IQ!#0iu@;}c;;;WU_2Yva;Oe%}AIX_qN1-=y6oKM?UHY+zTSTjc6a9@zE>pNrR zJ3T$uyxJa1)Tm3To+;xhJ>S)6?!Lp}HlhCgL^>+=hFxAEJ^-3{2tolTsDIcq^1N8=oa_4`EsvvG^LgVt3IqyN2C&urJnM zL^Spb_T5E4mktz>l(SF~Ptj^%HjxmCKcIwfAskx6Gk0*D+s9iPi#RCK2u zs|8X=phdiVAMJN>an_#|@%kF{+u}AYJkT56Iwe`ZgG~643rh7o_@HFkA&4Dxyhto; zI44)PV37~>rucmj|yHVtG=tGJD0Ag2+4(~;RY@P zrve<5+z4F98~)*&WJ4;nD_+E#6IA7UlZoHa^Ak2D?xClj&_6EXvkLkS3JMtIcZ@8b zMk__I6Dc=}C!elzvRzE}E5@m3*L;m{m{$Z_@GVE4e3~Kt!cGM@_(!wv%1Iq|K>(sc VjE80_K#C~G5q=zj@7;qx`~%Z)5jOw; literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/MappingDelegate.class b/eclipse-build/org/rapla/gui/internal/edit/MappingDelegate.class new file mode 100644 index 0000000000000000000000000000000000000000..3341116485ec35532af03d4474e0fdeeb203bc2e GIT binary patch literal 311 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/MultiLanguageField.class b/eclipse-build/org/rapla/gui/internal/edit/MultiLanguageField.class new file mode 100644 index 0000000000000000000000000000000000000000..930ac3c8a0d863baaf31ad0d7cca34c9a1933fd1 GIT binary patch literal 4830 zcmbtYiC-M$8GgP%GGsHkz{DCg5D5X6V+o2uNws7l4at&3p=cVl9hLzm%+BDBR_pj-%&o|%f?ku}#{PpKg=6c`vd*AnY-edF9e_yx? zpdbIyutA{L_2yEZv1l8qxxAIKoWS%P!%mqqR*)Lc+kuraoVmO)XCAdodqzXOK+ntR z3{U%kXJms>8i-Uj3ACIu&Kt`qf5~#@Qs#Nn2~z2K8a6YQADE8mX=o6*RZ69dr63X+ z&IXq2ltmH(`)e37ZCjq^dPPZrjf;k3+5$IZ;_}B&%eO-Un*(!Mc_+}GdAV>Vi-OeJ zG@TCu*AZx4qY}8Ty}*3kFY|aL6ry;&W8_SM12JL7Z3UL;S7!DkWFzT z>(R+2*IQ6Qrd<+cIT)%o&^aZL7+ubqixN9u!_5M>l{37?PDzmIO1m>=0(ID{<3=zAj3xNCSDH=Ho80j`KF?_q?N#~j#?N=g|vU# zRB7$#TpxKQG_(b;$C!p=0?lQ|*MO@;bsWbD`oU9%YmjhPM`sNh%FxDj?80shr>Iz$D9>p{q{HZld0e8xGr;H`F;LQ#hsL0X)cb z(XX_dTXY@bC9sFFSCFanZKwfnWObw|W_t3}hjcuQN60Q?W=5bhc3xR0mitrF=ge%t z(;M(+a%a@=89+Oxb!0*PowQQf?^ri6o2qG6N`%H{+2yRP>-5SpmW{f{H*KCIA)eP^ z;hccRAjc>p&{c~L6%mi+XhRAQN%w3WIZ#hyYL$hEP{n2*N~)AD>Ub2M3Z=5Uhs7LE zYpoH$Xau%rEXO>V&rO@&q-H5CmpoJDMJ8~hv- z8`E1u+G1xTn`Y(2Q&rR$1G3a9bZ~DPeH=FkpcpKiK;q3yuN|$T+C)XFQalyhHMphkB%qsWCY~FK?2fKQKZ=-gZ zT3|<5%dwdwyWuBvd=j5hG*cOGuR+vm5G3&gKBMEaGPjMhmS=_lIzcJJg5ES&FuXd+ z0$V2nBfBteEJg&|&J~99>$K_3x?avCQqAiWV-Y3|Ulur4&hGW_as8Q{zy*9&cKNRf zoQMy?>oKdwa*7Zj}l)_5*X7Q+xe>P(Fr%$qkKL(nR1cE}AnkfGawFBB?Kj zXe?$K%2gddlj&$+I-*2uj|`*@C(9;H3;pY%{n|8>+lomuAgPdfgL zzi`tGr+2uE62*#^xQ;e;CfvN2&nwu&F71V0I z*6=TZkylyxlb+%Dwjp~=*m1_W{MszUn(wiXA=mN0jnJ?eoA~>Udo2G#E`Q;b`)7FN zIvHMB;Ng`U6t6n9p8LB*|myWlULAkW)-)sppCcfXP!gn zDtcDX$ESXNxMKwayghWLtMRT?+`WRs$?gK~NhS+8av4VjR**?PkG3l~N$JxC+$W#- z|KS4O(0HbRv(a;3`OM91qz$qU1J z_hr0SK$-r~HGHhV%op%!c|u(n?4A(ZG+`bgfTIj{gy0`V8;*r1?p9Vy!5qNn@Ohs3 zh0ua%KXrxi)`kS)r+y>tvXK^!t<(>TAL;@8vY#eGCzB9`yLl8b|+MS+%j$=p@^m;p#< z`Hv4d4SVD`x?IZIDSnh$Ym&awofod5zkr_>Q>6H?EyQz*tayN2e=wGorqY>BQCbA9 zm5dM2urw~pcy8k9z}c7yQ8FPS6ZLYnp`0W~idU(zk?svV%Nym9GV@4iMp0s8WTswD zfJphFh!QQyE`}vbNm4z|ivoULz^}{hsYs{Mz+VW>n2EXBQgX8eFXA_$TfZ%xv~HyH zF%$7fizfJkC~`I)Y1`UJ7pf!O(SYCKrAS$_P^F2CU#l!aWdcE!-{TK8RQ|ZG3iJKf YFzbKA-+681^936C2k-yM>%W2j0l82IQ~&?~ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI$1.class b/eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1e193b4c04ea5022410ecbe2fa64df3a5b48876e GIT binary patch literal 1420 zcma)5O;Zy=5PcJZ3&~0X0lz>+3>rdU4TzwjydYFj70?n)mB%3&!{BBowL4M#Ssui~ zgT>h&W!bZ?$pVVxu+x+2?)Un2_m7|7z5`gms)YnYQTa{B=WUle&5m@Wr-kov*AWe= zomaw_s=d~$mO;I_Ax>7yhAGqUkuj%Y)UwX~TOpPJ6epnZ6EtMBoNHa|Jh@Q#Q zb!14csfHK?!;p=BTuGr1SsNCH8J6Rm&t$lmNv0}2vE6Cy34fRGxq@M&s_NXWabKEy z^k>p&%20|G{J)-&rs+KQl=rEnIsvs~Di-_?j;BJ(hRZqm82Vehy{j0;3bEIhdk3Pf zNn8uJ876yr3QtQdMc_14i%TyWtQ5(3*Ty97F$^??u5q_RwT~8N&gZmnpEM7NbhLCG zGiqr}VA{q5Jf!$Q=pD^{&5(;Ib^XF_Ga?(WB;ral*AA!rv^0MwOln$G_lB=p27BIy z1JcxRkFZDnaPNVeDi>@lV*EGDsLIri>iBh97t`+H_#VugDj72CUfopzP3xA>`>J7K zg`v>X^y1c=nS4g;dWo4dyI^m6p77UP9t0wwjxd^QfMv60$jLG{3j;`CkgO!Vr(lz{ zO)p70?c(egTrHO7z9RFP?g@<0H$^99p&Vu8$eIlE*cina-6#sza6R;~aRWE$mEjh~ z>1%Sor5A&nn?1qAR;hS|J13YrMm~Wa#8Bw6NDz++aw!Ir>%!zvz)VPE2t~|NT3Vtm zOf7=RhA_p_G3FSKP(F*XOc*Q3;Aspa+r`LsG13u6A2BjQEa3^ANi0)jg)B1G%8J6P<*WtDy zOv^Xk2-lKkfy{RssRa#jhRIg`Yup#>mat8R4u8+`QgZ}QY!wkj$WhdiVb6AyikFH}p68sO2=R)QcmrL?7v{!j;M=}hhBd4!R z`=acVxEgLVj5YNXj&J#v@C;K{x#fh7l^_}K>KMa4hR%xcce!1s+6U89mvd^EAk70J zb>FfL)oKY$;(>VLvaHsmLx7&qaNLp7_H?8%MJ>inbB!O85+U=3S1yEYe(1(1 zrgda7Lvfz)3l4R5@^TzC6C*96LWNRLTrC))^UD8S54tRkWL zvf^}}fKJvHoy2L?Gt=L2Et8%3j^3}dk70n`30f%&<;WpP)>x27#~_AiM^PBY^}t8R z4cw$thFch+x61v2P89C&^eIL+vza5@ImP%fQYXm7&_wA8yp{>&1?63dAPqN=hA|5x zVA78{%u{AYzuYsV_aRa;K+0rK@Q~pci${2V5oVQOUQu!R2u!j8lWf5BgfMMbrV?UA TZH3l2UQ+ZLS*j}-t@Qi>>%xBM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI.class b/eclipse-build/org/rapla/gui/internal/edit/PeriodEditUI.class new file mode 100644 index 0000000000000000000000000000000000000000..82c5c9a2471f356a0ac0317ad640b368a98a1e48 GIT binary patch literal 4087 zcmb7H3wspR8GcW)$t;_Lm=&mkC~}d_hGZbs(i)1DkZ527!Gy#`F`evAHUpcPbap~Q zZADvqvsaZ`rO`LeCPY#@BJ?P z>OZf(4xj`7&`>9ka@>OM8k0psFHBjwWqYP;8%5pBTb|x;x|Wmg=IfDO4KacAa?a3j_$*_#FGQ!PX4#4QpMD>ZBsSfftp z#t;^kC7+3EfIZPl}L96cN7_5{m|%fGp8_1U=alP zb#$*YBk@+;A#g*^H5vUO)AcMeWx#W%JOY&JZK;`DyCROa2{a7Q-*F9ZzY0U6eBQD% zj=LB@pKc?0-k88H>{ckhQ^1JEfBD4dygE}NIM5w3jyPzz`~R`FBaV9n;v{%z>mKaZ zu#ZfwF>bM)DiwPyvzXV=a~07+QrZ`d<33WxtSoD z`XmnGP(VQcijqKU>cI$Z%UJGH<}d~{+(>d zRuh#4!x9?e31so02G)dRL4 zI};dzq2b+xV@b``Lb<>+iBaTu1Jk*pN#(~<7X-;{N~}CcTm+^RbsnlqI>Y zG{LeOIq^TpCvaW0bNDP^5sRE!d{31wyhMhLBRtqRrgDasUNcDlj&&N}WqMw%d44$Gc(p$-~AuQI#E+X)Z#2I`xFfrp4*u3atnB~T#ksCL4 z_Qj%O>ov+0eK|c4?~LPf0@pM4d0w>9$RD5L6q0Yk^Z2}mv+QaLv1?K#aSrEMHZ6P1 zVS0rY`#4oAzC!AY5?}HiE=`T@Gfu_v6^7X7?E(`RI`bsE9u2LIXUnH!z#@T_1D=sP z(PvDCDJNACtTbeSbzumrlTY;?@e;nvA&Sl=BV|79 z>Ka}a*jO`_gtk1(Ea`b?!m#Xcj#M%Gp2YX@O2E;BY%v12N3p6*36U#8_!1~%PQxtY z<&!=Ft;A)#N)BwDw)0kJS$*KylzXC&xm0bKY9rz8wn>=___@R{)K*+&jGAE^IA&vud;)R&hVV=quFclp&iRu= z^+;*laXCtjc$|MnrcLvNg6DSiu1_*n6Gv_hfTE^pQ=LH{W<-YnjhmXwR z<7Iq`jz67z_A;KULnxUKBo%Z@p)dJ`isYAlNk5=Tq=w z18v*zGGBslHTs)lzD^kkggS+)a+F%YPKF`?@Njw--=eDTyon2$w0bGyVi}jtqIn+8 z*>rNgjMrxI!#7$lJh&D%zrUgrW`Al-Xi%<1$ HPw@CJ=ht`t literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PermissionField$1.class b/eclipse-build/org/rapla/gui/internal/edit/PermissionField$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0d8f26bd794c0443ac26f9fb15ba8afa06ec10e2 GIT binary patch literal 1858 zcmb7E-**#56#gd7k9ND*Qd$uNLF}7&_U_+1=3k z>VtaxYt)0S$~hjMeDII*cxSUE0eaN#!|u%N+PkyGf$$uzEYXyKwIRH=^nK|%D^jRtdM<@H!-YruG2gZP9qF{JW$}P_RZx+B zP!vjS3a2SN;W3Q+!joLpg{STBmX{gW8pE-o>-Yh8f;v}Sksu`cVGPOOq4d*N2~p(; zkn&`BQ#vxZ#c(xqB+G1_AzpNwVg!WNgn>~5LzpmO;snD`Mqe1KNJp%9+grlB!?%=R zn5eimrNt>Z+DC_R4W7X|3V`$+fj`p{uW(m%+a1>tPQY+0QyC6y9byu3`5u(y?d>&%k+HFpK*pe9f403z!*Y#4bK4ev*rJUicG}_0?Y7lc*J&zYmFE_mrEp2?y~l9!W#CI)sc5c- zah+kb^L#324b0;M-LN+_5d)3U%Qv5`>l-&sdt?C4~}0w$JcDDG$rp#K%}=7@=|=_`dYN01~nxteJQNr)ZQF z%?87XFpUFs>J1D-;;~j6J-mHpquHUKk~C|V{HC&n|Oa83#XEM$nW8!-%yO9 znwy?EI~AWw?4$f6`51zZJ%KpAzoqwg6z_ZL#~(rrtGzf828xJJPziArP{n$PxPaT( z2w5oLQ*4Hw3aHU4L3ZbG2X_f?J&eWX>EdU!jNxu9qk%7JWsqB)Fg^bOo7L~o literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PermissionField$UserListField.class b/eclipse-build/org/rapla/gui/internal/edit/PermissionField$UserListField.class new file mode 100644 index 0000000000000000000000000000000000000000..25a31b88c04617b00e31102ab423dcf27ec8f69b GIT binary patch literal 1468 zcmb7E+foxj5IvpSNLU0F)F=vS&?E$wJ3`Skx{Gfgkh!MIDGT(s`62Wujr~3#!#e*#NI4rQ? zgmP3cNvLEFWf=l5dDg0Y>3S>XL#=blWsU1Wp}1_luuR)>s^)y)DW_Vt(qX zuw-ALk#KQ0+&w%yKtgQFt;hxtjv9y~kwg?N1_X`~M#Ew6VK^v~B(t3`(26#~k*W+H z)TH-{(3#1Gm04x0BF*}@yKbds%R(bgAti8{&>o6>AI`uToZV*DMfDk;$u5Sdr4y(? zN#E3;3j*f|E%k)e0%e;EvK+Wx67A^FIy(u`Om;zM;G%&`NE4bJmrL$c=cUb9Ss@(X zpKwiZ*}xTKn82zqs4Wvh-777#Z6W(iCnIN|8+k&5FN1COyXa6%^&&PGl_TeBt0n0@ zvP!np&fT(QFIb+^=U*>lx+w{TknBUw05@pFUuD%HihmTDBVW=(G{?=zYTeQ@7kF{M zTJ9#BM{FlwVQmCb{LB)X<^!v|a@Sg`OA(kLbnn*tzbXWHqB?gC{vNZyjo(!djfuc8 zkIB4S^U88Y>EyQV8QWgnCn8T=xew&DOVED!zg2JLZd`hyQcz1(ZjedU)P@nbSlE^&w0BFlhke zyiU^~?$8i=89!N%wFnb^eB!9k&zEVWz8gfESx;gFLl|ZS9qeHQqpUBF6s}^7ZO0jT n4v{S;5CSB?!*xyIy1-3=b^@B1>=uI}n8Iydb@OwRVjB1f=LCi0 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PermissionField.class b/eclipse-build/org/rapla/gui/internal/edit/PermissionField.class new file mode 100644 index 0000000000000000000000000000000000000000..0aaf043a74d304a134ffec59ddc9f956da16619d GIT binary patch literal 9716 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 S*;UMU=XeVK=K_(Zfqww@S6{RM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PermissionListField$1.class b/eclipse-build/org/rapla/gui/internal/edit/PermissionListField$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8bed73c59ee6a60d741b83aae252e3127dbae80b GIT binary patch literal 2311 zcmbVNT~`}b6x|mBfiMWtB83)<7Ll)Z8mNj*i%KXZ80ZHDE!vh#atQ;InK&~6T)z42 z@6ZU^s z3$`?KMa#6DKzWX|O_j9*^S<)(mhW4xleYX|#!_~+KORLy;L4`lmb<3EV>vl8O$&%Qf!3t!_S=Ly7_|ZC?^n@986aeKc^{AgeKFL zti-*wO_d1}sg;$Xl2z^m=COYwii-mM6>5oT1(x#7tecmXQ&sO4^q|+ktGFx>WlT$~ zq`<|&p{lHoz4b?8zb4S7qbr577G(2FpWDj663Dt77GHGYgaod1C?{V&l63! zE6|YBhjmp`2IlY~5o9K#e7}EO;OYP9#43Shj)d=obvn$)v*;C(8ygh+%>hg>z_gR z4z_zMzr4iV1W(p+jSY|dh_>P9c=`MA%z14KzmO|DK_~YHeYEuzba7=i=q{m%W!|Lk z*&F>8JvSS>8xL_w;5Wp7M&IM%AJEqE`ab#(K>X_+><(uhj>_5!DtO{`l0oxx{qi2s^O8*-p)v8 z!*i^C$EfR}vmIl8fMO==Xh)7idV})JVGpF literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PermissionListField$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/PermissionListField$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..3e206927c611164ea3b6d577b8d2f7a23d03bf2e GIT binary patch literal 2337 zcmbVNZBrXn6n<_3YzUW^(o$>f3j($YFWpj6X;Z5$1xpQ0C2guztC!>g3!B|^cLV$b zXM7zUXWIS(K6eJA;|G6$|G+=vc<$XLS!!X#57{K=ocrA8ob#NsfByaZ9{?_4!$5*z z+VxgUPtpul@awzI?^-H#?ZGWHiT&l zXT>Zmt;up=po8JGwu;TblpE3s%mKfS*+=}c3LoY`s(rF}dgrf`n49ScN=*?S>yi>0( zN$;LmvL!=*-YpBeBs@#~kBn_935F|&CDAN1<6hO?RcOG`Yf%AL!W z(m07z23})0xqlqTX`G=JuE-#4(2QHH3Wwm2WwIf@Zfr5|s7bjL2C1x`thyUAjUkK} z7~Ug*FplF5oTEVbxGrqUd?2D4(?~A+FpUgG4P+V2L-v+q44fe)%4O-3JW`mTmN;@# zL7E&F>E>SO)mOIHk#qk#2rh?X*y4IRznD~$V(cw9D)ilRtTxk)ZdmjA{sU3Ll zq8dvz5VMp3-Fg+*47|&bJ*Z}T4spDP_ZbZ8vBFX92wS^5dbgFCpl{%&ff*_!K+=t=1>X4drSel2noagU+fUv)QUx5~1nb`ryQT%S#Qt~FmRm~6=a zP5w|TuVqhE<)-Vco4V@Fr_q9sc;7h0MZ)FD#ayhAU&8C&?i zq_vh(e)TrPAiX4#NT3}CSYMxdThQw@NuMro@^#a%De@=iJ3Tt~3wlO>Mc;G!m%vea zc2ErP6^_wU#ZwdpaGbswUcre7;V(i|nB}nsUhO~I!0XS@J-UOQ-*A2#1#KOVTQ6+m zvbIiY>x7Ek!JFZccN)kwaJ_*KwsCYp*~ZnQfrSP>dag+nu!#F~rJ{I_k^;UadfyPS zZ)y2|hjDz5Y5YJ@Khj|RgeCl}Qy2_sMkx?sJiy00R)4Ls8Hb|6BFpd=-I)*rMg*rTs}LiK)1)Sks?3^!>E6AhOx>7t6( U@L2c5BO(d-2s9x^-VEx%Kg=(GCjbBd literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PermissionListField.class b/eclipse-build/org/rapla/gui/internal/edit/PermissionListField.class new file mode 100644 index 0000000000000000000000000000000000000000..0b7f270ed10c38308ae128bb3f393ef8d5aff640 GIT binary patch literal 5192 zcmbtX`+pSG760B%!i3ELA)tr^5P5B~2`d5Q5uuVmXlN3V#9)HhPIiYdFuNOPXL;CG zD`H>PKCOLMZEb0bZPl8Mn3mF)t@f#Xzh6K1^XWfe+wYm#$LuDAd_K+Rvza^ho^$Rw z-}61^-g)IeFJ1!BhJR`ZDa6vwXv{IjY$G*?3!aL?{IN1a3X6J<8z+s^vCJteH5%J5*4q{496w;B zOj}`b`LZ|5^#vs}dBd$eGkH>S-xH^WTAMqGV+zq3RSyax;+6;(6wQ?BDD0R~v9xCq zvNbXiUD~NLY&#t{Tw}yG71jq#nJL$DEi)5Kq?3k~itR25Qm-bNP6#q9%8=P(9yPMI zEB1S3oq}_2u~L@1OJQpyVEm|KB+XN4=S0j4tTW9tpLW|lV=>!c4*Fe(sc3H+R0!`q z9XH2ZW<8@}iNcK~j4SLE1r@40=|C7&xL(I1EK^uJi~XAhH7r+HIE4&hG-9O~x&`_q}(Ibr2SSe!bb!e#7(4?@fNE=Uvm9Mg{GMzE33LNz2C3nP3Te3MoqVSv%djmQJyBGO^Q1dnB7m*k()wJG^1LV9}@JHXLBww9#3RSGb;rf@#@bT%*=L925lm z70h7zueRNl4EhKQCgw>x8`~Y1>MFJcpD%alsDmzh_toM~R&pmrO-GO()^Qkju@sC% zf)EBUE;${@;%y_x&A96!em4uT9C0_DwokCP?@f-mXL_uZ>E||#BUo7rgDt8=rHtet zt|I{wWiIjayM)5J=|~gsAm2^G7=@+bn8MN^)c%fLJR{Q186C%Qf+ZbyOv5z?EY~&@ zzJS63f1AQNG2*c>PsZt*R~i0!>7Yesb~TbZQb_x>Eo`)6rj42gg+}-2aFAiMVh%cw zv1OWt{CT}D7@wcyav`s?E)cx?vdIzC8Sqblh8~^<_MqWd@}8fpc8^)yX=8xsvuivG zp-hsUGN4$|u?wA_;UAUb-0uMmQ&Y#9voak#tC$;h;9;J=R;J)*zjd!kBG!@-gNB_Y zITq)u$v;f;1f&F8Ltdh+&lDL-nx{Rsk^uoHiUw+u#@GOprTEi0?sC#eX_)WP@m@I` zYT~wOI2ztp#`77@Qt65B*RcTgb$A#b)bSyFm=_dAQaZVbeN&|AZ~(M=nrsraCv-fC&k=p9^`=jn9a+~+rv|Nzwhc$Va1 z1f8aBA2d@uXylr;YU-vz0k59c&oW2kkHufN!n}Uhh@a>ssifXCJV(qOGfC`9DHXpi z>Ua^8tafR7rpO^rK{1U&S5tdcZ2oJ#7LBPvwtr3r#narA- zeC1F$QPiLLD z*=5NW$8{wfrHs7`pgk5 zOFa(<#RqQ@IFepYxq{pw`*}7pytz>Sbm~8I)SCllV}{8z>0CK z;&3&GYsayU!^lwc1e(Xu%5jX-8^_Vc;pU-e!_5=eHjW+5Efct<`FX6H#H|$Q$f1)0 z`-Ylx=;ri}9D4a^oxttm7!W!B267l|IF!SXyiei?_1@gv@Rl4#Uck{DY)6PBR`>#>2K(`~#KZ{me`Gy1UwNlLyQ+wds1<8kajmRdLX zvEn37@r_aAG|mtU8QqJwat9?hRsJV7>=DXas}c8};e_wN9B*=`XHfSA@&*;&#w~s2 z7CyyrsQT#&&5nR(sHl10RL!bN&8}%Qt8qWxQMsq8^mhNWnh)S?UUQ4*Bl%Fm*$=bN zQ@oa;bFqk^odUD+xcqrL<$I=9BUg-z0P? z9C0^?7ka98o<}U&*mfD;?Blc#!KLb_utb7krCd5B)2$cr-4G6)3#rB^v3Rv;;RmJA z*736xbh3`cP|reG!cthvGT6XE*v`2Q+{e)F4}{d452=o8Kf=p&a~_i|frO}iBevp| zd`NYudL8u|eyk!PF0#AlV>-e&;l^^``JXEE$S8UduZF-;Ta+m*k+8u7;4C3}kj?8H zkJE<&99o|DC(PC+d#n0d{F?2+ufVl@N(I(1slO?i^m(22%+M36{BBy6-&d+U5K#Fe w{xoG5CaJRQq5+jZ<1bTG*c&TVR6&I>{gvK_@HhOO&jyYz@F{;08u|zDKMl@WxBvhE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/PreferencesEditUI$1.class b/eclipse-build/org/rapla/gui/internal/edit/PreferencesEditUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..322ceb10947e7af79c75e28ac5d0453bd3d948dc GIT binary patch literal 1555 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 N*kMlC6WB!`?Qit^a)ST> literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/RaplaFilterBox.class b/eclipse-build/org/rapla/gui/internal/edit/RaplaFilterBox.class new file mode 100644 index 0000000000000000000000000000000000000000..4b64255514dcd46b89403dda7955aca992ebd840 GIT binary patch literal 1529 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 v@bvpOlHz=CNEG# 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 EJDSE-?*IS* literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$1.class b/eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$1.class new file mode 100644 index 0000000000000000000000000000000000000000..273b003627890c472d716313a57469d61122ca06 GIT binary patch literal 2365 zcmb7FOLG)e6#j1J(PX$l2qZ&55hcRRgk%U{KmrH}2~12vOdu%nL1(6!Y3Ovv?hcdS z1K;n*#=YgnJyl_#EXs|R3*Gwzbnh>)(C>E7Owv^@u&es^z31HX{?6%NAO7$ofJ69N zLyJI<m|R+zH{6T*yk#&K<4%!L>x`Y}Ix((-5$Jt%m%95IOkz=I@&!6G z<0`{>z3S)Bu`m_0=nZCPm5WbFJb^u}=*B(`PYYxpIaw0>kzv?AYssJk3(Xp;0uQFB zH7C)71FUA*@MjFmDEdaJV3&;LAS;Cw`fyM~USMkk14>?^ABR|QN>1s1Wz=z}ovOg@ zOd%UFrX0vC0dn@))7YtiLbg&gCa7x3;I-sMfB%Z@*LU@I5LFIc$Vi*K<$}75#WhvAP zbVVW?n`yG>$tcciI46*fWNPh-L;-A&jdXL?G^&e^%hGq%U2ViX)?iWLI3_hr2y{dg zHZDk9z!VW$S2yK&rq3uD-1_LJ93qU7Ppimh1U5H;7I0c|370jnJ%Sz&QqoMA#EU8= z$%9&z9Yu*! zc;B>DMJ_8J$`Tc2D^WE|enqAKy2K4|%xv=lR8n|IFWxA-3Mz!_TEh%Gmg6#8HWoEF zb)ZICN#b?50vkNT4=z*bx`qqoRkzvjC6;iLK3_9gamQLItAuXI%oXMs7H32^mL*n{ zU#a<~J4*5mi8t{U@0MJ>s)h#f$W$mP0;=3-z=&U*05XiuD5>5M*cE|S6#r~xm$(<$ zz83phBQXCZb0NZP){%BvR{GVV+I7aK;}iN~FuF8+MhvdUSHvj8oN<=iqA_X)voG>< z=u=_@;D}wc2tKG0EaCy?01wVgKjtD%*HXvJY_ zID*GWk)%-`k7IYh=Rgg0i+|`3{Sfqx3^INhxzZ*d0SV+eORQy=igPZ+^(91_3d9R9?4{Dp!@aXRkf&{HLw4$D$684HBB zahpX;i#EK2cL|8SB98a)KK;q!AwHnBIQ9OarZ~Nt$ItkPyCmt~;bZPJd_ujOAs!0; gNk7$aLgUF``7?LuI)NMZoWstU@RWfpVN-iQJMxpyelZlGa&+W= z)D=O?mr8^pCS+CLmv)WsZOw3TodaL`p|4&Mc8W7amfD0&gGuB-xM9J-yoodxE##0V zq>K8%V#^Q3!Qi|j;uE(M2tuJ1d2Y~lV_)w_&Wt8caAqN3*O+`>u@VPNLN@v=o9Gg@ zimfXIYij-KrM8Jx+%s^OP? z6RIZ zaH$EZI%!-m&Cm-X$)&z8R6puksNfkZE`>@8p0IW~zxtv{KO~Q__CjunM&L>*B-Xh+ z(>&)u`Mj=D?$J4(IhgES;MEJH_yf#xcijBKyA+nRFZrXR-=M&Ii(|C+7M9r( zZewMH(qOAm7Rp~?UEt0I9{vyWmIF@{n3carM=%_O4Qw(1!5#xXXD|&&6PPR?0N(ur vL1PF`;0R)CI>h@a5KpEKE!x$FKvD99hy7y*ozeC3!N+r!BhE{EkbM=5B(~XAW5(ue_JQnjvqvXQH zDnq(v6AC@4#MALfU&Kee9}=fhFB%XfPQ=KcZe}cShOOD#dmRFv)507Of{z3CBLwgR52xL82#BF#E?l4sTjnKs= z?lP45aQFvxPiiBSh#6`Z$%#{;%sIQ?dDM#`dot0Z`ad~HIX)N&oy^MXISI{vM|4B^ z=g~MGh$k|+`U`X4vTD$T?5aT+X`1>2VUDAr1D~Nj^Yt*edx}KrhFoi*u|dO_roSPD z3bI%r&q=&ov1lih);8*5i6YCidO(>eviU~yGYX9}tb8Odg|gjCBBUt}ahZIV&e+{G zTp`QsFiopGLng^BH=1XtG{2$xib~!5f?Fw^*IQ0{2UPDRR?$ytu1(HOYl8aTLk+B$ xLmiE2^-Z$2bGGpbg%7ltz_a8qg=Q(F(M)3Zu|+n67Jb|FmMGt5+NU}(zW|&UC-eXS literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/RaplaTreeEdit$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..c43f6f974ebb4dd472989a5441864a44e4a4a037 GIT binary patch literal 1533 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/UserEditUI$GroupListField$1.class b/eclipse-build/org/rapla/gui/internal/edit/UserEditUI$GroupListField$1.class new file mode 100644 index 0000000000000000000000000000000000000000..7c8615b9f391bf8fea365dc387979901566fcc17 GIT binary patch literal 1723 zcmbVNU31e`5Ir~k3PvF&ke06i2`;rA*TQWnAA+=Cl48bbJETcx@^&L%9DyQbq$`p> z^tGkaKT~F4D1GSksSo{8ot~>0EG8W~K@Zm6)$X3Xdv@1<|MUAF06xZ231b3R!f0Se za@&{oAn|N3&?*X~Z>zqi?bTRCixgJ7)i0wk+3tCV6K(9$ZQ3d8?9wAWF zn_gUPGq>J5CFc3(RDKsX%+$Q?dQ(GhK=|yui~70^ij#mItVb zlX2S*P+t?scf!6p1c50FWgIrraSIkE%E;k83rFz2K(1y?CwpF?zDl+>RP?Rf@D+V} zq01slmXhb8GH*&Ha4iFUfQ+kc-uuiz?c=NyZf%DFFCnl{>t#v4XXtfOmF-Ki{`JN~ zu%1I@xROE8~!oY?xu>l%*9NaYP-{XKf2-FvDi_$)v!s z|Dac(!1+nirZeQf!8AX5oa|i=aaW-1#Vg8Z2dF+3>jIX`*}p5}rO-{-nd9#30i0OT z(tWfnw}-u3UI~-PRZE^J#N=qzvIQ*|I=+l!6_>!>ba6!J+u{oxd2=V?Jm)#b6_&#(6j0=; z#M2nYD-|>DKxN7dd#VF(Gf9gIPd8~}{3aXo&vCTTe2!y{7npvU8lK>9nFid9eE)!x zlq||LC(P+oPdTWXQuPh zg%`N=D?M^BNT=uz{D?e$BH9zC_cOcY3Fh!iihOr3`Vg5o{2%!w&8CGt CNzM=e literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/UserEditUI$GroupListField.class b/eclipse-build/org/rapla/gui/internal/edit/UserEditUI$GroupListField.class new file mode 100644 index 0000000000000000000000000000000000000000..13ff6925ce413d66221bfaa16c49888641f15d20 GIT binary patch literal 6282 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/UserEditUI$PersonSelectField$1.class b/eclipse-build/org/rapla/gui/internal/edit/UserEditUI$PersonSelectField$1.class new file mode 100644 index 0000000000000000000000000000000000000000..7c3228f2175abfdf91b4f6321e29d037be6bab46 GIT binary patch literal 1913 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 Kz4y|-2>b>NjlswO literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/package.html b/eclipse-build/org/rapla/gui/internal/edit/package.html new file mode 100644 index 0000000..691f8ad --- /dev/null +++ b/eclipse-build/org/rapla/gui/internal/edit/package.html @@ -0,0 +1,6 @@ + +Edit-dialogs for all rapla entities. + + + + diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AbstractAppointmentEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..a21cff726d01988633f83b70e1aead0cce9e97f9 GIT binary patch literal 2188 zcmb_dZBr9h6n<_JSXowsfLN^o#i}8pu0U-?kP;(WW`fT6LZ|i9CAs3&WH)oOQ2V|8 zA^p^^?M$oFcIx!A|E52nFVEcsvZcI?r5|#4_uO-y^PK0Nd-CSbpI-x*#=`iq1Ypux0YE)`ALwYq-5G~OsG!8NXWB-J? zZvpQ-S}uo;W*E>_z^m(4qyl9sdN!--vYGFBv1hwB|X1-gzD9XhGmYzS6~f zVq`;o5t`?Ij9d;$^F=f_u`1v$y{M|DrPy-NFEGAm)V8BQrX1Fki!_dTaB#%IfWXi$ zgj{4XXkCT`()o$iK9ISG9`p)iD>_hjHyUfoJd|s7B`{bCtFpc-jkez%Vj6xx~5Gw@)f?%BV)TsdlNz(z)p2lBLtz_7XU`u9A(q#h&M| zn4frjC@v0)0(0Fad+TZ};rBgUhA-emVch%z`TXNuMBK&ZU`k-&a5V@FKhY+sW~o+F zJjp_`Ie2Y#q*cqWg$=1W0lMuFw}HS_4|z=VqkxY*T*HjOfb2STF#8iGflCST_e&tq zx79s7HKF-i7C8DKlGW!cve~&@BRk5tA9qR3GAenvX&DVB(s#CbJ9fmCpR#pT9Jl1* z_RhG@HiylFaKlv9ZEdgn=$<3-vK=Kj$6=A?s1^KiVsLf%&T)ej`uLUMmkWw>NJ5)VgT=Q1?_PV-oYt;F&wA4L#1#AIj$D^ zCVi}zTlfLP#g`cUw2SG+JEJ5smcVnj@m!4Ke2n+ro_H7jg*Q&T^9SIuYdZX9$-xSg zwfxe*qVN)vzv0SvG_?!wjkhnxfL`0RLomZXv6&9c*YwUXCdc>>R?-XKB0HIzF8+iM zQ}`+^a+9yW`RjLEc{)~eggSyv(t{$8U=l-op5c|WsutQn+bZNRi|b6&L(3edn8?8i z%;N^J7U)kE|A6b@is)zL#|Kkd+=tQ>(@Ya`hLomB>FWPLseCY{Tl-MDMoP1!be)uD QNooGjlmzZjw-i448|KFc4FCWD literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$1.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bf19f0c96a05ccba371f26b32550d1409e1aeafc GIT binary patch literal 1504 zcmbtU?M@Rx6g|^cR?0$41w|1=t=bl3D1KWYnnn{%K?8)JCPOFT?`_fMiLiX3}K8RS+J&=nlf^&wYM$(%{EE78ZoW6 zgs<$nvzfBYF+A%FeY(W+Wnv-ex6B|WG3DSY!_ryq!NoMLF$~wey?rf1*|~?eXG=0B zwID*Q4B4(!A>Fj)W_gi90R| zD8}mOa6TKW!z0Gnk-n2riut(`=d6Ng6Yy z*&~dU=8ljpeMRm|WH?U$>BxafW*>2p*4B~CaS0PNQuP??K-HpPncq#W60ATzx2M`clM9a2Fu`QJ?i{JxqcW>K)*_kps+b-1i z`z=0D0bl=!KS|1>0{-*~F&d-smodf|Ux_jP(nLLXW_LSXikh@Zckbid^Z3qp&b=S~ z_0GEhR^g2RN*H=Adq}hSh{3g?w65uu5W{Z@tN4cY0rq*s4R-8M0zz|Vk zh`3w~`4-#Vl>o{Z7VP1pJfo$?baO~+A4oYik2~HzLp7R@177%C%{ znR2-4#JG_b3VA617(*a#C6nAtFw}NSy_&&EYt*qxd6?lMXIM{#RxoVno=GH9(|X<1 zoed1phMB24-_6DtLs`U1h;mREDpXWfpcI#=n1wkEr45ZSxie2i1uhPvj+S^LQGtcH zG=N2fS#jVhF2iDSS?o)5BgHVM!Dn>qz#d9ZxN%nymy_LIo)i_R#}xsD7}n1OB^ArC zoS}S3I9>u6miaB`veM{tCbv{U;WesgLNh~fB<*FHVfi$teTVar#DZugv(Y3sjIOw4 z2B8rsI*r=6ZChizZGC9ikwLChiP={YYsf_@$zZ=ALL~B<;eu)%z>!#>UCkKSx zFH1?Xn##(EaViR$=N8K(s~P%cM8xx}lf12rIy}C&hmYheRZ(eD9rg)((6W<)%4~5C zFh1sJVpN!p=9O-z9ET-S>#Vj**aKM!1*%j3SfYtWfGk!9a{E9>dTQF8NDP)I|&s6q_dpI<06#`tz6A8FvFhK z=u7ONO&w*-viEA+EG=+4MEE=0pBbnIbJ3G_%l|8yY~XQ{9kmTWRqBtfNGnXi)` zYLy1VTA$H>3%zh3x#!3cjuF{f_c6r$abLi3ui;3#Pr6lPIS;aDpfMHz@n^Q%m0cFJ z+cw|dt*6``lvXi{G1~VruhS4oSqhX+k3Caax9ftmv$0=>LbTx+S8*rqk~j_19Voo+ zC>`+=QhGsEDv5B9ihFUNj|kM=`uu=Q0rh{~_+h`J9o!Kv+7GCB5D!uBOUa9Y+fI>B zuAuaZ;}I2|*d(+5n2N{ognPjgflN9x-_1k;ndpe2JAK@gHtO+|il^}m1)mzW#yT@` zF(Ug`0Z;E)P*@L7msFXzXBn1G7E}=<3diXJ7Ng|RqDeL9w?evGWn-gQr}`~B6Ls2I zc{b-?K5a#$D!jF(tz^D0^8xG(oLyiC0<#scMil~*g<6@I8ubMhv|0~o? zn>emZOdW>jazD0 z`vhoQ5LlZRSVsa!ptjUrphMS=^Mxc2_1J{}h><^D?)% zG8FA?M=|b>B^-xQE%kZ2j-k?<$U{A+z<0{&TZqd~7DL|V-jlF;TTj7ucUwxca84qV z#er5&`tB_5Z*9)v;bWNHBbQpdbB|{6 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AllocatablesModel.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AllocatablesModel.class new file mode 100644 index 0000000000000000000000000000000000000000..c1b7d8995c9c76a341d44772f775289ff2d280c4 GIT binary patch literal 5499 zcmbtYd3;pW75?75H}hcT0U=}vBZ)`=O(qFr1wj(F5I}=Tz$BtT)jlQ<@?0M5goO+++w7rcWR&mPLznS;Y_#?AYVm$!2nr{DE6o>O$ZYi-{x z*SoQ3@$GlEOr(8otz0n!}%qj*}~vZA@AhmX!#TfeSRpOxchfA6N+d1J!9opseZ%fJbS#qhl!jz|07T9vXgl{` z&690y*ll95hNY)-KMAWis!zX0Ye9qmo#; zxn#NAf{9rg=5@Mxr+avCzvC&YXsGNY4|BV1&lT!~gN7WMhFvcR=jn9jAH|viKIhk^+)}UUd)k7d%aT26fO88<6o#@gqhn3bo;O6?<3&VNV z8%w&w#7+$rQ)v_L~6 z4SOu?#Xb#-4!E8pi1qs3aMmC8ob~|N+l%btK(FJ+;UXEwAPOcJf?9Bjsf8h2!(80rwj)D!zF)93c#M0+ zsA$2*a6kvz0u`QbswQx`1hD`DGIuF9sUNjKmVCXNxr5^u^DSooxzKqBuP@weriL29R@`)La| zVwBmrywurLYuJhvAuCLLmvks$t{PUSTO`o;BbmShxX#26 zG|Vk6ky)8w1N<>By#aL7KvqBqf)82v34TgJ;XP*Z;x4mHcS#8R%+^Bqxk0qN&x9rw zWl2gTOmL2r;a0alP7`|2m1&f zlQ#Gpxd3{EEA>g} zR?4RAARYO<(II8)0#-8+X)ZB~8<2dVfEW3rvB3Qxyl{7-+aYQ3epd#`l z>LO3!Y>r!WN>?}s_59RCNomo@XM=A|vZ1z^!I>NxkPTO+)3>4G4xHO~E7pu-eFXPn z%Q)I2;C|^bba3;orZMc;SbJBz#i+d--7QglO>7j4QbsbCjO|QCld+~`Yz(`4kH)lQ ztoGQ+C(}(d=}Q@@=ol`SsC50h1Pf zkT6l5%+MoPpc|;sV@T^J*6@9c9>;}x0$sYL0NEHsGYLp{2nZv@oADOLKL>4iE4}Kd z;J1EB-XIk$yp3>06$}aJ&td@)(CUPK?6gc?2zdw1qx@`b9LL)=dY5-Bde< ziS&%d6tiY}?~34h%#x}19@VwlAjyYInbk=J=oOf)&qrLZ#5}!QrTh4zDmsqO zP&WjSF?`{AtdPf>Wm&B01P<>>u{ipU>(Ug%gz)s+PmdW>8j8Sxykc)=MQ9&9~u>d)#6op)M%20rDKmZ%Z_gOu% zN@4Zj1Xi~-r40RU93ICHMX!D|h6ksjcLC8`hbp}V)%tqW=^MznjcC?4W0SrGy?nlc za|iV8IHF&u&oRN%Tf0(aVSERS}n;;bA6SM}7u1m8SFvj)BN5g7GY>iJ6H9 zCSh9c&1Oo?ilqAs8x{!kR= zyPBWE$2f~}**Jc!VQOXWQ4s}gEFMOrN#_qeY+@aYTqVQq+B0cDl9vx0S#-b6^nn{-?eB?;Eb<+3SKRJQ&x zhO`np@f}0oicaK6PHAqfZ&G113?0#i7v`rJ=2qI_r;%no^xIDwN4scqdWS{t0q#E@$t@SVuHPDb1C+;FB? z)lbe@IE%cA0>jvTn}mwI$P=Mc^S21%pz$)WF=3*_FuNcB|F*So9+O0qyRHbs{4~SU zHk-RA(k~Pb^yVLoX5yDW#$>tdZ#8^H@uU!qK%Jrg5NH~VO2plJtGp2#!o(#Sq2I@V zAye_2fh!h0N&Of+Y=9^ABL-_pDG`(<4?{t|${jw|7^SuwG=K(mI)x58nRH4ZO<(c? zkj-ja#}Ob~_fSNZPSX^V&@p!D9eV9u^uM7~0y+9>6c`V2jP{n^6Vh=E(#o`-S_n5< z2$n_|vipX2F}jb@t*bH~A!R&9r|~4l%EcM27M8|7Llu&y+Hx(_2S~^16UOcLDC$H;Tx^bL!+1uCo+D$tK(Fx%!^Z14;piUJ&x9jzFhz+{ iL_?=e-~!>K!M`sz_*_m{| z5UAQ(OTUP=*oxXfrL+}MX>D3VAgv;`SZ)1sdX66diT>z09*?%_=gn-`S!e@_IVbbp zy>s8a_ucoo_ubj|{`JNM0L$@*5CQ@_ob+HUtq)szY%piWOgn3&ZQY6)Ni!Qu8yO?L zU(cG39c#5LC!uHce#_`GEF+*)T0Swnx-^MCT{SRtz}l zelwXg^5QcSLq=lXHY1Zw(-FFzq0_wrrP(1fvv8Tf+KwBEE_YD6#Rq$ zu}2`-<|K^>1Zp+R#+)*g;8Pl^Q7=%^(AZOko3J2+n+4X~h}#-IjawLeJ&`annT4wa z_T8ZKjlR7noYb&m8+JAmJCL&ab9T})V(l%r+w0tEJdA||he-e|wVghmXQ~{F(GbEC zfyTnNuAxRlBccMKK_ic^rUn;aF-s?syLjIAV7##yb18k$#Z+8HxLHFL%EMSHFxPcP zFQiXjR^MmXN@|&gG9|TKpzbOurj7?xCHWZ*nvz^8u;?mDV!Kaw!QEH1=ynYiYSC(e zneHN$f=fM&XOz}88Y-0l0p@A-3G{uE*1I&!K)G7JPQy&h3WK>??&=?KEGB;$Uv1EE z4?a(R#>j3So=TW%FN#wYpK>ot}E-DyhN1fIuW)Y+70bT5r&S z#&!j}Aq`#Vj&P5AHSB}MqM{EEJG>uLs`&73+dZA91<|;QldZui@^iVealeK=o{fx# zEOG>KD(Bv?yi=ww-sum|CrIdw;9v*`riG4gfrbb0CGKlT&*blMBPp=eAHM0Za-G|6 z>{S8yiiQXAknf;Y2<-7&`X7+uzZM4cgq}2FTXRPG;3g-TvkZpgVLTGT*97VdnRK>8u3`&_9)qiw5QxUmVKzs*1T|f%eKi=4@4(f3YPvGkUmCP?+2XQTPem&O< zKn3D&X!s_cq&XjmndGXFs>Ugn%bHe<3`Xq;o(|z#tOP|bG(3ZEv$)V*fyMsYaC84& zc7yp^=3S6^RtVoIQqyH*%W)Ln)9@@tSu|MhvMh;Aru@ZFw7QX1Oql#{SJkW#=jjuo zwIIl9R-P_2XP!Z~XH>~th$QX%qd+g?A(im;-0PK%YTH!%A#hjmWwud?#(iBvJ_x#NH$i+c7bxp;a_NMz!BibdZN7#SeKIXoi-^B=+cwf|mY&HN^tCQ8`Y|6; zSik_5@S`V!I!Kg~3XuvR%qP1?KB0O;cVxTgj_m5(k&T)=vKMtnwrfCDmFoUUOX{k| zTt4TK`YWv{J4d2TXHgS9hq`FfdCZ@6>m(Kha28D-d0U>0d1OnTT;Y+Q&6BG<@^g7I z?vZ!o$vdOjY~k9u)WNM`E4Fb|GZl&ex6WHWAAp@4mDKE} zNo*GwMVKzc$CMvqWS6*3RH_)sJ#?TCl~VU9pM6>RZ0yE;RQ3gTm8j&D_xyBL?o?J* zU1?>2Rt9Osygn-dm1Lfkz)f_slpo4-sJDj4*r&$xNE|~X+BAVdWlzy+7>9Y`Bo_HN z=aD*z8Dz8`BMQdRq{L(DL58bfc&y}((^y50T3)}r)0?H62#@_Gj9sl_oX3}MV=%v3 zf@5wlo5l_WM16kIg%|$)wkMSGhD5T+yK$ts_OSpqHDBR>a?{CU22mfQjNK3oX%1H2g_ZG@$RS@M1& zDubxZAudO-P9DTP@x*UC*+eDlSeQipT;Hm4BnMT z@kjYA-j}2Ji#(1GtG1Sats52l*?tWh#Oqo|5Tl~m6;oMqNVo0{iW2diauX?5rv&aE!1 zEh~h5F>4v*8I;PGQ6XPJoqQE7@^vQiIM&Ju+$$$>pM28|(Xi**REW?=({Ipmx{EjQ zb2nl8@C!E_ig$stp!@choT(p-`iPF>Dj7I?i@Xr$yYMT#&23k(99*K72=lcBzs5VP js49RO0w19zgi|5>rj|C|B`<*Y@H>v`LK6he?}7gSKGR{K literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AppointmentCellEditor.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$AppointmentCellEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..6f117e5a1144d0be4b58d0336027d8b658b273d7 GIT binary patch literal 10977 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 I>zlwo0LdDqi~s-t literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$CompleteModel.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$CompleteModel.class new file mode 100644 index 0000000000000000000000000000000000000000..8838eba0a98d1ff5bdb17b68b572f77e45d63aed GIT binary patch literal 1844 zcmbtUTTc@~7(KHET1pY9fGA#2p|liORJ;~ZteVsmcmPTC#SHBLi_=})3zC?q@x{a# ze~9q`6EBG->a#z}_|5K87SN~CFf%(d-#O>I&F??oegHU+8*yk1_bhu=xA}(T`l@H> zhUp61$*+EQpnOA;}(rw~Vip`&b= zV$Q2A3wu$8iy>X6(8(ok8|pjUY*LOflpE5rHv{D4p;h4)E$P+FqUD(`LoAys(YE0f zg_L(FtAV86Ymbmo946zLV z6Yd~J94F|qg5J`drv`Dmwh;PlvBEv+&U(JOMcSGp6-gY&sT2lqnxUQ8?o%}eQW?6l zxr6AzwZQ#3UL!YpvZd&~1=l9dLIOji-|@>>g(Hb!~0cDW>sv>d+z+oElO$JD7{@tPdguLQQ*E{{ zxV-XsmT!cW7O4rz9jdwRy-_Ku-9j9f8OC<~uTXDWrZ8Q{&yk-QU8TlH4LklS!_ck? zT{c`pIC|BpabwS$LGfO&Ji8+98mc3XMmoLzoQx}P8B!(F6t*u)kl3!s)tyJ7eb2)~ z6+*7lqsBTrRWs5`{Zlj2ek-jmLZcthHj@90>Jy-&?%1T#^`Ow=(Gb<8t38)Cj74i%os{`WKjd4E*?gOmWL zM?N8$9{hsLw!a!xtM3?p@D&q3={)8~BaJ2!{|tTFbDYs$VpMzOYv~QJ>sls#1q>I+ zvKg_yR`rTbQjUULJqg8RLNO=kn)=%jb1Z#nJALJU^skBj4f?gWIH|ph&}ZuOnSJz{ a^8FeSXeeNc<}|Hh^dMX(cj&FcH1HSEzw00Jo5$zw=B;RpU~SRWZeo3Px{i^HUrCbj2pJ?*37`%uw_NsvZjRTWy_|1k-F(w4RL|7 zhvv3v*ru~-+}(IcEe#2QDJ9)C{2hyOxhbtEw+Fp^OUM@yC?S6ht@>8-1b35=JR zJ-cdpmfClOaTT<{one7X&oXG;56nPD`K=3_%ajhveo@^-K3h#<0+Sj}3EUb|?sc5T zn*yqWG@KEbI}FmlTkANBa{{SN8AL9b5vHhh_TX5G!f`*NgXHK8Xx+ z8nOb5ho$Oyy{uyzGpuMe5k?T^&bH0 zPbvIDpfSa**O- z3py_0vOuz1IXrmn|CLTY8#c7j3M|`D1R7SrqK+#d)Age2P|Wl|R4QQCVd?uu;7J*B zxp8})%TSr6ejQ61ZU|)im-ZYZ9R=JJ(AaCrk-+Pj2w#`(L;rNWj88P&5?JlKe(_>Y z|0ByfR&bkyyT4M{@G}wbMQJLyc4uVe_pxCFE?ZSsRnk$$D*2P46uOxbn0z*#-nWn% z)^vP|&zN_A%iSsN)?`z0NB{V66!zrN>4v$(0oXl)1gv3Q;CO#@_Vfh=Q+j3}=E35Wv{BOIIKemL#mSDB-+9UiW!2ms z^gX=M##?2ze2RDW@czs%_#lSf{-e(7DK7S8`8KY#QTz!fL%W&Ihc@oCarbd}?lml- z!c!EoNhE;8WsD~BIGtF;QsN2^90`}-Kli&_ctz73kU!J literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit$2.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit$2.class new file mode 100644 index 0000000000000000000000000000000000000000..2218770caba773ab727eb8e36502590c1de8c25e GIT binary patch literal 3241 zcmcIm-E$LF6#w0l?$WS@5XyI@wFXGikA(_V42UJRQ0SK}R;h|?liPO7W;gC`(%`pN zah&0aH{YG{(P5?yjLz`L12gb9=wIQB<9P1fv`MrDI$}GU`+3ei_ji8h-1G3SU+x3w z#dj(i7=|2oPIryGW$1GSQ#Wm&yS8EJJZt*8%RTNE4c~NZz2CB&jNuzI7N6u6&xpy` zplQ+m0oohuRS{x{EEq*Yw+wquADdaAT`ClY7v!w5=^ye`8A1lv-HsV20eL&b{>=bsb5G`xfu zLu1~_7xDy{JinxSizYFDTui3IID)u}qXeulu5M97LSPx1HwEjcbu^QZnc6rC9`*=FxEU6dJx8HT0#Xy42)Nx$JF@~P%MW01dqlEA>gX(cVJ#SD* zhT`b}x04$B@Crji!DKj5V^AHK49=>cu3U@CN!BT3nuUio9Mk!{LB^s}5fG_{5Yj zAT46(O@<@2SKlC@rvs5e4d=z#JB@6%{$QbSNW(>3qQpgh3lL{GRja)2hEL91;yfKA z8b&cjjGp7Zh-i`K$Lz_B%Q+D;8V{h>MJ^wA=(R{S;Vn$6m|)nx7K3s{!)3h9z;4ht zBzC={;axdX3S%1Yt9XxL-@ig*kfPghZ)o@cSLxbh#v~DvXNPRhH|z{$n%0UDtANXJ ztB6TIU(;YgH;$sm=`z)pM|# z0_HWCGSs6O z1`qV|Hj9f7lrlUoxWv#^0aX?WYxAk~P)$s!C=wSXvFi5|sRR|OQni&ukoSp^rZ>So zr{HGzm~9CnPE&~@>zF!PN2+Q9Qd7F)C3^jW`TCP7i#1RBM&|m6k*_>+;YoQ0MIhO< zf4xenM_hrPt^qq^IUYR{Bix^Nh;q&NhT(_*=Kue-JkW-0s?lU>=k%0^tBIX_OyvN5 zjo1>2h}r>&L`CHwTdEtV&TOEs8QW>s4(gqwafsTMWakPZ$*vVdlie#cyo)_|5r7@l}Qr%Is{qPd4x%Q!81zv9dlYNM@pac%{2aXDz@o`I@ROBok}QL>ET(e7o8 zN21sILe!b+YZNQ@AXJfI$%<4NAMS449V#QUW>;GobCpezt7PF%*fT1|-QwpS7Rs>8 z_~;H@xDyZY2nB*%fHXmXK-r71vL7wV0kkRy5m#D~P!6F}X~#*W1A|HoSCqq8P>!Ia z9L16n$1Np++e#A4N+<3sU3jE)b0<;3Q=q;ioPcP#JJ|@>J(VO!L zJ|#PDp2sk literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$FilterEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..1074963371409437d12e317f6684035377ab6f64 GIT binary patch literal 2546 zcmb_eZBr9h6n-v--LPFH1hF;Nq6iuyvWS@0hN`%tMuVbJX83sBT;kfzZf17_O#eZD zLce#$uXd)ujL!H2`lC9YyPGu$g316h2RaovJKk}h3|655H&kAd=UtLorkvP8Vio&Sv=$~9Z?mIu;k(RJ=-DuMbcG~Vi@f; z_Dq_+|DtSqji%=cH)PP)BE+3m7gSg-9UcVsnk{eAiJ!1(#|}c_3ZG%D$GBLh z*bVa)ck80k)**c*d}RmYGYmJs=#m z<2a$=7=F+(h|>%c-FMw(A&GW!Ma3D0a>rFq&G%%1iZO=iPQ>5R*BZ`aT!uA4Da)I&xl20wp`s|;!&!spZw3?qAiSETMW9do!I>sIYQ1Px!lT$VNY z`3P$=tD%S+^76kj{C#va>FV@-x~og0r~F@=1(}<99lwDlc8J$%3lSM6%s`XT&M4mq zjhH)nHKK7Etk|x2+-kfO{&Pu14A}}1th2)Xh??4mDM>Pv?fqgs=m-$os8-AclIA*X zx=)U%<_$>!48<T$AU{(@5RU zh_^v(l#+}@D?mj$k^|64_DSLcG8swov`-OY5E(ijYVWc*Nvk)6PLW(HT;9S+VQL58 z7v3YcTG+vlTNtJF`PIz&4lZorV&Px<&*ryL*v7QnWR^48ZOqE$dlXj-Q&)EI%Qi~? zkikCOqR%lIlyU<7${;kQh*L@i7nC8)C|Q)0VN{ek+$Ozq(RG%vfIGCKaA4vt*^sM6 z+@o*lhY=porwrO4$w>A~&u?iFJ5%JLayK%l#|p8*Od4f8q!S6AAen$icY})&nEVpt k5h{B?Ms`Eg1VT|PMX@}_6Oy?o=w&=3BRSg3zhW#t0uA@+4gdfE literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..ba5ddee9ef30c73195cd8d8919f7e200f12b3e95 GIT binary patch literal 2605 zcmbtVT~iZR7=F$YScoeGzfqxnfF^)0Rck4sR7_E^pcIg*{alh`SlDFK%_eAT{Rw*A zPOo}VubrW>)6R6-+y17u)90Lg>d?^+7rT4*J@0wm=lwi?{`1Rk0M6kX6NbQyA7t&o zDR_>ZExERv4`q;dJX>bm&<rUCRoz2jeWtk7{dB0SY(;25gNE00brs&=Ib= z#lbOwskxnakR;Nin|H%0f$8|ppb{$rk(8g2T@dK8(1mCeZRoYI3ws3G;!2@s&dtjk zrQE6vmQ^eT_RKM^-ii~r>c1w8DE9=e?ubz%J@nElJ6=hq)|`A+W&{%PxmP4(M&&S> zSc&2=j+!_kFu9XJTj+-+(CMVpvZxa$==-VHV?p{kRZI&k$fBY@P^JHJu{AlL#E^+W zfxhjkNUK>mh0_AvZgIgclnTp%o6X8Vr|GWpIbmTK#|66Xxq;Lw0!EIUk7&-@n-cAtlEFe!bQAI z9^7B@OF^0x_Qexb5+2iO-&|d1J0?xM!@M?gl=gE4KhGoQ5;xkr&lVPd%)x!9)W@1Ho{DlQadt9uU z*11)@(iSobr6Z6zzs#9*822n>u|~JjKF7Q&vO_QQ-}R+}=Y|VTUTPle7B=89n#DDL zbLM_p7Szla7_BkV#n+H0n{AP*S02ZQ37$C7%;3Gi$;nMW*svGXrPDZ0cV(H3+I5}s zkEJ9aX1VfL*VUBNrP^BX>_>TDV6Y{*|Ao%xpl0l42o_$UfcQXg2lbvTwUP4!EbbUGu|71@1G(A&Ccgh+Hk0Q|MtZpQ z^SEMMfMZ<5Lt`9|j0rq8CUs<{s;)MI{{+4celH%OfJLTr23e1Ht-d`<~K?Q1jofg;9r%dj+X!c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RaplaToolTipRenderer.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RaplaToolTipRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..efc784b28819b8a2ad5f7bead04b37e7f4a06281 GIT binary patch literal 1297 zcmbtUT~8B16g|@|Y`d&bu~Ms`s1-}AEDF9@Leh|s)HE7t!;4SDcC1UbGh}uP_-lO7 zAE1ff5B>mul=05C2~hiD`Y^k*ckVrN=bSV9`_Io`03Ku0MvCF3(p^vUqmX;ue&7W% z7FzPq6P+OTw1|X0=5e5;R}Vww^Ozrmq9sD%n_y|r6tvUY-nUb)O-~6^M3C@=;UAw^G%{K+~+z- z4r(5RV~)qrny90(O3;aCyCNPE+7_oVL#5m_(wutHNkHN}OFFAH8mmcopja!`v{rL) z4cBcHsqcSFT-?ASgG2cHJnV})VK0;~;tZ50oSRs-af@MV68&7<#vO(X_k9sXr6&xp zCRK5S@`ik^cDWxb{kArP5>{;7V<=v1`dpHW`zQ}M7;?<8GT`^T^=o6eWtd7V&yXLd z2U$p~69(2G)A}mx_as#u8={SiMlTl$?X*;1`(igRmMV_BtZSx^iIg5NRaLF zTg6rG{jCViWTQ>lJ|Tlt3BPf5;YdQMXgtaq5FxohTB zbp?5PGhD^O5TQpqOi`>*U0nK#!qar+Gu-c3DyDznZVDf1DFp-Pn2oIW$XFi|$jw37 s5Rw3}ib}Fg0aZLm+A827%`9qs4r}m`rs#Tt_=tXe29wAoUv2<@0cQ$kr2qf` literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RestrictionCellRenderer.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RestrictionCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..ad4c9a54275cca048020eaace631dc8c42020a3b GIT binary patch literal 1907 zcmbtVU2hvj6g}g$YscNTPD0!?X$v%g+Uun2&{8M~fy5=POOis8T0%Tc?5VS5vuk$O zagacKiGRQg&-?-;8Y7UZ^2%>Qh%;-Gn$k*0UTb&n%-(zE%(?fD|M=_IM*vDsE{M0TJ;6&%RO@jZLRb^W@Gm8w!Fwhj!R;yrvz;**DdF*>blQ$XAi zI92hzFp^$WlWtq3$Xj1RAmgb{JSQ-=t{1Xh$z|^DJ|MG2ffKv!DDpjliTLY3H14d% z)7l~0bHdrO!1DSq3TUJy$8(}(ftA8=P{o=+vf?+?2n1d*aT;f`FpxKq!&w2NP-M!^ z35*X4+uux=c zgsPW2W}@)lL=|hA^Q?(1PG<0`01X2L6EEYEK~{Gwj^hKXx90XI48I zO^g^WE^=%#oI!Yz1b8CqhUo*|rl$rpHQqQ>p=V7BvT%uut zmS&shKT#zPJ$6B@pE;_R@_dBltfXh~?i#JP0cxzKrq492M{s=1^ zjF;vf;m4$ sI%%XZ7t4|$)hTRXlel+@o`LuiiGpXBi{dviE?$0mtIfOaK4? literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RestrictionTextField.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$RestrictionTextField.class new file mode 100644 index 0000000000000000000000000000000000000000..4925e8e5aab3ff05924a241492bcff55382d924c GIT binary patch literal 1393 zcmbu9TTc@~6vzM5ZZFnFia-@bK&jZ9EVuXqAt5yw323y~7oUdhqzrC%o82jp_%(d- zW0+_#J{W!VGa2JKOM|yQn6wYObEY%DbN=VD-+p}h3}6Lo86*Ur1!3C>W!IBVyQdxP z8x{J}b5u(kCsdINkEPLp?`(Nq;7TJ8Jk?O1a(T1(Ttz0-@p@mKnr*GTRtAGX6>LlJ1xVpM`tP7;gp^l160-L+TC}Glu_O;m**eVT&DmMkJdeBmrKtbEEF_J?P6E?13 zQXpC41EagzS5JDK0~PLbPFWu1*K0~j583@qi{%M4hKgulnMiRqQs?;=m@NI9+;Woz z+_I6wWr5T&SBBnQNlii(?%$9n#(6{ybg12Ez1(D_cWlgJE`y>#>E&;cE8l3NRphjS z4ndr)ZZ{xShxXTVSU@R*djcE7)X_#66;dW$S4B~ARp8B#)jZG3A1eP>Q+)Me2o3{@;{(_<3JoLOS9`J>w?GCC4b9(;FOX{lz0g(LnpIaNf z&M^LttON@5WD2Z#T%)zkYa(686ukv`x!EUd_6cbwO#ix_W3E+2%BsbLLhL8qCop}6 z;-WlqtMys0VZ|zDEAKJASE-)icI_+X-y%;NW7XOh%vV0*E;~uaAr?q1tR-@?jGVQC zF>4Jo)`QsL+&SvP;Vi1Ck)sp^&#n`=Pn;~ocg$q4NcIxh2`tm6m8EiM3s?ny0=6({ AmH+?% literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$SelectedModel.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection$SelectedModel.class new file mode 100644 index 0000000000000000000000000000000000000000..c9735cc02db5ffcde7915662ab68b07c1f20b4cf GIT binary patch literal 3070 zcmb_eYi|@)7=F&#EwkMYv|XXJr7coQyO%D5SiG>M+Ab6q+bz&iEvPuVds+r(XY1}P z!Y6-(CWgcdF)s^_(dt zg(>pV*yFB5VZ2ljrh*_tc0>MrK`M?QN)nZPRr=(mAkuj3aoYu>R{O%cpk{H9-hOn&6 z0Fm4>C+u{|tQM_wscP8_foLp4W}}i8rg?<2>OyLXj-A&p=$ffpbJ|4iJS8-hiJcB( zJK7YqG7N4+Z58dQ&PouR6r0 z$dskbgwcVWDxSnHhRr0&DJo=_CBxQeY%O;MyBYQ@a~76u*oLTRg;G&BR+K*_-=YvQ zt!pHtD$6_SGcb~!l_>nAt>@nw*XNzQD@ZUjtv<&PCXmy*Srx;Sv%Yncvo=~iWlK}B z4xo63dueeq-@@-5t;AtFCFz`qTdT#!rxh|1Nxdf z6+80?WW)3GB^pFUa*$H+JVSiFyj-&MBE`KlPc`7Kr)W(|R(wiE*HLnR44CB-s()-ezW#5O^(b09eVuGB>tYehp zvhIScZMPTQ@s!nz^nF`2<8Q`EDkW+DsU(o4?HmMjIQ8FnwXV8$wlixX9QVs?Z^W}$NAVqVP4>n)5Kye5Y_sqUMrre2}B zy>%t>w6s#SzR8eWuGW01IA5};jw{Zvaz>OU)pcfpcf*AzOVx5-j2iN)X!CVR?VjB$ z!7`{B%MxWLk{|@lzO75Q<>nPPGR;3K3%c!DQHs+X0uAxRw+P1* zH=uq^UpcnW=O)?&{vH}>t;#hT(1d1s(zL-7o{N5Z%6Gi(n*8*g{J?jT*G_K5Ht*#7 zv^z*=VjaONXpCP+_&c;*MqTh);vPB{(Up}i)Z~41JJx^<5O4ytOD_CFH1dzo%s)mO z{{(yZ74-2>ouF~ou@{s=pa**#m@)LCj{>*RyC~TL^bVv2Z+?hv3gWb>A4w14Ef3-7 z5+E0g)^U~2&`-jBIF4Is-JV>KG_GTB@*cWxVn4?M9eIx6Cl`_nw8MqpjS#{A93lP% zQMigI{}OTj6;k{gjPUC?%olw$Mr$-iYcxhZ8X*k%Xfz=B5K&^mnq-C#BIObJld@k& z;dA}2vIm2mByGAa=xCct+{fT$40zbvf=l2NpJAupNHPrG#83dzxQLN>zw2)_a625h zgZLtj$?|bYcF9`fw^7gUpp)MvG4A6i{}EaK6LkKwLvX-FRU?=~*2`1Qp(<-L=THq$ zj%FOHK__Fx?;)~o!X|LsAW9JDR2?;6?x2N`ql)FIGXFaIBW9dCGG-uA%sdSE&!fc%l& zBEhsr&Mrg-|113O6#ftF;D4cu|LqIkTMOU2Dm<6mb#lx}vphW`vfgc5PcK7abgS&g|@VOmlUN%!U%CoRVj^x6qLdtG>GHIS<`G>{469s zBo6!leiSfknbL~FB?pgZN3(C7ox-F+Dy?4-xLQcruiO!j&nT*AY* z;z%5a**m2tA(wa)jzp%SaL3xe?+~i_zRH@92;2Qxc(oa6OKFvF6FRNgpf-jCx0{Y- z9fS)3=1}$F;9>v|mk3VFCd~Jhmd~fjNSc>cA;LnR)ryD0D0?o0u5FL-dL~By5uN+? z#%VWJ(E(w-)juu29nHz$c7+xbY1$h@+tpHlWn3fFl5%{6 zEUQ9T{r3{%4y)tvYoSKN4xYUVe;#Taue0}r&o<(3KKR7u3xW?t&OF;H=V0z98tezw zhmXrx;J?cvT`dthB|?4kBNm;{Sos6sTj;8TTGcH;mWopK5(G@(7H%_4g=t!1cd=F! KA&%X{I`9kL1`|90 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AllocatableSelection.class new file mode 100644 index 0000000000000000000000000000000000000000..0302c6b0f1ba42c146c84036a3cab64965d76817 GIT binary patch literal 26092 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 BcPjt@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$2.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$2.class new file mode 100644 index 0000000000000000000000000000000000000000..8b50041b2563b7ee949629626dac1be9e65deab0 GIT binary patch literal 939 zcmbtSO>Yx15PeQUH(3@E3KS?U67Xs<_0GWqUmD&CHwm`Rn@+0BxiZN&=6p8%d`oxss!)mfCo7M&*)* z+Dk_Txta3X8rhjlEdP$l_^vhH**qtgwj)#o8i#78WUkCe?hOtp^AT1AHs@A#gmFhAt$in4|I{<;T(EPC9%U)_qEafp}>>ol3d$;flAj7sRn^l2_jTulu=Jm zLqnk43=Z|4HuPdT9*}#Z2000=_H3r|zH&Oe7sg5`P@uD1N@<%5tgE?rFUjp&H>RP$ zR%i&&3vN#Ma!>L$31SfHx1jEW+?%No$k3vB!^yg>ZgPF+S%bx>#h z*x|Vy^5@caO_tk2o6&Rf2X+{gzAkX{?@sPJHKrr$-pW^DRKoz$yHKS-^33owb#qk| zRNyLit<3ubM57U!$D>~2T|>;)lYG0!?_h~rx4s~0eZ}cdbDuN8Hvb9e_gLk3!kAz^ zi*tMmoX6UN0`S^-L^L`qN&+=k5%7B)Mn*$Gho3J+fV z7h0tSda(5BkFxApQbH*=vWM(UPw(sQdEGC+et-K8;0~UpkziPss^TbK3%FCM`;H%K zp+X)wqU>u&iAbnju6-Fg&ucYFr&ST^f(*5iK_FCie%}){b3RZ0Qe~&ouoy&n3xBMtOML8FnnzT#M(|+jdS%#I-CS#ASF<1pz7Uw_}+sL3TgCx3b*yv$Mjv9x~ zq92Nv_3DODulYtG7`ltnqpRU`L9}leEpq`3ubP`;c8V@wup<6rs35B~84}+Nv!lh6 zlr9-E-Pq&=oH$grFbGav`++mZwa8!y!)aV$C^eN$ z8&`3Sp_O}{h~jp6*K|(LMu3~a2yUd2Wtcfr>88}13>#;x&mB8a&!*y4u_x7zvtmRc zZbRX=VHEi^#u$c=Gd|VT#yBR3>`kevTpOZ`GORFUk2>g>e~KD6MBG2CT9H)H#UwFl z;}R~@&;-*PFNUE|g@8wqpkST9ui4{4R6k_<12;>Or}8}k!ULs*>7+c*Mebvl;lY39?7aSYcd$c~RidlOs#P~$BrVYEqfGi` zlJ3#kX@cF>XZn0a__465I9;*Bu;@KTmDVAhaoV$}(VyWQ&d(^XXOwE|3odvc2=ocT zH`E=g1jkx+QFu>K_MW2R^$Xrw!LQDEAl(kG5byH4+yP;X3_2nv5H0kW?ex MCYorG>_VdFH{r8A7XSbN literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$ExceptionEditor.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$ExceptionEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..dfa3c4f6605325be8de7f0c4f3e7a35284b86e0f GIT binary patch literal 6461 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 X&Bic};b!!|h1;~6QZSmKJBa-PQzeko literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$RepeatingEditor.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$RepeatingEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..34229a045e672bff64be9a5abd68c087ac6c2ff4 GIT binary patch literal 19668 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$SingleEditor.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController$SingleEditor.class new file mode 100644 index 0000000000000000000000000000000000000000..04217b116be71290f24db9b9d32ddda151040e56 GIT binary patch literal 7198 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 S;2$<>$lfWJkiLgM{P+KnCXgZk literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentController.class new file mode 100644 index 0000000000000000000000000000000000000000..c08f4a65fad074e5630809fcd3c7d22b8d5003b5 GIT binary patch literal 10349 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 LGCL%H5&Zlg7*g3D literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$AppointmentCellRenderer.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$AppointmentCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..fdb5ee7949afcb3719836802ad23ac49010569b9 GIT binary patch literal 2262 zcmb_dZBrXn6n+j#*bugq25V^xSS-~fR2JKcN+`6XV1uDmQleme*@WA4>$02K-9Y`~ z|L_<1Rc8!zbjI(vdO zTf!5bhB#sHp1EThw&~Q3o7H=w7HH@tj7aHy!{4=7F6~6`5&G}AwWh!5dTfVqx)eQK zRZ=5V=J~AHZUmn^K0D+Kn?cyqMYHyC-E*7H7CWIV80KzZ6kOZ&_*$wO(Z@V@mryD_ zr6jDmyNu8q+_n6PX~N~h*p-InEXNAw30E?QvXre5;stk0^nq|($59NX5W@)_$1qHY zWwMndP7y|BL8ep*WLd6T^}9AdL73wdMlhyflubm-vR+&@9kVVx9nawmp|3957YIfs z%zvZ{^4SB5D*bz2hlZqv3Bp(ur(OP~PSI01ix*@JFA}s&k$>5Ww2;-&hh!3ygkcrY zf3$`S<|Q3dFbGNZSakt_ts#S+xZrU2LMqZ zq$M58c!MzDiy*>Lgvsb29bhEStt1TNJin^r25#~Y$n$L$ z8|x0e-N&IeuSV16WDthB1|!T6A+clHO;uAl3{gJiq$eyU-1`J7GOt;FSy7;1-lI)| zUXwFy`pc41IfQb+#J6fTR6l5Vk8mtHUkXse`i&!jL^RCFIK$%-<0pY$ z{`4`u@EejO)XIabR-Rb3@>BtXgOVose-A%AaeRA-cc1cYDY=rHY~h*QKAz2`Pd>ou z7RGbm;Os`6fBQJsLME5aJ;3=ErgP~FYIBJX%xp~VmA@Pxp#1! literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$AppointmentRow.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$AppointmentRow.class new file mode 100644 index 0000000000000000000000000000000000000000..366c8289852782fbd9711f971f36f0a88d471ec0 GIT binary patch literal 3896 zcmb_f{dXKy8Gdedb|=|Pn~C&->oDzkBt$7Xb|8H!9i$#$9h#_l$~d=(9CTw;bQ}9K+VllI823Sv9@mhHtr! zzN=DkIa@XzKWkO}J)GYZ8OynIDind9qsDP#Ua!ts&a6JZ-*8M@pqnt3VdqV+N~qg1 zV*+AaVAZJWRDHwo^M+kBavgq@&d}JTQWO94m7MrR}wK?si7NJ3B*zZ zc{$UsA&E{ESJU&$;vk82xKbist3ku6#7ln;W080{d_u)0f$Lj)6y0*gbr^%HZW|}u zny())rfoADysLPdK-;0Q#LnIZ%+5{WOA;F~BoDEbT%`^j8XL$bxvQ>WJ8lr@sG5EV zA#imn2)%C1`Fc1uVK~OD>7@tq?RYyyvVG`=A$w>>0=!ehjd&M{F-j$YfymO)Wk=H? zoNZ8-`=*bYMLz)AL7-s*%?uS)FoJ=8gH6XQYF+9zi4oi^on~C)sZ1vHd8dY5*e$S{ zK2I3)R=HN5vhFeku8Qp5#Nb{sfMXi=U~hQPeHG)*8ts+TK{>e&WAZ1XVI1!ZEq1$J zNecYh5OF!Hrh{QUoF%Y8SJraO$y#~Z^nx((7+JT-gfp0S3`=8Bkun#^UXCan$;k)4@Z4?!+7a|2xl{%Q8wpX@0gyGbu(bvOn2gg_>hV_1U9rBzo4mx596?a zHsg9_!w zZtk*e71Y$ZWj||7n|2a;)HEE&Tq_XFap(URh>J*RZ@?{m@5BjwM8#bKTU%kdgoPSD zio1Ey%$ojGtz0&|6I5i>^^0IoEs|+gM%J2UAU)hGSuRNyKQ8OlCj6_b~^Gs_a5iYj^K8JdRac6^43Z1Eo6<}I(5 z0ew)zXYn~|k+2!g2FZQiVZ-w;*Q-pKWm_6k%^tp>;fwfEsOAu%q2{K!w3KSj<0~2- z!ow~33=7;5jlpH+u~9TiroNxOiCdcBWouI{C-GGckK$|GREFL+Jmy;uSqlzX^DSE+ zGklruU&l98JSMQd6^@zn5H)-g-(sgjtZ<(yl_~JnM%-I?(G6rn5eWA?Qib0Y$V3nQ z`az5M7(iS=hMjmEPpCK}u(9R#>mq9SK7K&&j~LZG^F^~F8$l*J+mC}XuYRQAN&Hw~ z4NupcZ)VGmOLO`HPPXHx0-b^Qs#LAbJEhZTwVzaRq#CbuK63N$a*A7F5fm9V9JVY= zEI})p%Ai`&RxmJ|FM{044yv~jsD@;8uVkIqaWiGY-f6s?_mb`4n~B`gGubmcKX3GvO6<;4kRKU$FsyV_*7rr0@^kh5tkq|H9q)H!IzL zSbzSD$M7oC<~2-k)pY@5XE2F<{Mv~7upjRyXDQr+9N!djGlc^UhMpp?lG8s)C-}GK zS=_c>Ieh;j4#iN1A&1x3Ve;9x1gjvQ$^wqn;mFrI+$DH&lnebWiFMiLTC?$Vzi zv;^%}7V$m7BDj5ds<~(pKMXvOW>26y-1R5nu9DvvB)@y95QsLm2{CLC3Wh}-J46DL zLN<2oY<@b}Y$Q<=oj4^{;ZdRCv{;QNMHlL#8-EaM@JF#W;QQ8)zXsoA5>Mf2vMb+y zhM$x9Nj!{aaF%=5V35=W#^4m!KFcG=aT;knhb8Ltd9GpfUc>L9s-P<;`RA#4T*V72 cUIGK(rV;NKv}?mJ@hd*%|1AVBqF)351I6TG+5i9m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..df4637a5af4875a1f32d08eb73c8e80a0cf98a00 GIT binary patch literal 2549 zcmcImT~ixn6n;)Z*$|eGVnM7F5NSz5+bsbqnpR5#C^bMW6|{cfOY#B>o85GG6Y$3I zZ}rsprRe_Y*2Te=$B2)+BF zCJam1yT;n~zAXA0+6mVJt2p!xS>soY`JzH=zL+44s*oeYJ2d&#Fe<;tFtQOvX!rL_ zZ~PA7e&GW7<{0RnX`B9sga@e$A*DA6ZF#38J3#2s(Sc+Vaa`8Xi9SL+r2={irY%>i z7AaM8NT5>FzjgS(XSRslvauVNtat zm)=O?Duy(?O}Kh~oQ`W4<~Hw2KWt*&DVK%K@K;jl5I<=Cy6#~&Cgd*Ae;t$12?YYg-OSt4!EYny186C4x|7-&9u?EzfDEIq1J^+*70KZGvzo5ig>fwnR z*~TE|lDLnLG_bDIt@t_fl8y(MCurPHg`=ns+t?VzN6O65c`RyJAY6{lY2ehcgpWf> ztV@eWUY0h5Rb`={l|;A?avGKi*P98l_)OoFo>6kj!aTEL6s4c)C}5>YDbxMK|4HdN z+b-|ezUx?)beW4ae5TX3wC&9S-7&sO&e-8 z*&HM)6~aVBO08fCUF*Im9;}E;eK+ZzFMJuUW1jS}a5@_bi7xBrE?L9ZI=;cTT%g(& z(E`&fu_kk^Qt4m;e5XTTn}@K>i`F6x2emdnz94r*)e5w`qWs*Q5_UAO`i7!P{d=5_ zUF@;$O}iwI)^^TWIm-%dU&jIX!*OmDvzS_rthu_Tqnod8Qrfk3IMHn}r;N{axT^01 zJEkimyqwZIa;Ct4vPz~ zsCD`nlY#YaU>yk&=1y?$1P_11Co7@h5ksx26yrgP8C4PuaWjT7K%*F=G2Ena%+U=z zq!d;ugDslGKHUn+7!6acm%&NnDL&^ywwRI)Y;q}IFm^lI2KxIa*#0G+)yw>m-&AF0 z>v^2ut01Kp*ish0aArmRnVVrmSzY+K(j;_%TLGFvCuKR)X+H60Fh#SG%(ADMWjQmC bzuk!m_(5hdRQdZc)NshxB>RYEcLe+ei%ZHX literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..58bc4dbb5172dc5e3a1f95a88016e335478a7f65 GIT binary patch literal 9570 zcmcIqcYIvcmHv)2(vwHey~+iQ3s&{GfC0$`NiImp1=*I7ZNSen&-U1(88I`GWx#|4 z10gZVrjY~_LS3bh!Um5loER@jAdt43Y{F)fY%kfyZng#z;{DEjGnzNDEKGjvAJ%K< zo_o%BzH{!mcl^q4pF0C!nLKWxNYIc-?hhrM?wAwW-xCc*<7qb;cVZzo5>1DaZpuye zI_YR49%}6FPVj4&8&9`IQ|Wd5ZXqCOyl4e`Q|Y7=PWu$8l0?!%so=6gHR(hmc8C_V zt7SW)k^L@bD-(oN%;|Q*2i%a;>%?f-zNFLT9!?|=g{VB*8%-Yxt&OI-6DenJ%oR*^ z@`g7j;^|}}7ITw=HEo46UX8P6uMG{?3G#>H^=H_+d>co2Aptl{q1!|J&q0W-7M8u5=E@?YRSo=b$!_oNu&{}t& z(-SlC-l*RxSh_MAkET}(7FPP^&d0#`sxY~I>4vHfL2zAP*zHydr7TPr%*(?*Y}AmT zAkfU|f+)sJ82Z(Aju8w2vz#&}GyFkdixH0Xku zhlM)v<$~f$Z)~NFiI`-eTCnPOa4t{AAgVA^t*Nsy20;rULDgs)3m6&Xz@;{pVY$F! zqO~l&I!;xURlWd+6J6bjIC+^0^>xMe_QWGGH>841=C(mCxYEW7TqUrnqd6xpm`O!` zWLk&5anxd5qoC9aTz@p)YPt(4H19*s;dIFDrLmz#R)j=+i02;cD{Yj+R*P5LSc7W? z6P-w;`G6DO@8(1ezx`Hw`U-_e0rjBCMl;rW*y(uIoZ&9(YkIpL*IC%W`TUw&^`ngz zw6dh6+_cFwg{{Cz74mY>o3zcwMr;zy;)v!%ERl30O-}gG{$zpySr^yx5@8-y?)1dB z*tkK(rSf1Y=dn&{rD{_Oft9++?)Z^;Ar% zT<@`HNXpm{vEgDL=b~FV!8`}dR8<`o4hXi6mJV;R&MojQSo0|+`KQ7Uz z9zRhIp zh_Wr3i4WNL06wVjyD@6eByLeHf)CmFu$p1_bVr=D>!qon+}GiZ-beUA;8Je;#u1as zi$z2rQT}UT-qM8dp^Z+rp{Rui>0!k5UaTpf!lx}fB3Q1Wx=_m&W;I}k<0eDOJ9D=^ z9c2kQq3BLZx?PE0*JpN0)9rB^PvA+`6~=X|0m+SYII$j=Ua<7;IzI{)et%TX_-4>> zea6OT@j3eE%|Cj8cPcBNw($jgktUsIv6Af~spdub%Ql`-RnzuGlYZCR4Hgjv;43zs zHAG0dx6*5tzHkqHw-SbPyqi2C1{tPuIO&o)o7}@bmn}TUL^d_Jhv0|SQX+^!EDYjn zc;3Pp!Tfx_`PSwk>1}M+Q#Q`x4{1fXC#@P-WwQA&B-W6v;rSOj&DU*w1K;F8hI3oA ziv!spwJPCXvhgjvOde=Q;lx;Wo#bY(m(_psMcRzsf<9%di$LT^g0YvGKR~JHZU%tBu$2Z(c{#?shY6xFs6y+HfF;1nJr@@t+p{ zqrkNbire@vP3ZAvff?EerL?sCkB$G;dN7Vljn8Y1#OpTR&`(o_m5Rnl#ATtFhu_$E zQ{$+qwKaMhvs!Q^|IjND;r4%Q>OkV~(0qbg{}MLzzQN;?_SO03T{m|nY!Nh1CJZMV zQ-|5A`m^=fu!jT80!V|>iDquznd@Vcd2APs5}rJ=>|xwK!2+M~upTCFI894+$D;n_ z-;(hxkojuYm`plHw7m|>I4yZqGRc<7GKGi}H6P;KQx&B2@L>8x8U3eZnl0012Ag^X z-@|EAt`p9urAp4UWtK{gq2xxVZ(W?h`O|5hV+TsW|lNQekdt7b23smNsbPs?+mD`28 z%gMqLRnV*Ftmr5ct_DT*bAz&7qP83qhNjf%?lyI=?xGCOVnX}3OP8vM^AxF&?gii( z!ERe_6;iz{oyfsd$l0ug+@nj{mLBy$_s81|%}UHchHhneP(Zqu8d8yPlg`J0b2wo} zC$(USV2^)|)g}6(4osC!ddkbF<+Ep4wKlYL*>{K>wdGEEmsfecGb-H((}DQ~m3L$X zd2^Qv;_sZfqvY87M6!#8Icbc)+m>T;5A&>W*~rQ8kgdRpi&2|*X_?@rch043d%1-t zEQyGBtfcVYZ_E3H+f-fneBT6f3oIXDbl%YAs^|kY9@Xlfp z{V!Jt4!(1Kp3l>QlTTL1oP|8Myz~Ea-emr)-~UrezG?Q^!X+)ZHPMp{yX&J${u#c` zB9~B$wa~E*Xo++4+#GXKDc$`}_euKCnJoFVpf#U?=i_n#`*PFykHFd!he;9NOy)(I zit4Wkn9C-!7)2<7#eYS5BFzm{ksiA88qk9r^UQN|UZH2;<}bLlnnJm$d4LAkyrXvYc4?^|*t`e3ZW0XvN3yAm>qnd>o%3Sw6|{;}Ccg z6&4xz;={CyEN)(+xd1ofpAr7t2_Q96i!XQxer`2N3%pvSjk21yd{SE^TEX7KAk#ISH| zTXhW;{x*Yi&zK;870;6z9u4;z()SVJ+xR=(?ZovC;&&8vyoUI^oF~L&Jf9%#`boT}iSqNL-C3ghGQVg{x*0tpnT<)15mAcr zG@N#Lv^~mV;N309Wl}5wep!nNQo_3c=e|-(sk4|CTrQR&^{tpIWu$xwEwN>c1X&5s zVvLlFl3OW%6-s}DZKV7;5+`7R10PZdn&li8q1bz2@hk)9=rO-C3oJ|+=<-Pm z?1NNWN@ZU>E#o=|WI`L^t@bjH9Ssjacu zj^jB7^;tZOGt_VvPvQlh-+se{aHk4&JA+2&fv6{f}c>&yk25FOx3|1dz$|e({ zCv$<3&9p@WO$~^s$Uu zKBrixs#-wLUQC1m>TX?VZ(=Wk*IjPsvRK5}qvkGIC%}Mq(LB zum+gI*j^FHNJ`6_7ncsRpua>Ke~Y-h%sTxFm-%mFCccCD_%7GU@1X|YXQ}&RT#X-~ z9zVn?{D|f5$6Oy?#X-ua@e>^3Iq6aSl)o$djM4qMiPdg47epl+s}i1%^in_DBGOV5 zu!v6&%VCpP6S>NGtHn&Nz8c9A&c7j>SnIJs`WR=6^DISLj`07sMoCPCvy8`UtO&^4%<69|Qgm1?^MS literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListener.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/AppointmentListener.class new file mode 100644 index 0000000000000000000000000000000000000000..29a7da9b1c0ff712fa6684d464a28f9274e01ec0 GIT binary patch literal 320 zcmZvY%}N77497FAy0*3;z1T<49t?QxsT4gGgciJ~ov^0N&MdRD`*0q703S-s6rn44 zNCN+S{gSWmk52%2f@uK*1IrLgj8r?qvK17cIC^r(RuV>TIChjIcwE(W&}_v%ZKO%; zITmnX;Pyxzp(9`7>;A}xRKS&iyOY``aroTzTC|?dgI3nEHL$qfoGG+el5m4IR3v}) zE+5_u%zFJ>u0oe5^u_hNvSe|*3vE2`i#Rqg|A+rELn^F+q1vT>WvB-ga1Hse(Qh2* LsQDZ91DN~(i;G>_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/ConflictTableModel.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/ConflictTableModel.class new file mode 100644 index 0000000000000000000000000000000000000000..6c811195941004bb3f2bd8b7dec2256b121f9665 GIT binary patch literal 3523 zcmb7G`&$%c6n?)2oCQWf#4B1zUY11}!Af(NSm&fGxA1mR(DOu)_NU#$}&^#d419{2A#BFDX13Mb5)UoQv&;90sG;}t47LAv6GO-GlgsgBg^3h zobpMM34TgNBR19|DRX#|@s!VcfQpw0r&Me}Llmb;>++@S3^azWdKSntD*D0uTsv*J z%Tce$TZotbQWOJ0cULxs$wk@Gs7EL$hVj-|72v8(xu)$SFOU8W~+k^gVoWJlN_+p3u|26bDX zmYt|AfEQi^v{Fc}>~aE~!A4Tbqufh}T@9I`msIGOEM~|Hj4-9TEV!n{X2@`jL_N}& zQo!wPA+_S2q2dKhm&-6{9a885HMaCjU`HUz3a^FDjU#p|!jg}-8w#52ZK>F9D9xi4T6xbWe0auI}6?2$pkx20JOzdJ$ z7$SS5@4=YemGss96&+pvz1p@rH^w@fODdJsT}#GJ5Ws zKq9m}Ru8uDT5<7?ig)o|k>aFfu`ay9zE-pWRr==Q0~H_QBX&aiHpYtY7HA2lOYYL- z6MUxNQ;wn#Mx}~m?}$YHLdBOM?C}7>%d~#f)l)Nrde*nJIdB8c+MIn6g@ zxAK13l)YcJcm77H+k{QjZKhOBX*0I+ORAnI67gpIF1E!FETSde@dtKI+{VMdVeegZ zG$%0kqG&hBrn4MynS3DF*xPPKx2n= zXbG1EmXM0z7Waz&NczE9F0r?8jk+c5MqGi(eSxc(@eva~qKtQ}rMnU+5dcz3Kng4d zB!O%=KF}dg1|*GR_kON$=!A!(QimEojzBilx@DDhU#RuV$oXgACyBCN7Iyx`H}IAB zmK6!6131EGfX^j97M~k&I@!|Fy#!9hySR3XV(;?Ob;;@LV%t^<+V)(fI4mn-((y1|lmc!RF zW!;941@+`AxWT)~nXJx#pf@vHI#-kily;iKmvlc@lQ6Ie&U z#zZP6=~iq;Qo|O3j>j76NTE}pol#CRZ9FSyjs&7MB~t?}=s=e``EI5{axgWfm>D{@ zp_lCG<7b(l0Nmz=8dh^oEifXl?bxYdM@@=1G}W;SyP4;n6NuPXIpkTn(sMPf6Iro+ zUdLWAtKwvPqGY;L0?*a*lo^>d4S$WfQL;^vd;u?N;N@Cf6>q%GPR9Xt-p!tql~YQp zmvr>wkbuTmqf}CWA`U7RM|2#;%Rz21h&66y{L&z>r4gC1$tD6XOCan0_+_=%8)0JbS7% zvmSRQQ|B5gQGu))`@}BkuyDCTth)9jVpU6)PL=((jvVp=D^ z(%R6Fvoa#3ccAqy;T)LwY;bE=iF!iFTRYYHqq zQPoidx})o_dD+jB-d*UC@uG+0Ue#%as^gb~c9ssU~aBl=rCl1D11eYI3+h@9E9u6{qoPj-D#sDE=-4D>7h;^57 zT%e3o5fJ`x5b_*DYKd4vE8~0wq?@5bJQ2Si{Q-+PA8+a_W5V~il8BYzM4&`!@a30Enznw!Km{}>)(3fIXYj=zZgHji^7`MkqXGh@z-ZgBjr zKX(Vm@g8pSQ0|h^`}lyVFpV|%5VweNo7k%m{TJIcbnJYDZvJQ(dxTyMcQky=;Gd8> o?-~tzNkEa&I+uNR4`2MmVURE}fBJyG2R$&U>_Olg-|E}{0S_jYPXGV_ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl$SaveCommand.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationControllerImpl$SaveCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..fe48986a4750a927e0d005414407ea1f50c65587 GIT binary patch literal 1361 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl$Listener.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..2d964b0e2173569414217569f8542d73bc231d2c GIT binary patch literal 4353 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 G4EzH{&n*rB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationEditImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..1f101aca32c0a1eac3ababf9979106847463d789 GIT binary patch literal 13269 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 BM27$X literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/ReservationInfoEdit.class new file mode 100644 index 0000000000000000000000000000000000000000..d129c1d4cbe0b997f1da1cf76f835479abdef7e7 GIT binary patch literal 9484 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel$SortedListEntry.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel$SortedListEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..a3864cb620b9822893ec26009ae2acf740e0925e GIT binary patch literal 2220 zcmbtVU31$+6g^kAtk_ZG#3Z4i1sVv{cG9W@ntnJ<8yvTo+77idh8Z4;VlS>zMGDfU zgctq?e}E@mU}&K{F!0K6VhVR9VTTr8oXJGmy?b@`ocrZJp8fJGfK}`m&kI18Ktap8d$S zT-zI1+q-+BCkvmJrjb7MKMgZz79a4k^r-m_&h)Dk_J3!|_DxaDP_>JF%8R!|&N{*A5)DPmF0L ziclYy%<~~;i8sbqRxfpxrUerQCI}M)A?tAhSQMvVA{-jhMRq1+dr`K;j!&2?Hbz;D zb6Y9Zb6CWi2HqfC88dArmhcu|Zufd3j4Gf#zQj_*@yH6lbhrYCrCOQ9d6WzkS%wnv zf`f@NmI)?@q~?l!;mJ*@B-dlW;{{#GaSSh*cm-#ac+12kyffm@%X=r~ZyidwGVa!sB+GRWFi=dK46*U7}gv}F!nYfKRgxprG zQ?0eO>Mh<>Pt?*eM;?6KSA`dYN|;oGBdJ7gL;1j#(Tt5wcpcX$bBfdDguX{O)sc4Z zVbeZHrcbWp9|k>f+flQ2b~LS{>3vaE6IXoQ^F&Z}?JyKPsj|u|V#hOX^hI_8g>1j0|`Nu@rCSmgFDc)U;Jb+wz`7x%-KVkZNwrY5ZpE-Vm+Q`xlW_ho^ zQPw%k^P2_Y`s^5y%#cVXBBCyS z4X-Cyf3biJV-1+d)XzAl_&mki8k)<$fm(_6!V|1S*6Zoma`AVpeuMnV6TH`4Nb_@e zu(FVTimNHCDQS$j@dMuf787&2T+`=tB{dZ#p{$Zd0yFeE=E>o~xQEO1kf(#oee9!6 zU*J9k=#z}ZY{WE&Vg~pCbrvy$Eu;fyZlU{h?{7zEsZw&H#zz`T6}W>+B0k# hNEsl0{;7U6G;H&UhL8B`$b;K<5$#(GjJ=2s@HgKUHmm>u literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel.class b/eclipse-build/org/rapla/gui/internal/edit/reservation/SortedListModel.class new file mode 100644 index 0000000000000000000000000000000000000000..957364bb06e7a08ddd530213c19236174b1fac41 GIT binary patch literal 7374 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 mm*HpTXU50RIK+bg}vX literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog$1.class b/eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..de94d7da17c29565aaa2566921a118a049ad3932 GIT binary patch literal 1711 zcmb7EZFAE`5Pr^gkEAqw z?H|bB=w~|Ao%Tb206&W9bFyQ5rkT!IGxpu>-tIp8?B2e5{r5irZsG?M8G)N&Z9qSy0jtvXoVZ$Q=5Z14n0Q;@#<(0=co*{m zllxEi!f0PI#>HWXUXeGYtJYFwwLl^+S-6b%1PUppP1#YAz|u*;{>M=d^A!tM@xDMl z4b)?A?mt$#x3sQ$3MEublm*TYSm;AMzGLAUKG1w=0efalSoKo902^#!Hr)J4K~%K* z+)gF;b5?WLh+1pJ6!)_W>-w;?-e_vCRG zRTCczoE|``g?<=WxQ9=e?P1$X=y_)7IaRY!Q^Zm!lVV%rkou6)syLfD2E6r-xC#BlpiG^lr(2C??&tT%XTMJv^LFA}4PrtnL zC(NVk8aJ!78aRF!a~f@^q#d>dta=crsOHN!RxuXX*;!7U4Cau-1W#sqnw*)@@1A?D zwJ=4^Y3}auW`=8_T=@gj?Fu8H9i|a2^XP0q>eVR?f%`y=1Bf~tU^d~+ki87ot z^g_>lKQvImGH%hsRR+F|4+-=m+H%q>6ShGipLQSHuVg{zyj=Mmce=P=F$~6EIpW{? zQ5PE&e?213wNgc{)y4LZiXOH-MsS&Yo5RNAt9dqpZFzugxsQz@N!&cKW$_IGWbiG% R<7#lq0pIhd$B?F!-@iRVp)mje literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog$Listener.class b/eclipse-build/org/rapla/gui/internal/print/CalendarPrintDialog$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..bd337c07bf5020ad4d9b6a5557a88d21b64dc46c GIT binary patch literal 4016 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 NRY!AA<3e!@m)~+nS-k)N literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/print/ExportServiceList.class b/eclipse-build/org/rapla/gui/internal/print/ExportServiceList.class new file mode 100644 index 0000000000000000000000000000000000000000..f759e961bc13f22f798750fe645d157e41642830 GIT binary patch literal 5543 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/print/PrintAction$1.class b/eclipse-build/org/rapla/gui/internal/print/PrintAction$1.class new file mode 100644 index 0000000000000000000000000000000000000000..64b5208f1dc384ebb3e766d566d547fd03bb89e1 GIT binary patch literal 1207 zcma)5YflqF6g|@|U0D`bDlcDvTD6qI0=_MRSTJc)l!zhmWuS6PCejSf0YBod&sE)hw|5|Fv55>r_G0yYODVqR3x-VGkWp@tW>o)o zNQuEZ;(pGP+z;vu%e^bh+!xB@VFGg_si6*o?G8<$BErouT20XL@GvP9C)H13?nv7T+!ZD8~w1fH)dl1wgm$dHU=@tVB~et za8)Ytw$`JRBfn%G#uOKQTCYqKrF{UB@#k72qCkT?=_z1lZxQ~M=- zymmz?5te-(MIyos3BjPZ4~FAtjQ~zoDVg=VJwyBzGa055VGTg#sr{6v@$-iRZ1le;;eIz@2f|(KH z^Ec$$LBSdDMpEY#pJDzh7BA+E6LMgUaKFMB)=3g;n8QZb%wlJzfhUxi!c#mWo5pjL Nuu7gq(=|4FegpH*E?58n literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/print/PrintAction.class b/eclipse-build/org/rapla/gui/internal/print/PrintAction.class new file mode 100644 index 0000000000000000000000000000000000000000..bb119ce11ad6a1aff314f09e5ecf1640a2b54c1e GIT binary patch literal 3112 zcmb7GTUQfT7~LlX2I8n(6id~jf)WA}FD+GLX)R!l0#c(`v8@it5C$eQ>0|=b-mAUe zuYbX3*RqjSU0r?ZLw{85K9evrc$c*}IWy-w-(~N8zBB*+_vc>#4&ZkM5rMevDY$OfK)g4PSlSPNq@yD`>M+V^#wbpn*xJlYmI!DS-ViM zt>my~>Q+v3GP{eRMhhNaoZ_quE5r@d2LZkYD?~FGX5fs8;%;5;SLGx zj)&sSI$A+rvYmybm)fw+a+cjx@037nbUCXRWhEsA>jicNS>ChDHx!5tGq)J((5#{f zu^0qeRkUFf{grfg)Y4{5Jx9CvbnjFn+ButG290=zcz6)XEzhdhifsZ-dEL#pgfuU( zCtfYj)U156`ZCpf|0}uuITfAQA<$SXyHlE3)&+VVusgK*^vpb=W!a6`#ju%zW}4}& zZ8f5si5r{^_{r^2(Sx{v!sMilK;HwLS5sR~mX?@(GF>1Q(wIbS95XC^qFk8KowE`R zA~a@aHFHXH4EbDp8FlB3l0YIv)}!@C*O5|zJcV}LL)37MUP41MJQ)cb4(nk}h)3(M zcdCh4A5c+`hN?rCr84F98CT0LjB7=&5(R?-&j;Fh@(A?AEGK;tlh_*250rQ{pCc+1 zG?KLN$=IlQ=VnrOW_ebm{yIaR^hKQ~w|Xi^<=oT3%L47pdO#lafpN{ShV4Spwzw=M zc1*>q7-kr$P~BNHvgGk`60NCB!6-TR&*~b#ucX##c)V;%VU4UIyGCMg5vHD=#DI%%zA-FfS-}!7 z2np9}bIr&Wd(JgX!!>l~_b#potTU`ddqE$gpdEo#1U!Jxlr8TXA_5Yx_f>p=54oe{ zYK}W$PqKLt`nX&b_*lg!_*Ax{IeRH|(e;OWzW+X?<=|LIpsxwE1r+=CjH53S&22%! z_je=mUDO;l9?CSZ3;dIOeo1Kjk`U9h&3R{nQ(YiU&x}}1S3brR&cP3i9D%j2W z4Vp#J%dwr#fgK!o(&a8bcX8}S!dvs)p%49hqGRmE0D}u8v5%t+YSNFiYD@I}f&GcT zf1pIKBPxT-Aa!1l4PGTZ3=&5x-vrLveCKUA$SQeVa@Q6_CKQOfoJRPo;05njMt%{8 zYLSO(ksD;>!$Cz77%8qj;(6OYCN73GqUrb*O?@{>I37bSP25 z@&4_Jn=I=l4zJ+kk?0C0E0{V`-x0ly=?fk8H}Pgm-L(~5mebkhSgs{z#QIFGOJHDh&R1mECW zs-=hCzQgx~D#!AFz>i#&__rf+mm%sr?0-^dPY$j&(917ejo?@O#$VYYiu~o@|7pTO AfB*mh literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/splitpanes/HolidaySelectionPane$1.class b/eclipse-build/org/rapla/gui/internal/splitpanes/HolidaySelectionPane$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bbaa74d4d47f9a59794b92de8d850fef162079e7 GIT binary patch literal 1519 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane$FilterEdit$2.class b/eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane$FilterEdit$2.class new file mode 100644 index 0000000000000000000000000000000000000000..a142958e0ccd80379e63d9315bc2c903611dbc66 GIT binary patch literal 3258 zcmcImU2_vv7=BJk8(OvyA|PV56$3UYWuZb9L&XwXDfWvNs}zK8lhby~W;gC`+TypO zcp+C@dhdAYFw+J`XSn2o8Tk$RE4*yxd)&N z-$hX;aMp2Wb=N3ZhCW*~b<_5xYa5pC6)e*)7`F8EF*Vw6TE1&cTXI}lGV7a;J<7p^ z>XvR_&h!&qQA7k{^TvXqTZTQWk4(>VW)uwqF9f~DqOZ#ZY5RI_;9=18d}&KppuwLr zy~I(5Gx)UPNegUSFsww@;g*(sf&EpkXIvvM7ajL%xVcO?hbE26B=6*;CD2`EP=ig@ z$>$wg&lr}pbB4Qy$dIz5lZKO~ZTfEt{Mf#pi%r9uuJW`_^i?x95pHrqAd+F^jS$$W zA&RZ4_Kb!`G^yHd4cnkKVGEws(2TtTTiTV;jzQCw!^Qlxbk8ed2*d}StYJ+UuBqDP z&WJi%fx-2n+cXl1E<(J+2stR-8OP1boIq>);A2VFrwEr$PBfwo`=fYC;LOvan1+{; z5U4LWg<^q_1pzGS-l9qNkE+ge6Aq$1idP7&imql*LsFp`nKKpmZRpT&2%Q4jOpsKk zi@xvJ0!ONlBl8N5%?)`vkq+1wGPu`uoyE|CYw9=}#SwwSm7Q+HQll!oDiHOgpP4h5 zmXY>M2;6ZE-FQu)u4oDzs|u)wXp%CZXDq|>%$a}!6?I@xZ8)Lf4e;=`8riJ$yaXe( zpJIk2Yw!<+hWoH*<*LvyiXNPbf~nb6fo7w7(C`*|1$MbI?<~k#&jJTR{;i(yW0y}( zr~oo5joubGSiSdka(Xf}>DTa%T6?FF%hfKd91dtWi+3qrJh%{YffLovYj*f#^-}BU z7}79|5mI_q`YNfF-jCShSyxIjGTt6Stt&wvb$Dl_8*vWfQH%*}U(3Q^M8kQ!Cm^oz z8&I>}*YH8mv($u1T#DkNz}`o4qo4WhxYsm%h|AnI!x$$cWp2Rse8bLCY+A}etO6e7 zTiGl)=P3;arkPGO&aCE*z`lRkon0HF)g*EnBxcA_S_LizPE{#OWpYJrDt!Y3wH&Ny zz?=p%NOo_|SyZ`jRfC0mB^P-2eZTIJZCWGK$@Ow{W3C8=gQ+N}YCY>D%Elb2t-2aK z@B(gDd+%Gy%7UVkz@aj(!DC^qKm9mhlM_)akd6VjYUh(ziVYR3>K8^R{v@U8jY-cb zx>-45TZ)U5e5zQFFgsRp6Y`ppCzp5!hW)iGQ^}ggeIt8y$S9OAyQcAA4JILDYJ0-N z>9E=fudzNmYdIe8iy`UHIV4{*z7hE0KQiHeeJp4LHs5T4%u8PEO%;*nS@UtguO3@s zG4+xFVsZ732ui*p`0%Xb*Np9)wS%?OY)4q`N_DItmO8Y8c&c-S%{$n0JDB|(f13g; zWifz#Y-_Zp4W35}OFl30V(3r&j0XM#f25WXTSn`B>@U|!IG}1`1+8IEDz;F<;oFg( zuzBo0R}GAgsp2kPFX5!B{feFoEaNSAaC!y7;Br_5bNVVqyGl3{wo)Yw4tFkNG!~!g zj<7P(U9U#&Lb+mKsj^iGS9aI$j+BsHi>tMS+47{=Wk&cD_6)0br~0{z`4a3BKDx~f zci;hjLy?dxkj4lIFhsCMSQ{lY=g`jHBo(*=6F5%Y?We+Bz(vgC5|*f~*Krv)aRs+9 zg=Na+JxtSM77vlb@0ba|KEs0~pk=UCZIQNW^%Ab(V;;?QUO%7UQ^s)b( zI!`J*L>!;tbB=yNKid&W{)HCtCvHShjI;Mk_SWGme9baK3SGyyti{>aMiIKfmDFML F?;jNz#qN`pzorZU6FZE{Js-Rx#|H^Asm z@E`cy@vF`V%-9)!fIrIdxx3jWOO4V2X2N~h^PKbCbIyJ4Uw{AcCx9i?(ijqW=z2}v zGuyVQH#?SYIf3*X)7JgAZ3S)9k-q*|eSKirfoDFoWlh?$9$2ok$&WK?TY75^D@Y?H zFq!lgBGf>$ z-DwM4tUNb&&3)b9vz(^BsW$m_sACD-?(>>Bl_XK!uub2$b}V(89)Dspw&e%Xk)FVG z!nxcfcinhqI!#&W+R%O^cxL%Civo8C#XDIRm8(0JV+CId{8TuluRi#WXSU>?>%EB5 zXt*ryeo*SONF;~(Z@G?cbaVfz&{ek~?b6(qKz41vF59a3ei|28ZkTQrL zg}@~Z=kazH=kTtEF}x=*+ke<&9%8n0TWP#6u+a;ZAbqk7_x0(_tt|5RKr#4GpxV#i zbdH%Jb;>CXZ$V3AT415a`6Rua#Z}BGUb9SE!HC>_q+u8%8O*UqqN|f-kQ*B2aZ_Nl zDT7+z@d5~3FN8g-+w4+3+APhzzNMn*8WwR&AnnWG30p#7;@`kq%JyRoxA942TeH5G zynuyrSykoJv#iQe7R&fto&F1fpU??GJO_!>}i z()CCXl-l(=bwH9>_LkBCf#p8qH^^7itg-Ir3sGyv^1Wfi;!k23vtE~esI1Nzc0w}Z z08Ni$^LG4rrm=e&P9*JQg=12(HMir{)q}+znfi}6c|kpkd}zxKU$XG6lT_<(1y)W) zfed<&B|BeG$3bmMDShG$NFx)DqsVd`QZfkSa!T~MP7yJN9QQADSL1kxvtNi#ajX_^ z9AKh2e}v1$m&k7yk8tGxlbm1O&g~xI+5xT?f9G$!aERg|7StlQnHxXElA6B6@^*3l z<`F(SMCms=9Kv1xpAJdgC&@L^vT+Fya1HC!zlSKHj0&FPE80zk$Eji!_qZY*7`RU# zYPLqqInrMzMuenwj)LEYRpeheiGq!Un?HmOwa6fHn9DHK26xnnXF0~;$>U%<1T!un kUz6SIkcs1vl^8-6)sV|0e8VvxlHSB)I>~db{+6TRAA^1KGXMYp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.class b/eclipse-build/org/rapla/gui/internal/splitpanes/RaplaFiltrableSelectionPane.class new file mode 100644 index 0000000000000000000000000000000000000000..6ae685f75aadd41e81eda03313a7d92cba50f7d4 GIT binary patch literal 2604 zcmbtWZC4XV6n+L4Hms{Ch!&_-C}>`U1#2xdzEol?(x6r-7W+C$hOoNX&Dot8`XBnW zU-~QBb80v(=ky2kNA-ATH|B+$REi%qJ3BM?&U5c`pF8>I-@pC_a1FaU`WS9`e#!EA z#o<<|YFoA|h3|653M!5*E8G=<^+c`Sw;k#8ydyS*BMQ>?+{d)2Lt{wva1q*dY-czt zeIasoAcZUZAnPiRMF#ea!PucAgr6N+~2ZA?QI5c_BIo-?iGcTPHa)c z*}a0Os9Xj*PBKilVm<_}xsgH3kiCI^oHj88V+af*CI&F5MrTco;T(gRuS!X76-N$D z=brPIe9sDMwp+5+!r8Qr_ZY_1g2ijnTJij%@N@hpuPP0k$Aoe}$C@G0YR~SsoBC z7qDPr5!Z+pUL@fp+A`g;h_df+BKuMPImtCFx8a=aiig#5Uih0zcf@ASD{yCv`?mUS zOlor14jAtA62j3qBH8JMNK#bTZN7SBmLhyfYGPPy+uK26PXRIvl$E9!ZoI{|2S22j zlIllXicM-y46}#GP)*CaCw4fAU+st_O!*@MBVCJPlxRxaSi{(=O53qkd9b@7B<M z;Y_Hu_IXtp_e^AQpW&oBrr9PKrVd3TJ&LM-@wLJ`LY=6Kl^9)Hjc`XJd9>3&)f(f4f(U|{1%}$Y zHj-n8uZrP&6KULR!C7Qjd1p8wQF#*u)zFP5@<$ zxFnQ}!-GIj?=vPw>FZ`lj2ZL5lgtO!Zr)cyG?b7JIoJ?Jv z+sANHdxbN}KQMZL^V|CvujBpX0j9T;DO#O*g)3@}o-1`EM&|0UekbETd_=z!;em5> zV4R%K)3-&V1uRjsyiV)M=pcNI8}vm-;uBh9;bK=FzWdxP{xa)&i^H4nFIG z|CGX2!A>6F?l!^7)baT~)^o`^9;g1qW*<_&(Q*XvRG6D34Aar$bf5xtE;4U`8YbY| zcm{SlhHvmK0Z=)brMH4PKnHx+ayJ-GUJl(51~T~pKXxH(8P~yE$%>3gWFb0*uo#X6 NcId4{Jxxyu>@^Hk;RpZ# literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane$1.class b/eclipse-build/org/rapla/gui/internal/splitpanes/RaplaResourceSelectionPane$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bb696fdcfafca627bcb08f7ad7615cf46baa2b8d GIT binary patch literal 1555 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 Hdq4jLA(7J= literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/AllocatableInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/AllocatableInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..cb03e57608b218f204e237a4108d923b17cebdcc GIT binary patch literal 5532 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 Yk?qQbzgWM2#ozdpE&Ck)j(VKzZ^H z`JgXgbuE|A{-`eZnHiF?3DAdR&N*}T{`TJAxA*+}=Fh(Y+{a!DF@|N=>*$`@wM@O! z7rJmH_Z-vG4+KBd*ScMoPHgVTO{eYdZKja8z+{K_xOZSm;W~i{LvmF(LRJ{=(Dh#GI|{w(67nl)6!sZ1k6tx-SGnk=@E*hBnO1{~42i1S;u*xDX_!Eg;Yv+7 ze7kQqxK}qD7H7!T+@@*mo1Ren@Gv2tiyng>3GE#UVKBscHiZ^3J0l~?r^994buB5n z40rRj7v_PfTc*>|pEh3bCM6v?+LfMgIz|dPD%db_qCiN&dwR>YP2ohTnZy*PHO$~c zhRXyMp@5-~FGNCo+e_psA>Lrf4Py%eS?{;o+{<7VbE>Yl7~=WDeg+H+8WwSzVM;he zx!iJFqAi*}^E>V#!%CFx0dQT|yeCb&YmDR^K#>BJ_d6QyVu@io@E%d(Zr`>|?}%Z2 zEWl`eEerl$abphbAhI`N%E)iF2 zlIU*qB_|2~G9D!0JIYjq&{3(9>R+m6@?6W}o)Nh_;9!sVGMq}wjHPMrXD*GoI zO@>byCYv5NjxGtt!V&)tzVN`Al&*i_bKCjxQL}(hbDKaE;{nw#2BHlCIwf zszrxy!{(r1%;6kjSQ?ko7}m+o8xEuM?V{Bsg*Wz$PgYU&X zB>*f?S>p7W0ur>Md5#!T;Vz8~ttxa9qi3>MI>F@cw2I*p{b&5s>tr*H%e2o0w{Qhl zX-D_*KCYu~nEm+#Hyxz{l#%gWt$Q5W^zUw4NoOH=yAr&F48<-NJ3m)2vy*mozz5Y!3p|L2MOz zv*PEwf`>53n`*~Zd_}dGLV{y1wt^qYeBfme$()bRlxH6`c6Cin$q;oZL`@Y-tqEW6(`8r(wmW1x1^id~qQM8_ zvp>pscU#+qg1qePy>sq8_nv#__n#j>0ldPN1B;=ebm(b*7I81^NKeK_=$J>|xfB;( zjT;dv{dp%oRtGx{Y=*V};ot9ns3%y4+-n(2v(2zxst+QLHE)RvrBA)xgt4ZG?b7(= zLk9QlWgyOsRB_wEIK#@FQGFnTT~kNG#R&3wj3UP{RhO}7bXrZJ_jxlC4AXTL@aT|h znby4xI`wcqDW}JoC)7ETE?O8pvbT=P)o!{8Y$ZS;kjUVlE)n8874zv zQt4AwNS@VFIm3UWp)Sauz*9VPu*k49pt%*A#}bwq#);)0!7LG^Eq9EJyne<4R`OWI z8iPaN2CW6dMo*k9@|K2axm2oLGTb3GX_JD!UiXdohPn)6L2u(37BjjGX-eDR?x~Ir z1Pzx;pSk{0UM6K>nS>vqrv_N`NBc>qLzYd}7+m_>CXYpDu2TJuiLWX00e#)nTcDUC zCdn>#QJBI*vIvhyn5HZ?W-v>4*Ryi+*n}!nf1%LWs(i!aD=aWv;kkt`bYWpYGDjry hDM_Up)F&xm9UDYKiSPm?iW(*QGAh&*Lp9B_`4@8sBEJ9t literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/ClassificationInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/ClassificationInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..714e0a73279dfed84d6089442a37f50d8dde64b5 GIT binary patch literal 5715 zcmb7I33wFc8GirWO=hz@D6T+Vp_m56WV6d6B4QGvA&91i2qA?es#>Dc~t)h|aZg7N-QlMz*LI%-T>68K#7Ftvf7w)-+5* zFUFITSuJBE%*nj&WI)31?BAvB)#7O_I~Lz;7L4rJ+VNCMFEDaJEWmjRo+Z#;jo2v- zstDtJfpf<6li&$l(%R;7?inrFb+*kIDmxqiDX8KiEEPD5=q(;uDP~ZY)IdKeFZQI)AX*Vo&?ay}HC}b6 zs%S@4pozOwHkii^ET_gzBOP}vF2iyKae-LX;%UT9#U)rFpwRvh6E3i<27X-&>uiF^ z`SfHZRw=klAaaU*U8_`Fj@9<21FS`XrRC_mJ(?N)P8s(O6`kl}=JafWbw_{eWNx;^ zwGAtv9Ju7eajlA=DuU}rcj*bUQ^7ic zm36$Ym~=#KvysWC^}eLsG-c?80D7@r#WlE={&0)y^hp74Yg?Zm&t;7_w+7IU0RlRar-47-c4I<2#9L?WM1F^T;G!9+pV%*q+IVwN?tWp_lL zvR=(JNmo~DT)PFa47aGb6)$3b7$tXHVy$gAoQez1e4Yp|A#wGjVa8-P;m7TK%xFf| zdJN)DyiCDM1zJzRF2|yZm*W*>RM~9Kw7L?3)u$ssbq*5(d==|Ao3ro)a2H;y;58Kr zx{g^DufyF^@%D^sX=Zc2d&5c@Ua zr>ZLL7QdP5K|Op+jb5$I<7FXeAsy#fp`UXAl+_QOl=oU9Ue-L#3Im zT%|9)a4@$|I`<)Yk{t}-5FU~$@nL}tZcwuunAwQc8Ies{0UuTIG07b-i<~8=PbAXg zNxdh@qM$-(Y1t=}QDTI>ujW#q_A{t6E~f%EIm_7!oPLqAeU`=PD7B0BY;zl|!>#tq zGBLT3Z7K;KwC31(RWPmKcufh})9D^LFhtgwMqZwXyXD8{R6K#tvs}zvg%`Cae3?tE zy_|K{GlaJM$z1kilk1Iin$7-hhH$V>QM$q~Gn;aqeD^3w!DbUZLo%&)=PN37%p?4S zGnL2qnHZ*C*az5#T+(@$A_WDmaMR5>Sci;^UNp5#ekQ40{r;2qwt{a7EUF`(js+Fp z!FO%J?6pq~+GaLu8rXF_O?Xs2iSMiUft)Vi2l}<5*}Ic(8oD&*$B)>Ub|sCy%|&xE zt*>cGF&eR=v0v|4ouBB;XoWG#`e@EHbD55n9BJwH<0mp|*0#wVn(4>SNYrN8dH+Ji zFYzmWo5~e3nkfOWCv=}=7N$BG@#8ntrf9PtzoUq;4KjBmER;z<{y>&=#fgzy|A|`# zSQBO?mI8}iIja+E2dng#1a@hT1%_>r+^!lE1^?t&^<1~T2yD)c7ZN&oNh9If4#R$b zUM80id|x)J7pw`gzn;yl1DJ+hJn;yY|67HRXKlJv4Xb3$}!aF;H2WgNt!s;~M!|j5xqd2rJ z5)OoeNASVJcyJmYVUTWb6!ROy4ae?3u_N{%9kKI0NN0gAvUd%ccqQ|56)xZ_-BRY~ zQoekx!8(qt#{l2KHZgbGd6(pS)fhJN@Z5y`7-T~=gaqR;HQ0ML39u$&N-Mxf@6EadPNV+`%=+xN-_)SV9FW-}b z81_AmR5bKMDQdCD(H@P2e#{!NrS7NJMHUuy^XDG&kct@kwLKd8ZJl|tww;N;x99&+ zUaErGO)r2n>6zhOmgSVE7kkLKB4yL0OpdcG_Og5?SSpkBX+I1GHcy4whg)3nm~i4T zfj{Ff^b}lE5zsyOEB;2W&*tjC^Ui0HTZQLoT%+J0{EahiPjQV0|H8j{l^ygUuJ{kc F{{f&E2lfB} literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/ConflictInfoOldUI$1.class b/eclipse-build/org/rapla/gui/internal/view/ConflictInfoOldUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..9b8071c3fa53e9db0fa0d7ca03c605bb61617398 GIT binary patch literal 1161 zcmb7ET~8B16g|@q7M3j()GDA9v}#+RLs1ix8WYlB(xep=l*GqjJCucGmh4W!pW|OJ zQSl@3(FgyDf5LcY+6NUi=_b2-=g!=7&pr3vR4UCoQ9qHJU2#Ie3}gBr zNJ{I3-5v?NL7|TV73jwd8|4vWE4vJtX4I7vV3_of#h8mUavmH^F{I1pz;ruM@@fBg zPsY#1UMLx6+mSEAT@eRnJ#=PF0SxugD3t0{fOl-9Xp(40vdgeoZvRcHEu&havg@LN zYYwh5%>DD2hdInMjpq^9XpWcj=q zSF%!cI~XVb1X&MhZ9HyuhjKjcB`&+m9}YXSFM0Q!d+xdK-kZPw`RhG^MZ7l9BQO`m4Lf!Z1J`ae zecKOH8Ha9QANlgwu0-Kp;CpE`+>17Y`kShOK7pZq_sF#aH*DCOyZh2h4HN_>JBiXL z3V!la`<0@8>(?7H6)?Pr{2||NIEv(FJ301A^J2>lWw1=Z{%dzPkPDXp+Dw2c>wfyw zOZ_P9#$;Av3M+o-r>g?J#Zpb6uM*XziCzp_xP}i6d?YY(Il74v3=cwJ%z}Xd10Q$8 zv<4I78SIvYL72+n6AK@}GH_R5R9}sIoZ8Q#xGrPI{UvIqChlNZ@lRR!6w?BOiA=L2 zfm=m=6}EE9Y#VOqHe|e9su{SSi_pi<{R0^$Ox?r`iYl9uK!34XE!C8)Sql#_Coo0! ztyu2KIF|KoFOGshU22ULJ&fXX+y7MxjJJht@#>H^4?C_WqfjL>F^>fmcd?V85*-{y zAqz`_0X$|2D%{9e<@|+(FY$!MaO-t}Qd`&yuj~feI!X)qO2F=Hs{iTE=>-!@SWyDM z7FaAgSMp{|b&KCv_!dvu<*qwC8`Rv`S5?T3ed#+tVSZPX$N@-nK~*&bZgx)5MWHwa1Dv=#*jTaD3DkCCuCY_r z+6F3bivPwkpD2}9!OdsRB5kX10u$ZTturOT^*os*(~kt!u3U@`#jV*kx1(n4$#p+q z`eT>APxGpA1*~ewf>i=HNo0aa&S)?H{am4Dn=91ta_v#0%V$5&`ElTSoxAtk_wcz_ zKEqJ?93wktxN(9}zK-+t<_RXs;sm$Le`53;cWAnIib?J!&M~tyEPfkWKf{Al5I?`8 z%x8GyDDdpaXQ%i)11{~5efbote`p=gxR$l1Y4qV9bxdLcQ@G1npTm7NHq)$ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/ConflictInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/ConflictInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..d9bde024eb81fb2f32b285be8e4044f531105915 GIT binary patch literal 2391 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 NI*L^Yd{OXx_%F3pT-pEt literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/DynamicTypeInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/DynamicTypeInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..117419ee233a81fc061a9c9d888c2ea3a6c3422c GIT binary patch literal 3142 zcmb7GTXz#x7~LmHGif?NEwm+EY`HfnZLo6D29Z*3)pBb~vEXf*PQ%c2CQK%UdKdA2 zR}|5;bot~f`VgorSv>jRA8`5VqrC9ygW^6jX)^SJuvRWJXU_MX{q4QacjmW$f4&Z& z1K%hJ2((#tCTVNAtd`6ajHF>Yx@~INZpx5LnmJTZtI8wQ>E7WsfEM4i} zU&7fqWSnHmwz65>PQ`uU{f=#znUsPCfkcHc-E<7c(DTU=PeO+h`sGxxlmIIzyfnKC zqocYVMI)9;HkS(oTjGNXRthY3=N23zo9wb}ZL-(MJ5j8_G6l^7EtQpLqo20K+CJ+{ z1giyVeW2RuFzQEFsaS{g0@WGa@z4mY_Y+mBbdKU>c#DcS5&{at4>IM9;1bL81aDN) zCf5$@X49#obcq zwA>0R9>Js3K^qwnsQ2?RUDELy)FY*0J025Q!1B8sdSbZX=(Ji}OZJfALl zT%d8bD~#-jZb#51P$iAj9>orHOEz}Tz%;E9tJ;hG3ijP$jk~X|q6bfS0?LLXu&E_} z&(LK=O2X<@aR3J?rIyR-COK=Hi?dlm>?*i5x+xB;ID$Tbh+|C~aS5T!q$O320dR91 z71&s@|J`epFjXAGQ_SAoHLz#jp}rx3_WLb!0LN9FkiH1(rwdv(AHg%!-nJ~KEzOpb zvFu5yz;h~|hvvD0{exE4*x+YujcLt%1(vL(AT6+bj@r7*YYc<+j3VRh+ryg8`URTi zR&F|sEE^b8aEh&9CaWs4?lzv#vIYInXauH!XqL+6q_U@H2s#INZ>S=uKwgD|f76ecoSxpP2hZ7ZXB)m(Ke`%!EX;w zW7*B`TXj!YX=V5N_oa(!i!(6;@KmL5BxegO6Vx6ID zSiy@2JF8+<*U&VSNYt$=Vojp0hz(cKdKK+g@X!=C2XL%y3Y`L-;ow%~2V6|V!u3iA zXLUvr*RW%#Zs!&3a>u5yN1%u&i#Wtgoz<1WpU_{#&?P+P4%Iz9g=Yh}f#J?*EII`? zOA$iAMZ^SMeI3?Zjog zj&oG08{cuY^Hk;t-ol&wMwmT=w|P}f3~{`Jcd6cc%-xFMZNiKw5DMN`@S%cw1&s=} zDEOF*|APqy20wrE)hmQgSb!@$juM76QEj4#PcI>wXca|#aamM|S;!f{X2RG)z}ws+ iJxkS=i>xgbDWTA=3z_mFF9Y}rm-sJtL=zu;4e=klpjRLO literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/HTMLInfo$Row.class b/eclipse-build/org/rapla/gui/internal/view/HTMLInfo$Row.class new file mode 100644 index 0000000000000000000000000000000000000000..823c213f0f4e725bcf3653eacc211ce27943f5c0 GIT binary patch literal 827 zcma)4%TC)s6g}5T9B>T;V<>$?8==IdHR`q%8zfXD(@F(pi8Kj=JIIWYHCqsp)^hUqVJNKjsxvXC;g>A^iSwt(#bHP=kBho#g=JjZ0+9N@1E~`=X>1! z*GGT-JAlJ@PeDXruTv?eD|*?|)5V&ZHf`6a*t(UzY#K}H=cgyL6ZV{=AS%$?u$TWw6?nWq8#1owi^h^uS*Y97#T9pWU`8PR?3KJxc1_2w zDrgr-uDff+P#`+)6pT1ppsHv^o51F*X&Y0u#hg)@)^nC2kjOfD-I~!Wrd$UPqi)Hp z3hWC}TR-Aqfk<_cj6&9P%>xnGkgpiJYfPK2bbh=)JFj2X)0S=*(`Vg^X%~k>Pfq9N zjXc8-JqnB%ntQeE(O&}~(BkCgWn_(40TOjL>^wCQIPhrKzMm7dxjCak{o@emQSlgd zQk5nx!Rn-wot5LAH#9< zqesDj!2U+TFIt~p76buSKeo^?Z#A`z_>unb^MqGI{Vk|V12e#z1pIWs(Fpc7Zdz9`Jd-M z5jLK6_58x5UJmL%rWXq1j^$Khm?VB*Ufz!+1zNqkMj87(bU4VICnonsWs+b+j3f^wM>k*^GYZZzLN6(+JgGR3 z3nVJ@r@KytHCGqHvz!Q?4{yLMUR3aDc1HuJ{#M0H_zX3&y~27}%AkQ1d{&^pQAz7h zg}rB-r5JLQEaNh*F|fjiGH#(Btfl7+E7^Bhx6GnFl60MNvajl1wTzMEQi*XKsFwA- zF=RVSoVdx+c3i@oiXys+IAF9Ti{0cE6DwyBNdwr1h3*sevjdyB?)I&S)4>((u>}dDM6nf}yh^O6d6nKG+8z1p;k5A? zu*<{f^WUyuM9@WC`96Y=VH{!OG^Q+nIq5a+vyEs?f+#%UN zj(x=FC+Cfp7|SkFTRh1liD(ljJ6z$-o`$yE4qx2A8YMu z?TEjFjf06{>HRk1gI%r57&-q&RCGmmzWdjm551$!7O9qgxQ{iHQOGAYWZ zVK)Z3I)H=xG8p3T7@wWO5%&3$9{o|D7@qOyw<7BW!oK8JfD9x;l%seSCn?}AVm-&Z zC=s{ec}&pTDSGWi>jOG!RiJr)y@JBt$2RdH+9Lmr2Kyx)$b z46h+`f?hzz3Wgb9hKU{t$=!u1k1v?Uy4)O+zTDyMgFV#$JKsxSka_*Jw8nx!%;s%ynIydD(mMedNTw6$KIslgq0@rEq8MsIEMOlH{0=jrHzN6GK8 ztt*tadPHQmZwN|Bx_L8j^Ar(ek0~iFO87?R{q}#6b@`G9>$ktM0;_~F{^bB{ick_P z5pd3?n5eI?uhvl3NhimM^C9d+fGx*Ty_$HK1=!O8cBhv3y3DDBW|@4mo?n01`1M+1 zeoc1bJV(<)$V2DKc<2mysE>!H?7!WNy-oHG*_T7ui2ysyo=59i_TLS$|9&&}F4@<} z{xaDwg*-H4|JKTIYs&tI&DdWf`&Y>R)e!a?_R%PQj2mR%I4q*LiJt`V=s`Amw142% z4RmWC;1(yy+xPHufqVE(1b2iiQ@`u{GJTC$*QvonpLvxZE0_3x2jagDrI~X8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl$1.class b/eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..ee205df506611e3d4292ac11babc72f7e2315973 GIT binary patch literal 2334 zcmb7FTT>iW5dIEq*su%%xfsEiAQCPMWQ-SLvbhKwNLF`&aM>8|huH&67-qI+2A2E} zU(_m%mQ_B-3b|;N<+FdoAK{zjcV-uMA+S}MhnaKEbocqX`|Iw%|NH$<0Pnz#qd{QY z^VdvY79DA>ZP}*nhRS!PV{Y53WM~7Z34-@ z1d zl!gxp*9}#wu5cC2A+Z+#jN}DkX|JG~A<$(Yffl`b)qsIky?V{SDYPZfh+YHjcwL}z zSSz(0!VshcO*~0rL=!y1oruWL(;qb0&CR`KzA4sR{z; zhO?R&rYwb~+E#98mN_x4*Qt?w0&n4b90LsdzFa|ulJs$dRppyExtVd~w&xod#E?MG znhKZHPB`yK+g)~Ti*YCm2n-C5RIfY6OsW|p7>y$-aK0Y7_S0ct4C4YP*TYRmA0E$; z+e^8umPjRFf@MJhpFMcRUMlw_4VE0U(;O&Av0NNSYrbdTeM~T#^mH-$p$gh#=6cUR zN3zNmL!ZT#isJ*ia&+{{B4r~?Oahm1MKglA>aJv_)|Af2HQb1U)E+&Eyl(Ohe27Vg zNLrQ(qQbrNa)mKcL$y_3ZmN>!Z%ADj^QdY%iAn^E~yllw&%zP zBur*5qubT0w3LAv++wLL%w?wqI?B|j^|u8Xd>jW`QD4>O(f1q3BFD;iJa1#GC@^?b z_-byLTe;7Srdo)4&cHnG2($z$jJzRSfm}^x9H8n_h5EW6Q^(Lb?byW?Px^(qlB@iv zj;>+Rz!H|(1cP<2G`(Y~V!8W{)k57ruQ8q8iy{rhaaW)-Vp9~UeR;NQHq+};WJc@3-LA-h1pfL@ineT6j{yR>t@6m%F(2pN6frpg( ziAD4?=I~2|_c|j(OclI(^$G6LVh{WJr?^G$`Wea3@HuTy(7P}2CGDoU`U+q3ucUS} f8veyp9C?F6D?Dg`g#y1Z_CJMnt`an<1Hn$q94mNnyvlS=HW zTrbj?FpyzLMaXPft4oid2bLpU{zCXxVX>gwW0Tv$L>7}&n&rjfJj38o@ zOoY4_pW&{7&lzq;piZ~_F+ELu0jhP+ma4h>@c%pJ;cBUi!&OVXN?m*{)rwTJsIF04`eK1N#uX(sjX4wZSYYT1ZyD~k zIcX_qHO=u{M95R7*3;{nkPl51pyyMtC7biRwx}PCv21${j?dc+M)9P}28s+rA^F3a z9m~_~qnNHnFi!UcLvM&}l|~Okrj4v;)U%C%RF)30%P`VLjAOra*}tN=y~U@QJ~GTVto5p7(5521MVIP+PKM;yXNJxTJHVHIBw&l=3jx78|1&qs&BS zOOi@LGl0P?c%JZQT^2YM0-J?enOpdNJLm&ROpM;p9D zl7qB+K(aCV4re9~FqFw2U?eknfXkUzcyBM1zDn;nNzu=S^nbuLTA8#a9ejZ6;rSSD zwCuem6dF%HvyY)a@Zn3O4sp8!eF#=o?@L=aZ=VX)AI(R C!Z)%2 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl.class b/eclipse-build/org/rapla/gui/internal/view/InfoFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..a0d98a9366b568bd730ce08f3df2d8ce055597d3 GIT binary patch literal 6842 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 b_H@Gi3Kg|K7pg`4TPOcH<@_kAA^!Xy;i_if literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/LicenseInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/LicenseInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..a5424c5b4d812aa522760f1f8c60ab03492f0628 GIT binary patch literal 4063 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/ReservationInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/ReservationInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..66d3b35b2baf68dc4e49cc942ccb56660b05b653 GIT binary patch literal 8179 zcmbVR33y!BRsN4OGjBBWEZb6K`^And%bPTs@z}CsJK7R?i{(gm;=28 zFJJWDyL0ck|2gMB%f0^U8(+Kvpj!@Ts1rmox$$Vu%qGp~crg)8qzhIqZ6>2<64u%1 zK`U?N&X|QnCOwoM%N!Zf;1O(`Z^_Q2na?N25;4~*fv+!-P80?NYdeOktH*L?$~v3L zJs3Tx0PM_g^K*sX&ZC0B?sG9Kt2WMSXb`l|xvDZz;MtjpTLIKV*Wravuy8n$w)PiO zqgL*)IhwQtO~aX(nLKLd66(7&=qXGj@`9)f+D+J^S5TKv5t?h+92yB4&3K&FEaVa~ zrIaAyHiVTfBnk;DAB|^HW+Lsjd#_9S%xQzkB(*6hO?rn4{?|D_>SV( zn3bb3gII!P8kW-dRU^(6 zj!uNQA2l7U!rGI`rA$VFU{gou&1q6z(i=n=8#F|w#nnt(*Vs!(6dTD`A~`gX$rTP2 zQza9b<41R}HJpWwg$tery#;rytt|{=TT=DM2t- zO$>td^BBp+E5=KZjxIBH{&j9X3F=3SV}fOK;S}g3MVVHNT=x&NQxUV;gDP3(GRdS0@mY4E z>szr`B|&Od-=T8AJs8n2JZ}zg*<8nd9AIq5%=AIaWU#HMsksfc^MoSWeL4=}5SNg` z`)cE`FnZdGF}2Tz8pIJC)4-e`s-~wK>8#@|IL;~&%UKLnWe>rfHTIjm-K>#H zo>W@gucH~a`0)Tq5mrV#rQ=6nlKh2?lU4<{Fe}W=P~^7mV#^IF=%N72R*@bT7`4L4 zwy;vP;%+8B*TfqciogQ&$l**TSx97+il=ovh@_w;k><9AkxaZ&tq*3-3ht=s>BET> ztCyL|&QoZV^t6r)vQ);AKD`?_oG7Roytn2K@$+dj#p-xIYemb;Zcy3OhB+O1FfEsX~HQI9MwtZa&Ov z#j7&*G3p3hz-JNIXuJN%A>7*?B_sT<_EI(|A8q z2k{*^n^qydymmujQ%I@wgpMciK|uqT*o`WqrIKzOZmIUwVxRG0d{o0n1WT*loJL8N zj-RR~VfW%1=}W@}ikj_=L^5vW0(jc7_$O2|@k~{ytJ|#2l&A42)wMlayX}~bV@J{6 zkm?=5r&W&s8Nv2i6rPE+*7knLGv-q4-oQ5`SXZszQ=80G)mCdASzkKvu zDmhwA$CFl6P26F>vQhm!yT(j9h+n`98onUtteX7>i*>xHY^Gf5P+U3smvsCxex=l8 ztFuqp+pDMHnsJ5psQ_NaS5)`%+kz2y{LU?RcJ{0>(s@*c@mF>HE`E=F5yO}%tOmWD`27PNf2iVj zkqSmLU)VXp!<7}^aXx@Q!Ydm7m_Jo{=;UG@f1*VDthW`-WZsWIV;9K-ap6?VS$t~r zyz<_k>-YiBzwMl}leTDd&W+jd4m>J)^iM4Vo1Z^WAF$*9*a3+Vs_=Zu+5 zj1x^ElWpe)vRIlmX`26dP!*)hEz(k^Zv!Gw*kPYC$9X}Lvr1AnWYgoy)CRka|DUKlK_{)U zoaMI5Xm}ps-MA~&(Eo+?o&5%iC;_Ra>wghd{Y%pfV z%(xYG&FEF8UZ=}?mAqAFz+-2w5R^{o(u8*rE2>F!_F`Sa!m9<<>N+Cxym;UR)Lbdr z;jHRLl~PeEB~)t2ol)oZk}IC=hPFo94@$Re(PXn=brtrU5_P#nXla0F@^AW z%62I%+jY4^df4+(yUOpCdyv|vl3CQM0n#shOdsU@fE`$V8Bm{5J9GyE3~$%f!LW)* zMu=;uf`B=*!t}MZ4g#~lI2n}Opq7hfnv+8nfu%h(xtol#b6dr8>Nb<@O5l*4uG!hM zBrjpfn0_t0K`mlD4y9Q~?Oxc*Ycj&>UG>Y{wUa(zRmLi2t$N-J1Adji;6oiWetG!i zM}Thw9I4~e7wWo%;EQ~#!vg*d*rTmnvl5N`UgFHcLM-AJ=VLLND5XvvuK855u5m9P zpC`M*Q)sC}kH_#_xd6|Lk*4L7xb0Y^X|;OPZ}ncpnilUf2t=CJs*%tn)*GG{Z}$|s z>JWJen;!K_i4RNi-Qmo?ve?7lCcn{c# zjR;`}zejk7cNh`ej}5jq0}jrLHYafhdZ-1lqZfU)t|!q?>(o>JA>4_(XtPz6GDvw| z?BvWwc&=fQhF#atEWum2hLzi~glyz&Kj#!LqxJYD+}-1?-|D-Fli?O$caIjiip7Q& znZmw0TmZ)h4bN39H9UqEGPFtDYj~${*n^8`EPvA^p)Nx+yq9pI#TUNfi9d&+;cYsp zZ1Sj2)Y!9ce%kO(;;k>tFwrKe&`ni0qXk=Nn%ilRtyEZK0 zXq9VNs^Okxf!ATwap?r@?C|I@TG&IOU0p9@$w4;eG`lkX7H6vp$ZaK%+}<{H9e?k(;ns70rwv!dG_Oq@xOG3E85ROEdKr(9f$!|` z8s1P>3!ywZiFY6Cn!2YNKaXJ}LS5F^%q8BcTi$9fvVUm-~w4F5~`_#{4g z>>`?thA=1kr|?`o)R588^cm+#DHof5ZVEqNH~WWQMKWqzG9gN&VEBzy_q}?AkNDW9+FcesbbCN znUm@9GHdu&%4&R5;mJJDw^GRR?H}-uDrDt2{t5p~MzzW={0njU_zx=s_*eXZOpVHB z{2PAAWUyUA_;>sVwR@5O{U_%Ih%|!#;;%vCU5EeXn@*$;;5!WdAn_i=|JY+H-F%;8 z3y66YUgKD!oecItdy^&!Xb=rcG#t_JVZJ@WhlbZRysGi+h=td1nj_b-${u<3HMCsE zMh(~aS$U!UyuT{3|4Ak#RwU^UH(gg5GTij0{b&|Z&rq|9(l70ggqc^v%_@~}PP340 z_S3JPT~oqVqQ_&GtM67NkPf#UbE=gr5?n!e0)4-@ylC&w=BsA9YiU?=k zlx$ORr%YhiPySp6)>{HL)qlL-+_jh^Khf^$g!WhmYb5{JKQo zS6B*P!N>6}d<@^lC-6Pa_#r-t*YPO{;5k{$iz5S{kyX3`>cr!+1La3uWl(ld(^oJcI~fpuqKV3G z{@P$ub{l+efd6PtYVMMCr0)||`nHya)kC^9*~1r*?!MP>>!Lw*i|+6f>j^}aO)b_b1E{;b8~^|S literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$CategoryNode.class b/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$CategoryNode.class new file mode 100644 index 0000000000000000000000000000000000000000..8bdb9d677921f8693dbf9315d19f0bd4b13b6c69 GIT binary patch literal 2247 zcmb7EU2hvj6g@X_?AYEUq$K5|l!SiaIBmCt6wX(h6qbx z)Nmtj%lF(yTe~`lRTOx>yRFrZdoNOI)vL#0^li1d<)2ycV%6Y}^>9<=kRhDz&5py+ z|3=5|=c?Y0T6$aAz${_*p||Zla$7q(Xt*)Mx@+y&+whf?kSIdd59^-Ki(@qjcH6P` z-J02}@aZ)j=y;j1RvJ7uJ3Z(f*h+1Wp$cLhYt?c)ZB*v&6EZ7Yy?|kiImlz2aLE=p z0M1bJJ?`T6#zR$)86ywEOAc}vB}~+Gpw`>X4Hey!_M{tW;l3AX)2`jj#1C|fa5cs5 z|EVvEY$n31gi3MN36i z6T%ed4k(qwER#LtK3G0s@Id>U7KkO9F3o*42qm@8ICu@O7cql#4&Fw|vPk&zHM8j? z_mFxl;zT`CtdFT_ZFnW|SI-@%P~@KW^?5}|ofi`o2!(b^jl|GtM820eyc>5^^ldy4Peko!iI#X{nQBc83m_0lOo~=&^I(>{Y5V2qSe7o^Wc=PW|y5 ztb?pzt+yJ5%{$2m z443Q}-f%FDoA;8cS^MJvA7YN=KZHNyO! zhmM?5&hLzn_z7>ZDTets!avA=1V4+sW|#1@$X{Rcd4}Ik`TT`le$GF}#P|F?gh_sm z^C{>Fvb2jL{fJ|{SGMtZ8B_elnFd$zP5YcFt5@);zT>s6 zl9hdWX3!lQlb~m~gHyaCOc(hr`325D{S;>j{Rq!f2!$@f95c2EH&_Q@H~9?oW%&n8 zl;@epF6R4zelbADZE&~INnF51L&C+S1agUEgw(i@63C}`XJ~-fixjc(1dnhT?Nfuzd;u-{T$Q3^~TMA`~II11wT z10a?SAHsEfcof7R2S9w3X!|i%5{Sh_+iaO0R$9zgh;5&lWB=^$`CJ~a&u;ieI@id+1aks*ABHRS&T0zl{4 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$ComplexTreeCellRenderer.class b/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$ComplexTreeCellRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..171dc3181cc53d807fa8a90752667e1dbbf092d7 GIT binary patch literal 5404 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$NamedNode.class b/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$NamedNode.class new file mode 100644 index 0000000000000000000000000000000000000000..7a25999dde71c7546edfac2563cd605694945a77 GIT binary patch literal 1288 zcmb7DTTc@~6#h`npy6(%a; zgYn4+e~9{^#vfpeXSNMgVnVtPJ9Ex_XU^sO=JTKT9{|kbejE|Pg6Ee_UsN4omTR_Y zyGr`5aLj#M9++Fcl&iv0p8v8?sXD0*QIWeF-mZ)zMwr|a`{K|H4s5q^ljnnNI$SWce}7cpfy70vgZa$xN1i@HQB~h>5mAP)N?yX%@U@I zEtHq%zz4Q#tA~WObW4#A7qUbeX;0mEXUDQ)B z9lPNW1KK}M$Eq%lemT3 zaij>jGsuNa8JNH%*D5Sa1|juNTVpWOGy==3R6Uo=3e3ZbQ>wYUjx-B%OYWm^o9{pd zxj3?f%vp&S1R0pZG@+db6cWjdo=&r-Y{#s7`R*~824*owh%;ELh%nKRNi*`lR77#d zzz~L+icKY~7we+hkVdN&1F< z_6=|V!+E{RtKJRb8v9tB7;aqZv#n97>|2a{#8@%+2?M$8YjnTE%@d>vCzy%gD0__g zBgRFcv-Kjz*}fw|KVZ;Lmg%pijHyP(1V+M)gu5J*0R6^joVkc#f$a$HVUbs@bz*@o Gf&Ky?iBll} literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$RaplaTreeToolTipRenderer.class b/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl$RaplaTreeToolTipRenderer.class new file mode 100644 index 0000000000000000000000000000000000000000..268cbeb8403fe4437b43ecd9283130138d9f4534 GIT binary patch literal 1438 zcmb7EZBNrs6n<{EQ8tPUn7|YPbz-*(MZ`CTsF_(ZGSR@o_e;5qLTQ(-+t7bv{1ccc zq908B>VMLB?pDJ<&@Ac8?dfx#bM86Mxj%k={RUtj&s8W4FI=x;c)V(Jqf)mF%khQh zaNB5DqG^;pAqw2|UGGhCziOw}Bu*O3u4|XA>Y8x2geN=|VTSlFZ*arrPQ`e&xhqUx zMGr&zG`~-ddzRl~K10IL9p5Bv&xa=J5mLpc{`6Wow_I2N*Ke-sja79IuVel^p4OcNvdnNMM z+}|m<-kRHFn9u{FKkPn{x0)nT#5jQ|6_X6fPR3Ip4cBplAwkR~UTd-E-TkWT2#1nS z=$(nS^+B{LOslxXknN)18g4^p=;fv;T2D2yR^9(CpO6pAii_W$ij8Lu*bC_2_8FyqMr>+B};T{$kVkh1I|Ner$ zla^&i7>3Ug3aQzXon}RXIV5>0vWqmhU8kS@>pnO4Uh--n@7TIq_e@c+QnG;SffBVh5koH{y?6uP5`k+qLj3-m25u}t<8 zw9IE*`q07*(zAy!P-+;WwIWq~li}}3 zze9u_WGd1tt~}F1YljTv-;#r-IR?Zj@L*vTZ-? znG#9qPXyIFK}Z_rHtjY9Ma!^)6RSh2CbEGIOyb>8=1OZpP~u)l!--X8=7m0at=X9L zcv!Y~gJkBMU_J-4Z^r6)F^B@YD2SW?%QI)Z2iqLQ>znsX$1db{GSaO!b6=u@H3%jh zjN?!pBY4%p1da+unyt2;9CP4cRA;X_7{kFjXD1y@;}j)MjJ-+q`!NKEo4GJqU=4F{ zHHgf$-h)jOuWRj8#BPTr^I15pWq-4%A_^|#a@$wJLDNvndN0Q%U#5(T;MU6(xz$#6 zTvhNDL1oKW?H$2%vz5zfk9v`NkX#wGCAHsB#m_mYRpI+B*&zO~ zDYI-9;DUoUai)&<@nHoY@T%;#aoWhW20a>_#q`maV9K4{!D06qj<|C>Tpca$;J7>g6eoV?X#ubE zJE@lP1#0po#^ftBF)m^?tRlZ9@Os62VL5SKQL``eTQ_6|C4A|o+1TMLMVCo4c{Tx&&$oDCr z(>KTf`BLF5cT|Q)JR&GF;zx>Mn!&sBfsYOH8S*%Qd@Bta*@*l PKE@{;^>PX>VF~yLWYBoQ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl.class b/eclipse-build/org/rapla/gui/internal/view/TreeFactoryImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..0177f1df41efb78075af61ebaf85ff1a927cf8a9 GIT binary patch literal 14671 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 VP5k~d|DNREU+55%`TbYm{{TO8lVtz^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/UserInfoUI.class b/eclipse-build/org/rapla/gui/internal/view/UserInfoUI.class new file mode 100644 index 0000000000000000000000000000000000000000..db7aceee83ceead147c5884578f66df378faeaf3 GIT binary patch literal 3387 zcmai1X>%J@7Cldr)orCoz~CebLogvEmK>*pfeQzL#SsRTST-g5LlisiKOHe4;AAdEJsFTT1v~b@zMsy?gID=ic}H zvm+hc! zluFiwl{0+Hb;4Bw@jlD3{CFq%0@G)cB&~3vh==-wA z%$%R8+psYJxlTglxwdV3nN;2KgT7}ug^YsL0&8kWnT~JymRSl2RIrxO)Le#Zc9kb4 zOfP{oSSK;NSRmS&8e4&OT%ut;E)`I$(m;O7a)Oz06_*LL7;+#1fy*^)#1#Uq1=9~V zq?GCtt3=i$Sh;+&hEAlo{HRqpYV*$*=x(ySA=NN!Dn&t;z=c6pW#6*(0namLhpm#I zKpN{5Y$dHVKpH`nyhxF5Jm4Nzu}wfNQ|u0PDKY5La22i=Si$sU5y)|Yi#pGe&UOvg zN;Kl8lM9q6aGi$UV5mgioI(QK=#xNSFEDa$y;UR2G$h|-L{hdB0}5_ncr`QzrBrgV ziZtxPASpERd4cwNh%3@djmw00YuJOELO%DKUdbixDW+S4a8XlvcgnCFeZaO^QNFCE zjEW%^VHLdJX&9E^DFkmXfm5-U(lNQpmag_|xJ6E@oZc-5r63M!ID}Dwi#fQolMMLO zc(&}DES){|$khUxrDrSW&lXL+x;6-Fyh2wXkQyWz3E5!{x8evXBQQ)wAX&j?xp8V- z#&?^B+i?d45mt4jfApMXO#^ck*^Y-5c9({`VT54c>&>#p zbFA^kGPdlz>8YSRp5-|i>5=>H7o4KLfTahG6{T5Yd9WA#CJmvvQN#*eSa^o zrC!9<02*ShAg#$a9>hbTMu)E4!MwVcs6FRS6GQa1gZ;1x%XrEn}Ww#4Yj=& z)m{~ZhQH$j$svFzzva^j0$u`VttXs91y6nU}gQM9prMtGybEtv} z<+9oN)ZgmRV0k?=_+q8OZEohINqZAmf9~3(^ez6e3AP3`D7)TLY$`exIPaiuB~|ZfxDXd{_@G<%awabsbh}Ez6yCqKN^%6W zA;&Sjpf#GjRedb5vF5Uolj;FPAbB{VgN~xSF@nF80pf^2;a7}bDiVC_=SYOlc)IH( zR(!;_2+regA{bpKuNPR!@719dR^fbp(H<9|jl0BT7JPEA$PSM3DSEm-NBiE>Saakg zlD)C+1^hzKoaWNaRrP9x39Exj$tmec4yl1{hjoTBBG0`s_L9y?AVvw;2x z4s-BEf!=sB{snGaG`~4C|7~EtXuCK)5>D@1I(-6d$(D379-YI11&nd?WJ@v@oyRzx z+({=&Qu*u!xXIXQWRIlV^4w(}6DMJ}xpTN@4&^z_98SjC?v>BzcJ&0V;@2O7QKen& z5$QSHzkr7Y7Vy_7dRvpNGTndD=t*hxh$`Au`gr;0uQ>E{xZ525{UH&J2DoRjmhbC{ z`=!LagC%L^qzHk0@4h<#TwR zTz3ftFW^N+H;S+E5?&_br!WH(uTWRtA%j=(8dQ2+h1c;0T5*EDIuJjD4GP*7tT}@j z1v?eIx$=y>`n)alA89M_4kkktagS)AH6`68=J2kBCX{4chQ}*WO^!-6d^!)qkKp~l Q{sYK$vd+5k5k7(V1xz83RR910 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/internal/view/ViewTable$1.class b/eclipse-build/org/rapla/gui/internal/view/ViewTable$1.class new file mode 100644 index 0000000000000000000000000000000000000000..a97712dfc2b8f2e52b7fbdc4ff5bc0491568a440 GIT binary patch literal 1065 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 +This is the base package of the GUI-client. Communication through the backend +is done through the modules of org.rapla.facade package. +The gui-client is normally started through the RaplaClientService. +You can also plug-in your own components into the gui. + + + + diff --git a/eclipse-build/org/rapla/gui/tests/CalendarEditorTest.class b/eclipse-build/org/rapla/gui/tests/CalendarEditorTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b593a1e5c59e60849665f8258c60eb29dd5b8284 GIT binary patch literal 1999 zcmb7F?NZxT5Ixs82nz**A%qY}lN5q6Y1E`iTI!UvH6JlCw2gs=(yxnr<0zFSMv{T2 z=`*x{?4h2?1N5Of-IYBE4W`qKXRhzZ-raL{_a6QI&tLBVJVaGPO5m>N*Gyj?IMS>& zY%^3r7??%rD7Py8m8u%XV$M#0EtfD1rW`wrht=0#|e8xAIV$j&y5g zCG>5#R+!%rNEf}T($R;EflKHY7%tnc+HBPKmA@tT9rBSadzN%|q;K=OyO|E(*nvQ< z+zY~axCM&j%6jDO91ej?LBkH|a3VKfe%m0#=4+pIaSvs*HhKxGiv{roy6QD>tkt|IoIG;~nA{d$giMGhtI0#D|#G zFe7mDzby^i#T-%LC?4TD4h3cs{^LBpNuu%^_yY8p zh66?Q9Oyo52x@gSlSxx@S?dlnkung}`NgMyE&A1Rdf%Zk0-%cpC;bF~M&< zls*L-pyY)Vfz;#4nL54)50W(%38BE;MIMs*W%;Q~+Z7nk?e!8u9XoiX;d`oWECZ2v z7}&)Roj%@-1Z=FEsDzaAd&&&p8vp-n;Fm~Aqn?t~J%@@#j4()_X^-}RK##cMHGE60 z+N`xZ7X+7St zf`QAlB6|#Bn0#b#1tVQw`ECTgjqGk#v@rGuS$6z!Jdn1rFOEl0F+sEIG-pJU5t`p= z&M3=mOzq~IxOsv*0yN2;;GRGW56cT}Jl<{L(-SPF(8jaaj0k+Sk-yi(@<55V!nTM}e215WHiHVbXooYm vOxDaP+lC;vO>DQYm;JGcpW=u^k;mucu|!!~kD?fzTlf`{ZVT+wn1b~$5`GD^ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/tests/DataUpdateTest$1.class b/eclipse-build/org/rapla/gui/tests/DataUpdateTest$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3d54a6f4bff23f319ee82fd69de2f2bbf33c2246 GIT binary patch literal 901 zcma)5T~8B16g|@xmX?vOts+$sg#}7cR(vw4L1Tf$WRXNZ-lyB4U0i3I*{Q)_X`>Pmfhsj3zvp@@%# zj;x)7B`cL-G@ZdeobRe==QSekYEkGP{{W zdm8gtaPWv>eoTIaBgbP~tfS?Lmg&H1TI5)Q$1owaPBg>aU_6|ivrrCAl&H3Y6^8m1 zHw*=NMh!hMBK)`~hIxl72gyi>ayPP*t^faNY*-rV^^OYTB#l&mPnto}<9KGZ&E(p) zWh}nP9s_@;l+>MAq^V3vKedzA1eojEA<}1ApjAeN&}lloB-C`T2`B*>E2P@?x1 zA+L$%4d(DROEQ}!ZRAN@lDrC!qMPJRztg^hhL#zB(^ny8~h223z(F;hT8+dcLIm^~-|BEKT> zM8J4Xl27@N-;ke@lapILEz>9rhpw)wx7_#MeXsxi@3-Fp4B-a@Edo8BKU?%=-I2xF z$S#H|2!rCN4CQ3KCPOvBy@8Ct{-)fxmev;|GEf3-GqNgcd^uij$~4Z3BaW@y@K!8P z64+La_Z8(Y+Er?Fr8F8>iAEwpm8|l8&llKRo|lWV=ty_Acyqa`>Y?qqyl)$}T|2x^ zfqY7$68g3~Tk3x(kQwo6%0w%6Sm=Nyu%m3d>VEWiTKN-l+98b2vR9SPL+RUkpB!ew zIXe*OO+nl$L4=WU<>S~=6J>&dAq0^f^725wzdRoiZE?n@^pfW<6m=R)1`Y}w-0Z5N zHBB7AVGaI>z@BuJBaRG$ILK_E!pXWoYhH(Jt|urk&@HgL32OaDXXJ#1qc~eU1yk+4kG=pTluH2fyVA|L#2EAb{39Y0}T(fW;Zwur?uOY7sw2A)?yo(V7H^}&A z9-1UbC)C0yZW5H^c?%IMx*@_%KqW!9vxx6mFpz7*oAf^p?|vZiInEwsbzp!Eq0lOWAKQX^v)=3q0=>PaLW zMzCRgykgQL4Sm6agU8GVn@#!Qgdee&_ie(JNAb9cD8z2wG8>$Nl~7g}?#X&QX$(+2 zHC;F4&VcU2W*xVhK)vTo1X$EVVo9JcpYpzy3g?E2r})aimjZ`$%PbdzC8n=f(a*`y zcH$aZ_!{2`blC2qx1h@WCTP6r@W&(9)q^vhL}tZ{{HnTT>%qEvyo_99^2c3tJi z!%GF|W{O+M0sT)hYC32d$14fPwT%*-+qrp zDTEhF{>F7W|2U=eQLMJ;VFS(e3BB z+YF*74!oDnPSWrxoZ#AzJ`^}?E^!^^P6wxxL8nP@8QrjNKs!$vEtMs-`%M>(Je{VC z!IY_NVoKnHO-%j7Jn0+^7sPWsDEx}MFHm9GhRU@4;T}9%!zVm_@E3A=`J;0>B{Q&s z+8X9Hg4VcFjUdl5z;i?}#Hw7tVO&H{9O7k^a3x08sNisdY!|;JESKaslSN{G7j~FH5 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/tests/GUITestCase$MyFrameControllerListener.class b/eclipse-build/org/rapla/gui/tests/GUITestCase$MyFrameControllerListener.class new file mode 100644 index 0000000000000000000000000000000000000000..2bc00ea84be84b6b1eb639da9b90da5b76f24162 GIT binary patch literal 1084 zcmb7CZEq4m5Pp^d2lNWGDq3G!tJP9`xx_>hgYkn1TD{t+Z4*B(u;SL^7WekF{aGez z6HWX9{wU+@l>lwps2^r`W@qP_XI_5&{{9od9o%$~Vz{q#&(nMmaIY6j&xpuG-jl7h zO;Q>>63gp*EzSF)p+cio5D4wd$cRvA2Wf`#4*$r#fQLPAqrD?K#zB_h))7#pg7?yR zCjc>I`mqta3`_nvu%r3|6^fAP#6||*y8TjT$UcyvG!Gf3s;k=!>4xfx0;VwIB9DTD z62szOPzoqwCJ%-=7Y=d^C0~Z(Mci)-y~*2wAdjy)JlN)1T6_4IHt%G_P@iD=pFJb~ zrB7U%t&mD;1S%3;hC*|<`Qy74%xgx+7ZB zcCtLNOt)=i4DMP;`_l+`6bUN1c4%V9c9dcM#66_4X&Fc|B(MXeGfhJ4KrhpzJxcsQ zxwa3t_5;N?`zU|K>}T?&aEi_%{Qw?QToWaR~6IaaS+8#rVOY)F5AyT2WUJ7Fgj6^-Iy&O@X>D!!q1m0?T6Q^V*~qH#I94A8;MR z$|YKd1;R-?t49$+y^31Y2{fb)OYfZ+KdU=~+F4T0qD)JT;0(!t}&_0Q%6C6DwbfWKy6WXhYA9rSnF^-mSd%Y74&$U zL)$jUk-QVBWe|mpvZ@TZ`>F(pn?jwV#zFq+_ z8pUd?Rj@{2k$4i|16>kp4FKpZCKPO71ir4f8bvc&RBXg1 zfqLrq=Prn1)WxwWFEGvh+`Yk@lY^y%N@|2Nh3qU8;FLVhm0vV<4NyPkx48dg?A`; zNMP;1OR9Jnj|fDi7n^LDb_H7I*gxlxKvTApk9+K{NG0m=7&;Z~6lnE5cqFWF;(*kX z(vEGKx|24FOl$%Tq-1|zx_bd0$8H5Ij`hC&{JvD|!CnGu+ID_|l-v{qcD9-V$qb;F zRIwl3Oxl!YxI>m}m}#x(mXBuIMV-{x8Vi8=9|5pvqd16^fG!4@dU%u zrwyVQj-{luK#z)E^p*LTwsSe%5!h0JSSx6mF+I-SVA@vP51)lZxp-Ne0q7{v*816@|QK-)af z2aq2ebL=VEr#zqpPN{fOHj{{}YtDXq%94?sQK8Ajh64MbJK$=W{2-eUPaPfi%C*<) zST*`I8)v|HHDGqN`#iNCt>8681-UuURF6TERjs0e^DGA+z?5u$&P2i0vsEDlCJWam zyO47VQ;&#Q`hu+=8mx+-xGHH(&Y>QnvQoNaBEdqlIyvgNb2 zp-r)EvO#H_xen*aE99F;54o|=cCzeR+KfHHxp)br?q$58;B}73s!&y1#hZAGCC;H) zRuQI`W5cm*n9c5--eex%}K zd?KLG_ki&f1FVfnY$XPtsrVdUunM?0Y!nUeMiGvU%DYE>#?R79&-gq^;-qF3iWGk{ zH0%M+0dzY>DlOkn8JQ3ruqT|1e!!5om_>n0(^d(efSR%hyEnCUj`*g#7FD>JO*F(? z84%_h?@9cx@M{-p_y^RrwO>c%8sBOV<^QO+x{i|Tv4G#p%TiErAHOJ%g=nA+9&6T? z*hUXw?pW zDq4EDo$e^%NXJbK(;Qd1a`Gxx^~&d#KgwTf4`oivU8#4Cjw5Uq33kQ^2gQ(g#52h7 zJLHAa%L^IM!sBhE#AdAFRb&TRsnLcm-Z>7VgL+%3xdp>~j`HGglFu`IX0Q!eY{wYy z117Z!9QP8EwsNplNG{;42T2zisgosOS^6r!>6BlLx~CN!<@7jL7uv_S2!~?-*kZzNbVDe!!1>%Bw)0zn>8K2m7%|*8l(j literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/tests/RapaBuilderTest.class b/eclipse-build/org/rapla/gui/tests/RapaBuilderTest.class new file mode 100644 index 0000000000000000000000000000000000000000..f8a0203c8d8a114d7c009678ab00a89c8ce91a91 GIT binary patch literal 3151 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/DialogUI$1.class b/eclipse-build/org/rapla/gui/toolkit/DialogUI$1.class new file mode 100644 index 0000000000000000000000000000000000000000..26e4188ddff191def9a3dca6d589cab7d764035b GIT binary patch literal 760 zcmah`+ip`a5S-1WDTfmh3KR&XEp3p}AYsZAQW2s`ixdd75;X75sYwl|HnN?R-$LRd z@xTZ0QHb?vc;O+nWUbepot+*3{`2z}fXBFBLy53%-B>vJDVJhA(IQxzf7C(jX_?#c zQNO)iLxs@#AgA)P@MqeL#qP)lC$q4d1#JzX>6K&nP&v=}QGbs>FA4RYH9klahBBY1 zD))?w2n*pv`}QO5J(%Bohp|t!(cu|kvvU!6Ye=Z{?6JB8)|4W_QLdLu@0G_oTUX{^Dxrlc7C5UF*YuG7=8w}tkA_`t*xIGTTE!1I7*CZf-xp&W6e?zAcuMymI)o$?vUL<{44$f z59+~#Y2v}et3S&4&KBf?=_Hf)`+1-Do%#Le$4>w?+;@>-DC@Y-V=)Q^?~fHXT8Ber z_zNXM-G6&nskv|%N(1p;@K8j3{-!&SfpL*zcrvdI^yx@PGBODdL@1-4i20y5eDqlK z#K_2)ALwA5v}Hm%L(ZJ2r1Fru`*Vmz?dz2LR7J`>W7w`U1nchOG;FR%(`_2m(1W3>#HH zU6hy@-k5EqzH{v2I>YATQD3#2en-g(L;l|q8P*m7(NHZTf?-pPrYs9BJ≺pzIvQ z*`qzMBxur?Q4s1xMg68UC%WgN{9hKcQV(0$rY+i?Gw|wh%Hso1CIrJ@&xd+r)h;q(v$2{ldmaxYa4)B6`D{I{=0-r9xrocfF$FnJXpJ zD3)zQxNd357RHQimfYfeHa=Ar!gX@CFSx@!6*Ua)i{`5N*znhEr)W$TeBqgvn6!lL zIx6ZII;Gz**Mz}Wxg(5VLBpjmdd=AFv^E9 z)QLy7A0K4s$sG(fL$PDFV~YufzQkd{$vi{Nw7b9~U})B%qh3P@Ejk*|$`DG(fX1Bd z@LT2O0{8Bjg%YR8oNEzylS-g@b+JZ5WH1gn^A9!&ZzEAhB;4WNL)Tm83k=ihrf6Z;&k-jBtxXg#hhFAEW+KANLCV;OlsTh!XmdsCW1bkQW0n9 zI+$7=r*VcsEd+9)QsWQ)Q|qkMQbjcxjnXG|q>yF^o0i4>ppWrGdy|!Q_Muj z9UUYVzA6}E2X&4_Zqu73q0b4^TDobjRK=rJT6Eo(@~Ypxc?0q=20iQ0y_+tXzR!vF zhW+=E+DwPjTMLDds0foCp=+Z+i$%H3yJk73fpz; zJpJ)jt}C=I$1R+Fjn4bhYzn<^9^AyxD~u?RNJ5ZEdZ`lNJ=OIAt@ucN`-Co<_v150 z@CA4AH9*-@K~hCYm~aV~38#WIG8m(AobrSb`i5H8CM%zyxq>UWN~1=R^sB%m@Dm+6 BN&Nr- literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/DialogUI.class b/eclipse-build/org/rapla/gui/toolkit/DialogUI.class new file mode 100644 index 0000000000000000000000000000000000000000..c19ae355f5f9dff620064480f8014fad8a73d5c9 GIT binary patch literal 12574 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 D%58Vi literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/ErrorDialog.class b/eclipse-build/org/rapla/gui/toolkit/ErrorDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..91b1f7599bbf2cd99e3f0ad67bc691ab8d7161ba GIT binary patch literal 7102 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 Q)MaWNpK?$1BA@*GJ=vS%_W%F@ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/ErrorDialogException.class b/eclipse-build/org/rapla/gui/toolkit/ErrorDialogException.class new file mode 100644 index 0000000000000000000000000000000000000000..71ab0e0b61ecc2d722f5f57a426595dafbe92a86 GIT binary patch literal 743 zcma)3O>Yx15Pg%6ZWFdmTPU<8&_X#R0bzl}DTqs2q@V~Sn&$3q-HqvH9eKSJ{u37@ z5QqamfFFezZvxGs2Yj&Sh64+4}39b;o*WW~go*W!wxA z;ucG@IBuR_sJJB19@W6?Lez1M&=}}cz0M~m$__n0!p6Wvyt-ro*q;Y0ZmcuHqrv}w zK$lQ+f7j*>t|Y@d#>x!~^~$X_>sLQAxsB9I?YV4U^|Oz?T6n@slv(`}c2LCn9&~J=rq5h@$efqJI$}y`dk2a_+Bm2P1JCQ?Yp?mvAtOdnjG_| u!SP*g=q*2_#P%NU%|{4+eXiR1f~`+%cy1`T0sBS6a0Zw+B-}4h`+orC8LJKe literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/FrameController.class b/eclipse-build/org/rapla/gui/toolkit/FrameController.class new file mode 100644 index 0000000000000000000000000000000000000000..6a3cd87b8f0aba73807ea44d058e413fb41329d0 GIT binary patch literal 155 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 Q8zF=bj4*b@sXa&h0l&;cy8r+H literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/HTMLView.class b/eclipse-build/org/rapla/gui/toolkit/HTMLView.class new file mode 100644 index 0000000000000000000000000000000000000000..0938f83349becde7bcf7cf410acb2ade213610da GIT binary patch literal 3317 zcma)8`F9i78NFj0Mi#?jfy2^3RVNL$ya*h!U^%pS3pVnG7h-1}Nl#+%XhzJ8z>b@y zN!z4p=#q3z_nqzy<{ZH(=k)Y9&guWu<-Ru~BiGPV{h&8*yWjWS?|$#SfBfsOe*@5u zTRNIF9CN)=+A}M*nJ!hWbl|%7iWQ{K%}-_*Epbgpi-z{g=2dew?O(H;QhH)utOhft zBQ)&ug=d-eqVRmnbr!})G-wkVb`QIbADB+CXxde=gT~}f0*~k!4J|p-C-$Cj&JjU+;X;<m4LQ69~;cumSY8H zG&Fa1EfQ$hEr=KnXm~H@7S@vMMb`;>i)Puf*9PWH$DgD3#f%#Dt=GlC$^Oh6@jlBb zx`COq#d^go6zJ2yiOOoGYk@8*RKjMu=1weYuZ-H83^2p1h^`re#m4i zG(2J;j$QKWkbynet6^`}a>P`%oD<%>v@Dr%iMwc$UiPEGor5aAIGSQVt9h9112$jDJa`=S*L+6q{um! zF?WG*g88)yf!aG8$c{1;BKH{RMVp2;ZW$3pvuXz;ZhlCmt|ho+`5Kbh|1GVIq~N3h z1G{5*QbWhqT@4{LOl9K8;5i+Gk-S3{HY_l32A?5yM7$t;x9a6dNXLT+*{al5oW-z?A(qE| zALrKmK$H!PV3hKtk~ej1x#<}yKOnopEN65)ui;?BMpYI=Rm)~LF^rS(Nz+>qUea-c zWYMiUg=8FKI4=c}l3$YsrZBBxr&*~8r=X$t;XXH1USxu_jA7Qm1VUk73g}9weFMWWmi> z%anevJb(ritCuC0EB{5|bnddq2bt}#bqZrB)9a+=B=b^=66z_q1}c(Mou;PDvXFJ> z8SoK=8e{b+>l%(mRM!t&RjT!A3gjwfC>h)`FH2b++VzETRIzGc4X@KCi!?0Fwnz*0 zW3_8h$LH$lQ)<{eQmG&wdQ=((TlH+B@PEb(NLrIvQYs9P<=)Amn8-!)n&>#Q&v5icrH>47{iGL+9m{BX0)6Yk2kn7!5TZrFeUKNZr?{ zi0!piEDA4<>o^+2HyQPyHuJvU!O4&0t(8`@?ER1w52i1L`+h7jWW1dCshWs7KMz;cU7Y1Q1>iGH zxhf0f&^9h2$0VsYWMbZzb+K(#M%@{|#~*e4K|}Y}!?^w|n2@)K>&ff?qU)`go;-jI z{0V<%C>81<%v3sruPd}+S7y82ad}zmW#RiuBHFTs_?$X#$1Hgl?ykQ@`ef>Gl3_IS zJ<)FhNjhF0)i<#$|ODXQh|%2wyxKD2RVg1x8N%3nOO{}$S{TR3==y(S#y ze}bsMG4_rU`*9-frxiKN_lvx7BaDk2ktl~#xAADIxrSr%uOpTCbPdNj)_ouH2wemo zA@D)M9pZ(57zYS?h;S0x2!YUtG<8!>R5X z1}1y%;m8I)dlzF%iF3Cx!NF_|Gd0ZL?5SaC>MoX-dYgMW{8A0M+bG_`i5uw7b~EVu zzEZf)O4!^ip`A?-WpQ7shAV%U=16oK2DRZjSYk z#9prL<){1swI;UrSscksm; z-o1g=$rQBH6{L!e~MvoaM+6BN}E-MwOSz5FzqX3g)ZIOM~7^kD8Q6d|02S z{T)m=t1U8rH!?qa7uT0=iEq^K!Ns1$x5MVUs-Zt}?E7K!gRuFLYM2Q*^^>sq znQChI#mDqLly5(M1)gUl=jh8gRX4#LoX2Cxl7&fTVT#YBX+CUb7|$$6FEm6ot70Jl zXMU-o;(G(X!mo)g19>M3q@R7oS84<8ckrA0_GK{wiwZN;bu7Z<8yvrl_FLpo=Ar%3 zkFY1z-PZKN9sKSFVo@rvB?T|C1YTk=udrxdYjC!GGX?GVi*lBLJcmA}b5ay7XxiIC JgJB_V{0Egf7V!W8 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/IdentifiableMenuEntry.class b/eclipse-build/org/rapla/gui/toolkit/IdentifiableMenuEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..b60ec862106a01fdda035f50478ab0f1445d9283 GIT binary patch literal 184 zcmZvWF$%&!6h!AoW7NvR$`dGp3%1q@0mULG*d*U&?ed$GE7d}813y~Ia`Az{|&yH-wnqt0c+ zl@Ll$7{j;?fT7z_Qb9w?h0cKKo2! zN}`EBz~5wyXLdJIB0Tu8mznd;Ip6o4Ge3WS`vG7cyBca3rlgZM9J6SdM!qZzS4!(# zxW?{gPPo!JG;Mw?opaNXWjm)K#1K6*KbnSR+Ii#c$r;bO40S8Q7VauTZDKOR5L%Zx z9ziV{bc9jI(6T3Neo($R;m(nHVsVDpp3It7#&m>Q2b&?cAW94~d;dWx#ZX@~v*$8v9yOPQAu{IV#WplD}e(pP%7Y6A%x)iH)~>Q;e^e1Y6zJ4#hT z$0U+Oh0XrUcC%m%zffQ)}e=sNiw(RcA^?gp_6 zI+9Zr^d&18{ECs)FIZR(-4`doL;(4IbSiM$f2u}nxhyjtK6(UMW(PZJ!CnDaJm)tO%-M!z=nBEK*-r2AV9T)5Qn}t Z(em|ZQ`_kHcNfRL_He>TX6CbjvmZ72idX;u literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/MonthChooser.class b/eclipse-build/org/rapla/gui/toolkit/MonthChooser.class new file mode 100644 index 0000000000000000000000000000000000000000..889854a60c68279a60f7dc619e1edc7f4ce1693c GIT binary patch literal 1361 zcmb7DSx?kZ7(I7ZC}mT@9TiZgWvMJGI*7|4$q>K?bQ0rJ8Lm+5w4~Dk;;-=s@Is=4 z(Zp91f0Xguw!q->;5^*k+kW3!zI*1!&oAEqOyYSSDS<&h*sub7+qJEYhGT`k@4j|cHyV6^?gB?fi#wwPhh9X;M z9nT5p1kwegB9JNh>rz7x&g9WcAxfat2pyNm3Ps0RoDM1+6^}pI9D*1ey=NP z5a`#T<2-E^{`{`Ux|bYJt~6?EGI(jPxl-Uv#8R>8p6BFcCfs!D0>drd{xwz7rg2r# zb}9kabX->g+Uqim_0zB$8Btt+5uL`hJZ=h%{ns2d45PoDgasWMI`S|DuD9N8GOME- zUgnTp)ikPO4C4ZAoac&NleF1aFy6$RO2&!_yQ6cDU{hy4hF=B%4 zX=XizOUNR}Q$9Miapl0dX8De{&b5oDd#n_Ewwa&NeTcpT?o+tHRpS#(MIJYBkvl!E zBkpCM6vlb33S)tls#Y@(am5^IV&DX&D^fFr3~r(ww<4texH>^nOgAt{EJooN^F2Eh zreTg8Vrb+$G6&{Y48P{-)+gNN-gs?(#O)^d#%f|xQKlo|muMR>X>^2?ql6zrKgLmj z)k1F^(;Er>y$C_53%HM&#M@lrEoWYC;=zfpcsf%gnQj5i9fRgDi${^CIXq6V7Kx>1 n-EB7UB=rH=)V|v7A1jZCRYV(`HO#e)y*mMJ(O6g>_iHE#?3iR4Br*Da?al=szMn}g92mS%5xoQ`$FL9-o^C4 zkcCixC{Woq6IDkU9S==hZ*Wdad2qt;H)pcCUfE+_KDtT3uEDq)qDtJA_AgSO0E6D`^{qX}y&{I~rF z-?8RDJVV!ibcXe>#7ekH+sX4AWZfjw7CUcYgScPx5#3@$2I38}I`1~UQtoY2+bQ0` v&Rj9z-&IxpZ|HuZQ^>fHf$f~yD+=b+g3I-YxN-k(USDqRUD|vvm)QLS0%3~V4413QppV&DJ(9h@|V literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaButton.class b/eclipse-build/org/rapla/gui/toolkit/RaplaButton.class new file mode 100644 index 0000000000000000000000000000000000000000..dc3311f30611948001711f096f299eb034f2fc0e GIT binary patch literal 1534 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaFrame.class b/eclipse-build/org/rapla/gui/toolkit/RaplaFrame.class new file mode 100644 index 0000000000000000000000000000000000000000..89f03cecebe6b655576eb3b76d4dd8835da4bfa4 GIT binary patch literal 3178 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaMenubar.class b/eclipse-build/org/rapla/gui/toolkit/RaplaMenubar.class new file mode 100644 index 0000000000000000000000000000000000000000..7ec54ec61985e328d9b5f1590e88a10aa171eb08 GIT binary patch literal 2049 zcmah~O;;0V7`<;Y$w-)he2K9H5vhrJnwVwbMNy`etYx7PXI>nKt(`c z&~`R6j=odYGn-X2*^xoU)nC;x;%_=;(nZdM?eNUjPfIlE{?5Ja1X z2wDZ&3#Mf(RJYd+XGLEx8v>mLdxHQvVL0~}6?e<52%IhaKl@36o=wBeTSa4cu{3MB z&eJv1-O3lao+!wwGG(1LExQg&n@r{-5ICWs7bgWecrs^i@7R`MaZt5fkGU6fO2d2T z6VMLF2=pfM$$DD-iJLh%JgK5zAl;mAzR2`u$*WLG>#=M_90MB8U{D|=DV6#6h}H&733h0+L5F*hWxMKZ7&lCL*Ec7`Q= zwm(&s-wvEY2w}ce&H^~b8Be2?PmL?1d<(uqsXau$^FrGBj4%|4LE-V^9BK6+bfD9V zVUzd?er05sYuQu{JyXH#OI%FFYluxKG395(pQAsfyheN?l>P->=~(D{oEE5I=s801 zSI>eX-uGhv_rNP=2tp#CLkpk%q$=?M5ry0Bsq`Mk zln2?=`S>0_daF>IC+{!?&7h6>q)Ms!kpn*MJ|Cv>u%-MeCOtlaRW!iv`Cw5G>>W^} zEcOzO7&`-n6?stuVURvp&R~4u6zKAHKvr-})hh-=JHlm=e)ebss$ltKf7+$TgMd MOegRafdaVy4@vT>+5i9m literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaPopupMenu.class b/eclipse-build/org/rapla/gui/toolkit/RaplaPopupMenu.class new file mode 100644 index 0000000000000000000000000000000000000000..d6da57d37982a50e44e572e12c34b6a5a5d3cc4f GIT binary patch literal 2081 zcmZ`)OLNm!6#lL)*}=#m58^bz&YKY1Nla-8B~IMtMe8&nlt7s2OlPXtH$mV?sVo!P zMOXX@rrog0h7FrAWzlIj?XZiXoLRGMdA+f>E!|t@c8v&KYfgm#CSmwH+|<0gR$X9xtu@J$ zQi}pTyV5J$RrzpZXT|p1Z|_*%-Ex)t6Kl$XLd~QBo1RM_irI1k0`D2LGnbsb zeaDtI7Y*CkV3LagS%= zWT9p-t=@DRZbe?R)FJOad19y46l0j`qr7xp{fMKD&r|%2M36v?Ykn|zZ|BYjd|CKxKheZ@;;+wen4A~_9L`s8SU#C{Sc>>)~kLvQYRcBI9&-7L)+jE? zCVU7U@jKtn*T53>E_2>ij)5kdph<#WXE_!LL1XN304mh+386~#O-*o2Nxq>31{lFy Zmnn1Aub&E{n)PG2iA~lJxaH^E{tw=5xOxBp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaSeparator.class b/eclipse-build/org/rapla/gui/toolkit/RaplaSeparator.class new file mode 100644 index 0000000000000000000000000000000000000000..3d45048d30e2a574949dda16e17fcba5042c269f GIT binary patch literal 615 zcmZuu+fExX5IwWGl_=apxD=3(5K4l?N`0l`g%&9&^r4}7H^cj4@CU#h(G6%fxcE= z1?Ouh3tCs|MtzUdTVu!Z@e`~n*nOR)H_|qk3!}~weWGpl(FXrRFqdj?R5H{)HO_wN zeGtg8VEWM6G$((BJ(AJ$czLF{k(siD0UwNPZ9fq>U(2NI1ntgU&5WCpnT{? zx{eYS8koVNpw#XRr@(>+8kiQ$_Knq_vTtYFpXM_2M(&*A6eZH11k2&lq=KFP>w`Xj zE()uRb?8xbv)y?qOi&-V%%AHclQ&#^UcHyki7jd@aaRyw4K=)>J;mpUQ0GbMg)JOv zmdG5vBVrNndiNgl-QC}4{wi`>JZH!SETfDSvaHeqT94U`tkPp$!OE{-zqb?4n70tC cbnnpoNh4wzP%VP%1x@2IVL~HVFS0iN15;>(>;M1& literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaTree$1.class b/eclipse-build/org/rapla/gui/toolkit/RaplaTree$1.class new file mode 100644 index 0000000000000000000000000000000000000000..79e448e1dbabacf554d039752d866c107d019db7 GIT binary patch literal 1364 zcma)6T~8B16g|@x3S|og73E7nsn1FSYW@hfaGv~~?XZqvUmu~>3@hpyrz^LO^HP<+>46Rx-HQ#Zp zebd)AIZ|?^Oi#rT6XXSW4nd8Z=VL97%c(2+nCJqi?D z5r}5EpsQ%w@_Fs;u5?Sru0{NNicXp68*~X;hrt+=6c}p;nw}z(omJ_VNU@T6P?AT! zfR-t;P?}NqHF+p)U)ykMo?PXro^9kTgCyMYT~bnS#{h=n7!(+8B8h^V7^Yirg9vU@ z+7;bylS>Qa(kKBel{f%ReEO9Pp5M+TC z6g*|c+6dy6S@HK0(6PkkTn-f?dnUG=np>7@COfn9{P|7ran$xzyKFfgS!P4}drn0_ zDcH7j^OoUx(!&VBMCp}9(2o|h(kdRT+EOWg4K(Mhf+S@+X*Nrh5gHR}?i0GyQ*?i% zRRmW#7G#JSW^j$x3hm)&FRs%l*gfGX@90!McSb!%*D?CPqg~CNV&sFGJHajbWloTr zAAFCVus|LB3@r-Ea~18328jK{7JitTZFhopd z@QC=%(ti3oOa0_GBIu|mA;l%cg6kx|Lf=tOFdsd|A|p5M%1Qxi0ZMP9@Ej!>qC}Ao T>Q}HzV~k!b?_fn3D)@c_opd}2 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaTree$Listener.class b/eclipse-build/org/rapla/gui/toolkit/RaplaTree$Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..6434f7746e69e071a5f6825757746a14bac71e56 GIT binary patch literal 2165 zcmb7EO>^5+6g|)RP$H|2lcp_g+9su;^+%|nw9w*`049YLCk;tzpnNL!tE0q`Jd&LB zue2*x?3rm(V8OtK1xp4PhGBpK1{j7FKY-!hC;2NA#$jRW>FK_6?z!i_`^7&We*)k< z${Jzi+_W~FYMf$LT`?7&>&ofS{Y$%5?%(vhBqUV-GgwPl%A%c+>xSJ!1J z(9kb%Thn!J6$)J|=Lg z&?U1R1z)ipJD3)jOm&S;7X^CrZdndOV93BAbR9hyHW0^%Ku?MTh6=VL7wVg<(p#}s zt5RU3;Fhdv(eiA5k2ZTbNr6l^(q{1}S7Xbn)@6Q;YA4GA=~SUhO=h{4xpYy-F&x)0 zMk@Dn!oUff6d0_?VA-vECDJgON-MH<<8p(Tz{46&35<6sw1Lx@6zE%L%LEQ~Bz}!I zb2@>YF>n?sfdQ*jlD_hAKepUteHjB;ObHyJtQX{VL0aWzZ!B8Dn!t%jL!*fTqBWVD zKPxfk449zCF?`ikvK$^9>qxir7^i*Sz!Tg6$y>H3iya>IsZJF*(*dzZ`-WBt99Ryl z(#E`1i~7Xa#lVAFIgVMW7o zBxFy^4cy>1AEmPe%MbWi-rcOZ4qX}zum0E31sVWx6!E%&n_P%~+oxu`#nRt2@D@uS zVCl1En*k(X7!g4uifOpw$KX9;2t8$=*jI^8m>Y=q-kW^xsc0z?T@Me~zap9KvCG z(pADk5ke3lWV1Usnz@I>J&eDPabA6hNABVfujpI)J|5-e4jyNU9z`*NURr-eU|-W1 z_y!q#tLP4^q_Pnm==xs3MIwAsofH{bK7~tB1{Z0QHHh7*f7ga3npgst@iZM3$aRPK zz6->aCd7@X4oTAb%pJrd+4+{(1c?TIAP0WL5PoVyPBxQEM#)7&hbYUd|C{1xqWFa< ze%&v{i%p8Vq=K`YAr&w6y@$&zgB;yK;d4y2UUu-x{M2VC-ocTnPf`2`uL-n7ztIwX zjM@nJjRgKq4*x+8|4A@JkCuEk4RYSK7dqJO`TM~^xMS{=~TAP7s>D$qS zr0vX$nZRf)6SDQ+5uvFwEPJ2S+uHR6p6Fx~-KihVd}!8m{v{ K#Ylt+RDqxLVlsXJ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RaplaTree.class b/eclipse-build/org/rapla/gui/toolkit/RaplaTree.class new file mode 100644 index 0000000000000000000000000000000000000000..9ea59b0294ad00ba89b063707e09bce6be73ca48 GIT binary patch literal 12119 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RecursiveNode$1.class b/eclipse-build/org/rapla/gui/toolkit/RecursiveNode$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5dbe95cdc488d150ffe300cee519d727b1967355 GIT binary patch literal 978 zcma)4TW`}a6#m>~?b>E-w^GKP!P>RWB*OLzLPAp!gLYhsDluN>rdI1MO{T<|_&q%D zVMv>hc-Rl%MM4hYUj_2**yyk3H^;W9g_M@Q$Q% zJ_y1Pf4jehtx9yJeR&yFBn>_xe)CEgSkUC^I#}j$fHnzfn^IttS}g@_CTN9u#m$d zWpt%4_TuSKgrE4(6AUZez~$b6hf?p;ps8&$H0QBU-y+-P36FX~C_0{)3SSYHl=t(v zhX*;_XIP)3dJ7M+#!zr4(i`cUCzg#b^H?AQOMS)NqaHs_D=7Nnt4iHa`K@+$wtoaF z^n*Bb#VeUy#I>$J(dkrI$9KITlK!|S)Fc>LXraxpn0O2Yb^7){>e)v?{MN4Ti*U!| zQ6wU)Q6CH%3&_wDq;>$6if$O~3>rmPbh<>Vmz1G%%J$|3O7;&_Y~upe?-a_QM*mU* z&{S`T;4N-aOoIu6RotSPjNwj7_nJ`ptY)91Y97$PbdI~1->_hw8mDw%B&69Ssdt5} zmXbY6a#)oT9%DUa9g@0cZO*c;rULe7lG`^A$ocjeJNvKm*Zg}d;{zJ#U(st`*K3fm XI>9oOwn4K=KURs~Yl+VuSaeU#ba literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/RecursiveNode.class b/eclipse-build/org/rapla/gui/toolkit/RecursiveNode.class new file mode 100644 index 0000000000000000000000000000000000000000..046b5fa19ee1d3dbff3cbcdfd173286acc69b35c GIT binary patch literal 4659 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/gui/toolkit/WizardDialog.class b/eclipse-build/org/rapla/gui/toolkit/WizardDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..39bfd306b1cf00419ec0b6bbef6434567da2b559 GIT binary patch literal 5029 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/overview.html b/eclipse-build/org/rapla/overview.html new file mode 100644 index 0000000..e44dfe6 --- /dev/null +++ b/eclipse-build/org/rapla/overview.html @@ -0,0 +1,11 @@ + +

    ;Nip;OWDGO)?C&V~D28z=9=FZ_HM(1sL(eY#H< z!p3lC;MDP68gjW9Gqxd}%C#u#Qq0oX>0Ap!9M)xcW{h@RfqrR@^jD$tja~xDuR+c^ z@kBjRUx#`cF-@cCy2dtT-GDyM@n7Tkd=nHGU5JrahB?n6Y?ONohI%>e#A3Yc&^Cp> z;m})Iw^23N$SUi0RHF|ntvk`Ec(b-YcjI}k|9lV4#U!1O#Z$4oLBEgYP{$cJ@AIt( zAcA<3Ogj$1e6h5HQIMBKqy1d#VbmW_)~A&9D4ytUfwCS)FNuY-IP+B2lTse&PJtR? zMVzV)F*KHT1Mb-Hgz)(CS}z-&QsF0Xr_`n^rn)0$jC5xp_M473U^6^!%$PCdu)ZXd5GCgY0;&X*Lbz?d}vc=YH7@7TP9WL>mFeodK8pi(K3~CR@XJg>zc5@kbB5J zb0u1wra(4r@@A!JL$0@IdIg1Y!k%ZK5$xDjC9|z409LCU$`;4P4+LW|3nuC2n}($6 zs!4ea%XT6~2a~%~qD)xZ2-Mf$g_Bq{7yzb3~$4rP4}LEuUV92RALi%J*h zeTcHY$9zlBz$)uUJTB0WKT}iUb=abMzWV!y=)tb0nLIzf@;|Ts8%8sjVZf` zMkR_(hO)cTSn&lWyE{?+*aPO4X{SoG_rbhCs4}TT zxpqGc{hVm71!p8WhHDQ%VtqA4*@N(mn;~>1!X5%W(mbQ=p=eMu9K1$lm*H_C?rx!; z;gp0Zj(hCws3PLDB~tbdR4jc%?vYe1eL}H2qU+76b$BXA7f82YVIF1AVA9%g3Bay`f}jK}iI4!_jZpS%KUIG7 zWzY3fb?m&9J>Rdgz#CKcLU>~p_`nM zF6P+FxlR<%w{tjNqwE?i%9JFNt1ZvpZm?IvfN`n3@Rt{KZ?zOwGNtS_Bx5*l%8o!+ zk||#cqv)$X$Y&))q*&Q?P;`W$wz~FUd$4*s7PIx`2fKk}h!7EbWSGXvj)Pzk$loGU zb`zJ1NC3j=v~LQtyJI&?ky->j#n~oZ_~NifHmsL**mE}XY(s|Wuq*5X350xNxI%0% zhEZ0%_-fOwmuXT=?TVt?SZn<&IEX3QDJVSo`s?DEINcnw_a&)z0KaV+DVFQD8R7U1 zqbSa*TtgbMU5aC|ohxiphSpC1)})Dhap0c)X2c=voUX8u+$AFsWw%11xI#D%9nw&C z8y2@zU0tq4AI;hOVTMnK46+*_0A+8)7-O?*ABcZ1p0DhKA$<6S9q|PFPz-Y=Hl~Ft zeK^K5l}xlnut6wPRhWq*u^nE-QSQGHx3Z6hF2O&6E**>cnnHjZkH%ps_l!zC>!@4smOM?%j!^Ia~Xt9GTI(b$^=U8IGdk)CwC-W#5B5zS=7L zK4>5c$fw~;z4ikTZs%*a{xw}?x9k4rGw5rrsO@2>8;<$wvB0zIqwGhqaV#v`Pg>rw zOR*oPGv0zs?)Dw~6r2Wa@N!T+Wk1=uCs>}bb5r)y7#Y5KlqO|)28ObrI)oySqN!n<6aW`fXeod9-YT^9A3HTOCFjv|)(`04GfXezFO~?nq z>>p7h?_`wyGla*R5q)ND|B6rS!vZniA}xAKNJB z;09{%SnudA0fIHkk?4&strd5oQczyUmSWf(1UE2E#%vtz!p!3gwI$kqA@mCy&m|n` zD^pGY{e!@;$Tljc2<22ZWf6ITNvF88a=KDOv5|^$>>;Y0?obnw5yIA9&P}kd=k&lR zr#<$AoL-p7*s0NZ9TgDdPZVTOP6z_&2pTA-50Z8)cTPWyevOGKkWF?5zzXCOkU7!2 zVrLLq?FSQ-GX&b*kqAo$yFSiP6h0q|mP^J*Ic0DeI#T8LOD!o}w{?a~A;Zeq4lc*v zrAZ_I4j8<7huAo!t<0!w{PbbcI*+ zkbD{xc$vPYjoyc+jcAAX7;gvXwNQ_2X(t5L90pbk;!g@WH%BbSL>^ z*zb50t;Et!XLlU*;GWmfH1-itCh&I^D#xOSb}Pnlbr0 z(kLgThlHDz@o#V=*}l4XT8Zfz9_*ZQGDynCiRV14GgXj7t!OVNHBO7uiv2}699B+S zK|wU|G~W9`J*xS+b4eTF&d^n3$KKqG8aHc73bLlx&HNDO0#4Wx4m2~R)X#)8lzdOM!=h$`n!?jv!WR3bB8HjZ0h&Z96NI!$v5S9Hs<0f+b>r+#C;;rB;{`(5Wrq{bS79TuH>Xd|ec zr>TR!WS+tE9yz)qq@3qylv&+lSOJyu0=`Y>yCceZ2?kkzUWK_;u`F8TLrSlHW z3HrDJ@gU{AN0QI!vjFD<5;1<@`*gr0Bw|^D7?b;3gGB{yPRNi+hZT2yNxy48bW^&YxIsXY-wZeH`eIq^ANB z9fFNbW^jT<(;;9()A%=DX5$wKKsO4Km>@%-2%}M$5`zXa?ed+2Nh;74CWmefs6clV zNl)S06wX30jRQT<(|OVTIaCnn1!?hTR+>N%0_RuqN&_Kue>R<^s)B|Ox(JWyqFdT2h zdB6kPq3!0ICOe=A`i{~@q6q%AU0_Fa$e*7oP>vUbCX?KZ3cS?dh5WU^Sd5PUg$_{p zFhvE%q|Q-O(63^n;;Ib1HGe&gnL;SZhyJ4-PkU(8I5 zhCUp`gPyng8We0yv)72QK_a6sL7@0uaTn1PPbbbWXmoK?FaEHji1!61OEDi|Py8yP z)0W%K;KmMnyV%Lo@Z(1yxGjPBNr78Xa4E~bT!Bh=gZh|Cai^^uw@k|6nI^L|R4On{ zipdlm7~47SmBCjX>_{h~xmpBqXqS%4C<2V7&JV_*{7NZYQ$E5*z5__hPo^Un5||;y z7|N=DJE|j39frQbY@G@tB`CY9KwuQa@`sWZVt?zW0<&=uXX}zX?*!?FZ{ASrn^O7; zCS98JH>apa|e!|3RFw6jE}zl=7Nh3A!0|4NFKSvbehfAr}Uo9zrn%#!|FIktw{0klPJ2+ z6j+YarH*<@hHUY|`sS?))JQRv;`%EJw~!ok!(~lu<4}ozV;c7l5lW)K%JCFx>Fj*PhALG)cNP%lcrRF(|M@dRXYG?>E?Nl4XfUCbUIX|vsOO29pl1+ z=zwn6UEb`w1JG|?{9zwz@tbL=k2V-w2F@5e?!A)VO@Reyfxa86ZJxQ6%ae>E!jL%c z?b+t#51RZl-nBUI3}PO zD}O{gY^n}wY=!w`i|#nEq3UoUn&<_G{CYO4Kr=0M2t1M-5=dbo=iIm%gvD-Ocz^VbR*wvo*1nkpuMdm@IaEbo zv5dANq0XlQZCDEl)3O@o2vpersil8;DX@3a!Cz~Qu_ zb#6O_PxKE!RNzRsGD`~HkETVWb8>E5gsv#mBOn!1fny;z?PK9OOuQbWa6HK^9>dXG z;6!q-^&POl$ux%esj&*23I`FsvkIJ!@mi0tN?XSK6hj5hM6cJod>al?F6udUA%U}z zxeX>o1VbkN8jEGF00}F4h%rT<1kq z;3`ywKXB0bI(6V0?16ZdH7ih8Ap_SHi-70?PkI3sibebjKsd$p7cP1)K-4C&BASlV zyAQie;Xi57P1u2(ivu?bg+^o>E{^uM}fod)R zXGZ8=Uyd4>Qt8irgvm~bG68Ag4~1Z76sKwp3^KIl(iAV8511{2r@K>5HWFbtr?_9k&sXJB(jP~sZaJIvNw@FKG}yz zEs?%Hi4mzM($6Q2MAj1N?~??PB#{9=X(5s(GSDYkBI}3@^2vH48;A_{$^JwRATq=! z2N5}h$TmJXjK~p0hWg|vBF7MMeR3R;6Nr@gIguTFawU{Da7|M8^5#c_J?o z8Sj&qiM&c=f=^y2@+OgqK6#tSyF_;K$@@e;B(k$lJ|^-nBD?tHQzD-c+0`ds5c!J8 zB%gdk^g{fW&qY#_72#HtM2hM7xjmSMw~ZA)ynVcRnsL2Qm; zqnM2*HrKE)voXZx88(jD1Y+|I+lkpO#19$Fyuv%s@Vl{@< zGixNar(tWEC5WvwEXk~e*eb))%(BE*8@7(wdSZJSwt?CH#MT&g0JDRL?QPg0%nl>Ot25%UbYfZ0XF>J7Vu z*(PEQhF#9=N@9(MUCr!TVsXQ+XLcj8wT9iy>{en;hHYkc2eE`=9;<5o|_6xJ$ zh;20N4`P-ec7V?;ihna!~P5p zGjJfo!3+;Ka2tj$!y^nF#&BDPM;f?2!x0RRGH?{b(F~6^FwAfa!($8_$8Z9}V-4J? zAmwoelJgd_$a@Ql;|(PLEo6}c7ZfKLNG@E+A|Ea&PBf6bxR6C|Tu_{3AUSd&i#)lY zIN3n* z7)Y*N$Rgh^D9$vHyt|M^?p;uvWgt0tA&We`pg7w=^6^3zIe9^Gj)COng)H*(g5q2Q z$yr+#U=yE2@F}}1qQ`s29h5b zvd9q(ipvcoS1@FeFBlY87)ah=$Rc+zD6TY+9Kw)A9$`>iWgz*4A?tdER~vXE!~9CfwT5l(VAmOT2WP&EGhc7u7KZmSyurZx89vDHMgt#W_z1(B41A2?6AW)Q z@F|A>V0epx&oX?T;jIR~$na%`w;A{*Oyw8WWAZS|*?>Eq4 z*oEN(1}cW#7(QrVF~gn=+YKyX*qh-)29`4H%kW_X`!gKK@DT$C7r;jiWIJnXJNuY{ zY-eq4XCF6^?X0cs>=OpEowc={ebPX-v$nRgPZ`K|*4B3RX#?5L+PiQ&|6$-HZs!z+ z&lotB;qDBdHE=q^nGByZa2CTk44*e}9>WC;UodbH!zBz~G;k@yWei_3a0SCX8NO`b zDu#P8e8s@M8ScaIRRe1o#u&b4U_HY|hOZmAmSKY78wMr|%6!wn7KUj~`IdoMhU*x< zZQy!_8yLQ0;QkB`VEC?q2QfT^;d=%i#_$M+?;Cg&!($kJVBm2KPhj|=fhRFMh2cjA zp2qMDh94Vv7Q=HG{?owo2wKlG{Fi|jaLS7qeq!JyobqLcpBlJ{Q(n&S-v(aE@M?yi z8F($j>luD-;EfD#X847Hw-U5;MPC|7);DC|!70Bo@Ggd17=CTwy$tVX_>F-NGJJ^P zw+24K@G*wp8TbUlrx<>3;6E5X%kT#SpJ(_Y!ygTNnc=Gpe=_iOhHo4b~kWahTAhNHgE*PQ4D(+IGSOYVNV0c zFdWCQmw^))?!>Ufz+D(lVi+`V3d5-kdmFfWLH3Y=(;2e)m8Ax<`E}U*%033N`E}U* z%Dx7&`E}U*%6b2N=|t-rwki-EyL>>Rv36A!7=Frds)3&|{DR>$1HWSU z4a40H{Ep!d3@Z)%iQz8{ryKYi!#^0#@L@m@3|I_j8t5?W!m!FfMNl5aaF&7HIAt-z z*#`FHl-gX(F|dSF_U4px4J-xZXn0W0GpsKs?9U138#s{RV1^3}+=ijcaG`<27;ejO zk%8M6q+D#^2!^9LJ6H8@M~e z=?qsGIFsQlhBXGxVK|TBo(3*pxQO9O1D7yd%5ar|%NVX;xZ1!y8Lncumw|gR+?(MV z1NUKA%W!W4V+`vVMht9ZxR&8Q1|}FL8Ac6kVVGuEYhae)I)-%yu4lM`Va&k&86LpU zGw>jWhcK)+@Gyo)Fl;dJD2B%{Y&7sVh9@wL8+a1KQy8u_@HB>JFl;jLEQaSWOc;0` z!wVQT8+Z}JOBf~%+{Ey5hA9KDWO#LT^(}#GZ^F^36}VoAz!Nf!=N@8!=qW~tUShH+ z5er06tP#CMN`%D0qEwtJ`iRR!UvazWCmzRn>>Eh^xfm$^6oX_?43@+3pDUOswvn^N zP`OgLvPqQ5jbfNQQ4E(Ci*4mCVmtY;*j~PZ|JuMOVubuvjI?@)QPxngqcv8Hwq}TO zYqGm^XhW(zHX@4uKoPe0^^b>QOkz%ehS9>v1cGA zRtDCKRe|Hg>cB-}ufVNhP2e%Hci>GC34A5?>EeiJm;R!*%V<&8Wp@$lvP^hg8by7V z{Y68UlSE^eO(Ndq4zae&Q=+NMyCTu$JJDREM6zhGNEM9{Ek!fMzD0YAbWuWNiVhOl zqSHjK=t{A!Xp3kqdRDA2`cSkL{UkQ1VzHlc#r|r7*r?`+1JqvPK-D4+QiqAd)LG(i zb*(s3-7k((FN&kpzr-=>H*sv&5^-GDZN({FcM+#`T_8^Hx{o-cYgU}u^=NTU*9*kC zU2hTRb$v{n-}NnVLDz4@h24t8McoFAi@S{#mvoyYF738jZ0gn`F6(xEed&HR8tZ32{^RgT>9=&k(nCzee2J z{eE#<_m{-x?w^X=yZg;*H|o;#0(Z#aD>?i?@ge zik}k?7Jn?-i+>dl^(YY!_t;iE(qk9#Xpe>Bu^zSJ@gA+>i5|y^Cwp8hUhA=0yxHSP z@m7y_#oIl;7w`1!Cf@BiRJ_-7f_T5@T=7BAy~T$;GvcG3M~RPno-aP@d9(Pu=cD3_ zo^OgTdwwmx>eWSj-D{Berq>wpZLccvU9VN*`(7#WL$AZckG;+oKlQp^{M@Tu{L<@H z@oTTo#cw5+_`Rf`_@iXB__L%E_dQlfS<)n}l7pmOa=LU%u9kt4`(&4r7iCe&CsLLC zA-e`cvRiP3>>k`r76+Hg9>E6LGq}I(6+Bs%1TUAt;N7x!@L3rOek4nSzsNqld&$1N zx0U^R?<)KEUL*(fu9E|Mua|>*A1?>@zC;e`eY@PI_fv9c@AstJ`v+MT>Mn1%SA(l6w$eQY_YPk%YNPr01ZXS&?2PmP?~ zCn2ZxIau!A=L}id=NdV^&;4>npO@s!KA*~}K7YzteM{x+z9Z$FzEkDgzSVMG-$psV z??$H+oXiZEEwcmmlDPr<%5?*dkgWsGmFoxG zDBA`+EH?~zUG6vFOS%6*M{XS0Umh^9Tpl=Zx;$uLjXZc@LLM^kV0q}kGvr|duaSoj zyk8zM@FjWVz)$5-1OJpq4=R<%3>qnq9W+%QH>g@3Kd4cjFleJZY0xS1ltEX>(+6#l z7Y%w&UOebydC8z(<)wp5$l9vx&EUy?GlUELIlUEHsL0&!hQhCkbJLI*4 zpO)7ReqUZc_(yrekYah`kTQAGka42NkcpyO;0Chl_(#%>Abn3pRN&wEPuGaRsM`ZK z<;^}W)DYBJigkj(Eih)3`L@7j5L~hmVf>rYIX4Hcy%GQBCBx6#ovYJ%oqS$g1M>4u mLQ|+QT}JJAd*IHkYcA&8eRT>yH_`^~4s4-1v1UN&--bAw-d-gDsFHqhc_G^xk`KPA3Uz zq>@5nr{|{k-h1!KP5b|5_N**(x$pnp``o}e-?M#ZXJ%(tyeI$O@_-OxlzT^!u%zgl zO4nAVBMpg2vF^L=tI8B2IlsAwvg z^^)0)6y29Co5hI}kz{S<+?thMG&>$CCPWkQWIQ`j3VZO7B~m!mshC$JI!RHsoeV{y zvlQL7Ek}v2QV1miQn-V zYL^nbqLpoxaGR7Ef__92iHcaHNr_?T-Ka5jN>oTu0vcWsPh?RG`df(!T9k^Rwgmo5 zVa&7mo4!+fGa)5LN>NOCav3k3QDU?drEM8f(s=7K(6g`}Z%9CC6=%@H zjWX7c*r3E-Qgn<^HzIl%CSj~+r(*FH@u;2{C8}svljvo&6cXbwm1d@)A%Vx~G|vqQ zq{W=fq&aD5NX3&`nnoq|#a9Tbmu|#-&W4;7d<{Wh8$A-Bxl-&@tzY8k6px_ShypNz z@nkIC7?0&52@iuaUy49s5tx!wH$uZtnK+oVF?{m_;vNHI7wM2V$R z^eIf@t&MsO)c+8QMB-&wMU*JaF6wkO4N3<_2oWMd?;wUtg z6lH|ge>9$rpo_=Qx@{9skmDfA)%xQJv_P}jbi4-Rp~Okhm{s}>OX?I_CFUdYorc8b zD_+l_yp54~g4V1OXCbxLL~(vU2SZyEiLO%OJSfX0sRRUHi3`x~8VGoJO*~r{#_G+G z8oEe|9#|SlDD6lZN-;_68eg!2E+I9Km5_|lYP$@TRQqpnG_e_zZ@z{zUN##~)}m=w zN)g0}qM#L+v$U^lV^}XHF=f6QBV*o^tZJ@>oU|1mOs48<(%!hB5*sn!Cg~c_TNR4b z;7eoN*B>`P`ZJ_khQ}gVZ}=Lhm`&((G?I*ZSR6N_57qokeYh2UfTr_mQ|UO#;AX6a zYW+^DPl-FY%bWn(<}U6szu~hI_fWxguyPpldocw@Z=vM-(G2}5q}PuUTMIN>S}VVY zpcHkgaDiMX(F)REHd^cv$f(YN);$IpGs%pCcmnbcvy;krVY0uu2sQ30)H5{` zO|6UsGr3?q7Ejf)kUx!j{KV;0DjW940$qJpiUA9~gcqf9AqX^u`GEcd1bQ z_&$v%Tj;FE7Dt!}@D;%uL3bwKgYXsYy!8|B`f+ zk~Vw@Dws-vl7#!yX7`nJ3p4t1O#?bo$s$Ne%hvh1){Q}JfKgBJe@TvdI&t#3*)%*5 zw%17BnY55!cL=4k6RTv`e94vbbMe-VNhA%hNa<#V$SqQ`3<#Zs(pzm(^&l1D7r3}u z$(~pk`Oam6gP~}Wx%wI}JsfU_SL>xW3{kQ-M9*Z(DA||vh8YmN_t#~Tjz!0n9H8gO zTg#3p)+judIJuc}AQTb`BDWL8BkPW6AzT_5240y^T5@O7QSiQDNIfNY)lyGyka{@; zsy~`)Xi{<*t+7-?oM;8hR6|pt)-ifYR!Xr)%hoB-IHa~I1D00|ei1h;?gdl9OzY+Z z$-2=?nB)XW5Jq(*PXLO}rowRe8){Nm8A^`ELejMdBXAYrxknlz4Nx%Xz*thFX%Ff} z$=zwm;~9!IYnC}SGj_=u9T z;f0bDBIn{OIcG}F=X7w`8O@>?y9Tf9cL~;qVc|WvyY9>pIhPt#AI>`T)A?2#4 ze;LNc*R`|}!Qh}REASOHA;Cj@UFrFu;SWC(X45sF=f3y#hQRsM5N5e^hV0P*v zwWL3!hyM8~eM=;3k$Gw&4sQ!{OJ2B)qn&;tXhpdSW4W+()9@gQCZ#Ov+p5#rL#B|U zWvgxurhPT^s4if;GL?~HoRKNd)ck*tsvHj-4Fg<@{J^cjy3sAr!pY_eL#SjEIuIj8 zoz!lDT#s3SNCRL{H(;n@*r_GpzZdw5@-Qg|&rZ=|BZHSI^cnpn639bxuU{eDo?>NZHqId)Hogl@)f={7HG70NNrG&`!F_Ux>-0*3% zJ=Ho?J3zt4IJRnu_&TftB~Ou};{RJx2;&e<$9a39vG8a;F@n})x% zA=nT}ll6e|A*KKHjUMFY44Rj=ZgK~dJPX=(4m)hL zsIuJabI^YedvGPsgBVZ66Uo&D7&W4LQ!X#UN?2l?<~Cc*Q+f$Tl#=H4)MXHC0^vxk zkvux+fMzL1mH~vQ6M3r`)Qy3bL)DN}TFI#-?Q}xHnaM1Sd)9-L*0(lig7_ZuLP|bHQ(Rav zRvXL{yg*3J6H<(%E#iN)AQYSjUA!XFm`V?asYCoH3iHSDF_iffw1_S<<~3kayd=J2 zf}chtXzE%>F~TBkU!YESfuYS96F)+u z!CcZT*v8goq>Bs;&Vky194=&I3y~;ior08wp>@|`Fp8CYkybSKUB}Sm%j^zMB}85V#1Nq-e$3Et z)<+;hujU6V>8%N4Bb#9t>UAm3g^cKNrKL&31_5e-Ll3!xQp@}Hu~aBH1HKG#vqtfV zXdOosNLVqJXhI5OWOlzH#5$-AB-Zs_J@$(c?kG2atTv0ADFgGK2y%=d6jbs}m?_=Q zWUA0QD*3h)LtB~`BRawUD>axDCPi{+0MHc729GDyB|86ZUgS^`+L>+&!(1r&K5WGl znhtmwNRPhLZdnVQuc$tR1`(Pzpulh2<~kKlrxFPcV#x2M zc%h}a3d6*5J&;5aBC73TUesaW$ibrlWw)+ConT$lE-nQxACb)5Ht8TZnG}1dK?p!H z12Ke%c~~u+hgMlChyW=G9)_EHjKu*FLj<**%D|e)(%Rw0fqL3PzHshgYU^P+;D@rr zp}RlAn40m+hI7d{ny2K?u-GllkZpfbwNhw;f@Q@EdCX-X(FK|c_MUe7ZE}EUD%LN= z8kPKt&6%zQeF~Fr5>9*A?Qk4f{w~E33~ig}vGv9nLbgyJy4$90QP>}dW9q^h5CvG1 zO2;zc7&;w>*AlH$@-N;Z&tlz&*c4O_O$XAZXn95vsg1^=H&N0*`I6FbebLyc7lvCD z#w<~Q+mce$wVU%fw5Xx-Fc(OSI>~9ns`E8~DJ4$Z1vV!bqI9Z;0%UrHBe(WMTQ|2~ z`ypl7aA0)5@=|BHQY`zw3)(^tatG6*Lr!Q5IlYL|<3FQ&{K$<}lvfjL(y3%^*bJ$% zim_5#n&(A$2=gO|!Gm`WBMQx6b)uyLWz=pxG11|iJv*QmpgR#$SmC@s4SRsgQ? z!Z=*Jw5O~x`evfh%IX1EVycduk`re2#OlXqj(LR(&IvNg>J7nabCj_93U~chU(#G_ zVK^WeSU1MKviidzA#IH=3?L72Ej&bPAmBn6!?dz?ByS1O-{n|4qnv8J*~NUbDGpAY zsH|Pl2~LOYi!}s^TDDfzkV`^Kl#@+T)-Y0MR9HTMVpT{n$ZSlow@hf+z}9e^td*u6 zdi!IIq_qk^6018FMz|_hpTro9Mxe(xbu>+y!|Aiea?O77bZQOI?r3B|+C=N7q(@2j zgnNvVX-{X3hhI09pW!T9dtrcZq=Q+Sgx*ezN9$lxl~sid`XoqM)p(vpr#|3QG54C2 zx0OWz0i{nziS!0jhjM13y?zpGxf4(V;VkA>S^JVWVFLi20j!hT+r;NyZ`iktVXQelAjT)?&E+e!h4nY_jUs z>_@iC;FRL3L4_ ziPkGVtbq$X3o!#S0$APHh{F4XkYn{Ks|iw|yTo3CwH`y5-vK7{K_ooB}?cm*j|LU@kAhK3v(>nMmixdX~N1_BG@>2i;QeCu+Rbpj0|Z;%n_Ye4uYyds^d zSJp|8d-!eeK;d4P2A+apYM)piY@%bQVJV}4IP5fOqDBv=-pV?I#-Uy5*b!kjW}O8M zSr?(sbI;GgYi$a_F5RQ^utH|)^%6t~2Z1B&0%)_^bSl@Ntc&nCJ)J`oz`6uIVT!sg z!!u(%H>2luUIK})MB=KZTnt5AO?6^*M$*x`CS_fVVcUn^R_73NQr1R{c3mnFBlif4 zn**;X>IMWFU?#OY2|vN#n30EXQepdRZK4{n?Nipxc%qG?vTjA)`t;7)j7NeJ96q2=eiM8JWlF zzL~M$##O|y%o8chLuPL(DihN2amabC7fO2B|7^J#y>S?qks~Wcj;I(hHaK$hxG^Iq z_Cl#{4q8;+U5w;{WM7%hohABEJ>Rm zno`#Dc*7Qg6d@Mmix2_q`}qwL@iLab`Iwi)S78&XBM4&C3P+Qa^*TgomFHody@~wQ zP;pcMMEPy#Ale^U??Ui7Fr%#ZQDOcx&H4}xo5^Qr%K8`u!I)2TAYZnGd?iwmn6hn5VRa;3 z3*oX|nl-*KWETNfA;OVKDZ3a7oN>E~?M~2% zfh3WyV-KKW=nGN}L{2293_GHi^{GZr**g=&6FRvoJOzS-~!*(1>zgoczonwi&#@g0kip>R>bk*2bD zhd!E<^Pr<>U!?3kv34j?{t(m0%UFNz5I0f{h2)p>sP14kkdAo+z#61 zD!aaEgV0-RbnrN z&>}2^JzYkh>+?Z~y$sFeXexNYalgHsI*l+6yK1oc$__)OS}#OU6@wb#!m!^*7@GD} zA@+gns1%7R4(;fT8O3HO1>Z`bKptB;9PHG?HHriW=~yTtZ{}n&GYHbeR+bE?c6|JM zD75}*qR1a2-xWqQq-+oCn!NseH)|m#s5bu|ry*@i;5T%Y6tm%L`KkPNA!tJ}Ohh}_ zdXw?XUpJ(R+s;p6!x2Qs>_e9&YY~}5OX_t+b>ttJVNrGp12u;%S>ZS+do@~_ibit{ z`Z&tY;C(K=ay(4gIZPR$^668vA+s7zk8~&!Uj?I7skZ|C*Yz zPoO3u$w|272hlqPAKRALX;??w1VEI11{!6OP$;4lJ=6ba25=gD~WR-mxdNYrGUVLcA%;*pP(hZT- zwy#8f9MVwzX_efwJ4I?xdV`*oalBZjtpTDtM1>>Dt9NDx}+)rYjX z*#uMJr{u7ihXQYgQdyW^EgT)wNzm9^A?Er;-_Nu+qbnMq&v#%1=IMUn?JnIh%r1pI zLoCw3_dq_8Baiv6tbH$h_$dhBZTIS{vhUZu&u7xtL^1wb(R)N?F-kga1VMNRVXwjp z{InHj^MW?CVw&6Kf=3WV*n!U@^aT{8dZc{^uqBBjrf5HgUQU6xQcH)a_7jk>g4*b! zfwG^X$>&xjJhC%S>tXYokD{N|BL#r1l>NMx4Z28Yzo=z{ug=*o>wI|OkgKv^MQwB( z%wp+Zu(Mysw4wkDL(f1&K1E*a;&2*Di}Q2L0e_&&8&HXumM<}1CIOv&n5dKeH8mku0~ZJm#JAK0 zdZBx`_V;+pN7(Ei>6^d1QTERmP~MB^qhkA4w8i&qen-poC+&CHe;_u;-w=7n?hy_+ zFJ~P)#~EK7ZZR$0ztC)*agCRt11V+ygRC=BP_S4f!-Fl&@Df*~bJ#oOOTh+npmHR7 zfw6(&ty7MTwrOKS=V!`ssX^E;ML1j$QBDz-BLXz+%dy$ug9YUjW7^X=6oMb*bV7H{ z-3sM&<}VbSP)=9 z=XMpE(227v+P&6~m^ee=RkW4FO3iQiFbrftL`FFkdMGHy=~SW&+RLXgZ_Y>_@_dL( zIirzss&N=JUq(6OQ8Qn@rKEcy zSW=jjvjlUrhG388x(ko2Ho~ToW;VB4r`Cgq<&7;=VVAxJ55oapob%BoK zADFV`3C$^e_H9^PyDz z)TDd16E}1gLeQuTOwMA=2b#*i1&C7H_k(!jo4!`(EJf9R#8NrS&|32;_=XZ(B4!1cO#vb}Us4XQ*rDTE{z=yQIU5GWn}!9Vj?&T6z1P3Jtui*Yj8aD+lw zO1Xj(Y0_!D*1$z+S0a7D;>4#WtS-8BtDN<$1nEkxvw;Q&=L6KvFh}K_!yp^8^yvT} zOV?3^&N%|PGq{AKoTD%a{tZy&9E0_Oi+hL@D(5&nPtIjXCp#xFr=72IPC|wZMj0wl zIj86se88BThJo|H;Oz{~L;kpO&VnEm_!7!F2f9XkrF`eyIS&nQOF-AooeO~4l7wLt zor}I~mHkpL#^aW#bKa-HNqcn3O0& zOt`vQ!5eSqA?hNw3;5kmfu>VVE9zaK6;7~q3valbN2nA25IlzGX>@A`{d|Jvl?9vw z+Rjt>roB?-JPie`zp=U1KO8_!xJ{y*XQ4oGrVanqoVW!Cqn|;F0#?jR1A_B9%||Y+mGqk! z%_>|u#pM|q+_y=npx&c(VZK)2yo<%Je;a}A8fLxyalLZhr`gaMa5K~S5UbA71bd`r1;PTQoM@1ag+r10<~ z)(YQi57WjDQ8YT2aDIlo6dW7k7A=lwIF_ZHU(qGLvVc=AUIV`aEQ03EVZ+Re;15Vh zK?)ONaQ=dtDo9AHfbSWMQ_eq7G<=28l@Mrp3e}`i2@l7Ft_|V9J<&rDDsWwl2Y+R` zaf`4p_?7%jw-}RST1|3>^GUZ8TuV;D!Za=)o^U%;H>e)H8&+;t8c@Xdktsj}g>M<< zmJuc2Sh+pWM!v!A_QZfM*1u*`Zf~@KFwei+x6nxA(ggqHO}YJ13?)J_1CZX&jJJU( zlz+SC?uaSDW>UF3qjUr%lN7#icO`i;mr#^D1k>ezqw`kYd?`vzio*s$3g>`DsdmJ0^V8$dp9(%%H3Uxu{xYUSA+a5 zlJ;0PFMoo`O#7QbT4?#&g{R4v8a|5Z(VjU0krX)c?jbv1>tr)7v&FUROjEf_si zhJ(B?j87Vil`jQ^IrQL8mtq&bj--?D-9!YoC_No}(q*-bS072@Qi?kh?zia)?WZ|_ zL^pcqM@jC!Qq<$-C+%(N+C5D!U6nB{g}bQ5sqMxcT|V6Q-i$93xF?89_Ie=6j3PSC zN)gxm{9g*<{;4|~D!#2jyioWyioX1++__SO5VZ594SQH~$%?Kk(~%@D=<&Tl{|-Bx z6L4>!8rb^$IH2`P6m z^sVWrX~=$3WY7@*f|R~S_CIv7tvSIJIUF{VO~8iQ)Cz@z+iUu^oxXe*gx1l9lXsfw zTzvzssiHAUVK-p8sYCiu%3UVq^5BHJ(GzFWCEdcFj+;;kOlPLraoErI3}~ADqhT5V zvX%N46})VJrqMn=am1;DZYrH7j=;4qQb)ME9>xAY9rObVC=U0JAtV?`&V|Hu?vP`# zPKQWM)0ISy{h&mD(~pAl=SlvtFF7WmOfCtfUthU$RK}|uG_jEJ5mV5djq29$WzoWJ z59i1+)Y-PB>$rw?)bhu)gC=el7u2NO<*;6Q#fHg9^O96?D$IEK` zP>nbl)DXv*LjDgA{ku+X2A&`PMiHJDlzM&ZM%tTFy||SX!I36@O96?;ip#+d-li;l zZU#S@epctMfdJ|tCAQm<(@#(ikO6QPl8hdGo;*8u-4Zi($bVMzl2ckY48%)2Kg6BJc4k! z5~k~Cpok{=g_V02BJS9@y60dviO_7Ghq@y8?HK0r0z4AN^j(C?n#k$81P}1|lzSQ6 zopp4jyTCJ1ZZo854$P>zvs^5sdu54mMF;HIX2p}<9R95wdB+g5(phjw5=-dcTfn;y zJ4}H0o}JiH*zR>D?lnT8x!Jln#H0VL|KT60fK~5Q>t(BPMhPiF>hi%uw*L=NV3U}I zPCzOYIavQw75wj7V2i{XBK>b#j32Uu+HgyWyUD!?14P=Fvh?}yIWXl5xrAwmouUP- zYfP#1FKL8GF^GWzgD3?4>_sDkCkOweMG^jkM=8Xh=kbjH>-T#=*55BWF16kJMafdT zw9CS!4*tNOKIlfE6u|XCcLL=A9emJ>Kp%i2AM_)z1Ay{DkiZ~-ZYIx8M0O!!G7Tm& zl!(bSoJfdBv0u&zBBO|O^vM_^yAkQ+lRb!xBU0j%2}C9m>FkreiA*Na#V1pUOe50O zCo_obL!_HeW)Yb~B;b>IL>3S!^~oY4ONf;DWPc(D5b5rd1Bo0&q=!!qCQ?JB+$S+2 zD~R;;Nga`uM0)uoK_p3}w@(^~q>1$LNtQ?>k-k1zOJp69em*&b$e~2~`{ZyUM-th= zCr1-GmdF5~98cs#B0-;=OypD|1ATHjku!-5^2ymm&Ly&=PtGTDA(5SYaxsxhiR|o? z%ZXe;WEY=YMdTVHyZYohBG(fc?2{Xb+(cxEPi`S{8 zL>?eg;gbi6v=9mTW~Ia? z8`hm!Ik9TPdNJ!mY>Hw1nC(Dps$oH9gNRKtY$s;B5Swn;U}i&!%`j{@vk} zB(~JB24-nu2N;%R)<|rbVQZPKBX*!+hcG*o*mA=TXLcm9gA6;G*|EgJh8@rBL}CXU zb~3Y5iA4-Mo!ObhY79G@*}24`hMmvsLSiw)E(X);!!zhoPIfsZTVdE0%&sC|tUl z!yaY!II#x9o@DkfVyg{%hS_t((uTdj>?L9u!(L(b8nLWlZ!mj{SkAC_n7v1=(XbDg zeMD@HVV^MjjM!SkzF_thu_nX5VfG!db%y=G>?dOD4f}=JZ^RBU?BC4(B(}k@zlm9b z*r7hNEM^X|!wl=dOo0W&;RbeOSi=9o?u|8Amxb$vUapcI|jr_2C{mzNIeF` z$p*51v`9Y=@{g0x6M2E?fbvWB!sLk7fY2C|B@NJR$3=?1cnv`9w=#2E&%lC(%k z2E>^LvX-<+O9sSQ2C|y8NKFRB*#@$nv`9||#5o4CqO?d+2E@4rvZl01QwGF&2C}NO zNL2>J`3ADCv`AM5#03Vjvb0E92E>I1vbMBHTL#2M2C}-eNL>cR#Rjszv`AkD#3cr@ z!n8*3~w>;afVMa zyw$*eF?@#MZ3aHa@CAmO4Sb2=D-3Tp@HK{SFucRSw-~;|@J<8YWB38XyA1q@;U^65 zHt;isUogDKz^@p7!*Gj%-!c4w;k^d_#PAn}_Zj#b!+$fp-@rc^{>|_KAKHSTZ86+x zpu?~O!v_si3_CJ>$iNaVQ|r1G16irsTB)`gsFkXgkcSQI&e^quJYpbgT3c({M-606 zYimvWn1QTmZC(502C}BLwWfW-K-RRj*0fI=s5R}e+@q%q9M0VgG5nW-BN&ci__Tpz z81BaK83XrVIF8}722Nl&k>PU&?#*yA!{-g0!f+bH7Yv-ia36**8aRvL9EL9$IFI21 zhA$hqh~W~3uNb&L!vh$;YT$tk4`TS5fd@0JVfea%F@`G`zF}Y;!<7u*G%&$1$?z=$ z8yKb;zHMNZVI#wL3|z}_9m97GJcQw)4Bs>GaE3=ReBZ#M8R{wiz`)}fp2#UbH1K4G zr!xG=z|$F?$?#(X&t`Zo!%qx6pW%fJKQ-`ThL)o8Q72E4h)M83^E+Vu%m%HG2De=Cj$pF9Lli7z~Kx-3_BY*g5fBJT?`z~7#b3}-RyVc;Bw^B9&JxPajz zhCK~j!f=0vy$n2n;eiZ$8+Z`IgBkWQu!dobVP6ARFsx(P&%l)gwNESi8<^mfNlv+g zfej4P3lh9+@DPTFG8|;!;S7&txTAqbGdz~zP6i&&@I;0?8+bCq zQyK1J;OPv{WVow=XEQvP;a~&LXLupQAqHN|@KT0D4ZNJ;6%2LX ztT6CKhBq+`8F&lB+Za|Fcss*88ICaUZiZVJjx_K-h7T|tW#EGhTNsWu@L`6JG8|*z z;|!l_F?@#MZU#Qb@CAmu8~75#R~YVL;A;%uV7RA&Z!vs_;Wz`|WB38X@dkdx z@Dqj;4E&7Y7Yz3@@GFMp3?~}+4MPeM1mq+Ge_%*4f`HuHz+V_rkRTwd4CE+*Ls5c& zoNVCVlu~L@toETR2)Y)hoMNEEDfeMG)xZv%QZbxnU`Id>Xb0qU!%8?|7fv|Cz-|mn z8O}7YJ44;|eGKfyun(u)*T8-ZcVIZnz#zjx3}+j-6T@8?&M|N>!=Vi48aSL`h~Yc~ zM=%`4aK3?K81BY!fq{E49LI2>ffE=`WVpz{y%|nsxY)oc45u+%V&Dvhdf@jna2CTk zoN|8y=P_KsaH)Zd7%pLWfPwonJb>Xc0}o_)5W@ovJeXk(!{r9X7_MM=kb!j!S27G6 zm|&P>c(8#D4ATrF24)#HGORIhEyHyTqXr(r@KA;^0}p3-Bty@@qZw-HUSZ(z3{T{g zwFaKd@KlC%2A~0r}J?y?>PrE{lvnPr1_IxqHj*7kPoS0}ICnnh!h`sF_M3sHNm~1~Qs_pm16#GXp z)p5l%r>B_i3=uP&@nWVkTkPXR#J)~W%yLc;vz<%C9OqUs*Lg(Db6ywoov+0L7biJx z53$G{A{M)Qi6!oQv7hUS{oN+9)ICKU;5Lh8?j7Pl_X)AweOnylelNluTyb!R-XhYW zLezAq644HeMXWY&bsg>z@eWUml^xy}t2+EF5=F(LzNo)Q7L63C zqN$>xXsK9Tlo08n!$qd(Y>_RxPUMR26OBdBi8VzZiM2()i6&Jd)~TRauf~W&)C{pf z9ViY}4dO_3v^YwgFOE?+ieuG-;yCq^I9`1wPEdb}6N|fvQ;K&Irxx!aPAi@zPA@)K zoKc(=XBD3y&Mv-GoKw76oLl_3IIs9^aena+;)0Gv;=+#o#6=xPiiH)_lP#|4)Jt63sX|=WX|mYZX+Lp&r-Znn z(-GpvPUnhEoo)~}b$U?T-05X;OQ$cyt)2c6x0Q4kn@fg>+e;>jJ4zOcJ4@=sT_qdD z-6dy=drGbqTT1Q|_m(^_?ko93++XsCc%XAPv9?Ypovafi%%faHEE;;dGmlMTD zT`m(Jce!1B(&Y*9X_t4zXI*|2pLbQ_i?02}mt9ARuewebUw1uFeA9Kc__ph@;=8UF ziSN7KB7W%li1@MV8{(&~--@5RIpUXYy~VHHLgKe>)#CSV`-^{fs~3NCJ5v1F?L6^U zw;RRZ-5wJEbbAH2Ilh!wF47A0kal3GbOMv48(1Ve1mdzNaHv#)vt)7LI@vLBzw8uv zL6!tQm7N2B$}Xh=*|l^R*{yWE43y53rKO%MD_tkMm!2kjlwKvvOYf0AOP`UwNvRQJ6vWOf|)+mEzC&__jm&-wAcgP*fo|HS4y(@Pv`$_K7 zy;$zreFr(X`)E0&`wTg>`*Jy~ds+_few?i6ez6R7zg1Rte^id>{-zw+{X03Thbu?- z=p)DUsFY)SOp&|wSSok#k(7J%I7;r><9s=;$0j+xM~j@$<5js=kFVs!aw#X3m&?7& zhsmn)z2)Tc#j?75rJPcJn4DUEwwzYJQBE&^K+Y(CQO+#?Ozu2g8OtL4I;TjZji&&tI;Kaxv&{x0|H)kW^#Ye%`X*BLq_Jte(f@5vRtewMYpJIcD=17y7S7`d|dOu4G} zK{C-hBkOw~FO$75k*VId$%fvK$<@8zlvO(b-)ECNq)&_7(C1ZoXrHg-VSS}Myl=TYqVF(yWZ%8zQGFN7WBRU?$Mro- zp4sD9`QtnLMxWU-JBZrSgJ)yUGjuO^_G$n=dc!w?bahZ@s*< z-|6zQepk!O`)!fU{hpOq^!rF&+3#o3x!-T1qkA=Ja{MRhB9Fe_A}aAW{-3xAcj#U2 zwRu&KdoTobmJ*%7-RNG=nQw4!1i{@H5yIb;&biIK;uiePX2Q?giL29joqS&0-tqH} mLsO_R9fl6O%e{HqnoBr$xlZBdMq2k)_cp52-ORP!{{H~eOGWnp literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaResources_fr.class b/eclipse-build/org/rapla/RaplaResources_fr.class new file mode 100644 index 0000000000000000000000000000000000000000..455d58f7fe080b8605d5afb2b5b96be6d09e59dc GIT binary patch literal 26886 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaResources_nl.class b/eclipse-build/org/rapla/RaplaResources_nl.class new file mode 100644 index 0000000000000000000000000000000000000000..86ce93ffe2f9bf3a572e69cd744236907f3266a6 GIT binary patch literal 24668 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaResources_pl.class b/eclipse-build/org/rapla/RaplaResources_pl.class new file mode 100644 index 0000000000000000000000000000000000000000..e735331209f75c4abe3a449cd0f63c131cd17b89 GIT binary patch literal 23903 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 U`H9l}yp1$6K1G@@{38AGU*@952LJ#7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/RaplaTestCase.class b/eclipse-build/org/rapla/RaplaTestCase.class new file mode 100644 index 0000000000000000000000000000000000000000..da43bb800d92a3d57f38a286a73f40c383c577bd GIT binary patch literal 4355 zcmb7H340sW6+L6i9$6XUAV`C=5E&=fmSZak0fL=Cy~tpYtspOn-BNcVjg^U|8Fe&r z9B2z|p>4WD_r1`C?j;Ga9Na=TXq)cq&uM$!%xJav+$P_rS>C;O?mhS1^PX?~`;}J# z9K}CnG)dTHTIq}*k&8f+AT0~t@Gp14X4c96XbByV>Vk+Lqh?C;<7NqMwwBFBY{Jk63AZR{LqI}%j8#q*vS&4GMm?L+L=I+B z&CIEmE}p%YttY&wJ9{>#*gF?MGddK!1-oSIk#JZbwgn6XFmGlw7mWaRW1sN9of-E` z^v?Ma;+;rVEZw1?3kTSnv}TW<(=#d8OTq(b9xXBnKE-4$#T1;f^}T68t3P~*w@HQI5<+R;9VdV{w34Os zINL$FDQ$QfAC&P-ja;P*dc-!(%rbYisAZYf7)vwL3OohNS(tTG=F=(9pTKgSKN&a=_T3c3A)f-mArOpmaz*PJn? zC*kHgcd-d|<0}fjDvaA{OhC)_etg}_!;#tm$@RQ~wAin{Nqj1ub~rdmK9y+|zzg`c z$oV^tp4OQ**oB4Ce3uGRju0};YNbdGh|hmt!4L354x^gSYnDA_+EaxL$7>5UD~UKI zsx4VT!xMlK>_m%bS5<$RkceqaX-jG$!)9bNB8jUCp29BfBw{=>I(3#qv7#s0*gI-x z$61Wj*if-0thQktugJJgDpa81A%wAN%@u5j1BWjWk43lPXLwD%Al@Y_=5aEB%jiZ86UBRVzlugwdGcOnc{0V=N@n;El38y#H57NLDz(|>K?k4$H z{EefU((^e}jB3r%t%^s1X|rG@HCOzDPS!%x#db3w_AXy1``pZTNnKnK z-+M0HSHx}M4eXw8DPnJM{~9{4;UHgh&lk~q4SgHvpASZgII@PLr^Uk+1ocr@&WrWnX?iizyt`V&J6^lY3_D?= zz}>yssbzqb13k>RixnK?Y8V6P!+ki!!&pDg@Tq_Zx3I%_mVcaxdc(w#)nO6u?ZZT z<~4?VUBfr{?uB__P{g;cAs>8^_xW{vuQF11auC6Dwhxbxh%p?&BsaEJjFgd ziYyXNJudx>a=#3(UtRS55q`|tj^HGI!nCinya3@t643RuO;gMSQ(J;$saX z{szC@D&p_Fh&SpZstqIlp#g*sd%SBGt$f2BfOY&)K;HG|do%Nfyb$a6{XZp{_wIJ? zS$=1^ck;{s-uoaCP4QJ2q?m>#Q(bkbNKZUc*J`EKS*bQFoiWJI6e@0sTN!DZ6G>Z4 z<$8oYfGONm=$h7(ICDvdSclcXWOPP4B2nvLrctiW_RG4)c+5&<=Ib8lTM|!pMB-Sb zvgxGAx=3AbCKj)2((j~oW-JlQ%wifg!ETO65?ytznN%#%)i7}xlfN+;waUmx6(*IF z$yCu4OIR(v-K(*=$ZC6HnQd7l6_aP@r9ZPKmS!66qOZUaEbLE2x(h_PS4CTQB$mL~ z2`jy53Q~wEm;v{il96Z`fh75{uSxsS{!G49FUIaaVPexsz1Uh^X9^3gPo~z^3B#9K z>E3vzp^U;b#-PzmRhlV!{kAo!o6-crL!4ybanPYpH z%I2NYVfAEU$wbO{$}@!j|bK9V(kKMb5&3xsgmn8V)n5oz0a2JG~kVI-F_m-HDvj8;eJ+R4E-nvkf{DA}CDcrN$=BpQ6v7BX?2d|qTy z6E#B;k)9qa0ZG)l=gFydpLrbmp&Cq!ON-@^%8P(jliFlN zFq5=bD5qs~oI%TB&jmhsGt{JZTA>X!xwaQVF50&Ty$&l%LFn-&1*oKyRte8fVA{{M zmIi<#Gzd}zd#X!W-N}qqYr}=i(qWQ8!5~4y18b7qRw_tc_!#Z&>`aSjVkVtLYk^al zWaFAhYIZ6W*#OB+n7FdB97}hbl%OOA#FJfOw|jf=du8Lq6=ifXL2Xkx4R;}tNg3+3 zb#boM8G(rcOLM$-^=lAv*PB#IWkCWBX4;lcZD&l72&fQA%}uUP2wA6@bh>Ch0I)0B zn-Q}()1*^rtTdi&(mC`E*f=CSJ1!8J5zB{JPr|lbHUKD%WnxykE}9fns&jRQ@eC6q z2Tu}R7LWz_91+_L()rk9F`sLv$gobCLP%KaT?3dV78%~|i@Lftl+#A~wm}y& z9as?d9tN0n34MoYh?sdil1|4uW7sUHWIDK?MK=JOV;z|dJr>l*Jp_wiMwc7(T^N~&}3^jnsgK03_SweE)y7H8t zl|>p1;I)9AKZNu(glM&vmu0k>ZWHgSHS-RWeoQ~HRb+NgPZBOjNM~B;P?8_lVAD}} zc4PPM8sVBstI%C0ZK17LCK8Rh+C=~Nr2Peg5FN;#x0!SgZO5L)62Y(iJ%`T|E85@; z*=bT%4AV$ioe;npLEQUHx}P3^J$A+tQJ1LNCjEkb2{^T) zF-Uoad%Jld=J@9&8mCPreA1++=+}-=3#c}bPzybE$mc|t2rpC$A?A3mMIAJB^9}+P z$bgN>K#Vq02Y1Ai2`GgNCSCSfPP+ujUfd&+x$ssj^d*yCrdMpEo}EFMy1EyJEIz&; z)OJBqzJEiIeh-GHlF4q7z#mL{o!$V~02D6rn2z+YeQ!;2t>T&i-s(;Ivq67isu=*b z^0W!une-R>D^RF$cH6w87B6iFTzbmDwQA9LsPQU#+oX5sZ_qxtntUtM3Qzrt_B+*p z`_0b{uD%DsfUB8Wco?fInc5(Pd|=Xt^mix$*n2Dt;iy!yw^N_N zH%-k5Okz#&_PtI-*brov7(Y?QJ`Nb{M+ogfWS?;+m#~2aL4&>E0B$B11p+oUajD5= zTrRi*=+4=I4s$)0_LQs*#5~C4!CZm3&W=Wsy(vj@_8f}1>=BaL#6wK3)bR!8C=M22 z-aORgVLTkshe)C*lwg`Npe7cN0MS7n0jcIZx2Ct8NAkV~@58i@$L@1VWb%HD+)zRR z=M_Ragy#LAMsAqiVc6u+JO=E>U>Cb*eHC!Xj~A`xu_hlV5lRVWhAP4j@_6_RHl%SP zVkVx%bda|yddgMDN-|B2OjEmC^y0)SF7N1yUOwhJlMj+SL^COGH6r6FCLh965!m;U z@%&gkW2Kl59hk^sVcG*5%6U4^F!)fWLp-GC-lNxWlMmBo4m+@&>(bu1B~vz-Jd=^6 z8kwY%tjy>~(gQ64Ij!O&kSy?#Oedls@fFBy=*KnnO(@{uc#g@9B8DK8LdT#%o`;+; zr;_1F&f>#5Q4Yt_;Y2bM*5OxFtU=O#ULXp9l=v_YEp;hC{{a(hZ4nSRudwNGEQ)Ys zL%2g{JJE2Y6Oz}c|QWAg<_t?P-iJvy{a+8k}Agqv#cAb@{Rb;lp#x@9H@JKcOb1)mY9ba79nG$ zd|sGnwK|fCs9lLf@hp--d|QG{T|>sSfhPB|cv(jTq+)U8vT$s}vqZB7;$F za20`f3++W^&olXa{w5rawq@Hg;G{-*qfRa*SSEmXfyoyN6qW)C7p4UUT>?1-M(NU< zMmr|o$7|otq!3eTw%E79C>@L`=;Lk$tbEPU;LCO^h&qNHaeZV2IASep1Zp>(@M!m)sE8_dVcITB`hAoiQsO zt?fy!w^FEdCo;0m4wH8ZQKeXCNhAe}mAChrd>`KrJh34@H=6{LUKW*W*U{^PfZ(~7 zRHdy%$A)m;e8TB9$=-N0ye6{F3a_@TL^va75eacAKQs9uaW($VNGxvf&w)4vd(5Lq zVb=VlfZ?>8m5$w)6*lQ;NU=EP^ma`Xkvw7YFLYK62kMe%kbec`X@e9+LE(kz^B|+- zV2G|kPG$TsKV$N<{G6jsx$WwJdjx!Nq4?F9jK@*bM=i3Ulz+p&HTZ?1_@Q+}I%9R4 zyo*sI@S%pAKS_xt>z3GuGbt<5-B89a@hb+uoI4OHZZ`Q<{yiwv$2su?CUL7u9$bR_ z2cSxxk)SsmOu*l;L6Oi^trfO#rjT^3=cxWM_IaAmp9CPwZFICAey&*3{ zSdR&&+6tpNINY0m(9+geS0a+>l_J~`-n7l^OWQ1`i0D30nYf~y-{E%+M)hE*m$XcN zkKczD#NZ(!DEmo}=9cS1=RLyv5BVd5VMCRLd2+2Lf6Peg{Rw^Yl&|)?B1crwYWbhS z?@uLsb5SqH5UmI(VMbPi(EA~OX7a!JKM?bpNV-K&iPJi8-Ut4HKz-twKcj>ooO8-a zp8WLW6ck#d*eZoiJAVl(1;$H6oUr1x(}N26|6s=u9KZ^y5)=qx;`&t3RHdp6BqD0G zUEiDu3%xWU>cY}OjOFbUOO>ex8)^{Ly1?UtKBi4oq4olm^O~2mwV%*DdkMDT+A|Ix zCC5>frm9jyomzmL_Mw4krdyGut0$tuK00Gvz0d`ia-BXal)gcQ%-_G>vewE1BTN-i zBS9tb#6C{MsdOS5Nj2kuInI2nCw%rZ^;dJrUu~32?TXT+{sRUVdv(#@V+Ich?`NxD zg5!;DPByxQp+&o|srFO*+x5*QsJUBkWgSxf=%=($Oo(elgQ3FSrObYZ1QjYLRoLxh zeaB&P8w?0RCMtt!lp1TQ1JyVHNl&l+l4+XT%5&`YV3yXPJam`S5o&^|CMwiR#9QZ5 zj?qOapV#4mXl9M@2gMQ`uz0MbQ-Lob1UH}HCsduO4idLB$WCTkl9`s?cwDwU#Z-sn zGJMSoLrr69@L0Q;t^JF+TuoJnnrepBJoNr`jwO&&Z>k10Q^Gyu1g)`C;T!;q3qb~- zB~%`Plv|;+;h%txC* z{i~TI_LH_Gbg-gu#9mS>=3E|%XQ%~+T82{XfI5@gIg)wtORf}QVWMq~HNRH^ z2JO+J3lq5=<3Liin`(tx3102dA?kh=a@nB1Zm3iDe6&_LuQb(Zf&x_%m>}GQBTsbAOUR9g zs7!T+sm@eqAr^%)btQW~$re%tZW&ePkC@KL%Yb$#9oG!3%dLdlS*oL4^!G*u9}v zzb#W+)ZK>Kn%jU5l5`Cof#^1M59At2+gNZQiWxd$bw~W}G{Oc0wL@hMwG$Rx2ydlD z(t=}z(EChvzrxjla@!O%tpjJ{D^SBzKQ-0Q)I%5wTXu>^u+b(@h0$@q?$$fdGg1>Q z^K(-@q8@buFe}v^!z~;fu;`;UZwF`}4J^s`1t#uNkDKZV^$T#;-e{p!Ci3!Uj*b^P zN~(m3er2jB)l&cugyMxpRG0Q>&xM{aw5QdxhI+>Pw6o8$rg}~)CUUDrOGk$P##Aqe z6%EGA*&PT+(@oYoD=y^iGS!RfcM>^8qlHEPhfOY%$mV5Jy&{-aZpUBqarXk{ie2jW zrg}~N0RRD+FNIy<=BOw0?6?mxN{OxRxZ2_=t9*e6Q+97~v`?q|aJJ5o>bNf_9Yei= z{K$3!`aq)q(6XbqO!c;U$5tcl*X>)pK-D6-?N+08uKJd%ch&obdJpyF0tS0_HPr{| zLy6Opw#yoZ`zj0FcBx@3NEe77`q)(eklQPAXb4%QVVF`qL(4x+^{HG8DzUW{eh%?K z3F^>b3+f7vtHTWrT>wg>>~tuuu&B>X^Wh)O0^@1Vh3@JZ2L_*tgk9)dZh z(hxikw|h|~RpAN!X{es56fJu@b6t;B{b(CmIil%4;&#k9vbknE?X!F{1zT#j)2J=z zX=1*ixXbO+>+BEeh-P5+L-D2_tuxVjIOd*3Av#j8J;|Px4y1AD>%)5E_1Y#4rU{@& z;mJ=EX%gD1(F3%8fk}J@)fiN3U`;kC>_;D5utx8L(8rIr2Wt*If;}?cq$cg4Lndvf zX_N3{#(gxieJjn{NsT+`sLBP~>1e!d!LRMKG)u=S+&4So9$M+@`!%QUiA9}O-9xJ< zZKKtd(aO&4v?fb&A1$A>lX~uuuhD3-OLDgKyYCa@&6ivqOskD%$(b3e3-|e&r zS9+UpA-7p`MI;ES9f|nm%6Ol>2{)t{7nUl~FOG3dfl8kis$VWpqgB+R7Qbbnukw_; z@XOW-duW?$s4qVhcXa!#exx(WU|~R(zK(=u2c1zMWiaGLbR2fujzw3v<{j+Ji{m$s zc@J~uEw|@Ai)ndbQd@Dq1_fT_ny@@S;kkV$0zIIe$4(XBjoXMQN@k*fl$Dn9o+Cu$TCC{Ev{Zn^>Y$8U!& z-UkhQiqiBV_0sQYJ-tn*&S+f(L(f8A7SXNr9IV%e zIaks1c<0BA)9E+(Bv$!CUt#&)Lm%LnTIbqtQwjF-TVXw75aE=xRlb^~*Az9&=dJX| zEWM?uMIOLt&9zPS{@TiS?P*XO&(cRes;&GqOaD?-n=r51BC!JN+o1tW>0a zc(nH@;s@b8N>P1D<)@*NEFZwMlgDA-@-RUjs%0JQGgMOfZk8u2{VI@UIHh_cWY`q* zG#|DQGO}DR8=9q{P4&T0(B2f5m<@g7k@cljJlB~o>uiVTWA4(d{MyM!Nh37O@DPlP z|JZ>;cA$!n4h3qrbJI><3JO5jvc3!_sP}_G2-r*DSw`wvUlJ;*;;&`-1ZQ-K!(5II z%wS=I8>mBuo~ldHaVjhGyAvz5n>vYD#zCehEEF-+={OLGRJ!^bu~^E8L73gsbu+=xQEI*YLq~EziZ3_h!0* z+v!GLOE>WuxGZoz-NHYh&3q58q(4GG;-~30ewl9PH|Y+3pMK1r(@)eOx=W3qEouyH zRkgHD9ZWmbV%nkFD62Z?UX`HxR4+ZCE%avb!D^jjp{6>C*K!09xI6i$uTeVI5LH#B^8La{A;bN3Wl2iifkK;6F$N>HIdIauc z(0K0UbyN!axAJcuCC&*Ym3M$QdYFbH>J6XPZu~|m*q3X2*$~9TPIse@OyV02|U2(wEJpX+x^w8 zSw2@$PzLD91Zo1i5BZnRv2@lCmlC9H9Wps!)2KVToPBP@Ia zUu*j#oYR|#i2hvICoOgM33~WC?aJ^;J1_~Mg~#H`O7Xq6>qW8A`$%V>^Joy?z&B!_ z5|Rxj{x2;tXp_Oy4ZaB~esfy1$tA9 z&b#Y5TulJ(&8_AIMH!=Wg?Ffe{)X>nzDqUqKBDsvXaO#SFQvcJYS_H^b~`5Ta2QfS zZ5l6d7?1A*iV7%HTPn;@iau%f5JI6U_G~S-uPY8ynoF zKefOKZ^vmzma{gtgA3S96+f_(f4Z3h^?u1Orqg@~;9*C&_I^G=PVi3()2E>OU+D2~ zWETHHO#L~8{Do^jP0oIX({z3WD2197)!;hII?y_a#_*%~Wak(m$uSm^ANXYONc(^J z_%PyTeys0y`5EYgq+!qJrHPF;Rq-#ItF!#14mD~JX-I26SgEbzr*t%uXOHNAjxqHC zL@yHHA#ABG#3wdWWJG>cj;Y0?Z71unQV_$%%Q|tR+xh8wV=F%&GPd*YBq6He*N_b% zqmwLXQpl*;!LP$x3)e5BTktii9M?76z^e^n9}L`&@Aw9w4J9;{gLDL!(jqRSW7(wR z;Ws(~DyMS=UBG+cDs3fQ$5ohVC_LOSx|4?k&i1C~063y`ojQYk-jUKE#KPjGaCeg) zh7TMDDOF>fcpo3W(>h$s&<`1xX&DCKsh2tLE})~GcRz$=C-R?Qns?Fx{Ad0P07r~; zlt}niDiI08QYDf6*d^y`e0Lm|O7Qcq=&blHjaPR&N?ik?zAdrgW*Q-g^#KEXYg=j| z;!nOu0skHH@?T6>fAOa84vhEfWO%q31cyQR7_e+Ch4Fb3k9R3(jk9%vS_-L>qt!TD zAC7H)E(ip0A)Vmcy}m#%+0fpyp>hgnm3;>rf@A)W09p`KUxoEmgV%@-_$pB&$GbLR zTL>3*NSzgP&FNy5V%tRXI#+1%>6UtbjW6$#f!GDyRsrC4Z7Y5_K(1ee`~Y%g_{ldt zVB>gAYki4Kzg3lI)e!gsL!LrLs02{YdSQe|RHcRiANDSzdhMt6d$msvS=6Zd(okuY z8jX-v9pJ>@rFMw8jaFvWc*O3}EO%l4GK{s~gvzq28gI%&zZFGpVlTh}Y(OpPmAg&r*JgbFVCgUDX9WCI4 zpy&rvD^HxfTp`c!V!-|q`0}NECEF!}J4A2!Do0~Y zzDPA{W356AH5Xwak}N(+&C`&&fEVK;&N|q^IXq0wS4Y7THsYRmS}lNKUQM5?h3aS+ z=DqZ)TBMqQq|ef0s#&$b+kOVfkf5;)fO3&qjCbX*oAqi5`kCNEOdW$+24RQCtEE_X zFt4P&RV!Ajz|%-={1w_lP=@+~Q-r?@p-o<#vp_o=s?AWx8fvPcMj3pf{FKjaaNip9 z_kjs5?`uNb4HJ^+Wt-&tc?I3BjvK0ukL*yZwCl@~t{+HqHLyEZ5kS0yf&zj+713#= zwBw!RiSlWu>c}c6sZMBXnJYi_Gy%VKmVenI6F^v5rA~tGO!71YSbQ!}rkm3#v9DuVLIYDmKZ2zO#+7v0S#YxJ^9 z0oxp17(v&ngi2zCF?5;gfh-lRq;_>OWbDJ&z3a7%{fI^n&@zVe02ehNZ*c&5vq2m4 zG7%wM0>`UT9zys8Dk88tBgYCs3mp(Bc67iQihGusT&)h0o&q3Y_L>RPN)R3lmi z7eX+b;d~0*(+2$Ai?7oRJ`LI6>4^W%fHyxAe{$d~I)%^1x9QJ88SER#U(ZEudLBK_ z=L2BAiS*$@6jm<6x8W}4v4D$e2<~9qSU;36*NS2%6f+z}*`G(Mo3x@#<}!6NK1p18 zvsM`&wbA+N7WI9A#($_mrxrdq%_{W+1loRR!>xU_K}~@!NZzt5SE=AX_lt!Tmnqtt~c`PpXt1m$twL@2btJ?Z_e3ECgWcUX%$2t}#GoiiCkM z%ufHLZ1*^P3hk0|4&pqAGErCcU_e&EYv>eWO!QTcNmT-mILeV|tq*}&^=l|n3DoL& z{FYQv{Z@bQnE565f?4&d-jmE|N0UOKq?InJoK7!ofo0nGumVB0;C+ZUA#(X19mH4D z9KMDY^R@V!8rS2GMO+7rxB-FQjVNv0ME4-;d5mvCe)xU*3(6Yr^R4tLF11(STKfS= z9cuYDe1q+FcpL3Wkb-EzIjRxjgEZb@c{RV-Aq|kJ_J{3U!cTqo1y)+tr&$ zLjrg{6=$dt=n0xklxV0%4haArfb>5L=GT59yD7XP8S#5j`+zyZY-8 zVtsTDu52y|8z8W3NX4QXe z*%Xp78>k_!BICC=V;>u6>B7K^rCX4ltBirzQU||zIuHf>vp$HjK3L`R2SULIclzMM zbHZJX!VmF72$3G9k^CrfvB&6eejK6U6ZkUglhnaa!90JBzpnB${?y5{K( z{|0~I;RTrKZ}Ii1UGx^eh%a^j4x!;oT#38;qxcn`gsb{f`8AE+=jsq)nxh0|T&)Gp zIKg_yR|=$-{A`?73?I(;hHAy|qh7kzSB6#}&K<_s-&OZq9(02 k0R(yzwc3;*UpxSn*JqK+OrmmMxzB{cuuqP#lyC6=0V%M)761SM literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/ServletTestBase.class b/eclipse-build/org/rapla/ServletTestBase.class new file mode 100644 index 0000000000000000000000000000000000000000..c6c997a75e3f825eda0bbc12821ca7f8fa521e12 GIT binary patch literal 3779 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 Hh`;?8M~A~7 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/SunBugsTest.class b/eclipse-build/org/rapla/SunBugsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..112288a4210b66d6f60b6932e7b63ff81b989de2 GIT binary patch literal 981 zcmZva+j7!S6o&szfwUo7q_m|dHJ+2klD6UzrWaCmm_ctqobjf!fh~rnNzFlhExo86 zFMI$W%5f#67DjH8z1H6AU*9_X{`2z}fIT!Mq!?CRZ)AG>#O7uvbe@MJzbpJeLYkp8 z4jn5nKY09Dd~v-aGrDPVUod1F7G3RAxYi!?&)l@RGcr4YXE~#~-eX8N-Jy`NfF%VP zWEqy*mLuMT$9>^-dEX|DLfaj1yT?5%vJ+=I_-OeI>+QK%brN=nCJO#9EkiMg0d3(7 zxksh!9@Y-`7#1|Ww}=&n%&XU3V@Jj+)+MZwNURYCmTh*eWAWZ~gn|+_7;+;KoVysb zc|}eDW`gTWxQdE|YYh1d>9|Z1-o$l=)Z5NK_&9cQTbFSIwl_={|u5-aS-8}^wbZU<;0_u&{YU#ZQ!%%P^+YD0D147cKMGkl% z>WeTLD%4|Dd_8e}F;p!_9S@Jx-D<76r}jm_BduM97VQD$AT64m*3w%t7#=EkgvSgD z_kH07FFu9bj;21R&k+^H)27gT=as@Bcihk$h?iEhRr#qcu0}&33W}$V2U2vRWu&h} z);`%O`e(O{A6Wbr-^=usWA6&REFwqt+T;}!Tq29!<1&^>gL2_Yq7@_dP$ZzkUbs7h50YjxK67+_2wya4R^@S$5}A2Ko;dA zi$%g9l~_u!eo_UMV(vHOUaD7EY5m@u%FP^k+O_&8XzFLE$^>h*`UFMBCMZcm{y#!f zD5#RnC^&1&WSLjr|JyG)E5sK#m@+LOgLS$bMS3<+rjhSs6HidWF%9qqb>cO)F`^Mk zUDcRzqALS|N7yAjIlRIi?NWr&A(UOJQK9?-=C84%As4?*R&26tljWPT6;(<|q4o=% C8^_uJ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/bootstrap/RaplaLoader.class b/eclipse-build/org/rapla/bootstrap/RaplaLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..4f5daa13deb606a237b6ee299b2ccb5b1c2e6824 GIT binary patch literal 4440 zcma)9`+F2u8GcXpGRZRBk|uPyv{NpU%O(pcV9C-z2+$_o0Fn?)X_3ihNCq}L>FflO zR$DLFiub#vsI|3SreY^6p9*Z1?rR*?)My;+tF}Gd1KPE^XV?vHK((7(MzBXH5yh4B-Jss>l+_% z&R7Neam%enQb42_~>BthG0(@kJI-l$O+zmsS;RGM*eqHET5^98 zS!rm*b|tHr^PDq2k+(d{|E%|=E4fGR)_7%-39JdpEMOod<4lAyyv!FXBSrAJ6J%J} zBx(<#==aRrnLcwOxRZ$q-X`y8(HymE@Gu_HaJ({^(?!o3*YPM$5N~Ia0R$e?%wc(! z4q4`SrWz*&cJ)seJaekUFak7;ygkgwx2F8DJ=NCMW{jJ5p*wFDi-zfrZk4~<4X!6J zj1djF@^!26tUMom6 zkSPhgs0K5>&DcL>O42g1ZD~eeki+9nA(hM97UN<)Z&S}oTOU(vsHstnvjSVB3C2o) zqyfS#gG~F!6~gM%S0e$h#*{$X@ZBsf)I0|<9h@AOrj;#LBbgq7hKfrZB89+Pb-Wqz z1Udesj;HW;o?*pgaM8vdNgIK8>UbB<3&d2?1+urPSBtOq;+1e6nR9`5=rhZ6-EFpc z+ZF8!<~U2xT%1Zqq9UsO==(^_| zJ;GZ)S2cZ^o=gHC!zVO+yz*?1j!)uK!LjV3W7&*`ivp`uISZ^QLiyc70+;X^4WFjR z^94`s>-a357g#3Cxx7xkJRj0>F<138v_=1(#S8KUeNmvPoW#InCIoT#jLh0g_@ag{ zR8*{iG1j9I9hdPXmb=`f>yjt_;=;GoU#0Pv@D&{|s0~H`Lr(!re32&=E~WOW1f3y>e{4h`n-b>4-&k z#4lq*GFBgNFCksaU)wHXMJib6D53M%`M9W$Cu28Wxb?S`Jf#+?ckgqzo=-)tV_gaR zUqjC;^dzF<*r9wjP)z{pu%2DvM*eKVHf%-)jp$;R{3dq9CpfpU1x3m{&RrSzgMLJK z2w8qHHuP~uZsJKC#35o(NBP4%AEC}eID&qnkYVRLfL=n}i548iAfZ0S)2k8tHySk5 zX=u2KW)15!^oX@p|0043`8ZLtMDS(mmH&=k#Zc{AN-#N=Fe<<7imx;NSM7K(I>Go@ zg;X(Eoeaiv9Ou*Q!?Tkibug_N!m|r&aX-W9L<+kJ#2&76VK0Ar(ajL|@d@3p;E`_D zV486Gj{j4!3V5LTM*Kx2X7NOH7H?~gv}c>6?S0L$_JiCQxsL4}(a4V2Wvom_>toIJ zvG~dM{_`8;Rh( z96RaW0UTEjcJc(>!Mm9`@Wc+4NmefYMJzK}#nWwghO-EDY{Gje7v(5*4l)>-wKa$= zy~W(cHC)iJz5M?Iugp?9!;Zm^UhEAnz=`ITS-e+r{Kj>>KOl93ny%@8O!_&b48+gh1Q^`b~ON}la~=N zNu6QNatv;SA>>HqF=p>HgFeH&jxmqpB(y`=CP>f6Fa(!fy{CYBgpq((piJ}=0nz1} zghyujgn}nRI}a&(M`^7aCCm`0THF;7eGlie_zr;|pw3ruji^W%HzIly^(4H8?~2-6 zXhO6MB{97Kq2X$R*MP4mt(8m5Rdperp|%)xG&Q%BaQ$Fw?GK~ZacL-$D&a@{CHzdn zBe)dd62E_WY@Xh=G!INs!8Eh_I9c+93V55ZP`OG0x+BAs&^9TyRPn?H{2qTG$Vs~M PNBoJJ1pZ8kD*WX?j5Kd3 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/bootstrap/RaplaServerAsServiceLoader.class b/eclipse-build/org/rapla/bootstrap/RaplaServerAsServiceLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..0c934435a9c1bc92c47641b9d6b77dd746f2fe97 GIT binary patch literal 1011 zcmb7D-A)rh6#k~&vfCepE`p+!0)n`PeP_WxgYVQ@4pBKqH7pt9?3+S#|-&Kv%_HRr#(?Z9>od@ zm|>U=WFiiRaVXSl9!7$}4bm=;I$X)j|8r=WL#Y{dg8yT+M~E?(3BzLJeQ?UIZIn#< zd(Do6Dnr@xeEJ5$n302d;u^`&!2-hy!Fh42Ovp#xr#SN7#?gM7e31R2;zp*4gR2bH ztgy#F8t+i>UL>@3utdm44XM`~xM`zy=5g91ZA4tbGU|k`g?XvcBcaTQ;Xz}X=JZK( z`pCxWS&VUu4sJ0l{MFy2%dD3YHgLzrZHD@Vk2;xc1r0PA3fgc*BMttE;xxl^2SCrn zRi8#Xe@>Xe4!IUjrOMV~YJ3##Nfk&9~$Yn||zHmFDyhp|Wul`XZ?q3VifGFz?s z#rx}J)v*d1KK%qhjx1VGk~VohX-2xR`4!HWakxY>3j-F)BrB5y(wE39;xcCGB)j~X zG76+O+_}JYpSxEM+(q}=39i4fzGLNG-d$@yw6?ZeOV$b2Pm3>)FFV=4LO>;wWmKtr wjR4lEdh+nwEzGB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/bootstrap/RaplaServerLoader.class b/eclipse-build/org/rapla/bootstrap/RaplaServerLoader.class new file mode 100644 index 0000000000000000000000000000000000000000..6ad07fd23e481913dda0fda49769bb3beeef07b9 GIT binary patch literal 972 zcma)5+fEZf82+Z+cDDzGE?Pk=1*Fmf-Bt9$i17yF)r!WNs_|;J9m_O(AhT1nPvNt8 zB{9JV@S%+VwkCuuCfxkz`Tpbl{`2z}fIU1ikz;7ZYUC<@9B|i2ODrTP&gxuTMV@n(&1mUb0qjM5J_TT zg>q^&q2})3u8GElY4oOv7GV{uXfjk1q2H+ZSSUSZc+$=mn6-4WCKKxybIh8vaF2#M z>&%_ew2LxY*fMdSq50qW&DU5(8yy-=qPe2&c~>efTic~WrvY&_qAf06;$|>?o`@Gx zr5BJ{8M%j2c`~7*N`rtWNyI}smJ%UOLJ?_#E%)My8i!5AZbptt) z=md$Hq`AZy@xt~GSl?&vGSSox7^o1f&I5>FBdvt%SRhOK_!~tOh_~!T&$eILHxBK( zy?lz>?~OC8eazb%y{E>`Zg<5v#pXHq>g=(V{su}^CR#y_;2V@+li<^&kLSSH#tvzD iY+x5%N?Sw|4oNwB)u8ITp< zrrLgxG}8)EQp_ZqiZ#yv7xb#nrc^jcu1x5N&6Z+vg>L^-azSiTS(7i02Gan$WIT$$ z>Qq*%_~VGiiVu3fpWqI-h@ZLaY!saofi&h2DR8tk==TKJF+q%1SJ^ zkn}GzxJqOraSkSS!ENkqNGtfMl=`)?Zj+bBW_oUHVoH)~%`z#=T$WsVI4RETOdlI} zf&Gma9yu^P1lPkK0@P^ngp@wLm|9UchTjoVV99%qcu#O%0F#0ydnj%>V!Z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/ClientService.class b/eclipse-build/org/rapla/client/ClientService.class new file mode 100644 index 0000000000000000000000000000000000000000..ab152fa2df9a42990d505215744a83e9da5563e6 GIT binary patch literal 814 zcmZuvO>fgc5Pcg8PSWqt1_HEDD3BmwOI(YPDl0{i5~qqw4qU2@vkhCE-DtfD;%6Zw z4jlLa{3yh%8)Ojm!B20#cIM6e{Pq0@fLD0op~SGS%_J~6hgQ}Icgj{#4tTuA#lh%Gmkk5Z~s zX4orUD`G>fESE|chSj(o$DMw3-a9^JsCA2nV{4?E95Jj@cxJh>L!Qn>8S4x?RMpRC z@MDo>QmY=HF>LgXJJEUA@16Fec63(87DN3{sNbU}Lp_~oMME>J4Eo(RL-{qSprn1n zaHH88l0DR8QAHhhJ=|f~EIJBPo@Hxj;2wiF5jLXPsh4K!|E?=wc(8_TRH;IjMvdmv zkuYaY7dNI(csk@pI=(d4`FK2VYq?rSS7uh^61AG$Ld50Dt_eJH%{Ppg>V>$*%}}A1 zPk6$|)WHEYT@<~@t;;*O3L)JqG8@d5q9x?gyl1EyL5nc_L9(jl^Xko-LJU+ vg-8i|^sf?v(#qJyer|O){1A`e@L-9L@g(Pmc$(ugD((Ew9a8aTp4s{ha7oFI literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/RaplaClientListener.class b/eclipse-build/org/rapla/client/RaplaClientListener.class new file mode 100644 index 0000000000000000000000000000000000000000..60eafd291d244d003cf42fbbcea1fe82471d412c GIT binary patch literal 220 zcmX^0Z`VEs1_mPr9(D#MMh2DqqICVD#Dbhe{p6g?)Vvb?AP~nH%=XDFE=kQxEn;V2 zVPp`Tn*Y{7#N=+_dWZ;Ep2`))2DoIUYWMJ0N3}a;AfrvWifCP7U*6E24sHY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/RaplaClientListenerAdapter.class b/eclipse-build/org/rapla/client/RaplaClientListenerAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..da1cf1015dfa507c18fa2ef13c9038ae2602a713 GIT binary patch literal 630 zcma)&!AiqG5QhJ0(?)A*wbt632p+0M1A-?-C`cXr@FNjV{QF=kL*t@MI9}&Bgz~kDmAN4l+b2VU(@Vy(f+Ds&xY!`n`YM)p z^XEY7M-fDlQ12(9h=xKds~1hjJgJm$)?deU@%Sr3HJ@-`gf?; zU8@Ca*K+yfgTKSy;d0-}q)cg+G!L0`&zy7bKKt%-=I?)h{{z4@cGGAP829{&>C37k zP0O*B8=AHoD&LikS(I+2CM&A2>v@6lho{m=30!_CAIk$X*tgw^Ij?qP%?XQk5Ehi< ztSYyxeB}%DGQpNkN%?{8x$BGb0%A#^yWqJ&DBZ9motkPR4*e4X?cuH+3|}Lj;u{0X z3-mme&Txdj=vmTH0v8kcJHFgg`=0;ET-62ELzvZ}v+Sws?up~Py{hMug1|i3bGB=4 z*-_>q!{#EBiS0LR*A8a|ei}<0a|&dS^U*_l2xJ*Uq9n4y2 zQ<%|Rr*Wm>jW$^eeM+(uqsXQ)CXjt&AsNVFTp(?EH8=F1XlkOv65Hl8xP(c~=v9Hy zdO3CM^<$IO#GY)a3)e86#+1PMV=PT2VBkZ1B+#j8jD`MyCpl#L$vS@jl6F()dhZ=wy*|HQQnTcHjodDA!xN3$yqljn7}@vvIY}JH@~) z%+;%@b8(C-38D$E42Cgp;5HVBfL&TsD?2BWW34nzp21yxMT-K1O|B?g>cE$rLl-ib z!LosSSYb=cYL!!ql5dvrnhs)$@*Vg}psVVu9nL$~Qi0xc&AG)ni;gU)mhD2dszXX6#^1IqV_DO2npsVR0Pa zmBE5%)!5J7YoW9rEz4@$=9x9G=38pP)`MW6A)k2AU)8$c#JKHRju)_}mQ}dxl{K@x zjQjP`C#%xhRVE`H&oz%l?Rb@n^4X&L@js)FAA(RFgn2!ij78T~e!-DJpaRmunZ>U{ z3TM!UcCOM~wVw?lhWP?B8}tqJ<)7nb3w}f42zUCH4pEG}_aiS?hgeSDS;I}*x3G!=Wi^j=wnYgG_y%{dNuNeNTSpe7CPu#9h$`7)%(qdE vTlfy&M~rUq{SOg0TlkSy8zlEgp=D&8@3(2Uz(P6ljY6S9E5qG1GyMGr@qIO~ literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/LanguageChooser.class b/eclipse-build/org/rapla/client/internal/LanguageChooser.class new file mode 100644 index 0000000000000000000000000000000000000000..7c885de3909ab9529a9609a3aa032655dfa7dc28 GIT binary patch literal 2885 zcmb7G`*#yn5dLnOW}9>oECmgs1+0*ykF_X>4XAA_5(q7(HCS7eO>#-M-RzCK8))$X zzWH;MBQ400!_WRv9_Q|(U1CeM=X76p?#wse%zQV0{r$%i04H%zL5v|Q?1pCREmPNO zrok;&Gc1?emTqb#-D6>|%w7qK8b8!}Iv zH7vt@kKszjGv6gU%8HWA@9sHUVMtA_)_BV`gykrBkpS(8XVZ`&UJ!MjLKpf~?7;zs zu1vO)0x_cEWuzJQaF14rgfeCr{Xf97l_a@(MMW=E1+S7$X$OIXwRq&1>>)NATduh?boh_+qh zj&z`@coSn(cfHl(R-IvFJ5T=#9lBuW2MZq6K*-u3kNu*?qODamZO!XmyiJQ7%N(Bg|#F2H& zE=2O!tn3UvR&XT@=uh;T zvW`-5WrtLB+mP?U$GE#>P-%yv$ew?g_^mFLG~D*zWS6wXAhiiM1&r>(0%h(QhAn?I zg0tgT2q>m@lN~5eKgw%=v^Ro=CG{c|v<83cj7guT*@EZ^&U}-FNt`R0SUW$b}{H z$tP;^#G;eo*$(kP2R-$jitllUcp|)^{oar>-wjD?zc-X25rG2|k6BNS&l|F%`a>Fm z-x;HFSc%l4WpTS;>W;%5jFHB4(SJ8xA?J~lj_f$wxRH!&3}Q58ubx;N{$S zJeQ6?!ut&CC_KOg`ErqAygS|fB!2x*42~z#-CgNKoZcT|I`@}PU+{wEP+bi9z?60E{jFbpQYW literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/LoadingProgress$1.class b/eclipse-build/org/rapla/client/internal/LoadingProgress$1.class new file mode 100644 index 0000000000000000000000000000000000000000..0bb5ceac58095cb35c912fd5d289a80d3b793b6d GIT binary patch literal 971 zcmb7CTTc@~7(LT&S*QyX#DaK3t=fxpTf8P1Ul63G8lzaBhuuj#X4!3K7x8cTAS6Ec z1N>3OGb_PFeW>#=GvDoe=evCW@%0;k4LovD5NIW4=o>kXq#s0D#hI_;Oqp0lem{|+ zj)$*JGBhepYh4$Pz}yGIiQ+vLy$ zYDe29Ed8-9ZJUJM+Kz)LNx4QZRW?dO7aIbNiRbR&J|3_uTqHwQC9<-dyj~nDvlYoS zRVmh3Z;`uIz$!|ZqU7e%bfscPnE$~M&eCI!l0%PqEb#Z3ngZW)v-Jgw%@Ztr&b^nd zF1Iiz>R6%dG0JK$G7IaW;ST%zDE)`?t1o0tW9cKABz;vOFIXQykK@caZ!klhIY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/LoadingProgress$2.class b/eclipse-build/org/rapla/client/internal/LoadingProgress$2.class new file mode 100644 index 0000000000000000000000000000000000000000..6157ef14cf1b2197b6f1eb146c914b33e246f08d GIT binary patch literal 979 zcmb7C%Wl&^6g`udN$R#~2~ePc0s-=%HDrM*ir7RTBBd0m&;`4RGq^5}9gW=-HvJ10 z@D1G{6_8l)0el5tf;i(wt;8x=x}GycJ>@1A3IfY1D-Rexl%8_B=D*dC zl^!cCP)K(DxOSiAdQ;ciVAx|n^pht7YxVz#YwQT*I?+HCAuwyh!nqQ%n72_xSs+_C z4)Z-fR4?|2eWhQ?exL*vdyy-H9jSe@pO87zxWMZ4Y zWiw2^-VCjX64@D|b?yyQYPP<@Zhptym(*v$aOsJOZex*qn=ytxj|x|T3%EGR@{yhv zx$1Ix_)MK{JaKLtUF;VE82BK|hj0#er0@Fp5V( zNArPH!#73`jj*;%fHcF#Cw{^Mei{dDJ)USq5Qd@^M)IgDjFnow4-XmGONO)jb-}i7*U1i@XFG zB-yX$_pLnc<6#yL7}o!4)JFwXhTOpL(*(uP{Np{dvSIk|0@aVS8bgN7McTO#4EeWu zYWm{2bOYGBuz(HM5l!ky^&@R*Ghc~#qz69s@tB05MKdIErV@s3pnj;7Fztw2D=cQjcLA1cgD>duHZX>wIl z%1&$MsOA`Q9x%i1v_YGPdW1h%zbhY!Bhn^Y)>D!BQ&tnQ3q3pPrxJ5J27-(t8{D| zPnuCO%ow&~r-B`ox*h~n+=kl);(6We)zYW3j$N=a0?qA}dE}lw9is}muFKWiV%X)o zx<^GEbuskd4h4HlXqNtt*tU7fa8=xiy964uy4$Z$X$8{_1O!xjN7X8u)sJI9Ba&g+xHCOivKwv|#xTIO(vtJ@IV}mMcp~_SoRxyP8 z1XLb7Junu0kcZpH{ZtLB7{O728p>1JgLZ*#u&+{7As{)A?L=Ea0LmP3}<#e{li+Ek;>bnA~uMJf8%!~NGiXY$&#z;s9rM{{{ z-LGx0Brf7j6+e>YR5Py`?g85w=vVM#Mps7Y{?lna=Q0Bde!}~@zUEPkk*yvC52eN0)-WCf)$kUBCeWYS6f{UrZPVi$A?{}YEa90 zm%W1D&|xp|AUgIQEi+wmVy)G+k#JxsBLBfMkH<8c@L$3QSp)2 zy)s5VM;_05*t-S}81k{P>c5^~+oWBZAFwRl@w$kf#}4+=5MOlF{AWYu7xF^)MqbR` z$ae3Iy#2h9&kT-XuH-X^-)7E|90kWn=Mq+3B2k4FeycrZ8&;E6eFfZrR?hg?LmR(b z99l<%+)|wFT)T+1oy%B1#%(q%Vl(M2lD=gT?VXpgc^RE!jkxOleYAwn6p^ILE~)a_ zMeM$U?n6zYX;F&mI?N@T3Q-m-y%< zZ~{ZgPfkw{A7w2CjMJ@^?eF_uBG9q-`hMDCE-ip!KnFf2N;NU9pg#TFDvDL5fE zV2M-|S^Co3nGMNQYyWjz%TJ0;`Ffv@8egjlwb4A`Vqd$ zkm3r2;IbYCACT~V;QTFdl}Av24XJ`B6gF<^ye;eMw<~q#Fpetjyonhk;C{Eajl|m5 zA<;437M=*ONhr!9^z+xkIDuyv&pCSgEDP^BY{c{4`L+1F1?Lx~>`&AYp7$)?e_@TZ z|K}C^`>8MMyqWekhkR^FvWO4MRbNNLzzaO07rF3!MfEoahN_r!*(3gjzjIte{q-E> MPeM)pcKO490070BAOHXW literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/LoginDialog$1.class b/eclipse-build/org/rapla/client/internal/LoginDialog$1.class new file mode 100644 index 0000000000000000000000000000000000000000..21a2bfc9d606cd2c0eb3ef43799d0a3ae0dc4a1c GIT binary patch literal 976 zcma)4%Wl&^6g`tTHA&qzDFp&eAV5l!6l&5HQV^Q}A}DQ<3SF?9ID<3A83)@<%BFw8 z0=}UeqyiEPK7g;_OAvRaQ3b4G>Dp(G@AKUG`TP4109)9ykz!a6Bj1hqDB!LaNTCu} zszgMJ2W~g?rFtxR5c<`o4T~Xvz{lJTxbofI-huEE8*>aL!}1A*4!JMfj(+dgdjSD%XvE(3&JVUys9hSOM ziJik?Pednw`6X5%Wu+DuY7SVf8C@VFXtYH7vfJ#yoTq!m1W!IcPFIb27@#toWASN->|gPVGO zI}#&KizOxG(5FTI-ylQgO~8Gs!8&9|Wber)WCId(FX7(XZ9bYRl-mmrBTqb)TEqNb z_heIdKtexJUJ%CADfaUXgt8{f!WLe~hohS5w&YH@2}F zIi Hk3!EMC|TOK literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/LoginDialog$2.class b/eclipse-build/org/rapla/client/internal/LoginDialog$2.class new file mode 100644 index 0000000000000000000000000000000000000000..f630a4ee003e0f0a4752a379abbbf6b3a9ede2e9 GIT binary patch literal 988 zcma)5-)|B@5dMaPQt&FYRn%5%RciU6y-Ht9FuqVVG_;zinE1B92G$(AbV@Q*Ui9;7sy81`juW@o;c{pP!0zkmD$P{TnQ3Bs-k`d%PLzVN!fk~;E~j%1*P z@3l-{=|d%a(=XQ2ND|gQh*R;=3nxnVy`xt`OP`PrWxz>o8HCE{x6MNW9T8RHAu5-x~rB(ElP$?}~Q*INI4bzhu@Psb1xRiy1H5V?{ z2~No-bonWQAH@DFn6v{E%8Ruw)_CC5NHC3rLaAjb^TZ_b zUNFl8)eYHc1{8z z``V0yu6(X6@%am4+q2W~cAn|3Z$g&Zv5W?$=VBj^c&k)4>BqOW+~)*d}@99{ zIOBsqz#rv!H%+m?jMIl?v)OykIrr?nzyJLF1z-sq3PKDEwo}s_UN^a>n})DF&9FS- zSlragcFnLh3~t)BnX=(}!V->x2*cxge&^W3HXO~w@!H_K5Iyd*YW5|8*Ga{ukEOsX1%0sH4 zcVAlemJ>~tVIo()VVLje8)5hHyP!7u_3Sj{Zk8L*I_a^~3kP9$3}S z{TA33&c5v&$)YE372WKTR@E`w$AW?f4A~pzw8g2=K&=z432(=4I6CPX%H^BNOis0a ztQ-j4D@qHOR6N3C@}%&dN0cRyqPsG1ag=1~aP^nfipe~I}f)x+;pflvD6 w5--kV4ef;Eh_gwIuqkBNbQ@vziZF{+y!uC&A&S=o62cnRX^qhl-5E;2U&6;kA^-pY literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/LoginDialog.class b/eclipse-build/org/rapla/client/internal/LoginDialog.class new file mode 100644 index 0000000000000000000000000000000000000000..2b470a93f94612f0a7977a091965667e552fbcc7 GIT binary patch literal 8079 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$1.class b/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1e20fafc1ca78e5ff517d33ce500747b2414d3f1 GIT binary patch literal 1321 zcmbVMYflqF6g|@xmM&X)SbRXSMGCY9S*YNvXrfIuB&{DPV&WGwY{%`&vfIoql;5I1 zfX^g?j}QI;f0Xgg(ilvLv2N0xJGXOR=bYIeKfiqkP{v~oF@~})ZBz1&%T3F5gcq8Q z7YgZd*W6OxYUFGRdFWVTbHC%}S2ZLUGVl2zH+eTS#i5FN?RYJ}`?SS76wNRgww)lq zLiy|c7N}74hT}Qm6NdFd|KY_QhD6nGi6j_?4GdsVM;s{w8m=(J3+li~-SNcBgZ*70 zxB0Fs7{=?q#oZk)9kuT{6KV{GwZ6N^uhJMsHv*;V`hjRMWDE66L8~bME5#ih*Kk9_ zb%vFGF*9%zlQfkRY>6P`GITuq#jDL|+BYh1#=x|iJ`sd|CrOU1fgENSQu5CL79F28 zkjEUu5VtH5L`1&*A1Wf;c!yhUVUk{4-!tDyzAw7I+%sL@wuLn7(NfW|fTD&1!_^2S zmwUEZJF-M4bbQZ135yK6Ey4yh#BE|MT_~Od8Xawhl7_Af;|@#>%M3*Y;y=|ku!2>F z0U@PN+AZ~Xx|sGtq3yQxyGkQO83Ut6GJoThAtsI(CN5<7Jr!vr)eO0{*WjI=;`F9} zAT9CSQJS2({0c5BfQapyXOXmM>V^p0e#<~bQ9QOQY{!ctn*rB}bk$tW(eTC`%HFwDwHH!WbRD YPmUOk`jFNHU5H26AWNqpH4r_&09#d4djJ3c literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$2.class b/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$2.class new file mode 100644 index 0000000000000000000000000000000000000000..1a93fa9e85c6468d3216d48ccede788b7158f637 GIT binary patch literal 718 zcmb7C$w~u35Pg-2&Nz-H?)!4c!37)*DuUuAC#9dB{q_C!380E49|b}+wawUyJ1ycwD{1mrnOs^UbbRjET8F%l_Fg6O zQ@@{PC`u@eLynBc9rfKpuHm|2mWeCxUG1Atw$TFE>naAbvZ=iD7&5TijkB@-)0Y-c5J0@IPf8y&I z(L*PuEny79U6oz7?k!k*MEHX7KN|E7pFVzR1YHdeGn`ex SEauo2d8+eRWE6Jw82$i#eXQ63 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$3.class b/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$3.class new file mode 100644 index 0000000000000000000000000000000000000000..1b758953ea36753894f6c32f3f4c36487a8c3121 GIT binary patch literal 2372 zcmbVNYjYD-7=BI?*pM#tCR71!)Cz5ByA|*nP$9NjObb$|f(o2$PLrjZ-MG6+3;#g> z2%ll3Se7&V5ZE5ooN#E8(Uksc zI0b?JmUM?)=~bJus){w=r+0xvTbL@{EleBRk2#(by(DmDcniJGh!nQaxYyIjfVPa4?6M*4nz9I+>wDH>AnR(` z50)&~uU1uHmEu>yfF&>xgS#o!lTF91s341{1$J))o40EOgFxgXKcB+{j_A@jN{MxL zHW`RHnZUCqp2PF3X4z;ck3^1l68#6#>+TEM$%`fmnx|~!Cp2{7I9@iu)`+?OS81Af zMF+aAqRP#xM*5_QA~*$dWS>JIQY(?b5J_(n+eR#*G?8KvOyhL}uQ8XltnJquzQcV>iYgt zvmtQc0jQoXUuAvM!!*vCnAcErh3fAr%;LO2@7*-3N?wbg2jOUkXg9%et`_*qdX}(;4A|_@ zHdIq9wrV6JJ*`@#Y=5HIc`h(K9f!a!_bw^~$W8l}c`$dJNh!6WTcJZJ{J3*IlJ?T9 zY{cWwK%F;ETQVtI1OECY)p?4s7U%tDV5@0IkJWvh=g5RM%LzH<*{&b57iU#e^D8DI zJ)`@0nFSF$+wo>R;;1BB&YbZ)6%<_=hAKp!!#&MQE{(m|hV9%L+@+B1>Cv+v=;_mw zKRyH7yPFa{+#RQk*6SWUbQ`^+W4F;idI!62#)1#?KSu%HoydtV@d#HY*A%CleewBz zJersi6Ugufd^q|M`d9JT?ARCB#dUAyHimAXsh4Rk_4{Lteu{|;eUo=^cx)BVtm1_= z97{oeTg8c6m|DXdDSVFUx$&_zyqSF2&^kx0@ip+?+EBfa!VUD#uAA}Gd@Z{nbms6 zdR2j<V!Z literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$4.class b/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$4.class new file mode 100644 index 0000000000000000000000000000000000000000..c6749c08af6b61194110ba499809a7f464b2394f GIT binary patch literal 2347 zcmbVOZBrXn6n<_&~rCHGBz-^JCnWVo_o%{&wb9z=DXc*z6CId zPZjtW25pf~2(4sl3Eecf! zVdWEJS;rNc?vClMVOtC#hYLe9m$`6gzLcI|U^5J@Dcf>f&2pDDv&;j8LOzV4(JdHG zWPs3Q{x6&)gR-HSk(`-lxORkl#?Bko1fjC?EtCUWu zIEJ<$8qlpGgwqTSQR&o{F)Th;E@rt{)UqaL2xn}aqNGu*XuhZP%UCcB)dG2`8%BnR zqBhC`3i&)2Yqluz9K-o&My5(a+jJ9rLnc@yOD3h9j4cOo8CMiU7_J;1`x=H+T*Wnp zmOOWtD9tRbNH^(-#ww?n8l~fcD<~_Ia_5+e9`shs=QYRKv;|@EM`Nq0AmT_U=w}!> z{NVaEpke^m8JaX*=Z+H@WJteCMtHo`B3@0!R+O3&%5-Ty$JJp70m74OI+0=j8CJcwDmt6+{2wk}Q8MxbI|x+#L2T$7G*+)=TB z#cD#_U>JUdgpkD$$FhpM@&Lc%+9j#@K*fqw9A7g8uk_=wtSwxgQ*e*rQWfu-plYBL zU$6A;0~V+S@C}#YOqGonOOfE04+<*$VmZ-z>7asqt0|(uDSHJ#-F=0@C);SGCRGnZ zlceA+xSGB`tChT_qrjkV#(%3pL6#x7V3&o?rwrMzPS>x-e(6cAXVQ|9q-2}rZo$r} zuqA6@`r-)JYanTBu^_lc4M0s>78fa#?!z5ipsv|KUm`!c5kMo&6q@@!-fgt^^lhWFC%%o7Jzt^gsb_tL-a)dWuN~Uh_c%+E zN;3K29L{_C3%FR>kLiS_k#vuGo}qIGmu4$tbgp5q&%TJfxs?O3JMDDvvCEh$L`Uqi+tB<)dv$r8vRsf7D^-q K=_DB#dj18qQ+?rb%1yZlXpvGbiwNFoOt4^5Q;ZSp`?MX(n(b^eJ1xBUqf7)7 zAN&FSDC3zeiTi*A=V8xf&v)+U*Y6)c0c_)y4U1trR4q^OPQblJ;0vieUuvNw54?{? zTaJ}SLiPNHsI)sle%D5tVdgXM@pCUa^JUB1t4CV#hTdyvKa>pFNGP8NHK8JsKUMY_ z*gJ-iawsFsrLOUyD+VYF^BBXRKJ}yg7G+cY-*ie0c8>@7X3%0-xdC1cTfW?T&Lc?|^l+=sJ>uNvnViN)lzVfB7Uo(6uB&~1Nw$crVWNJyXYtvY* zF{I03Q``Z=gbN45hMRKXV#IKFU5p~*AcYwhS#^`ck~_w(CM2^Lii{a@DXw zQ{pr$lCP9$GYf{DWFoh!FuzMJ%Fq_j$Ug{m5~{XnGAtCTW>q|XrajR!3)bI~1H+eA zYYrY_*+!mW`QNiobjZacQ`0~r2qWR3fTE363X=d|*Ebhy24*V}2yTEI@N8@{Y$brV zs?)`m@sy5q*fDOlT|6<0u@hg3{<-YcL#0jeDbdpmb2oK>!8r=Msv+L`W+t=OU)`qZ zA+`5Fn!4%c4uw7qn=W3O&^fv)rQ;@5kwMcRxMU0WJ67{DM& zHc1wSvRSi2KsILpA*5 zWJMQ^j5UOL;#}ehgZo&B^@~`#^2do9+xg-*OkUyvk?BjU5E;M3dY?T0>v)QihBXY^ wqV2XuFlmiq&dS6=ruvSqf{;t>V3*vd@RR~rc!uXh(=@6VC=ut-Ka&={KaP`63jhEB literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$DefaultMenuInsertPoint.class b/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl$DefaultMenuInsertPoint.class new file mode 100644 index 0000000000000000000000000000000000000000..577a3f14afc0b0d7b2eb0777dd459906926ac2e5 GIT binary patch literal 1313 zcmb7DZBG+H5Pr5)3gxhsSEat76m74-5x!zfOjU9QUt&!^nk;2o7q5GDZ(B(8Pnp;l z{ooJqM;T|g#DdbKe7L!rnVsjEeP-_0?;k$_>|i^C6vJMuTY=`ChzE^G3S|PRjL?cl z!5bT`x?oM{o@|J)-HD1%M3Z+T^FpX@s1l*g>zGP1NHgS*c#j7WSFPaH!I5ZCbdq6p zNYU!bz!p9|F+wFWR<4#I-KHSJ`u_Q&CXS;I(zue)w$DaLvOEyeuX# z?_m}T3=^et-DZ|NWH4pFu6vk9mLaz;U+2lLl@_ zTpr*D{MZE5xZQ~rt?BLv4J8pXERX1jq3}<$HPPXkn^;q~4AY6|24&yl#a8uVNt3%eO)VfO;a z=j{%WXY;eTN;XH{JEV}N_kv&PBkzC1oWIe>qQBY4@)wGyaD(ieJJTVgk5s8Kj|3|e zUv)eSDBvb}gyJ|;?#r@Tu3NZ$%C$$n&E@>BSgep){*F5n7}8{2x$p!~7WBd8KtB=a=MkVKlnE>apL$E7f(?3S9nB^J;19f(Q9b|w literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl.class b/eclipse-build/org/rapla/client/internal/RaplaClientServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..6dd15922c541609792563513b38a4a7489c2d3da GIT binary patch literal 19146 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 literal 0 HcmV?d00001 diff --git a/eclipse-build/org/rapla/client/package.html b/eclipse-build/org/rapla/client/package.html new file mode 100644 index 0000000..b8dfcb1 --- /dev/null +++ b/eclipse-build/org/rapla/client/package.html @@ -0,0 +1,10 @@ + +