--- /dev/null
+!SESSION 2012-09-12 16:44:08.584 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY org.eclipse.wst.common.project.facet.core 4 0 2012-09-12 17:20:50.848
+!MESSAGE Failed while installing Axis2 Web Services Core 1.1.
+!STACK 1
+org.eclipse.core.runtime.CoreException: The Axis2 facets cannot be installed since the Axis2 runtime location has not been set.
+Please go to the Web Services preference page and set the Axis2 runtime location under Axis2 Preferences.
+ at org.eclipse.jst.ws.axis2.facet.deligate.Axis2CoreFacetInstallDelegate.execute(Axis2CoreFacetInstallDelegate.java:59)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1230)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:398)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:290)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject$1.run(FacetedProject.java:272)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modify(FacetedProject.java:282)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard.performFinish(ModifyFacetedProjectWizard.java:373)
+ at org.eclipse.wst.web.ui.internal.wizards.NewProjectDataModelFacetWizard.performFinish(NewProjectDataModelFacetWizard.java:292)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$2.run(ModifyFacetedProjectWizard.java:261)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$3.run(ModifyFacetedProjectWizard.java:275)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+org.eclipse.core.runtime.CoreException[1]: java.io.FileNotFoundException: \webapp (The system cannot find the file specified)
+ at java.io.FileInputStream.open(Native Method)
+ at java.io.FileInputStream.<init>(Unknown Source)
+ at org.eclipse.jst.ws.axis2.core.utils.FileUtils.copy(FileUtils.java:158)
+ at org.eclipse.jst.ws.axis2.core.utils.FileUtils.copyDirectory(FileUtils.java:151)
+ at org.eclipse.jst.ws.axis2.facet.utils.Axis2WebappUtils.copyAxis2War(Axis2WebappUtils.java:94)
+ at org.eclipse.jst.ws.axis2.facet.commands.Axis2WebservicesServerCommand.executeOverride(Axis2WebservicesServerCommand.java:80)
+ at org.eclipse.jst.ws.axis2.facet.deligate.Axis2CoreFacetInstallDelegate.execute(Axis2CoreFacetInstallDelegate.java:52)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1230)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:398)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:290)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject$1.run(FacetedProject.java:272)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modify(FacetedProject.java:282)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard.performFinish(ModifyFacetedProjectWizard.java:373)
+ at org.eclipse.wst.web.ui.internal.wizards.NewProjectDataModelFacetWizard.performFinish(NewProjectDataModelFacetWizard.java:292)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$2.run(ModifyFacetedProjectWizard.java:261)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$3.run(ModifyFacetedProjectWizard.java:275)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+!SUBENTRY 1 P/SIMAN 1 1 2012-09-12 17:20:50.848
+!MESSAGE The Axis2 facets cannot be installed since the Axis2 runtime location has not been set.
+Please go to the Web Services preference page and set the Axis2 runtime location under Axis2 Preferences.
+!STACK 0
+java.io.FileNotFoundException: \webapp (The system cannot find the file specified)
+ at java.io.FileInputStream.open(Native Method)
+ at java.io.FileInputStream.<init>(Unknown Source)
+ at org.eclipse.jst.ws.axis2.core.utils.FileUtils.copy(FileUtils.java:158)
+ at org.eclipse.jst.ws.axis2.core.utils.FileUtils.copyDirectory(FileUtils.java:151)
+ at org.eclipse.jst.ws.axis2.facet.utils.Axis2WebappUtils.copyAxis2War(Axis2WebappUtils.java:94)
+ at org.eclipse.jst.ws.axis2.facet.commands.Axis2WebservicesServerCommand.executeOverride(Axis2WebservicesServerCommand.java:80)
+ at org.eclipse.jst.ws.axis2.facet.deligate.Axis2CoreFacetInstallDelegate.execute(Axis2CoreFacetInstallDelegate.java:52)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.callDelegate(FacetedProject.java:1230)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modifyInternal(FacetedProject.java:398)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.access$2(FacetedProject.java:290)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject$1.run(FacetedProject.java:272)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.wst.common.project.facet.core.internal.FacetedProject.modify(FacetedProject.java:282)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard.performFinish(ModifyFacetedProjectWizard.java:373)
+ at org.eclipse.wst.web.ui.internal.wizards.NewProjectDataModelFacetWizard.performFinish(NewProjectDataModelFacetWizard.java:292)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$2.run(ModifyFacetedProjectWizard.java:261)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$3.run(ModifyFacetedProjectWizard.java:275)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+!SESSION 2012-09-12 17:48:51.734 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86 -data D:\users\rkv\SIMAN\Workspace
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-12 17:56:22.190
+!MESSAGE Error calling delegate setDefaults() ServerWorkingCopy 12.09.12_17_560
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.jst.server.generic.core.internal.GenericServer.getServerDefinition(GenericServer.java:239)
+ at org.eclipse.jst.server.generic.core.internal.GenericServer.setDefaults(GenericServer.java:324)
+ at org.eclipse.wst.server.core.internal.ServerWorkingCopy.setDefaults(ServerWorkingCopy.java:608)
+ at org.eclipse.wst.server.core.internal.ServerType.createServer(ServerType.java:195)
+ at org.eclipse.wst.server.ui.internal.wizard.page.ServerCreationCache.getServer(ServerCreationCache.java:61)
+ at org.eclipse.wst.server.ui.internal.wizard.page.NewManualServerComposite.loadServerImpl(NewManualServerComposite.java:233)
+ at org.eclipse.wst.server.ui.internal.wizard.page.NewManualServerComposite.handleTypeSelection(NewManualServerComposite.java:402)
+ at org.eclipse.wst.server.ui.internal.wizard.page.NewManualServerComposite$1.serverTypeSelected(NewManualServerComposite.java:142)
+ at org.eclipse.wst.server.ui.internal.viewers.ServerTypeComposite$2.selectionChanged(ServerTypeComposite.java:85)
+ at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:160)
+ at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2047)
+ at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1641)
+ at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095)
+ at org.eclipse.wst.server.ui.internal.viewers.ServerTypeComposite.setVisible(ServerTypeComposite.java:97)
+ at org.eclipse.wst.server.ui.internal.wizard.page.NewManualServerComposite.setVisible(NewManualServerComposite.java:439)
+ at org.eclipse.wst.server.ui.internal.wizard.page.NewServerComposite.createControl(NewServerComposite.java:234)
+ at org.eclipse.wst.server.ui.internal.wizard.page.NewServerComposite.<init>(NewServerComposite.java:122)
+ at org.eclipse.wst.server.ui.internal.wizard.fragment.NewServerWizardFragment.createComposite(NewServerWizardFragment.java:74)
+ at org.eclipse.wst.server.ui.internal.wizard.TaskWizardPage.createControl(TaskWizardPage.java:43)
+ at org.eclipse.wst.server.ui.internal.wizard.TaskWizard.createPageControls(TaskWizard.java:396)
+ at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:669)
+ at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:543)
+ at org.eclipse.jface.window.Window.create(Window.java:426)
+ at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1083)
+ at org.eclipse.jface.window.Window.open(Window.java:785)
+ at org.eclipse.wst.server.ui.internal.actions.LaunchWizardAction.run(LaunchWizardAction.java:57)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY org.eclipse.wst.validation 4 0 2012-09-12 18:18:43.698
+!MESSAGE
+*** ERROR ***: Wed Sep 12 18:18:43 MSD 2012 org.eclipse.core.internal.resources.ResourceException: Marker id 144 not found.
+ at org.eclipse.core.internal.resources.Marker.checkInfo(Marker.java:56)
+ at org.eclipse.core.internal.resources.Marker.getAttribute(Marker.java:97)
+ at org.eclipse.wst.validation.internal.TaskListUtility.getValidationTasks(TaskListUtility.java:331)
+ at org.eclipse.wst.validation.internal.TaskListUtility.getValidationTasks(TaskListUtility.java:390)
+ at org.eclipse.wst.validation.internal.TaskListUtility.getValidationTasks(TaskListUtility.java:443)
+ at org.eclipse.wst.validation.internal.TaskListUtility.removeTaskSubset(TaskListUtility.java:543)
+ at org.eclipse.wst.validation.internal.TaskListUtility.removeAllTasks(TaskListUtility.java:523)
+ at org.eclipse.wst.validation.internal.TaskListUtility.removeAllTasks(TaskListUtility.java:519)
+ at org.eclipse.wst.validation.internal.operations.WorkbenchReporter.removeAllMessages(WorkbenchReporter.java:207)
+ at org.eclipse.wst.validation.internal.operations.WorkbenchReporter.removeAllMessages(WorkbenchReporter.java:672)
+ at org.eclipse.wst.validation.internal.operations.WorkbenchReporter.removeAllMessages(WorkbenchReporter.java:629)
+ at org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator.validateInJob(ClasspathDependencyValidator.java:75)
+ at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:75)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SESSION 2012-09-19 12:42:05.641 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86 -data D:\users\rkv\SIMAN\Workspace
+
+!ENTRY org.eclipse.core.resources 4 273 2012-09-19 12:42:24.188
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 1 org.eclipse.core.resources 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete '/SIMAN'.
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.delete(FileSystemResourceManager.java:223)
+ at org.eclipse.core.internal.resources.ResourceTree.standardDeleteProject(ResourceTree.java:835)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1664)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 273 2012-09-19 12:42:24.188
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+!SUBENTRY 2 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:42:24.188
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+
+!ENTRY org.eclipse.core.resources 4 273 2012-09-19 12:43:06.471
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 1 org.eclipse.core.resources 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete '/SIMAN'.
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.delete(FileSystemResourceManager.java:223)
+ at org.eclipse.core.internal.resources.ResourceTree.standardDeleteProject(ResourceTree.java:835)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1664)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 273 2012-09-19 12:43:06.471
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+!SUBENTRY 2 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:43:06.471
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 12:45:16.664
+!MESSAGE Could not create delegate Module[SIMAN,org.eclipse.jst.j2ee.server:SIMAN]
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.wst.server.core.internal.Module.getDelegate(Module.java:117)
+ at org.eclipse.wst.server.core.internal.Module.loadAdapter(Module.java:209)
+ at org.eclipse.jst.server.tomcat.core.internal.TomcatServer.getChildModules(TomcatServer.java:303)
+ at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:2289)
+ at org.eclipse.wst.server.core.internal.Server.visitModule(Server.java:2449)
+ at org.eclipse.wst.server.core.internal.Server.visit(Server.java:2430)
+ at org.eclipse.wst.server.core.internal.Server.getAllModules(Server.java:1021)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServersView$3.run(ServersView.java:134)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 12:45:16.679
+!MESSAGE Could not create delegate Module[SIMAN,org.eclipse.jst.j2ee.server:SIMAN]
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.wst.server.core.internal.Module.getDelegate(Module.java:117)
+ at org.eclipse.wst.server.core.internal.Module.loadAdapter(Module.java:209)
+ at org.eclipse.jst.server.tomcat.core.internal.TomcatServer.getChildModules(TomcatServer.java:303)
+ at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:2289)
+ at org.eclipse.wst.server.core.internal.Server.visitModule(Server.java:2449)
+ at org.eclipse.wst.server.core.internal.Server.visit(Server.java:2430)
+ at org.eclipse.wst.server.core.internal.Server.shouldRestart(Server.java:828)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServerTableLabelProvider.getColumnText(ServerTableLabelProvider.java:200)
+ at org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:70)
+ at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:135)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:911)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:97)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:991)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServerTableViewer.doUpdateItem(ServerTableViewer.java:654)
+ at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2026)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:806)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:781)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:755)
+ at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:627)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1463)
+ at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:816)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1446)
+ at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1368)
+ at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:390)
+ at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1330)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1435)
+ at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
+ at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1606)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServerTableViewer.initialize(ServerTableViewer.java:255)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServersView.deferredInitialize(ServersView.java:160)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServersView$4.run(ServersView.java:144)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 12:45:18.195
+!MESSAGE Could not create delegate Module[SIMAN,org.eclipse.jst.j2ee.server:SIMAN]
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.wst.server.core.internal.Module.getDelegate(Module.java:117)
+ at org.eclipse.wst.server.core.internal.Module.loadAdapter(Module.java:209)
+ at org.eclipse.jst.server.tomcat.core.internal.TomcatServer.getChildModules(TomcatServer.java:303)
+ at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:2289)
+ at org.eclipse.wst.server.ui.internal.view.servers.ServerTableViewer$ServerContentProvider.hasChildren(ServerTableViewer.java:132)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2021)
+ at org.eclipse.jface.viewers.TreeViewer.isExpandable(TreeViewer.java:575)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:2047)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:2671)
+ at org.eclipse.jface.viewers.TreeViewer.updatePlus(TreeViewer.java:835)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:807)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:781)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:755)
+ at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:627)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1410)
+ at org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:918)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:1421)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:125)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:947)
+ at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:7053)
+ at org.eclipse.swt.widgets.Control.wmNotify(Control.java:4563)
+ at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1581)
+ at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:4216)
+ at org.eclipse.swt.widgets.Control.windowProc(Control.java:3724)
+ at org.eclipse.swt.widgets.Display.windowProc(Display.java:4351)
+ at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
+ at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2179)
+ at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1541)
+ at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:5798)
+ at org.eclipse.swt.widgets.Control.windowProc(Control.java:3705)
+ at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5370)
+ at org.eclipse.swt.widgets.Display.windowProc(Display.java:4364)
+ at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
+ at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2265)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3291)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 12:45:21.414
+!MESSAGE Could not create delegate Module[SIMAN,org.eclipse.jst.j2ee.server:SIMAN]
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.wst.server.core.internal.Module.getDelegate(Module.java:117)
+ at org.eclipse.wst.server.core.internal.Module.loadAdapter(Module.java:209)
+ at org.eclipse.jst.server.tomcat.core.internal.TomcatServer.getChildModules(TomcatServer.java:303)
+ at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:2289)
+ at org.eclipse.wst.server.core.internal.ServerWorkingCopy.resetState(ServerWorkingCopy.java:566)
+ at org.eclipse.wst.server.core.internal.ServerWorkingCopy.modifyModules(ServerWorkingCopy.java:523)
+ at org.eclipse.wst.server.ui.internal.view.servers.RemoveModuleAction.run(RemoveModuleAction.java:53)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-19 12:45:37.008
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.IllegalArgumentException: null source
+ at java.util.EventObject.<init>(Unknown Source)
+ at org.springframework.ide.eclipse.core.model.ModelChangeEvent.<init>(ModelChangeEvent.java:43)
+ at org.springframework.ide.eclipse.core.model.AbstractModel.notifyListeners(AbstractModel.java:44)
+ at org.springframework.ide.eclipse.core.internal.model.SpringModel$ResourceChangeEventHandler.projectDeleted(SpringModel.java:204)
+ at org.springframework.ide.eclipse.core.internal.model.resources.SpringResourceChangeListener.resourceChanged(SpringResourceChangeListener.java:64)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:260)
+ at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:305)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1662)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-19 12:45:37.008
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.IllegalArgumentException: null source
+ at java.util.EventObject.<init>(Unknown Source)
+ at org.springframework.ide.eclipse.core.model.ModelChangeEvent.<init>(ModelChangeEvent.java:43)
+ at org.springframework.ide.eclipse.core.model.AbstractModel.notifyListeners(AbstractModel.java:44)
+ at org.springframework.ide.eclipse.beans.core.internal.model.BeansModel$ResourceChangeEventHandler.projectDeleted(BeansModel.java:318)
+ at org.springframework.ide.eclipse.core.internal.model.resources.SpringResourceChangeListener.resourceChanged(SpringResourceChangeListener.java:64)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:260)
+ at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:305)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1662)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.core.resources 4 273 2012-09-19 12:45:37.055
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 1 org.eclipse.core.resources 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete '/SIMAN'.
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.delete(FileSystemResourceManager.java:223)
+ at org.eclipse.core.internal.resources.ResourceTree.standardDeleteProject(ResourceTree.java:835)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1664)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 273 2012-09-19 12:45:37.055
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+!SUBENTRY 2 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:45:37.055
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-19 12:46:05.041
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.IllegalArgumentException: null source
+ at java.util.EventObject.<init>(Unknown Source)
+ at org.springframework.ide.eclipse.core.model.ModelChangeEvent.<init>(ModelChangeEvent.java:43)
+ at org.springframework.ide.eclipse.core.model.AbstractModel.notifyListeners(AbstractModel.java:44)
+ at org.springframework.ide.eclipse.core.internal.model.SpringModel$ResourceChangeEventHandler.projectDeleted(SpringModel.java:204)
+ at org.springframework.ide.eclipse.core.internal.model.resources.SpringResourceChangeListener.resourceChanged(SpringResourceChangeListener.java:64)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:260)
+ at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:305)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1662)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-19 12:46:05.041
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.IllegalArgumentException: null source
+ at java.util.EventObject.<init>(Unknown Source)
+ at org.springframework.ide.eclipse.core.model.ModelChangeEvent.<init>(ModelChangeEvent.java:43)
+ at org.springframework.ide.eclipse.core.model.AbstractModel.notifyListeners(AbstractModel.java:44)
+ at org.springframework.ide.eclipse.beans.core.internal.model.BeansModel$ResourceChangeEventHandler.projectDeleted(BeansModel.java:318)
+ at org.springframework.ide.eclipse.core.internal.model.resources.SpringResourceChangeListener.resourceChanged(SpringResourceChangeListener.java:64)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:260)
+ at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:305)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1662)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.core.resources 4 273 2012-09-19 12:46:05.072
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 1 org.eclipse.core.resources 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete '/SIMAN'.
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.delete(FileSystemResourceManager.java:223)
+ at org.eclipse.core.internal.resources.ResourceTree.standardDeleteProject(ResourceTree.java:835)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1664)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:533)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 273 2012-09-19 12:46:05.072
+!MESSAGE Problems encountered while deleting resources.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+!SUBENTRY 2 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Problems encountered while deleting files.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent\WEB-INF.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN\WebContent.
+!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2012-09-19 12:46:05.072
+!MESSAGE Could not delete: D:\users\rkv\SIMAN\Workspace\SIMAN.
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-19 12:46:11.275
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.IllegalArgumentException: null source
+ at java.util.EventObject.<init>(Unknown Source)
+ at org.springframework.ide.eclipse.core.model.ModelChangeEvent.<init>(ModelChangeEvent.java:43)
+ at org.springframework.ide.eclipse.core.model.AbstractModel.notifyListeners(AbstractModel.java:44)
+ at org.springframework.ide.eclipse.core.internal.model.SpringModel$ResourceChangeEventHandler.projectDeleted(SpringModel.java:204)
+ at org.springframework.ide.eclipse.core.internal.model.resources.SpringResourceChangeListener.resourceChanged(SpringResourceChangeListener.java:64)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:260)
+ at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:305)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1662)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:538)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-19 12:46:11.275
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.IllegalArgumentException: null source
+ at java.util.EventObject.<init>(Unknown Source)
+ at org.springframework.ide.eclipse.core.model.ModelChangeEvent.<init>(ModelChangeEvent.java:43)
+ at org.springframework.ide.eclipse.core.model.AbstractModel.notifyListeners(AbstractModel.java:44)
+ at org.springframework.ide.eclipse.beans.core.internal.model.BeansModel$ResourceChangeEventHandler.projectDeleted(BeansModel.java:318)
+ at org.springframework.ide.eclipse.core.internal.model.resources.SpringResourceChangeListener.resourceChanged(SpringResourceChangeListener.java:64)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:260)
+ at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:305)
+ at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1662)
+ at org.eclipse.core.internal.resources.Resource.delete(Resource.java:700)
+ at org.eclipse.core.internal.resources.Project.delete(Project.java:289)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:578)
+ at org.eclipse.ui.ide.undo.WorkspaceUndoUtil.delete(WorkspaceUndoUtil.java:172)
+ at org.eclipse.ui.ide.undo.AbstractResourcesOperation.delete(AbstractResourcesOperation.java:111)
+ at org.eclipse.ui.ide.undo.DeleteResourcesOperation.doExecute(DeleteResourcesOperation.java:67)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation$1.run(AbstractWorkspaceOperation.java:206)
+ at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
+ at org.eclipse.ui.ide.undo.AbstractWorkspaceOperation.execute(AbstractWorkspaceOperation.java:204)
+ at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511)
+ at org.eclipse.ui.actions.DeleteResourceAction$4.run(DeleteResourceAction.java:538)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SESSION 2012-09-19 12:57:07.894 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY org.eclipse.help.base 4 0 2012-09-19 13:58:57.255
+!MESSAGE An error occured while pre-processing help XHTML document "/org.springframework.doc/spring-form.tld.html" for search indexing
+!STACK 0
+org.xml.sax.SAXParseException: The entity "nbsp" was referenced, but not declared.
+ at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
+ at org.eclipse.help.internal.dynamic.DocumentReader.read(DocumentReader.java:56)
+ at org.eclipse.help.internal.dynamic.XMLProcessor.process(XMLProcessor.java:49)
+ at org.eclipse.help.internal.xhtml.DynamicXHTMLProcessor.process(DynamicXHTMLProcessor.java:76)
+ at org.eclipse.help.internal.search.XHTMLSearchParticipant.preprocess(XHTMLSearchParticipant.java:58)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:301)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.help.base 4 0 2012-09-19 13:59:10.865
+!MESSAGE An error occured while pre-processing help XHTML document "/org.springframework.doc/spring.tld.html" for search indexing
+!STACK 0
+org.xml.sax.SAXParseException: The entity "nbsp" was referenced, but not declared.
+ at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
+ at org.eclipse.help.internal.dynamic.DocumentReader.read(DocumentReader.java:56)
+ at org.eclipse.help.internal.dynamic.XMLProcessor.process(XMLProcessor.java:49)
+ at org.eclipse.help.internal.xhtml.DynamicXHTMLProcessor.process(DynamicXHTMLProcessor.java:76)
+ at org.eclipse.help.internal.search.XHTMLSearchParticipant.preprocess(XHTMLSearchParticipant.java:58)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:301)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.help.base 4 0 2012-09-19 13:59:11.053
+!MESSAGE An error occured while pre-processing help XHTML document "/org.eclipse.jst.ejb.doc.user/topics/txdocletconf.html" for search indexing
+!STACK 0
+org.xml.sax.SAXParseException: The element type "p" must be terminated by the matching end-tag "</p>".
+ at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
+ at org.eclipse.help.internal.dynamic.DocumentReader.read(DocumentReader.java:56)
+ at org.eclipse.help.internal.dynamic.XMLProcessor.process(XMLProcessor.java:49)
+ at org.eclipse.help.internal.xhtml.DynamicXHTMLProcessor.process(DynamicXHTMLProcessor.java:76)
+ at org.eclipse.help.internal.search.XHTMLSearchParticipant.preprocess(XHTMLSearchParticipant.java:58)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:301)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.help.base 4 0 2012-09-19 13:59:15.397
+!MESSAGE An error occured while pre-processing help XHTML document "/org.eclipse.jst.ejb.doc.user/topics/ceresrc.html" for search indexing
+!STACK 0
+org.xml.sax.SAXParseException: The element type "dd" must be terminated by the matching end-tag "</dd>".
+ at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
+ at org.eclipse.help.internal.dynamic.DocumentReader.read(DocumentReader.java:56)
+ at org.eclipse.help.internal.dynamic.XMLProcessor.process(XMLProcessor.java:49)
+ at org.eclipse.help.internal.xhtml.DynamicXHTMLProcessor.process(DynamicXHTMLProcessor.java:76)
+ at org.eclipse.help.internal.search.XHTMLSearchParticipant.preprocess(XHTMLSearchParticipant.java:58)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:301)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help documentation could not be indexed completely.
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Exception occurred while adding document /org.springframework.doc/spring-form.tld.html to index.
+!STACK 0
+org.xml.sax.SAXParseException: Content is not allowed in prolog.
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:302)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help document /net.sourceforge.pmd.eclipse/howto/usepmd.html cannot be opened.
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help document /net.sourceforge.pmd.eclipse/howto/usecpd.html cannot be opened.
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help document /net.sourceforge.pmd.eclipse/howto/usepmdlarge.html cannot be opened.
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help document /net.sourceforge.pmd.eclipse/howto/reportbugs.html cannot be opened.
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Exception occurred while adding document /org.springframework.doc/spring.tld.html to index.
+!STACK 0
+org.xml.sax.SAXParseException: Content is not allowed in prolog.
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:302)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Exception occurred while adding document /org.eclipse.jst.ejb.doc.user/topics/txdocletconf.html to index.
+!STACK 0
+org.xml.sax.SAXParseException: Premature end of file.
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:302)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help document /net.sourceforge.pmd.eclipse/howto/fragment.html cannot be opened.
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Exception occurred while adding document /org.eclipse.jst.ejb.doc.user/topics/ceresrc.html to index.
+!STACK 0
+org.xml.sax.SAXParseException: Premature end of file.
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
+ at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at org.eclipse.help.search.XMLSearchParticipant.addDocument(XMLSearchParticipant.java:302)
+ at org.eclipse.help.internal.search.HTMLSearchParticipant.addDocument(HTMLSearchParticipant.java:51)
+ at org.eclipse.help.internal.search.SearchIndex.addDocument(SearchIndex.java:219)
+ at org.eclipse.help.internal.search.IndexingOperation.addDocuments(IndexingOperation.java:246)
+ at org.eclipse.help.internal.search.IndexingOperation.addNewDocuments(IndexingOperation.java:158)
+ at org.eclipse.help.internal.search.IndexingOperation.execute(IndexingOperation.java:105)
+ at org.eclipse.help.internal.search.LocalSearchManager.updateIndex(LocalSearchManager.java:624)
+ at org.eclipse.help.internal.search.LocalSearchManager.ensureIndexUpdated(LocalSearchManager.java:598)
+ at org.eclipse.help.internal.search.federated.IndexerJob.run(IndexerJob.java:27)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.help.base 4 4 2012-09-19 13:59:26.444
+!MESSAGE Help document /net.sourceforge.pmd.eclipse/howto/confpmd.html cannot be opened.
+!SESSION 2012-09-19 19:54:30.778 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86 -data D:\users\rkv\SIMAN\Workspace
+
+!ENTRY org.eclipse.jst.jsp.core 4 4 2012-09-19 20:00:50.167
+!MESSAGE Problem handling build path entry for /Siman/WebContent/WEB-INF/lib/javax.jms.jar
+!STACK 1
+Java Model Exception: Java Model Status [WebContent/WEB-INF/lib/javax.jms.jar is not on its project's build path]
+ at org.eclipse.jdt.internal.core.PackageFragmentRoot.getRawClasspathEntry(PackageFragmentRoot.java:588)
+ at org.eclipse.jst.jsp.core.taglib.ProjectDescription.handleElementChanged(ProjectDescription.java:1206)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:152)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:128)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:92)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:76)
+ at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1552)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1542)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1377)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1353)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
+ at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:368)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
+ at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:311)
+ at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1018)
+ at org.eclipse.core.internal.resources.File.create(File.java:163)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFileBytes(AbstractImageBuilder.java:811)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:791)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:186)
+ at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:398)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:362)
+ at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:173)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:299)
+ at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:59)
+ at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:269)
+ at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:183)
+ at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:624)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:166)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:197)
+ at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:246)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:249)
+ at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:302)
+ at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:334)
+ at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137)
+ at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1006 2012-09-19 20:00:50.167
+!MESSAGE WebContent/WEB-INF/lib/javax.jms.jar is not on its project's build path
+
+!ENTRY org.eclipse.jst.jsp.core 2 2 2012-09-19 20:00:50.183
+!MESSAGE Taglib Index IOException: /Siman/WebContent/WEB-INF/lib/javax.jms.jar \Siman\WebContent\WEB-INF\lib\javax.jms.jar (The system cannot find the path specified)
+
+!ENTRY org.eclipse.jdt.ui 4 10001 2012-09-19 20:03:24.345
+!MESSAGE Internal Error
+!STACK 1
+Java Model Exception: Java Model Status [WebContent/WEB-INF/lib/javax.jms.jar [in Siman] is not on its project's build path]
+ at org.eclipse.jdt.internal.core.PackageFragmentRoot.getRawClasspathEntry(PackageFragmentRoot.java:588)
+ at org.eclipse.jdt.ui.JavaElementLabels.getVariableLabel(JavaElementLabels.java:1085)
+ at org.eclipse.jdt.ui.JavaElementLabels.getArchiveLabel(JavaElementLabels.java:1074)
+ at org.eclipse.jdt.ui.JavaElementLabels.getPackageFragmentRootLabel(JavaElementLabels.java:1067)
+ at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:451)
+ at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:404)
+ at org.eclipse.jdt.ui.JavaElementLabels.getTextLabel(JavaElementLabels.java:379)
+ at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getText(JavaUILabelProvider.java:167)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getText(PackageExplorerLabelProvider.java:93)
+ at org.eclipse.jface.viewers.DecoratingLabelProvider.getText(DecoratingLabelProvider.java:129)
+ at org.eclipse.jface.viewers.DecoratingLabelProvider.updateLabel(DecoratingLabelProvider.java:351)
+ at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:183)
+ at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:135)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:911)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:97)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:991)
+ at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2026)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:806)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createAddedElements(AbstractTreeViewer.java:374)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.internalAdd(AbstractTreeViewer.java:265)
+ at org.eclipse.jface.viewers.TreeViewer.internalAdd(TreeViewer.java:645)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.add(AbstractTreeViewer.java:139)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$PackageExplorerProblemTreeViewer.add(PackageExplorerPart.java:258)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.add(AbstractTreeViewer.java:643)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider$5.run(PackageExplorerContentProvider.java:897)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.runUpdates(PackageExplorerContentProvider.java:171)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.runPendingUpdates(PackageExplorerContentProvider.java:163)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider$1.run(PackageExplorerContentProvider.java:144)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:158)
+ at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:326)
+ at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:495)
+ at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:268)
+ at org.eclipse.ui.internal.progress.ProgressManager$3.run(ProgressManager.java:909)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:944)
+ at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:919)
+ at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1127)
+ at org.eclipse.jdt.ui.actions.RefreshAction.run(RefreshAction.java:144)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:268)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:244)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1006 2012-09-19 20:03:24.345
+!MESSAGE WebContent/WEB-INF/lib/javax.jms.jar [in Siman] is not on its project's build path
+
+!ENTRY org.eclipse.jdt.ui 4 10001 2012-09-19 20:03:24.361
+!MESSAGE Internal Error
+!STACK 1
+Java Model Exception: Java Model Status [WebContent/WEB-INF/lib/javax.jms.jar [in Siman] is not on its project's build path]
+ at org.eclipse.jdt.internal.core.PackageFragmentRoot.getRawClasspathEntry(PackageFragmentRoot.java:588)
+ at org.eclipse.jdt.ui.JavaElementLabels.getVariableLabel(JavaElementLabels.java:1085)
+ at org.eclipse.jdt.ui.JavaElementLabels.getArchiveLabel(JavaElementLabels.java:1074)
+ at org.eclipse.jdt.ui.JavaElementLabels.getPackageFragmentRootLabel(JavaElementLabels.java:1067)
+ at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:451)
+ at org.eclipse.jdt.ui.JavaElementLabels.getElementLabel(JavaElementLabels.java:404)
+ at org.eclipse.jdt.ui.JavaElementLabels.getTextLabel(JavaElementLabels.java:379)
+ at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getText(JavaUILabelProvider.java:167)
+ at org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getText(PackageExplorerLabelProvider.java:93)
+ at org.eclipse.jface.viewers.DecoratingLabelProvider.getText(DecoratingLabelProvider.java:129)
+ at org.eclipse.jface.viewers.DecoratingLabelProvider.updateLabel(DecoratingLabelProvider.java:351)
+ at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:183)
+ at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:135)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:911)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:97)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:991)
+ at org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.doUpdateItem(ProblemTreeViewer.java:73)
+ at org.eclipse.jdt.internal.ui.viewsupport.ResourceToItemsMapper.updateItem(ResourceToItemsMapper.java:74)
+ at org.eclipse.jdt.internal.ui.viewsupport.ResourceToItemsMapper.resourceChanged(ResourceToItemsMapper.java:63)
+ at org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.handleLabelProviderChanged(ProblemTreeViewer.java:200)
+ at org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged(ContentViewer.java:74)
+ at org.eclipse.jdt.ui.ProblemsLabelDecorator.fireProblemsChanged(ProblemsLabelDecorator.java:386)
+ at org.eclipse.jdt.ui.ProblemsLabelDecorator.access$0(ProblemsLabelDecorator.java:381)
+ at org.eclipse.jdt.ui.ProblemsLabelDecorator$1.problemsChanged(ProblemsLabelDecorator.java:361)
+ at org.eclipse.jdt.internal.ui.viewsupport.ProblemMarkerManager$1.run(ProblemMarkerManager.java:177)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:158)
+ at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:326)
+ at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:495)
+ at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:268)
+ at org.eclipse.ui.internal.progress.ProgressManager$3.run(ProgressManager.java:909)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:944)
+ at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:919)
+ at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1127)
+ at org.eclipse.jdt.ui.actions.RefreshAction.run(RefreshAction.java:144)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:268)
+ at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:244)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1006 2012-09-19 20:03:24.361
+!MESSAGE WebContent/WEB-INF/lib/javax.jms.jar [in Siman] is not on its project's build path
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 20:30:40.127
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 20:34:28.885
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 20:37:40.736
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-19 20:39:30.397
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 09:43:08.586
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 09:45:06.494
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 09:49:41.585
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 09:50:19.843
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+!SESSION 2012-09-20 09:52:55.859 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang-2.4.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.9.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.523
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang-2.4.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.9.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:13:24.601
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang-2.4.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.9.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.027
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 10:15:22.074
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang-2.4.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.9.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 10:15:22.089
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 10:23:34.808
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+!SESSION 2012-09-20 10:54:01.960 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 10:58:07.124
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 10:58:44.329
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:00:37.285
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.jst.jsp.core 4 4 2012-09-20 11:06:03.624
+!MESSAGE Problem handling build path entry for /Siman/WebContent/WEB-INF/lib/commons-lang-2.4.jar
+!STACK 1
+Java Model Exception: Java Model Status [WebContent/WEB-INF/lib/commons-lang-2.4.jar is not on its project's build path]
+ at org.eclipse.jdt.internal.core.PackageFragmentRoot.getRawClasspathEntry(PackageFragmentRoot.java:588)
+ at org.eclipse.jst.jsp.core.taglib.ProjectDescription.handleElementChanged(ProjectDescription.java:1206)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:152)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:128)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:92)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:76)
+ at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1552)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1542)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1377)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1353)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
+ at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:368)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
+ at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:311)
+ at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1018)
+ at org.eclipse.core.internal.resources.File.create(File.java:163)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFileBytes(AbstractImageBuilder.java:811)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:791)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:186)
+ at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:398)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:362)
+ at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:173)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:299)
+ at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:59)
+ at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:269)
+ at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:183)
+ at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:624)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:166)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:197)
+ at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:246)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:249)
+ at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:302)
+ at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:334)
+ at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137)
+ at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1006 2012-09-20 11:06:03.624
+!MESSAGE WebContent/WEB-INF/lib/commons-lang-2.4.jar is not on its project's build path
+
+!ENTRY org.eclipse.jst.jsp.core 2 2 2012-09-20 11:06:03.640
+!MESSAGE Taglib Index IOException: /Siman/WebContent/WEB-INF/lib/commons-lang-2.4.jar \Siman\WebContent\WEB-INF\lib\commons-lang-2.4.jar (The system cannot find the path specified)
+
+!ENTRY org.eclipse.jst.jsp.core 4 4 2012-09-20 11:06:03.640
+!MESSAGE Problem handling build path entry for /Siman/WebContent/WEB-INF/lib/javassist-3.9.0.GA.jar
+!STACK 1
+Java Model Exception: Java Model Status [WebContent/WEB-INF/lib/javassist-3.9.0.GA.jar is not on its project's build path]
+ at org.eclipse.jdt.internal.core.PackageFragmentRoot.getRawClasspathEntry(PackageFragmentRoot.java:588)
+ at org.eclipse.jst.jsp.core.taglib.ProjectDescription.handleElementChanged(ProjectDescription.java:1206)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:152)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:128)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:92)
+ at org.eclipse.jst.jsp.core.taglib.TaglibIndex$ClasspathChangeListener.elementChanged(TaglibIndex.java:76)
+ at org.eclipse.jdt.internal.core.DeltaProcessor$3.run(DeltaProcessor.java:1552)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.notifyListeners(DeltaProcessor.java:1542)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.firePostChangeDelta(DeltaProcessor.java:1377)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.fire(DeltaProcessor.java:1353)
+ at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
+ at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:368)
+ at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:282)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:276)
+ at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148)
+ at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:311)
+ at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1018)
+ at org.eclipse.core.internal.resources.File.create(File.java:163)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFileBytes(AbstractImageBuilder.java:811)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:791)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:186)
+ at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:398)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:362)
+ at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:173)
+ at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:299)
+ at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:59)
+ at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:269)
+ at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:183)
+ at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:624)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:166)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:197)
+ at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:246)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:249)
+ at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:302)
+ at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:334)
+ at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137)
+ at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jdt.core 4 1006 2012-09-20 11:06:03.640
+!MESSAGE WebContent/WEB-INF/lib/javassist-3.9.0.GA.jar is not on its project's build path
+
+!ENTRY org.eclipse.jst.jsp.core 2 2 2012-09-20 11:06:03.640
+!MESSAGE Taglib Index IOException: /Siman/WebContent/WEB-INF/lib/javassist-3.9.0.GA.jar \Siman\WebContent\WEB-INF\lib\javassist-3.9.0.GA.jar (The system cannot find the path specified)
+
+!ENTRY org.eclipse.search 2 0 2012-09-20 11:15:58.112
+!MESSAGE Problems encountered during text search.
+!SUBENTRY 1 org.eclipse.search 2 2 2012-09-20 11:15:58.112
+!MESSAGE File 'Siman-Common/dist/siman-common.jar' has been skipped, problem while reading: ('Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.').
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:613)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.getInputStream(FileCharSequenceProvider.java:282)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.initializeReader(FileCharSequenceProvider.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.reset(FileCharSequenceProvider.java:268)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider.newCharSequence(FileCharSequenceProvider.java:40)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFile(TextSearchVisitor.java:255)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFiles(TextSearchVisitor.java:190)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:171)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:183)
+ at org.eclipse.search.core.text.TextSearchEngine$1.search(TextSearchEngine.java:54)
+ at org.eclipse.search.internal.ui.text.FileSearchQuery.run(FileSearchQuery.java:122)
+ at org.eclipse.search2.internal.ui.InternalSearchUI$InternalSearchJob.run(InternalSearchUI.java:94)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 11:15:58.112
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.search 2 0 2012-09-20 11:17:48.334
+!MESSAGE Problems encountered during text search.
+!SUBENTRY 1 org.eclipse.search 2 2 2012-09-20 11:17:48.334
+!MESSAGE File 'Siman-Common/dist/siman-common.jar' has been skipped, problem while reading: ('Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.').
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:613)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.getInputStream(FileCharSequenceProvider.java:282)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.initializeReader(FileCharSequenceProvider.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.reset(FileCharSequenceProvider.java:268)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider.newCharSequence(FileCharSequenceProvider.java:40)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFile(TextSearchVisitor.java:255)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFiles(TextSearchVisitor.java:190)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:171)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:183)
+ at org.eclipse.search.core.text.TextSearchEngine$1.search(TextSearchEngine.java:54)
+ at org.eclipse.search.internal.ui.text.FileSearchQuery.run(FileSearchQuery.java:122)
+ at org.eclipse.search2.internal.ui.InternalSearchUI$InternalSearchJob.run(InternalSearchUI.java:94)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 11:17:48.334
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:21:55.483
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:23:15.954
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.627
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.658
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:23:51.674
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.mylyn.bugzilla.ui 4 0 2012-09-20 11:28:22.386
+!MESSAGE Could not retrieve repository configuration for: https://bugs.eclipse.org/bugs
+!STACK 1
+org.eclipse.core.runtime.CoreException: I/O Error occurred while communicating with https://bugs.eclipse.org/bugs.
+
+UnknownHostException: bugs.eclipse.org
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.connectInternal(BugzillaClient.java:258)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getConnectGzip(BugzillaClient.java:215)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getRepositoryConfiguration(BugzillaClient.java:624)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin.getRepositoryConfiguration(BugzillaCorePlugin.java:130)
+ at org.eclipse.mylyn.internal.bugzilla.ui.BugzillaUiPlugin.updateQueryOptions(BugzillaUiPlugin.java:224)
+ at org.eclipse.mylyn.internal.bugzilla.ui.search.BugzillaSearchPage$10.run(BugzillaSearchPage.java:1310)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+org.eclipse.core.runtime.CoreException[5]: java.net.UnknownHostException: bugs.eclipse.org
+ at java.net.PlainSocketImpl.connect(Unknown Source)
+ at java.net.SocksSocketImpl.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
+ at org.eclipse.mylyn.web.core.SslProtocolSocketFactory.createSocket(SslProtocolSocketFactory.java:114)
+ at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
+ at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.connectInternal(BugzillaClient.java:254)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getConnectGzip(BugzillaClient.java:215)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getRepositoryConfiguration(BugzillaClient.java:624)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin.getRepositoryConfiguration(BugzillaCorePlugin.java:130)
+ at org.eclipse.mylyn.internal.bugzilla.ui.BugzillaUiPlugin.updateQueryOptions(BugzillaUiPlugin.java:224)
+ at org.eclipse.mylyn.internal.bugzilla.ui.search.BugzillaSearchPage$10.run(BugzillaSearchPage.java:1310)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+!SUBENTRY 1 org.eclipse.mylyn.bugzilla 4 5 2012-09-20 11:28:22.386
+!MESSAGE I/O Error occurred while communicating with https://bugs.eclipse.org/bugs.
+
+UnknownHostException: bugs.eclipse.org
+!STACK 0
+java.net.UnknownHostException: bugs.eclipse.org
+ at java.net.PlainSocketImpl.connect(Unknown Source)
+ at java.net.SocksSocketImpl.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
+ at org.eclipse.mylyn.web.core.SslProtocolSocketFactory.createSocket(SslProtocolSocketFactory.java:114)
+ at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
+ at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.connectInternal(BugzillaClient.java:254)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getConnectGzip(BugzillaClient.java:215)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getRepositoryConfiguration(BugzillaClient.java:624)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin.getRepositoryConfiguration(BugzillaCorePlugin.java:130)
+ at org.eclipse.mylyn.internal.bugzilla.ui.BugzillaUiPlugin.updateQueryOptions(BugzillaUiPlugin.java:224)
+ at org.eclipse.mylyn.internal.bugzilla.ui.search.BugzillaSearchPage$10.run(BugzillaSearchPage.java:1310)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+
+!ENTRY org.eclipse.mylyn.bugzilla.ui 4 0 2012-09-20 11:28:33.152
+!MESSAGE I/O Error occurred while communicating with https://bugs.eclipse.org/bugs.
+
+UnknownHostException: bugs.eclipse.org
+!STACK 1
+org.eclipse.core.runtime.CoreException: I/O Error occurred while communicating with https://bugs.eclipse.org/bugs.
+
+UnknownHostException: bugs.eclipse.org
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.connectInternal(BugzillaClient.java:258)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getConnectGzip(BugzillaClient.java:215)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getRepositoryConfiguration(BugzillaClient.java:624)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin.getRepositoryConfiguration(BugzillaCorePlugin.java:130)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector.updateAttributes(BugzillaRepositoryConnector.java:471)
+ at org.eclipse.mylyn.internal.bugzilla.ui.search.BugzillaSearchPage$10.run(BugzillaSearchPage.java:1314)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+org.eclipse.core.runtime.CoreException[5]: java.net.UnknownHostException: bugs.eclipse.org
+ at java.net.PlainSocketImpl.connect(Unknown Source)
+ at java.net.SocksSocketImpl.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
+ at org.eclipse.mylyn.web.core.SslProtocolSocketFactory.createSocket(SslProtocolSocketFactory.java:114)
+ at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
+ at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.connectInternal(BugzillaClient.java:254)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getConnectGzip(BugzillaClient.java:215)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getRepositoryConfiguration(BugzillaClient.java:624)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin.getRepositoryConfiguration(BugzillaCorePlugin.java:130)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector.updateAttributes(BugzillaRepositoryConnector.java:471)
+ at org.eclipse.mylyn.internal.bugzilla.ui.search.BugzillaSearchPage$10.run(BugzillaSearchPage.java:1314)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+!SUBENTRY 1 org.eclipse.mylyn.bugzilla 4 5 2012-09-20 11:28:33.152
+!MESSAGE I/O Error occurred while communicating with https://bugs.eclipse.org/bugs.
+
+UnknownHostException: bugs.eclipse.org
+!STACK 0
+java.net.UnknownHostException: bugs.eclipse.org
+ at java.net.PlainSocketImpl.connect(Unknown Source)
+ at java.net.SocksSocketImpl.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
+ at org.eclipse.mylyn.web.core.SslProtocolSocketFactory.createSocket(SslProtocolSocketFactory.java:114)
+ at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
+ at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
+ at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
+ at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.connectInternal(BugzillaClient.java:254)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getConnectGzip(BugzillaClient.java:215)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient.getRepositoryConfiguration(BugzillaClient.java:624)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaCorePlugin.getRepositoryConfiguration(BugzillaCorePlugin.java:130)
+ at org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector.updateAttributes(BugzillaRepositoryConnector.java:471)
+ at org.eclipse.mylyn.internal.bugzilla.ui.search.BugzillaSearchPage$10.run(BugzillaSearchPage.java:1314)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+
+!ENTRY org.eclipse.search 2 0 2012-09-20 11:29:09.965
+!MESSAGE Problems encountered during text search.
+!SUBENTRY 1 org.eclipse.search 2 2 2012-09-20 11:29:09.965
+!MESSAGE File 'Siman-Common/dist/siman-common.jar' has been skipped, problem while reading: ('Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.').
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:613)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.getInputStream(FileCharSequenceProvider.java:282)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.initializeReader(FileCharSequenceProvider.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.reset(FileCharSequenceProvider.java:268)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider.newCharSequence(FileCharSequenceProvider.java:40)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFile(TextSearchVisitor.java:255)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFiles(TextSearchVisitor.java:190)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:171)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:183)
+ at org.eclipse.search.core.text.TextSearchEngine$1.search(TextSearchEngine.java:54)
+ at org.eclipse.search.internal.ui.text.FileSearchQuery.run(FileSearchQuery.java:122)
+ at org.eclipse.search2.internal.ui.InternalSearchUI$InternalSearchJob.run(InternalSearchUI.java:94)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 11:29:09.965
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.search 2 0 2012-09-20 11:29:25.013
+!MESSAGE Problems encountered during text search.
+!SUBENTRY 1 org.eclipse.search 2 2 2012-09-20 11:29:25.013
+!MESSAGE File 'Siman-Common/dist/siman-common.jar' has been skipped, problem while reading: ('Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.').
+!STACK 1
+org.eclipse.core.internal.resources.ResourceException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:613)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.getInputStream(FileCharSequenceProvider.java:282)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.initializeReader(FileCharSequenceProvider.java:276)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider$FileCharSequence.reset(FileCharSequenceProvider.java:268)
+ at org.eclipse.search.internal.core.text.FileCharSequenceProvider.newCharSequence(FileCharSequenceProvider.java:40)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFile(TextSearchVisitor.java:255)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.processFiles(TextSearchVisitor.java:190)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:171)
+ at org.eclipse.search.internal.core.text.TextSearchVisitor.search(TextSearchVisitor.java:183)
+ at org.eclipse.search.core.text.TextSearchEngine$1.search(TextSearchEngine.java:54)
+ at org.eclipse.search.internal.ui.text.FileSearchQuery.run(FileSearchQuery.java:122)
+ at org.eclipse.search2.internal.ui.InternalSearchUI$InternalSearchJob.run(InternalSearchUI.java:94)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 11:29:25.013
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:30:22.108
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:38:25.624
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:39:22.141
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:47:44.423
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:51:52.603
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.011
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 11:52:51.042
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 12:00:48.010
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 12:05:17.800
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 12:05:19.441
+!MESSAGE Error starting server Tomcat v6.0 Server at localhost
+!STACK 1
+org.eclipse.core.runtime.CoreException: Could not launch in profiling mode because no profilers are configured.
+ at org.eclipse.jst.server.core.internal.JavaServerPlugin.configureProfiling(JavaServerPlugin.java:362)
+ at org.eclipse.jst.server.core.ServerProfilerDelegate.configureProfiling(ServerProfilerDelegate.java:60)
+ at org.eclipse.jst.server.tomcat.core.internal.TomcatLaunchConfigurationDelegate.launch(TomcatLaunchConfigurationDelegate.java:84)
+ at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:759)
+ at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:608)
+ at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:601)
+ at org.eclipse.wst.server.core.internal.Server.start(Server.java:1265)
+ at org.eclipse.wst.server.core.internal.Server.start(Server.java:1528)
+ at org.eclipse.wst.server.core.internal.Server$16.run(Server.java:1776)
+!SUBENTRY 1 org.eclipse.jst.server.core 4 0 2012-09-20 12:05:19.441
+!MESSAGE Could not launch in profiling mode because no profilers are configured.
+
+!ENTRY org.eclipse.jst.server.core 4 0 2012-09-20 12:05:19.566
+!MESSAGE Could not launch in profiling mode because no profilers are configured.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-20 12:53:11.611
+!MESSAGE Command UpdateProjectProperties excecuted in 250ms
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 12:58:13.324
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\SPlat.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.871
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\SPlat.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:29.934
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\SPlat.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.543
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\SPlat.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 12:58:34.574
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 13:07:13.169
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.emf.ecore.xmi 2 0 2012-09-20 13:26:59.441
+!MESSAGE
+!STACK 0
+java.lang.reflect.InvocationTargetException
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.emf.ecore.xmi.util.DefaultEcoreBuilder.generate(DefaultEcoreBuilder.java:89)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processSchemaLocations(XMLHandler.java:1583)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleTopLocations(XMLHandler.java:1624)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1247)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1347)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:981)
+ at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:83)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:964)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:695)
+ at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:167)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:179)
+ at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:180)
+ at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1354)
+ at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1155)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:256)
+ at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.demandLoad(ProjectResourceSetImpl.java:149)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:271)
+ at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.getResource(ProjectResourceSetImpl.java:396)
+ at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelResource(JEE5ModelProvider.java:143)
+ at org.eclipse.jst.jee.model.internal.Web25ModelProvider.getModelObject(Web25ModelProvider.java:42)
+ at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelObject(JEE5ModelProvider.java:198)
+ at org.eclipse.jst.jsf.core.internal.launch.JSFFileURL.getFileURL(JSFFileURL.java:60)
+ at org.eclipse.jst.jee.ui.internal.deployables.WebDeployableArtifactUtil.getModuleObject(WebDeployableArtifactUtil.java:175)
+ at org.eclipse.jst.jee.ui.internal.deployables.WebDeployableArtifactAdapterFactory.getModuleArtifact(WebDeployableArtifactAdapterFactory.java:30)
+ at org.eclipse.wst.server.core.model.ModuleArtifactAdapterDelegate.getModuleArtifacts(ModuleArtifactAdapterDelegate.java:46)
+ at org.eclipse.wst.server.core.internal.ModuleArtifactAdapter.getModuleArtifacts(ModuleArtifactAdapter.java:181)
+ at org.eclipse.wst.server.core.internal.ServerPlugin.getModuleArtifacts(ServerPlugin.java:892)
+ at org.eclipse.wst.server.ui.internal.actions.RunOnServerActionDelegate.selectionChanged(RunOnServerActionDelegate.java:732)
+ at org.eclipse.wst.server.ui.internal.ServerLaunchShortcut.launch(ServerLaunchShortcut.java:38)
+ at org.eclipse.debug.internal.ui.launchConfigurations.LaunchShortcutExtension.launch(LaunchShortcutExtension.java:429)
+ at org.eclipse.debug.internal.ui.actions.LaunchShortcutAction.run(LaunchShortcutAction.java:66)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+Caused by: org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: java.net.UnknownHostException: java.sun.com
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:316)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:275)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:398)
+ at org.eclipse.xsd.ecore.XSDEcoreBuilder.generateResources(XSDEcoreBuilder.java:2599)
+ ... 77 more
+Caused by: java.net.UnknownHostException: java.sun.com
+ at java.net.PlainSocketImpl.connect(Unknown Source)
+ at java.net.SocksSocketImpl.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at sun.net.NetworkClient.doConnect(Unknown Source)
+ at sun.net.www.http.HttpClient.openServer(Unknown Source)
+ at sun.net.www.http.HttpClient.openServer(Unknown Source)
+ at sun.net.www.http.HttpClient.<init>(Unknown Source)
+ at sun.net.www.http.HttpClient.New(Unknown Source)
+ at sun.net.www.http.HttpClient.New(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
+ at org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createURLInputStream(URIConverterImpl.java:688)
+ at org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createInputStream(URIConverterImpl.java:546)
+ at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1152)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:256)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:271)
+ ... 79 more
+Root exception:
+org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: java.net.UnknownHostException: java.sun.com
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:316)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:275)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:398)
+ at org.eclipse.xsd.ecore.XSDEcoreBuilder.generateResources(XSDEcoreBuilder.java:2599)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.emf.ecore.xmi.util.DefaultEcoreBuilder.generate(DefaultEcoreBuilder.java:89)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processSchemaLocations(XMLHandler.java:1583)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleTopLocations(XMLHandler.java:1624)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1247)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1347)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:981)
+ at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:83)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:964)
+ at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:695)
+ at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:167)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
+ at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
+ at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
+ at javax.xml.parsers.SAXParser.parse(Unknown Source)
+ at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:179)
+ at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:180)
+ at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1354)
+ at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1155)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:256)
+ at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.demandLoad(ProjectResourceSetImpl.java:149)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:271)
+ at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.getResource(ProjectResourceSetImpl.java:396)
+ at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelResource(JEE5ModelProvider.java:143)
+ at org.eclipse.jst.jee.model.internal.Web25ModelProvider.getModelObject(Web25ModelProvider.java:42)
+ at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelObject(JEE5ModelProvider.java:198)
+ at org.eclipse.jst.jsf.core.internal.launch.JSFFileURL.getFileURL(JSFFileURL.java:60)
+ at org.eclipse.jst.jee.ui.internal.deployables.WebDeployableArtifactUtil.getModuleObject(WebDeployableArtifactUtil.java:175)
+ at org.eclipse.jst.jee.ui.internal.deployables.WebDeployableArtifactAdapterFactory.getModuleArtifact(WebDeployableArtifactAdapterFactory.java:30)
+ at org.eclipse.wst.server.core.model.ModuleArtifactAdapterDelegate.getModuleArtifacts(ModuleArtifactAdapterDelegate.java:46)
+ at org.eclipse.wst.server.core.internal.ModuleArtifactAdapter.getModuleArtifacts(ModuleArtifactAdapter.java:181)
+ at org.eclipse.wst.server.core.internal.ServerPlugin.getModuleArtifacts(ServerPlugin.java:892)
+ at org.eclipse.wst.server.ui.internal.actions.RunOnServerActionDelegate.selectionChanged(RunOnServerActionDelegate.java:732)
+ at org.eclipse.wst.server.ui.internal.ServerLaunchShortcut.launch(ServerLaunchShortcut.java:38)
+ at org.eclipse.debug.internal.ui.launchConfigurations.LaunchShortcutExtension.launch(LaunchShortcutExtension.java:429)
+ at org.eclipse.debug.internal.ui.actions.LaunchShortcutAction.run(LaunchShortcutAction.java:66)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+Caused by: java.net.UnknownHostException: java.sun.com
+ at java.net.PlainSocketImpl.connect(Unknown Source)
+ at java.net.SocksSocketImpl.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at java.net.Socket.connect(Unknown Source)
+ at sun.net.NetworkClient.doConnect(Unknown Source)
+ at sun.net.www.http.HttpClient.openServer(Unknown Source)
+ at sun.net.www.http.HttpClient.openServer(Unknown Source)
+ at sun.net.www.http.HttpClient.<init>(Unknown Source)
+ at sun.net.www.http.HttpClient.New(Unknown Source)
+ at sun.net.www.http.HttpClient.New(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
+ at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
+ at org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createURLInputStream(URIConverterImpl.java:688)
+ at org.eclipse.emf.ecore.resource.impl.URIConverterImpl.createInputStream(URIConverterImpl.java:546)
+ at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1152)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:256)
+ at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:271)
+ ... 79 more
+
+!ENTRY org.eclipse.jst.jsf.core 4 0 2012-09-20 16:51:25.912
+!MESSAGE Error validating JSF
+!STACK 1
+org.eclipse.core.runtime.CoreException: File not found: D:\users\rkv\SIMAN\Workspace\Siman\dist\siman.war.
+ at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
+ at org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:336)
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:616)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.wst.sse.core.internal.modelhandler.ModelHandlerRegistry.getHandlerFor(ModelHandlerRegistry.java:138)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl.calculateType(ModelManagerImpl.java:483)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl._commonGetModel(ModelManagerImpl.java:306)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl.getModelForRead(ModelManagerImpl.java:1097)
+ at org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator.validateFile(JSPSemanticsValidator.java:109)
+ at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validate(JSPValidator.java:192)
+ at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validateInJob(JSPValidator.java:399)
+ at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:75)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+org.eclipse.core.runtime.CoreException[271]: java.io.FileNotFoundException: D:\users\rkv\SIMAN\Workspace\Siman\dist\siman.war (The system cannot find the file specified)
+ at java.io.FileInputStream.open(Native Method)
+ at java.io.FileInputStream.<init>(Unknown Source)
+ at org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:327)
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:616)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.wst.sse.core.internal.modelhandler.ModelHandlerRegistry.getHandlerFor(ModelHandlerRegistry.java:138)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl.calculateType(ModelManagerImpl.java:483)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl._commonGetModel(ModelManagerImpl.java:306)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl.getModelForRead(ModelManagerImpl.java:1097)
+ at org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator.validateFile(JSPSemanticsValidator.java:109)
+ at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validate(JSPValidator.java:192)
+ at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validateInJob(JSPValidator.java:399)
+ at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:75)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.filesystem 4 271 2012-09-20 16:51:25.912
+!MESSAGE File not found: D:\users\rkv\SIMAN\Workspace\Siman\dist\siman.war.
+!STACK 0
+java.io.FileNotFoundException: D:\users\rkv\SIMAN\Workspace\Siman\dist\siman.war (The system cannot find the file specified)
+ at java.io.FileInputStream.open(Native Method)
+ at java.io.FileInputStream.<init>(Unknown Source)
+ at org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:327)
+ at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:616)
+ at org.eclipse.core.internal.resources.File.getContents(File.java:287)
+ at org.eclipse.wst.sse.core.internal.modelhandler.ModelHandlerRegistry.getHandlerFor(ModelHandlerRegistry.java:138)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl.calculateType(ModelManagerImpl.java:483)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl._commonGetModel(ModelManagerImpl.java:306)
+ at org.eclipse.wst.sse.core.internal.model.ModelManagerImpl.getModelForRead(ModelManagerImpl.java:1097)
+ at org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator.validateFile(JSPSemanticsValidator.java:109)
+ at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validate(JSPValidator.java:192)
+ at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validateInJob(JSPValidator.java:399)
+ at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:75)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 16:53:36.635
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:53:36.635
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:53:36.635
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:53:36.635
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:53:36.635
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:53:36.666
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:53:36.666
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:53:36.666
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:53:36.666
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 16:54:35.574
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:54:35.574
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:54:35.574
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:54:35.574
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:54:35.574
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:54:35.606
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:54:35.606
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:54:35.606
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:54:35.606
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 16:54:55.575
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:54:55.575
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:54:55.575
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:54:55.575
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:54:55.575
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:54:55.606
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:54:55.606
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:54:55.606
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:54:55.606
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 16:55:17.060
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:55:17.060
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.060
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.060
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.060
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.060
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 368 2012-09-20 16:55:17.060
+!MESSAGE Resource '/Siman' does not exist.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:55:17.107
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.107
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.107
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.107
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:17.107
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 368 2012-09-20 16:55:17.107
+!MESSAGE Resource '/Siman' does not exist.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 16:55:48.483
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:55:48.483
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:48.483
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:48.483
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:55:48.483
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:55:48.514
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:48.514
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:48.514
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:55:48.514
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 16:56:18.750
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:56:18.750
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.750
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.750
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.750
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.750
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+!SUBENTRY 2 org.eclipse.core.resources 4 368 2012-09-20 16:56:18.750
+!MESSAGE Resource '/Siman' does not exist.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 16:56:18.781
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.781
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-kernel.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.781
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-manox.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.781
+!MESSAGE Resource is out of sync with the file system: '/SPlat/dist/splat-som.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 16:56:18.781
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+!SUBENTRY 1 org.eclipse.core.resources 4 368 2012-09-20 16:56:18.781
+!MESSAGE Resource '/Siman' does not exist.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Publishing failed with multiple errors
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:161)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 2 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.529
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.jst.server.tomcat.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Publishing failed with multiple errors
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activation.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\activemq-core-5.5.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\antlr-2.7.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-collections-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-fileupload-1.2.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-io-2.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-lang3-3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-1.1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-logging-api-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\commons-validator-1.3.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\dom4j-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\freemarker-2.3.19.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\geronimo-j2ee-management_1.1_spec-1.0.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\hibernate-3.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javassist-3.11.0.GA.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\javax.jms.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\jta-1.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\log4j-1.2.15.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-core-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\lucene-queries-2.9.2.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mailapi.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\mysql-connector-java-5.1.5-bin.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\ognl-3.0.5.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aop-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.asm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.aspects-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.beans-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.context.support-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.core-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.expression-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.instrument.tomcat-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jdbc-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.jms-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.orm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.oxm-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.test-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.transaction-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.portlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.servlet-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\org.springframework.web.struts-3.1.2.RELEASE.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-ooxml-schemas-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\poi-scratchpad-3.7-20101029.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\pop3.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\siman-common.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-api-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\slf4j-log4j12-1.6.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\smtp.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-kernel.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-manox.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\splat-som.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-core-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-spring-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\struts2-tiles-plugin-2.3.4.1.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-api-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-core-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\tiles-jsp-2.0.6.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xmlpublic.jar. May be locked by another process.
+!SUBENTRY 1 org.eclipse.wst.server.core 4 0 2012-09-20 17:03:34.560
+!MESSAGE Could not delete D:\users\rkv\SIMAN\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Siman\WEB-INF\lib\xwork-core-2.3.4.1.jar. May be locked by another process.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 17:05:39.908
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:155)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-20 17:05:39.908
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.core.resources 4 274 2012-09-20 17:05:39.939
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-20 17:13:36.252
+!MESSAGE Error calling delegate restart() Tomcat v6.0 Server at localhost
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-21 13:07:23.926
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:155)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-21 13:07:23.926
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.core.resources 4 274 2012-09-21 13:07:23.957
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-21 13:10:46.900
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:155)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-21 13:10:46.900
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.core.resources 4 274 2012-09-21 13:10:46.916
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-21 14:05:50.908
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:155)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-21 14:05:50.908
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.core.resources 4 274 2012-09-21 14:05:50.955
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-21 14:07:49.177
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:155)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-21 14:07:49.177
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.core.resources 4 274 2012-09-21 14:07:49.208
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.wst.server.core 4 0 2012-09-21 14:08:19.881
+!MESSAGE Task failed
+!STACK 1
+org.eclipse.core.runtime.CoreException: Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.throwException(PublishOperation2.java:155)
+ at org.eclipse.jst.server.tomcat.core.internal.PublishOperation2.execute(PublishOperation2.java:72)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.performTasks(ServerBehaviourDelegate.java:885)
+ at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:649)
+ at org.eclipse.wst.server.core.internal.Server.doPublish(Server.java:887)
+ at org.eclipse.wst.server.core.internal.Server.publish(Server.java:874)
+ at org.eclipse.wst.server.core.internal.PublishServerJob.run(PublishServerJob.java:72)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.core.resources 4 274 2012-09-21 14:08:19.881
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+
+!ENTRY org.eclipse.core.resources 4 274 2012-09-21 14:08:19.912
+!MESSAGE Resource is out of sync with the file system: '/Siman-Common/dist/siman-common.jar'.
+!SESSION 2012-09-21 15:07:54.441 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86 -data D:\users\rkv\SIMAN\Workspace
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:09.455
+!MESSAGE Command UpdateProjectProperties excecuted in 62ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:16.440
+!MESSAGE 1631 markers applied on 63 files in 16ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:16.440
+!MESSAGE Review code command terminated. 234 rules were executed against 63 files. Actual PMD duration is about 4767ms, that is about 75.666664 ms/file, 20.371796 ms/rule, 0.3233618 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:16.440
+!MESSAGE Command ReviewCode excecuted in 5016ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:38.503
+!MESSAGE Command UpdateProjectProperties excecuted in 16ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:39.003
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:39.003
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:39.018
+!MESSAGE Command ReviewCode excecuted in 375ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:49.847
+!MESSAGE Command BuildProject excecuted in 7657ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:54.909
+!MESSAGE 7 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:54.925
+!MESSAGE Review code command terminated. 215 rules were executed against 63 files. Actual PMD duration is about 125ms, that is about 1.9841269 ms/file, 0.5813953 ms/rule, 0.009228498 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:17:54.925
+!MESSAGE Command ReviewCode excecuted in 5594ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:13.097
+!MESSAGE Command UpdateProjectProperties excecuted in 31ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:13.582
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:13.582
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:13.582
+!MESSAGE Command ReviewCode excecuted in 360ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:26.551
+!MESSAGE Command UpdateProjectProperties excecuted in 16ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:27.645
+!MESSAGE 65 markers applied on 73 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:27.645
+!MESSAGE Review code command terminated. 215 rules were executed against 73 files. Actual PMD duration is about 609ms, that is about 8.342465 ms/file, 2.8325582 ms/rule, 0.038802166 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:27.660
+!MESSAGE Command ReviewCode excecuted in 984ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:41.958
+!MESSAGE Command UpdateProjectProperties excecuted in 32ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:18:42.442
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY org.eclipse.core.jobs 4 2 2012-09-21 15:18:42.473
+!MESSAGE An internal error occurred during: "ReviewCode".
+!STACK 0
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:122)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResource(ReviewCodeCmd.java:340)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processProject(ReviewCodeCmd.java:397)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResources(ReviewCodeCmd.java:327)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:178)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SESSION 2012-09-21 15:28:43.910 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY org.eclipse.core.resources 2 10035 2012-09-21 15:28:44.817
+!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes.
+
+!ENTRY net.sourceforge.pmd.runtime 4 0 2012-09-21 15:29:03.817
+!MESSAGE Runtime Exception when loading state ruleset file: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+!STACK 0
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:157)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:146)
+ at net.sourceforge.pmd.runtime.preferences.impl.PreferencesManagerImpl.getRuleSetFromStateLocation(PreferencesManagerImpl.java:308)
+ at net.sourceforge.pmd.runtime.preferences.impl.PreferencesManagerImpl.getRuleSet(PreferencesManagerImpl.java:145)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.<init>(ProjectPropertiesImpl.java:147)
+ at net.sourceforge.pmd.runtime.properties.impl.PropertiesFactoryImpl.newProjectProperties(PropertiesFactoryImpl.java:76)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:114)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1153)
+ at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1178)
+ at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:250)
+ at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:244)
+ at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:418)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY org.eclipse.jface 4 0 2012-09-21 15:29:56.365
+!MESSAGE java.lang.IllegalArgumentException: Path must include project and resource name: /siman-pmd.ruleset
+!STACK 0
+java.lang.IllegalArgumentException: Path must include project and resource name: /siman-pmd.ruleset
+ at org.eclipse.core.runtime.Assert.isLegal(Assert.java:62)
+ at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:1631)
+ at org.eclipse.core.internal.resources.Container.getFile(Container.java:116)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.getResolvedRuleSetFile(ProjectPropertiesImpl.java:285)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.isRuleSetFileExist(ProjectPropertiesImpl.java:277)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetFile(ProjectPropertiesImpl.java:232)
+ at net.sourceforge.pmd.ui.properties.UpdateProjectPropertiesCmd.execute(UpdateProjectPropertiesCmd.java:109)
+ at name.herlin.command.DefaultCommandProcessor.processCommand(DefaultCommandProcessor.java:47)
+ at name.herlin.command.AbstractProcessableCommand.performExecute(AbstractProcessableCommand.java:59)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.performOk(PMDPropertyPageController.java:194)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.performOk(PMDPropertyPage.java:482)
+ at org.eclipse.jface.preference.PreferenceDialog$12.run(PreferenceDialog.java:926)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:906)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:374)
+ at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY org.eclipse.jface 4 2 2012-09-21 15:30:04.194
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
+!STACK 0
+java.lang.IllegalArgumentException: Path must include project and resource name: /siman-pmd.ruleset
+ at org.eclipse.core.runtime.Assert.isLegal(Assert.java:62)
+ at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:1631)
+ at org.eclipse.core.internal.resources.Container.getFile(Container.java:116)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.getResolvedRuleSetFile(ProjectPropertiesImpl.java:285)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.isRuleSetFileExist(ProjectPropertiesImpl.java:277)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:164)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:122)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1153)
+ at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1178)
+ at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:250)
+ at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:244)
+ at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:418)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SESSION 2012-09-21 15:33:16.792 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:33:51.434
+!MESSAGE Command UpdateProjectProperties excecuted in 375ms
+
+!ENTRY org.eclipse.jst.jsp.core 4 4 2012-09-21 15:33:54.684
+!MESSAGE A workspace crash was detected. The previous session did not exit normally. Not using saved taglib indexes
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:02.012
+!MESSAGE Command BuildProject excecuted in 9219ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:02.059
+!MESSAGE 0 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:02.075
+!MESSAGE Review code command terminated. 0 rules were executed against 63 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:02.075
+!MESSAGE Command ReviewCode excecuted in 406ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.653
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.653
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.653
+!MESSAGE 65 markers applied on 73 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.669
+!MESSAGE Command ReviewCode excecuted in 1812ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.669
+!MESSAGE Review code command terminated. 215 rules were executed against 73 files. Actual PMD duration is about 1280ms, that is about 17.534246 ms/file, 5.9534883 ms/rule, 0.08155464 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.669
+!MESSAGE Command ReviewCode excecuted in 9438ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.809
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.825
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:12.825
+!MESSAGE Command ReviewCode excecuted in 16ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:34:14.606
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY org.eclipse.core.jobs 4 2 2012-09-21 15:34:14.606
+!MESSAGE An internal error occurred during: "ReviewCode".
+!STACK 0
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResource(ReviewCodeCmd.java:340)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processProject(ReviewCodeCmd.java:397)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResources(ReviewCodeCmd.java:327)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:178)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:40:22.210
+!MESSAGE Exception updating all projects after a preference changenull
+!STACK 0
+java.lang.reflect.InvocationTargetException
+ at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:350)
+ at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:495)
+ at net.sourceforge.pmd.ui.preferences.PMDPreferencePage.updateRuleSet(PMDPreferencePage.java:919)
+ at net.sourceforge.pmd.ui.preferences.PMDPreferencePage.performOk(PMDPreferencePage.java:160)
+ at org.eclipse.jface.preference.PreferenceDialog$12.run(PreferenceDialog.java:926)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:906)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:374)
+ at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.okPressed(WorkbenchPreferenceDialog.java:164)
+ at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+Caused by: java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.preferences.impl.PreferencesManagerImpl.updateConfiguredProjects(PreferencesManagerImpl.java:373)
+ at net.sourceforge.pmd.runtime.preferences.impl.PreferencesManagerImpl.setRuleSet(PreferencesManagerImpl.java:155)
+ at net.sourceforge.pmd.ui.preferences.PMDPreferencePage$14.run(PMDPreferencePage.java:921)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+Root exception:
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.preferences.impl.PreferencesManagerImpl.updateConfiguredProjects(PreferencesManagerImpl.java:373)
+ at net.sourceforge.pmd.runtime.preferences.impl.PreferencesManagerImpl.setRuleSet(PreferencesManagerImpl.java:155)
+ at net.sourceforge.pmd.ui.preferences.PMDPreferencePage$14.run(PMDPreferencePage.java:921)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.351
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.367
+!MESSAGE 0 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.367
+!MESSAGE 65 markers applied on 73 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.382
+!MESSAGE Review code command terminated. 0 rules were executed against 63 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.382
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.382
+!MESSAGE Command ReviewCode excecuted in 2312ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.382
+!MESSAGE Review code command terminated. 215 rules were executed against 73 files. Actual PMD duration is about 734ms, that is about 10.054794 ms/file, 3.4139535 ms/rule, 0.046766486 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.382
+!MESSAGE Command ReviewCode excecuted in 10094ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.382
+!MESSAGE Command ReviewCode excecuted in 10781ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:40:53.695
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY org.eclipse.core.jobs 4 2 2012-09-21 15:40:53.695
+!MESSAGE An internal error occurred during: "ReviewCode".
+!STACK 0
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResource(ReviewCodeCmd.java:340)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processProject(ReviewCodeCmd.java:397)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResources(ReviewCodeCmd.java:327)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:178)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:41:37.430
+!MESSAGE The project ruleset file cannot be found for project SimanThe project ruleset file cannot be found for project Siman
+!STACK 0
+name.herlin.command.CommandException: The project ruleset file cannot be found for project Siman
+ at net.sourceforge.pmd.ui.properties.UpdateProjectPropertiesCmd.execute(UpdateProjectPropertiesCmd.java:116)
+ at name.herlin.command.DefaultCommandProcessor.processCommand(DefaultCommandProcessor.java:47)
+ at name.herlin.command.AbstractProcessableCommand.performExecute(AbstractProcessableCommand.java:59)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.performOk(PMDPropertyPageController.java:194)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.performOk(PMDPropertyPage.java:482)
+ at org.eclipse.jface.preference.PreferenceDialog$12.run(PreferenceDialog.java:926)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:906)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:374)
+ at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+Caused by: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetFile(ProjectPropertiesImpl.java:233)
+ at net.sourceforge.pmd.ui.properties.UpdateProjectPropertiesCmd.execute(UpdateProjectPropertiesCmd.java:109)
+ ... 49 more
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:42:16.556
+!MESSAGE Project ruleset file already existsProject ruleset file already exists
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: Project ruleset file already exists
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.createDefaultRuleSetFile(ProjectPropertiesImpl.java:314)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.createDefaultRuleSetFile(PMDPropertyPageController.java:287)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.checkProjectRuleSetFile(PMDPropertyPageController.java:273)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.performOk(PMDPropertyPageController.java:182)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.performOk(PMDPropertyPage.java:482)
+ at org.eclipse.jface.preference.PreferenceDialog$12.run(PreferenceDialog.java:926)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:906)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:374)
+ at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:42:50.026
+!MESSAGE Project ruleset file already existsProject ruleset file already exists
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: Project ruleset file already exists
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.createDefaultRuleSetFile(ProjectPropertiesImpl.java:314)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.createDefaultRuleSetFile(PMDPropertyPageController.java:287)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.checkProjectRuleSetFile(PMDPropertyPageController.java:273)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.performOk(PMDPropertyPageController.java:182)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.performOk(PMDPropertyPage.java:482)
+ at org.eclipse.jface.preference.PreferenceDialog$12.run(PreferenceDialog.java:926)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:906)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:374)
+ at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:43:07.917
+!MESSAGE Project ruleset file already existsProject ruleset file already exists
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: Project ruleset file already exists
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.createDefaultRuleSetFile(ProjectPropertiesImpl.java:314)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.createDefaultRuleSetFile(PMDPropertyPageController.java:287)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.checkProjectRuleSetFile(PMDPropertyPageController.java:273)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.performOk(PMDPropertyPageController.java:182)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.performOk(PMDPropertyPage.java:482)
+ at org.eclipse.jface.preference.PreferenceDialog$12.run(PreferenceDialog.java:926)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:906)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:374)
+ at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SESSION 2012-09-21 15:43:23.167 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:38.716
+!MESSAGE Command UpdateProjectProperties excecuted in 62ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:40.310
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:40.326
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:40.326
+!MESSAGE Command ReviewCode excecuted in 829ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:50.591
+!MESSAGE Command BuildProject excecuted in 10313ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:52.279
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:52.310
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:52.357
+!MESSAGE Command ReviewCode excecuted in 1859ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:58.029
+!MESSAGE 7 markers applied on 63 files in 16ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:58.029
+!MESSAGE Review code command terminated. 215 rules were executed against 63 files. Actual PMD duration is about 500ms, that is about 7.9365077 ms/file, 2.3255813 ms/rule, 0.03691399 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:58.029
+!MESSAGE Command ReviewCode excecuted in 7969ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:58.326
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:58.342
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:44:58.342
+!MESSAGE Command ReviewCode excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:19.734
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:19.734
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:19.734
+!MESSAGE Command ReviewCode excecuted in 593ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:50.298
+!MESSAGE Command UpdateProjectProperties excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:50.735
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:50.735
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:50.751
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:58.704
+!MESSAGE Command BuildProject excecuted in 6922ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:58.876
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:59.095
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:46:59.110
+!MESSAGE Command ReviewCode excecuted in 656ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:47:05.157
+!MESSAGE 7 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:47:05.173
+!MESSAGE Review code command terminated. 215 rules were executed against 63 files. Actual PMD duration is about 110ms, that is about 1.7460318 ms/file, 0.5116279 ms/rule, 0.008121078 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:47:05.173
+!MESSAGE Command ReviewCode excecuted in 7063ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:47:05.470
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:47:05.486
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:47:05.486
+!MESSAGE Command ReviewCode excecuted in 329ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:48:04.331
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY org.eclipse.core.jobs 4 2 2012-09-21 15:48:04.346
+!MESSAGE An internal error occurred during: "ReviewCode".
+!STACK 0
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:413)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:175)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:48:16.706
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:48:16.706
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:48:16.722
+!MESSAGE Command ReviewCode excecuted in 0ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:48:19.550
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 4 0 2012-09-21 15:48:19.550
+!MESSAGE Error executing command ReviewCode: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+!STACK 0
+name.herlin.command.CommandException: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:433)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:175)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+Caused by: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetFile(ProjectPropertiesImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:228)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:413)
+ ... 3 more
+
+!ENTRY org.eclipse.jface 4 2 2012-09-21 15:48:29.238
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
+!STACK 0
+java.lang.RuntimeException: Couldn't find that class Can't find resource D:\. Make sure the resource is a valid file or URL or is on the CLASSPATH
+ at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:229)
+ at net.sourceforge.pmd.RuleSetFactory.createSingleRuleSet(RuleSetFactory.java:135)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:85)
+ at net.sourceforge.pmd.RuleSetFactory.createRuleSets(RuleSetFactory.java:70)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadRuleSetFromProject(ProjectPropertiesManagerImpl.java:169)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1642)
+ at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095)
+ at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1009)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:476)
+ at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:369)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:365)
+ at org.eclipse.jface.window.Window.create(Window.java:426)
+ at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1083)
+ at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:81)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:154)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:48:41.285
+!MESSAGE The project ruleset file cannot be found for project SPlatThe project ruleset file cannot be found for project SPlat
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetFile(ProjectPropertiesImpl.java:233)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:228)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1153)
+ at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1178)
+ at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:250)
+ at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:244)
+ at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:418)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SESSION 2012-09-21 15:52:27.681 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:53:50.496
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:53:50.496
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:53:50.496
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:53:50.496
+!MESSAGE Review code command terminated. 0 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 4 0 2012-09-21 15:53:50.496
+!MESSAGE Error executing command ReviewCode: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman-Common
+!STACK 0
+name.herlin.command.CommandException: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman-Common
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:433)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:175)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+Caused by: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman-Common
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:413)
+ ... 3 more
+
+!ENTRY net.sourceforge.pmd.runtime 4 0 2012-09-21 15:53:50.511
+!MESSAGE Error executing command ReviewCode: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+!STACK 0
+name.herlin.command.CommandException: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:433)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:175)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+Caused by: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:413)
+ ... 3 more
+
+!ENTRY net.sourceforge.pmd.runtime 4 0 2012-09-21 15:53:50.511
+!MESSAGE Error executing command ReviewCode: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman
+!STACK 0
+name.herlin.command.CommandException: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:433)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:175)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+Caused by: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:413)
+ ... 3 more
+
+!ENTRY net.sourceforge.pmd.runtime 4 0 2012-09-21 15:53:50.511
+!MESSAGE Error executing command ReviewCode: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Converter
+!STACK 0
+name.herlin.command.CommandException: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Converter
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:433)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.execute(ReviewCodeCmd.java:175)
+ at net.sourceforge.pmd.runtime.cmd.JobCommandProcessor$1.run(JobCommandProcessor.java:107)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+Caused by: net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Converter
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.runtime.cmd.ReviewCodeCmd.processResourceDelta(ReviewCodeCmd.java:413)
+ ... 3 more
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:53:58.590
+!MESSAGE The project ruleset file cannot be found for project Siman-CommonThe project ruleset file cannot be found for project Siman-Common
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman-Common
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1153)
+ at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1178)
+ at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:250)
+ at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:244)
+ at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:418)
+ at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
+ at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
+ at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:156)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:54:07.153
+!MESSAGE The project ruleset file cannot be found for project SPlatThe project ruleset file cannot be found for project SPlat
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project SPlat
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1642)
+ at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095)
+ at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1009)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:476)
+ at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:369)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:365)
+ at org.eclipse.jface.window.Window.create(Window.java:426)
+ at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1083)
+ at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:81)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:154)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:54:15.012
+!MESSAGE The project ruleset file cannot be found for project SimanThe project ruleset file cannot be found for project Siman
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Siman
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1642)
+ at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095)
+ at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1009)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:476)
+ at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:369)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:365)
+ at org.eclipse.jface.window.Window.create(Window.java:426)
+ at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1083)
+ at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:81)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:154)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.ui 4 0 2012-09-21 15:54:23.762
+!MESSAGE The project ruleset file cannot be found for project ConverterThe project ruleset file cannot be found for project Converter
+!STACK 0
+net.sourceforge.pmd.runtime.properties.PropertiesException: The project ruleset file cannot be found for project Converter
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesImpl.setRuleSetStoredInProject(ProjectPropertiesImpl.java:210)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.fillProjectProperties(ProjectPropertiesManagerImpl.java:227)
+ at net.sourceforge.pmd.runtime.properties.impl.ProjectPropertiesManagerImpl.loadProjectProperties(ProjectPropertiesManagerImpl.java:116)
+ at net.sourceforge.pmd.runtime.PMDRuntimePlugin.loadProjectProperties(PMDRuntimePlugin.java:141)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPageController.getPropertyPageBean(PMDPropertyPageController.java:147)
+ at net.sourceforge.pmd.ui.properties.PMDPropertyPage.createContents(PMDPropertyPage.java:180)
+ at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:233)
+ at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1456)
+ at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:1213)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1207)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:433)
+ at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:698)
+ at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.runtime.Platform.run(Platform.java:857)
+ at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:46)
+ at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
+ at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
+ at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1642)
+ at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1095)
+ at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1009)
+ at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:476)
+ at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:369)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:365)
+ at org.eclipse.jface.window.Window.create(Window.java:426)
+ at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1083)
+ at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:81)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:175)
+ at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:154)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SESSION 2012-09-21 15:56:56.110 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.110
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.126
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.126
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.126
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.142
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.142
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.142
+!MESSAGE Command ReviewCode excecuted in 1594ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.142
+!MESSAGE Command ReviewCode excecuted in 2094ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.142
+!MESSAGE Command ReviewCode excecuted in 2047ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.235
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.235
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:07.235
+!MESSAGE Command ReviewCode excecuted in 1640ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:18.126
+!MESSAGE Command UpdateProjectProperties excecuted in 359ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:18.579
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:18.595
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:18.595
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:34.548
+!MESSAGE Command BuildProject excecuted in 8703ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:36.330
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:36.361
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:36.377
+!MESSAGE Command ReviewCode excecuted in 2000ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.064
+!MESSAGE Command UpdateProjectProperties excecuted in 1718ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.064
+!MESSAGE 7 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.080
+!MESSAGE Review code command terminated. 215 rules were executed against 63 files. Actual PMD duration is about 359ms, that is about 5.698413 ms/file, 1.6697675 ms/rule, 0.026504245 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.080
+!MESSAGE Command ReviewCode excecuted in 8063ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.596
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.596
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.596
+!MESSAGE Command ReviewCode excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.611
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.611
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:42.627
+!MESSAGE Command ReviewCode excecuted in 360ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:45.064
+!MESSAGE Command BuildProject excecuted in 1734ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:45.174
+!MESSAGE 22 markers applied on 1 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:45.174
+!MESSAGE Review code command terminated. 215 rules were executed against 1 files. Actual PMD duration is about 78ms, that is about 78.0 ms/file, 0.3627907 ms/rule, 0.3627907 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:45.189
+!MESSAGE Command ReviewCode excecuted in 781ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:51.158
+!MESSAGE Command UpdateProjectProperties excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:51.596
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:51.596
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:51.596
+!MESSAGE Command ReviewCode excecuted in 313ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:53.440
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:53.455
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:53.455
+!MESSAGE Command ReviewCode excecuted in 359ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:53.471
+!MESSAGE Command BuildProject excecuted in 1094ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:55.690
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:55.690
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:55.705
+!MESSAGE Command ReviewCode excecuted in 343ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:58.424
+!MESSAGE Command UpdateProjectProperties excecuted in 312ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:58.862
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:58.862
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:57:58.862
+!MESSAGE Command ReviewCode excecuted in 329ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:02.768
+!MESSAGE Command BuildProject excecuted in 2953ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:03.205
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:03.768
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:03.768
+!MESSAGE Command ReviewCode excecuted in 953ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:04.987
+!MESSAGE 65 markers applied on 73 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:04.987
+!MESSAGE Review code command terminated. 215 rules were executed against 73 files. Actual PMD duration is about 719ms, that is about 9.849315 ms/file, 3.344186 ms/rule, 0.045810767 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:04.987
+!MESSAGE Command ReviewCode excecuted in 2625ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:05.518
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:05.518
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 15:58:05.534
+!MESSAGE Command ReviewCode excecuted in 360ms
+!SESSION 2012-09-21 16:00:51.272 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:07.851
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:07.851
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:07.851
+!MESSAGE Command ReviewCode excecuted in 1531ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:16.742
+!MESSAGE Command UpdateProjectProperties excecuted in 375ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:17.195
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:17.195
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:17.210
+!MESSAGE Command ReviewCode excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:22.554
+!MESSAGE Command BuildProject excecuted in 4375ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:24.101
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:24.195
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:24.195
+!MESSAGE Command ReviewCode excecuted in 1688ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:25.429
+!MESSAGE 65 markers applied on 73 files in 15ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:25.429
+!MESSAGE Review code command terminated. 215 rules were executed against 73 files. Actual PMD duration is about 1515ms, that is about 20.753426 ms/file, 7.0465117 ms/rule, 0.096527554 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:25.445
+!MESSAGE Command ReviewCode excecuted in 3406ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:26.336
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:26.336
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:01:26.336
+!MESSAGE Command ReviewCode excecuted in 688ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:02:56.057
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:02:56.057
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:02:56.057
+!MESSAGE Command ReviewCode excecuted in 657ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:00.432
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:00.432
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:00.432
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:02.463
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:02.463
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:02.463
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:10.526
+!MESSAGE Command UpdateProjectProperties excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:10.963
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:10.963
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:10.979
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:12.870
+!MESSAGE Command BuildProject excecuted in 1188ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:14.495
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:14.495
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:14.495
+!MESSAGE Command ReviewCode excecuted in 2047ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:15.026
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:15.026
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:15.026
+!MESSAGE Command ReviewCode excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:35.417
+!MESSAGE Command UpdateProjectProperties excecuted in 344ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:35.870
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:35.870
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:35.870
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:43.558
+!MESSAGE Command BuildProject excecuted in 7235ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:44.917
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:45.136
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:45.152
+!MESSAGE Command ReviewCode excecuted in 1953ms
+
+!ENTRY org.eclipse.core.resources 4 2 2012-09-21 16:03:50.792
+!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.core.resources".
+!STACK 0
+java.lang.NullPointerException
+ at org.eclipse.swt.widgets.Display.asyncExec(Display.java:631)
+ at org.eclipse.ui.internal.AbstractWorkingSetManager.firePropertyChange(AbstractWorkingSetManager.java:380)
+ at org.eclipse.ui.internal.AbstractWorkingSetManager.internalAddWorkingSet(AbstractWorkingSetManager.java:207)
+ at org.eclipse.ui.internal.AbstractWorkingSetManager.restoreWorkingSetState(AbstractWorkingSetManager.java:461)
+ at org.eclipse.ui.internal.WorkingSetManager.restoreState(WorkingSetManager.java:108)
+ at org.eclipse.ui.internal.WorkbenchPlugin.getWorkingSetManager(WorkbenchPlugin.java:594)
+ at org.eclipse.ui.internal.Workbench.getWorkingSetManager(Workbench.java:1258)
+ at org.eclipse.debug.ui.RefreshTab.restoreWorkingSet(RefreshTab.java:528)
+ at org.eclipse.debug.ui.RefreshTab.getWorkingSet(RefreshTab.java:600)
+ at org.eclipse.debug.ui.RefreshTab.getRefreshResources(RefreshTab.java:473)
+ at org.eclipse.ui.externaltools.internal.launchConfigurations.ExternalToolsUtil.getResourcesForBuildScope(ExternalToolsUtil.java:180)
+ at org.eclipse.ui.externaltools.internal.model.ExternalToolBuilder.build(ExternalToolBuilder.java:77)
+ at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:624)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:166)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:197)
+ at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:246)
+ at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
+ at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:249)
+ at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:302)
+ at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:334)
+ at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:137)
+ at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:50.808
+!MESSAGE 7 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:50.871
+!MESSAGE Review code command terminated. 215 rules were executed against 63 files. Actual PMD duration is about 110ms, that is about 1.7460318 ms/file, 0.5116279 ms/rule, 0.008121078 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:03:50.886
+!MESSAGE Command ReviewCode excecuted in 7844ms
+!SESSION 2012-09-21 16:03:55.902 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86
+
+!ENTRY org.eclipse.team.cvs.ui 4 0 2012-09-21 16:08:57.300
+!MESSAGE SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+!STACK 1
+org.eclipse.team.internal.ccvs.core.CVSException: SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolderMemberFetcher.performErrorCheck(RemoteFolderMemberFetcher.java:155)
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolderMemberFetcher.fetchMembers(RemoteFolderMemberFetcher.java:70)
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolderMemberFetcher.fetchMembers(RemoteFolderMemberFetcher.java:55)
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolder.getMembers(RemoteFolder.java:218)
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteModule.getMembers(RemoteModule.java:269)
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolder.getMembers(RemoteFolder.java:204)
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolder.members(RemoteFolder.java:424)
+ at org.eclipse.team.internal.ccvs.ui.operations.FetchMembersOperation.execute(FetchMembersOperation.java:119)
+ at org.eclipse.team.internal.ccvs.ui.operations.CVSOperation.run(CVSOperation.java:81)
+ at org.eclipse.team.internal.ccvs.ui.model.RemoteFolderElement.fetchDeferredChildren(RemoteFolderElement.java:72)
+ at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:196)
+ at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
+!SUBENTRY 1 org.eclipse.team.cvs.core 4 -17 2012-09-21 16:08:57.300
+!MESSAGE SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+
+!ENTRY org.eclipse.team.cvs.ui 4 0 2012-09-21 16:12:22.321
+!MESSAGE Internal error
+!STACK 1
+org.eclipse.team.internal.ccvs.core.CVSException: SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolder.fetchChildren(RemoteFolder.java:499)
+ at org.eclipse.team.internal.ccvs.ui.tags.SingleFolderTagSource$2.run(SingleFolderTagSource.java:121)
+ at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
+!SUBENTRY 1 org.eclipse.team.cvs.core 4 -17 2012-09-21 16:12:22.321
+!MESSAGE SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+
+!ENTRY org.eclipse.team.cvs.ui 4 0 2012-09-21 16:12:29.775
+!MESSAGE SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+!STACK 1
+org.eclipse.team.internal.ccvs.core.CVSException: SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+ at org.eclipse.team.internal.ccvs.core.resources.RemoteFolder.fetchChildren(RemoteFolder.java:499)
+ at org.eclipse.team.internal.ccvs.ui.tags.CVSFolderElement.fetchChildren(CVSFolderElement.java:36)
+ at org.eclipse.team.internal.ccvs.ui.model.CVSModelElement.getChildren(CVSModelElement.java:67)
+ at org.eclipse.ui.model.BaseWorkbenchContentProvider.getChildren(BaseWorkbenchContentProvider.java:64)
+ at org.eclipse.team.internal.ccvs.ui.model.RemoteContentProvider.getChildren(RemoteContentProvider.java:116)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1320)
+ at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:378)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.getFilteredChildren(AbstractTreeViewer.java:615)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:581)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:778)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:755)
+ at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:627)
+ at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1410)
+ at org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:918)
+ at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:1421)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:125)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:947)
+ at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:7053)
+ at org.eclipse.swt.widgets.Control.wmNotify(Control.java:4563)
+ at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1581)
+ at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:4216)
+ at org.eclipse.swt.widgets.Control.windowProc(Control.java:3724)
+ at org.eclipse.swt.widgets.Display.windowProc(Display.java:4351)
+ at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
+ at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2179)
+ at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1541)
+ at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:5798)
+ at org.eclipse.swt.widgets.Control.windowProc(Control.java:3705)
+ at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5370)
+ at org.eclipse.swt.widgets.Display.windowProc(Display.java:4364)
+ at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
+ at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2265)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3291)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.team.internal.ccvs.ui.actions.ConfigureTagsFromRepoViewOnFolder$2.run(ConfigureTagsFromRepoViewOnFolder.java:81)
+ at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:158)
+ at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:118)
+ at org.eclipse.swt.widgets.Display.syncExec(Display.java:4097)
+ at org.eclipse.team.internal.ccvs.ui.actions.ConfigureTagsFromRepoViewOnFolder$1.run(ConfigureTagsFromRepoViewOnFolder.java:74)
+ at org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager.run(RepositoryManager.java:717)
+ at org.eclipse.team.internal.ccvs.ui.actions.CVSAction$2.run(CVSAction.java:360)
+ at org.eclipse.team.internal.ccvs.ui.actions.CVSAction$3.run(CVSAction.java:369)
+ at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
+ at org.eclipse.team.internal.ccvs.ui.actions.CVSAction.run(CVSAction.java:366)
+ at org.eclipse.team.internal.ccvs.ui.actions.ConfigureTagsFromRepoViewOnFolder.execute(ConfigureTagsFromRepoViewOnFolder.java:70)
+ at org.eclipse.team.internal.ccvs.ui.actions.CVSAction.run(CVSAction.java:117)
+ at org.eclipse.team.internal.ui.actions.TeamAction.runWithEvent(TeamAction.java:515)
+ at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:246)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+!SUBENTRY 1 org.eclipse.team.cvs.core 4 -17 2012-09-21 16:12:29.775
+!MESSAGE SIMAN_SRC: Folder SIMAN_SRC does not exist remotely or you do not have permission to access it
+!SESSION 2012-09-21 16:21:40.601 -----------------------------------------------
+eclipse.buildId=M20080221-1800
+java.version=1.6.0_20-ea
+java.vendor=Sun Microsystems Inc.
+BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ru_RU
+Command-line arguments: -os win32 -ws win32 -arch x86 -data D:\users\rkv\SIMAN\Workspace
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:25:43.342
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:25:43.420
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:25:43.451
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:25:43.748
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:25:44.107
+!MESSAGE Command ReviewCode excecuted in 1532ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:25:44.139
+!MESSAGE Command ReviewCode excecuted in 1938ms
+
+!ENTRY com.atlassw.tools.eclipse.checkstyle 4 0 2012-09-21 16:26:43.109
+!MESSAGE Checkstyle-Plugin: checkstyle-siman-javadoc.xml is no project in the workspace.
+!STACK 0
+com.atlassw.tools.eclipse.checkstyle.util.CheckstylePluginException: checkstyle-siman-javadoc.xml is no project in the workspace.
+ at com.atlassw.tools.eclipse.checkstyle.config.configtypes.ProjectConfigurationEditor.getEditedWorkingCopy(ProjectConfigurationEditor.java:291)
+ at com.atlassw.tools.eclipse.checkstyle.config.gui.CheckConfigurationPropertiesDialog.okPressed(CheckConfigurationPropertiesDialog.java:337)
+ at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:466)
+ at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:618)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at com.atlassw.tools.eclipse.checkstyle.config.gui.CheckConfigurationWorkingSetEditor.addCheckConfig(CheckConfigurationWorkingSetEditor.java:495)
+ at com.atlassw.tools.eclipse.checkstyle.config.gui.CheckConfigurationWorkingSetEditor.access$300(CheckConfigurationWorkingSetEditor.java:79)
+ at com.atlassw.tools.eclipse.checkstyle.config.gui.CheckConfigurationWorkingSetEditor$PageController.widgetSelected(CheckConfigurationWorkingSetEditor.java:396)
+ at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
+ at org.eclipse.jface.window.Window.open(Window.java:796)
+ at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:65)
+ at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
+ at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
+ at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
+ at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
+ at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
+ at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
+ at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
+ at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
+ at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
+ at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
+ at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
+ at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
+ at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
+ at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
+ at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
+ at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
+ at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
+ at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
+ at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
+ at java.lang.reflect.Method.invoke(Unknown Source)
+ at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
+ at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
+ at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:11.817
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:11.833
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:11.833
+!MESSAGE Command ReviewCode excecuted in 359ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:18.036
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:18.052
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:18.052
+!MESSAGE Command ReviewCode excecuted in 1500ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:19.443
+!MESSAGE 65 markers applied on 73 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:19.443
+!MESSAGE Review code command terminated. 215 rules were executed against 73 files. Actual PMD duration is about 1437ms, that is about 19.68493 ms/file, 6.683721 ms/rule, 0.09155782 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:19.443
+!MESSAGE Command ReviewCode excecuted in 3235ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:20.005
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:20.005
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:20.021
+!MESSAGE Command ReviewCode excecuted in 359ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:24.661
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:24.661
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:24.677
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:28.990
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:28.990
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:28.990
+!MESSAGE Command ReviewCode excecuted in 1922ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:29.568
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:29.568
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:29.568
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:32.443
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:32.443
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:32.443
+!MESSAGE Command ReviewCode excecuted in 328ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:49.412
+!MESSAGE 7 markers applied on 63 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:49.412
+!MESSAGE Review code command terminated. 215 rules were executed against 63 files. Actual PMD duration is about 109ms, that is about 1.7301587 ms/file, 0.5069767 ms/rule, 0.00804725 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:49.428
+!MESSAGE Command ReviewCode excecuted in 7797ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:50.100
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:50.100
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:50.100
+!MESSAGE Command ReviewCode excecuted in 516ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:53.678
+!MESSAGE 22 markers applied on 1 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:53.693
+!MESSAGE Review code command terminated. 215 rules were executed against 1 files. Actual PMD duration is about 47ms, that is about 47.0 ms/file, 0.21860465 ms/rule, 0.21860465 ms/filerule
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:53.709
+!MESSAGE Command ReviewCode excecuted in 828ms
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:53.818
+!MESSAGE 0 markers applied on 0 files in 0ms.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:53.834
+!MESSAGE Review code command terminated. 215 rules were executed against 0 files. PMD was not executed.
+
+!ENTRY net.sourceforge.pmd.runtime 1 0 2012-09-21 16:30:53.834
+!MESSAGE Command ReviewCode excecuted in 422ms
--- /dev/null
+org.eclipse.core.runtime=1
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <fileset name="all" enabled="true" check-config-name="Siman CheckStyle" local="false">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/SPlat"/>
+ <classpathentry kind="lib" path="/Siman/WebContent/WEB-INF/lib/javax.jms.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/Siman"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_CLEAN_TARGETS" value="clean,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Converter/dist" type="2"/> </launchConfigurationWorkingSet>}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Converter/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Converter"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Converter/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,clean"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Converter}"/>
+</launchConfiguration>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+ <useProjectRuleSet>true</useProjectRuleSet>
+ <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+ <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Converter</name>
+ <comment></comment>
+ <projects>
+ <project>SPlat</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/Ant_Converter_Builder.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sourceforge.pmd.runtime.pmdBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+ <nature>net.sourceforge.pmd.runtime.pmdNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>
+ <rule ref="rulesets/controversial.xml/NullAssignment"/>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn"/>
+ <rule ref="rulesets/controversial.xml/UnusedModifier"/>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
+ <rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>
+ <rule ref="rulesets/controversial.xml/DontImportSun"/>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
+ <rule ref="rulesets/controversial.xml/DefaultPackage"/>
+ <rule ref="rulesets/controversial.xml/BooleanInversion"/>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis"/>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode"/>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration"/>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer"/>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod"/>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray"/>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable"/>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck"/>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals"/>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup"/>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck"/>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP"/>
+ <rule ref="rulesets/basic.xml/CheckResultSet"/>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln"/>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException"/>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError"/>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally"/>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList"/>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap"/>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator"/>
+ <rule ref="rulesets/migrating.xml/AvoidEnumAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/AvoidAssertAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation"/>
+ <rule ref="rulesets/migrating.xml/LongInstantiation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseBeforeAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseAfterAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseTestAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4SuitesShouldUseSuiteAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnitUseExpected"/>
+ <rule ref="rulesets/design.xml/UseSingleton"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters"/>
+ <rule ref="rulesets/design.xml/SwitchDensity"/>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration"/>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>
+ <rule ref="rulesets/design.xml/CloseResource"/>
+ <rule ref="rulesets/design.xml/NonStaticInitializer"/>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
+ <rule ref="rulesets/design.xml/BadComparison"/>
+ <rule ref="rulesets/design.xml/EqualsNull"/>
+ <rule ref="rulesets/design.xml/ConfusingTernary"/>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass"/>
+ <rule ref="rulesets/design.xml/IdempotentOperations"/>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale"/>
+ <rule ref="rulesets/design.xml/ImmutableField"/>
+ <rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch"/>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>
+ <rule ref="rulesets/design.xml/SimplifyConditional"/>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
+ <rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor"/>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface"/>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter"/>
+ <rule ref="rulesets/design.xml/PreserveStackTrace"/>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty"/>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
+ <rule ref="rulesets/design.xml/SingularField"/>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod"/>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement"/>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader"/>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit"/>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal"/>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads"/>
+ <rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList"/>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops"/>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString"/>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports"/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/imports.xml/DuplicateImports"/>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage"/>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports"/>
+ <rule ref="rulesets/junit.xml/JUnitStaticSuite"/>
+ <rule ref="rulesets/junit.xml/JUnitSpelling"/>
+ <rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>
+ <rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>
+ <rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>
+ <rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>
+ <rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertNullInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/SimplifyBooleanAssertion"/>
+ <rule ref="rulesets/naming.xml/ShortVariable"/>
+ <rule ref="rulesets/naming.xml/LongVariable"/>
+ <rule ref="rulesets/naming.xml/ShortMethodName"/>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions"/>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions"/>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions"/>
+ <rule ref="rulesets/naming.xml/AbstractNaming"/>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns"/>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>
+ <rule ref="rulesets/naming.xml/NoPackage"/>
+ <rule ref="rulesets/naming.xml/PackageCase"/>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName"/>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
+ <rule ref="rulesets/codesize.xml/NPathComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyFields"/>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount"/>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount"/>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyMethods"/>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation"/>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/>
+ <rule ref="rulesets/strings.xml/StringInstantiation"/>
+ <rule ref="rulesets/strings.xml/StringToString"/>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering"/>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength"/>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar"/>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends"/>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar"/>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck"/>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration"/>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf"/>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar"/>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings"/>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField"/>
+</ruleset>
--- /dev/null
+converter.src.dir=src
+converter.dist.dir=dist
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project default="create_run_jar" name="Runnable Jar for Project SPlat with Jar-in-Jar Loader builder">
+ <!--this file was created by Eclipse Runnable JAR Export Wizard-->
+ <!--ANT 1.7 is required -->
+ <property environment="env" />
+ <property file="../SPlat/build.properties" description="set the SPlat build parameters" />
+ <property file="build.properties" description="set the build parameters" />
+
+ <!-- ================================================= -->
+ <!-- create_run_jar: Build the converter Jar -->
+ <!-- ================================================= -->
+ <target name="create_run_jar" description="Build the converter Jar">
+ <mkdir dir="${converter.dist.dir}" />
+ <jar destfile="${converter.dist.dir}/converter.jar">
+ <manifest>
+ <attribute name="Main-Class" value="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader" />
+ <attribute name="Rsrc-Main-Class" value="Test" />
+ <attribute name="Class-Path" value="." />
+ <attribute name="Rsrc-Class-Path" value="./ mysql-connector-java-5.1.5-bin.jar hibernate-3.5.jar dom4j-1.6.1.jar log4j-1.2.15.jar splat-kernel.jar commons-collections-3.1.jar antlr-2.7.6.jar javassist-3.9.0.GA.jar jta-1.1.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar splat-som.jar lucene-core-2.9.2.jar lucene-queries-2.9.2.jar splat-manox.jar poi-3.7-20101029.jar poi-ooxml-3.7-20101029.jar xmlpublic.jar poi-ooxml-schemas-3.7-20101029.jar" />
+ </manifest>
+ <zipfileset src="${converter.src.dir}/jar-in-jar-loader.zip" />
+ <fileset dir="../SPlat/${splat.bin.dir}">
+ <include name="*" />
+ </fileset>
+ <zipfileset dir="../SPlat/${splat.lib.dir}">
+ <include name="*.jar" />
+ </zipfileset>
+ <!--<zipfileset dir="../SPlat/${splat.lib.dir}" includes="mysql-connector-java-5.1.5-bin.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="hibernate-3.5.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="dom4j-1.6.1.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="log4j-1.2.15.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="splat-kernel.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="commons-collections-3.1.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="antlr-2.7.6.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="javassist-3.9.0.GA.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="jta-1.1.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="slf4j-api-1.6.1.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="slf4j-log4j12-1.6.1.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="splat-som.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="lucene-core-2.9.2.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="lucene-queries-2.9.2.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="splat-manox.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="poi-3.7-20101029.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="poi-ooxml-3.7-20101029.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="xmlpublic.jar"/>
+ <zipfileset dir="../SPlat/${splat.lib.dir}" includes="poi-ooxml-schemas-3.7-20101029.jar"/>-->
+ </jar>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- clean: Clean the dist directory -->
+ <!-- ================================================= -->
+ <target name="clean" description="clean the build directory">
+ <echo message="deleting files in ${splat.dist.dir}" />
+ <delete includeemptydirs="true" failonerror="false">
+ <fileset dir="${splat.dist.dir}" includes="**/*" />
+ </delete>
+ </target>
+</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description>PMD Plugin preferences rule set Hewis
+ level 1 : not to be violated AREVA requirements
+ level 2 : not to be violated EURIWARE requirements
+ level 3 :should not be violated AREVA requirements
+ level 4 :should not be violated EURIWARE requirements
+ level 5 : good practices
+ </description>
+
+ <exclude-pattern>.*/org/.*</exclude-pattern>
+ <exclude-pattern>.*/test/.*</exclude-pattern>
+
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringInstantiation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringToString">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseSingleton">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchDensity">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CloseResource">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/BadComparison">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EqualsNull">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConfusingTernary">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/IdempotentOperations">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ImmutableField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyConditional">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PreserveStackTrace">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SingularField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/LooseCoupling">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CheckResultSet">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/NullAssignment">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnusedModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DontImportSun">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DefaultPackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/BooleanInversion">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace">
+ <priority>1</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/DuplicateImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang">
+ <priority>2</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/UnusedImports">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/LongInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize">
+ <properties>
+ <property name="prefix" value="_"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions">
+ <properties>
+ <property name="staticPrefix" value=""/>
+ <property name="staticSuffix" value=""/>
+ <property name="memberPrefix" value="_"/>
+ <property name="memberSuffix" value=""/>
+ </properties>
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AbstractNaming">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/NoPackage">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/PackageCase">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NPathComplexity">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
+ <properties>
+ <property name="minimun" value="50"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList">
+ <properties>
+ <property name="minimun" value="10"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength">
+ <properties>
+ <property name="minimun" value="1000"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
+ <properties>
+ <property name="reportLevel" value="25"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount">
+ <priority>4</priority>
+ <properties>
+ <property name="reportLevel" value="20"/>
+ </properties>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyFields">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyMethods">
+ <properties>
+ <property name="maxmethods" value="15"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter">
+ <priority>5</priority>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid naming fields without the prefix '_'" name="FieldNamingRules">
+ <description>
+ Detects when a field has not a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private int _foo; // OK
+ private int bar; // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //FieldDeclaration[@Static='false']
+ //VariableDeclarator
+ //VariableDeclaratorId
+ [not(starts-with(@Image, '_'))]
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid parameters with the prefix '_'" name="ParametersNamingRules">
+ <description>
+ Detects when a parameter has a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private void foo(int bar) // OK
+ private void foo2(int _bar) // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //VariableDeclaratorId
+ [starts-with(@Image, '_')]
+ [not (../../../FieldDeclaration)]
+
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule name="DoNotUseConditionalExpression "
+ message="Do not use condition?statement:statement;"
+ class="net.sourceforge.pmd.rules.XPathRule">
+ <description>
+ Detect using of condition?statement:statement;
+ </description>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value>
+ <![CDATA[
+ //ConditionalExpression
+ ]]>
+ </value>
+ </property>
+ </properties>
+ <priority>3</priority>
+ <example>
+ <![CDATA[
+ public class Sample {
+ boolean bar(int x, int y) {
+ if (x== y)
+ same;
+ else
+ diff;
+
+
+ return (x == y) ? same : diff;
+ // wrong
+ }
+
+
+ }
+ ]]>
+ </example>
+ </rule>
+
+
+</ruleset>
--- /dev/null
+import java.io.*;
+import java.util.Properties;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+
+public class Launcher {
+
+ private String executable;
+ private String source;
+ private File log;
+
+// ==============================================================================================================================
+// Main
+// ==============================================================================================================================
+
+ public static void main(String[] args) {
+// --------------------------------------
+ if (args.length < 2) return;
+
+ Launcher session = new Launcher();
+ session.executable = args[0];
+ session.source = args[1];
+
+ String[] parse = session.source.split("\\x2E");
+ StringBuffer path = new StringBuffer(parse[0]);
+ for (int i=1; i<parse.length-1; i++) path.append(".").append(parse[i]);
+ try {
+ session.log = new File(path.append(".").append("log").toString());
+ session.log.createNewFile();
+ session.doConvert();
+ }
+ catch (Exception error) {
+ System.out.print(error.getMessage());
+ }
+ }
+
+// ==============================================================================================================================
+// Implementation
+// ==============================================================================================================================
+
+ private void doConvert () throws IOException {
+// -------------------------
+ Writer output = new BufferedWriter( new FileWriter(log) );
+
+ output.write("Conversion of " + source + "\r\n");
+ try {
+ String jndir = System.getProperty("resource.dir") + "jndi.conf";
+ File propfile = new File(jndir);
+ Properties jndprops = new Properties();
+
+ jndprops.load( new FileInputStream(propfile) );
+
+ Context context = new InitialContext(jndprops);
+// ConnectionFactory factory = (javax.jms.QueueConnectionFactory)context.lookup("QueueConnectionFactory");
+// Connection connex = factory.createConnection();
+// Session session = connex.createSession(false, Session.AUTO_ACKNOWLEDGE);
+// Queue queue = session.createQueue("conversion");
+// MessageProducer myself = session.createProducer(queue);
+// TextMessage message = session.createTextMessage();
+
+ output.write("Launching converter " + executable + "\r\n");
+ output.write("Context : " + context.toString() + "\r\n");
+
+// Process converter = Runtime.getRuntime().exec("\"" + executable + "\" " + source);
+// converter.waitFor();
+ Thread.sleep(10000); // Waiting 10 seconds for simulating the conversion
+
+// message.setText(log.getAbsolutePath());
+// myself.send(message);
+ }
+ catch (Exception error) {
+ output.write("ERROR Converter Launcher, reason:\r\n");
+ error.printStackTrace( new PrintStream(log) );
+ }
+ output.close();
+ }
+}
\ No newline at end of file
--- /dev/null
+### direct log messages to stdout ###
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
+
+### set log levels - for more verbose logging change 'info' to 'debug' ###
+
+log4j.rootLogger=debug, stdout
+
+log4j.logger.org.hibernate=info
+#log4j.logger.org.hibernate=debug
+
+### log HQL query parser activity
+#log4j.logger.org.hibernate.hql.ast.AST=debug
+
+### log just the SQL
+log4j.logger.org.hibernate.SQL=debug
+
+### log JDBC bind parameters ###
+log4j.logger.org.hibernate.type=info
+
+### log schema export/update ###
+log4j.logger.org.hibernate.tool.hbm2ddl=info
+
+### log HQL parse trees
+#log4j.logger.org.hibernate.hql=debug
+
+### log cache activity ###
+log4j.logger.org.hibernate.cache=info
+
+### log transaction activity
+#log4j.logger.org.hibernate.transaction=debug
+
+### log JDBC resource acquisition
+#log4j.logger.org.hibernate.jdbc=debug
+
+### enable the following line if you want to track down connection ###
+### leakages when using DriverManagerConnectionProvider ###
+#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <fileset name="all" enabled="true" check-config-name="Siman CheckStyle" local="false">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry exported="true" kind="lib" path="lib/activation.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.6.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-3.5.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/jta-1.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.15.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/lucene-core-2.9.2.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/lucene-queries-2.9.2.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/mailapi.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.5-bin.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/poi-3.7-20101029.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.7-20101029.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.7-20101029.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/poi-scratchpad-3.7-20101029.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/pop3.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.6.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.6.1.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/smtp.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/xmlpublic.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/javassist-3.11.0.GA.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_CLEAN_TARGETS" value="clean,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/SPlat/bin" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/SPlat/dist" type="2"/> </launchConfigurationWorkingSet>}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/SPlat/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="SPlat"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/SPlat/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,clean"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/SPlat}"/>
+</launchConfiguration>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+ <useProjectRuleSet>true</useProjectRuleSet>
+ <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+ <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>SPlat</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/Ant_Splat_Builder.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sourceforge.pmd.runtime.pmdBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+ <nature>net.sourceforge.pmd.runtime.pmdNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>
+ <rule ref="rulesets/controversial.xml/NullAssignment"/>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn"/>
+ <rule ref="rulesets/controversial.xml/UnusedModifier"/>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
+ <rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>
+ <rule ref="rulesets/controversial.xml/DontImportSun"/>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
+ <rule ref="rulesets/controversial.xml/DefaultPackage"/>
+ <rule ref="rulesets/controversial.xml/BooleanInversion"/>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis"/>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode"/>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration"/>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer"/>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod"/>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray"/>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable"/>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck"/>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals"/>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup"/>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck"/>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP"/>
+ <rule ref="rulesets/basic.xml/CheckResultSet"/>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln"/>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException"/>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError"/>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally"/>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList"/>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap"/>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator"/>
+ <rule ref="rulesets/migrating.xml/AvoidEnumAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/AvoidAssertAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation"/>
+ <rule ref="rulesets/migrating.xml/LongInstantiation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseBeforeAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseAfterAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseTestAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4SuitesShouldUseSuiteAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnitUseExpected"/>
+ <rule ref="rulesets/design.xml/UseSingleton"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters"/>
+ <rule ref="rulesets/design.xml/SwitchDensity"/>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration"/>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>
+ <rule ref="rulesets/design.xml/CloseResource"/>
+ <rule ref="rulesets/design.xml/NonStaticInitializer"/>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
+ <rule ref="rulesets/design.xml/BadComparison"/>
+ <rule ref="rulesets/design.xml/EqualsNull"/>
+ <rule ref="rulesets/design.xml/ConfusingTernary"/>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass"/>
+ <rule ref="rulesets/design.xml/IdempotentOperations"/>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale"/>
+ <rule ref="rulesets/design.xml/ImmutableField"/>
+ <rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch"/>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>
+ <rule ref="rulesets/design.xml/SimplifyConditional"/>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
+ <rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor"/>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface"/>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter"/>
+ <rule ref="rulesets/design.xml/PreserveStackTrace"/>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty"/>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
+ <rule ref="rulesets/design.xml/SingularField"/>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod"/>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement"/>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader"/>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit"/>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal"/>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads"/>
+ <rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList"/>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops"/>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString"/>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports"/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/imports.xml/DuplicateImports"/>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage"/>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports"/>
+ <rule ref="rulesets/junit.xml/JUnitStaticSuite"/>
+ <rule ref="rulesets/junit.xml/JUnitSpelling"/>
+ <rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>
+ <rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>
+ <rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>
+ <rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>
+ <rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertNullInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/SimplifyBooleanAssertion"/>
+ <rule ref="rulesets/naming.xml/ShortVariable"/>
+ <rule ref="rulesets/naming.xml/LongVariable"/>
+ <rule ref="rulesets/naming.xml/ShortMethodName"/>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions"/>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions"/>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions"/>
+ <rule ref="rulesets/naming.xml/AbstractNaming"/>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns"/>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>
+ <rule ref="rulesets/naming.xml/NoPackage"/>
+ <rule ref="rulesets/naming.xml/PackageCase"/>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName"/>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
+ <rule ref="rulesets/codesize.xml/NPathComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyFields"/>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount"/>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount"/>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyMethods"/>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation"/>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/>
+ <rule ref="rulesets/strings.xml/StringInstantiation"/>
+ <rule ref="rulesets/strings.xml/StringToString"/>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering"/>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength"/>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar"/>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends"/>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar"/>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck"/>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration"/>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf"/>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar"/>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings"/>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField"/>
+</ruleset>
--- /dev/null
+#Thu Sep 20 12:58:09 MSD 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="SPlat">
+ <wb-resource deploy-path="/" source-path="/src"/>
+ </wb-module>
+</project-modules>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.utility"/>
+ <installed facet="jst.java" version="6.0"/>
+ <installed facet="jst.utility" version="1.0"/>
+</faceted-project>
--- /dev/null
+splat.lib.dir=lib
+splat.src.dir=src
+splat.bin.dir=bin
+splat.build.dir=build
+splat.dist.dir=dist
+
+
+compiler.debug=on
+compiler.generate.no.warnings=off
+compiler.max.memory=128m
+compiler.optimize" value=on
+compiler.deprecation=on
+
+app.version=0
+app.author=OCC
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="SIMAN SALOME Platform builder" default="build">
+
+ <property environment="env" />
+ <property file="build.properties" description="set the build parameters" />
+
+ <path id="dependencies.classpath">
+ <fileset dir="${tomcat.war.build.dir}">
+ <include name="${splat.lib.dir}/*.*"/>
+ </fileset>
+ </path>
+
+ <path id="test.libs.classpath">
+ <pathelement location="${splat.lib.dir}/testng/testng-5.8-jdk15.jar" />
+ <pathelement location="${splat.lib.dir}/spring/spring-test.jar" />
+ </path>
+
+
+ <property name="time.simple.pattern" value="dd/MM/yyyy" />
+ <tstamp>
+ <format property="timesimple" pattern="${time.simple.pattern}" />
+ </tstamp>
+
+ <!-- ================================================= -->
+ <!-- build-splat-jar: Create the splat jar file -->
+ <!-- ================================================= -->
+ <target name="build-splat-jar" description="create jar file in dist directory">
+ <echo message="build splat-${jar.name}.jar"/>
+ <mkdir dir="${splat.dist.dir}" />
+ <jar destfile="${splat.dist.dir}/splat-${jar.name}.jar" >
+ <zipfileset dir="${splat.bin.dir}/">
+ <include name="org/splat/${jar.name}/**" />
+ </zipfileset>
+ <manifest>
+ <attribute name="Built-By" value="${app.author}" />
+ <attribute name="Version" value="${app.version}" />
+ <attribute name="Built-Date" value="${timesimple}" />
+ </manifest>
+ </jar>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- manox-jar: Create the manox jar file -->
+ <!-- ================================================= -->
+ <target name="manox-jar" description="create jar file in dist directory">
+ <antcall target="build-splat-jar">
+ <param name="jar.name" value="manox"/>
+ </antcall>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- kernel-jar: Create the kernel jar file -->
+ <!-- ================================================= -->
+ <target name="kernel-jar" description="create jar file in dist directory">
+ <antcall target="build-splat-jar">
+ <param name="jar.name" value="kernel"/>
+ </antcall>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- som-jar: Create the som jar file -->
+ <!-- ================================================= -->
+ <target name="som-jar" description="create jar file in dist directory">
+ <antcall target="build-splat-jar">
+ <param name="jar.name" value="som"/>
+ </antcall>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- jar: Build jars -->
+ <!-- ================================================= -->
+ <target name="jar" depends="kernel-jar,som-jar,manox-jar" description="compile and create the jar file in dist directory">
+ </target>
+
+ <!-- ================================================= -->
+ <!-- build: Compile and create the dist target -->
+ <!-- ================================================= -->
+ <target name="build" depends="compile,jar" description="compile and create the jar file in dist directory">
+ </target>
+
+
+ <!-- ================================================= -->
+ <!-- rebuild: Compile and create the dist target -->
+ <!-- ================================================= -->
+ <target name="rebuild" depends="clean,compile,jar" description="clean, compile and create the jar file in dist directory">
+ </target>
+
+ <!-- ================================================= -->
+ <!-- clean: Clean the dist directory -->
+ <!-- ================================================= -->
+ <target name="clean" description="clean the build directory">
+ <echo message="deleting files in ${splat.dist.dir}" />
+ <delete includeemptydirs="true" failonerror="false">
+ <fileset dir="${splat.dist.dir}" includes="**/*" />
+ </delete>
+ </target>
+
+ <!-- ================================================== -->
+ <!-- help : display the help page -->
+ <!-- ================================================== -->
+ <target name="help">
+ <java fork="no" classname="org.apache.tools.ant.Main">
+ <arg line="-projecthelp" />
+ </java>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- compile: Compile the sources files -->
+ <!-- ================================================= -->
+ <target name="compile" description="compile source code">
+ <echo message="compiling SIMAN SALOME Platform" />
+ <echo message="compiler.max.memory : ${compiler.max.memory}" />
+ <echo message="build repository : ${splat.build.dir}" />
+ <echo message="splat.lib.dir : ${splat.lib.dir}" />
+
+<!-- <mkdir dir="${splat.build.dir}" />
+ <mkdir dir="${splat.build.dir}/classes" />
+ <javac target="1.5" destdir="${splat.build.dir}/classes" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memoryMaximumSize="${compiler.max.memory}" fork="true" optimize="${compiler.optimize}" deprecation="${compiler.deprecation}">
+ <src path="${splat.src.dir}" />
+ <classpath>
+ <path refid="dependencies.classpath" />
+ </classpath>
+ <exclude name="test/**" />
+ </javac>
+ <copy todir="${splat.build.dir}/classes">
+ <fileset dir="${splat.src.dir}/conf">
+ </fileset>
+ <fileset dir="${splat.src.dir}/java">
+ <include name="com/**/*.xsd"/>
+ </fileset>
+ </copy>
+ <mkdir dir="${splat.build.dir}/classes/META-INF" />-->
+ </target>
+
+
+
+ <!-- ================================================= -->
+ <!-- Compile tests -->
+ <!-- Compile the tests sources file in build/tests -->
+ <!-- ================================================= -->
+ <target name="compile-tests" description="compile source code">
+ <echo message="compiling splat tests classes" />
+ <echo message="compiler.max.memory : ${compiler.max.memory}" />
+ <echo message="build repository : ${splat.build.dir}" />
+ <echo message="splat.lib.dir : ${splat.lib.dir}" />
+
+ <mkdir dir="${splat.build.dir}" />
+ <mkdir dir="${splat.build.dir}/classes" />
+ <javac destdir="${splat.build.dir}/classes" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}" memoryMaximumSize="${compiler.max.memory}" fork="true" optimize="${compiler.optimize}" deprecation="${compiler.deprecation}">
+ <src path="${splat.dir}/test" />
+ <classpath>
+ <path refid="dependencies.classpath" />
+ <path refid="test.libs.classpath" />
+ </classpath>
+ <include name="test/**" />
+ <exclude name="com/**" />
+ <exclude name="org/**" />
+ </javac>
+ </target>
+
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description>PMD Plugin preferences rule set Hewis
+ level 1 : not to be violated AREVA requirements
+ level 2 : not to be violated EURIWARE requirements
+ level 3 :should not be violated AREVA requirements
+ level 4 :should not be violated EURIWARE requirements
+ level 5 : good practices
+ </description>
+
+ <exclude-pattern>.*/org/.*</exclude-pattern>
+ <exclude-pattern>.*/test/.*</exclude-pattern>
+
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringInstantiation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringToString">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseSingleton">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchDensity">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CloseResource">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/BadComparison">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EqualsNull">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConfusingTernary">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/IdempotentOperations">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ImmutableField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyConditional">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PreserveStackTrace">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SingularField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/LooseCoupling">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CheckResultSet">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/NullAssignment">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnusedModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DontImportSun">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DefaultPackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/BooleanInversion">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace">
+ <priority>1</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/DuplicateImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang">
+ <priority>2</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/UnusedImports">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/LongInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize">
+ <properties>
+ <property name="prefix" value="_"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions">
+ <properties>
+ <property name="staticPrefix" value=""/>
+ <property name="staticSuffix" value=""/>
+ <property name="memberPrefix" value="_"/>
+ <property name="memberSuffix" value=""/>
+ </properties>
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AbstractNaming">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/NoPackage">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/PackageCase">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NPathComplexity">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
+ <properties>
+ <property name="minimun" value="50"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList">
+ <properties>
+ <property name="minimun" value="10"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength">
+ <properties>
+ <property name="minimun" value="1000"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
+ <properties>
+ <property name="reportLevel" value="25"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount">
+ <priority>4</priority>
+ <properties>
+ <property name="reportLevel" value="20"/>
+ </properties>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyFields">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyMethods">
+ <properties>
+ <property name="maxmethods" value="15"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter">
+ <priority>5</priority>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid naming fields without the prefix '_'" name="FieldNamingRules">
+ <description>
+ Detects when a field has not a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private int _foo; // OK
+ private int bar; // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //FieldDeclaration[@Static='false']
+ //VariableDeclarator
+ //VariableDeclaratorId
+ [not(starts-with(@Image, '_'))]
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid parameters with the prefix '_'" name="ParametersNamingRules">
+ <description>
+ Detects when a parameter has a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private void foo(int bar) // OK
+ private void foo2(int _bar) // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //VariableDeclaratorId
+ [starts-with(@Image, '_')]
+ [not (../../../FieldDeclaration)]
+
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule name="DoNotUseConditionalExpression "
+ message="Do not use condition?statement:statement;"
+ class="net.sourceforge.pmd.rules.XPathRule">
+ <description>
+ Detect using of condition?statement:statement;
+ </description>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value>
+ <![CDATA[
+ //ConditionalExpression
+ ]]>
+ </value>
+ </property>
+ </properties>
+ <priority>3</priority>
+ <example>
+ <![CDATA[
+ public class Sample {
+ boolean bar(int x, int y) {
+ if (x== y)
+ same;
+ else
+ diff;
+
+
+ return (x == y) ? same : diff;
+ // wrong
+ }
+
+
+ }
+ ]]>
+ </example>
+ </rule>
+
+
+</ruleset>
--- /dev/null
+Manifest-Version: 1.0
+Class-Path:
+
--- /dev/null
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.splat.som.*;
+import org.splat.kernel.Do;
+import org.splat.kernel.UserDirectory;
+import org.splat.kernel.User;
+import org.splat.kernel.Role;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
+import org.splat.manox.Writer;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.apache.log4j.Logger;
+
+
+public class Test {
+
+ final static Logger logger = Logger.getLogger(Test.class);
+
+// ==============================================================================================================================
+// Main
+// ==============================================================================================================================
+
+ public static void main(String[] args) {
+// --------------------------------------
+ Session session = Database.getSession(); // Single session for multiple operations
+ Transaction transax = session.beginTransaction();
+
+ ProjectSettings project = ProjectSettings.getMe();
+ String path = System.getProperty("user.dir");
+ try {
+ project.configure(path + "/src/som.xml");
+ }
+ catch (Exception error) {
+ logger.fatal("Could not initialize the database, reason:", error);
+ return;
+ }
+ int nargs = args.length;
+ if (nargs > 0) switch (Integer.valueOf(args[0])) {
+
+ case 1:
+ if (!importation_of_users()) return;
+ break;
+
+ case 2:
+ if (!create_narveos_study()) return;
+ break;
+
+ case 3:
+ if (!create_tripoli_study()) return;
+ break;
+
+ case 4:
+ if (!select_user_by_username()) return;
+ break;
+
+ case 5:
+ if (!select_study_by_state()) return;
+ break;
+
+ case 6:
+ if (!select_study_by_title()) return;
+ break;
+
+ case 7:
+ if (!select_study_by_reference()) return;
+ break;
+
+ case 8:
+ if (!select_study_by_context()) return;
+ break;
+
+ case 9:
+ if (!select_document_by_reference()) return;
+ break;
+
+ case 10:
+ if (!select_knowledge_by_context()) return;
+ break;
+
+ case 11:
+ if (!browse_knowledge()) return;
+ break;
+
+ case 12:
+ if (!read_wordxml_properties()) return;
+ break;
+
+ case 13:
+ if (!read_worddoc_properties()) return;
+ }
+ transax.commit();
+ }
+
+ private static boolean importation_of_users () {
+// ----------------------------------------------
+ try {
+ UserDirectory.importUsers(new File("C:/Users/Daniel/Projets/Internes/SaLoMe/Workspace/org.splat/src/users.xml"));
+
+// Print of imported users
+ List<User> result = UserDirectory.selectAllUsers();
+ for (Iterator<User> i=result.iterator(); i.hasNext();) {
+ User auser = i.next();
+ Role[] role = auser.getRoles();
+ String echo = "Role(s) of user " + auser.getIndex() + " (" + auser.toString() + "): " + role[0].getName();
+ for (int j=1; j<role.length; j++) echo = echo + ", " + role[j].getName();
+ logger.info(echo);
+ }
+ return true;
+ }
+ catch (Exception error) {
+ logger.info("Reason:", error);
+ return false;
+ }
+ }
+
+ private static boolean create_narveos_study () {
+// ----------------------------------------------
+ try {
+
+ User.Properties uprop = new User.Properties();
+ List<User> ulist = UserDirectory.selectUsersWhere(uprop.setOrganizationName("Euriware"));
+ User jb = ulist.get(0); // Manager of the study
+ User pd = ulist.get(1); // Author of specifications
+ User hl = UserDirectory.selectUser("hl"); // Geometry expert
+ User sd = UserDirectory.selectUser("sdd"); // Customer
+
+
+// Creation of the Study object
+ SimpleDateFormat on = new SimpleDateFormat("dd/MM/yyyy");
+ SimpleDateFormat at = new SimpleDateFormat("dd/MM/yyyy HH:mm");
+ Study.Properties sprop = new Study.Properties();
+
+ Date someday = on.parse("25/01/2010");
+ Study mystudy = Database.createStudy(sprop.setTitle("Caractérisation du béton SERCOTER").setDate(someday).setManager(jb)
+ .setDescription("Cette étude est livrée avec l'application comme exemple pour tester les fonctions de recherche et de navigation."));
+
+
+// Addition of the default scenario
+ Scenario.Properties oprop = new Scenario.Properties();
+ Scenario myscenar = mystudy.addScenario(oprop.setTitle("Scénario 1").setDate(someday));
+
+
+// Definition of the project team
+ mystudy.addContributor(pd);
+
+
+// Addition of documents
+ Step[] ownstep = mystudy.getSteps();
+ Step[] nexstep = myscenar.getSteps();
+ Document.Properties dprop;
+ DocumentType request = Document.selectType("requirements");
+ DocumentType spec = Document.selectType("specification");
+ DocumentType geom = Document.selectType("geometry");
+ DocumentType note = Document.selectType("memorandum");
+ DocumentType delivery = Document.selectType("report"); // Final report of the study
+
+// Set of document validation cycles
+ mystudy.setValidationCycle(geom, new ValidationCycle.Properties().setActor(ValidationStep.REVIEW, hl)
+ .setActor(ValidationStep.APPROVAL, jb));
+// (1) Customer requirements
+ dprop = new Document.Properties();
+ Publication cdc = ownstep[0].createDocument(dprop.setName("Proposition technique")
+ .setExternReference("GCVP-P/09-1629/V1")
+ .setDate(on.parse("08/02/2010"))
+ .setType(request)
+ .setFormat("pdf")
+ .setAuthor(sd));
+ logger.info("Uploading file \"" + cdc.getSourceFile().getName() + "\" into " + cdc.value().getSaveDirectory().getPath());
+ cdc.saveAs(ProgressState.EXTERN);
+
+// (2)(3) General specifications based on (using) Customer requirements
+ dprop.clear();
+ Publication specgen = ownstep[0].createDocument(dprop.setName("Spécifications générales")
+ .setDate(on.parse("05/03/2010"))
+ .setType(spec)
+ .setFormat("xml")
+ .setAuthor(pd));
+ logger.info("Uploading file \"" + specgen.getSourceFile().getName() + "\" into " + specgen.value().getSaveDirectory().getPath());
+ specgen.saveAs(ProgressState.inWORK); // Version 0.1
+ specgen.addDependency(cdc);
+
+ dprop.clear();
+ specgen = ownstep[0].versionDocument(specgen, dprop.setDate(on.parse("12/03/2010"))
+ .setDescription("Ajout de la description du scénario de calcul"));
+ specgen.saveAs(ProgressState.inWORK); // Version 0.2
+ specgen.addDependency(cdc);
+
+// (4) Assembly geometry based on (using) General specifications
+ dprop.clear();
+ Publication sercoter = nexstep[1].createDocument(dprop.setName("Assemblage SERCOTER")
+ .setDate(on.parse("26/03/2010"))
+ .setType(geom)
+ .setFormat("sldasm")
+ .setAuthor(jb));
+ logger.info("Uploading file \"" + sercoter.getSourceFile().getName() + "\" into " + sercoter.value().getSaveDirectory().getPath());
+ sercoter.saveAs(ProgressState.inWORK);
+ sercoter.addDependency(specgen);
+
+// (5) Technical note based on (using) General specifications and Assembly geometry
+ dprop.clear();
+ Publication report = nexstep[1].createDocument(dprop.setName("Modifications et simplifications retenues")
+ .setDate(on.parse("26/03/2010"))
+ .setType(note)
+ .setFormat("doc")
+ .setAuthor(jb));
+ logger.info("Uploading file \"" + report.getSourceFile().getName() + "\" into " + report.value().getSaveDirectory().getPath());
+ report.saveAs(ProgressState.inWORK);
+ report.addDependency(specgen);
+ report.addDependency(sercoter);
+ report.promote(on.parse("26/03/2010"));
+
+// (6) New version of General specifications
+ dprop.clear();
+ specgen = ownstep[0].versionDocument(specgen, dprop.setDate(on.parse("24/03/2010"))
+ .setDescription("Prise en compte des retours internes"));
+ specgen.saveAs(ProgressState.inDRAFT); // Version 0.3
+ specgen.addDependency(cdc);
+
+ specgen.review(at.parse("26/03/2010 10:15")); // Promotion to version 1.0
+ specgen.attach("pdf");
+ specgen.approve(at.parse("26/03/2010 16:30")).setComment("Le document peut être envoyé au client.");
+ logger.info("Uploading file \"" + specgen.value().getTitle() + ".pdf\" into " + specgen.value().getSaveDirectory().getPath());
+
+// (7)
+ Publication result = ownstep[1].createDocument(dprop.setName("Comparaison des résultats")
+ .setDate(on.parse("16/04/2010"))
+ .setType(delivery)
+ .setFormat("xml")
+ .setAuthor(jb));
+ logger.info("Uploading file \"" + result.getSourceFile().getName() + "\" into " + result.value().getSaveDirectory().getPath());
+ result.saveAs(ProgressState.inDRAFT); // Promotes the study to In-Draft
+ result.review (at.parse("19/04/2010 10:15")); // Promotes the study to In-Check
+
+
+// Assignment of simulation contexts
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType customer = SimulationContext.selectType("customer");
+ SimulationContextType product = SimulationContext.selectType("product");
+ SimulationContextType phase = SimulationContext.selectType("phase");
+ SimulationContextType need = SimulationContext.selectType("need");
+ SimulationContextType subject = SimulationContext.selectType("purpose");
+ SimulationContextType physics = SimulationContext.selectType("physic");
+ SimulationContextType object = SimulationContext.selectType("object");
+ SimulationContextType part = SimulationContext.selectType("part");
+ SimulationContextType model = SimulationContext.selectType("model");
+ SimulationContextType element = SimulationContext.selectType("element");
+ SimulationContextType shape = SimulationContext.selectType("shape");
+ SimulationContextType platform = SimulationContext.selectType("platform");
+ SimulationContextType module = SimulationContext.selectType("module");
+ SimulationContextType component = SimulationContext.selectType("component");
+
+ List<SimulationContext> ihave = mystudy.getFirstStep().getSimulationContext(customer);
+ if (ihave.size() > 0) ihave.get(0).approve(); // Generated from specifications
+ else {
+ SimulationContext imported = Database.selectSimulationContext(customer, "CEA Cadarache");
+ if (imported == null) {
+ mystudy.addProjectContext(cprop.setType(customer).setValue("CEA Cadarache").setState(ProgressState.APPROVED));
+ } else {
+ mystudy.addProjectContext(imported); // Previously generated
+ }
+ }
+ ihave = mystudy.getFirstStep().getSimulationContext(product);
+ if (ihave.size() > 0) ihave.get(0).approve(); // Generated from specifications
+ else {
+ SimulationContext imported = Database.selectSimulationContext(product, "Réacteur RAPSODIE");
+ if (imported == null) {
+ mystudy.addProjectContext(cprop.setType(product).setValue("Réacteur RAPSODIE").setState(ProgressState.APPROVED));
+ } else {
+ mystudy.addProjectContext(imported); // Previously generated
+ }
+ }
+ mystudy.addProjectContext(cprop.setType(phase).setValue("Démantèlement").setState(ProgressState.APPROVED));
+ mystudy.addProjectContext(cprop.setType(need).setValue("Caractérisation du béton SERCOTER").setState(ProgressState.APPROVED));
+ mystudy.addProjectContext(cprop.setType(subject).setValue("Valider les résultats d'une précédente étude").setState(ProgressState.APPROVED));
+ mystudy.addProjectContext(cprop.setType(physics).setValue("Transport de particules").setState(ProgressState.APPROVED));
+ nexstep[1].addSimulationContext(cprop.setType(object).setValue("Réacteur nucléaire").setState(ProgressState.APPROVED));
+ nexstep[1].addSimulationContext(cprop.setType(part).setValue("Ensemble Bloc réacteur et Enceinte en béton").setState(ProgressState.APPROVED));
+// nexstep[2].addSimulationContext(cprop.setType(model).setValue("CSG"));
+ nexstep[2].addSimulationContext(cprop.setType(model).setValue("Éléments finis").setState(ProgressState.APPROVED));
+ nexstep[2].addSimulationContext(cprop.setType(element).setValue("Surfacique").setState(ProgressState.APPROVED));
+ nexstep[2].addSimulationContext(cprop.setType(shape).setValue("Triangles").setState(ProgressState.APPROVED));
+ nexstep[4].addSimulationContext(cprop.setType(platform).setValue("NARVEOS V3").setState(ProgressState.APPROVED));
+ nexstep[4].addSimulationContext(cprop.setType(module).setValue("NARMER V2").setState(ProgressState.APPROVED));
+ nexstep[4].addSimulationContext(cprop.setType(component).setValue("VIRTOOLS V5").setState(ProgressState.APPROVED));
+
+// Assignment of a knowledge
+ KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
+ KnowledgeElementType practice = KnowledgeElement.selectType("bestpractice");
+ KnowledgeElementType limit = KnowledgeElement.selectType("limitation");
+ KnowledgeElementType improvment = KnowledgeElement.selectType("improvement");
+ kprop.setType(limit)
+ .setTitle("Format du modèle géométrique")
+ .setValue("Seul le format 3DXML V5 ou antérieur est supporté.")
+// .setState(ProgressState.APPROVED)
+ .setAuthor(jb);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(practice)
+ .setTitle("Compréhension de l'environnement")
+ .setValue("Avoir une compréhension globale du débit de dose en commençant par effectuer une cartographie.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(jb);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(practice)
+ .setTitle("Calage du modèle radiologique")
+ .setValue("A partir de sources à 1 Bq/m<sup>3</sup>, faire évoluer une source à la fois et vérifier l'impact sur les points de calcul pour connaitre l'influence relative des sources.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(jb);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(practice)
+ .setTitle("Calage du modèle radiologique")
+ .setValue("Toujours faire le premier calcul sans built-up.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(jb);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(limit)
+ .setTitle("Effets diffusés indirects")
+ .setValue("L'outil ne tenant pas compte des effets diffusés indirects, faire attention à la géométrie autour des points de calcul.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(jb);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(improvment)
+ .setTitle("Gestion des écrans")
+ .setValue("Mieux gérer les multi-écrans à géométrie cylindrique.")
+ .setState(ProgressState.inCHECK) // Just for testing the approve() function below
+ .setAuthor(jb);
+ KnowledgeElement kelm = myscenar.addKnowledgeElement(kprop);
+
+ kelm.approve();
+
+ mystudy.moveToPublic();
+
+ logger.info("Study \"" + mystudy.getTitle() + "\" successfully created.");
+ return true;
+ }
+ catch (Exception error) {
+ logger.info("Reason:", error);
+ return false;
+ }
+ }
+
+ private static boolean create_tripoli_study () {
+// ----------------------------------------------
+ User plt = UserDirectory.selectUser("sdd");
+ try {
+// Creation of the Study object
+ SimpleDateFormat todate = new SimpleDateFormat("dd/MM/yyyy");
+ Study.Properties sprop = new Study.Properties();
+
+ Date at = todate.parse("03/05/2011");
+ Study mystudy = Database.createStudy(sprop.setTitle("Validation des voies de production de la plate-forme Radioprotection").setDate(at).setManager(plt));
+
+// Addition of scenarios
+ Scenario.Properties oprop = new Scenario.Properties();
+ Scenario myscenar = mystudy.addScenario(oprop.setTitle("Scénario Tripoli").setDate(at));
+ mystudy.addScenario(oprop.setTitle("Scénario MCNP").setDate(at));
+
+// Addition of documents
+ Step[] ownstep = mystudy.getSteps();
+ Step[] nexstep = myscenar.getSteps();
+
+ DocumentType request = Document.selectType("requirements");
+ DocumentType spec = Document.selectType("specification");
+ DocumentType geom = Document.selectType("geometry");
+ DocumentType mesh = Document.selectType("model");
+ DocumentType note = Document.selectType("memorandum");
+ DocumentType delivery = Document.selectType("report"); // Final report of the study
+ Document.Properties dprop;
+
+ dprop = new Document.Properties();
+ Publication cdc = ownstep[0].createDocument(dprop.setName("Cahier des charges")
+ .setDate(todate.parse("03/05/2011"))
+ .setType(request)
+ .setFormat("pdf")
+ .setAuthor(plt));
+ logger.info("Uploading file \"" + cdc.getSourceFile().getName() + "\" into " + cdc.value().getSaveDirectory().getPath());
+ cdc.saveAs(ProgressState.EXTERN);
+
+ dprop = new Document.Properties();
+ Publication sgen = ownstep[0].createDocument(dprop.setName("Spécifications générales")
+ .setDate(todate.parse("03/05/2010"))
+ .setType(spec)
+ .setFormat("xml")
+ .setAuthor(plt));
+ logger.info("Uploading file \"" + sgen.getSourceFile().getName() + "\" into " + sgen.value().getSaveDirectory().getPath());
+ sgen.saveAs(ProgressState.inDRAFT); // Version 0.1
+ sgen.addDependency(cdc);
+
+ dprop = new Document.Properties();
+ Publication pcc = nexstep[1].createDocument(dprop.setName("Assemblage PCC")
+ .setDate(todate.parse("03/05/2011"))
+ .setType(geom)
+ .setFormat("ProE")
+ .setAuthor(plt));
+ Publication doc = nexstep[1].createDocument(dprop.setName("Description de l'assemblage")
+ .setDate(todate.parse("03/05/2011"))
+ .setType(note)
+ .setFormat("doc")
+ .setAuthor(plt));
+ logger.info("Uploading file \"" + pcc.getSourceFile().getName() + "\" into " + pcc.value().getSaveDirectory().getPath());
+ logger.info("Uploading file \"" + doc.getSourceFile().getName() + "\" into " + doc.value().getSaveDirectory().getPath());
+ pcc.saveAs(ProgressState.inDRAFT);
+ doc.saveAs(ProgressState.inCHECK);
+
+ pcc.review(todate.parse("08/05/2011"));
+ pcc.addDependency(sgen);
+ doc.addDependency(sgen);
+ doc.addDependency(pcc);
+
+ pcc.attach("gdml");
+ logger.info("Uploading file \"" + pcc.value().getTitle() + ".gdml\" into " + pcc.value().getSaveDirectory().getPath());
+
+ dprop = new Document.Properties();
+ Publication csg = nexstep[2].createDocument(dprop.setName("PCC")
+ .setDate(todate.parse("03/05/2011"))
+ .setType(mesh)
+ .setFormat("hdf")
+ .setAuthor(plt));
+ logger.info("Uploading file \"" + csg.getSourceFile().getName() + "\" into " + csg.value().getSaveDirectory().getPath());
+ csg.saveAs(ProgressState.inDRAFT);
+
+ csg.addDependency(pcc);
+
+ csg.attach("gdml", "sans void space");
+ csg.attach("tri", "avec void space");
+ csg.attach("pdf");
+ logger.info("Uploading file \"" + csg.value().getTitle() + ".tri\" into " + csg.value().getSaveDirectory().getPath());
+
+ Publication result = ownstep[1].createDocument(dprop.setName("Comparaison des résultats")
+ .setDate(todate.parse("17/05/2011"))
+ .setType(delivery)
+ .setFormat("xml")
+ .setAuthor(plt));
+ logger.info("Uploading file \"" + result.getSourceFile().getName() + "\" into " + result.value().getSaveDirectory().getPath());
+ result.saveAs(ProgressState.inWORK); // Version 0.1
+ result.promote(todate.parse("18/05/2011")); // Promotes also the study
+
+// Assignment of simulation contexts
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType customer = SimulationContext.selectType("customer");
+ SimulationContextType product = SimulationContext.selectType("product");
+ SimulationContextType phase = SimulationContext.selectType("phase");
+ SimulationContextType need = SimulationContext.selectType("need");
+ SimulationContextType subject = SimulationContext.selectType("purpose");
+ SimulationContextType physics = SimulationContext.selectType("physic");
+ SimulationContextType object = SimulationContext.selectType("object");
+ SimulationContextType part = SimulationContext.selectType("part");
+ SimulationContextType model = SimulationContext.selectType("model");
+ SimulationContextType element = SimulationContext.selectType("element");
+ SimulationContextType shape = SimulationContext.selectType("shape");
+ SimulationContextType platform = SimulationContext.selectType("platform");
+ SimulationContextType module = SimulationContext.selectType("module");
+
+ List<SimulationContext> ihave = mystudy.getFirstStep().getSimulationContext(customer);
+ if (ihave.size() > 0) ihave.get(0).approve(); // Generated from specifications
+ else {
+ SimulationContext imported = Database.selectSimulationContext(customer, "Fonction transverse sûreté");
+ if (imported == null) {
+ mystudy.addProjectContext(cprop.setType(customer).setValue("Fonction transverse sûreté").setState(ProgressState.APPROVED));
+ } else {
+ mystudy.addProjectContext(imported); // Not generated from specifications
+ }
+ }
+ ihave = mystudy.getFirstStep().getSimulationContext(product);
+ if (ihave.size() > 0) ihave.get(0).approve(); // Generated from specifications
+ else {
+ SimulationContext imported = Database.selectSimulationContext(product, "Laser Mégajoule");
+ if (imported == null) {
+ mystudy.addProjectContext(cprop.setType(product).setValue("Laser Mégajoule").setState(ProgressState.APPROVED));
+ } else {
+ mystudy.addProjectContext(imported); // Not generated from specifications
+ }
+ }
+ mystudy.addProjectContext(cprop.setType(phase).setValue("Dossier de Validation DSGA/SSPP").setState(ProgressState.APPROVED));
+ mystudy.addProjectContext(cprop.setType(need).setValue("Validation du calcul TRIPOLI4.5 via le PlugIn Pro/E").setState(ProgressState.APPROVED));
+ mystudy.addProjectContext(cprop.setType(subject).setValue("Cartographie neutronique").setState(ProgressState.APPROVED));
+ mystudy.addProjectContext(Database.selectSimulationContext(physics, "Transport de particules"));
+ nexstep[1].addSimulationContext(cprop.setType(object).setValue("Bâtiment LMJ").setState(ProgressState.APPROVED));
+ nexstep[1].addSimulationContext(cprop.setType(part).setValue("Bât. Nord, Sud, Hall d'expériences, Hall lasers").setState(ProgressState.APPROVED));
+ nexstep[2].addSimulationContext(cprop.setType(model).setValue("CSG").setState(ProgressState.APPROVED));
+ nexstep[2].addSimulationContext(cprop.setType(element).setValue("Monte Carlo ").setState(ProgressState.APPROVED));
+ nexstep[2].addSimulationContext(cprop.setType(shape).setValue("Combinatoire volumique").setState(ProgressState.APPROVED));
+ nexstep[4].addSimulationContext(cprop.setType(platform).setValue("SALOME-TRIPOLI V2.04").setState(ProgressState.APPROVED));
+ nexstep[4].addSimulationContext(cprop.setType(module).setValue("TRIPOLI4.5").setState(ProgressState.APPROVED));
+
+// Assignment of a knowledge
+ KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
+ KnowledgeElementType practice = KnowledgeElement.selectType("bestpractice");
+ KnowledgeElementType limit = KnowledgeElement.selectType("limitation");
+ KnowledgeElementType improvment = KnowledgeElement.selectType("improvement");
+ kprop.setType(practice)
+ .setTitle("Compréhension des modèles CAO")
+ .setValue("Convertir le modèle CAO par élément (part) et constituer les assemblages sous GDML en vérifiant à chaque étape qu'il n'existe pas d'intersection entre les éléments.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(plt);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(practice)
+ .setTitle("Génération du volume complémentaire")
+ .setValue("Appliquer la génération du volume complémentaire au modèle GDML global de l'installation en sauvegardant le découpage de l'espace complémentaire en tant que volume.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(plt);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(limit)
+ .setTitle("Découpage du volume complémentaire")
+ .setValue("Inutile de découper le complémentaire pour le code TRIPOLI4.5. Les performances calculs ne sont pas meilleures.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(plt);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(limit)
+ .setTitle("Option de pondération")
+ .setValue("impossible de visualiser sous le viewer OCC les grilles de pondération dans la géométrie (temps d'affichage prohibitif).")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(plt);
+ myscenar.addKnowledgeElement(kprop);
+ kprop.setType(improvment)
+ .setTitle("Grille de pondération TRIPOLI4.5")
+ .setValue("Faire évoluer le viewer Ray tracing pour qu'il puisse afficher les grilles de pondération et de maillage.")
+ .setState(ProgressState.APPROVED)
+ .setAuthor(plt);
+ myscenar.addKnowledgeElement(kprop);
+
+ mystudy.moveToPublic();
+
+ logger.info("Study \"" + mystudy.getTitle() + "\" successfully created.");
+ return true;
+ }
+ catch (Exception error) {
+ logger.info("Reason:", error);
+ return false;
+ }
+ }
+
+ private static boolean select_user_by_username () {
+// -------------------------------------------------
+ String jbt = "jbt";
+ try {
+ User user = UserDirectory.selectUser(jbt);
+ if (user == null) {
+ logger.info("User " + jbt + " not found.");
+ } else {
+ logger.info("User " + jbt + " found:");
+ logger.info("* " + user.getDisplayName() + ", role \"" + user.getRoleNames() + "\"");
+ }
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean select_study_by_state () {
+// -----------------------------------------------
+ String dbc = "jbt";
+ User user = UserDirectory.selectUser(dbc);
+ try {
+ Study.Properties criter1 = new Study.Properties().setState(ProgressState.inPROGRESS);
+ Study.Properties criter2 = new Study.Properties().setState(ProgressState.inWORK).setManager(user);
+ List<Proxy> result = Database.selectStudiesWhere(criter1, criter2);
+ if (result.size() == 0) {
+ logger.info("No study found.");
+ } else {
+ logger.info("Study(ies) found:");
+ for (int i=0; i<result.size(); i++) {
+ logger.info("* \"" + result.get(i).getTitle() + "\"");
+ }
+ }
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean select_study_by_title () {
+// -----------------------------------------------
+ String words = "sercoter";
+ try {
+ Study.Properties criteria = new Study.Properties();
+ List<Proxy> result = Database.selectStudiesWhere(criteria.setTitle(words));
+ if (result.size() == 0) {
+ logger.info("No study found with a title including \"" + words + "\".");
+ } else {
+ logger.info("Study(ies) found:");
+ for (int i=0; i<result.size(); i++) {
+ logger.info("* \"" + result.get(i).getTitle() + "\"");
+ }
+ }
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean select_study_by_reference () {
+// ---------------------------------------------------
+ String refid = "PLM110001";
+ try {
+ Study study = Database.selectStudy(refid);
+ if (study == null) {
+ logger.info("Study " + refid + " not found.");
+ return false;
+ } else {
+ logger.info("Study " + refid + ": " + study.getTitle() + ".");
+ display_study(study);
+ return true;
+ }
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean select_study_by_context () {
+// -------------------------------------------------
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType ctype = SimulationContext.selectType("Produit");
+ List<SimulationContext> context = Database.selectSimulationContextsWhere(cprop.setType(ctype));
+ for (Iterator<SimulationContext> i=context.iterator(); i.hasNext();) {
+ SimulationContext reactor = i.next();
+ if (reactor.getValue().equals("Réacteur RAPSODIE")) {
+
+ context = new Vector<SimulationContext>();
+ context.add(reactor);
+
+ Study.Properties sprop = new Study.Properties();
+ List<Proxy> result = Database.selectStudiesWhere(sprop.setSimulationContexts(context)
+ .setState(ProgressState.inPROGRESS));
+ if (result.size() == 0) {
+ logger.info("Study on Réacteur RAPSODIE not found.");
+ return false;
+ } else {
+ logger.info("Study on Réacteur RAPSODIE: " + result.get(0).getTitle() + ".");
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private static boolean select_document_by_reference () {
+// ------------------------------------------------------
+ String refid = "PLM100001.02";
+ String verid = "2.0.0";
+ try {
+ Document result = Database.selectDocument(refid, verid);
+ String title = result.getTitle();
+ String refdoc = result.getReference();
+ logger.info("Document " + refdoc + ": " + title + ".");
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean select_knowledge_by_context () {
+// -------------------------------------------------
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType ctype = SimulationContext.selectType("Produit");
+ List<SimulationContext> context = Database.selectSimulationContextsWhere(cprop.setType(ctype));
+ for (Iterator<SimulationContext> i=context.iterator(); i.hasNext();) {
+ SimulationContext reactor = i.next();
+ if (reactor.getValue().equals("Réacteur RAPSODIE")) {
+
+ context = new Vector<SimulationContext>();
+ context.add(reactor);
+
+ KnowledgeElementType ktype = KnowledgeElement.selectType("Bonne pratique");
+ KnowledgeElement.Properties sprop = new KnowledgeElement.Properties();
+ List<Proxy> result = Database.selectKnowledgeElementsWhere(sprop.setSimulationContexts(context)
+ .setType(ktype));
+ if (result.size() == 0) {
+ logger.info("Study on Réacteur RAPSODIE not found.");
+ return false;
+ } else {
+ logger.info("Study on Réacteur RAPSODIE: " + result.get(0).getTitle() + ".");
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private static boolean display_study (Study study) {
+// --------------------------------------------------
+ try {
+ Step[] mystep = study.getSteps();
+ Scenario[] branch = study.getScenarii();
+ List<Publication> list;
+
+ for (int j=0; j<mystep.length; j++) {
+ Step step = mystep[j];
+ list = step.getAllDocuments();
+ if (list.size() == 0) continue;
+ logger.info("Step 0." + j + ":");
+ for (Iterator<Publication> k=list.iterator(); k.hasNext();) {
+ Publication doc = k.next();
+ String output = "* " + doc.value().getTitle();
+ List<Publication> exports = doc.getRelations(ConvertsRelation.class);
+ if (exports.size() > 0) {
+ output = output + " et export(s)";
+ for (Iterator<Publication> m=exports.iterator(); m.hasNext(); ) {
+ output = output + " " + m.next().getSourceFile().getName();
+ }
+ }
+ logger.info(output);
+ }
+ }
+ for (int i=0; i<branch.length; i++) {
+ Scenario scene = branch[i];
+ mystep = scene.getSteps();
+ for (int j=0; j<mystep.length; j++) {
+ Step step = mystep[j];
+ list = step.getAllDocuments();
+ if (list.size() == 0) continue;
+ logger.info("Step " + (i+1) + "." + j + ":");
+ for (Iterator<Publication> k=list.iterator(); k.hasNext();) {
+ Publication doc = k.next();
+ String output = "* " + doc.value().getTitle();
+ List<Publication> exports = doc.getRelations(ConvertsRelation.class);
+ if (exports.size() > 0) {
+ output = output + " et export(s)";
+ for (Iterator<Publication> m=exports.iterator(); m.hasNext(); ) {
+ output = output + " " + m.next().getSourceFile().getName();
+ }
+ }
+ logger.info(output);
+ }
+ }
+ }
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean browse_knowledge () {
+// ------------------------------------------
+ try {
+ Study study = Database.selectStudy(1);
+ Scenario[] branch = study.getScenarii();
+ List<KnowledgeElementType> types = KnowledgeElement.selectTypesWhere(ProgressState.APPROVED);
+
+ for (int i=0; i<branch.length; i++) {
+ Scenario scene = branch[i];
+ List<KnowledgeElement> kelms = scene.getAllKnowledgeElements();
+ Iterator<KnowledgeElement> more = kelms.iterator();
+ KnowledgeElement next = null;
+ if (more.hasNext()) next = more.next();
+
+ for (Iterator<KnowledgeElementType> j=types.iterator(); j.hasNext();) {
+ KnowledgeElementType type = j.next();
+ logger.info(type.getName() + ":");
+ while (next != null && next.getType().equals(type)) {
+ logger.info("* " + next.getTitle() + ": " + next.getValue());
+ }
+ }
+ }
+ return true;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean read_wordxml_properties () {
+// -------------------------------------------------
+ File template = new File("D:/Atelier/Eclipse/salome/org.splat/src/template.xml");
+ File copy = new File("D:/Atelier/Eclipse/salome/org.splat/src/example.xml");
+ try {
+ if (copy.exists()) copy.delete();
+ Do.copy(template, copy);
+ Writer credoc = Toolbox.getWriter(copy);
+ if (credoc != null) {
+
+// Setting of properties
+ credoc.updateProperty("customer", "CEA Cadarache");
+ credoc.updateProperty("title", "Spécifications générales");
+ credoc.save();
+
+// Displaying properties
+ Reader example = Toolbox.getReader(copy);
+ Revision.Format convert = new Revision.Format("V%M.%m");
+ String value;
+ logger.info("Properties of \"" + copy.getName() + "\" document:");
+
+ value = example.extractProperty("title");
+ logger.info("* Title = " + value);
+ value = example.extractProperty("version");
+ Revision verdoc = convert.parse(value);
+ logger.info("* Version = " + verdoc.toString());
+ value = example.extractProperty("customer");
+ logger.info("* Customer = " + value);
+ value = example.extractText();
+ logger.info("* Text = " + value);
+ }
+ return false;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+
+ private static boolean read_worddoc_properties () {
+// -------------------------------------------------
+ File file = new File("D:/Atelier/Eclipse/salome/org.splat/src/example.docx");
+ try {
+ if (!file.exists()) return false;
+
+ Reader example = Toolbox.getReader(file);
+ logger.info("Properties of \"" + file.getName() + "\" document:");
+ String value;
+
+ value = example.extractProperty("customer");
+ logger.info("* Customer = " + value);
+ value = example.extractProperty("title");
+ logger.info("* Title = " + value);
+ value = example.extractText();
+ logger.info("* Text = " + value);
+ return false;
+ }
+ catch (Exception e) {
+ return false;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<workflow name="Cast3M">
+
+<!-- 1. Simulation Contexts
+ Defines the default simulation contexts common to all studies applying this workflow. These simulation contexts
+ will automatically be assigned to studies at creation time.
+ Each simulation context is set through a tag corresponding to the name of a simulation context type previously
+ defined in the SOM structure.
+ -->
+ <contexts>
+ <model value="FEM"/>
+ <platform value="SALOME"/>
+ <module value="Cast3M"/>
+ </contexts>
+
+<!-- 2. User activities
+ Defines the steps involved in this workflow.
+ Each step is defined by a tag corresponding to the name of a step type previously defined in the SOM structure.
+ It includes:
+ - The simulation contexts types relative to the step (tag classification, attribute context)
+ - The document types that can be produced at this step (tag flow, attribute contents)
+ - The document type result of this step (tag flow, attribute result)
+ All simulation contexts and document types must previously be defined in the SOM structure.
+
+ User activities are ordered. They can be attached to scenarios - they are the same for all scenarios of the study -
+ or to the study itself. Attaching an activity to the study makes the data produced during this activity shared by all
+ scenarios of the study (typically, the study requirements).
+
+ Remarks:
+ - Simulation Contexts must be attached to one classification step only.
+ - Result document types must be results of one step only and be part of contents of the corresponding step.
+ - The result document type of the last activity attached to the study makes the result document type of the study itself.
+ -->
+ <activities>
+ <specification>
+ <classification context="customer,product,phase,need,purpose,physic"/>
+ <flow contents="requirements,specification,minutes" result="specification"/>
+ </specification>
+ <scenario>
+ <design>
+ <flow contents="design,memorandum,minutes" result="design"/>
+ </design>
+ <modeling>
+ <classification context="object,part,geometry"/>
+ <flow contents="geometry,memorandum,minutes" result="geometry"/>
+ </modeling>
+ <meshing>
+ <classification context="model,element,shape,order"/>
+ <flow contents="model,memorandum,minutes" result="model"/>
+ </meshing>
+ <preprocessing>
+ <classification context="analysis"/>
+ <flow contents="loads,script,minutes" result="loads"/>
+ </preprocessing>
+ <solving>
+ <classification context="platform,module,component"/>
+ <flow contents="log,results,minutes" result="results"/>
+ </solving>
+ <postprocessing>
+ <flow contents="memorandum,minutes"/>
+ </postprocessing>
+ <capitalization>
+ <flow contents="knowledge"/>
+ </capitalization>
+ </scenario>
+ <reporting>
+ <flow contents="report,minutes" result="report"/>
+ </reporting>
+ </activities>
+
+
+<!-- 3. Document validation cycles
+ The validation cycles define the actors involved in the validation steps of documents. These steps can be
+ "review", "approval" and "acceptance" and applies to document types resulting from an activity.
+ Each validation cycle is defined by a tag corresponding to the type of the result document previously defined
+ in activities.
+
+ Remarks:
+ - The actors of validation steps can be
+ "manager", referring the responsible of study,
+ "Nx1", referring the manager of the department (n+1 of the responsible of study),
+ "Nx2", referring the boss of the department manager (n+2 of the responsible of study),
+ "customer" (most likely involved in the acceptance step).
+ -->
+ <validations>
+ <specification review="Nx1" approval="Nx2"/>
+ <report review="Nx1" approval="Nx2"/>
+ <default review="manager" />
+ </validations>
+
+</workflow>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <session-factory>
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
+ <property name="connection.url">jdbc:mysql://localhost/simer</property>
+ <property name="connection.username">simer</property>
+ <property name="connection.password">admin</property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+ <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+
+ <!-- Enable Hibernate's automatic session context management -->
+ <property name="current_session_context_class">thread</property>
+
+ <!-- Echo all executed SQL statements to stdout -->
+ <property name="hibernate.show_sql">false</property>
+
+ <!-- mapping files -->
+ <mapping resource="org/splat/kernel/Persistent.hbm.xml" />
+ <mapping resource="org/splat/kernel/Any.hbm.xml" />
+ <mapping resource="org/splat/kernel/Entity.hbm.xml" />
+ <mapping resource="org/splat/kernel/Attribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Relation.hbm.xml" />
+ <mapping resource="org/splat/kernel/IDPool.hbm.xml" />
+ <mapping resource="org/splat/kernel/TextAttribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Text.hbm.xml" />
+ <mapping resource="org/splat/kernel/User.hbm.xml" />
+
+ <mapping resource="org/splat/som/ProjectElement.hbm.xml" />
+ <mapping resource="org/splat/som/Study.hbm.xml" />
+ <mapping resource="org/splat/som/Scenario.hbm.xml" />
+ <mapping resource="org/splat/som/Attributes.hbm.xml" />
+ <mapping resource="org/splat/som/Relations.hbm.xml" />
+ <mapping resource="org/splat/som/File.hbm.xml" />
+ <mapping resource="org/splat/som/Document.hbm.xml" />
+ <mapping resource="org/splat/som/Publication.hbm.xml" />
+ <mapping resource="org/splat/som/ValidationCycle.hbm.xml" />
+ <mapping resource="org/splat/som/Timestamp.hbm.xml" />
+ <mapping resource="org/splat/som/SimulationContext.hbm.xml" />
+ <mapping resource="org/splat/som/KnowledgeElement.hbm.xml" />
+ <mapping resource="org/splat/som/IDBuilder.hbm.xml" />
+
+ </session-factory>
+
+</hibernate-configuration>
\ No newline at end of file
--- /dev/null
+### direct log messages to stdout ###
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
+
+### set log levels - for more verbose logging change 'info' to 'debug' ###
+
+log4j.rootLogger=debug, stdout
+
+log4j.logger.org.hibernate=info
+#log4j.logger.org.hibernate=debug
+
+### log HQL query parser activity
+#log4j.logger.org.hibernate.hql.ast.AST=debug
+
+### log just the SQL
+log4j.logger.org.hibernate.SQL=debug
+
+### log JDBC bind parameters ###
+log4j.logger.org.hibernate.type=info
+#log4j.logger.org.hibernate.type=trace
+
+### log schema export/update ###
+log4j.logger.org.hibernate.tool.hbm2ddl=info
+
+### log HQL parse trees
+#log4j.logger.org.hibernate.hql=debug
+
+### log cache activity ###
+log4j.logger.org.hibernate.cache=info
+
+### log transaction activity
+#log4j.logger.org.hibernate.transaction=debug
+
+### log JDBC resource acquisition
+#log4j.logger.org.hibernate.jdbc=debug
+
+### enable the following line if you want to track down connection ###
+### leakages when using DriverManagerConnectionProvider ###
+#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the root abstract class supporting dynamic attributes.
+ - All objects instance of a subclass of Any are uniquely identified by the rid primary key through the IDGenerator identifier generator class.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.Any" abstract="true">
+
+ <!-- int rid -->
+ <id name="rid" type="int" column="rid" unsaved-value="0" access="field">
+ <generator class="org.splat.kernel.IDGenerator"/>
+ </id>
+
+
+ <!-- Set<Attribute> attributes -->
+ <set name="attributes" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Attribute" />
+ </set>
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Abstract root class of persistent objects supporting dynamic attributes.<br/>
+ * Dynamic attributes are instances of concrete subclasses of Attribute that are assigned to Any objects at run time.
+ * The attributes of a given Any object must all be of different types.
+ *
+ * @see Attribute
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.hibernate.Session;
+import org.splat.som.Database;
+
+
+public abstract class Any extends Persistent {
+
+ private Set<Attribute> attributes;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor.
+ protected Any () {
+ }
+// Initialization constructors
+ protected Any (ObjectProperties oprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// --------------------------------------
+ super(oprop);
+ attributes = new HashSet<Attribute>();
+ }
+ protected Any (Attribute... field) {
+// ----------------------------------
+ attributes = new HashSet<Attribute>();
+ for (int i=0; i<field.length; i++) {
+ if (field[i] == null) continue; // Happen when newing an Any object without property
+ if (field[i].getFrom().equals(this)) attributes.add(field[i]);
+ }
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Attribute getAttribute (Class<? extends Attribute> type) {
+// ---------------------------------------------------------------
+ for (Iterator<Attribute> i=attributes.iterator(); i.hasNext(); ) {
+ Attribute field = i.next();
+ if (field.getClass().equals(type)) return field;
+ }
+ return null;
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected boolean removeAttribute (Attribute field) {
+// ---------------------------------------------------
+ for (Iterator<Attribute> i=attributes.iterator(); i.hasNext(); ) {
+ if (!i.next().equals(field)) continue;
+ i.remove();
+ if (this.isSaved()) Database.getSession().update(this);
+ return true;
+ }
+ return false;
+ }
+
+ protected boolean setAttribute (Attribute field) {
+// ------------------------------------------------
+ Class<?> type = field.getClass();
+ Session session = Database.getSession();
+
+ if (!field.getFrom().equals(this)) return false;
+ for (Iterator<Attribute> i=attributes.iterator(); i.hasNext(); ) {
+ if (!i.next().getClass().equals(type)) continue;
+ i.remove();
+ break;
+ }
+ attributes.add(field);
+ if (this.isSaved()) {
+ if (!field.isSaved()) session.save(field);
+ session.update(this);
+ } // Else, when saving this, Hibernate will propagate the operation
+ return true;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the Attribute class hierarchy.
+ - The attribute hierarchy is mapped to a single table using a String discriminator.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.Attribute" abstract="true" table="attribute">
+
+ <!-- int rid -->
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+ <discriminator column="type" type="string"/>
+
+ <!-- Any owner -->
+ <many-to-one name="owner" column="owner" access="field" not-null="true" />
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @see Any
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+
+public abstract class Attribute extends Persistent {
+
+ protected Any owner;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor.
+ protected Attribute () {
+ }
+// Initialization constructor
+ protected Attribute (Any from) {
+// ------------------------------
+ this.owner = from;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Persistent getFrom () {
+// ----------------------------
+ return owner;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.jdbc.Work;
+import org.apache.log4j.Logger;
+
+
+public abstract class Database {
+
+// private static String CONFIG_FILE = "/hibernate.cfg.xml";
+ private static SessionFactory mySessionFactory = null;
+ protected static IDPool myIDpool = null;
+
+ protected class CreateTables implements Work {
+// -----------------------------------------------
+ protected Statement request;
+
+ public void execute(Connection connex) throws SQLException
+ {
+ request = connex.createStatement();
+
+// Last identifier of Any objects
+ String create = "CREATE TABLE `any` (" +
+ "`rid` int(10) UNSIGNED NOT NULL," +
+ "`version` tinytext NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Relation from entities
+ create = "CREATE TABLE `relation` (" +
+ "`rid` int(10) UNSIGNED NOT NULL," +
+ "`name` tinytext NOT NULL," +
+ "`owner` int(10) NOT NULL," +
+ "`refer` int(10) NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Attribute objects
+ create = "CREATE TABLE `attribute` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`type` tinytext NOT NULL," +
+ "`owner` int(10) NOT NULL," +
+ "`value` int(10) NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Java String objects
+ create = "CREATE TABLE `text` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`value` longtext NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// User and role objects
+ create = "CREATE TABLE `user` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`username` varchar(32) NOT NULL," +
+ "`password` varchar(32)," +
+ "`first` tinytext NOT NULL," +
+ "`last` tinytext NOT NULL," +
+ "`display` tinytext," +
+ "`email` tinytext," +
+ "`organid` tinytext," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+ create = "CREATE TABLE `role` (" +
+ "`username` varchar(32) NOT NULL," +
+ "`role` varchar(32) NOT NULL," +
+ "PRIMARY KEY (`username`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+ }
+ }
+
+ protected final static Logger logger = Logger.getLogger(Database.class);
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static Session getSession () {
+// -----------------------------------
+ return getInstance().getCurrentSession();
+ }
+
+ public static void close () {
+// ---------------------------
+ if (mySessionFactory != null) mySessionFactory.close();
+ mySessionFactory = null;
+ }
+
+ public static IDPool getIDPool () {
+// ---------------------------------
+ if (myIDpool == null) myIDpool = new IDPool(getSession());
+ return myIDpool;
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected String getSchemaVersion () {
+// ------------------------------------
+ return getIDPool().getSchemaVersion();
+ }
+
+ protected void setIDPoolSize (int size) {
+// ---------------------------------------
+ IDPool.setPoolSize(size);
+ }
+
+ protected void setSchemaVersion (String version) {
+// ------------------------------------------------
+ myIDpool = new IDPool(version);
+ getSession().save(myIDpool);
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private static SessionFactory getInstance () {
+// --------------------------------------------
+ if (mySessionFactory == null) {
+ org.hibernate.cfg.Configuration cfg = new org.hibernate.cfg.Configuration();
+ try {
+ cfg.configure(); // The configuration file (hibernate.cfg.xml)) is supposed to be on the classpath
+ mySessionFactory = cfg.buildSessionFactory();
+ }
+ catch (Exception error) {
+ logger.fatal("Could not initialize the Hibernate configuration, reason:", error);
+ }
+ }
+ return mySessionFactory;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Properties;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+import javax.activation.FileDataSource;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import org.apache.log4j.Logger;
+
+
+public class Do {
+
+ public static boolean containsIllicitCharacter (String name) {
+// ------------------------------------------------------------
+ char parse[] = name.toCharArray();
+
+ for (int i=0; i<parse.length; i++) {
+ int k = java.lang.Character.getType(parse[i]);
+ if (k == java.lang.Character.DECIMAL_DIGIT_NUMBER) continue;
+ if (k == java.lang.Character.LOWERCASE_LETTER) continue;
+ if (k == java.lang.Character.UPPERCASE_LETTER) continue;
+ if (k == java.lang.Character.SPACE_SEPARATOR) continue;
+ if (k == java.lang.Character.END_PUNCTUATION) continue;
+ if (k == java.lang.Character.DASH_PUNCTUATION) continue;
+ if (parse[i] == '\'') continue;
+ if (parse[i] == '_') continue;
+ if (parse[i] == '&') continue;
+ if (parse[i] == '.') continue;
+ return true;
+ }
+ return false;
+ }
+
+ public static void copy (File fromFile, File toFile) throws IOException {
+// ----------------------------------------------------
+ if (!fromFile.exists()) throw new IOException("ERROR File copy: no such '" + fromFile.getName() + "' source file.");
+ if (!fromFile.isFile()) throw new IOException("Error File copy: can't copy directory '" + fromFile.getName() + "'.");
+
+ if (toFile.isDirectory()) toFile = new File(toFile, fromFile.getName());
+ if (toFile.exists()) throw new IOException("ERROR File copy: file " + toFile.getName() + " already exist.");
+ else {
+ String parent = toFile.getParent();
+ if (parent == null) throw new IOException("ERROR File copy: destination directory not defined.");
+ File dir = new File(parent);
+ if (!dir.exists()) throw new IOException("ERROR File copy: destination directory " + parent + " doesn't exist.");
+ }
+ FileInputStream from = null;
+ FileOutputStream to = null;
+ try {
+ from = new FileInputStream(fromFile);
+ to = new FileOutputStream(toFile);
+ byte[] buffer = new byte[4096];
+ int bytesRead;
+
+ while ((bytesRead = from.read(buffer)) != -1) to.write(buffer, 0, bytesRead); // write
+
+ from.close();
+ to.close();
+ }
+ catch (IOException e) {
+ throw new IOException();
+ }
+ }
+
+ public static boolean sendMail (User to, String subject, String message, File attachement, Properties mprop) {
+// ------------------------------------------------------------------------------------------------------------
+ if (mprop.getProperty("mail.smtp.host") == null) return false;
+ if (mprop.getProperty("mail.pop3.host") == null) return false;
+ if (mprop.getProperty("mail.from") == null) return false;
+
+ Session mail = Session.getInstance(mprop, null);
+ Logger log = Logger.getLogger(Do.class);
+ try {
+ log.info("Preparation of mail to " + to.toString());
+
+ MimeMessage msg = new MimeMessage(mail);
+ msg.setFrom(); // Address defined in properties at mail.from
+ msg.setRecipients(Message.RecipientType.TO, to.getMailAddress());
+ msg.setSubject(subject);
+
+ BodyPart msgBody = new MimeBodyPart();
+ msgBody.setText(message);
+
+ Multipart multipart = new MimeMultipart();
+ multipart.addBodyPart(msgBody);
+
+ if (attachement != null) {
+ String attachname = attachement.getCanonicalPath();
+
+ msgBody = new MimeBodyPart();
+ DataSource attachment = new FileDataSource(attachname);
+ msgBody.setDataHandler(new DataHandler(attachment));
+ msgBody.setFileName(attachname);
+ multipart.addBodyPart(msgBody);
+ }
+ msg.setContent(multipart);
+ msg.setSentDate(new Date());
+
+ Transport.send(msg);
+ log.info("sent.");
+
+ } catch (MessagingException mex) {
+ log.error("Send mail failed, reason " + mex);
+ return false;
+
+ } catch (IOException mex) {
+ log.error("Send mail failed, reason " + mex);
+ return false;
+ }
+ return true;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class DuplicatePropertyException extends Exception {
+
+ private static final long serialVersionUID = 189342004009382158L;
+
+ public DuplicatePropertyException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the root abstract class supporting relations.
+ -
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.Entity" abstract="true">
+
+ <!-- int rid -->
+ <id name="rid" type="int" column="rid" unsaved-value="0" access="field">
+ <generator class="org.splat.kernel.IDGenerator"/>
+ </id>
+
+
+ <!-- Set<Attribute> attributes -->
+ <set name="attributes" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Attribute" />
+ </set>
+
+ <!-- Set<Relation> relations -->
+ <set name="relations" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Relation" />
+ </set>
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Abstract root class of persistent objects supporting relations to other persistent objects.<br/>
+ * Relations are instances of concrete subclasses of Relation that are assigned to Entity objects at run time.<br/>
+ * <br/>
+ * Entity objects also support dynamic attributes provided by the Any class.
+ *
+ * @see Relation
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+import org.hibernate.Session;
+
+
+public abstract class Entity extends Any {
+
+ private Set<Relation> relations;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected Entity () {
+ }
+// Initialization constructor
+ protected Entity (ObjectProperties prop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// ----------------------------------------
+ super(prop);
+ relations = new HashSet<Relation>();
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Relation getFirstRelation (Class<? extends Relation> type) {
+// -----------------------------------------------------------------
+ for (Iterator<Relation> i=relations.iterator(); i.hasNext();) {
+ Relation link = i.next();
+ if (link.getClass().equals(type)) return link;
+ }
+ return null;
+ }
+
+ public List<Relation> getRelations (Class<? extends Relation> type) {
+// -------------------------------------------------------------------
+ List<Relation> result = new Vector<Relation>();
+
+ for (Iterator<Relation> i=relations.iterator(); i.hasNext();) {
+ Relation link = i.next();
+ if (link.getClass().equals(type)) result.add(link);
+ }
+ return result;
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected Set<Relation> getAllRelations () {
+// ------------------------------------------
+ return relations;
+ }
+
+ protected Relation addRelation (Relation link) {
+// ----------------------------------------------
+ Session session = Database.getSession();
+
+ session.save(link);
+ relations.add(link);
+ session.update(this);
+
+ if (link.isBidirectional()) {
+ Entity to = (Entity)link.getTo(); // Bidirectional relation are necessarily between entities
+
+ link = link.getReverse();
+ session.save(link);
+// if (to.relations == null) to.relations = new HashSet<Relation>();
+ to.relations.add(link);
+ session.update(to);
+ }
+ return link;
+ }
+
+ protected void removeRelation (Class<? extends Relation> type, Persistent to) {
+// -----------------------------------------------------------------------------
+ for (Iterator<Relation> i=relations.iterator(); i.hasNext();) {
+ Relation link = i.next();
+ if (!link.getClass().equals(type)) continue;
+ if (!link.getTo().equals(to)) continue;
+ i.remove();
+ if (this.isSaved()) Database.getSession().update(this);
+ return;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.Serializable;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.Properties;
+
+import org.hibernate.HibernateException;
+import org.hibernate.usertype.EnhancedUserType;
+import org.hibernate.usertype.ParameterizedType;
+
+
+public class GenericEnumType implements EnhancedUserType, ParameterizedType {
+
+ @SuppressWarnings("unchecked")
+ private Class<Enum> enumClass;
+
+ @SuppressWarnings("unchecked")
+ public void setParameterValues (Properties parameters) {
+// ------------------------------------------------------
+ String enumClassName = parameters.getProperty("enumClassName");
+ try {
+ enumClass = (Class<Enum>) Class.forName(enumClassName);
+ }
+ catch (ClassNotFoundException cnfe) {
+ throw new HibernateException("Enum class not found", cnfe);
+ }
+ }
+
+ public Object assemble (Serializable cached, Object owner) throws HibernateException {
+// ----------------------------------------------------------
+ return cached;
+ }
+
+ public Object deepCopy (Object value) throws HibernateException {
+// -------------------------------------
+ return value;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Serializable disassemble (Object value) throws HibernateException {
+// ----------------------------------------------
+ return (Enum) value;
+ }
+
+ public boolean equals (Object x, Object y) throws HibernateException {
+// ------------------------------------------
+ return x==y;
+ }
+
+ public int hashCode (Object x) throws HibernateException {
+// ------------------------------
+ return x.hashCode();
+ }
+
+ public boolean isMutable () {
+// ---------------------------
+ return false;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object nullSafeGet (ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
+// ----------------------------------------------------------------------
+ String name = rs.getString( names[0] );
+ return rs.wasNull() ? null : Enum.valueOf(enumClass, name);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void nullSafeSet (PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
+// -----------------------------------------------------------------------
+ if (value==null) {
+ st.setNull(index, Types.VARCHAR);
+ }
+ else {
+ st.setString( index, ( (Enum) value ).name() );
+ }
+ }
+
+ public Object replace (Object original, Object target, Object owner) throws HibernateException {
+// --------------------------------------------------------------------
+ return original;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Class returnedClass () {
+// -----------------------------
+ return enumClass;
+ }
+
+ public int[] sqlTypes () {
+// ------------------------
+ return new int[] { Types.VARCHAR };
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object fromXMLString (String xmlValue) {
+// ---------------------------------------------
+ return Enum.valueOf(enumClass, xmlValue);
+ }
+
+ @SuppressWarnings("unchecked")
+ public String objectToSQLString (Object value) {
+// ----------------------------------------------
+ return '\'' + ( (Enum) value ).name() + '\'';
+ }
+
+ @SuppressWarnings("unchecked")
+ public String toXMLString (Object value) {
+// ----------------------------------------
+ return ( (Enum) value ).name();
+ }
+
+
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Class generating the persistent identifier of all objects instance of a subclass of Any.<br/>
+ * The implementation of this generator is optimized basing on IDPool.
+ *
+ * @see IDPool
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.Serializable;
+
+import org.hibernate.HibernateException;
+import org.hibernate.engine.SessionImplementor;
+import org.hibernate.id.IdentifierGenerator;
+
+
+public class IDGenerator implements IdentifierGenerator {
+
+ public Serializable generate (SessionImplementor session, Object any) throws HibernateException {
+// ---------------------------------------------------------------------
+ return Database.getIDPool().getNextID();
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.IDPool" table="any">
+
+
+ <id name="lastid" column="rid" access="field">
+ <generator class="assigned"/>
+ </id>
+
+ <property name="version" column="version" access="field" not-null="true" />
+
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Optimized generator of persistent identifiers.<br/>
+ * This generator minimizes the database hits by grouping a bunch of identifiers in memory and only hitting the database
+ * when the in-memory value group is exhausted.
+ * Only one IDPool object held by the Database class is created during a session.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import org.hibernate.Session;
+import org.hibernate.jdbc.Work;
+
+
+public class IDPool {
+
+// Persistent fields
+ private Integer lastid; // Last generated ID
+ private String version; // Version of the database schema
+
+// Transient fields
+ private int remaining; // Remaining available ID held in this pool
+ private static int poolsize = 1; // No pool by default
+
+ private class LoadNewIDs implements Work {
+// -----------------------------------------
+ public void execute(Connection connex) throws SQLException
+ {
+ Statement request = connex.createStatement();
+ ResultSet result = request.executeQuery("SELECT MAX(rid) AS lastid FROM any");
+ StringBuffer command = new StringBuffer("UPDATE any SET rid=");
+
+ result.first();
+ lastid = result.getInt("lastid");
+
+ command.append(lastid + poolsize).append(" WHERE rid=").append(lastid);
+ request.execute(command.toString());
+
+ remaining = poolsize;
+ }
+ }
+ private class LoadLastID implements Work {
+// -----------------------------------------
+ public void execute(Connection connex) throws SQLException
+ {
+ Statement request = connex.createStatement();
+ ResultSet result = request.executeQuery("SELECT MAX(rid) AS lastid FROM any");
+ StringBuffer command = new StringBuffer("SELECT version FROM any WHERE rid=");
+
+ result.first();
+ lastid = result.getInt("lastid");
+
+ command.append(lastid);
+ result = request.executeQuery(command.toString());
+ result.first();
+ version = result.getString("version");
+ remaining = 0;
+ }
+ }
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ protected IDPool () {
+ }
+/**
+ * Constructor called only once, when initializing the database.
+ *
+ * @param version the version of the constructed database schema.
+ */
+ protected IDPool (String version) {
+// ---------------------------------
+ this.lastid = 0; //TODO: Get the current last ID if a previous version exists
+ this.version = version;
+ this.remaining = 0;
+ }
+/**
+ * Constructor called at start of every database session.
+ *
+ * @param base the started database session
+ */
+ protected IDPool (Session base) {
+// -------------------------------
+ base.doWork( new LoadLastID() );
+ }
+
+// ==============================================================================================================================
+// Protected member functions
+// ==============================================================================================================================
+
+ protected Integer getNextID () {
+// ------------------------------
+ if (remaining <= 0) Database.getSession().doWork( new LoadNewIDs() );
+ lastid += 1;
+ remaining -= 1;
+ return lastid;
+ }
+
+ protected String getSchemaVersion () {
+// ------------------------------------
+ return version;
+ }
+
+ protected static void setPoolSize (int size) {
+// --------------------------------------------
+ if (size > 1) poolsize = size;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class InvalidPropertyException extends Exception {
+
+ private static final long serialVersionUID = -3988379180445723963L;
+
+ public InvalidPropertyException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class MismatchException extends Exception {
+
+ private static final long serialVersionUID = 366699682058153984L;
+
+ public MismatchException () {
+ }
+ public MismatchException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class MissedPropertyException extends Exception {
+
+ private static final long serialVersionUID = -4459708372517969441L;
+
+ public MissedPropertyException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class MultiplyDefinedException extends Exception {
+
+ private static final long serialVersionUID = 3551033092059904168L;
+
+ public MultiplyDefinedException () {
+ }
+ public MultiplyDefinedException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Interface implemented by the User class for allowing the application to manipulate lists of user names mixing
+ * real users and generic users such as Author of something or Responsible of that.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+
+public interface Name {
+
+ public int getIndex ();
+ public String toString ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class NotApplicableException extends Exception {
+
+ private static final long serialVersionUID = -6255758696740565804L;
+
+ public NotApplicableException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Common interface of intermediate properties objects used for constructing persistent objects supporting the API Design Pattern
+ * provided by this package.
+ * This interface mainly provides a frame for checking the validity of arguments used by persistent object constructors.
+ * The validity check is implemented in classes inheriting from the Persistent.Properties abstract class through the checkValidity
+ * member function defined in this interface - see class User included in this package for an example of use.
+ *
+ * @see Persistent
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+public interface ObjectProperties {
+
+/**
+ * Checks the mutual compatibility of arguments previously set in the properties object.
+ * The validity of each individual argument is supposed to be check first in the setter function of the argument.
+ *
+ * @throws MissedPropertyException
+ * @throws InvalidPropertyException
+ * @throws MultiplyDefinedException
+ */ public void checkValidity () throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException;
+
+ /**
+ * Disables the validity check.
+ * The validity check is by default enabled when constructing an properties object.
+ */ public void disableCheck ();
+
+ /**
+ * Returns true if the validity check is enabled.
+ */ public boolean mustBeChecked ();
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the primary key common to all Persistent objects.
+ -
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.Persistent" abstract="true">
+
+
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Base implementation of the API Design Pattern of objects which persistence is based on Hibernate.<br/>
+ * This Design Pattern supports the following features:
+ * <ul>
+ * <li>Flexible API for constructing objects from many variable arguments</li>
+ * <li>Impossible to leave persistent objects in inconsistent state, even temporarily, during their construction</li>
+ * <li>Same Object Oriented API for constructing and selecting objects from the database</li>
+ * <li>Centralized validity check of arguments</li>
+ * </ul>
+ * The API is based on intermediate properties objects used for collecting arguments and checking their validity.
+ * These properties objects are passed to persistent object constructors and database select functions for execution.
+ * For example, as based on this Design Pattern, a User object could be created that way:
+ * <pre>
+ * User.Properties args = new User.Properties();
+ * User user = new User( args.setUsername("mypseudo").setMailAddress("me@provider.domain") );
+ * </pre>
+ * Classes implementing this Design Pattern must inherit from Persistent and implement their Properties class as a nested
+ * subclass of Persistent.Properties.<br/>
+ * <br/>
+ * Naturally, as usual with Hibernate, any class can be persistent (you don't need to inherit from Persistent for being
+ * persistent). Inheriting from Persistent is only a matter of enabling the API supported by the above Design Pattern.
+ *
+ * @see ObjectProperties
+ * @see Persistent.Properties
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+
+public abstract class Persistent {
+
+ private int rid; // Primary key of persistent objects
+
+ protected abstract static class Properties implements ObjectProperties {
+// ----------------------------------------------------------------------
+ private boolean tobechecked = true; // Property validity check flag
+
+ public void disableCheck () {
+ tobechecked = false;
+ }
+ public boolean mustBeChecked () {
+ return tobechecked;
+ }
+ public void clear () {
+ tobechecked = true;
+ }
+ }
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+/**
+ * Database fetch constructor.
+ */
+ protected Persistent () {
+// -----------------------
+ rid = 0; // Set when loading the object
+ }
+
+/**
+ * Checks the mutual compatibility of arguments previously set in the given properties object, if the validity check is enabled.
+ * As this validity depends on concrete classes, the check is delegated to subclasses of the given Persistent.Properties.
+ */
+ protected Persistent (ObjectProperties oprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// ---------------------------------------------
+ if (oprop.mustBeChecked()) oprop.checkValidity(); // Throws one of the above exception if not valid
+ rid = 0; // Set when saving the object
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean equals(Object entity) {
+// ------------------------------------
+ if (entity == null) return false;
+ if (entity.getClass().equals(this.getClass())) {
+ Persistent object = (Persistent)entity;
+ int he = object.getIndex(); // getIndex() is supposed fetching the index if not yet done
+ int me = this.getIndex(); // getIndex() is supposed fetching the index if not yet done
+ if (me*he != 0) return (he == me);
+ if (me+he == 0) return (this == object);
+ }
+ return false;
+ }
+
+/**
+ * Returns the Persistent ID of this object. The PID is set when saving this object. It is unique in the scope of the class
+ * of this object only.
+ *
+ * @return the PID of this, or 0 if this is not saved.
+ * @see isSaved()
+ */
+ public int getIndex () {
+// ----------------------
+ return rid;
+ }
+
+ public int hashCode () {
+// ----------------------
+ return toString().hashCode();
+ }
+
+/**
+ * Returns true if this object is saved.
+ *
+ * @return true if this is saved.
+ * @see getIndex()
+ */
+ public boolean isSaved () {
+// -------------------------
+ return (getIndex() != 0); // getIndex() is supposed fetching the index if not yet done
+ }
+
+/**
+ * Return a string representing uniquely this object.
+ *
+ * @return the unique string representation of this object.
+ */
+ public String toString () {
+// -------------------------
+ int oid = getIndex(); // getIndex() is supposed fetching the index if not yet done
+ if (oid == 0) oid = super.hashCode(); //WARNING: Must not call super.toString() as it goes back here (this.toString())
+ return new StringBuffer("object ").append(getClass().getName()).append("@").append(oid).toString();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Map;
+
+import javax.security.auth.*;
+import javax.security.auth.callback.*;
+import javax.security.auth.login.*;
+import javax.security.auth.spi.*;
+
+import org.apache.log4j.Logger;
+
+
+public class RealmLoginModule implements LoginModule {
+
+// Initial state
+ private Subject subject;
+ private CallbackHandler callbackHandler;
+// private Map sharedState;
+// private Map options;
+
+// Authentication status
+ private boolean succeeded = false;
+ private boolean commit = false;
+
+// Principal
+ private User identity = null;
+
+ private Logger logger = null;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public void initialize(Subject user, CallbackHandler handler, Map<String, ?> state, Map<String, ?> opts) {
+// --------------------------------------------------------------------------------------------------------
+ subject = user;
+ callbackHandler = handler;
+// sharedState = state;
+// options = opts;
+// debug = "true".equalsIgnoreCase((String)options.get("debug"));
+ logger = Logger.getLogger(Database.class);
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public boolean login() throws LoginException {
+// ----------------------
+ try {
+// Ask for username password
+ Callback[] callbacks = new Callback[2];
+ callbacks[0] = new NameCallback("username");
+ callbacks[1] = new PasswordCallback("password", false);
+
+ callbackHandler.handle(callbacks);
+
+ String username = ((NameCallback)callbacks[0]).getName();
+ String password = null;
+ char[] entered = ((PasswordCallback)callbacks[1]).getPassword();
+ if (entered != null) {
+ password = new String(entered);
+ ((PasswordCallback)callbacks[1]).clearPassword();
+ }
+
+// Authentication
+ User found = UserDirectory.selectUser(username, password);
+ if (found != null) {
+ identity = found;
+ succeeded = true;
+ Calendar today = java.util.Calendar.getInstance();
+ Date datime = today.getTime();
+ logger.info("RKV:Connection of " + identity.toString() + " " + datime.toString() + ".");
+ return true;
+ } else {
+ identity = null;
+ succeeded = false;
+ found = UserDirectory.selectUser(username);
+ String reason = "password";
+ if (found == null) reason = "username";
+ logger.info("Connection attempt as " + username + ".");
+ throw new FailedLoginException(reason);
+ }
+ }
+ catch (java.io.IOException ioe) {
+ throw new LoginException(ioe.toString());
+ }
+ catch (UnsupportedCallbackException uce) {
+ throw new LoginException("Error: " + uce.getCallback().toString() +
+ " not available to garner authentication information" +
+ " from the user");
+ }
+ }
+
+ public boolean commit() throws LoginException {
+// -----------------------
+ if (!succeeded) return false;
+
+ if (!subject.getPrincipals().contains(identity)) subject.getPrincipals().add(identity);
+ identity = null;
+ commit = true;
+ return true;
+ }
+
+ public boolean abort() throws LoginException {
+// ----------------------
+ if (!succeeded) {
+ return false;
+ } else
+ if (succeeded && !commit) {
+ identity = null;
+ succeeded = false;
+ } else {
+ logout();
+ }
+ return true;
+ }
+
+ public boolean logout() throws LoginException {
+// -----------------------
+ subject.getPrincipals().remove(identity);
+ identity = null;
+ succeeded = false;
+ commit = false; // To be validated
+ return true;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the Relation class hierarchy.
+ - The entire hierarchy is mapped to one single table using a String discriminator.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.Relation" abstract="true" table="relation">
+
+ <!-- int rid -->
+ <id name="rid" type="int" column="rid" unsaved-value="0" access="field">
+ <generator class="org.splat.kernel.IDGenerator"/>
+ </id>
+ <discriminator column="name" type="string"/>
+
+ <!-- Set<Attribute> attributes -->
+ <set name="attributes" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Attribute" />
+ </set>
+
+ <!-- Entity owner -->
+ <many-to-one name="owner" column="owner" access="field" not-null="true" />
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Base implementation of relations between entities.<br/>
+ * A relation makes a typed link from an entity to any kind persistent object. The relations are typed by subclasses of this
+ * abstract class which define the actual object referenced by the relation.<br/>
+ * This Relation base class implements unidirectional relations. The bidirectionality must be implemented in concrete subclasses
+ * by:
+ * <ul>
+ * <li>overriding the isBidirectional() and getReverseClass() methods,</li>
+ * <li>creating the reverse relation in constructors.</li>
+ * </ul>
+ * Relation objects also support dynamic attributes provided by the Any class.
+ *
+ * @see Entity
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Iterator;
+
+import org.hibernate.Session;
+
+
+public abstract class Relation extends Any {
+
+// Persistent fields
+ protected Entity owner; // Study or Document
+
+// Transient field
+ protected Relation reverse;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected Relation () {
+// ---------------------
+ reverse = null;
+ }
+// Initialization constructor
+ protected Relation (Entity from) {
+// --------------------------------
+ super((Attribute)null); // For building the collection of attributes
+ this.owner = from;
+ this.reverse = null; // Initialized by subclasses
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Entity getFrom () {
+// ------------------------
+ return owner;
+ }
+
+ public Relation getReverse () {
+// -----------------------------
+ if (!this.isBidirectional() || reverse != null) return reverse;
+
+ Class<? extends Relation> type = this.getReverseClass();
+ Entity to = (Entity)this.getTo(); // Bidirectional relations are necessarily between Entities
+
+ for (Iterator<Relation> i=to.getAllRelations().iterator(); i.hasNext(); ) {
+ Relation asked = i.next();
+ if (!asked.getClass().equals(type)) continue;
+ if (!asked.getTo().equals(owner)) continue;
+ reverse = asked;
+ reverse.reverse = this; // For benefiting from this execution
+ return reverse;
+ }
+ return null;
+ }
+
+ public Class<? extends Relation> getReverseClass () {
+// ---------------------------------------------------
+ return null;
+ }
+
+ public boolean isBidirectional () {
+// ---------------------------------
+ return false;
+ }
+
+/**
+ * Moves this relation from its current owner entity to the given one.
+ *
+ * @param nowner the document to which this relation is moved
+ * */
+ public void moveTo (Entity nowner) {
+// ----------------------------------
+ Session session = Database.getSession();
+
+ this.owner = nowner;
+ nowner.getAllRelations().add(this);
+// myold.getAllRelations().remove(this); Harmful as it leads to remove this relation from the database (!?)
+ session.update(this);
+ session.update(nowner);
+
+ if (this.isBidirectional()) {
+ Relation link = this.getReverse();
+ link.setTo(nowner);
+ session.update(link);
+ }
+ }
+
+// ==============================================================================================================================
+// Abstract functions
+// ==============================================================================================================================
+
+ public abstract Persistent getTo ();
+ protected abstract void setTo (Persistent to); // For the need of the moveTo() method
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Class of objects representing the role of users.
+ * A role is named by an application-dependent string (reason why role names are not defined by an enumeration).
+ * A user may have several roles, user roles being stored into the database as a list of role names separated by a comma.
+ *
+ * @see User
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Vector;
+
+
+public class Role {
+
+ private String username;
+ private String role;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected Role () {
+ }
+// Initialization constructor
+ protected Role (String username, String role) {
+// ---------------------------------------------
+ this.username = username;
+ this.role = role;
+ }
+
+// ==============================================================================================================================
+// Protected member functions
+// ==============================================================================================================================
+
+ protected void addRole (String role) {
+// ------------------------------------
+ this.role = this.role + "," + role;
+ }
+
+ protected Role[] toArray () {
+// ---------------------------
+ String[] name = role.split(",");
+ Vector<Role> role = new Vector<Role>();
+
+ for (int i=0; i<name.length; i++) role.add(new Role(username, name[i]));
+ return role.toArray(new Role[name.length]);
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+// In functions bellow, the role is supposed having previously been extracted as an array.
+
+ public String getName () {
+// ------------------------
+ return role;
+ }
+
+ public boolean is (String name) {
+// -------------------------------
+ return this.role.equals(name);
+ }
+
+ public boolean isSame (Role other) {
+// ----------------------------------
+ return this.role.equals(other.role);
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of persistent Java String.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.kernel.Text" table="text" lazy="false">
+
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+ <property name="value" column="value" access="field" not-null="true" />
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Class implementing Hibernate-based persistent Java String.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.som.Database;
+
+
+public class Text extends Persistent {
+
+ private String value;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor.
+ protected Text () {
+ }
+// Initialization constructor
+ public Text (String value) {
+// --------------------------
+ this.value = value;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public String getValue () {
+// -------------------------
+ return value;
+ }
+
+ public void setValue (String value) {
+// -----------------------------------
+ this.value = value;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <subclass name="org.splat.kernel.TextAttribute" extends="org.splat.kernel.Attribute" discriminator-value="text">
+
+ <many-to-one name="mytext" column="value" access="field" cascade="all" not-null="true" />
+
+ </subclass>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+
+public abstract class TextAttribute extends Attribute {
+
+ private Text mytext;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor.
+ protected TextAttribute () {
+ }
+// Initialization constructor
+ protected TextAttribute (Any from, Text value) {
+// ----------------------------------------------
+ super(from);
+ mytext = value;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public String getValue () {
+// -------------------------
+ return mytext.getValue();
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void setValue (String value) {
+// --------------------------------------
+ mytext.setValue(value);
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the User class and its corresponding Role definition.
+ - User and Role are associated by a one-to-one association on the username User foreign key.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+<!-- Class User
+ -->
+ <class name="org.splat.kernel.User" table="user" lazy="false">
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+ <natural-id>
+ <property name="username" column="username" access="field" />
+ <many-to-one name="role" column="username" insert="false" update="false" unique="true" cascade="save-update" access="field" />
+ <property name="email" column="email" access="field" />
+ </natural-id>
+ <property name="password" column="password" access="field" />
+ <property name="first" column="first" access="field" not-null="true" />
+ <property name="last" column="last" access="field" not-null="true" />
+ <property name="display" column="display" access="field" />
+ <property name="organid" column="organid" access="field" />
+ </class>
+
+<!-- Class Role
+ -->
+ <class name="org.splat.kernel.Role" table="role" lazy="false">
+ <id name="username" column="username" access="field">
+ <generator class="assigned"/>
+ </id>
+ <property name="role" column="role" access="field" not-null="true" />
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.security.Principal;
+
+import org.splat.kernel.Persistent;
+
+
+public class User extends Persistent implements Principal, Name {
+
+// Persistent fields
+ @SuppressWarnings("unused")
+ private String password; // Property without getter function
+
+ private String username; // Unique in the user directory
+ private String first;
+ private String last;
+ private String display; // Optional
+ private Role role; // Roles as list (as stored into the database)
+ private String email;
+ private String organid;
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private String username = null;
+ private String password = null;;
+ private String first = null;
+ private String last = null;
+ private String display = null;
+ private Role role = null;
+ private String email = null;
+ private String organid = null;
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ username = null;
+ password = null;;
+ first = null;
+ last = null;
+ display = null;
+ role = null;
+ email = null;
+ organid = null;
+ }
+ public String getOrganizationName () {
+ return organid;
+ }
+ public String getPassword () {
+ return password;
+ }
+ public String getUsername () {
+ return username;
+ }
+// - Property setters
+
+ public Properties addRole (String role) throws InvalidPropertyException
+ {
+ if (role.length() == 0) throw new InvalidPropertyException("role");
+ if (this.role == null) {
+ this.role = new Role(username, role);
+ } else {
+ Role[] curole = this.role.toArray();
+ for (int i=0; i<curole.length; i++) if (curole[i].is(role)) return this;
+ this.role.addRole(role);
+ }
+ return this;
+ }
+ public Properties setDisplayName (String display) throws InvalidPropertyException
+ {
+ if (display.length() == 0) throw new InvalidPropertyException("displayname");
+ this.display = display;
+ return this;
+ }
+ public Properties setFirstName (String first) throws InvalidPropertyException
+ {
+ if (first.length() == 0) throw new InvalidPropertyException("firstname");
+ this.first = first;
+ return this;
+ }
+ public Properties setMailAddress (String address) throws InvalidPropertyException
+ {
+ String[] term = address.split("@"); // Must be of the form x@y
+ if (term.length != 2) throw new InvalidPropertyException("address");
+ term = term[1].split("\\x2E"); // Must be of the form x@y.z
+ if (term.length != 2) throw new InvalidPropertyException("address");
+ this.email = address;
+ return this;
+ }
+ public Properties setName (String last) throws InvalidPropertyException
+ {
+ if (last.length() == 0) throw new InvalidPropertyException("lastname");
+ this.last = last;
+ return this;
+ }
+ public Properties setOrganizationName (String organization) throws InvalidPropertyException
+ {
+ if (organization.length() == 0) throw new InvalidPropertyException("organization");
+ this.organid = organization;
+ return this;
+ }
+ public Properties setPassword (String password) throws InvalidPropertyException
+ {
+ if (password != null) {
+ if (password.length() < 1) throw new InvalidPropertyException("password");
+ this.password = String.valueOf(password.hashCode());
+ }
+ return this;
+ }
+ public Properties setUsername (String username) throws InvalidPropertyException
+ {
+ if (username.length() == 0) throw new InvalidPropertyException("username");
+ this.username = username;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity () throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (username == null) throw new MissedPropertyException("username");
+ if (first == null) throw new MissedPropertyException("firstname");
+ if (last == null) throw new MissedPropertyException("lastname");
+ if (role == null) throw new MissedPropertyException("role");
+ if (email == null) throw new MissedPropertyException("email");
+//TODO: Check if username exists
+ }
+ }
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected User () {
+// --------------
+ }
+// Anonymous user supposed not to be saved
+ public User (String name) {
+// -------------------------
+ username = null;
+ password = null;
+ first = null;
+ last = null;
+ display = name;
+ role = null;
+ email = null;
+ organid = null;
+ }
+// New user
+ public User (Properties uprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// ------------------------------
+ super(uprop); // Throws one of the above exception if not valid
+ this.username = uprop.username;
+ this.password = uprop.password;
+ this.first = uprop.first;
+ this.last = uprop.last;
+ this.display = uprop.display;
+ this.role = uprop.role;
+ this.email = uprop.email;
+ this.organid = uprop.organid;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean equals (Object item) {
+// -----------------------------------
+ if (item == null) return false;
+ if (item instanceof String) {
+ return this.username.equals((String)item); // Usernames are unique
+ }
+ else if (item instanceof User) {
+ User given = (User)item;
+ if (isSaved()) return (this.getIndex() == given.getIndex());
+ else return (this.username.equals(given.username)); // Usernames are unique
+ } else {
+ return false;
+ }
+ }
+
+ public String getDisplayName () {
+// -------------------------------
+ if (display == null) return last + " " + first;
+ else return display;
+ }
+
+ public String getFirstName () {
+// -----------------------------
+ return first;
+ }
+
+ public String getMailAddress () {
+// -------------------------------
+ return email;
+ }
+
+ public String getName () {
+// ------------------------
+ return last;
+ }
+
+ public String getOrganizationName () {
+// ------------------------------------
+ return organid;
+ }
+
+ public String getRoleNames () {
+// -----------------------------
+ return role.getName();
+ }
+
+ public Role[] getRoles () {
+// -------------------------
+ return role.toArray();
+ }
+
+ public String getUsername () {
+// ----------------------------
+ return username;
+ }
+
+ public String toString () {
+// -------------------------
+ return last + " " + first;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ * Very minimal implementation of the user directory of a company department.<br/>
+ * This directory can include members of the department, the two level hierarchy of these members (their n+1 and n+2 managers),
+ * and all customers of the department.<br/>
+ * The department hierarchy is defined through a hard-coded combination of user role and organization names (see the getManagerOf
+ * function of this class). It is useful for implementing an application workflow requiring such informmation (the n+1 and n+2
+ * managers are usually involved in the validation process).<br/>
+ * <br/>
+ * When needed, a full implementation of the company organization can be adjoin to this class by using user organization names
+ * as reference to departments into this organization. In this context, the function getManagerOf(user) of this class will be
+ * ineffective (it will return null).
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.IOException;
+import java.io.File;
+import java.util.HashSet;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.hibernate.Session;
+import org.splat.som.Database;
+import org.w3c.dom.Node;
+import org.apache.log4j.Logger;
+
+
+public class UserDirectory {
+
+ final static Logger logger = Logger.getLogger(UserDirectory.class);
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static User createUser (User.Properties uprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, RuntimeException {
+// -----------------------------------------------------
+ User nuser = new User(uprop);
+ Session session = Database.getSession();
+ session.save(nuser);
+
+ return nuser;
+ }
+
+ @SuppressWarnings("unchecked") // For the casting List<String>
+ public static Set<User> importUsers (File xfile) throws XMLException, MismatchException, RuntimeException {
+// ------------------------------------------------
+ String[] name = xfile.getName().split("\\x2E"); // Split by '.' (period) character
+ String fext = name[name.length-1];
+ Session session = Database.getSession();
+
+ if (!fext.equals("xml")) throw new MismatchException("filetype");
+ try {
+ DocumentBuilderFactory dfactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dfactory.newDocumentBuilder();
+ org.w3c.dom.Document inDoc = dBuilder.parse(xfile);
+ String xtag = inDoc.getDocumentElement().getNodeName();
+ if (!xtag.equals("users")) throw new MismatchException("filetype");
+ org.w3c.dom.NodeList ulist = inDoc.getElementsByTagName("user");
+
+ List<String> result = (List<String>)session.createSQLQuery("SELECT * FROM user").addScalar("username").list();
+ HashSet<String> members = new HashSet<String>();
+ HashSet<User> imported = new HashSet<User>();
+ for (Iterator<String> i=result.iterator(); i.hasNext();) members.add(i.next());
+
+ for (int i=0; i<ulist.getLength(); i++) {
+ HashMap<String, Node> row = XDOM.getNamedChildNodes(ulist.item(i));
+ User.Properties uprop = new User.Properties();
+
+// Mandatory properties
+ String uname = row.get("username").getTextContent();
+ if (members.contains(uname)) continue; // This user already exists
+ uprop.setUsername(uname)
+ .setFirstName(row.get("first").getTextContent())
+ .setName(row.get("last").getTextContent())
+ .setMailAddress(row.get("mail").getTextContent())
+ .addRole(row.get("role").getTextContent()); // Add all roles at a time
+
+// Optional properties
+ org.w3c.dom.Node node = row.get("password");
+ if (node != null) {
+ uprop.setPassword(node.getTextContent());
+ }
+ node = row.get("display");
+ if (node != null) {
+ uprop.setDisplayName(node.getTextContent());
+ }
+ node = row.get("organization");
+ if (node != null) {
+ uprop.setOrganizationName(node.getTextContent());
+ }
+// Addition of the user
+ uprop.disableCheck(); // Existent user already checked above
+ User newser = new User(uprop);
+ session.save(newser);
+ imported.add(newser);
+ }
+ return imported;
+ }
+ catch (IOException error) {
+ throw new XMLException("XML users file not found");
+ }
+ catch (ParserConfigurationException e) {
+ throw new XMLException("XML Organization parser not accessible");
+ }
+ catch (Exception e) {
+ throw new XMLException("XML users file not valid");
+ }
+ }
+
+/**
+ * Returns the manager of the given user.
+ * This function is effective providing that users are defined according to the following conventions:
+ * <ul>
+ * <li>One user is assigned in the organization as Nx1 (n+1 manager of members of the organization)</li>
+ * <li>Another user is assigned in the organization as Nx2 (n+2 manager of members of the organization)</li>
+ * </ul>
+ * If such users do not exit, null is returned.
+ *
+ * @param user the user whose manager is get
+ * @return the manager of the given user, if defined
+ */
+ public static User getManagerOf (User user) {
+// -------------------------------------------
+ User result = null;
+ String orgname = user.getOrganizationName();
+
+ if (orgname.equals("Nx2")) return result;
+ if (orgname.equals("Nx1")) orgname = "Nx2";
+ else {
+ if (user.getRoleNames().equals("customer")) return result;
+ orgname = "Nx1";
+ }
+ try {
+ User.Properties uprop = new User.Properties();
+ List<User> ulist = UserDirectory.selectUsersWhere(uprop.setOrganizationName(orgname));
+ return ulist.get(0); // n+1 and n+2 managers are unique
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+
+ @SuppressWarnings("unchecked") // For the casting List<User>
+ public static List<User> selectAllUsers () {
+// ------------------------------------------
+ String query = "from User order by last asc, first asc";
+ return (List<User>)Database.getSession().createQuery(query).list();
+ }
+
+ public static User selectUser (String username) {
+// -----------------------------------------------
+ StringBuffer query = new StringBuffer("from User where username='").append(username).append("'");
+ return (User)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static User selectUser (String username, String password) {
+// ----------------------------------------------------------------
+//WARNING: For not encoding the password here, we better call a selectUsersWhere(User.Properties),
+// but this requires a getPassword in User.Properties nested class.
+ StringBuffer query = new StringBuffer("from User where username='").append(username).append("' and password");
+ if (password == null) query = query.append(" is null");
+ else query = query.append("='").append(String.valueOf(password.hashCode())).append("'");
+
+ return (User)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static User selectUser (int index) {
+// -----------------------------------------
+ StringBuffer query = new StringBuffer("from User where rid='").append(index).append("'");
+ return (User)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<User> selectUsersWhere (User.Properties... uprop) {
+// --------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from User");
+ String separator = " where (";
+ String value;
+
+ for (int i=0; i<uprop.length; i++) {
+
+ value = uprop[i].getOrganizationName();
+ if (value != null) {
+ query = query.append(separator).append(" organid='").append(value).append("'");
+// separator = " and";
+ }
+ separator = ") or (";
+ }
+ query.append(")");
+ return (List<User>)Database.getSession().createQuery(query.toString()).list();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.apache.log4j.Logger;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.util.HashMap;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+public class XDOM {
+
+ private final static Logger logger = Logger.getLogger(XDOM.class);
+
+ public static org.w3c.dom.Document createDocument (String name) {
+// ---------------------------------------------------------------
+ DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
+ try {
+ DocumentBuilder dbuilder = dfactory.newDocumentBuilder();
+ org.w3c.dom.Document document = dbuilder.newDocument();
+
+ Element root = document.createElement(name);
+ document.appendChild(root);
+
+ return document;
+ }
+ catch (Exception error) {
+ logger.error("Could not create document " + name + ", reason:", error);
+ return null;
+ }
+ }
+
+ public static Node getChildNode (String name, Node from) {
+// --------------------------------------------------------
+ NodeList nlist = from.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ Node cnode = nlist.item(i);
+ if (cnode.getNodeName().equals(name)) return cnode;
+ }
+ return null;
+ }
+
+ public static HashMap<String,Node> getNamedChildNodes (Node node) {
+// -----------------------------------------------------------------
+ HashMap<String,Node> result = new HashMap<String,Node>();
+ NodeList nlist = node.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ node = nlist.item(i);
+ String name = node.getNodeName();
+ if (name.startsWith("#")) continue;
+ result.put(name, node);
+ }
+ return result;
+ }
+
+ public static boolean saveDocument (File xmlOutputFile, org.w3c.dom.Document doc) {
+// ---------------------------------------------------------------------------------
+// Open output stream where XML Document will be saved
+// File xmlOutputFile = new File(fileName);
+ FileOutputStream fos;
+ Transformer transformer;
+ try {
+ fos = new FileOutputStream(xmlOutputFile);
+ }
+ catch (FileNotFoundException error) {
+ logger.error("Could not open the " + xmlOutputFile.getName() + " file, reason:", error);
+ return false;
+ }
+// Use a Transformer for output
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ try {
+ transformer = transformerFactory.newTransformer();
+ }
+ catch (TransformerConfigurationException error) {
+ logger.error("Transformer configuration error, reason:", error);
+ return false;
+ }
+ DOMSource source = new DOMSource(doc);
+ StreamResult result = new StreamResult(fos);
+// Transform source into result will do save
+ try {
+ transformer.transform(source, result);
+ }
+ catch (TransformerException error) {
+ logger.error("Error during XML transformation, reason:", error);
+ }
+ return true;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.kernel;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public class XMLException extends Exception {
+
+ private static final long serialVersionUID = -4807111035943839090L;
+
+ public XMLException () {
+ }
+ public XMLException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;
+
+
+public interface Reader {
+
+ public String extractProperty (String name);
+ public String extractText ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;
+
+import java.io.File;
+
+
+public abstract class Toolbox {
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static Reader getReader (File file) {
+// ------------------------------------------
+ if (!file.exists()) return null;
+
+ String[] name = file.getName().split("\\x2E"); // Split around '.' (period) character
+ String fext = name[name.length-1];
+ Reader me = null;
+
+ if (fext.equals("xml")) {
+ XMLDocument odoc = new XMLDocument(file); // Parses the file
+ if (odoc.isWordDocument()) me = new WordXMLDocument(odoc);
+ } else
+ if (fext.equals("docx")) {
+//TODO: me = new WordDOCXDocument(file);
+ }
+ return me;
+ }
+
+ public static Writer getWriter (File file) {
+// ------------------------------------------
+ if (!file.exists()) return null;
+
+ String[] name = file.getName().split("\\x2E"); // Split around '.' (period) character
+ String fext = name[name.length-1];
+ Writer me = null;
+
+ if (fext.equals("xml")) {
+ XMLDocument odoc = new XMLDocument(file); // Parses the file
+ if (odoc.isWordDocument()) me = new WordXMLDocument(odoc);
+ }
+ return me;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;
+
+public class TypeMismatchException extends Exception {
+
+ private static final long serialVersionUID = 5083246617526245578L;
+
+ public TypeMismatchException () {
+ }
+ public TypeMismatchException (String message) {
+ super(message);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.InputStream;\r
+\r
+import org.apache.poi.xwpf.extractor.XWPFWordExtractor;\r
+import org.apache.poi.xwpf.usermodel.XWPFDocument;\r
+\r
+\r
+public class WordDOCXDocument implements Reader {\r
+\r
+// private File myfile;\r
+ private XWPFWordExtractor mytool;\r
+ private String contents;\r
+\r
+// ==============================================================================================================================\r
+// Constructor\r
+// ==============================================================================================================================\r
+\r
+ public WordDOCXDocument (File file) {\r
+// -----------------------------------\r
+ try {\r
+ InputStream from = new FileInputStream(file);\r
+ XWPFDocument odoc = new XWPFDocument(from);\r
+\r
+ mytool = new XWPFWordExtractor(odoc);\r
+ contents = mytool.getText();\r
+ }\r
+ catch (Exception error) {\r
+ \r
+ }\r
+ }\r
+\r
+// ==============================================================================================================================\r
+// Public services\r
+// ==============================================================================================================================\r
+\r
+ public String extractProperty (String name) {\r
+// -------------------------------------------\r
+ String value = null;\r
+ String proname = "DOCPROPERTY " + name;\r
+ int index = contents.indexOf(proname);\r
+ if (index > 0) {\r
+ String fragment = contents.substring(index + proname.length() + 18);\r
+ index = fragment.indexOf("\15");\r
+ if (index > 0) {\r
+ value = fragment.substring(0, index);\r
+ if (value.startsWith("<") && value.endsWith(">")) value = null;\r
+ }\r
+ }\r
+ return value; \r
+ }\r
+\r
+ public String extractText () {\r
+// ----------------------------\r
+ return contents;\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Vector;
+
+import org.splat.kernel.XDOM;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+public class WordXMLDocument extends XMLDocument implements Reader, Writer {
+
+ private HashMap<String,Node> binprop; // Built-in properties
+ private HashMap<String,Node> capprop; // Custom application properties
+ private Node body; // Body of the document
+ private Vector<Node> fields = null; // Fields into the document body
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public WordXMLDocument (File file) throws TypeMismatchException {
+// ----------------------------------
+ super(file);
+ if (!isWordDocument()) throw new TypeMismatchException("The file to be open is not a Word document");
+ initializeMe();
+ }
+ protected WordXMLDocument (XMLDocument parse) { // Downcast internal constructor
+// ---------------------------------------------
+ super(parse);
+ initializeMe(); // The given document is supposed being Word
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public String extractProperty (String name) {
+// -------------------------------------------
+ Node property;
+// Properties not conform to the naming scheme
+ if (name.equals("author")) property = binprop.get("creator");
+ else if (name.equals("type")) property = binprop.get("category");
+// Other properties
+ else {
+ property = capprop.get(name); // Looking into custom properties first
+ if (property != null) {
+ property = property.getFirstChild(); // vt:lpwstr node
+ } else {
+ property = binprop.get(name);
+ }
+ }
+ if (property == null) return null;
+ String value = property.getTextContent();
+ if (value.startsWith("<") && value.endsWith(">")) value = null; // Property not set
+ return value;
+ }
+
+ public String extractText () {
+// ----------------------------
+ String text = "";
+ if (body != null) {
+ Node body = this.body.getFirstChild(); // w:document node
+// if (body == null) return text; // Should not happen
+ body = body.getFirstChild(); // w:body node
+ if (body != null) text = extractTextContent(body, text);
+ }
+ return text;
+ }
+
+ public String updateProperty (String name, String value) {
+// --------------------------------------------------------
+ if (fields == null) {
+ fields = collectFieldNodes(body, new Vector<Node>());
+ }
+// Setting of the property
+ Node property = capprop.get(name); // Looking into custom properties first
+ if (property != null) {
+ property = property.getFirstChild();
+ } else {
+ if (name.equals("author")) property = binprop.get("creator"); // thanks to Bill Gates...
+ else property = binprop.get(name);
+// Built-in property names are capitalized into the document body (thanks again, Bill Gates)
+ char initial = name.charAt(0);
+ name = name.replaceFirst(String.valueOf(initial), String.valueOf(initial).toUpperCase());
+ }
+ if (property == null) return null;
+ String oldvalue = property.getTextContent();
+ property.setTextContent(value);
+
+// Update of the property fields, if exist
+ String proname = " DOCPROPERTY " + name + " ";
+
+ for (int j=0; j<fields.size(); j++) {
+ Node cnode = fields.get(j);
+ String aname = cnode.getAttributes().getNamedItem("w:instr").getNodeValue();
+ if (!aname.startsWith(proname)) continue;
+
+ property = XDOM.getChildNode("w:t", cnode.getFirstChild());
+ property.setTextContent(value);
+ }
+ return oldvalue;
+ }
+
+ public boolean save () {
+// -------------------
+ return XDOM.saveDocument(myfile, myxdoc);
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private void initializeMe () {
+// ----------------------------
+ loadDocument(); // Parses myfile XML document
+
+ body = mynodes.get("/word/document.xml");
+ capprop = new HashMap<String,Node>();
+ binprop = new HashMap<String,Node>();
+
+ Node property = mynodes.get("/docProps/custom.xml");
+ if (property != null) {
+ NodeList nlist = property.getFirstChild().getChildNodes(); // Contents of Properties node
+ for (int i=0; i<nlist.getLength(); i++) {
+ property = nlist.item(i);
+// if (!property.getNodeName().equals("property")) continue;
+
+ String name = property.getAttributes().getNamedItem("name").getNodeValue();
+ capprop.put(name, property);
+ }
+ }
+ property = mynodes.get("/docProps/core.xml");
+ if (property != null) {
+ NodeList nlist = property.getFirstChild().getChildNodes(); // Contents of cp:coreProperties node
+ String name;
+ for (int i=0; i<nlist.getLength(); i++) {
+ property = nlist.item(i);
+ name = property.getNodeName();
+// if (!name.startsWith("dc:")) continue; // Subset of user properties
+
+ String[] parse = name.split(":");
+ binprop.put(parse[1], property);
+ }
+ }
+ }
+
+ private Vector<Node> collectFieldNodes (Node from, Vector<Node> to) {
+// -------------------------------------------------------------------
+ NodeList nlist = from.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ Node cnode = nlist.item(i);
+ if (cnode.getNodeName().equals("w:fldSimple")) to.add(cnode);
+ else to = collectFieldNodes(cnode, to);
+ }
+ return to;
+ }
+
+ private String extractTextContent (Node from, String to) {
+// --------------------------------------------------------
+ NodeList nlist = from.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ Node cnode = nlist.item(i);
+ if (cnode.getNodeName().equals("w:t")) to = to + " " + cnode.getTextContent();
+ else to = extractTextContent(cnode, to);
+ }
+ return to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;
+
+
+public interface Writer {
+
+ public String updateProperty (String name, String value);
+ public boolean save ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.manox;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import org.apache.log4j.Logger;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+
+public class XMLDocument {
+
+ protected File myfile;
+ protected String mytype;
+ protected org.w3c.dom.Document myxdoc = null;
+ protected HashMap<String,Node> mynodes = null;
+
+ protected final static Logger logger = Logger.getLogger(XMLDocument.class);
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public XMLDocument (File file) {
+// ------------------------------
+ myfile = file;
+ mytype = "any";
+ try {
+ InputStream ist = new FileInputStream(file);
+ BufferedReader buffer = new BufferedReader(new InputStreamReader(ist));
+ String line = buffer.readLine().trim();
+
+ while (line.startsWith("<?")) {
+ if (line.indexOf("mso-application ") > 0) {
+ String[] parse = line.split("\"");
+ int natr;
+ for (natr=0; natr<parse.length; natr++) if (parse[natr].endsWith("progid=")) break;
+ natr += 1;
+ if (natr < parse.length) mytype = parse[natr];
+ return;
+ }
+ line = buffer.readLine().trim();
+ }
+ }
+ catch (Exception error) {
+ logger.error("Error reading the file " + myfile.getName() + ", reason:", error);
+ }
+ }
+ protected XMLDocument (XMLDocument parse) {
+// -----------------------------------------
+ myfile = parse.myfile;
+ mytype = parse.mytype;
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static String getActualFormat (File file) {
+// ------------------------------------------------
+ String[] name = file.getName().split("\\x2E");
+ String format = name[name.length-1];
+
+ if (format.equals("xml")) {
+ XMLDocument parse = new XMLDocument(file);
+ if (parse.isWordDocument()) format = "docx";
+// else if (parse.is...) format = "....";
+ }
+ return format;
+ }
+
+ public boolean isWordDocument () {
+// -----------------------------------
+ return mytype.equals("Word.Document");
+ }
+
+// ==============================================================================================================================
+// Protected service
+// ==============================================================================================================================
+
+ protected void loadDocument () {
+// ----------------------------
+ try {
+ DocumentBuilderFactory dfactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dfactory.newDocumentBuilder(); // Throws ParserConfigurationException
+
+ myxdoc = dBuilder.parse(myfile); // Throws IOException
+ mynodes = getNamedPartNodes(myxdoc);
+ }
+ catch (Exception error) {
+ logger.error("XML parse error, reason:", error);
+ }
+ }
+
+// ==============================================================================================================================
+// Private service
+// ==============================================================================================================================
+
+ private HashMap<String,Node> getNamedPartNodes (org.w3c.dom.Document xmldoc) {
+// ----------------------------------------------------------------------------
+ HashMap<String,Node> mapnode = new HashMap<String,Node>();
+ Node root = xmldoc.getDocumentElement();
+ NodeList nlist = root.getChildNodes();
+
+ for (int i=0; i<nlist.getLength(); i++) {
+ root = nlist.item(i);
+ if (!root.getNodeName().equals("pkg:part")) continue;
+
+ NamedNodeMap natr = root.getAttributes();
+ Node node;
+ String name;
+ if (natr == null) continue; // Should not happen
+ node = natr.getNamedItem("pkg:name");
+ if (node == null) continue; // Should not happen
+ name = node.getNodeValue();
+ node = root.getFirstChild(); // pkg:xxxData node
+
+ mapnode.put(name, node);
+ }
+ return mapnode;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Base implementation of actor relations such as Contributor, Reviewer and Approver.
+ * ActorRelation objects are attached to Documents for defining those who HAVE CONTRIBUTED to these documents,
+ * while instances of subclasses of ActorRelation are attached to Studies for setting those who CAN CONTRIBUTE to given document types.</br>
+ * </br>
+ * Depending on the actual relation object, the value of the actor relation has different meaning:
+ * <ul>
+ * <li>The description of ActorRelation objects defines the type of contributions (Contributor, Reviewer, Approver...)</li>
+ * <li>The description of instances of subclasses of ActorRelation defines the type of acting documents</li>
+ * </ul>
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+import org.splat.kernel.User;
+
+
+public abstract class ActorRelation extends Relation {
+
+ private User refer;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected ActorRelation () {
+ }
+// ActorRelation subclasses constructor
+ protected ActorRelation (Study from, User to) {
+// ---------------------------------------------
+ super(from);
+ this.refer = to;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public User getTo () {
+// --------------------
+ return refer;
+ }
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (User)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.splat.kernel.Role;
+import org.splat.kernel.User;
+
+
+public class ApplicationRights {
+
+ private User user;
+ private Set<String> roles;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public ApplicationRights (User user) { // Warning: user may be null
+// ------------------------------------
+ this.roles = new HashSet<String>();
+ this.user = user;
+ if (user != null) {
+ Role[] role = user.getRoles();
+ for (int i=0; i<role.length; i++) {
+ String iam = role[i].getName();
+ roles.add(iam);
+ }
+ }
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean canCreateStudy () {
+// --------------------------------
+ if (user != null) {
+ String position = user.getOrganizationName();
+ if (position != null && position.equals("Nx2")) return false;
+ }
+ return roles.contains(Profile.manager.toString());
+ }
+
+ public boolean canContributeToStudy () {
+// --------------------------------------
+ if (user != null) {
+ String position = user.getOrganizationName();
+ if (position != null && (position.equals("Nx1") || position.equals("Nx2"))) return false;
+ }
+ return (roles.contains(Profile.manager.toString()) || roles.contains(Profile.studengineer.toString()));
+ }
+
+ public boolean canValidate () {
+// -----------------------------
+ return roles.contains(Profile.manager.toString());
+ }
+
+ public boolean canManageKnowledges () {
+// -------------------------------------
+ if (user != null) {
+ String position = user.getOrganizationName();
+ if (position != null && position.equals("Nx2")) return false;
+ }
+ return roles.contains(Profile.knowledgineer.toString());
+ }
+
+ public boolean canManageDatabase () {
+// -----------------------------------
+ if (user != null) {
+ String position = user.getOrganizationName();
+ if (position != null && position.equals("Nx2")) return false;
+ }
+ return roles.contains(Profile.sysadmin.toString());
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public User getUser () {
+// ----------------------
+ return user; // May be null
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the Attribute concrete subclasses.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+<!-- Description attribute
+ -->
+ <subclass name="org.splat.som.DescriptionAttribute" extends="org.splat.kernel.TextAttribute" discriminator-value="description">
+ <!-- no extra property -->
+ </subclass>
+
+<!-- Comment attribute
+ -->
+ <subclass name="org.splat.som.CommentAttribute" extends="org.splat.kernel.TextAttribute" discriminator-value="comment">
+ <!-- no extra property -->
+ </subclass>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Attribute class of type Comment.<br/>
+ * A comment is made of any text up to 65 thousand characters.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Text;
+import org.splat.kernel.TextAttribute;
+
+
+public class CommentAttribute extends TextAttribute {
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor.
+ protected CommentAttribute () {
+ }
+/**
+ * Constructs a comment attached to a time stamp.
+ *
+ * @param from the time stamp to which this comment is attached.
+ * @param value the text of this comment
+ */
+ protected CommentAttribute (Timestamp from, String value) {
+// ---------------------------------------------------------
+ super(from, new Text(value));
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.User;
+
+
+public class ContributorRelation extends ActorRelation {
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected ContributorRelation () {
+ }
+// Initialization constructor
+ protected ContributorRelation (Study from, User to) {
+// --------------------------------------------------
+ super(from, to);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+
+
+public class ConvertsRelation extends Relation {
+
+// Persistent field
+ private File refer;
+
+// Transient fields
+ private boolean got; // For optimizing getDescription()
+ private String description; // Null if this is not described
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected ConvertsRelation () {
+// -----------------------------
+ got = false;
+ description = null;
+ }
+// Initialization constructors
+ protected ConvertsRelation (Document from, File to) {
+// ---------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.got = true;
+ this.description = null; // Conversion not described
+ }
+ protected ConvertsRelation (Document from, File to, String description) {
+// -----------------------------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.got = true;
+ this.description = description; // May be null
+ if (description != null) this.setAttribute( new DescriptionAttribute(this, description) );
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public String getDescription () {
+// -------------------------------
+ if (!got) {
+ DescriptionAttribute field = (DescriptionAttribute)this.getAttribute(DescriptionAttribute.class);
+ if (field != null) description = field.getValue();
+ got = true; // Don't need to be modified later as set and remove attribute functions are private to this class
+ }
+ return description; // May be null
+ }
+
+ public File getTo () {
+// --------------------
+ return refer;
+ }
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (File)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import java.io.File;
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.jdbc.Work;
+import org.apache.log4j.Logger;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanFilter;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.FilterClause;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.ScoreDoc;
+import org.apache.lucene.search.Sort;
+import org.apache.lucene.search.SortField;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TermsFilter;
+import org.apache.lucene.search.TopFieldDocs;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+
+
+public class Database extends org.splat.kernel.Database {
+
+ private int uplevel = 0; // Level of database upgrade
+ private String basepath = null; // Path of the root directory of repository
+
+ private static Database my = null; // Singleton instance
+
+ protected class CreateTables extends org.splat.kernel.Database.CreateTables {
+// ---------------------------------------------------------------------------
+ public void execute(Connection connex) throws SQLException
+ {
+ super.execute(connex);
+
+// Study Entity
+ String create = "CREATE TABLE `study` (" +
+ "`rid` int(10) UNSIGNED NOT NULL," +
+ "`sid` tinytext NOT NULL," +
+ "`title` tinytext NOT NULL," +
+ "`state` enum('inWORK','inDRAFT','inCHECK','APPROVED', 'TEMPLATE') NOT NULL default 'inWORK'," +
+ "`area` enum('PRIVATE','PUBLIC','REFERENCE') NOT NULL default 'PRIVATE'," +
+ "`manager` int(10) NOT NULL," +
+ "`version` tinytext NOT NULL," +
+ "`docount` int(10) UNSIGNED NOT NULL," +
+ "`history` int(10) UNSIGNED NOT NULL," +
+ "`credate` date NOT NULL," +
+ "`lasdate` date NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Scenario Entity
+ create = "CREATE TABLE `scenario` (" +
+ "`rid` int(10) UNSIGNED NOT NULL," +
+ "`sid` int(10) UNSIGNED NOT NULL," +
+ "`owner` int(10) NOT NULL," +
+ "`scendex` int(3) NOT NULL," +
+ "`title` tinytext NOT NULL," +
+ "`manager` int(10) NOT NULL," +
+ "`cuser` int(10)," +
+ "`credate` date NOT NULL," +
+ "`lasdate` date NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Document Entity and document tag (Publication)
+ create = "CREATE TABLE `document` (" +
+ "`rid` int(10) UNSIGNED NOT NULL," +
+ "`did` tinytext NOT NULL," +
+ "`type` int(10) NOT NULL," +
+ "`step` int(10) NOT NULL," +
+ "`state` enum('inWORK','inDRAFT','inCHECK','APPROVED','EXTERN') NOT NULL default 'inWORK'," +
+ "`name` tinytext NOT NULL," +
+ "`author` int(10) NOT NULL," +
+ "`version` tinytext," +
+ "`countag` int(10) UNSIGNED NOT NULL," +
+ "`history` int(10) NOT NULL," +
+ "`myfile` int(10) NOT NULL," +
+ "`lasdate` date NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+ create = "CREATE TABLE `doctag` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`doc` int(10) NOT NULL," +
+ "`owner` int(10) NOT NULL," +
+ "`isnew` char(1) NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+// Document types
+ create = "CREATE TABLE `doctype` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`name` tinytext NOT NULL," +
+ "`state` enum('inCHECK','APPROVED') NOT NULL default 'inCHECK'," +
+ "`step` tinytext NOT NULL," +
+ "`result` tinytext," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+// Document types dependencies
+ create = "CREATE TABLE `docuse` (" +
+ "`owner` int(10) NOT NULL," +
+ "`rid` int(10) NOT NULL" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// ValidationCycle related object
+ create = "CREATE TABLE `cycle` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`type` int(10) NOT NULL," +
+ "`publisher` int(10)," +
+ "`reviewer` int(10)," +
+ "`approver` int(10)," +
+ "`signatory` int(10)," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Timestamp related object
+ create = "CREATE TABLE `stamp` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`type` enum('PROMOTION','REVIEW','APPROVAL','ACCEPTANCE','DISTRIBUTION','REFUSAL') NOT NULL," +
+ "`author` int(10) NOT NULL," +
+ "`date` datetime NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// KnowledgeElements objects
+ create = "CREATE TABLE `knowelm` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`type` int(10) NOT NULL," +
+ "`owner` int(10) NOT NULL," +
+ "`state` enum('inWORK','inDRAFT','inCHECK','APPROVED') NOT NULL default 'inDRAFT'," +
+ "`title` tinytext NOT NULL," +
+ "`value` text NOT NULL," +
+ "`author` int(10) NOT NULL," +
+ "`date` date NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+// KnowledgeElement types
+ create = "CREATE TABLE `knowtype` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`name` tinytext NOT NULL," +
+ "`state` enum('inWORK','inCHECK','APPROVED') NOT NULL default 'inCHECK'," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// SimulationContext objects
+ create = "CREATE TABLE `contelm` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`type` int(10) NOT NULL," +
+ "`step` int(10) NOT NULL," +
+ "`state` enum('inCHECK','APPROVED') NOT NULL default 'inCHECK'," +
+ "`value` text NOT NULL," +
+ "`counter` int(10) UNSIGNED NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+// SimulationContext types
+ create = "CREATE TABLE `contype` (" +
+ "`rid` int(10) UNSIGNED NOT NULL auto_increment," +
+ "`name` tinytext NOT NULL," +
+ "`state` enum('inCHECK','APPROVED') NOT NULL default 'inCHECK'," +
+ "`step` int(10) NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Many-to-many association between ProjectElement (Study and Scenario) and SimulationContext
+ create = "CREATE TABLE `projext` (" +
+ "`owner` int(10) NOT NULL," +
+ "`ordex` int(10) NOT NULL," +
+ "`rid` int(10) NOT NULL" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// File objects
+ create = "CREATE TABLE `file` (" +
+ "`rid` int(10) UNSIGNED NOT NULL," +
+ "`format` tinytext NOT NULL," +
+ "`path` tinytext NOT NULL," +
+ "`date` date NOT NULL," +
+ "PRIMARY KEY (`rid`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+
+// Reference objects
+ create = "CREATE TABLE `refid` (" +
+ "`cycle` int(10) NOT NULL," +
+ "`base` int(10) NOT NULL," +
+ "PRIMARY KEY (`cycle`)" +
+ ") ENGINE=MyISAM DEFAULT CHARSET=latin1";
+ request.execute(create);
+ }
+ }
+ protected class CheckVersion implements Work {
+// --------------------------------------------
+ public void execute(Connection connex) throws SQLException
+ {
+ DatabaseMetaData dbmdata = connex.getMetaData();
+ String dbname = "simer"; //TODO: Get the name from meta-data
+ ResultSet table;
+
+ table = dbmdata.getTables(dbname, null, "study", null);
+ if (table.next()) return;
+ uplevel = -1; // Database not initialized
+ }
+ }
+
+ protected final static Logger logger = org.splat.kernel.Database.logger;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public static Database getMe () {
+// -------------------------------
+ if (my == null) try {
+ my = new Database();
+ }
+ catch (Exception error) {
+ logger.fatal("Could not access the database, reason:", error);
+ }
+ return my;
+ }
+ private Database () {
+// -------------------
+ Database.getSession().doWork(new CheckVersion());
+ this.setIDPoolSize(4); // Average number of generated IDs when creating a study and versioning a document
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean isInitialized () {
+// -------------------------------
+ return (uplevel >= 0);
+ }
+
+ public void initialize () throws IOException, SQLException {
+// -------------------------
+ logger.info("Creation of the database.");
+
+// Creation of the Lucene index
+ Index.create(); // May throw IOException if the index repository is improperly configured
+
+// Creation of the SIMER SQL tables
+ Session session = Database.getSession();
+ session.doWork(new CreateTables()); // May throw SQLException if the SIMER database does not exist
+ session.flush();
+
+// Population of the database with customized data
+ this.populate();
+
+ session.flush();
+ uplevel = 0; // The database is now up-to-date
+ }
+
+// ==============================================================================================================================
+// Protected member functions
+// ==============================================================================================================================
+
+ protected void configure (Properties reprop) {
+// --------------------------------------------
+ basepath = reprop.getProperty("repository");
+ }
+
+ protected void populate () {
+// --------------------------
+ try {
+// Initialization of the schema version
+ this.setSchemaVersion("D0.3"); //TODO: Get the version name from the configuration file
+
+// Creation of the default system administrator
+//TODO: Get the username password from the Hibernate configuration
+ User.Properties uprop = new User.Properties();
+ uprop.setUsername("simer")
+ .setPassword("admin")
+ .setName("Simulation")
+ .setFirstName("Manager")
+ .setDisplayName("label.sysadmin")
+ .addRole("sysadmin")
+ .setMailAddress("noreply@salome-platform.org");
+ uprop.disableCheck();
+ UserDirectory.createUser(uprop);
+ }
+ catch (Exception e) {
+// Let's continue, hoping the best...
+ }
+ ProjectSettings.getMe().initialize(); // Populates the database with all necessary stuff
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static Study createStudy (Study.Properties sprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, RuntimeException {
+// --------------------------------------------------------
+ Study study = new Study(sprop);
+
+ study.buildReference();
+ Database.getSession().save(study);
+ try {
+ Index lucin = getIndex();
+ lucin.add(study);
+ }
+ catch (IOException error) {
+ logger.error("Unable to index the study '" + study.getIndex() + "', reason:", error);
+// Continue and try to index later
+ }
+ return study;
+ }
+
+ public static void indexStudy (Study study) {
+// -------------------------------------------
+ try {
+ Study.Properties sprop = new Study.Properties();
+ List<Proxy> index = Database.selectStudiesWhere(sprop.setReference(study.getReference()));
+
+ if (index.size() != 0) return; // The given study is already indexed
+
+ Index lucin = getIndex();
+ Scenario[] scenes = study.getScenarii();
+
+ lucin.add(study);
+ if (study.getProgressState() != ProgressState.inWORK) for (int i=0; i<scenes.length; i++) {
+ List<KnowledgeElement> list = scenes[i].getAllKnowledgeElements();
+ for (Iterator<KnowledgeElement> j=list.iterator(); j.hasNext(); ) {
+ lucin.add(j.next());
+ }
+ }
+ }
+ catch (Exception error) {
+ logger.error("Unable to index the study '" + study.getIndex() + "', reason:", error);
+ }
+ }
+
+ public static Index getIndex () throws IOException {
+// -------------------------------
+ Index lucin = new Index();
+ if ( !lucin.exists() ) Index.create(); // Happens when re-indexing all studies
+ return lucin;
+ }
+
+ public static File getDownloadDirectory (User user) {
+// ---------------------------------------------------
+ StringBuffer path = new StringBuffer(my.basepath).append("downloads/").append(user.getUsername()).append("/");
+ return new File(path.toString());
+ }
+
+ public static File getRepositoryIndexDirectory () {
+// -------------------------------------------------
+ return new File(my.basepath + "lucin/");
+ }
+
+ public static String getRepositoryVaultPath () {
+// --------------------------------------------
+ return (my.basepath + "vault/");
+ }
+
+ public static String getTemplatePath () {
+// ---------------------------------------
+ return (my.basepath + "templates/");
+ }
+
+ public static Document selectDocument (int index) {
+// -------------------------------------------------
+ StringBuffer query = new StringBuffer("from Document where rid='").append(index).append("'");
+ return (Document)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static Document selectDocument (String refid, String version) {
+// --------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from Document where did='").append(refid).append("' and version='").append(version).append("'");
+ return (Document)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static KnowledgeElement selectKnowledgeElement (int index) {
+// -----------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from KnowledgeElement where rid='").append(index).append("'");
+ KnowledgeElement result = (KnowledgeElement)Database.getSession().createQuery(query.toString()).uniqueResult();
+
+ result.getOwnerScenario().getOwnerStudy().loadWorkflow();
+ return result;
+ }
+
+ public static List<Proxy> selectKnowledgeElementsWhere (KnowledgeElement.Properties... kprop) {
+// ---------------------------------------------------------------------------------------------
+ List<Proxy> result = new ArrayList<Proxy>();
+ int hitsize = 20;
+ try {
+
+// Creation of the Lucene query
+ File indir = Database.getRepositoryIndexDirectory();
+ Directory index = FSDirectory.open(indir);
+ IndexSearcher searcher = new IndexSearcher(index, true);
+ BooleanQuery fulquery = new BooleanQuery();
+
+ for (int i=0; i<kprop.length; i++) {
+ BooleanQuery query = new BooleanQuery();
+ Term input; // Supposed initialized below at least by the visibility
+
+ Visibility area = kprop[i].getVisibility(); // Visibility
+ if (area != null) {
+ input = new Term("area");
+ query.add(new TermQuery(input.createTerm(area.toString())), BooleanClause.Occur.MUST);
+ }
+ ProgressState state = kprop[i].getProgressState(); // State
+ if (state != null) {
+ input = new Term("state");
+ query.add(new TermQuery(input.createTerm(state.toString())), BooleanClause.Occur.MUST);
+ }
+ String refid = kprop[i].getReference(); // Reference
+ if (refid != null) {
+ input = new Term("ref");
+ query.add(new TermQuery(input.createTerm(refid)), BooleanClause.Occur.MUST);
+ }
+ KnowledgeElementType type = kprop[i].getType(); // Type
+ if (type != null) {
+ input = new Term("type");
+ query.add(new TermQuery(input.createTerm(type.getName())), BooleanClause.Occur.MUST);
+ }
+ User manager = kprop[i].getAuthor(); // Author
+ if (manager != null) {
+ input = new Term("author");
+ query.add(new TermQuery(input.createTerm(manager.toString())), BooleanClause.Occur.MUST);
+ }
+ User actor = kprop[i].getActor(); // Contributor, Reviewer or Approver of the owner study
+ if (actor != null) {
+ input = new Term("actor");
+ query.add(new TermQuery(input.createTerm(actor.toString())), BooleanClause.Occur.MUST);
+ }
+ String title = kprop[i].getTitle(); // Title
+ if (title != null) {
+ input = new Term("contents");
+ BooleanQuery critext = new BooleanQuery();
+ String operator = "AND"; // Future user input
+ BooleanClause.Occur clause = BooleanClause.Occur.MUST;
+ if (operator.equals("OR")) clause = BooleanClause.Occur.SHOULD;
+ String[] word = title.split(" ");
+ for (int j=0; j<word.length; j++) {
+ critext.add(new TermQuery(input.createTerm(word[j])), clause);
+ }
+ query.add(critext, BooleanClause.Occur.MUST);
+ }
+ List<SimulationContext> context = kprop[i].getSimulationContexts();
+ if (context != null && context.size() > 0) {
+ BooleanQuery critext = new BooleanQuery();
+ for (Iterator<SimulationContext> j=context.iterator(); j.hasNext();) {
+ SimulationContext seltext = j.next();
+ input = new Term(String.valueOf(seltext.getType().getIndex()));
+ critext.add(new TermQuery(input.createTerm(seltext.getValue())), BooleanClause.Occur.MUST);
+ }
+ query.add(critext, BooleanClause.Occur.MUST);
+ }
+ fulquery.add(query, BooleanClause.Occur.SHOULD);
+ }
+ if (logger.isInfoEnabled()) {
+ logger.info("Searching knowledges by Lucene query \"" + fulquery.toString() + "\".");
+ }
+// Creation of the knowledge filter
+ BooleanFilter filter = new BooleanFilter();
+ TermsFilter select = new TermsFilter();
+ Term mytype = new Term("class");
+ select.addTerm( mytype.createTerm("KnowledgeElement") );
+ filter.add(new FilterClause(select, BooleanClause.Occur.SHOULD));
+
+// Creation of the sort criteria
+ Sort sort = new Sort(new SortField("title", SortField.STRING));
+
+// Search
+ TopFieldDocs found = searcher.search(fulquery, filter, hitsize, sort);
+
+ if (found.totalHits < 1) return result; // No study found
+
+// Construction of the result list
+ ScoreDoc[] hits = found.scoreDocs;
+ for (int i=0; i<hits.length; i++) {
+ result.add( new Index.ObjectProxy(searcher.doc(hits[i].doc)) );
+ }
+ searcher.close();
+ }
+ catch (Exception error) {
+ logger.error("Error during Lucene search, reason:", error);
+ }
+ return result;
+ }
+
+ public static SimulationContext selectSimulationContext (int index) {
+// -------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContext where rid='").append(index).append("'");
+ return (SimulationContext)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static SimulationContext selectSimulationContext (SimulationContextType celt, String value) {
+// --------------------------------------------------------------------------------------------------
+ SimulationContext result = null;
+ try {
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ List<SimulationContext> clist = selectSimulationContextsWhere(cprop.setType(celt).setValue(value));
+ if (!clist.isEmpty()) result = clist.get(0); // Supposed being the most used one if many exist
+ }
+ catch (InvalidPropertyException error) {
+ logger.info("Attempt to select a simulation context \"" + celt.getName() + "\" with an invalid value.");
+ }
+ return result;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<SimulationContext> selectSimulationContextsWhere (SimulationContext.Properties cprop) {
+// --------------------------------------------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContext");
+ String separator = " where";
+ SimulationContextType celt = cprop.getType();
+ String value = cprop.getValue();
+ ProgressState state = cprop.getProgressState();
+ String order = "";
+
+ if (celt != null) { query = query.append(separator).append(" type='").append(celt.getIndex()).append("'");
+ separator = " and";
+ order = " order by value asc";
+ }
+ if (value != null ) { query = query.append(separator).append(" value='").append(value).append("'");
+ separator = " and";
+ }
+ if (state != null ) { query = query.append(separator).append(" state='").append(state).append("'");
+ if (celt == null) order = " order by type asc";
+ }
+ query.append(order);
+ return (List<SimulationContext>)Database.getSession().createQuery(query.toString()).list();
+ }
+
+ public static Study selectStudy (int index) {
+// -------------------------------------------
+ StringBuffer query = new StringBuffer("from Study where rid='").append(index).append("'");
+ Study result = (Study)Database.getSession().createQuery(query.toString()).uniqueResult();
+
+ result.loadWorkflow();
+ return result;
+ }
+
+ public static Study selectStudy (String refid) {
+// ----------------------------------------------
+ StringBuffer query = new StringBuffer("from Study where sid='").append(refid).append("'");
+ Study result = (Study)Database.getSession().createQuery(query.toString()).uniqueResult();
+
+ result.loadWorkflow();
+ return result;
+ }
+
+ public static List<Proxy> selectStudiesWhere (Study.Properties... sprop) {
+// ------------------------------------------------------------------------
+ List<Proxy> result = new ArrayList<Proxy>();
+ int hitsize = 20;
+ try {
+
+// Creation of the Lucene query
+ File indir = Database.getRepositoryIndexDirectory();
+ Directory index = FSDirectory.open(indir);
+ IndexSearcher searcher = new IndexSearcher(index, true);
+ BooleanQuery fulquery = new BooleanQuery();
+
+ for (int i=0; i<sprop.length; i++) {
+ BooleanQuery query = new BooleanQuery();
+ Term input; // Supposed initialized below at least by the visibility
+
+ Visibility area = sprop[i].getVisibility(); // Visibility
+ if (area != null) {
+ input = new Term("area");
+ query.add(new TermQuery(input.createTerm(area.toString())), BooleanClause.Occur.MUST);
+ }
+ ProgressState state = sprop[i].getProgressState(); // State
+ if (state != null) {
+ input = new Term("state");
+ if (state == ProgressState.inPROGRESS) {
+ BooleanQuery cristate = new BooleanQuery();
+ cristate.add(new TermQuery(input.createTerm("inWORK")), BooleanClause.Occur.SHOULD);
+ cristate.add(new TermQuery(input.createTerm("inDRAFT")), BooleanClause.Occur.SHOULD);
+ cristate.add(new TermQuery(input.createTerm("inCHECK")), BooleanClause.Occur.SHOULD);
+ query.add(cristate, BooleanClause.Occur.MUST);
+ } else {
+ query.add(new TermQuery(input.createTerm(state.toString())), BooleanClause.Occur.MUST);
+ }
+ }
+ String refid = sprop[i].getReference(); // Reference
+ if (refid != null) {
+ input = new Term("ref");
+ query.add(new TermQuery(input.createTerm(refid)), BooleanClause.Occur.MUST);
+ }
+ User manager = sprop[i].getManager(); // Author
+ if (manager != null) {
+ input = new Term("author");
+ query.add(new TermQuery(input.createTerm(manager.toString())), BooleanClause.Occur.MUST);
+ }
+ User actor = sprop[i].getActor(); // Contributor, Reviewer or Approver
+ if (actor != null) {
+ input = new Term("actor");
+ query.add(new TermQuery(input.createTerm(actor.toString())), BooleanClause.Occur.MUST);
+ }
+ String title = sprop[i].getTitle(); // Title
+ if (title != null) {
+ input = new Term("contents");
+ BooleanQuery critext = new BooleanQuery();
+ String operator = "AND"; // Future user input
+ BooleanClause.Occur clause = BooleanClause.Occur.MUST;
+ if (operator.equals("OR")) clause = BooleanClause.Occur.SHOULD;
+ String[] word = title.split(" ");
+ for (int j=0; j<word.length; j++) {
+ critext.add(new TermQuery(input.createTerm(word[j])), clause);
+ }
+ query.add(critext, BooleanClause.Occur.MUST);
+ }
+ List<SimulationContext> context = sprop[i].getSimulationContexts();
+ if (context != null && context.size() > 0) {
+ BooleanQuery critext = new BooleanQuery();
+ for (Iterator<SimulationContext> j=context.iterator(); j.hasNext();) {
+ SimulationContext seltext = j.next();
+ input = new Term(String.valueOf(seltext.getType().getIndex()));
+ critext.add(new TermQuery(input.createTerm(seltext.getValue())), BooleanClause.Occur.MUST);
+ }
+ query.add(critext, BooleanClause.Occur.MUST);
+ }
+ fulquery.add(query, BooleanClause.Occur.SHOULD);
+ }
+ if (logger.isInfoEnabled()) {
+ logger.info("Searching studies by Lucene query \"" + fulquery.toString() + "\".");
+ }
+// Creation of the studies filter
+ BooleanFilter filter = new BooleanFilter();
+ TermsFilter select = new TermsFilter();
+ Term mytype = new Term("class");
+ select.addTerm( mytype.createTerm("Study") );
+ filter.add(new FilterClause(select, BooleanClause.Occur.SHOULD));
+
+// Creation of the sort criteria
+ Sort sort = new Sort(new SortField("title", SortField.STRING));
+
+// Search
+ TopFieldDocs found = searcher.search(fulquery, filter, hitsize, sort);
+
+ if (found.totalHits < 1) return result; // No study found
+
+// Construction of the result list
+ ScoreDoc[] hits = found.scoreDocs;
+ for (int i=0; i<hits.length; i++) {
+ result.add( new Index.ObjectProxy(searcher.doc(hits[i].doc)) );
+ }
+ searcher.close();
+ }
+ catch (Exception error) {
+ logger.error("Error during Lucene search, reason:", error);
+ }
+ return result;
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected static IDBuilder selectIDBuilder (int cycle) {
+// ------------------------------------------------------
+ StringBuffer buffer = new StringBuffer("from IDBuilder where cycle='").append(cycle).append("'");
+ String qstring = buffer.toString();
+ Query query = Database.getSession().createQuery(qstring);
+ IDBuilder result = (IDBuilder)query.uniqueResult();
+
+ return result;
+ }
+
+ protected static IDBuilder selectIDBuilder (Date date) {
+// ------------------------------------------------------
+ SimpleDateFormat year = new SimpleDateFormat("yyyy");
+ String cycle = year.format(date);
+ StringBuffer buffer = new StringBuffer("from IDBuilder where cycle='").append(cycle).append("'");
+ String qstring = buffer.toString();
+ Query query = Database.getSession().createQuery(qstring);
+ IDBuilder result = (IDBuilder)query.uniqueResult();
+
+ return result;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Attribute class of type Description.<br/>
+ * A description is made of any text up to 65 thousand characters.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Text;
+import org.splat.kernel.TextAttribute;
+
+
+public class DescriptionAttribute extends TextAttribute {
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor.
+ protected DescriptionAttribute () {
+ }
+/**
+ * Constructs the description of a study or a scenario.
+ *
+ * @param from the study or the scenario to which this description is attached.
+ * @param value the text of this description
+ */
+ protected DescriptionAttribute (ProjectElement from, String value) {
+// ------------------------------------------------------------------
+ super(from, new Text(value));
+ }
+/**
+ * Constructs the description attached to a version relation.
+ *
+ * @param from the version relation to which this description is attached.
+ * @param value the text of this description
+ */
+ protected DescriptionAttribute (VersionsRelation from, String value) {
+// --------------------------------------------------------------------
+ super(from, new Text(value));
+ }
+ /**
+ * Constructs the description attached to a conversion relation.
+ *
+ * @param from the conversion relation to which this description is attached.
+ * @param value the text of this description
+ */
+ protected DescriptionAttribute (ConvertsRelation from, String value) {
+// --------------------------------------------------------------------
+ super(from, new Text(value));
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the Document class and its type information implemented by the DocumentType class.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.Document" table="document" lazy="false">
+
+<!-- Properties inherited from Entity
+ -->
+ <id name="rid" type="int" column="rid" unsaved-value="0" access="field">
+ <generator class="org.splat.kernel.IDGenerator"/>
+ </id>
+ <set name="attributes" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Attribute" />
+ </set>
+ <set name="relations" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Relation" />
+ </set>
+
+<!-- Document properties
+ -
+ - String did -->
+ <property name="did" column="did" access="field" not-null="true" />
+
+ <!-- DocumentType type -->
+ <many-to-one name="type" column="type" access="field" not-null="true" />
+
+ <!-- File myfile -->
+ <many-to-one name="myfile" column="myfile" unique="true" cascade="all-delete-orphan" access="field" not-null="true" />
+
+ <!-- String name -->
+ <property name="name" column="name" access="field" not-null="true" />
+
+ <!-- ProgressState state -->
+ <property name="state" column="state" type="ProgressState" access="field" not-null="true" />
+
+ <!-- int step -->
+ <property name="step" column="step" access="field" not-null="true" />
+
+ <!-- String version -->
+ <property name="version" column="version" access="field" />
+
+ <!-- int countag -->
+ <property name="countag" column="countag" access="field" not-null="true" />
+
+ <!-- int history -->
+ <property name="history" column="history" access="field" not-null="true" />
+
+ <!-- User author -->
+ <many-to-one name="author" column="author" access="field" not-null="true" />
+
+ <!-- Date lasdate -->
+ <property name="lasdate" column="lasdate" access="field" not-null="true" />
+ </class>
+
+<!-- Class DocumentType
+ -->
+ <class name="org.splat.som.DocumentType" table="doctype" lazy="false">
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+ <property name="name" column="name" access="field" not-null="true" />
+ <property name="state" column="state" type="ProgressState" access="field" not-null="true" />
+ <property name="step" column="step" access="field" not-null="true" />
+ <property name="result" column="result" access="field" />
+ <set name="uses" table="docuse" lazy="false" access="field">
+ <key column="owner" />
+ <many-to-many column="rid" class="org.splat.som.DocumentType" />
+ </set>
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
+
+import org.splat.kernel.NotApplicableException;
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.User;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
+import org.splat.som.ProjectSettings.FileNaming;
+import org.splat.som.Timestamp.ComparatorByDate;
+
+
+public class Document extends Entity {
+
+// Persistent fields
+ private DocumentType type; // User expendable types
+ private File myfile;
+ private String did;
+ private int step;
+ private ProgressState state;
+ private String name;
+ private String version;
+ private int countag;
+ private int history;
+ private User author;
+ private Date lasdate;
+
+// Transient fields
+ public static String suformat = "00"; // Format of the suffix number of document did and file name
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private DocumentType type = null;
+ private String did = null; // Only for searching from a given reference
+ private ProjectElement owner = null; // Only for constructing a document
+ private ProjectSettings.Step step = null;
+ private ProgressState state = null;
+ private String name = null;
+ protected String format = null;
+ private String version = null;
+ private User author = null;
+ protected Date date = null;
+ private String summary = null; // Only for versioning a document
+ private String path = null; // Only for searching from a given path
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ type = null;
+ did = null;
+ owner = null;
+ step = null;
+ state = null;
+ name = null;
+ format = null;
+ version = null;
+ author = null;
+ date = null;
+ summary = null;
+ path = null;
+ }
+ public Properties copy () {
+ Properties copy = new Properties();
+ copy.type = this.type;
+ copy.did = this.did;
+ copy.owner = this.owner;
+ copy.step = this.step;
+ copy.state = this.state;
+ copy.name = this.name;
+ copy.format = this.format;
+ copy.version = this.version;
+ copy.author = this.author;
+ copy.date = this.date;
+ copy.summary = this.summary;
+ copy.path = this.path;
+ return copy;
+ }
+// - Protected services
+
+ protected User getAuthor () {
+ return author;
+ }
+ protected String getDescription () {
+ return summary;
+ }
+ protected String getLocalPath () {
+ return path;
+ }
+ protected String getReference () {
+ return did;
+ }
+ protected ProjectSettings.Step getStep () {
+ return step;
+ }
+ protected DocumentType getType () {
+ return type;
+ }
+// - Property setters
+
+ public Properties setAuthor (User user)
+ {
+ this.author = user;
+ return this;
+ }
+ public Properties setDate (Date date)
+ {
+ this.date = date;
+ return this;
+ }
+ public Properties setDescription (String summary) throws InvalidPropertyException
+ {
+ if (summary.length() == 0) throw new InvalidPropertyException("description");
+ this.summary = summary;
+ return this;
+ }
+ protected Properties setDocument (Document base)
+ {
+ type = base.type;
+ step = ProjectSettings.getStep(base.step);
+ name = base.name;
+ format = base.getFormat();
+ state = ProgressState.inWORK; // For incrementing the version number at save time
+ version = base.version;
+ return this;
+ }
+ public Properties setExternReference (String ref) throws InvalidPropertyException
+ {
+ if (ref.length() == 0) throw new InvalidPropertyException("reference");
+ if (ref.equals(new Revision().toString())) throw new InvalidPropertyException("reference"); // Internal version number
+ this.version = ref;
+ return this;
+ }
+ public Properties setFormat (String format) throws InvalidPropertyException
+ {
+ if (format.length() == 0) throw new InvalidPropertyException("format");
+ this.format = format;
+ return this;
+ }
+// Required only for passing search arguments
+ public Properties setLocalPath (String path) throws InvalidPropertyException
+ {
+ if (path.length() == 0) throw new InvalidPropertyException("path");
+ this.path = path;
+ return this;
+ }
+ public Properties setName (String name) throws InvalidPropertyException
+ {
+ if (name.length() == 0) throw new InvalidPropertyException("name");
+ this.name = name;
+ return this;
+ }
+ protected Properties setOwner (ProjectElement owner)
+ {
+ this.owner = owner;
+ return this;
+ }
+// Required only for passing search arguments
+ public Properties setReference (String did) throws InvalidPropertyException
+ {
+ if (did.length() == 0) throw new InvalidPropertyException("reference");
+ this.did = did;
+ return this;
+ }
+ public Properties setState (ProgressState state) throws InvalidPropertyException
+ {
+ if (state == ProgressState.inPROGRESS || state == ProgressState.TEMPLATE) throw new InvalidPropertyException("state"); // Non document states
+ this.state = state;
+ return this;
+ }
+ protected Properties setStep (ProjectSettings.Step step)
+ {
+ this.step = step;
+ return this;
+ }
+ public Properties setType (DocumentType type)
+ {
+ this.type = type;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity() throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (type == null) throw new MissedPropertyException("type");
+ if (owner == null) throw new MissedPropertyException("owner");
+ if (step == null) throw new MissedPropertyException("step");
+ if (author == null) throw new MissedPropertyException("author");
+ if (format == null) throw new MissedPropertyException("format");
+ if (owner instanceof Study && !step.appliesTo(Study.class)) throw new InvalidPropertyException("step");
+ if (!type.isContentInto(step)) throw new InvalidPropertyException("step");
+ if (state != null && state != ProgressState.EXTERN) {
+// inDRAFT, inCHECK or APPROVED + version = imposed version (future use)
+// inWORK + version = base version incremented at save time (used for versioning)
+ if (version == null) throw new InvalidPropertyException("state");
+ }
+ if (version != null) {
+ if (state == null) state = ProgressState.EXTERN;
+ }
+ }
+ }
+// Database fetch constructor
+ protected Document () {
+ }
+// Internal constructor
+ protected Document (Properties dprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// -------------------------------------
+ super(dprop); // Throws one of the above exception if not valid
+ myfile = new File(null, dprop.format, dprop.date); // The path is initialized below
+ type = dprop.type;
+ step = dprop.step.getNumber();
+ name = dprop.name;
+ version = dprop.version;
+ author = dprop.author;
+ countag = 0;
+ history = 0;
+ lasdate = myfile.getDate(); // Today if not defined in the properties
+
+ state = dprop.state;
+ if (state == null) {
+ state = ProgressState.inWORK; // Promoted when saving this document
+ version = new Revision().toString();
+ }
+ Study owner = null;
+ if (dprop.owner instanceof Study) owner = (Study)dprop.owner;
+ else owner = ((Scenario)dprop.owner).getOwnerStudy();
+
+ ProjectSettings.Step step = ProjectSettings.getStep(this.step);
+ SimpleDateFormat tostring = new SimpleDateFormat("yyyy");
+ String year = tostring.format(owner.getDate());
+ if (name == null) { // Newed document
+ this.name = "%n"; // Named later at publication
+ this.history = -1; // Marks the document as undefined for future assignment
+ }
+ String filename = generateEncodedName(owner);
+ String path;
+
+ path = owner.getReference();
+ did = new StringBuffer(path).append(".%").append(suformat).toString(); // Document reference
+ path = new StringBuffer(year).append("/").append(path).append("/").append(step.getPath()) // File path relative to the repository vault
+ .append(filename).append(".").append(myfile.getFormat()) // File name and extension
+ .toString();
+ myfile.changePath(path);
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public File getAttachedFile (String format) {
+// -------------------------------------------
+ List<Relation> exports = getRelations(ConvertsRelation.class);
+
+ for (Iterator<Relation> i=exports.iterator(); i.hasNext(); ) {
+ File export = (File)i.next().getTo();
+ if (export.getFormat().equals(format)) return export;
+ }
+ return null;
+ }
+
+ public User getAuthor () {
+// ------------------------
+ return author;
+ }
+
+ public Date getCreationDate () {
+// ------------------------------
+ return myfile.getDate();
+ }
+
+ public Date getLastModificationDate () {
+// --------------------------------------
+ return lasdate;
+ }
+
+ public String getFormat () {
+// --------------------------
+ return myfile.getFormat();
+ }
+
+ public Document getPreviousVersion () {
+// -------------------------------------
+ Relation previous = getFirstRelation(VersionsRelation.class);
+ if (previous != null) return (Document)previous.getTo();
+ else return null;
+ }
+
+ public ProgressState getProgressState () {
+// ----------------------------------------
+ return state;
+ }
+
+/**
+ * Returns the path where all physical files attached to this document are saved.
+ * This path is relative to the vault of the repository and include the file name, without extension, common
+ * to all physical files attached to this document.
+ *
+ * @return the path of the document
+ */
+ public String getRelativePath () {
+// --------------------------------
+ String[] table = myfile.getRelativePath().split("\\x2E");
+ StringBuffer path = new StringBuffer(table[0]);
+ for (int i=1; i<table.length-1; i++) path.append('.').append(table[i]);
+ return path.toString();
+ }
+
+/**
+ * Returns the global unique reference of this document lineage.
+ * The document reference is common to all versions of the document (versioning a document does not change its reference).
+ * It is made of the owner study reference suffixed by a document identifier unique in the scope of the study.
+ *
+ * @return the document reference
+ */
+ public String getReference () {
+// -----------------------------
+ return did;
+ }
+
+ public java.io.File getSaveDirectory () {
+// ---------------------------------------
+ String mypath = Database.getRepositoryVaultPath() + myfile.getRelativePath();
+ String[] table = mypath.split("/");
+
+// Cutting the filename
+ StringBuffer path = new StringBuffer(table[0]);
+ for (int i=1; i<table.length-1; i++) path = path.append("/").append(table[i]);
+ return new java.io.File(path.append("/").toString());
+ }
+
+ public File getSourceFile () {
+// ----------------------------
+ return myfile;
+ }
+
+/**
+ * Returns the stamps such as review and approval attached to this document, if exist.
+ * If several stamps exist, they are returned in ascending order of dates.
+ *
+ * @return the stamps of the document in ascending order of dates, or an empty array if no stamp exist.
+ */
+ public Timestamp[] getStamps () {
+// -------------------------------
+ Vector<Timestamp> stamps = new Vector<Timestamp>();
+
+ for (Iterator<Relation> i=this.getAllRelations().iterator(); i.hasNext(); ) {
+ Relation link = i.next();
+ if (link instanceof StampRelation) stamps.add( ((StampRelation)link).getTo() );
+ }
+ Timestamp[] result = stamps.toArray( new Timestamp[stamps.size()] );
+ ComparatorByDate bydate = new Timestamp.ComparatorByDate();
+
+ Arrays.sort(result, bydate);
+ return result;
+ }
+
+/**
+ * Returns the title of this document.
+ *
+ * @return the document title, or an empty string is this document is undefined.
+ * @see #isUndefined()
+ */
+ public String getTitle () {
+// -------------------------
+ if (this.isUndefined()) return "";
+ else return name;
+ }
+
+ public DocumentType getType () {
+// ------------------------------
+ return type;
+ }
+
+/**
+ * Returns the version number of this document.
+ * The version number, when exists, is either of the internal form (m.n.s) usable for building a Revision object, or any string
+ * in case of external document (document with EXTERN state).<br/>
+ * <br/>
+ * Note: document slots have a version number equal to "0.0.0".
+ *
+ * @return the version number of this document, or null if this is EXTERN.
+ * @see #isUndefined()
+ */
+ public String getVersion () {
+// ---------------------------
+ return version;
+ }
+
+/**
+ * Returns true if this document is undefined.
+ * An undefined document is a meta-document created for reserving the persistent reference of a new document before saving
+ * (or importing) this later into the repository.
+ * The working copy of a such document may include this reference.
+ *
+ * @see #getTitle()
+ * @see #getVersion()
+ * @see #initialize(Properties)
+ */
+ public boolean isUndefined () {
+// -----------------------------
+ return (history == -1);
+ }
+
+ public boolean isInto (Step container) {
+// --------------------------------------
+ return (step == container.getNumber());
+ }
+
+ public boolean isPublished () {
+// -----------------------------
+ return (countag > 0);
+ }
+
+ public boolean isShared () {
+// --------------------------
+ return (countag + history > 1);
+ }
+
+ public boolean isVersioned () {
+// -----------------------------
+ return (history > 0);
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static DocumentType createType (DocumentType.Properties tprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, RuntimeException {
+// ---------------------------------------------------------------------
+//TODO: Check for duplicate definition
+ DocumentType type = new DocumentType(tprop);
+ Session session = Database.getSession();
+ session.save(type);
+
+ return type;
+ }
+
+ public static Properties extractProperties (java.io.File file) {
+// --------------------------------------------------------------
+ Properties fprop = new Properties();
+ Reader tool = Toolbox.getReader(file);
+ String value;
+ if (tool != null) try {
+ value = tool.extractProperty("title");
+ if (value != null) fprop.setName(value);
+
+ value = tool.extractProperty("reference");
+ if (value != null) fprop.setReference(value);
+ }
+ catch (Exception e) {
+ }
+ return fprop;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<DocumentType> selectAllTypes () {
+// --------------------------------------------------
+ String query = "from DocumentType";
+
+ List<DocumentType> types = Database.getSession().createQuery(query).list();
+ for (Iterator<DocumentType> i=types.iterator(); i.hasNext();) {
+ Hibernate.initialize(i.next()); // Supposed fetching document types
+ }
+ return types;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<DocumentType> selectResultTypes () {
+// -----------------------------------------------------
+ String query = "from DocumentType where result is not null order by result asc";
+
+ return Database.getSession().createQuery(query).list();
+ }
+
+ public static DocumentType selectType (String name) {
+// ---------------------------------------------------
+ String query = new StringBuffer("from DocumentType where name='").append(name).append("'").toString();
+
+ return (DocumentType)Database.getSession().createQuery(query).uniqueResult();
+ }
+
+ public static DocumentType selectType (int index) {
+// -------------------------------------------------
+ String query = new StringBuffer("from DocumentType where rid='").append(index).append("'").toString();
+
+ return (DocumentType)Database.getSession().createQuery(query).uniqueResult();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<DocumentType> selectTypesOf (ProjectSettings.Step step) {
+// --------------------------------------------------------------------------
+ Integer number = step.getNumber();
+ String query = new StringBuffer("from DocumentType").append(" where step like '%-").append(number).append("-%'").toString();
+
+ List<DocumentType> types = Database.getSession().createQuery(query).list();
+ for (Iterator<DocumentType> i=types.iterator(); i.hasNext();) {
+ Hibernate.initialize(i.next()); // For fetching document types
+ }
+ return types;
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected ConvertsRelation attach (String format) {
+// -------------------------------------------------
+ return attach(format, null);
+ }
+
+ protected ConvertsRelation attach (String format, String description) {
+// ---------------------------------------------------------------------
+ String path = this.getRelativePath();
+ File export = new File(path + "." + format);
+ ConvertsRelation attach = new ConvertsRelation(this, export, description);
+ Session session = Database.getSession();
+
+ session.save(export);
+ session.save(attach);
+
+ this.addRelation(attach); // Updates this
+
+ return attach;
+ }
+
+ protected boolean buildReferenceFrom (ProjectElement scope, Document lineage) {
+// -----------------------------------------------------------------------------
+ if (state != ProgressState.inWORK) return false;
+ Study owner = null;
+ Scenario context = null;
+ if (scope instanceof Study) owner = (Study)scope;
+ else {
+ context = ((Scenario)scope);
+ owner = context.getOwnerStudy();
+ }
+ did = lineage.did;
+ if (context != null && (lineage.isVersioned() || owner.shares(lineage))) {
+ version = new Revision(version).setBranch(context.getReference()).toString();
+ }
+ return true;
+ }
+
+ protected boolean buildReferenceFrom (Study scope) {
+// --------------------------------------------------
+ if (state != ProgressState.inWORK && state != ProgressState.EXTERN) return false;
+ DecimalFormat tostring = new DecimalFormat(suformat);
+
+ did = did.replace ("%" + suformat, tostring.format(scope.getLastLocalIndex()));
+ return true;
+ }
+
+ protected boolean demote () {
+// ---------------------------
+ ValidationStep torem;
+
+ if (state == ProgressState.inCHECK) {
+ state = ProgressState.inDRAFT;
+ torem = ValidationStep.REVIEW;
+// This operation must not change the version number of documents.
+// Consequently, inDRAFT documents may have a minor version number equal to zero.
+ } else
+ if (state == ProgressState.inDRAFT) {
+ state = ProgressState.inWORK;
+ torem = ValidationStep.PROMOTION;
+ } else {
+ return false;
+ }
+ for (Iterator<Relation> i=this.getAllRelations().iterator(); i.hasNext(); ) {
+ Relation link = i.next();
+ if (!(link instanceof StampRelation)) continue;
+ if (((StampRelation)link).getStampType() != torem) continue;
+ i.remove();
+ break;
+ }
+ Database.getSession().update(this);
+ return true;
+ }
+
+/**
+ * Increments the reference count of this document following its publication into a Study step.
+ *
+ * @see #release()
+ */
+ protected void hold () {
+// ----------------------
+ countag += 1;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+
+/**
+ * Defines this document.
+ *
+ * @param dprop the properties of the document
+ *
+ * @see Step#createDocument(Properties)
+ * @see #isUndefined()
+ */
+ protected void initialize (Properties dprop) throws MissedPropertyException, InvalidPropertyException, NotApplicableException {
+// --------------------------------------------
+ if (!this.isUndefined()) throw new NotApplicableException("Cannot initialize an existing Document");
+ if (dprop.name == null) throw new MissedPropertyException("name");
+ if (dprop.name.length() == 0) throw new InvalidPropertyException("name");
+ if (dprop.owner == null) throw new MissedPropertyException("owner");
+// if (dprop.owner instanceof Study && !ProjectSettings.getStep(step).appliesTo(Study.class)) {
+// throw new InvalidPropertyException("step");
+// }
+ name = dprop.name;
+ myfile.changePath( myfile.getRelativePath().replace("%n", getEncodedRootName((Study)dprop.owner)) );
+ if (history == -1) history = 0;
+ if (dprop.date == null) {
+ Calendar current = Calendar.getInstance();
+ lasdate = current.getTime(); // Today
+ } else {
+ lasdate = dprop.date;
+ }
+ Database.getSession().update(this);
+ }
+
+ protected boolean promote (Timestamp stamp) {
+// -------------------------------------------
+ ProgressState newstate = null;
+
+ if (state == ProgressState.inWORK) {
+ newstate = ProgressState.inDRAFT; // Promotion to being reviewed
+ } else
+ if (state == ProgressState.inDRAFT) {
+ newstate = ProgressState.inCHECK; // Promotion to approval
+ Revision myvers = new Revision(version);
+ if (myvers.isMinor()) {
+ version = myvers.incrementAs(newstate).toString();
+//TODO: If my physical file is programatically editable, update its (property) version number
+//ISSUE: What about attached files such as PDF if exist, should we remove them ?
+ }
+ } else
+ if (state == ProgressState.inCHECK) {
+ newstate = ProgressState.APPROVED;
+ }
+ this.state = newstate;
+ if (stamp != null) this.addRelation( stamp.getContext() );
+ Database.getSession().update(this);
+ return true;
+ }
+
+/**
+ * Decrements the reference count of this document following the removal of a Publication from a Study step.
+ *
+ * @see #hold()
+ */
+ protected void release () {
+// -------------------------
+ countag -= 1;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+
+ protected void rename (String title) throws InvalidPropertyException {
+// ------------------------------------
+ if (title.length() == 0) throw new InvalidPropertyException("name");
+
+ Calendar current = Calendar.getInstance();
+ this.name = title;
+ this.lasdate = current.getTime(); // Today
+ Database.getSession().update(this);
+ }
+
+ protected void updateAs (Revision newvers) {
+// ------------------------------------------
+ version = newvers.setBranch(version).toString(); // Branch names are propagated by the versionning
+ ProgressState newstate = ProgressState.inCHECK;
+ if (newvers.isMinor()) newstate = ProgressState.inWORK;
+ state = null; // Just to tell updateAs(sate) to not increment the version number
+ updateAs(newstate);
+ }
+
+ protected void updateAs (ProgressState state) {
+// ---------------------------------------------
+ Document previous = null;
+
+// Set of version number
+ if (state == ProgressState.EXTERN) {
+ if (this.state != ProgressState.EXTERN) this.version = null; // Strange use-case...
+ } else {
+ Revision myvers = new Revision(version);
+ if (!myvers.isNull()) { // Versionning context
+ for (Iterator<Relation> i=getAllRelations().iterator(); i.hasNext();) {
+ Relation link = i.next();
+ if (!link.getClass().equals(VersionsRelation.class)) continue;
+ previous = (Document)link.getTo(); // Versioned document
+ break;
+ }
+ }
+ if (this.state != null) myvers.incrementAs(state); // Incrementation if the reversion number is not imposed
+ this.version = myvers.toString();
+ }
+// Update this document and the previous version, if exit
+ Session session = Database.getSession();
+ if (previous != null) {
+ previous.history += 1;
+ session.update(previous);
+ }
+ this.state = state;
+ session.update(this);
+ }
+
+// protected void upgrade () {
+// -------------------------
+// if (this.state != ProgressState.inWORK) return;
+//
+// Calendar current = Calendar.getInstance();
+// for (Iterator<Relation> i=getAllRelations().iterator(); i.hasNext();) {
+// Relation link = i.next();
+// if (!link.getClass().equals(UsesRelation.class)) continue;
+//
+// Document used = (Document)link.getTo();
+// if (!used.isVersioned()) continue;
+//TODO: Update the uses relation
+// }
+// this.promote();
+// this.lasdate = current.getTime(); // Today
+// Database.getSession().update(this);
+//
+//TODO: Promote documents using this one
+// }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private String generateEncodedName (Study scope) {
+// ------------------------------------------------
+ StringBuffer encoding = new StringBuffer();
+ FileNaming scheme = ProjectSettings.getFileNamingScheme();
+ DecimalFormat tostring = new DecimalFormat(suformat);
+
+ int number = scope.generateLocalIndex();
+
+ if (scheme == FileNaming.encoded) {
+ encoding.append(scope.getReference()).append(".").append(tostring.format(number));
+ } else { // title and (temporarily) asis
+ encoding.append(name).append(".").append(tostring.format(number));
+ }
+ return encoding.toString();
+ }
+
+ private String getEncodedRootName (Study scope) {
+// -----------------------------------------------
+ FileNaming scheme = ProjectSettings.getFileNamingScheme();
+
+ if (scheme == FileNaming.encoded) return scope.getReference();
+ else return name;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class providing services for checking the rights related to operations on a given document.
+ * These rights are partially driven by the validation cycle associated to documents.
+ *
+ * @see ValidationCycle
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+//TODO: Review this rights in the following contexts:
+// - Document shared by several scenarios
+// - Document out-dated following a modification of a document it uses
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.splat.kernel.Relation;
+import org.splat.kernel.User;
+
+
+public class DocumentRights {
+
+ private User user;
+ private Publication operand;
+ private ValidationCycle cycle;
+ private boolean isauthor; // True if the user is author of the document
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public DocumentRights (User user, Publication tag) {
+// --------------------------------------------------
+ this.user = user;
+ this.operand = tag;
+ this.cycle = operand.getOwnerStudy().getValidationCycleOf(operand.value().getType());
+ this.isauthor = operand.value().getAuthor().equals(user);
+//TODO: all contributors of the given document (when supported) must also behave as author
+ }
+ protected DocumentRights (Publication tag) {
+// ------------------------------------------
+ this.user = operand.value().getAuthor();
+ this.operand = tag;
+ this.cycle = operand.getOwnerStudy().getValidationCycleOf(operand.value().getType());
+ this.isauthor = true; // In order to ignore the author state in the context of any user
+//TODO: all contributors of the given document (when supported) must also behave as author
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+/**
+ * Checks if the user has right to accept the modifications of documents depending on the selected document.
+ * This operation applies to out-dated documents following a modification of documents they use.
+ * Only the author of the document has such right.
+ *
+ * @return true if the user has right to accept the modifications of dependencies of the document.
+ * @see Publication#accept()
+ */
+ public boolean canAccept () {
+// ---------------------------
+ if (!isauthor) return false;
+ return operand.isOutdated();
+ }
+
+/**
+ * Checks if the user has right to approve the selected document.
+ * Only the approver of the type of selected document has such right, providing that the document is candidate for approval and
+ * all document dependencies have already been approved.
+ *
+ * @return true if the user has right to approve the document.
+ * @see Publication#approve()
+ * @see ValidationCycle
+ */
+ public boolean canApprove () {
+// ----------------------------
+ User approver = cycle.getActor(ValidationStep.APPROVAL); // May be null if not approvable
+
+ if (!user.equals(approver)) return false;
+ if (operand.getProgressState() != ProgressState.inCHECK) return false;
+
+ List<Relation> use = operand.value().getRelations(UsesRelation.class);
+ for (Iterator<Relation> i=use.iterator(); i.hasNext();) {
+ Document depend = (Document)i.next().getTo();
+ ProgressState state = depend.getProgressState();
+ if (state == ProgressState.EXTERN) continue; // External documents do not follow this progress state
+ if (state != ProgressState.APPROVED) return false;
+ }
+ return true;
+ }
+
+/**
+ * Checks if the user has right to attach a file to the selected document.
+ * Both, the author, during the elaboration of the document, and the reviewer of the document, during the review process,
+ * have such right.
+ *
+ * @return true if the user has right to attach a file to the document.
+ * @see Publication#attach(String)
+ * @see Publication#attach(String, String)
+ */
+ public boolean canAttach () {
+// ---------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ User reviewer = cycle.getActor(ValidationStep.REVIEW); // May be null if not reviewable
+ ProgressState state = operand.value().getProgressState();
+
+ if (state == ProgressState.inWORK) return (isauthor);
+ else return (isauthor || user.equals(manager) || user.equals(reviewer));
+ }
+
+/**
+ * Checks if the user has right to demote the selected document.
+ * A document can be demoted providing that it is In-Draft or In-Check and all documents using it have previously been demoted.
+ * In-Draft documents can be demoted by default by both, the author of the document and the responsible of study, while
+ * documents in approval process can be demoted by their approver only.
+ *
+ * @return true if the user has right to demote the document.
+ * @see #canInvalidate()
+ * @see #canPromote()
+ * @see Publication#demote()
+ * @see ValidationCycle
+ */
+ public boolean canDemote () {
+// ---------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ User publisher = cycle.getActor(ValidationStep.PROMOTION); // Null if the default users are involved
+ User approver = cycle.getActor(ValidationStep.APPROVAL); // May be null if not approvable
+ ProgressState mystate = operand.value().getProgressState();
+
+ if (mystate == ProgressState.inDRAFT) {
+ if (publisher == null) { if (!isauthor && !user.equals(manager)) return false;
+ } else if (!user.equals(publisher)) return false;
+ } else
+ if (mystate == ProgressState.inCHECK) {
+ if (!user.equals(approver)) return false;
+ } else return false;
+
+ List<Relation> use = operand.value().getRelations(UsedByRelation.class);
+ for (Iterator<Relation> i=use.iterator(); i.hasNext();) {
+ Document depend = (Document)i.next().getTo();
+ ProgressState state = depend.getProgressState();
+ if (mystate == ProgressState.inDRAFT && state != ProgressState.inWORK) return false;
+ if (mystate == ProgressState.inCHECK && (state != ProgressState.inDRAFT && state != ProgressState.inWORK)) return false;
+ }
+ return true;
+ }
+
+/**
+ * Checks if the user has right to check-out the selected document for editing.
+ * In-Work documents can be checked-out by both, the author of the document and the responsible of study, while
+ * documents In-Draft can be checked-out by the reviewer only.
+ *
+ * @return true if the user has right to edit the document.
+ */
+ public boolean canEdit () {
+// -------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ User reviewer = cycle.getActor(ValidationStep.REVIEW); // May be null if not reviewable
+ ProgressState state = operand.value().getProgressState();
+
+//TODO: Should be restricted by the application if no editor available
+ if (state == ProgressState.inWORK) {
+ if (isauthor || user.equals(manager)) return true;
+ } else
+ if (state == ProgressState.inDRAFT) {
+ if (user.equals(reviewer)) return true;
+ }
+ return false;
+ }
+
+/**
+ * Checks if the user has right to promote the selected document.
+ * A document can be promoted providing that it is In-Work and all its dependencies have previously been promoted.
+ * By default, both the author of the document and the responsible of study has right to promote such document. Otherwise,
+ * only the user involved in the Promotion step of validation cycle of the selected document has such right.
+ *
+ * @return true if the user has right to promote the document.
+ * @see #canDemote()
+ * @see Publication#promote()
+ * @see ValidationCycle
+ */
+ public boolean canPromote () {
+// ----------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ User publisher = cycle.getActor(ValidationStep.PROMOTION); // Null if the default users are involved
+
+ if (operand.getProgressState() != ProgressState.inWORK) return false;
+ if (publisher == null) { if (!isauthor && !user.equals(manager)) return false;
+ } else { if (!user.equals(publisher)) return false;
+ }
+ List<Relation> use = operand.value().getRelations(UsesRelation.class);
+ for (Iterator<Relation> i=use.iterator(); i.hasNext();) {
+ Document depend = (Document)i.next().getTo();
+ ProgressState state = depend.getProgressState();
+ if (state == ProgressState.EXTERN) continue; // External documents do not follow this progress state
+ if (state == ProgressState.inWORK) return false;
+ }
+ return true;
+ }
+
+/**
+ * Checks if the user has right to remove the history of the selected document, if exists.
+ * Only the responsible of the study have such right.
+ *
+ * @return true if the user has right to purge the document.
+ */
+ public boolean canPurge () {
+// --------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ Document doc = operand.value();
+
+ if (!user.equals(manager)) return false;
+ if (doc.isShared()) return false;
+ if (doc.getFirstRelation(VersionsRelation.class) == null) return false;
+ return true;
+ }
+
+/**
+ * Checks if the user has right to remove the selected document from the study.
+ * Both, the author of the document and the responsible of the study, have such right, providing that:
+ * - the document is neither in review or in approval process
+ * - the document is not used by any other document
+ *
+ * @return true if the user has right to remove the document.
+ * @see Step#removeDocument(Publication)
+ */
+ public boolean canRemove () {
+// ---------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ ProgressState state = operand.getProgressState();
+
+ if (!isauthor && !user.equals(manager)) return false;
+ if (state != ProgressState.inWORK && state != ProgressState.EXTERN) return false;
+
+ List<Publication> using = operand.getRelations(UsedByRelation.class);
+ return (using.size() == 0);
+ }
+
+/**
+ * Checks if the user has right to rename the selected document.
+ * Only the author of the document has such right, providing that the document is neither in review nor in approval process.
+ *
+ * @return true if the user has right to rename the document.
+ * @see Publication#rename(String)
+ */
+ public boolean canRename () {
+// ---------------------------
+ ProgressState state = operand.getProgressState();
+
+ if (!isauthor) return false; // In case of external document, the author is the one who has imported the document.
+ if (state != ProgressState.inWORK && state != ProgressState.EXTERN) return false;
+ return (!operand.value().isShared());
+ }
+
+/**
+ * Checks if the user has right to replace the source file of the selected document.
+ * Both, the author of the document and the responsible of study has such right, providing that the document is neither in review
+ * nor in approval process.
+ *
+ * @return true if the user has right to replace the document.
+ */
+ public boolean canReplace () {
+// ----------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ ProgressState state = operand.getProgressState();
+
+ if (!isauthor && !user.equals(manager)) return false; // Supposed to work also in case of external document.
+ if (state != ProgressState.inWORK && state != ProgressState.EXTERN) return false;
+ return !operand.value().isShared();
+ }
+
+/**
+ * Checks if the user has right to validate the selected document.
+ * Only the reviewer of the type of selected document has such right, providing that the document is being reviewed and
+ * all document dependencies have already been validated.
+ *
+ * @return true if the user has right to validate the document
+ * @see #canUnvalidate()
+ * @see Publication#review()
+ * @see ValidationCycle
+ */
+ public boolean canReview () {
+// ---------------------------
+ User reviewer = cycle.getActor(ValidationStep.REVIEW); // May be null if not reviewable
+
+ if (!user.equals(reviewer)) return false;
+ if (operand.getProgressState() != ProgressState.inDRAFT) return false;
+
+ List<Relation> use = operand.value().getRelations(UsesRelation.class);
+ for (Iterator<Relation> i=use.iterator(); i.hasNext();) {
+ Document depend = (Document)i.next().getTo();
+ ProgressState state = depend.getProgressState();
+ if (state == ProgressState.EXTERN) continue; // External documents do not follow this progress state
+ if (state == ProgressState.inWORK || state == ProgressState.inDRAFT) return false;
+ }
+ return true;
+ }
+
+/**
+ * Checks if the user has right to undo the validation operation of the selected document.
+ * Both, the author and the reviewer of a validated document, have such right.
+ *
+ * @return true if the user has right to undo the validation operation
+ * @see #canDemote()
+ * @see #canReview()
+ * @see Publication#invalidate()
+ * @see ValidationCycle
+ */
+ public boolean canInvalidate () {
+// -------------------------------
+ User reviewer = cycle.getActor(ValidationStep.REVIEW); // May be null if not reviewable
+ ProgressState mystate = operand.value().getProgressState();
+
+ if (mystate != ProgressState.inCHECK) return false;
+ if (!isauthor && !user.equals(reviewer)) return false;
+
+ List<Relation> use = operand.value().getRelations(UsedByRelation.class);
+ for (Iterator<Relation> i=use.iterator(); i.hasNext();) {
+ Document depend = (Document)i.next().getTo();
+ ProgressState state = depend.getProgressState();
+ if (mystate == ProgressState.inDRAFT && state != ProgressState.inWORK) return false;
+ if (mystate == ProgressState.inCHECK && (state != ProgressState.inDRAFT && state != ProgressState.inWORK)) return false;
+ }
+ return true;
+ }
+
+/**
+ * Checks if the user has right to version the selected document.
+ * In-Work documents can be versioned by both, the author of the document and the responsible of study, while
+ * documents In-Draft can be versioned by the reviewer only.
+ * Additionally, Approved documents can also be versioned by their author in order to enter in a new modification validation cycle.
+ *
+ * @return true if the user has right to version the document.
+ * @see Step#versionDocument(Publication)
+ * @see Step#versionDocument(Publication, Document.Properties)
+ * @see Step#versionDocument(Publication, String)
+ */
+ public boolean canVersion () {
+// ----------------------------
+ User manager = operand.getOwnerStudy().getAuthor();
+ User reviewer = cycle.getActor(ValidationStep.REVIEW); // May be null if not reviewable
+ ProgressState state = operand.value().getProgressState();
+
+ if (state == ProgressState.inWORK) {
+ if (isauthor || user.equals(manager)) return true;
+ } else
+ if (state == ProgressState.inDRAFT) {
+ if (user.equals(reviewer)) return true;
+ } else
+ if (state == ProgressState.APPROVED) {
+ if (isauthor) return true;
+ }
+ return false;
+ }
+
+// ==============================================================================================================================
+// Getter
+// ==============================================================================================================================
+
+/**
+ * Returns the document subject of checks according to this user rights.
+ *
+ * @return the document subject of checks.
+ */
+ public Document getOperand () {
+// -----------------------------
+ return operand.value();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.Persistent;
+
+
+public class DocumentType extends Persistent {
+
+// Persistent fields
+ private String name;
+ private ProgressState state;
+ private String step; // List of (dash separated) steps (numbers) containing this type
+ private String result; // Step (number ) having this type as result
+ private Set<DocumentType> uses;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private String name = null;
+ private String step = null;
+ private String result = null;
+ private DocumentType[] uses = null;
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ name = null;
+ step = null;
+ result = null;
+ uses = null;
+ }
+// - Setters of DocumentType properties
+
+ public Properties setName (String name) throws InvalidPropertyException
+ {
+ if (name.length() == 0) throw new InvalidPropertyException("name");
+ this.name = name;
+ return this;
+ }
+ public Properties setResult (ProjectSettings.Step step)
+ {
+ this.result = String.valueOf(step.getNumber());
+ return this;
+ }
+ public Properties setStep (ProjectSettings.Step... step)
+ {
+ this.step = "-";
+ for (int i=0; i<step.length; i++) this.step = this.step + String.valueOf(step[i].getNumber()) + "-";
+ return this;
+ }
+ public Properties setUses (DocumentType... type)
+ {
+ this.uses = type;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity() throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (name == null) throw new MissedPropertyException("name");
+ if (step == null) throw new MissedPropertyException("path");
+ }
+ }
+// Database fetch constructor
+ protected DocumentType () {
+// -------------------------
+ }
+// Initialization constructor
+ protected DocumentType (Properties dprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// -----------------------------------------
+ super(dprop); // Throws one of the above exception if not valid
+ name = dprop.name;
+ state = ProgressState.inCHECK;
+ step = dprop.step;
+ result = dprop.result; // May be null
+ uses = new HashSet<DocumentType>();
+ if (dprop.uses != null) for (int i=0; i<dprop.uses.length; i++) uses.add(dprop.uses[i]);
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean approve () {
+// -------------------------
+ if (state != ProgressState.inCHECK) return false;
+ this.state = ProgressState.APPROVED; // The type name is supposed being localized
+ Database.getSession().update(this);
+ return true;
+ }
+
+ public boolean equals(Object entity) {
+// ------------------------------------
+ if (entity == null) return false;
+ if (entity instanceof String) {
+ return this.name.equals((String)entity); // Names are unique
+ } else
+ if (entity instanceof DocumentType) {
+ DocumentType object = (DocumentType)entity;
+ int he = object.getIndex();
+ int me = this.getIndex();
+ if (me*he != 0) return (he == me);
+ else return this.getName().equals(object.getName());
+ } else {
+ return false;
+ }
+ }
+
+ public String getName () {
+// ------------------------
+ return name;
+ }
+
+ public Set<DocumentType> getDefaultUses () {
+// -------------------------------------------
+ return uses;
+ }
+
+ public boolean isApproved () {
+// ----------------------------
+ return (state == ProgressState.APPROVED);
+ }
+
+/**
+ * Checks if documents of this type are attached to the given study step, either as result or content.
+ *
+ * @param step the involved study step
+ * @return true if documents of this type are attached to the given step.
+ * @see #isResultOf(org.splat.som.ProjectSettings.Step)
+ */
+ public boolean isContentInto (ProjectSettings.Step step) {
+// --------------------------------------------------------
+ String[] path = this.step.split("-");
+ for (int i=0; i<path.length; i++) {
+ String value = path[i];
+ if (value.length() == 0) continue;
+ if (Integer.valueOf(value) == step.getNumber()) return true;
+ }
+ return false;
+ }
+
+/**
+ * Checks if documents of this type are result of any study step.
+ *
+ * @return true if documents of this type are result of a step.
+ * @see #isStudyResult()
+ * @see #isResultOf(org.splat.som.ProjectSettings.Step)
+ */
+ public boolean isStepResult () {
+// ------------------------------
+ return (result != null);
+ }
+
+/**
+ * Checks if documents of this type are result of a study.
+ * A document is the result of a study when it is the result of the last step of the study.
+ *
+ * @return true if documents of this type are result of a study.
+ * @see #isStepResult()
+ * @see #isResultOf(org.splat.som.ProjectSettings.Step)
+ */
+ public boolean isStudyResult () {
+// -------------------------------
+ List<ProjectSettings.Step> step = ProjectSettings.getAllSteps();
+ ProjectSettings.Step lastep = step.get( step.size()-1 );
+ return (this.isResultOf(lastep));
+ }
+
+/**
+ * Checks if documents of this type are result of the given study step.
+ *
+ * @param step the involved study step
+ * @return true if documents of this type are result of the given step.
+ * @see #isContentInto(org.splat.som.ProjectSettings.Step)
+ * @see #isStepResult()
+ * @see #isStudyResult()
+ */
+ public boolean isResultOf (ProjectSettings.Step step) {
+// -----------------------------------------------------
+ if (result == null) return false;
+ return (Integer.valueOf(result) == step.getNumber());
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class whose only purpose is to represent the kernel's Entity class for propagating to this package the visibility of relations
+ * and attributes editing functions.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Set;
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+import org.splat.kernel.ObjectProperties;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+
+
+public abstract class Entity extends org.splat.kernel.Entity {
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected Entity () {
+ }
+// Initialization constructor
+ protected Entity (ObjectProperties prop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// ----------------------------------------
+ super(prop);
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected Relation addRelation (Relation link) {
+// ----------------------------------------------
+ return super.addRelation(link);
+ }
+
+ protected Set<Relation> getAllRelations () {
+// ------------------------------------------
+ return super.getAllRelations();
+ }
+
+ protected void removeRelation (Class<? extends Relation> type, Persistent to) {
+// -----------------------------------------------------------------------------
+ super.removeRelation(type, to);
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.File" table="file" lazy="false">
+
+<!-- Properties inherited Persistent
+ -->
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+<!-- File properties
+ -->
+ <!-- String format -->
+ <property name="format" column="format" access="field" not-null="true" />
+
+ <!-- String path -->
+ <property name="path" column="path" access="field" not-null="true" />
+
+ <!-- String date -->
+ <property name="date" column="date" access="field" not-null="true" />
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class of meta files representing physical files under the control of Study Manager.
+ * Typically, the files represented by this class are source files of Documents and exports in different formats.
+ * The path of such files is relative to the vault of the repository of Study Manager.
+ * When creating a Document, as the source file is produced by the caller which creates the Document, the corresponding
+ * physical file may not exist at instantiation time.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Calendar;
+import java.util.Date;
+
+import org.splat.kernel.Persistent;
+
+
+public class File extends Persistent {
+
+// Persistent fields
+ protected String format;
+ protected String path;
+ protected Date date;
+
+// Transient fields
+ private java.io.File myfile; // For optimization
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected File () {
+// -----------------
+ this.myfile = null;
+ }
+// Internal constructors
+ protected File (String path) {
+// ----------------------------
+ Calendar current = Calendar.getInstance();
+ String[] table = path.split("\\x2E");
+
+ this.format = table[table.length-1];
+ this.path = path; // The corresponding physical file may not exist yet
+ this.date = current.getTime(); // Today
+ this.myfile = null;
+ }
+ protected File (String path, String format, Date date) {
+// ------------------------------------------------------
+ this.path = path; // The corresponding physical file may not exist yet
+ this.format = format; // The format name may be different from the physical file extension
+ this.date = date;
+ if (date == null) {
+ Calendar current = Calendar.getInstance();
+ this.date = current.getTime(); // Today
+ }
+ this.myfile = null;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+/**
+ * Returns the data file associated to this meta file.
+ *
+ * @return the associated data file. If this meta data is an empty document, the returned file does not exist.
+ */
+ public java.io.File asFile () {
+// -----------------------------
+ if (myfile == null) myfile = new java.io.File(Database.getRepositoryVaultPath() + path);
+ return myfile;
+ }
+
+ public Date getDate () {
+// ----------------------
+ return date;
+ }
+
+ public String getFormat () {
+// --------------------------
+ return format;
+ }
+
+ public String getName () {
+// ------------------------
+ return this.asFile().getName();
+ }
+
+ public String getRelativePath () {
+// --------------------------------
+ return path;
+ }
+
+ public boolean exists () { // Shortcut
+// ------------------------
+ return (this.asFile().exists());
+ }
+
+// ==============================================================================================================================
+// Protected service
+// ==============================================================================================================================
+
+ protected void changePath (String path) {
+// ---------------------------------------
+ this.path = path;
+ this.myfile = null;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.IDBuilder" table="refid">
+
+ <!-- Integer cycle -->
+ <id name="cycle" column="cycle" access="field">
+ <generator class="assigned"/>
+ </id>
+
+ <!-- Integer base -->
+ <property name="base" column="base" access="field" />
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+
+public class IDBuilder {
+
+ @SuppressWarnings("unused")
+ private int cycle;
+ private int base; // Number of studies created in this cycle
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ protected IDBuilder () {
+ }
+ protected IDBuilder (Date date) {
+// -------------------------------
+ SimpleDateFormat get = new SimpleDateFormat("yyyy");
+ String year = get.format(date);
+ cycle = Integer.valueOf(year);
+ base = 0;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ protected String buildReference (String pattern, Study study) {
+// -------------------------------------------------------------
+ char[] format = pattern.toCharArray();
+ char[] ref = new char[80]; // Better evaluate the length of the generated string
+ int next = base + 1;
+
+ int count = 0;
+ for (int i=0; i<format.length; i++) {
+
+// Insertion of attribute values
+ if (format[i] == '%') {
+ i += 1;
+
+ if (format[i] == 'y') { // Insertion of year in format 2 (e.g. 09) or 4 (e.g. 2009) digits
+ int n = i;
+ while (format[i] == 'y') {
+ i += 1;
+ if (i == format.length) break;
+ }
+ SimpleDateFormat tostring = new SimpleDateFormat("yyyy");
+ String year = tostring.format(study.getDate());
+ year = year.substring(4-(i-n), 4); // 4-(i-n) must be equal to either 0 or 2
+ for (int j=0; j<year.length(); j++) {
+ ref[count] = year.charAt(j);
+ count += 1;
+ }
+ i -= 1; // Back to the last 'y' character
+ } else
+ if (format[i] == '0') { // Insertion of the index
+ int n = i;
+ while (format[i] == '0') {
+ i += 1;
+ if (i == format.length) break;
+ }
+ DecimalFormat tostring = new DecimalFormat(pattern.substring(n, i));
+ String number = tostring.format(next);
+ for (int j=0; j<number.length(); j++) {
+ ref[count] = number.charAt(j);
+ count += 1;
+ }
+ i -= 1; // Back to the last '0' character
+ }
+// Keep the character
+ } else {
+ ref[count] = format[i];
+ count += 1;
+ }
+ }
+// Incrementation of the number of study
+ base = next;
+ Database.getSession().update(this);
+ return String.copyValueOf(ref, 0, count);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.log4j.Logger;
+
+import org.apache.lucene.analysis.standard.StandardAnalyzer;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.LockObtainFailedException;
+import org.apache.lucene.util.Version;
+import org.splat.kernel.User;
+
+
+class Index {
+
+ private Directory index;
+ private org.apache.lucene.document.Document body;
+
+ protected static StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
+ private static final Logger logger = Logger.getLogger(Index.class);
+
+ private class Entry extends IndexWriter {
+// ---------------------------------------
+ private org.apache.lucene.document.Document entry;
+
+ private Entry (Study study) throws CorruptIndexException, LockObtainFailedException, IOException
+ {
+ super(index, analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED);
+
+// Addition of mandatory fields
+ entry = new org.apache.lucene.document.Document();
+ Field field;
+ field = body.getField("index");
+ field.setValue(String.valueOf(study.getIndex()));
+ entry.add(field);
+ field = body.getField("class");
+ field.setValue("Study");
+ entry.add(field);
+ field = body.getField("type");
+ field.setValue(""); // Reserved for configurable Study type
+ entry.add(field);
+ field = body.getField("ref");
+ field.setValue(study.getReference());
+ entry.add(field);
+ field = body.getField("area");
+ field.setValue(study.getVisibility().toString());
+ entry.add(field);
+ field = body.getField("state");
+ field.setValue(study.getProgressState().toString());
+ entry.add(field);
+ field = body.getField("author");
+ field.setValue(study.getAuthor().toString());
+ entry.add(field);
+ field = body.getField("title");
+ field.setValue(study.getTitle());
+ entry.add(field);
+ field = body.getField("contents");
+ field.setValue(study.getTitle());
+ entry.add(field);
+
+// Addition of optional fields
+ setActorsOf(study);
+ setContextAt(study.getSteps());
+ }
+ private Entry (KnowledgeElement kelm) throws CorruptIndexException, LockObtainFailedException, IOException
+ {
+ super(index, analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED);
+
+// Addition of mandatory fields
+ entry = new org.apache.lucene.document.Document();
+ Field field;
+ field = body.getField("index");
+ field.setValue(String.valueOf(kelm.getIndex()));
+ entry.add(field);
+ field = body.getField("class");
+ field.setValue("KnowledgeElement");
+ entry.add(field);
+ field = body.getField("type");
+ field.setValue(kelm.getType().getName());
+ entry.add(field);
+ field = body.getField("ref");
+ field.setValue(kelm.getReference());
+ entry.add(field);
+ field = body.getField("area");
+ field.setValue(kelm.getVisibility().toString());
+ entry.add(field);
+ field = body.getField("state");
+ field.setValue(kelm.getProgressState().toString());
+ entry.add(field);
+ field = body.getField("author");
+ field.setValue(kelm.getAuthor().toString());
+ entry.add(field);
+ field = body.getField("title");
+ field.setValue(kelm.getTitle());
+ entry.add(field);
+ field = body.getField("contents");
+ field.setValue(kelm.getTitle());
+ entry.add(field);
+
+//TODO: Addition of optional fields
+ Scenario scene = kelm.getOwnerScenario();
+ Study study = scene.getOwnerStudy();
+ setActorsOf(study); // For restricting the visibility of knowledges attached to private studies
+ setContextAt(study.getSteps());
+ setContextAt(scene.getSteps());
+ }
+ private void add () throws CorruptIndexException, IOException
+ {
+ addDocument(entry);
+// Save the new entry
+ optimize(); // Should be called before committing the index
+ close(); // Commits the index
+ }
+ private void update () throws CorruptIndexException, IOException
+ {
+ String value = entry.getField("ref").stringValue(); // Only field with unique value
+ Term term = new Term("ref").createTerm(value);
+ updateDocument(term, entry);
+// Save the updated entry
+ optimize(); // Should be called before committing the index
+ close(); // Commits the index
+ }
+ private void setContextAt (Step[] step)
+ {
+ for (int i=0; i<step.length; i++) {
+ List<SimulationContext> contexts = step[i].getAllSimulationContexts();
+ for (Iterator<SimulationContext> j=contexts.iterator(); j.hasNext();) {
+ SimulationContext context = j.next();
+ String type = String.valueOf(context.getType().getIndex());
+ String value = context.getValue();
+ entry.add( new Field(type, value, Field.Store.NO, Field.Index.NOT_ANALYZED) );
+ }
+ }
+ }
+ private void setActorsOf (Study study)
+ {
+ Set<User> actors = study.getActors();
+ for (Iterator<User> i=actors.iterator(); i.hasNext(); ) {
+ String value = i.next().toString();
+ entry.add( new Field("actor", value, Field.Store.NO, Field.Index.NOT_ANALYZED) );
+ }
+ }
+ }
+ public static class ObjectProxy implements Proxy, Serializable {
+// --------------------------------------------------------------
+ private int rid;
+ private String sid;
+ private ProgressState state;
+ private String title;
+ private String type;
+ private String name;
+ private static final long serialVersionUID = -4386494192709562221L;
+
+ public ObjectProxy (org.apache.lucene.document.Document ludoc) {
+ rid = Integer.valueOf(ludoc.get("index"));
+ sid = ludoc.get("ref");
+ state = ProgressState.valueOf(ludoc.get("state"));
+ title = ludoc.get("title");
+ name = ludoc.get("author");
+ }
+ public String getAuthorName () {
+ return name;
+ }
+ public Integer getIndex () {
+ return rid;
+ }
+ public ProgressState getProgressState () {
+ return state;
+ }
+ public String getReference () {
+ return sid;
+ }
+ public String getTitle () {
+ return title;
+ }
+ public String getType () {
+ return type;
+ }
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ protected static void create () throws IOException {
+// -------------------------------
+ Directory index = FSDirectory.open(Database.getRepositoryIndexDirectory());
+ IndexWriter writer = new IndexWriter(index, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
+ writer.close(); // ==== Creates an empty index
+ }
+
+ protected Index () throws IOException {
+// ------------------
+ File indir = Database.getRepositoryIndexDirectory();
+ index = FSDirectory.open(indir);
+ body = new org.apache.lucene.document.Document();
+ body.add( new Field("index", "", Field.Store.YES, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("class", "", Field.Store.NO, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("type", "", Field.Store.YES, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("ref", "", Field.Store.YES, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("area", "", Field.Store.NO, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("state", "", Field.Store.YES, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("author", "", Field.Store.YES, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("title", "", Field.Store.YES, Field.Index.NOT_ANALYZED) );
+ body.add( new Field("contents","", Field.Store.NO, Field.Index.ANALYZED) );
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ protected void add (Study study) throws IOException {
+// --------------------------------
+ Index.Entry entry = new Entry(study);
+ entry.add();
+ if (logger.isInfoEnabled()) {
+ logger.info("Study \"" + study.getIndex() + "\" indexed.");
+ }
+ }
+
+ protected void add (KnowledgeElement kelm) throws IOException {
+// ------------------------------------------
+ Index.Entry entry = new Entry(kelm);
+ entry.add();
+ if (logger.isInfoEnabled()) {
+ logger.info("Knowledge \"" + kelm.getIndex() + "\" indexed.");
+ }
+ }
+
+ protected boolean exists () {
+// ---------------------------
+ try {
+ return IndexReader.indexExists(index);
+ }
+ catch (IOException error) {
+ error.printStackTrace();
+ return false;
+ }
+ }
+
+ protected void update (Study study) throws IOException {
+// -----------------------------------
+ Index.Entry entry = new Entry(study);
+ entry.update();
+ if (logger.isInfoEnabled()) {
+ logger.info("Study \"" + study.getIndex() + "\" re-indexed.");
+ }
+ }
+
+ protected void update (KnowledgeElement kelm) throws IOException {
+// ---------------------------------------------
+ Index.Entry entry = new Entry(kelm);
+ entry.update();
+ if (logger.isInfoEnabled()) {
+ logger.info("Knowledge \"" + kelm.getIndex() + "\" re-indexed.");
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.KnowledgeElement" table="knowelm" lazy="false">
+
+<!-- Properties inherited Persistent
+ -->
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+<!-- KnowledgeElement properties
+ -->
+ <!-- KnowledgeElementType type -->
+ <many-to-one name="type" column="type" access="field" not-null="true" />
+
+ <!-- String title -->
+ <property name="title" column="title" access="field" not-null="true" />
+
+ <!-- String value -->
+ <property name="value" column="value" access="field" not-null="true" />
+
+ <!-- Scenario owner -->
+ <many-to-one name="owner" column="owner" access="field" not-null="true" />
+
+ <!-- ProgressState state -->
+ <property name="state" column="state" type="ProgressState" access="field" not-null="true" />
+
+ <!-- User author -->
+ <many-to-one name="author" column="author" access="field" not-null="true" />
+
+ <!-- Date date -->
+ <property name="date" column="date" access="field" not-null="true" />
+
+ </class>
+
+<!-- Class KnowledgeElementType
+ -->
+ <class name="org.splat.som.KnowledgeElementType" table="knowtype" lazy="false">
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+ <property name="name" column="name" access="field" not-null="true" />
+ <property name="state" column="state" type="ProgressState" access="field" not-null="true" />
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.text.DecimalFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Vector;
+
+import org.hibernate.Session;
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.User;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+
+
+public class KnowledgeElement extends Persistent {
+
+ private KnowledgeElementType type; // User extendable types
+ private Scenario owner;
+ private ProgressState state;
+ private String title;
+ private String value;
+ private User author;
+ private Date date;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private String kid = null; // Search criterion only
+ private KnowledgeElementType type = null;
+ private Scenario owner = null;
+ private Visibility visibility = null; // Search criterion only
+ private ProgressState state = null;
+ private String title = null;
+ private String value = null;
+ private User author = null;
+ private User actor = null; // Search criterion only
+ private Date date = null;
+ private List<SimulationContext> context = new Vector<SimulationContext>(); // Search criterion only
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ kid = null;
+ type = null;
+ owner = null;
+ visibility = null;
+ state = null;
+ title = null;
+ value = null;
+ author = null;
+ actor = null;
+ date = null;
+ context = new Vector<SimulationContext>(); // as clear() may generate side effects
+ }
+ public Properties copy () {
+ Properties copy = new Properties();
+ copy.kid = this.kid;
+ copy.type = this.type;
+ copy.owner = this.owner;
+ copy.visibility = this.visibility;
+ copy.state = this.state;
+ copy.title = this.title;
+ copy.value = this.value;
+ copy.author = this.author;
+ copy.actor = this.actor;
+ copy.date = this.date;
+ copy.context = this.context;
+ return copy;
+ }
+// - Protected services
+
+ protected User getActor () {
+ return actor;
+ }
+ protected User getAuthor () {
+ return author;
+ }
+ protected ProgressState getProgressState () {
+ return state;
+ }
+ protected String getReference () {
+ return kid;
+ }
+ protected List<SimulationContext> getSimulationContexts () {
+ return context;
+ }
+ protected String getTitle () {
+ return title;
+ }
+ protected KnowledgeElementType getType () {
+ return type;
+ }
+ protected Visibility getVisibility () {
+ return visibility;
+ }
+// - Property setters
+
+// For building a search query
+ public Properties setActor (User actor)
+ {
+ this.actor = actor;
+ return this;
+ }
+ public Properties setAuthor (User user)
+ {
+ this.author = user;
+ return this;
+ }
+ public Properties setDate (Date date)
+ {
+ this.date = date;
+ return this;
+ }
+ protected Properties setOwnerScenario (Scenario owner)
+ {
+ this.owner = owner;
+ return this;
+ }
+// For building a search query
+ public Properties setReference (String kid) throws InvalidPropertyException
+ {
+ if (kid.length() == 0) throw new InvalidPropertyException("reference");
+ this.kid = kid;
+ return this;
+ }
+// For building a search query
+ public Properties setSimulationContexts (List<SimulationContext> context) {
+ this.context = context;
+ return this;
+ }
+ public Properties setState (ProgressState state) throws InvalidPropertyException
+ {
+ if (state != ProgressState.inWORK && state != ProgressState.inDRAFT && state != ProgressState.inCHECK && state != ProgressState.APPROVED) {
+ throw new InvalidPropertyException("state");
+ }
+ this.state = state;
+ return this;
+ }
+ public Properties setTitle (String title) throws InvalidPropertyException
+ {
+ if (title.length() == 0) throw new InvalidPropertyException("title");
+ this.title = title;
+ return this;
+ }
+ public Properties setType (KnowledgeElementType type)
+ {
+ this.type = type;
+ return this;
+ }
+ public Properties setValue (String value) throws InvalidPropertyException
+ {
+ if (value.length() == 0) throw new InvalidPropertyException("value");
+ this.value = value;
+ return this;
+ }
+// For building a search query
+ public Properties setVisibility (Visibility area)
+ {
+ this.visibility = area;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity () throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (type == null) throw new MissedPropertyException("type");
+ if (owner == null) throw new MissedPropertyException("owner");
+ if (title == null) throw new MissedPropertyException("title");
+ if (value == null) throw new MissedPropertyException("value");
+ if (author == null) throw new MissedPropertyException("author");
+ }
+ }
+// Database fetch constructor
+ protected KnowledgeElement () {
+ }
+// Internal constructor
+ protected KnowledgeElement (Properties kprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+ super(kprop); // Throws one of the above exception if not valid
+ type = kprop.type;
+ owner = kprop.owner;
+ title = kprop.title;
+ author = kprop.author;
+
+ date = kprop.date;
+ if (date == null) {
+ Calendar current = Calendar.getInstance();
+ date = current.getTime(); // Today
+ }
+ state = kprop.state;
+ if (state == null) {
+ if (type.isReserved()) state = ProgressState.inWORK;
+ else state = ProgressState.inDRAFT;
+ }
+ value = kprop.value.trim();
+ if (!value.startsWith("<p>")) {
+ StringBuffer text = new StringBuffer("<p>");
+ int index = value.indexOf("<p>");
+ if (index > 0) {
+ value = text.append(value.substring(0, index)).append("</p>").append(value.substring(index)).toString();
+ } else {
+ value = text.append(value).append("</p>").toString();
+ }
+ }
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean approve () {
+// -------------------------
+ if (state != ProgressState.inCHECK) return false;
+ state = ProgressState.APPROVED;
+ return updateMe();
+ }
+
+ public boolean demote () {
+// ------------------------
+ if (state != ProgressState.APPROVED && state != ProgressState.inCHECK) return false;
+ state = ProgressState.inDRAFT;
+ return updateMe();
+ }
+
+ public boolean equals (KnowledgeElement given) {
+// ----------------------------------------------
+ if (isSaved()) return (this.getIndex() == given.getIndex());
+ if (!this.getType().getName().equals(given.getType().getName())) return false;
+ if (this.getValue().equals(given.getValue())) return true;
+ return false;
+ }
+
+ public User getAuthor () {
+// ------------------------
+ return author;
+ }
+
+ public Date getDate () {
+// ----------------------
+ return date;
+ }
+
+ public Scenario getOwnerScenario () {
+// -----------------------------------
+ return owner;
+ }
+
+ public ProgressState getProgressState () {
+// ----------------------------------------
+ return state;
+ }
+
+ public String getTitle () {
+// -------------------------
+ return title;
+ }
+
+ public String getReference () {
+// -----------------------------
+ DecimalFormat toString = new DecimalFormat("00000"); // Supports 99 999 knowledge elements
+ return "KE" + toString.format(this.getIndex());
+ }
+
+ public KnowledgeElementType getType () {
+// --------------------------------------
+ return type;
+ }
+
+ public String getValue () {
+// -------------------------
+ return value;
+ }
+
+ public Visibility getVisibility () {
+// ----------------------------------
+ return getOwnerScenario().getOwnerStudy().getVisibility();
+ }
+
+ public boolean promote () {
+// -------------------------
+ if (state != ProgressState.inDRAFT) return false;
+ state = ProgressState.inCHECK;
+ return updateMe();
+ }
+
+ public void rename (String title) throws InvalidPropertyException {
+// ---------------------------------
+ if (title.length() == 0) throw new InvalidPropertyException("name");
+ this.title = title;
+ updateMe();
+ }
+
+ public void update (String description) {
+// ---------------------------------------
+ value = description.trim();
+ if (!value.startsWith("<p>")) {
+ StringBuffer text = new StringBuffer("<p>");
+ int index = value.indexOf("<p>");
+ if (index > 0) {
+ value = text.append(value.substring(0, index)).append("</p>").append(value.substring(index)).toString();
+ } else {
+ value = text.append(value).append("</p>").toString();
+ }
+ }
+ Database.getSession().update(this); // No need to update the Lucene index
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static KnowledgeElementType createType (String name) throws RuntimeException {
+// -----------------------------------------------------------
+//TODO: Check for duplicate definition
+ KnowledgeElementType kelt = new KnowledgeElementType(name);
+ Session session = Database.getSession();
+ session.save(kelt);
+
+ return kelt;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<KnowledgeElementType> selectAllTypes () {
+// ----------------------------------------------------------
+ StringBuffer query = new StringBuffer("from KnowledgeElementType");
+ query = query.append(" order by rid asc");
+ return Database.getSession().createQuery(query.toString()).list();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<KnowledgeElementType> selectTypesWhere (ProgressState state) {
+// -------------------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from KnowledgeElementType where state='").append(state).append("'");
+ query = query.append(" order by rid asc");
+ return Database.getSession().createQuery(query.toString()).list();
+ }
+
+ public static KnowledgeElementType selectType (String name) {
+// -----------------------------------------------------------
+ StringBuffer query = new StringBuffer("from KnowledgeElementType where name='").append(name).append("'");
+ return (KnowledgeElementType)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static KnowledgeElementType selectType (int index) {
+// ---------------------------------------------------------
+ StringBuffer query = new StringBuffer("from KnowledgeElementType where rid='").append(index).append("'");
+ return (KnowledgeElementType)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected boolean updateMe () {
+// -----------------------------
+ try {
+ Database.getSession().update(this);
+ Database.getIndex().update(this);
+ return true;
+ }
+ catch (Exception error) {
+// logger.error("Unable to re-index the knowledge '" + getIndex() + "', reason:", error);
+ return false;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+
+
+public class KnowledgeElementType extends Persistent {
+
+ private String name;
+ private ProgressState state;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected KnowledgeElementType () {
+ }
+// Initialization constructor
+ protected KnowledgeElementType (String name) {
+// --------------------------------------------
+ super();
+ this.name = name;
+ this.state = ProgressState.inCHECK;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean approve () {
+// -------------------------
+ if (state != ProgressState.inCHECK) return false;
+ this.state = ProgressState.APPROVED; // The type name is supposed being localized
+ if (this.isSaved()) Database.getSession().update(this);
+ return true;
+ }
+
+ public boolean equals(Object entity) {
+// ------------------------------------
+ if (entity == null) return false;
+ if (entity instanceof String) {
+ return this.name.equals((String)entity); // Names are unique
+ } else
+ if (entity instanceof KnowledgeElementType) {
+ KnowledgeElementType object = (KnowledgeElementType)entity;
+ int he = object.getIndex();
+ int me = this.getIndex();
+ if (me*he != 0) return (he == me);
+ else return this.getName().equals(object.getName());
+ } else {
+ return false;
+ }
+ }
+
+ public String getName () {
+// ------------------------
+ return name;
+ }
+
+ public boolean isApproved () {
+// ----------------------------
+ return (state == ProgressState.APPROVED);
+ }
+
+ public boolean isReserved () {
+// ----------------------------
+ return (state == ProgressState.inWORK);
+ }
+
+// ==============================================================================================================================
+// Protected service
+// ==============================================================================================================================
+/**
+ * Reserves this type for the management of simulation contexts.
+ * For being able to get the studies in which simulation contexts are used, all study scenarios are indexed through this
+ * knowledge element type, whether they include knowledge elements or not.
+ */
+ protected boolean reserve () {
+// ----------------------------
+ if (state != ProgressState.inCHECK) return false;
+ this.state = ProgressState.inWORK;
+ if (this.isSaved()) Database.getSession().update(this);
+ return true;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public enum Profile {
+ studengineer, // Standard user working on simulation studies
+ manager, // User with study creation right
+ knowledgineer, // Knowledge Engineer in charge of the management of simulation contexts and knowledge elements
+ sysadmin, // System Administrator in charge of administration of the database
+ customer
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public enum ProgressState {
+ inPROGRESS, // Represents inWORK, inDRAFT and inCHECK states for search purpose
+ inWORK, inDRAFT, inCHECK, APPROVED,
+ EXTERN, // Document-specific state representing documents produced outside studies
+ TEMPLATE // Study-specific state qualifying typical reference studies
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of properties common to Study and Scenario
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.ProjectElement" abstract="true">
+
+<!-- Properties inherited from Entity
+ -->
+ <id name="rid" type="int" column="rid" unsaved-value="0" access="field">
+ <generator class="org.splat.kernel.IDGenerator"/>
+ </id>
+ <set name="attributes" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Attribute" />
+ </set>
+ <set name="relations" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Relation" />
+ </set>
+
+<!-- ProjectElement properties common to Study and Scenario
+ -->
+ <property name="title" column="title" access="field" not-null="true" />
+ <property name="credate" column="credate" access="field" not-null="true" />
+ <property name="lasdate" column="lasdate" access="field" not-null="true" />
+ <many-to-one name="manager" column="manager" access="field" not-null="true" />
+ <list name="contex" table="projext" lazy="false" access="field">
+ <key column="owner" />
+ <list-index column="ordex" />
+ <many-to-many column="rid" class="org.splat.som.SimulationContext" />
+ </list>
+ <set name="docums" inverse="true" lazy="false" order-by="`rid` desc" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.som.Publication" />
+ </set>
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+import org.apache.log4j.Logger;
+
+import org.splat.kernel.ObjectProperties;
+import org.splat.kernel.User;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+
+
+public abstract class ProjectElement extends Entity {
+
+// Persistent fields
+ protected String title;
+ protected User manager;
+ protected Date credate; // Object creation date
+ protected Date lasdate; // Object Last modification date
+ private List<SimulationContext> contex; // Structured by the Step transient class
+ private Set<Publication> docums; // Structured by the Step transient class
+
+// Transient field
+ private Step[] folders;
+
+ protected final static Logger logger = Logger.getLogger(ProjectElement.class);
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected ProjectElement () {
+// ---------------------------
+ folders = null;
+ }
+// Initialization constructor
+ protected ProjectElement (ObjectProperties oprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// -------------------------------------------------
+ super(oprop); // Throws one of the above exception if not valid
+ title = null; // Initialized by subclasses
+ credate = null; // Initialized by subclasses
+ lasdate = null; // Initialized by subclasses
+ docums = new LinkedHashSet<Publication>();
+ contex = new Vector<SimulationContext>();
+
+ folders = null;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public User getAuthor () {
+// ------------------------
+ return manager;
+ }
+
+/**
+ * Returns the creation date of this Project Element.
+ */
+ public Date getDate () {
+// ----------------------
+ return credate;
+ }
+
+ public String getDescription () {
+// -------------------------------
+ String summary = null;
+ DescriptionAttribute field = (DescriptionAttribute)this.getAttribute(DescriptionAttribute.class);
+ if (field != null) summary = field.getValue();
+ return summary; // May be null
+ }
+
+ public Step getFirstStep () {
+// ---------------------------
+ return this.getSteps()[0];
+ }
+
+ public Date getLastModificationDate () {
+// --------------------------------------
+ return lasdate;
+ }
+
+ public Step getLastStep () {
+// --------------------------
+ Step[] mystep = this.getSteps(); // For getting the folders length, if null
+ return mystep[mystep.length-1];
+ }
+
+/**
+ * Returns the publication into this Project Element of the given document version, if exists.
+ * If exists, a document publication id unique in a given ProjectElement.
+ *
+ * @param doc a document version published into this Project Element
+ * @return the publication of the document version, or null if the given document version is not published into this Project Element
+ */
+ public Publication getPublication (Document doc) {
+// ------------------------------------------------
+ int index = doc.getIndex();
+ for (Iterator<Publication> i=docums.iterator(); i.hasNext(); ) {
+ Publication found = i.next();
+ if (found.value().getIndex() == index) return found; // A document publication is unique in a given ProjectElement
+ }
+ return null;
+ }
+
+ public Step[] getSteps () {
+// -------------------------
+ if (folders == null) {
+ List<ProjectSettings.Step> steps = ProjectSettings.getStepsOf(this.getClass());
+ Iterator<ProjectSettings.Step> nstep = steps.iterator();
+
+ folders = new Step[steps.size()];
+ for (int i=0; i<folders.length; i++) {
+ folders[i] = new Step(nstep.next(), this);
+ }
+ }
+ return folders; // No protection against this object corruption as it would not corrupt the database
+ }
+
+ public String getTitle () {
+// -------------------------
+ return title;
+ }
+
+ public boolean publishes (Document doc) {
+// ---------------------------------------
+ int index = doc.getIndex();
+ for (Iterator<Publication> i=docums.iterator(); i.hasNext(); ) {
+ Document found = i.next().value();
+ if (found.getIndex() == index) return true;
+ }
+ return false;
+ }
+
+ public Iterator<Publication> PublicationIterator () {
+// ---------------------------------------------------
+ return Collections.unmodifiableSet(docums).iterator();
+ }
+
+ public Iterator<SimulationContext> SimulationContextIterator () {
+// ---------------------------------------------------------------
+ return Collections.unmodifiableList(contex).iterator();
+ }
+
+// ==============================================================================================================================
+// Protected member functions
+// ==============================================================================================================================
+
+ protected boolean add (Publication newdoc) {
+// ------------------------------------------
+ return docums.add(newdoc);
+ }
+
+ protected boolean add (SimulationContext newdoc) {
+// ------------------------------------------------
+ return contex.add(newdoc);
+ }
+
+ protected boolean remove (Publication oldoc) {
+// --------------------------------------------
+ return docums.remove(oldoc); // The removed tag becoming orphan, it is supposed automatically deleted from the data store
+ }
+
+ protected boolean remove (SimulationContext oldoc) {
+// --------------------------------------------------
+ return contex.remove(oldoc);
+ }
+
+/**
+ * Refreshes the internal data potentially out-of-date.
+ * This function needs to be called when Publication objects are added to this Project Element before being saved. The reason is,
+ * as saving a persistent object changes its hashcode, hashed data need to be rebuilt after saving for making functions based
+ * on this hashcode such as remove(), working.
+ */
+ protected void refresh () {
+// -------------------------
+ Publication[] curdoc = docums.toArray(new Publication[docums.size()]);
+
+ folders = null; // Just in case
+ docums.clear();
+ for (int i=0; i<curdoc.length; i++) docums.add(curdoc[i]);
+// No need to rebuild the list of SimulationContext as it does not use hashcodes
+ Database.getSession().update(this);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.log4j.Logger;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.splat.kernel.XDOM;
+import org.splat.som.ValidationCycle.Actor;
+
+
+public class ProjectSettings {
+
+// Non persistent configuration information
+ private Properties reprop; // Repository settings
+ private String pattern; // Pattern of study references
+ private FileNaming naming; // Scheme of file names stored into the repository
+ private String versioning; // Pattern of the presentation of version numbers
+ private Vector<Step> steps; // Ordered list of (transient) study steps
+ private Vector<ValidationCycle> concycles; // Configuration document validation cycles
+
+// Temporary attributes initialized from the configuration file for populating the database with object types
+ private LinkedHashMap<String,String> mapuse; // Document type names and uses mapping
+ private Vector<String> context; // Simulation Context type names
+ private Vector<String> kname; // Knowledge Element type names
+ private Vector<NamedNodeMap> flows; // Document flows
+ private Vector<NamedNodeMap> sclass; // Study classifications
+
+// Other resources
+ private static ProjectSettings my = null; // Singleton instance
+ protected final static Logger logger = Logger.getLogger(ProjectSettings.class);
+
+ protected enum FileNaming { title, encoded, asis }
+ public static class Step {
+// ------------------------
+ private int number;
+ private Class<? extends ProjectElement> level; // Study or Scenario
+ private Set<Class<?>> contents; // Set of Document and/or Knowledge
+ private String path;
+
+ private Step (int number, Class<? extends ProjectElement> level, String path) {
+ this.initialize(number, level, path);
+ }
+ private Step (int number, Class<? extends ProjectElement> level, Class<?> contents, String path) {
+ this.initialize(number, level, path);
+ this.contents.add(contents);
+ }
+ private void initialize (int number, Class<? extends ProjectElement> level, String path) {
+ this.number = number;
+ this.level = level;
+ this.path = path + "/";
+ this.contents = new HashSet<Class<?>>();
+ }
+ public boolean appliesTo (Class<? extends ProjectElement> level) {
+ return (level == this.level);
+ }
+ public boolean mayContain (Class<?> type) {
+ return contents.contains(type);
+ }
+ public int getNumber () {
+ return number;
+ }
+ public String getPath () {
+ return path;
+ }
+ }
+ public static class ValidationCycle {
+// -----------------------------------
+ private String name;
+ private Actor[] actor;
+
+ private ValidationCycle () {
+ this.name = "built-in";
+ this.actor = new Actor[] { null, null, null };
+ }
+ private ValidationCycle (String name, Actor[] actor) {
+ this.name = name;
+ this.actor = actor;
+ }
+ public String getName () {
+ return name;
+ }
+ public Actor[] getActorTypes () {
+ return actor;
+ }
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public static ProjectSettings getMe () {
+// --------------------------------------
+ if (my == null) my = new ProjectSettings();
+ return my;
+ }
+ protected ProjectSettings () {
+// ----------------------------
+ reprop = new Properties();
+ steps = new Vector<Step>();
+ }
+
+// ==============================================================================================================================
+// Public functions
+// ==============================================================================================================================
+
+ public void configure (String filename) throws IOException, SQLException {
+// ---------------------------------------
+ if (!steps.isEmpty()) return; // Project already configured
+
+ Database base = Database.getMe();
+ File config = new File(filename);
+ if (config.exists()) {
+ loadCustomization(config);
+ } else {
+ logger.fatal("Could not find the database configuration file \"" + config.getAbsolutePath() + "\"");
+ throw new FileNotFoundException();
+ }
+ base.configure(reprop);
+ if (!base.isInitialized()) {
+ base.initialize();
+//TODO: Move the second part of loadCustomization here
+ }
+ }
+
+ public static List<Step> getAllSteps () {
+// ---------------------------------------
+ return my.steps;
+ }
+
+/**
+ * Return the validation cycles of result documents defined in the workflow, ordered by study activities
+ * and ending by the default validation cycle, if defined.
+ *
+ * @return the validation cycles of the workflow
+ */
+ public static List<ValidationCycle> getAllValidationCycles () {
+// -------------------------------------------------------------
+ return my.concycles;
+ }
+
+ public static FileNaming getFileNamingScheme () {
+// -----------------------------------------------
+ return my.naming;
+ }
+
+ public static ValidationCycle getNewValidationCycle () {
+// ------------------------------------------------------
+ return new ValidationCycle();
+ }
+
+ public static String getReferencePattern () {
+// -------------------------------------------
+ return my.pattern;
+ }
+
+ public static String getRevisionPattern () {
+// ------------------------------------------
+ return my.versioning;
+ }
+
+ public static Step getStep (int number) {
+// ---------------------------------------
+ for (int i=0; i<my.steps.size(); i++) {
+ Step step = my.steps.get(i);
+ if (step.number == number) return step;
+ }
+ return null;
+ }
+
+ public static List<Step> getStepsOf (Class<? extends ProjectElement> level) {
+// ---------------------------------------------------------------------------
+ Vector<Step> result = new Vector<Step>();
+
+ for (int i=0; i<my.steps.size(); i++) {
+ Step step = my.steps.get(i);
+ if (step.appliesTo(level)) result.add(step);
+ }
+ return result;
+ }
+
+// ==============================================================================================================================
+// Protected member function
+// ==============================================================================================================================
+
+ protected void initialize () {
+// ----------------------------
+ createDocumentTypes();
+ createSimulationContextTypes();
+ createKnowledgeElementTypes();
+ }
+
+// ==============================================================================================================================
+// Private member function
+// ==============================================================================================================================
+
+ private void loadCustomization (File config) {
+// --------------------------------------------
+ try {
+ DocumentBuilderFactory dfactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dfactory.newDocumentBuilder();
+
+ org.w3c.dom.Document conf = dBuilder.parse(config.getPath());
+ HashMap<String, Node> children = XDOM.getNamedChildNodes(conf.getDocumentElement());
+
+// Repository tag initializing the reprop attribute
+ Node child = children.get("database");
+ HashMap<String, Node> datag = XDOM.getNamedChildNodes(child);
+
+ String disk = datag.get("repository").getAttributes().getNamedItem("disk").getNodeValue();
+ if (!disk.endsWith("/")) disk = disk + "/";
+ logger.info("Database root set to " + disk);
+ reprop.setProperty("repository", disk);
+
+// Formats tag initializing the reference pattern and date attributes
+ child = children.get("formats");
+ datag = XDOM.getNamedChildNodes(child);
+
+ NamedNodeMap natr = datag.get("references").getAttributes();
+ pattern = natr.getNamedItem("study").getNodeValue();
+
+ natr = datag.get("files").getAttributes();
+ naming = FileNaming.valueOf(natr.getNamedItem("name").getNodeValue());
+
+ natr = datag.get("versions").getAttributes();
+ versioning = natr.getNamedItem("pattern").getNodeValue();
+
+// Activities tag initializing the steps and rex attributes
+ child = children.get("activities");
+ NodeList nlist = child.getChildNodes();
+ Vector<NamedNodeMap> flist = new Vector<NamedNodeMap>();
+ Vector<String> resultype = new Vector<String>();
+ Vector<NamedNodeMap> clist = new Vector<NamedNodeMap>();
+
+ int snum = 1; // Base number of steps
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (child.getNodeName().equals("scenario")) {
+ NodeList slist = child.getChildNodes();
+ for (int j=0; j<slist.getLength(); j++) {
+ child = slist.item(j);
+ if (!child.getNodeName().equals("step")) continue;
+ HashMap<String, Node> tags = XDOM.getNamedChildNodes(child);
+
+ natr = tags.get("storage").getAttributes();
+ Step step = new Step(snum, Scenario.class, natr.getNamedItem("path").getNodeValue());
+
+// Keeping flow and classification information for eventual later use
+ natr = tags.get("flow").getAttributes();
+ flist.add(natr);
+ child = natr.getNamedItem("result");
+ if (child != null) resultype.add(child.getNodeValue());
+
+ child = tags.get("classification");
+ if (child != null) clist.add( child.getAttributes() );
+ else clist.add( null );
+
+ if (natr.getNamedItem("contents").getNodeValue().equals("knowledge")) {
+//TODO In a given scenario, only one step must contain knowledges
+ step.contents.add(KnowledgeElement.class);
+ } else {
+ step.contents.add(Document.class);
+ }
+ steps.add(step);
+ snum += 1;
+ }
+ } else {
+ if (!child.getNodeName().equals("step")) continue;
+ HashMap<String, Node> tags = XDOM.getNamedChildNodes(child);
+
+ natr = tags.get("storage").getAttributes(); // Mandatory information
+ Step step = new Step(snum, Study.class, natr.getNamedItem("path").getNodeValue());
+
+// Keeping flow and classification information for eventual later use
+ natr = tags.get("flow").getAttributes();
+ flist.add(natr);
+ child = natr.getNamedItem("result");
+ if (child != null) resultype.add(child.getNodeValue());
+
+ child = tags.get("classification"); // Optional information
+ if (child != null) clist.add( child.getAttributes() );
+ else clist.add( null );
+
+ if (natr.getNamedItem("contents").getNodeValue().equals("knowledge")) {
+//TODO Error: knowledges must be attached to scenarios
+ } else {
+ step.contents.add(Document.class);
+ }
+ steps.add(step);
+ snum += 1;
+ }
+ }
+// Validations tag
+ child = children.get("validations");
+ concycles = new Vector<ValidationCycle>();
+ datag = XDOM.getNamedChildNodes(child);
+
+ String[] step = { "review", "approval", "acceptance" };
+ resultype.add("default");
+ for (Iterator<String> i=resultype.iterator(); i.hasNext(); ) {
+ Actor[] actor = { null, null, null };
+ String name = i.next();
+ child = datag.get(name);
+ if (child == null) continue; // Document type not subject of any validation
+ natr = child.getAttributes();
+ for (int j=0; j<step.length; j++) {
+ child = natr.getNamedItem(step[j]);
+ if (child == null) continue; // Validation step not required
+ actor[j] = Actor.valueOf(child.getNodeValue());
+ }
+ concycles.add( new ValidationCycle(name, actor) );
+ }
+ concycles.add( new ValidationCycle() ); // Adds the built-in validation cycle
+
+ if (Database.getMe().isInitialized()) return; // No need to load object type definitions as they are already stored
+
+// Documents tag
+ child = children.get("documents");
+ nlist = child.getChildNodes();
+
+ flows = flist; // Kept for later use in document type definition
+ sclass = clist; // Kept for later use in simulation context type definition
+ mapuse = new LinkedHashMap<String,String>();
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (!child.getNodeName().equals("article")) continue;
+
+ natr = child.getAttributes();
+ String type = natr.getNamedItem("type").getNodeValue();
+ String uses = null;
+ child = natr.getNamedItem("uses");
+ if (child != null) uses = child.getNodeValue();
+ mapuse.put(type, uses); // Must be added to the map even if no (null) uses
+ }
+// Simulation Contexts tag
+ child = children.get("contexts");
+ nlist = child.getChildNodes();
+
+ context = new Vector<String>();
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (!child.getNodeName().equals("article")) continue;
+
+ context.add(child.getAttributes().getNamedItem("type").getNodeValue());
+ }
+// Knowledge Elements tag
+ child = children.get("knowledges");
+ nlist = child.getChildNodes();
+
+ kname = new Vector<String>();
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (!child.getNodeName().equals("article")) continue;
+
+ kname.add(child.getAttributes().getNamedItem("type").getNodeValue());
+ }
+ }
+ catch (Exception error) {
+ logger.info("Error in customization", error);
+ }
+ }
+
+ private void createDocumentTypes () {
+// -----------------------------------
+ DocumentType.Properties tprop = new DocumentType.Properties();
+ HashMap<String,Vector<Step>> mapsteps = new HashMap<String,Vector<Step>>();
+ HashMap<String,Step> mapresult = new HashMap<String,Step>();
+ HashMap<String,DocumentType> maptype = new HashMap<String,DocumentType>();
+
+ Vector<Step> slist = null; // List of Steps to which each document type is valid
+ int snum = 0; // Step number
+ String type = null;
+ String uses = null;
+ for (Iterator<NamedNodeMap> i=flows.iterator(); i.hasNext(); snum++) {
+ NamedNodeMap flow = i.next();
+ Step step = steps.get(snum);
+ String[] contents = flow.getNamedItem("contents").getNodeValue().split(",");
+ for (int j=0; j<contents.length; j++) {
+ type = contents[j];
+ if (!mapuse.containsKey(type)) {
+ logger.warn("Undefined \"" + type + "\" document type.");
+ continue;
+ } slist = mapsteps.get(type);
+ if (slist == null) slist = new Vector<Step>();
+ slist.add(step);
+ mapsteps.put(type, slist);
+ }
+ Node result = flow.getNamedItem("result");
+ if (result != null) mapresult.put(result.getNodeValue(), step);
+ }
+ try {
+ DocumentType tdoc = null;
+ Set<String> tset = mapuse.keySet();
+ Step step;
+ for (Iterator<String> i=tset.iterator(); i.hasNext(); ) {
+ type = i.next();
+ slist = mapsteps.get(type);
+ uses = mapuse.get(type);
+ step = mapresult.get(type);
+
+ tprop.clear();
+ tprop.setName(type).setStep(slist.toArray(new Step[slist.size()]));
+ if (uses != null) {
+ tdoc = maptype.get(uses);
+ if (tdoc == null) logger.warn("Undefined \"" + uses + "\" document type.");
+ else tprop.setUses(tdoc);
+ }
+ if (step != null) tprop.setResult(step);
+
+ tprop.disableCheck();
+ tdoc = Document.createType(tprop); // Creation of Document Types
+ tdoc.approve();
+ maptype.put(type, tdoc);
+ }
+ } catch (Exception error) {
+ logger.warn("Error creating document types, reason:", error); // Should not happen
+ }
+ }
+
+ private void createKnowledgeElementTypes () {
+// -------------------------------------------
+ try {
+ KnowledgeElementType ktype = KnowledgeElement.createType("usecase"); // Internal reserved knowledge element type
+ ktype.reserve();
+ for (Iterator<String> i=kname.iterator(); i.hasNext(); ) {
+ String type = i.next();
+
+ ktype = KnowledgeElement.createType(type); // Knowledge Elements Types defined in the configuration
+ ktype.approve();
+ }
+ } catch (Exception error) {
+ logger.warn("Error creating knowledge types, reason:", error); // Should not happen
+ }
+ }
+
+ private void createSimulationContextTypes () {
+// --------------------------------------------
+ HashMap<String,Step> mapstep = new HashMap<String,Step>();
+ int snum = 0;
+ for (Iterator<NamedNodeMap> i=sclass.iterator(); i.hasNext(); snum++) {
+ NamedNodeMap clatr = i.next();
+ if (clatr == null) continue;
+
+ String[] clist = clatr.getNamedItem("context").getNodeValue().split(",");
+ for (int j=0; j<clist.length; j++) {
+ mapstep.put(clist[j], steps.get(snum));
+ }
+ }
+ try {
+ SimulationContextType tctex = null;
+ for (Iterator<String> i=context.iterator(); i.hasNext(); ) {
+ String type = i.next();
+ if (!mapstep.containsKey(type)) {
+ logger.warn("Could not find \"" + type + "\" classification. Simulation Context type ignored.");
+ continue;
+ }
+ tctex = SimulationContext.createType(type, mapstep.get(type)); // Creation of Simulation Context Types
+ tctex.approve();
+ }
+ } catch (Exception error) {
+ logger.warn("Error creating context types, reason:", error); // Should not happen
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Stand proxy for entities such as Study and Knowledge Element returned by Lucene-based searches.
+ * This interface provides access to properties of searched entities which can be presented in a result search list
+ * before loading the corresponding persistent objects from the database (reason for most properties to be returned as
+ * strings).
+ * One of these properties is the internal persistent identifier of the object represented by a proxy allowing the
+ * user of this interface to load the object from the database.
+ *
+ * @see Database#selectStudiesWhere(Study.Properties...)
+ * @see Database#selectKnowledgeElementsWhere(KnowledgeElement.Properties)
+ * @see Database#selectStudy(int)
+ * @see Database#selectKnowledgeElement(int)
+ * @see Index
+ * @see Index.ObjectProxy
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public interface Proxy {
+
+ public String getAuthorName ();
+
+/**
+ * Returns the internal persistent identifier of the object represented by this proxy. The returned identifier can be used
+ * for selecting the corresponding persistent object from the database.
+ * @return the internal persistent identifier of the object represented by this proxy.
+ */
+ public Integer getIndex ();
+
+ public ProgressState getProgressState ();
+
+/**
+ * Returns the external reference number of the object represented by this proxy. The returned reference is formated
+ * according to the format defined in the configuration file of the application.
+ * @return the external reference number of the object represented by this proxy.
+ */
+ public String getReference ();
+
+ public String getTitle ();
+
+/**
+ * Returns the type of the object represented by this proxy. Depending on the implementation, the returned type may or
+ * may not be localized in the current locale of final user.
+ * @return the type of the object represented by this proxy.
+ */
+ public String getType ();
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.Publication" table="doctag" lazy="false">
+
+<!-- Properties inherited Persistent
+ -->
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+<!-- Publication properties
+ -->
+ <!-- Document mydoc -->
+ <many-to-one name="mydoc" column="doc" access="field" not-null="true" />
+
+ <!-- ProjectElement owner -->
+ <many-to-one name="owner" column="owner" access="field" not-null="true" />
+
+ <!-- char isnew -->
+ <property name="isnew" column="isnew" access="field" not-null="true" />
+
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Publication objects are the way to reference document versions from a Project Element.
+ * As such, a Document version is added (or published) to a Project Element through a Publication object.
+ * This publication is done by saving the Publication object produced when creating and versioning a Document from a given
+ * Project Element Step (call of the saveAs() function).<br/>
+ * <br/>
+ * A Publication object is homogeneous to a reference to a Document version and belongs to one Project Element, this latter
+ * being either a Study Scenario or a Study itself, depending on the Study Step to which the document is published.<br/>
+ * <br/>
+ * The document version referenced by a Publication object is the Value of the publication.
+ *
+ * @see Document
+ * @see ProjectElement
+ * @see Step
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.hibernate.Session;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.NotApplicableException;
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+import org.splat.kernel.User;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
+
+
+public class Publication extends Persistent {
+
+// Persistent fields
+ private Document mydoc;
+ private ProjectElement owner; // Either Study or Scenario, depending on the step involved by the publication
+ private char isnew; // True if this references a document version new for the owner project element
+
+// Transient fields
+ private Step mystep;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected Publication () {
+// ------------------------
+ mystep = null;
+ }
+// Internal constructors
+ protected Publication (Document doc, ProjectElement publisher) {
+// --------------------------------------------------------------
+ mydoc = doc;
+ mystep = null;
+ owner = publisher;
+ isnew = 'Y';
+ }
+ protected Publication copy (ProjectElement publisher) {
+// -----------------------------------------------------
+ Publication copy = new Publication();
+ copy.mydoc = this.mydoc;
+ copy.mystep = this.mystep; // May not be initialized yet
+ copy.owner = publisher;
+ copy.isnew = this.isnew;
+ if (!copy.getOwnerStudy().equals(this.getOwnerStudy())) {
+ copy.isnew = 'N'; // The referenced document is not new for the given study
+ }
+ return copy;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public Relation addDependency (Publication to) {
+// ----------------------------------------------
+ return this.addDependency(to.value());
+ }
+
+ public Relation addDependency (Document to) {
+// -------------------------------------------
+ if (to == null) return null;
+ else return mydoc.addRelation( new UsesRelation(mydoc, to) );
+ }
+
+/**
+ * Undo the out-date operation.
+ *
+ * @return true if the acceptance succeeds
+ * @see #outdate()
+ * @see DocumentRights#canAccept()
+ */
+ public boolean actualize () {
+// ---------------------------
+ if (!this.isOutdated()) return false;
+ isnew = 'Y';
+ Database.getSession().update(this);
+ return true;
+ }
+
+/**
+ * Promotes the document referenced by this publication from In-Check to Approved state, if not out-dated, and attaches the corresponding
+ * time-stamp to the document.</br>
+ * If the promoted document is the final result of the owner study, the study is itself is promoted as well.</br>
+ * </br>
+ * Limitation: the way this promotion is propagated to the study supposes that the study has only ONE final result document.
+ *
+ * @param adate the date of approval
+ * @return true if the approval succeeded
+ * @see #getProgressState()
+ * @see DocumentRights#canApprove()
+ * @see DocumentType#isStudyResult()
+ * @see Study#getApproverOf(Publication)
+ */
+ public Timestamp approve (Date adate) {
+// -------------------------------------
+ if (this.isOutdated()) return null;
+ else if (mydoc.getProgressState() != ProgressState.inCHECK) return null; // This statement must conform to the corresponding right
+
+ DocumentType type = mydoc.getType();
+ Study owner = this.getOwnerStudy();
+ ValidationCycle cycle = owner.getValidationCycleOf(type);
+ User approver = cycle.getActor(ValidationStep.APPROVAL);
+ Timestamp stamp = new Timestamp(ValidationStep.APPROVAL, mydoc, approver, adate);
+ if (!mydoc.promote(stamp)) return null;
+ if (type.isStudyResult() && owner.getProgressState() == ProgressState.inCHECK) owner.promote();
+ return stamp; // Hoping that promotion of the study succeeded
+ }
+
+ public ConvertsRelation attach (String format) {
+// ----------------------------------------------
+ return mydoc.attach(format);
+ }
+
+ public ConvertsRelation attach (String format, String description) {
+// ------------------------------------------------------------------
+ return mydoc.attach(format, description);
+ }
+
+/**
+ * Demotes the document referenced by this publication to In-Work state, and removes the Promoter of the document, if exist.</br>
+ * The In-Draft state is skipped (direct demotion to In-Work) if the validation cycle of the document does not include the review step.</br>
+ * If the demoted document is the final result of the owner study, the study is itself is demoted as well.</br>
+ * </br>
+ * Limitation: the way this demotion is propagated to the study supposes that the study has only ONE final result document.
+ *
+ * @return true if the demotion succeeded
+ * @see #getProgressState()
+ * @see DocumentRights#canDemote()
+ * @see DocumentType#isStudyResult()
+ */
+ public boolean demote () {
+// ------------------------
+ DocumentType type = mydoc.getType();
+ Study owner = this.getOwnerStudy();
+
+ if (mydoc.getProgressState() == ProgressState.inCHECK) {
+ ValidationCycle cycle = owner.getValidationCycleOf(type);
+ if (cycle.enables(ValidationStep.REVIEW)) {
+ if (!mydoc.demote()) return false;
+ } else {
+ if (!mydoc.demote()) return false;
+ mydoc.demote();
+ }
+ } else
+ if (mydoc.getProgressState() == ProgressState.inDRAFT) {
+ if (!mydoc.demote()) return false;
+ } else {
+ return false;
+ }
+ if (type.isStudyResult() && owner.getProgressState() != ProgressState.inWORK) owner.demote();
+ return true;
+ }
+
+/**
+ * Returns the study Step into which the document version referenced by this publication has been published.
+ */
+ public Step getInvolvedStep () {
+// ------------------------------
+ if (mystep == null) {
+ Step[] step = owner.getSteps();
+ for (int i=0; i<step.length; i++) {
+ mystep = step[i]; // The involved step necessarily exists
+ if (mydoc.isInto(mystep)) break;
+ }
+ }
+ return mystep;
+ }
+
+/**
+ * Returns either the Study Scenario or the Study itself to which this publication belongs, depending on the Study Step into
+ * which the referenced document has been published.<br/>
+ * If this publication belongs to a Study, the Project Element returned is the Study returned by getOwnerStudy().
+ *
+ * @return the Study Scenario or the Study to which this publication belongs to
+ * @see #getOwnerStudy()
+ */
+ public ProjectElement getOwner () {
+// ---------------------------------
+ return owner;
+ }
+
+ public Study getOwnerStudy () {
+// -----------------------------
+ if (owner instanceof Study) return (Study)owner;
+ else return ((Scenario)owner).getOwnerStudy();
+ }
+
+/**
+ * Returns the state of this published document.
+ * It is the same than the state of the referenced document, unless this publication is out-of-date, in which case it is
+ * In-Work state.
+ *
+ * @see #outdate()
+ * @see #isOutdated()
+ */
+ public ProgressState getProgressState () {
+// ----------------------------------------
+ if (this.isOutdated()) return ProgressState.inWORK; // Overrides the document state
+ else return mydoc.getProgressState();
+ }
+
+ public List<Publication> getRelations (Class<? extends Relation> type) {
+// ----------------------------------------------------------------------
+ if (type == null) return null;
+
+ List<Publication> result = new ArrayList<Publication>();
+ List<Relation> relist = mydoc.getRelations(type);
+ for (Iterator<Relation> i=relist.iterator(); i.hasNext();) {
+ Relation relation = i.next();
+ Document relatedoc = (Document)relation.getTo();
+ Publication related = owner.getPublication(relatedoc);
+ if (related != null) {
+ result.add(related);
+ } else
+ if (owner instanceof Scenario) { // The relation may cross steps belonging to a scenario and its owner study
+ related = ((Scenario)owner).getOwnerStudy().getPublication(relatedoc);
+ if (related != null) result.add(related);
+ }
+ }
+ return result;
+ }
+
+ public File getSourceFile () {
+// ----------------------------
+ return mydoc.getSourceFile();
+ }
+
+/**
+ * Undo the review operation by demoting the document referenced by this publication from In-Check to In-Draft state and
+ * removing the Reviewer.</br>
+ * If the demoted document is the final result of the owner study, the study is itself is demoted as well.</br>
+ * </br>
+ * Limitation: the way this demotion is propagated to the study supposes that the study has only ONE final result document.
+ *
+ * @return true if the demotion succeeded
+ * @see #getProgressState()
+ * @see #review()
+ * @see DocumentRights#canInvalidate()
+ * @see DocumentType#isStudyResult()
+ */
+ public boolean invalidate () {
+// ----------------------------
+ if ( mydoc.getProgressState() != ProgressState.inCHECK ) return false;
+ if (!mydoc.demote()) // Removes the reviewer if this document is In-Check
+ return false;
+ DocumentType type = this.value().getType();
+ Study owner = this.getOwnerStudy();
+ if (type.isStudyResult() && owner.getProgressState() == ProgressState.inCHECK) owner.demote();
+ return true;
+ }
+
+ public boolean isNewForOwner () {
+// -------------------------------
+ return (isnew == 'Y');
+ }
+
+ public boolean isOutdated () {
+// ----------------------------
+ return (isnew == 'O');
+ }
+
+/**
+ * Promotes the document referenced by this publication from In-Work to In-Draft or In-Check state, if not out-dated, and attaches the corresponding
+ * time-stamp to the document.</br>
+ * The In-Draft state is skipped (direct promotion to In-Check) if the validation cycle of the document does not include the review step.</br>
+ * Also, if the promoted document is the final result of the owner study, the study is itself promoted as well.</br>
+ * This operation can be undo-ed by demote().</br>
+ * </br>
+ * Limitation: the way this promotion is propagated to the study supposes that the study has only ONE final result document.
+ *
+ * @return true if the promotion succeeded
+ * @see #getProgressState()
+ * @see #demote()
+ * @see DocumentRights#canPromote()
+ * @see DocumentType#isStudyResult()
+ */
+ public Timestamp promote (Date pdate) {
+// -------------------------------------
+ if (this.isOutdated()) return null;
+ else if (mydoc.getProgressState() != ProgressState.inWORK) return null; // This statement must conform to the corresponding right
+ else {
+ DocumentType type = mydoc.getType();
+ Study owner = this.getOwnerStudy();
+ ValidationCycle cycle = owner.getValidationCycleOf(type);
+ User promoter = cycle.getActor(ValidationStep.PROMOTION);
+ if (promoter == null) promoter = getInvolvedStep().getActor();
+ if (promoter == null) promoter = owner.getAuthor();
+ Timestamp stamp = new Timestamp(ValidationStep.PROMOTION, mydoc, promoter, pdate);
+
+ if (!mydoc.promote(stamp) ) // Promotion to being reviewed
+ return null;
+ if (!cycle.enables(ValidationStep.REVIEW)) {
+ mydoc.promote(null);
+ }
+ if (type.isStudyResult() && owner.getProgressState() == ProgressState.inWORK) owner.promote();
+ return stamp; // Hoping that promotion of the study succeeded
+ }
+ }
+
+ public void rename (String title) throws InvalidPropertyException {
+// ---------------------------------
+ mydoc.rename(title);
+ }
+
+/**
+ * Promotes the document referenced by this publication from In-Draft to In-Check state, if not out-dated, and attaches the corresponding
+ * time-stamp to the document.</br>
+ * If the promoted document is the final result of the owner study, the study is itself is promoted as well.</br>
+ * This operation can be undo-ed by invalidate().</br>
+ * </br>
+ * Limitation: the way this promotion is propagated to the study supposes that the study has only ONE final result document.
+ *
+ * @param rdate the date of review
+ * @return true if the review succeeded
+ * @see #getProgressState()
+ * @see #invalidate()
+ * @see DocumentRights#canReview()
+ * @see DocumentType#isStudyResult()
+ * @see Study#getReviewerOf(Publication)
+ */
+ public Timestamp review (Date rdate) {
+// ------------------------------------
+ if (this.isOutdated()) return null;
+ else if (mydoc.getProgressState() != ProgressState.inDRAFT) return null; // This statement must conform to the corresponding right
+
+ DocumentType type = mydoc.getType();
+ Study owner = this.getOwnerStudy();
+ ValidationCycle cycle = owner.getValidationCycleOf(type);
+ User reviewer = cycle.getActor(ValidationStep.REVIEW);
+ Timestamp stamp = new Timestamp(ValidationStep.REVIEW, mydoc, reviewer, rdate);
+ if (!mydoc.promote(stamp)) return null;
+ if (type.isStudyResult() && owner.getProgressState() == ProgressState.inDRAFT) owner.promote();
+ return stamp; // Hoping that promotion of the study succeeded
+ }
+
+/**
+ * Publishes the document referenced by this publication into the owner Project Element under the given revision number.<br/>
+ * The state of the referenced document is supposed being automatically set according to the given revision number, but, due to the
+ * versioning scheme, as it is not possible to differentiate In-Work and In-Draft states, this function has been deprecated (it is
+ * currently used only for the need of integration of Microsoft Office which anyway has to be redesigned).
+ * <br/>
+ * Note: in the context of branch versioning, the given revision may be modified by an update of the branch name.
+ *
+ * @param newvers the required revision number
+ * @throws FileNotFoundException If the referenced document is empty
+ * @throws NotApplicableException If the referenced document is undefined
+ * @deprecated
+ */
+ public void saveAs (Revision newvers) throws FileNotFoundException, NotApplicableException {
+// -------------------------------------
+ if ( mydoc.isUndefined() ) throw new NotApplicableException("Cannot save a Publication object refering an undefined Document");
+ if (!mydoc.getSourceFile().exists()) throw new FileNotFoundException();
+
+ Database.getSession().save(this); // Must be done before updating the study in order to fix this final (rid-based) hascode
+ mydoc.updateAs(newvers); // May change the branch name of given revision
+ updateOwner();
+ }
+
+/**
+ * Publishes the document referenced by this publication into the owner Project Element under the given state,
+ * the revision number of the document being automatically set accordingly.
+ * If the given state is In-Draft and the document is final result of the owner study, this automatically promotes the study to In-Draft.
+ *
+ * @param state the required progress state
+ * @throws FileNotFoundException If the referenced document is empty
+ * @throws NotApplicableException If the referenced document is undefined
+ */
+ public void saveAs (ProgressState state) throws FileNotFoundException, NotApplicableException {
+// ----------------------------------------
+ if ( mydoc.isUndefined() ) throw new NotApplicableException("Cannot save a Publication object refering an undefined Document");
+ if (!mydoc.getSourceFile().exists()) throw new FileNotFoundException();
+
+ if (state == ProgressState.inWORK || state == ProgressState.EXTERN) {
+ Database.getSession().save(this); // Must be done before updating the study in order to fix this final (rid-based) hascode
+ mydoc.updateAs(state);
+ } else {
+ DocumentType mytype = mydoc.getType();
+ Study owner = this.getOwnerStudy();
+ ValidationCycle cycle = owner.getValidationCycleOf(mytype);
+ boolean review = cycle.enables(ValidationStep.REVIEW);
+ if (!(state == ProgressState.inDRAFT && review) && !(state == ProgressState.inCHECK && !review)) {
+ throw new NotApplicableException("Cannot save a result document in " + state.toString() + " state");
+ }
+ Database.getSession().save(this); // Must be done before updating the study in order to fix this final (rid-based) hascode
+ mydoc.updateAs(ProgressState.inWORK);
+
+ this.promote(mydoc.getLastModificationDate()); // Promotes to the appropriate state in accordance to the validation cycle
+ }
+ updateOwner();
+ }
+
+/**
+ * Out-dates this publication and recursively all publications using this one.
+ * Typically, a publication is out-dated when modifying a document to which it depends.
+ *
+ * @see #isOutdated()
+ * @see #getProgressState()
+ * @see #actualize()
+ */
+ public void outdate () {
+// ----------------------
+ if (this.isOutdated()) return;
+
+ List<Publication> relist = this.getRelations(UsedByRelation.class);
+ for (Iterator<Publication> i = relist.iterator(); i.hasNext(); ) {
+ i.next().outdate();
+ }
+ isnew = 'O';
+ Database.getSession().update(this);
+ }
+
+/**
+ * Returns the document version referenced by this Publication.
+ */
+ public Document value () {
+// ------------------------
+ return mydoc;
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private void updateOwner () {
+// ---------------------------
+ Session session = Database.getSession();
+ Step step = this.getInvolvedStep();
+
+// Update of involved step
+ Document previous = mydoc.getPreviousVersion();
+ if (previous != null) {
+ Publication oldoc = step.getDocument(previous.getIndex());
+ boolean done = step.remove(oldoc); // Decrements the configuration tag count of document
+ if (done) session.delete(oldoc); //WARNING: Potential problem because it's not automatically done as orphan object
+ }
+ step.add(this); // Increments the configuration tag count of document
+
+// Import the document properties and update of the study
+ forwardProperties(mydoc.getSourceFile().asFile(), step);
+ session.update(getOwner());
+ }
+
+ private void forwardProperties (java.io.File from, Step to) {
+// -----------------------------------------------------------
+ Reader tool = Toolbox.getReader(from);
+ if (tool == null) return; // No properties extractor available for this type of document
+
+ SimulationContextType.Properties sprop = new SimulationContextType.Properties()
+ .setStep(to.getStep())
+ .setState(ProgressState.APPROVED);
+ List<SimulationContextType> contype = SimulationContext.selectTypesWhere(sprop);
+ if (contype.isEmpty()) return; // No approved property type configured at this step
+
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ List<SimulationContext> context = to.getAllSimulationContexts();
+
+ context = new ArrayList<SimulationContext>(context.size());
+ context.addAll(to.getAllSimulationContexts());
+ cprop.disableCheck();
+ for (Iterator<SimulationContextType> i=contype.iterator(); i.hasNext(); ) {
+ SimulationContextType property = i.next();
+ for (Iterator<SimulationContext> j=context.iterator(); j.hasNext(); ) {
+ SimulationContext existing = j.next();
+ if (!existing.getType().equals(property)) continue;
+ property = null; // Forget this property as it is already set
+ break;
+ }
+ if (property != null) try {
+ String value = tool.extractProperty(property.getName());
+ if (value == null) continue; // Property not defined into the document
+
+ cprop.setType(property).setValue(value);
+ if (owner instanceof Study) ((Study)owner).addProjectContext(cprop); // Re-indexes knowledges and the study
+ else to.addSimulationContext(cprop); // Re-indexes knowledges only
+ } catch (Exception e) {
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ - Mapping of the Relation class hierarchy.
+ - The entire hierarchy is mapped to one single table using a String discriminator.
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+<!-- Uses relation
+ -->
+ <subclass name="org.splat.som.UsesRelation" extends="org.splat.kernel.Relation" discriminator-value="uses">
+ <many-to-one name="refer" column="refer" access="field" not-null="true" />
+ </subclass>
+
+<!-- UsedBy relation
+ -->
+ <subclass name="org.splat.som.UsedByRelation" extends="org.splat.kernel.Relation" discriminator-value="usedby">
+ <many-to-one name="refer" column="refer" access="field" not-null="true" />
+ </subclass>
+
+<!-- Versions relation
+ -->
+ <subclass name="org.splat.som.VersionsRelation" extends="org.splat.kernel.Relation" discriminator-value="versions">
+ <many-to-one name="refer" column="refer" access="field" not-null="true" />
+ </subclass>
+
+<!-- Converts relation
+ -->
+ <subclass name="org.splat.som.ConvertsRelation" extends="org.splat.kernel.Relation" discriminator-value="converts">
+ <many-to-one name="refer" column="refer" access="field" not-null="true" />
+ </subclass>
+
+<!-- Contributor actor relation
+ -->
+ <subclass name="org.splat.som.ContributorRelation" extends="org.splat.kernel.Relation" discriminator-value="contributor">
+ <many-to-one name="refer" column="refer" access="field" not-null="true" />
+ </subclass>
+
+<!-- ValidationCycle relation
+ -->
+ <subclass name="org.splat.som.ValidationCycleRelation" extends="org.splat.kernel.Relation" discriminator-value="cycle">
+ <many-to-one name="refer" column="refer" unique="true" cascade="all-delete-orphan" access="field" not-null="true" />
+ </subclass>
+
+<!-- Stamp relation
+ -->
+ <subclass name="org.splat.som.StampRelation" extends="org.splat.kernel.Relation" discriminator-value="stamp">
+ <many-to-one name="refer" column="refer" unique="true" cascade="all-delete-orphan" access="field" not-null="true" />
+ </subclass>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class providing operations on version numbers such as incrementation and comparison.
+ * Revision objects are created from and converted to strings in the internal format of version numbers (major.minor.branch).<br/>
+ * Revision objects can also be created from and converted to strings in user-defined format, thanks to a formating tool
+ * provided by the Format nested class.
+ *
+ * @see Revision.Format
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.nio.CharBuffer;
+import java.text.ParseException;
+
+
+public class Revision {
+
+ private int major;
+ private int minor;
+ private int branch;
+
+ public static class Format {
+// --------------------------
+ private String pattern;
+
+ public Format (String pattern) {
+ this.pattern = pattern;
+ }
+
+ public String format (String verstring) {
+ CharBuffer version = CharBuffer.allocate(pattern.length() + 2*2); // Maximum possible size
+ char[] format = pattern.toCharArray();
+ String[] vernum = verstring.split("\\x2E"); // version is suposed of the internal form (m.n.s)
+ int branch = Integer.valueOf(vernum[2]);
+
+ for (int i=0; i<format.length; i++) {
+ char token = format[i];
+ if (token == '%') {
+ i += 1;
+ token = format[i];
+ if (token == 'M') {
+ version.put(vernum[0]);
+ } else if (token == 'm') {
+ version.put(vernum[1]);
+ } else if (token == 's') {
+ version.put(vernum[2]);
+ }
+ } else if (token == '[') {
+ if (branch == 0) while (format[i] != ']') i += 1;
+ } else if (token == ']') {
+ continue;
+ } else {
+ version.put(token);
+ }
+ }
+ return new String(version.array(), 0, version.position());
+ }
+
+ public Revision parse (String verstring) throws ParseException {
+ char[] format = pattern.toCharArray();
+ char[] version = verstring.toCharArray();
+ CharBuffer major = CharBuffer.allocate(4);
+ CharBuffer minor = CharBuffer.allocate(4);
+ CharBuffer branch = CharBuffer.allocate(4);
+
+ int cursor = 0; // Index into version array
+ for (int i=0; i<format.length; i++) { // The parsed string may not include the branch ID
+ char token = format[i];
+ if (token == '%') {
+ i += 1;
+ token = format[i];
+ if (token == 'M') {
+ while (cursor < version.length) {
+ if (!Character.isDigit(version[cursor])) break;
+ major.put(version[cursor]);
+ cursor += 1;
+ }
+ } else if (token == 'm') {
+ while (cursor < version.length) {
+ if (!Character.isDigit(version[cursor])) break;
+ minor.put(version[cursor]);
+ cursor += 1;
+ }
+ } else if (token == 's') {
+ while (cursor < version.length) {
+ if (!Character.isDigit(version[cursor])) break;
+ branch.put(version[cursor]);
+ cursor += 1;
+ }
+ }
+ } else if (token == '[' || token == ']') {
+ continue;
+ } else {
+ if (version[cursor] != token) throw new ParseException(verstring, cursor);
+ cursor += 1;
+ }
+ if (cursor >= version.length) break;
+ }
+ if (major.position() == 0) throw new ParseException(verstring, 0);
+
+ String majnum = new String(major.array(), 0, major.position());
+ if (minor.position() == 0) {
+ return new Revision(Integer.valueOf(majnum), 0);
+ } else {
+ String minum = new String(minor.array(), 0, minor.position());
+ if (branch.position() == 0) {
+ return new Revision(Integer.valueOf(majnum), Integer.valueOf(minum));
+ } else {
+ String branum = new String(branch.array(), 0, branch.position());
+ return new Revision(Integer.valueOf(majnum), Integer.valueOf(minum), branum);
+ }
+ }
+ }
+
+ public String toPattern () {
+ return pattern;
+ }
+ }
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+/**
+ * Constructs a Revision object from the internal representation of a version number (m.n.s).
+ */
+ public Revision (String value) {
+// ------------------------------
+ String[] vernum = value.split("\\x2E");
+ try {
+ this.major = Integer.valueOf(vernum[0]);
+ this.minor = Integer.valueOf(vernum[1]);
+ this.branch = Integer.valueOf(vernum[2]);
+ }
+ catch (Exception e) { // NumberFormat or OutOfBound exception if value is not of the form m.n.s
+ this.major = 0;
+ this.minor = 0;
+ this.branch = 0;
+ }
+ }
+ public Revision () {
+// ------------------
+ this.major = 0;
+ this.minor = 0;
+ this.branch = 0;
+ }
+ private Revision (int major, int minor) {
+// ---------------------------------------
+ this.major = major;
+ this.minor = minor;
+ this.branch = 0;
+ }
+ private Revision (int major, int minor, String branch) {
+// ------------------------------------------------------
+ this.major = major;
+ this.minor = minor;
+ this.branch = Integer.valueOf(branch);
+ }
+
+// ==============================================================================================================================
+// Public member function
+// ==============================================================================================================================
+
+ public Revision incrementAs (ProgressState state) {
+// -------------------------------------------------
+ if (state == ProgressState.inWORK || state == ProgressState.inDRAFT) minor += 1;
+ else if (state == ProgressState.inCHECK) {
+ major = major + 1;
+ minor = 0;
+ }
+ return this;
+ }
+
+ public boolean isGraterThan (Revision base) {
+// ------------------------------------------
+ if (this.major > base.major) return true;
+ if (this.major < base.major) return false;
+ return (this.minor > base.minor);
+ }
+
+ public boolean isMinor () {
+// -------------------------
+ return (minor != 0);
+ }
+
+ public boolean isNull () {
+// ------------------------
+ return (major+minor == 0);
+ }
+/**
+ * Sets the branch name of this revision.
+ *
+ * @param name the branch name or the internal representation of a version number (m.n.s)
+ * @return this revision object
+ */
+ public Revision setBranch (String name) {
+// ---------------------------------------
+ String[] vernum = name.split("\\x2E");
+
+ branch = Integer.valueOf(vernum[vernum.length-1]);
+ return this;
+ }
+/**
+ * Returns the internal representation of a version number (m.n.s) represented by this Revision object.
+ */
+ public String toString () {
+// -------------------------
+ StringBuffer version = new StringBuffer();
+ return version.append(major).append(".").append(minor).append(".").append(branch).toString();
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <union-subclass name="org.splat.som.Scenario" extends="org.splat.som.ProjectElement" table="scenario" lazy="false">
+
+ <!-- Study owner -->
+ <many-to-one name="owner" column="owner" insert="false" update="false" access="field" not-null="true" />
+
+ <!-- int sid -->
+ <property name="sid" column="sid" access="field" not-null="true" />
+
+ <!-- User cuser -->
+ <many-to-one name="cuser" column="cuser" access="field" />
+
+ <!-- Set<KnowledgeElement> kelms -->
+ <set name="kelms" inverse="true" lazy="false" order-by="`type`,`date` asc" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.som.KnowledgeElement" />
+ </set>
+
+ </union-subclass>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Vector;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.Persistent;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.User;
+
+
+public class Scenario extends ProjectElement {
+
+// Persistent fields
+ private Study owner;
+ private int sid; // Identifier unique in the scope of owner study
+ private User cuser; // User having checked-out the scenario, if done
+ private Set<KnowledgeElement> kelms;
+
+// Transient fields
+ private HashMap<Integer, List<KnowledgeElement>> known;
+ private List<KnowledgeElement> knowl; // Copy of kelms excluding the internal Knowledge Element (ucase below)
+ private KnowledgeElement ucase; // Internal Knowledge Element for accessing to all used simulation contexts
+
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private Study owner = null;
+ private Scenario previous = null;
+ private Step base = null;
+ private String title = null;
+ private String summary = null;
+ private User manager = null;
+ private Date date = null;
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ owner = null;
+ previous = null;
+ base = null;
+ title = null;
+ summary = null;
+ manager = null;
+ date = null;
+ }
+// - Protected services
+
+ protected Step getBaseStep () {
+ return base; // May be null
+ }
+ protected Scenario getInsertAfter () {
+ return previous; // May be null
+ }
+ protected User getManager () {
+ return manager;
+ }
+ protected Properties setOwnerStudy (Study owner)
+ {
+ this.owner = owner;
+ return this;
+ }
+// - Setters of Scenario properties
+
+ public Properties setBaseStep (Step base) throws InvalidPropertyException
+ {
+ if (!(base.getOwner() instanceof Scenario)) throw new InvalidPropertyException("step");
+ this.base = base;
+ return this;
+ }
+ public Properties setDate (Date date)
+ {
+ this.date = date;
+ return this;
+ }
+ public Properties setDescription (String summary)
+ {
+ if (summary.length() > 0) this.summary = summary;
+ return this;
+ }
+ public Properties setInsertAfter (Scenario previous)
+ {
+ this.previous = previous;
+ return this;
+ }
+ public Properties setManager (User user)
+ {
+ this.manager = user;
+ return this;
+ }
+ public Properties setTitle (String title) throws InvalidPropertyException
+ {
+ if (title.length() == 0) throw new InvalidPropertyException("title");
+ this.title = title;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity() throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (owner == null) throw new MissedPropertyException("owner");
+ if (title == null) throw new MissedPropertyException("title");
+ if (manager == null) throw new MissedPropertyException("manager");
+ }
+ }
+// Database fetch constructor
+ protected Scenario () {
+// ---------------------
+ known = null;
+ knowl = null;
+ ucase = null;
+ }
+// Internal constructor
+ protected Scenario (Properties sprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// -------------------------------------
+ super(sprop); // Throws one of the above exception if not valid
+ owner = sprop.owner;
+ sid = 0;
+ cuser = null;
+ title = sprop.title; // Inherited attribute
+ known = null;
+ knowl = null; // Initialized when getting all Knowledge Elements
+ ucase = null;
+ kelms = new HashSet<KnowledgeElement>();
+
+ manager = sprop.manager;
+ if (!owner.isStaffedBy(manager)) throw new InvalidPropertyException("manager");
+
+ credate = sprop.date; // Inherited attribute
+ if (credate == null) {
+ Calendar current = Calendar.getInstance();
+ credate = current.getTime(); // Today
+ }
+ lasdate = credate; // Inherited attribute
+
+ if (sprop.summary != null) this.setAttribute( new DescriptionAttribute(this, sprop.summary) );
+
+ Scenario[] scene = owner.getScenarii();
+ for (int i=0; i<scene.length; i++) if (scene[i].sid > this.sid) this.sid = scene[i].sid;
+ sid += 1;
+ if (sprop.base != null) copyContentsUpTo(sprop.base);
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public KnowledgeElement addKnowledgeElement (KnowledgeElement.Properties kprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// -------------------------------------------------------------------------------
+ KnowledgeElement kelm = new KnowledgeElement(kprop.setOwnerScenario(this));
+ Session session = Database.getSession();
+ Transaction transax = session.getTransaction();
+ try {
+ session.save(kelm);
+// Update of my persistent data
+ kelms.add(kelm);
+// Update of my transient data
+ List<KnowledgeElement> known = getKnowledgeElementsOf(kelm.getType()); // Initializes this.known, if not yet done
+ known.add(kelm);
+ if (kelm.getType().equals("usecase")) {
+ ucase = kelm;
+ } else
+ if (knowl != null) { // If null, knowl will be initialized when needed
+ knowl.add(kelm);
+ }
+// Update of the index of Knowledge Elements
+ Database.getIndex().add(kelm);
+ updateMe();
+ return kelm;
+ }
+ catch (RuntimeException e) {
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException error) {
+ Study.logger.debug("Error rolling back transaction", error);
+ }
+// Throw again the first exception
+ throw e;
+ }
+ return null;
+ }
+ catch (IOException error) {
+ logger.error("Unable to index the knowedge element '" + kelm.getIndex() + "', reason:", error);
+ return null;
+ }
+ }
+
+ public void checkin () {
+// ----------------------
+ cuser = null;
+ lasdate = Calendar.getInstance().getTime();
+ Database.getSession().update(this);
+ }
+
+ public boolean checkout (User user) {
+// -----------------------------------
+ if (!owner.isStaffedBy(user)) return false;
+
+ cuser = user;
+ lasdate = Calendar.getInstance().getTime();
+ Database.getSession().update(this);
+ return true;
+ }
+
+ public List<KnowledgeElement> getAllKnowledgeElements () {
+// --------------------------------------------------------
+ if (knowl == null) {
+ knowl = new Vector<KnowledgeElement>(kelms.size());
+ for (Iterator<KnowledgeElement> i=kelms.iterator(); i.hasNext(); ) {
+ KnowledgeElement kelm = i.next();
+ if (kelm.getType().equals("usecase")) ucase = kelm;
+ else knowl.add(kelm);
+ }
+ }
+ return Collections.unmodifiableList(knowl);
+ }
+
+ public KnowledgeElement getKnowledgeElement (int index) {
+// -------------------------------------------------------
+ for (Iterator<KnowledgeElement> i=kelms.iterator(); i.hasNext();) {
+ KnowledgeElement mykelm = i.next();
+ if (mykelm.getIndex() == index) return mykelm;
+ }
+ return null;
+ }
+
+ public List<KnowledgeElement> getKnowledgeElementsOf (KnowledgeElementType type) {
+// --------------------------------------------------------------------------------
+ if (kelms.isEmpty()) return new Vector<KnowledgeElement>(); // Smarter than returning null
+ if (known == null) known = new HashMap<Integer, List<KnowledgeElement>>();
+
+ int numtype = type.getIndex();
+ List<KnowledgeElement> listype = known.get(numtype);
+ if (listype == null) {
+ listype = new Vector<KnowledgeElement>();
+ for (Iterator<KnowledgeElement> i=kelms.iterator(); i.hasNext();) {
+ KnowledgeElement kelm = i.next();
+ if (kelm.getType().getIndex() == numtype) listype.add(kelm);
+ }
+ known.put(numtype, listype);
+ }
+ return listype; // No protection against this object corruption as it would not corrupt the database
+ }
+
+ public Study getOwnerStudy () {
+// -----------------------------
+ return owner;
+ }
+/**
+ * Returns the local reference of this scenario. This reference is unique in the scope of the owner study.
+ */
+ public String getReference () {
+// -----------------------------
+ return String.valueOf(sid);
+ }
+
+ public User getUser () {
+// ----------------------
+ return cuser; // Null if the scenario has not been checked-out
+ }
+
+ public boolean removeKnowledgeElement (KnowledgeElement kelm) {
+// -------------------------------------------------------------
+ KnowledgeElement torem = getKnowledgeElement(kelm.getIndex());
+ if (torem == null) return false;
+ boolean done = kelms.remove(torem);
+ if (done) {
+// Update of my transient data
+ List<KnowledgeElement> kelms = known.get(kelm.getType().getIndex());
+ kelms.remove(torem);
+ if (knowl != null) knowl.remove(torem);
+ Database.getSession().update(this);
+//TODO: If the owner study is not private, remove the knowledge from the Lucene index
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public boolean isCheckedout () {
+// ------------------------------
+ return (cuser != null);
+ }
+
+ public boolean isEmpty () {
+// -------------------------
+ Step[] mystep = this.getSteps();
+ for (int i=0; i<mystep.length; i++) if (mystep[i].isStarted()) return false;
+ return true;
+ }
+
+ public boolean isFinished () {
+// ----------------------------
+ Step[] mystep = this.getSteps();
+ boolean notempty = false; // If this is empty, this is not finished
+ for (int i=0; i<mystep.length; i++) {
+ if (!mystep[i].isStarted()) continue;
+ if (!mystep[i].isFinished()) return false;
+ notempty = true;
+ }
+ return notempty;
+ }
+
+// ==============================================================================================================================
+// Protected member function
+// ==============================================================================================================================
+
+ protected void updateMyIndex (Index lucin) throws IOException {
+// ------------------------------------------
+ if (ucase == null) for (Iterator<KnowledgeElement> i=kelms.iterator(); i.hasNext(); ) {
+ KnowledgeElement kelm = i.next();
+ if (!kelm.getType().equals("usecase")) continue;
+ ucase = kelm;
+ break;
+ }
+ lucin.update(ucase);
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private void copyContentsUpTo (Step lastep) {
+// -------------------------------------------
+ Scenario base = (Scenario)lastep.getOwner();
+ Step[] from = base.getSteps();
+ Step[] to = this.getSteps();
+ for (int i=0; i<from.length; i++) {
+ Step step = from[i];
+ if (step.getNumber() > lastep.getNumber()) break;
+
+ List<Publication> docs = step.getAllDocuments();
+ for (Iterator<Publication> j=docs.iterator(); j.hasNext(); ) {
+ Publication doc = j.next().copy(this); // Creation of a new reference to the document
+// Database.getSession().save(doc); Publications MUST be saved later through cascading when saving the scenario
+ to[i].add(doc);
+ }
+ List<SimulationContext> ctex = step.getAllSimulationContexts();
+ for (Iterator<SimulationContext> j=ctex.iterator(); j.hasNext(); ) {
+ to[i].addSimulationContext(j.next());
+ }
+ }
+ }
+
+ private boolean updateMe () {
+// ---------------------------
+ try {
+ Database.getSession().update(this); // Update of relational base
+ return true;
+ }
+ catch (Exception error) {
+ logger.error("Unable to re-index the knowledge element '" + getIndex() + "', reason:", error);
+ return false;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.SimulationContext" table="contelm">
+
+<!-- Properties inherited Persistent
+ -->
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+<!-- SimulationContext properties
+ -->
+ <!-- SimulationContextType type -->
+ <many-to-one name="type" column="type" access="field" not-null="true" />
+
+ <!-- int step -->
+ <property name="step" column="step" access="field" not-null="true" />
+
+ <!-- ProgressState state -->
+ <property name="state" column="state" type="ProgressState" access="field" not-null="true" />
+
+ <!-- String value -->
+ <property name="value" column="value" access="field" not-null="true" />
+
+ <!-- int counter -->
+ <property name="counter" column="counter" access="field" not-null="true" />
+ </class>
+
+<!-- Class SimulationContextType
+ -->
+ <class name="org.splat.som.SimulationContextType" table="contype" lazy="false">
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+ <property name="name" column="name" access="field" not-null="true" />
+ <property name="state" column="state" type="ProgressState" access="field" not-null="true" />
+ <property name="step" column="step" access="field" not-null="true" />
+ </class>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.Serializable;
+import java.util.List;
+
+import org.hibernate.Session;
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+
+
+public class SimulationContext extends Persistent implements Serializable {
+
+ private SimulationContextType type; // User extendable types
+ private int step;
+ private ProgressState state;
+ private String value;
+ private int counter;
+
+ private static final long serialVersionUID = 422889133378471949L;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private SimulationContextType type = null;
+ private ProjectSettings.Step step = null;
+ private ProgressState state = null;
+ private String value = null;
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ type = null;
+ step = null;
+ state = null;
+ value = null;
+ }
+ protected ProgressState getProgressState () {
+ return state;
+ }
+ public SimulationContextType getType () {
+ return type;
+ }
+ public String getValue () {
+ return value;
+ }
+
+// - Setters of SimulationContext properties
+
+ public Properties setState (ProgressState state) throws InvalidPropertyException
+ {
+ if (state != ProgressState.inCHECK && state != ProgressState.APPROVED) {
+ throw new InvalidPropertyException("state");
+ }
+ this.state = state;
+ return this;
+ }
+ protected Properties setStep (ProjectSettings.Step step) throws InvalidPropertyException
+ {
+ this.step = step;
+ return this;
+ }
+ public Properties setValue (String value) throws InvalidPropertyException
+ {
+ if (value.length() == 0) throw new InvalidPropertyException("value");
+ this.value = value;
+ return this;
+ }
+ public Properties setType (SimulationContextType type)
+ {
+ this.type = type;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity () throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (type == null) throw new MissedPropertyException("type");
+ if (step == null) throw new MissedPropertyException("step");
+ if (value == null) throw new MissedPropertyException("value");
+ if (!type.isAttachedTo(step)) throw new InvalidPropertyException("step");
+ }
+ }
+// Database fetch constructor
+ protected SimulationContext () {
+ }
+// Internal constructor
+ protected SimulationContext (Properties kprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+ super(kprop); // Throws one of the above exception if not valid
+ type = kprop.type;
+ step = kprop.step.getNumber();
+ value = kprop.value;
+ counter = 0;
+ state = kprop.state;
+ if (state == null) state = ProgressState.inCHECK;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean approve () {
+// -------------------------
+ if (state != ProgressState.inCHECK) return false;
+ this.state = ProgressState.APPROVED; // The type name is supposed being localized
+ Database.getSession().update(this);
+ return true;
+ }
+
+ public boolean equals (SimulationContext given) {
+// -----------------------------------------------
+ if (isSaved()) return (this.getIndex() == given.getIndex());
+ if (!this.getType().getName().equals(given.getType().getName())) return false;
+ if (this.getValue().equals(given.getValue())) return true;
+ return false;
+ }
+
+ public String getValue () {
+// -------------------------
+ return value;
+ }
+
+ public ProgressState getProgressState () {
+// ----------------------------------------
+ return state;
+ }
+
+ public SimulationContextType getType () {
+// ---------------------------------------
+ return type;
+ }
+
+ public boolean isInto (Step container) {
+// --------------------------------------
+ return (step == container.getNumber());
+ }
+
+ public boolean isShared () {
+// --------------------------
+ return (counter > 1);
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static SimulationContextType createType (String name, ProjectSettings.Step step) throws InvalidPropertyException, RuntimeException {
+// ---------------------------------------------------------------------------------------
+//TODO: Check for duplicate definition
+ SimulationContextType type = new SimulationContextType(name, step);
+ Session session = Database.getSession();
+ session.save(type);
+
+ return type;
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<SimulationContextType> selectAllTypes () {
+// -----------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContextType"); // Useless to order by names as the result mixes localized and non localized types
+ query = query.append(" order by step asc");
+ return Database.getSession().createQuery(query.toString()).list();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<SimulationContextType> selectTypesOf (ProjectSettings.Step... step) {
+// --------------------------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContextType where step='").append(step[0].getNumber()).append("'");
+ for (int i=1; i<step.length; i++) { // Useless to order as the result mixes localized and non localized types
+ query = query.append(" or step='").append(step[i].getNumber()).append("'");
+ }
+ query = query.append(" order by step asc");
+ return Database.getSession().createQuery(query.toString()).list();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<SimulationContextType> selectTypesWhere (SimulationContextType.Properties sprop) {
+// ---------------------------------------------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContextType");
+ String separator = " where";
+ ProjectSettings.Step step = sprop.getStep();
+ ProgressState state = sprop.getProgressState();
+ String order = " order by step asc";
+
+ if (step != null) {
+ query = query.append(separator).append(" step='").append(step.getNumber()).append("'");
+ separator = " and";
+ order = " order by state desc"; // APPROVED (upper case A) is grater than inCHECK (lower case i)
+ }
+ if (state != null) {
+ query = query.append(separator).append(" state='").append(state.toString()).append("'");
+// separator = " and";
+ if (step != null) {
+ if (state != ProgressState.APPROVED) order = " order by name asc";
+ else order = ""; // Approved types are localized
+ }
+ }
+ query = query.append(order);
+ return Database.getSession().createQuery(query.toString()).list();
+ }
+
+ public static SimulationContextType selectType (String name) {
+// ------------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContextType where name='").append(name).append("'");
+ return (SimulationContextType)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+ public static SimulationContextType selectType (int index) {
+// ----------------------------------------------------------
+ StringBuffer query = new StringBuffer("from SimulationContextType where rid='").append(index).append("'");
+ return (SimulationContextType)Database.getSession().createQuery(query.toString()).uniqueResult();
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void hold () {
+// ----------------------
+ counter += 1;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+
+ protected void release () {
+// -------------------------
+ counter -= 1;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.Serializable;
+
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.Persistent;
+
+
+public class SimulationContextType extends Persistent implements Serializable {
+
+// Persistent fields
+ private String name;
+ private ProgressState state;
+ private int step;
+
+// Required by the serialization
+ private static final long serialVersionUID = 4819425038576161242L;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Search properties class
+ public static class Properties {
+// ------------------------------
+ private ProgressState state = null;
+ private ProjectSettings.Step step = null;
+
+ protected ProgressState getProgressState () {
+ return state;
+ }
+ protected ProjectSettings.Step getStep () {
+ return step;
+ }
+ public Properties setState (ProgressState state) {
+ this.state = state;
+ return this;
+ }
+ public Properties setStep (ProjectSettings.Step step) {
+ this.step = step;
+ return this;
+ }
+ }
+// Database fetch constructor
+ protected SimulationContextType () {
+ }
+// Initialization constructor
+ protected SimulationContextType (String name, ProjectSettings.Step step) throws InvalidPropertyException {
+// ------------------------------------------------------------------------
+ super();
+ this.name = name;
+ this.state = ProgressState.inCHECK;
+ this.step = step.getNumber();
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean approve () {
+// -------------------------
+ if (state != ProgressState.inCHECK) return false;
+ this.state = ProgressState.APPROVED; // The type name is supposed being localized
+ Database.getSession().update(this);
+ return true;
+ }
+
+ public boolean equals(Object entity) {
+// ------------------------------------
+ if (entity == null) return false;
+ if (entity instanceof String) {
+ return this.name.equals((String)entity); // Names are unique
+ } else
+ if (entity instanceof SimulationContextType) {
+ SimulationContextType object = (SimulationContextType)entity;
+ int he = object.getIndex();
+ int me = this.getIndex();
+ if (me*he != 0) return (he == me);
+ else return this.getName().equals(object.getName());
+ } else {
+ return false;
+ }
+ }
+
+ public ProjectSettings.Step getAttachedStep () {
+// ----------------------------------------------
+ return ProjectSettings.getStep(step);
+ }
+
+ public String getName () {
+// ------------------------
+ return name;
+ }
+
+ public boolean isAttachedTo (ProjectSettings.Step step) {
+// -------------------------------------------------------
+ if (this.step == step.getNumber()) return true;
+ return false;
+ }
+
+ public boolean isApproved () {
+// ----------------------------
+ return (state == ProgressState.APPROVED);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+
+
+public class StampRelation extends Relation {
+
+ private Timestamp refer;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected StampRelation () {
+ }
+// Internal constructor
+ protected StampRelation (Document from, Timestamp to) {
+// -----------------------------------------------------
+ super(from);
+ this.refer = to;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Timestamp getTo () {
+// -------------------------
+ return refer;
+ }
+
+ public ValidationStep getStampType () {
+// -------------------------------------
+ return refer.getType();
+ }
+
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (Timestamp)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+import java.util.Iterator;
+
+import org.hibernate.Session;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MismatchException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.NotApplicableException;
+import org.splat.kernel.Relation;
+import org.splat.kernel.User;
+import org.splat.som.Database;
+
+
+public class Step {
+
+ private ProjectSettings.Step step;
+ private ProjectElement owner;
+ private List<SimulationContext> contex;
+ private List<Publication> docums;
+ private User actor; // Actor involved in operations on published documents and requiring a time-stamp
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ protected Step (ProjectSettings.Step step, ProjectElement owner) {
+// ----------------------------------------------------------------
+ this.step = step;
+ this.owner = owner;
+ this.contex = new Vector<SimulationContext>();
+ this.docums = new Vector<Publication>();
+ this.actor = null;
+
+// Filtering of Simulation contexts, if exist
+ for (Iterator<SimulationContext> i=owner.SimulationContextIterator(); i.hasNext();) {
+ SimulationContext adoc = i.next();
+ if (!adoc.isInto(this)) continue;
+ this.contex.add(adoc);
+ }
+// Filtering of Documents, if exist
+ for (Iterator<Publication> i=owner.PublicationIterator(); i.hasNext();) {
+ Publication mydoc = i.next();
+ if (!mydoc.value().isInto(this)) continue;
+ this.docums.add(mydoc);
+ }
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Publication createDocument (Document.Properties dprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, IOException {
+// -------------------------------------------------------------
+ Document newdoc = new Document(dprop.setOwner(owner).setStep(step));
+
+// Creation of the save directory
+ File wdir = newdoc.getSaveDirectory();
+ if (!wdir.exists()) if (!wdir.mkdirs()) throw new IOException("Cannot create the repository vault directory");
+
+// Identification and save
+ newdoc.buildReferenceFrom(getOwnerStudy());
+ Database.getSession().save(newdoc);
+
+ return new Publication(newdoc, owner);
+ }
+
+ public Publication assignDocument (Document.Properties dprop) throws MissedPropertyException, InvalidPropertyException, NotApplicableException {
+// -------------------------------------------------------------
+ String refid = dprop.getReference();
+ if (refid == null) return null;
+
+ Document slot = Database.selectDocument(refid, new Revision().toString());
+ if ( slot == null ) return null;
+ if (!slot.isUndefined()) return null; // Should not happen
+
+ slot.initialize(dprop.setOwner(getOwnerStudy()));
+ return new Publication(slot, owner);
+ }
+
+ public Publication versionDocument (Publication base) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, IOException, MismatchException {
+// -----------------------------------------------------
+ return versionDocument(base, new Document.Properties());
+ }
+
+ public Publication versionDocument (Publication base, String reason) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, IOException, MismatchException {
+// --------------------------------------------------------------------
+ return versionDocument(base, new Document.Properties().setDescription(reason));
+ }
+
+ public Publication versionDocument (Publication base, Document.Properties dprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, IOException, MismatchException {
+// --------------------------------------------------------------------------------
+ Document previous = base.value();
+
+ dprop.setDocument(previous); // Initializes the Step property
+ if (dprop.getStep().getNumber() != this.step.getNumber()) throw new MismatchException();
+
+ if (dprop.getAuthor() == null) dprop.setAuthor(previous.getAuthor());
+ String summary = dprop.getDescription();
+
+// Creation of the document
+ Document newdoc = new Document(dprop.setOwner(owner).setStep(step));
+ newdoc.buildReferenceFrom(getOwner(), previous);
+ Database.getSession().save(newdoc);
+
+// Versioning
+ if (summary == null) newdoc.addRelation( new VersionsRelation(newdoc, previous) );
+ else newdoc.addRelation( new VersionsRelation(newdoc, previous, summary) );
+
+// Update of usedby relations, if exist
+ List<Relation> relist = previous.getRelations(UsedByRelation.class);
+ Study scope = getOwnerStudy();
+ for (Iterator<Relation> i=relist.iterator(); i.hasNext();) {
+ UsedByRelation relation = (UsedByRelation)i.next();
+ Document relatedoc = relation.getTo();
+ if (scope.shares(relatedoc)) relatedoc.addRelation( new UsesRelation(relatedoc, newdoc) );
+ else relation.moveTo(newdoc);
+ }
+ return new Publication(newdoc, owner);
+ }
+
+ public SimulationContext addSimulationContext (SimulationContext.Properties dprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, RuntimeException {
+// ----------------------------------------------------------------------------------
+ SimulationContext context = new SimulationContext(dprop.setStep(step));
+ return addSimulationContext(context);
+ }
+
+ public SimulationContext addSimulationContext (SimulationContext context) {
+// -------------------------------------------------------------------------
+ context.hold(); // Increments the reference count of simulation context
+ if (owner.isSaved()) try {
+ Session session = Database.getSession();
+ Index lucin = Database.getIndex();
+
+ if (!context.isSaved()) session.save(context);
+ owner.add(context);
+ contex.add(context); // The context is also referenced from this (transient) Step
+ session.update(owner);
+ updateKnowledgeElementsIndex(lucin);
+ }
+ catch (Exception error) {
+ return null;
+ }
+ else { // Happens when copying a scenario
+ owner.add(context);
+ contex.add(context); // The context is also referenced from this (transient) Step
+// In case of owner scenario, the Knowledge Element index will be updated later, when saving the scenario
+ }
+ return context;
+ }
+
+ public User getActor () {
+// -----------------------
+ return actor;
+ }
+
+ public List<Publication> getAllDocuments () {
+// -------------------------------------------
+ return Collections.unmodifiableList(docums);
+ }
+
+ public List<SimulationContext> getAllSimulationContexts () {
+// ----------------------------------------------------------
+ return Collections.unmodifiableList(contex);
+ }
+
+ public Publication getDocument (int index) {
+// ------------------------------------------
+ for (Iterator<Publication> i=docums.iterator(); i.hasNext();) {
+ Publication found = i.next(); // In a given study step,
+ if (found.value().getIndex() == index) return found; // there is only one publication of a given document
+ }
+ return null;
+ }
+
+ public int getNumber () {
+// -----------------------
+ return step.getNumber();
+ }
+
+ public ProjectElement getOwner () {
+// ---------------------------------
+ return owner; // May be a Study or a Scenario
+ }
+
+ public Study getOwnerStudy () {
+// -----------------------------
+ if (owner instanceof Study) return (Study)owner;
+ else return ((Scenario)owner).getOwnerStudy();
+ }
+
+ public String getPath () {
+// ------------------------
+ return step.getPath();
+ }
+
+ public List<Publication> getResultDocuments () {
+// ----------------------------------------------
+ List<Publication> result = new Vector<Publication>();
+
+ if (!docums.isEmpty()) for (Iterator<Publication> i=docums.iterator(); i.hasNext(); ) {
+ Publication content = i.next();
+ DocumentType type = content.value().getType();
+ if (!type.isResultOf(this.getStep())) continue;
+ result.add(content);
+ }
+ return result;
+ }
+
+ public ProjectSettings.Step getStep () {
+// --------------------------------------
+ return step;
+ }
+
+ public SimulationContext getSimulationContext (int index) {
+// ---------------------------------------------------------
+ for (Iterator<SimulationContext> i=owner.SimulationContextIterator(); i.hasNext();) {
+ SimulationContext myctex = i.next();
+ if (myctex.getIndex() == index) return myctex;
+ }
+ return null;
+ }
+
+ public List<SimulationContext> getSimulationContext (SimulationContextType type) {
+// --------------------------------------------------------------------------------
+ Vector<SimulationContext> result = new Vector<SimulationContext>();
+
+ for (Iterator<SimulationContext> i=owner.SimulationContextIterator(); i.hasNext();) {
+ SimulationContext myctex = i.next();
+ if (myctex.getType().equals(type)) result.add(myctex);
+ }
+ return result;
+ }
+
+ public List<DocumentType> getValidDocumentTypes () {
+// --------------------------------------------------
+ return Document.selectTypesOf(step);
+ }
+
+ public boolean isStarted () {
+// ---------------------------
+ if (!step.mayContain(KnowledgeElement.class)) return !docums.isEmpty();
+
+ List<KnowledgeElement> kelm = ((Scenario)owner).getAllKnowledgeElements();
+ if (kelm.isEmpty() && docums.isEmpty()) return false;
+ return true;
+ }
+
+ public boolean isFinished () {
+// ----------------------------
+ if (!step.mayContain(KnowledgeElement.class)) { // Check if all result documents are approved
+ if (docums.isEmpty()) return false;
+ boolean result = false;
+ for (Iterator<Publication> i=docums.iterator(); i.hasNext(); ) {
+ Document content = i.next().value();
+ DocumentType type = content.getType();
+ if (!type.isResultOf(this.getStep())) continue;
+ if (content.getProgressState() == ProgressState.EXTERN) continue;
+ result = true; // There is at least 1 non external result document
+ if (content.getProgressState() != ProgressState.APPROVED) return false;
+ }
+ return result;
+ }
+ else { // Check if all existing knowledges are approved
+ List<KnowledgeElement> kelm = ((Scenario)owner).getAllKnowledgeElements();
+ if (kelm.isEmpty()) return false;
+ for (Iterator<KnowledgeElement> i=kelm.iterator(); i.hasNext(); ) {
+ KnowledgeElement content = i.next();
+ if (content.getProgressState() != ProgressState.APPROVED) return false;
+ }
+ return true;
+ }
+ }
+
+ public boolean mayContain (@SuppressWarnings("rawtypes") Class type) {
+// --------------------------------------------------------------------
+ return step.mayContain(type);
+ }
+
+ public boolean removeDocument (Publication doctag) {
+// --------------------------------------------------
+ Document value = doctag.value();
+ Publication torem = getDocument(value.getIndex());
+ Session session = Database.getSession();
+
+ if (torem == null) return false;
+
+ this.remove(torem);
+ session.update(owner);
+ if (!value.isPublished() && !value.isVersioned()) { // The referenced document is no more used
+ Set<Relation> links = value.getAllRelations();
+ List<Document> using = new Vector<Document>();
+ for (Iterator<Relation> i=links.iterator(); i.hasNext(); ) {
+ Relation link = i.next();
+ if (link.getClass().equals(ConvertsRelation.class)) { // File conversion
+ session.delete(link.getTo()); // The corresponding physical file is not removed from the vault
+ } else
+ if (link.getClass().equals(UsesRelation.class)) { // Document dependency
+ using.add((Document)link.getTo());
+ }
+ }
+ for (Iterator<Document> i=using.iterator(); i.hasNext(); ) {
+ i.next().removeRelation(UsedByRelation.class, value);
+ }
+ session.delete(value); // The corresponding physical file is not removed from the vault
+ }
+ return true;
+ }
+
+ public boolean removeSimulationContext (SimulationContext context) {
+// ------------------------------------------------------------------
+ SimulationContext torem = getSimulationContext(context.getIndex());
+ Session session = Database.getSession();
+
+ if (torem == null) return false;
+ if (!owner.remove(torem)) return false;
+
+ contex.remove(torem);
+ session.update(owner);
+ if (torem.isShared()) {
+ torem.release();
+ session.update(torem);
+ } else {
+ session.delete(torem);
+ }
+ return true;
+ }
+
+ public void setActor (User user) {
+// --------------------------------
+ actor = user;
+ }
+// ==============================================================================================================================
+// Protected member functions
+// ==============================================================================================================================
+
+ protected boolean add (Publication newdoc) {
+// ------------------------------------------
+ if (!owner.add(newdoc)) return false; // Updates the study in memory
+ docums.add(0, newdoc); // Updates this step
+ newdoc.value().hold(); // Increments the configuration tag count of document
+// If not yet saved, the Publication MUST NOT be saved here, although this creates a temporary inconsistent state into the
+// database (it will be saved later by cascading the update of owner scenario).
+ return true;
+ }
+
+ protected boolean remove (Publication oldoc) {
+// --------------------------------------------
+ if (!owner.remove(oldoc)) return false; // Updates the study in memory
+ docums.remove(oldoc); // Updates this step
+ oldoc.value().release(); // Decrements the configuration tag count of document
+// The publication becoming orphan, it should automatically be removed from the database when updating of owner scenario.
+ return true;
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private void updateKnowledgeElementsIndex(Index lucin) {
+// ------------------------------------------------------
+ Scenario[] scenarii;
+ if (owner instanceof Scenario) {
+ scenarii = new Scenario[1];
+ scenarii[0] = (Scenario)owner;
+ } else {
+ scenarii = getOwnerStudy().getScenarii();
+ }
+ try {
+ for (int i=0; i<scenarii.length; i++) {
+ Scenario scene = scenarii[i];
+ List<KnowledgeElement> knelm = scene.getAllKnowledgeElements();
+ for (Iterator<KnowledgeElement> j=knelm.iterator(); j.hasNext(); ) {
+ KnowledgeElement kelm = j.next();
+ lucin.update(kelm);
+ }
+ scene.updateMyIndex(lucin);
+ }
+ }
+ catch (Exception error) {
+// logger.error("Unable to re-index Knowledge Elements, reason:", error);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class defining the default rights related to operations on study steps.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+//TODO: Review this rights according to the state of the owner study.
+
+import org.splat.kernel.User;
+
+
+public class StepRights {
+
+ private User user;
+ private Step operand;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public StepRights (User user, Step step) {
+// ----------------------------------------
+ this.user = user;
+ this.operand = step;
+ }
+ public StepRights (Step step) {
+// -----------------------------
+ this.user = step.getOwner().getAuthor();
+ this.operand = step;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+/**
+ * Checks if the user has right to add a comment attached to the selected step.
+ * All actors of the study have such right, including the author, contributors, reviewers and approvers.
+ *
+ * @return true if the user has right to add a comment.
+ */
+ public boolean canAddComment () {
+// -------------------------------
+ Study owner = operand.getOwnerStudy();
+ return (owner.getAuthor().equals(user) || owner.hasActor(user));
+ }
+
+/**
+ * Checks if the user has right to create or import a document into the selected step.
+ * Only the author and contributors have such right, providing that the study step is enabled for writing.
+ *
+ * @return true if the user has right to create or import a document.
+ */
+ public boolean canCreateDocument () {
+// -----------------------------------
+ if (!isEnabled()) return false;
+ return operand.getOwnerStudy().isStaffedBy(user);
+ }
+
+/**
+ * Checks if the user has right to enter a knowledge into the selected step.
+ * Only the author and contributors have such right.
+ *
+ * @return true if the user has right to enter a knowledge.
+ */
+ public boolean canCreateKnowledge () {
+// ------------------------------------
+ return operand.getOwnerStudy().isStaffedBy(user);
+ }
+
+/**
+ * Checks if the user has right to edit the simulation contexts attached to the selected step.
+ * All actors of the study have such right, including the author, contributors, reviewers and approvers.
+ *
+ * @return true if the user has right to edit the simulation contexts.
+ */
+ public boolean canEditSimulationContext () {
+// ------------------------------------------
+ Study owner = operand.getOwnerStudy();
+ return (owner.getAuthor().equals(user) || owner.hasActor(user));
+ }
+
+/**
+ * Checks if the selected step is enabled for writing.
+ * A step may be disabled for writing, or locked, following a check-out of the owner scenario.
+ *
+ * @return true if the step is enabled for writing.
+ */
+ public boolean isEnabled () {
+// ---------------------------
+ ProjectElement owner = operand.getOwner();
+
+ if (owner instanceof Scenario) {
+ Scenario scene = (Scenario)owner;
+ if (scene.isCheckedout()) return false;
+ }
+ return true;
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public Step getOperand () {
+// -------------------------
+ return operand;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <typedef name="ProgressState" class="org.splat.kernel.GenericEnumType">
+ <param name="enumClassName">org.splat.som.ProgressState</param>
+ </typedef>
+
+ <typedef name="Visibility" class="org.splat.kernel.GenericEnumType">
+ <param name="enumClassName">org.splat.som.Visibility</param>
+ </typedef>
+
+ <union-subclass name="org.splat.som.Study" extends="org.splat.som.ProjectElement" table="study" lazy="false">
+
+ <!-- String sid -->
+ <property name="sid" column="sid" access="field" not-null="true" />
+
+ <!-- int docount -->
+ <property name="docount" column="docount" access="field" not-null="true" />
+
+ <!-- ProgressState state -->
+ <property name="state" type="ProgressState" column="state" access="field" not-null="true" />
+
+ <!-- Visibility visibility -->
+ <property name="visibility" type="Visibility" column="area" access="field" not-null="true" />
+
+ <!-- List<Scenario> scenarii -->
+ <list name="scenarii" lazy="false" cascade="delete-orphan" access="field">
+ <key column="owner" not-null="true" />
+ <list-index column="scendex"/>
+ <one-to-many class="org.splat.som.Scenario" />
+ </list>
+
+ <!-- String version -->
+ <property name="version" column="version" access="field" not-null="true" />
+
+ <!-- int history -->
+ <property name="history" column="history" access="field" not-null="true" />
+
+ </union-subclass>
+
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.Vector;
+
+import org.hibernate.Session;
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+import org.splat.kernel.User;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.UserDirectory;
+
+
+public class Study extends ProjectElement {
+
+// Persistent fields
+ private String sid; // External unique reference in a format conform to the configuration pattern
+ private int docount; // Total number of documents of this study, including versions
+ private ProgressState state;
+ private Visibility visibility;
+ private List<Scenario> scenarii;
+ private String version;
+ private int history; // Number of studies versioning this one, if any
+
+// Transient fields
+ private List<User> contributor; // Shortcut to contributors
+ private HashMap<String,ValidationCycle> validactor; // Shortcut to validation cycles
+ private Set<User> actor; // Summary of above actors
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ private String sid = null; // Search criterion only
+ private String title = null;
+ private String summary = null;
+ private User manager = null;
+ private User actor = null; // Search criterion only
+ private Visibility visibility = null; // Search criterion only
+ private ProgressState state = null; // Search criterion only
+ private Date date = null;
+ private List<SimulationContext> context = new Vector<SimulationContext>(); // Search criterion only
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ sid = null;
+ title = null;
+ summary = null;
+ manager = null;
+ actor = null;
+ visibility = null;
+ state = null;
+ date = null;
+ context = new Vector<SimulationContext>(); // as clear() may generate side effects
+ }
+ public Properties copy () {
+ Properties copy = new Properties();
+ copy.sid = this.sid;
+ copy.title = this.title;
+ copy.summary = this.summary;
+ copy.manager = this.manager;
+ copy.actor = this.actor;
+ copy.visibility = this.visibility;
+ copy.state = this.state;
+ copy.date = this.date;
+ copy.context = this.context;
+ return copy;
+ }
+// - Protected services
+
+ protected User getActor () {
+ return actor;
+ }
+ protected User getManager () {
+ return manager;
+ }
+ protected ProgressState getProgressState () {
+ return state;
+ }
+ protected String getReference () {
+ return sid;
+ }
+ protected List<SimulationContext> getSimulationContexts () {
+ return context;
+ }
+ protected String getTitle () {
+ return title;
+ }
+ protected Visibility getVisibility () {
+ return visibility;
+ }
+// - Property setters
+
+// For building a search query
+ public Properties setActor (User actor)
+ {
+ this.actor = actor;
+ return this;
+ }
+ public Properties setDate (Date date)
+ {
+ this.date = date;
+ return this;
+ }
+ public Properties setDescription (String summary)
+ {
+ if (summary.length() > 0) this.summary = summary;
+ return this;
+ }
+ public Properties setManager (User user)
+ {
+ this.manager = user;
+ return this;
+ }
+// For building a search query
+ public Properties setReference (String sid) throws InvalidPropertyException
+ {
+ if (sid.length() == 0) throw new InvalidPropertyException("reference");
+ this.sid = sid;
+ return this;
+ }
+// For building a search query
+ public Properties setSimulationContexts (List<SimulationContext> context) {
+ this.context = context;
+ return this;
+ }
+// For building a search query
+ public Properties setState (ProgressState state)
+ {
+ this.state = state;
+ return this;
+ }
+ public Properties setTitle (String title) throws InvalidPropertyException
+ {
+ if (title.length() == 0) throw new InvalidPropertyException("title");
+ this.title = title;
+ return this;
+ }
+// For building a search query
+ public Properties setVisibility (Visibility area)
+ {
+ this.visibility = area;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity() throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException
+ {
+ if (title == null) throw new MissedPropertyException("title");
+ if (manager == null) throw new MissedPropertyException("manager");
+ }
+ }
+// Database fetch constructor
+ protected Study () {
+// ------------------
+ contributor = null;
+ validactor = null;
+ actor = null;
+ }
+// Internal constructor
+ protected Study (Properties sprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// ----------------------------------
+ super(sprop); // Throws one of the above exception if not valid
+ sid = ProjectSettings.getReferencePattern(); // Reset after save
+ title = sprop.title; // Inherited attribute
+ manager = sprop.manager;
+ docount = 0;
+ history = 0;
+ scenarii = new LinkedList<Scenario>();
+ visibility = Visibility.PRIVATE;
+ state = ProgressState.inWORK;
+
+ credate = sprop.date; // Inherited attribute
+ if (credate == null) {
+ Calendar current = Calendar.getInstance();
+ credate = current.getTime(); // Today
+ }
+ lasdate = credate; // Inherited attribute
+ version = new Revision().incrementAs(state).toString();
+
+ if (sprop.summary != null) this.setAttribute( new DescriptionAttribute(this, sprop.summary) );
+
+ contributor = null;
+ validactor = null;
+ actor = null;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean addContributor (User user) {
+// -----------------------------------------
+ if (contributor == null) this.setShortCuts(); // Initializes contributor
+ for (Iterator<User> i=contributor.iterator(); i.hasNext(); ) {
+ User present = i.next();
+ if ( present.equals(user) ) return false;
+ }
+ boolean absent = actor.add(user); // User may already be a reviewer or an approver
+
+ this.addRelation( new ContributorRelation(this, user) );
+ if (absent) updateMe(); // Else, useless to re-index the study
+ contributor.add(user);
+ return true;
+ }
+
+ public SimulationContext addProjectContext (SimulationContext.Properties cprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, RuntimeException {
+// -------------------------------------------------------------------------------
+ SimulationContext added = this.getFirstStep().addSimulationContext(cprop);
+ updateMe();
+ return added;
+ }
+
+ public SimulationContext addProjectContext (SimulationContext context) {
+// ----------------------------------------------------------------------
+ SimulationContext added = this.getFirstStep().addSimulationContext(context);
+ updateMe();
+ return added;
+ }
+
+ public Scenario addScenario (Scenario.Properties sprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException, RuntimeException {
+// -------------------------------------------------------
+ if (sprop.getManager() == null) sprop.setManager(this.manager);
+
+ Scenario scenario = new Scenario(sprop.setOwnerStudy(this));
+ Scenario previous = sprop.getInsertAfter();
+ Session session = Database.getSession();
+
+ if (previous == null) {
+ scenarii.add(scenario);
+ } else {
+ scenarii.add(scenarii.indexOf(previous)+1, scenario);
+ }
+ session.update(this); // No need to update the Lucene index
+ session.save(scenario); // Must be done after updating this study because of the back reference to the study
+ if (sprop.getBaseStep() != null) {
+// No need to update the Knowledge Element index as Knowledge Elements are not copied
+ scenario.refresh(); // Because saving the scenario changes the hashcode of copied Publications
+ }
+ KnowledgeElementType ucase = KnowledgeElement.selectType("usecase");
+ KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
+ User admin = UserDirectory.selectUser(1); // First user created when creating the database
+ kprop.setType(ucase)
+ .setTitle(this.getTitle())
+ .setValue(scenario.getTitle())
+ .setAuthor(admin); // Internal Knowledge Element required by the validation process of knowledges
+ scenario.addKnowledgeElement(kprop);
+ return scenario;
+ }
+
+/**
+ * Returns all actors of this study other than the author, including contributors, reviewers and approvers.
+ *
+ * @return the actors of this study
+ * @see #hasActor(User)
+ */
+ public Set<User> getActors () {
+// -----------------------------
+ if (actor == null) setShortCuts();
+ return Collections.unmodifiableSet(actor);
+ }
+
+ public List<User> getContributors () {
+// ------------------------------------
+ if (contributor == null) setShortCuts();
+ return Collections.unmodifiableList(contributor); // May be empty
+ }
+
+ public ProgressState getProgressState () {
+// ----------------------------------------
+ return state;
+ }
+
+/**
+ * Returns the global unique reference of this study.
+ * The study reference is common to all versions of the study (versioning a study does not change its reference).
+ * The form of this study reference is defined in the configuration of the application server - see the SOM XML customization
+ * file.
+ */
+ public String getReference () {
+// -----------------------------
+ return sid;
+ }
+
+ public Scenario[] getScenarii () {
+// --------------------------------
+ return scenarii.toArray(new Scenario[scenarii.size()]);
+ }
+
+/**
+ * Returns the validation cycle of the given document type.
+ *
+ * @param doc the document type being subject of validation
+ * @return the validation cycle of the document, or null if not defined.
+ */
+ public ValidationCycle getValidationCycleOf (DocumentType type) {
+// ---------------------------------------------------------------
+ if (validactor == null) setShortCuts();
+ ValidationCycle result = validactor.get(type.getName());
+ if (result == null) {
+ if (type.isStepResult()) result = validactor.get("default"); // "default" validation cycle defined in the configuration, if exist
+ if (result == null) result = validactor.get("built-in");
+ }
+ return result;
+ }
+
+ public String getVersion () {
+// ---------------------------
+ return version;
+ }
+
+ public Visibility getVisibility () {
+// ----------------------------------
+ return visibility;
+ }
+
+/**
+ * Checks if the given user is actor of this study.
+ * Actors include contributors, reviewers and approvers.
+ *
+ * @return true if the given user is actor of this study.
+ * @see #getActors()
+ */
+ public boolean hasActor (User user) {
+// -----------------------------------
+ if (user == null) return false;
+ for (Iterator<User> i=this.getActors().iterator(); i.hasNext(); ) {
+ User involved = i.next();
+ if (involved.equals(user)) return true;
+ }
+ return false;
+ }
+
+/**
+ * Checks whether this study is in the Public or the Reference area of the repository.
+ *
+ * @return true if the study is public.
+ * @see #moveToPublic()
+ * @see #moveToReference()
+ */
+ public boolean isPublic () {
+// --------------------------
+ return (visibility != Visibility.PRIVATE);
+ }
+/**
+ * Checks if the given user participates to this study.
+ * The Study staff includes the author and contributors.
+ *
+ * @return true if the given user is actor of this study.
+ * @see #getContributors()
+ */
+ public boolean isStaffedBy (User user) {
+// --------------------------------------
+ if (user == null) return false;
+ if (manager.equals(user)) return true;
+ for (Iterator<User> i=getContributors().iterator(); i.hasNext();) {
+ if (i.next().equals(user)) return true;
+ }
+ return false;
+ }
+
+ public boolean isVersioned () {
+// -----------------------------
+ return (history > 0);
+ }
+
+/**
+ * Moves this study from the Private to the Public area of the repository.
+ *
+ * @return true if the move succeeded.
+ * @see #isPublic()
+ */
+ public boolean moveToPublic () {
+// ------------------------------
+ if (visibility != Visibility.PRIVATE) return false;
+
+ this.visibility = Visibility.PUBLIC;
+ if ( updateMe() ) {
+ return updateKnowledgeElementsIndex(); // If fails, the database roll-back is under responsibility of the caller
+ }
+ return false;
+ }
+
+/**
+ * Moves this study from the Public to the Reference area of the repository.
+ * For being moved to the Reference area, the study must previously be approved.
+ *
+ * @return true if the move succeeded.
+ * @see #moveToPublic()
+ * @see #isPublic()
+ * @see Publication#approve(Date)
+ */
+ public boolean moveToReference () {
+// ---------------------------------
+ if (state != ProgressState.APPROVED) return false;
+ if (visibility != Visibility.PUBLIC) return false;
+
+ this.visibility = Visibility.REFERENCE;
+ if ( updateMe() ) {
+ return updateKnowledgeElementsIndex(); // If fails, the database roll-back is under responsibility of the caller
+ }
+ return false;
+ }
+
+ public boolean publishes (Document doc) {
+// ---------------------------------------
+ if (!super.publishes(doc)) {
+ Scenario[] scene = this.getScenarii();
+ for (int i=0; i<scene.length; i++) {
+ if (scene[i].publishes(doc)) return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean removeContributor (User... users) {
+// ------------------------------------------------
+ if (contributor == null) this.setShortCuts(); // Initializes contributor
+ Boolean done = false;
+ for (int i=0; i<users.length; i++) {
+ User user = users[i];
+ for (Iterator<User> j=contributor.iterator(); j.hasNext(); ) {
+ User present = j.next();
+ if (!present.equals(user)) continue;
+
+ this.removeRelation(ContributorRelation.class, user);
+ j.remove(); // Updates the contributor shortcut
+ done = true;
+ break;
+ }
+ }
+ if (done) updateMe();
+ return done;
+ }
+
+ public boolean removeProjectContext (SimulationContext context) {
+// ---------------------------------------------------------------
+ boolean done = this.getFirstStep().removeSimulationContext(context);
+ updateMe();
+ return done;
+ }
+
+ public void setValidationCycle (DocumentType type, ValidationCycle.Properties vprop) {
+// ------------------------------------------------------------------------------------
+ if (validactor == null) setShortCuts(); // Initializes validactor and actor
+
+ String cname = type.getName();
+ ValidationCycle cycle = validactor.get(cname);
+
+ if (cycle != null && cycle.isAssigned()) {
+ cycle.resetActors(vprop);
+ } else
+ try {
+ cycle = new ValidationCycle(this, vprop.setDocumentType(type));
+
+ ValidationCycleRelation link = cycle.getContext();
+ this.addRelation(link);
+ validactor.put(cname, link.getTo()); // Replaces the cycle if exists as default,
+ }
+ catch (Exception error) {
+ logger.error("Unable to re-index Knowledge Elements, reason:", error);
+ return;
+ }
+ resetActorsShortCut();
+ updateMe(); // Re-index the study, just in case
+ }
+
+ public boolean shares (Document doc) {
+// ------------------------------------
+ Scenario[] scene = this.getScenarii(); // If shared from within the study, the document is shared by the scenarios
+ int counter = 0;
+
+ for (int i=0; i<scene.length; i++) {
+ if (!scene[i].publishes(doc)) continue;
+ if (counter == 1) return true;
+ counter += 1;
+ }
+ return false;
+ }
+
+ public boolean update (Properties sprop) throws InvalidPropertyException {
+// ----------------------------------------
+ if (sprop.title != null) this.title = sprop.title;
+ if (sprop.summary != null) this.setAttribute( new DescriptionAttribute(this, sprop.summary) );
+//TODO: To be completed
+ return updateMe();
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected boolean buildReference () {
+// -----------------------------------
+ String pattern = getReference(); // The study being supposed just created, its reference is the reference pattern
+ IDBuilder tool = Database.selectIDBuilder(credate);
+ if (tool == null) {
+ tool = new IDBuilder(credate);
+ Database.getSession().save(tool);
+ }
+ this.sid = tool.buildReference(pattern, this);
+ return true;
+ }
+
+/**
+ * Demotes this study from In-Check to In-Draft then In-Work states.
+ * This function is called internally when demoting the final result document of the study.
+ *
+ * @return true if the demotion succeeded.
+ */
+ protected boolean demote () {
+// ---------------------------
+ if (state == ProgressState.inCHECK) state = ProgressState.inDRAFT;
+ else if (state == ProgressState.inDRAFT) state = ProgressState.inWORK;
+ else return false;
+ return updateMe();
+ }
+
+ protected int generateLocalIndex () {
+// -----------------------------------
+ docount = docount + 1;
+ Database.getSession().update(this);
+ return docount;
+ }
+
+ protected int getLastLocalIndex () {
+// ----------------------------------
+ return docount;
+ }
+
+ protected void loadWorkflow () {
+// ------------------------------
+ setShortCuts();
+ }
+/**
+ * Promotes this study from In-Work to In-Draft then In-Check and APPROVED states.
+ * This function is called internally when promoting the final result document of the study.
+ *
+ * @return true if the demotion succeeded.
+ */
+ protected boolean promote () {
+// ----------------------------
+ if (state == ProgressState.inWORK) {
+ state = ProgressState.inDRAFT;
+ } else
+ if (state == ProgressState.inDRAFT) {
+ this.state = ProgressState.inCHECK;
+ Revision myvers = new Revision(version);
+ if (myvers.isMinor()) {
+ version = myvers.incrementAs(state).toString();
+ }
+ } else
+ if (state == ProgressState.inCHECK) {
+ state = ProgressState.APPROVED;
+ }
+ else return false;
+
+ return updateMe();
+ }
+
+// ==============================================================================================================================
+// Private member functions
+// ==============================================================================================================================
+
+ private void resetActorsShortCut () {
+// -----------------------------------
+ actor.clear();
+// Get all actors involved in validation cycles
+ for (Iterator<ValidationCycle> i=validactor.values().iterator(); i.hasNext(); ) {
+ ValidationCycle cycle = i.next();
+ User[] user = cycle.getAllActors();
+ for (int j=0; j<user.length; j++) actor.add(user[j]);
+ }
+// Get all other actors
+ for (Iterator<Relation> i=this.getAllRelations().iterator(); i.hasNext(); ) {
+ Relation link = i.next();
+ Class<?> kindof = link.getClass().getSuperclass();
+ if (!kindof.equals(ActorRelation.class)) continue;
+ actor.add( ((ActorRelation)link).getTo() );
+ }
+ }
+
+ private void setShortCuts () {
+// ----------------------------
+ contributor = new Vector<User>();
+ validactor = new HashMap<String,ValidationCycle>();
+ actor = new HashSet<User>();
+
+// Get the contributors
+ for (Iterator<Relation> i=getRelations(ContributorRelation.class).iterator(); i.hasNext(); ) {
+ ContributorRelation link = (ContributorRelation)i.next();
+ contributor.add(link.getTo());
+ }
+// Get the validation cycles specific to this study
+ for (Iterator<Relation> i=getRelations(ValidationCycleRelation.class).iterator(); i.hasNext(); ) {
+ ValidationCycleRelation link = (ValidationCycleRelation)i.next();
+ validactor.put(link.getDocumentType().getName(), link.getTo()); // The associated document type is necessarily not null in this context
+ }
+// Get the validation cycles coming from the configured workflow and not overridden in this study
+ for (Iterator<ProjectSettings.ValidationCycle> i=ProjectSettings.getAllValidationCycles().iterator(); i.hasNext(); ) {
+ ProjectSettings.ValidationCycle cycle = i.next();
+ String type = cycle.getName();
+ if (!validactor.containsKey(type)) validactor.put(type, new ValidationCycle(this, cycle));
+ }
+// Get all corresponding actors
+ for (Iterator<ValidationCycle> i=validactor.values().iterator(); i.hasNext(); ) {
+ ValidationCycle cycle = i.next();
+ User[] user = cycle.getAllActors();
+ for (int j=0; j<user.length; j++) actor.add(user[j]);
+ }
+// Get all other actors
+ for (Iterator<Relation> i=this.getAllRelations().iterator(); i.hasNext(); ) {
+ Relation link = i.next();
+ Class<?> kindof = link.getClass().getSuperclass();
+ if (!kindof.equals(ActorRelation.class)) continue;
+ actor.add( ((ActorRelation)link).getTo() );
+ }
+ }
+
+ private boolean updateKnowledgeElementsIndex() {
+// ----------------------------------------------
+ try {
+ Index lucin = Database.getIndex();
+
+ for (Iterator<Scenario> i=scenarii.iterator(); i.hasNext(); ) {
+ Scenario scene = i.next();
+ for (Iterator<KnowledgeElement> j=scene.getAllKnowledgeElements().iterator(); j.hasNext(); ) {
+ KnowledgeElement kelm = j.next();
+ lucin.update(kelm);
+ }
+ }
+ return true;
+ }
+ catch (Exception error) {
+ logger.error("Unable to re-index Knowledge Elements, reason:", error);
+ return false;
+ }
+ }
+
+ private boolean updateMe () {
+// ---------------------------
+ try {
+ Database.getSession().update(this); // Update of relational base
+ Database.getIndex().update(this); // Update of Lucene index
+ return true;
+ }
+ catch (Exception error) {
+ logger.error("Unable to re-index the study '" + getIndex() + "', reason:", error);
+ return false;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class defining the default rights related to operations on studies.
+ * On the contrary of documents, a study cannot directly be reviewed or approved. It is reviewed or approved through
+ * its final report.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.User;
+
+
+public class StudyRights {
+
+ private User user;
+ private Study operand;
+ private boolean author = false; // For optimizing
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public StudyRights (User user, Study study) {
+// -------------------------------------------
+ this.user = user;
+ this.operand = study;
+ this.author = operand.getAuthor().equals(user); // user may be null
+ }
+ public StudyRights (Study study) {
+// --------------------------------
+ this.user = study.getAuthor();
+ this.operand = study;
+ this.author = true; // In order to ignore the author in this context
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public boolean canAddScenario () {
+// --------------------------------
+ if (operand.getProgressState() != ProgressState.inWORK && operand.getProgressState() != ProgressState.inDRAFT) return false;
+ return operand.isStaffedBy(user);
+ }
+
+/**
+ * Checks if the user has right to edit the description of the study.
+ * All actors of the study have such right, including the author, contributors, reviewers and approvers.
+ *
+ * @return true if the user has right to edit the description.
+ */
+ public boolean canEditDescription () {
+// ------------------------------------
+ return (operand.getAuthor().equals(user) || operand.hasActor(user));
+ }
+
+ public boolean canEditProperties () {
+// -----------------------------------
+ return author;
+ }
+
+/**
+ * Checks if the user has right to move the study from the Private to the Public area of the repository.
+ * Only the author of the study have such right.
+ *
+ * @return true if the user has right to edit the description.
+ */
+ public boolean canPublish () {
+// ----------------------------
+ if (!author) return false;
+ return (!operand.isPublic());
+ }
+
+ public boolean canPurge () {
+// --------------------------
+ if (!author) return false;
+ return operand.isVersioned();
+ }
+
+ public boolean canRemove () {
+// ---------------------------
+ if (operand.getProgressState() != ProgressState.inWORK && operand.getProgressState() != ProgressState.inDRAFT) return false;
+ return author;
+ }
+
+ public boolean canVersion () {
+// ----------------------------
+ if (operand.getProgressState() != ProgressState.inWORK && operand.getProgressState() != ProgressState.inDRAFT) return false;
+ return operand.isStaffedBy(user);
+ }
+
+// ==============================================================================================================================
+// Getter
+// ==============================================================================================================================
+
+ public Study getOperand () {
+// --------------------------
+ return operand;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <typedef name="StampType" class="org.splat.kernel.GenericEnumType">
+ <param name="enumClassName">org.splat.som.ValidationStep</param>
+ </typedef>
+
+ <class name="org.splat.som.Timestamp" table="stamp" lazy="false">
+
+<!-- Properties inherited from Any
+ -->
+ <id name="rid" type="int" column="rid" unsaved-value="0" access="field">
+ <generator class="org.splat.kernel.IDGenerator"/>
+ </id>
+ <set name="attributes" inverse="true" lazy="false" cascade="all-delete-orphan" access="field">
+ <key column="owner" />
+ <one-to-many class="org.splat.kernel.Attribute" />
+ </set>
+
+<!-- Timestamp properties
+ -->
+ <!-- StampRelation context -->
+ <one-to-one name="context" property-ref="refer" access="field" />
+
+ <!-- ValidationCycle.Step mytype -->
+ <property type="StampType" name="mytype" column="type" access="field" not-null="true" />
+
+ <!-- User author -->
+ <many-to-one name="author" column="author" access="field" not-null="true" />
+
+ <!-- Date sdate, including the time section -->
+ <property type="timestamp" name="sdate" column="date" access="field" not-null="true" />
+
+ </class>
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.Comparator;
+import java.util.Date;
+
+import org.splat.kernel.Any;
+import org.splat.kernel.Attribute;
+import org.splat.kernel.User;
+
+
+public class Timestamp extends Any {
+
+ private StampRelation context;
+ private ValidationStep mytype;
+ private User author;
+ private Date sdate;
+
+ public static class ComparatorByDate implements Comparator<Timestamp> {
+// ---------------------------------------------------------------------
+ public int compare(Timestamp t1, Timestamp t2)
+ {
+ return t1.getDate().compareTo(t2.getDate());
+ }
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected Timestamp () {
+ }
+// Internal constructors
+ protected Timestamp (ValidationStep type, Document from, User to, Date sdate) {
+// -----------------------------------------------------------------------------
+ super((Attribute)null); // For building the collection of attributes
+ this.mytype = type;
+ this.author = to;
+ this.sdate = sdate;
+ this.context = new StampRelation(from, this);
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public User getAuthor () {
+// ------------------------
+ return author;
+ }
+
+ public String getComment () {
+// ---------------------------
+ CommentAttribute field = (CommentAttribute)this.getAttribute(CommentAttribute.class);
+ String result = null;
+ if (field != null) result = field.getValue();
+ return result;
+ }
+
+ public Date getDate () {
+// ----------------------
+ return sdate;
+ }
+
+ public ValidationStep getType () {
+// --------------------------------
+ return mytype;
+ }
+
+ public void setComment (String comment) {
+// ---------------------------------------
+ if (comment != null) this.setAttribute( new CommentAttribute(this, comment) );
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected StampRelation getContext () {
+// -------------------------------------
+ return context;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+
+
+public class UsedByRelation extends Relation {
+
+ private Document refer;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected UsedByRelation () {
+ }
+// Initialization constructors
+ protected UsedByRelation (Document from, Document to) {
+// -----------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.reverse = new UsesRelation(this, to, from);
+ }
+// Internal constructor
+ protected UsedByRelation (Relation back, Document from, Document to) {
+// --------------------------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.reverse = back;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Class<? extends Relation> getReverseClass () {
+// ---------------------------------------------------
+ return UsesRelation.class;
+ }
+ public Document getTo () {
+// -------------------------
+ return refer;
+ }
+ public boolean isBidirectional () {
+// ---------------------------------
+ return true;
+ }
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (Document)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+
+
+public class UsesRelation extends Relation {
+
+ private Document refer;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected UsesRelation () {
+ }
+// Initialization constructors
+ protected UsesRelation (Document from, Document to) {
+// ---------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.reverse = new UsedByRelation(this, to, from);
+ }
+// Internal constructor
+ protected UsesRelation (Relation back, Document from, Document to) {
+// ------------------------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.reverse = back;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public Class<? extends Relation> getReverseClass () {
+// ---------------------------------------------------
+ return UsedByRelation.class;
+ }
+
+ public Document getTo () {
+// -------------------------
+ return refer;
+ }
+ public boolean isBidirectional () {
+// ---------------------------------
+ return true;
+ }
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (Document)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
+<!--
+ -
+ - @author Daniel Brunier-Coulin
+ - @copyright OPEN CASCADE 2012
+ -->
+
+<hibernate-mapping>
+
+ <class name="org.splat.som.ValidationCycle" table="cycle" lazy="false">
+
+<!-- Properties inherited Persistent
+ -->
+ <id name="rid" column="rid" access="field">
+ <generator class="increment"/>
+ </id>
+
+<!-- ValidationCycle properties
+ -->
+ <!-- ValidationCycleRelation context -->
+ <one-to-one name="context" property-ref="refer" access="field" />
+
+ <!-- DocumentType mytype -->
+ <many-to-one name="mytype" column="type" access="field" not-null="true" />
+
+ <!-- User publisher -->
+ <many-to-one name="publisher" column="publisher" access="field" />
+
+ <!-- User reviewer -->
+ <many-to-one name="reviewer" column="reviewer" access="field" />
+
+ <!-- User approver -->
+ <many-to-one name="approver" column="approver" access="field" />
+
+ <!-- User signatory -->
+ <many-to-one name="signatory" column="signatory" access="field" />
+
+ </class>
+</hibernate-mapping>
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ * Class defining the validation cycle applicable to documents of a given type.<br/>
+ * A validation cycle specifies the validation steps of documents complying with by this cycle, as well as the actors
+ * involved in such validations. Once past, each validation step is written down by a time-stamp attached to the validated
+ * document.<br/>
+ * <br/>
+ * The possible validation steps are Promotion, Review, Approval and Acceptance (or Refusal), all being optional,
+ * except Promotion.<br/>
+ * When enabled, Review and Approval involve one given user while Promotion and Acceptance have default actors defined by
+ * the application. The default actors are:
+ * <ul>
+ * <li>Promotion by either the author of the document or the responsible of study</li>
+ * <li>Acceptance by the customer, possibly represented by an internal user</li>
+ * </ul>
+ * Explicit Promotion and Acceptance actors can be defined, for example to force some documents to be published by the
+ * responsible of study only.<br/>
+ * <br/>
+ * Default validation cycles are defined in the configuration workflow, the responsible of studies overriding them when necessary.
+ * They are attached to studies at a given document type.<br/>
+ *
+ * @see Study#addValidationCycle(DocumentType,Properties)
+ * @see Study#getValidationCycleOf(DocumentType)
+ * @see Timestamp
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.util.List;
+import java.util.Vector;
+
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.MissedPropertyException;
+import org.splat.kernel.MultiplyDefinedException;
+import org.splat.kernel.Persistent;
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+
+public class ValidationCycle extends Persistent {
+
+ private ValidationCycleRelation context;
+ private DocumentType mytype; // Null if the referenced validation cycle is a default one
+ private User publisher;
+ private User reviewer; // Null if no REVIEW validation step
+ private User approver; // Null if no APPROVAL validation step
+ private User signatory; // Null if no ACCEPTANCE validation step
+
+ public enum Actor {
+ manager, // Responsible of study
+ Nx1, // N+1 manager of the responsible of study
+ Nx2, // N+2 manager of the responsible of study
+ customer // Customer
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Fields initialization class
+ public static class Properties extends Persistent.Properties {
+// ------------------------------------------------------------
+ DocumentType doctype = null;
+ User publisher = null;
+ User reviewer = null;
+ User approver = null;
+ User signatory = null;
+
+// - Public services
+
+ public void clear () {
+ super.clear();
+ doctype = null;
+ publisher = null;
+ reviewer = null;
+ approver = null;
+ signatory = null;
+ }
+// - Protected services
+
+ protected Properties setDocumentType (DocumentType type)
+ {
+ doctype = type;
+ return this;
+ }
+// - Properties setter
+
+ public Properties setActor (ValidationStep step, User actor)
+ {
+ if (step == ValidationStep.PROMOTION) publisher = actor;
+ else if (step == ValidationStep.REVIEW) reviewer = actor;
+ else if (step == ValidationStep.APPROVAL) approver = actor;
+ else if (step == ValidationStep.ACCEPTANCE || step == ValidationStep.REFUSAL) signatory = actor;
+ return this;
+ }
+// - Global validity check
+
+ public void checkValidity() throws MissedPropertyException
+ {
+ if (doctype == null) throw new MissedPropertyException("type");
+ }
+ }
+// Database fetch constructor
+ protected ValidationCycle () {
+ }
+// Internal constructors
+ protected ValidationCycle (Study from, ProjectSettings.ValidationCycle cycle) {
+// -----------------------------------------------------------------------------
+ Actor[] actype = cycle.getActorTypes();
+ User.Properties uprop = new User.Properties();
+
+ mytype = Document.selectType(cycle.getName()); // Null in case of default validation cycle
+// context = new ValidationCycleRelation(from, this);
+ context = null; // Validation cycle defined in the workflow
+ for (int i=0; i<actype.length; i++) {
+ User actor = null;
+ if (actype[i] != null)
+ try {
+ if (actype[i] == Actor.manager) {
+ actor = from.getAuthor();
+ } else
+ if (actype[i] == Actor.Nx1) {
+ List<User> manager = UserDirectory.selectUsersWhere(uprop.setOrganizationName("Nx1"));
+ if (manager.size() == 1) actor = manager.get(0);
+ } else
+ if (actype[i] == Actor.Nx2) {
+ List<User> manager = UserDirectory.selectUsersWhere(uprop.setOrganizationName("Nx2"));
+ if (manager.size() == 1) actor = manager.get(0);
+ } else { /* Actor.customer */
+ actor = from.getAuthor();
+//TODO: Get the customer of the study, if exists
+ }
+ } catch (Exception e) { // Should not happen
+ actor = null;
+ }
+ if (i == 0) reviewer = actor;
+ else if (i == 1) approver = actor;
+ else if (i == 2) signatory = actor;
+ }
+ }
+ protected ValidationCycle (Study from, Properties vprop) throws MissedPropertyException, InvalidPropertyException, MultiplyDefinedException {
+// --------------------------------------------------------
+ super(vprop); // Throws one of the above exception if not valid
+ mytype = vprop.doctype;
+ publisher = vprop.publisher; // May be null
+ reviewer = vprop.reviewer; // May be null
+ approver = vprop.approver; // May be null
+ signatory = vprop.signatory; // May be null
+ context = new ValidationCycleRelation(from, this);
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+/**
+ * Checks if a given validation step is enabled in this validation cycle.
+ *
+ * @param step the validation step checked.
+ * @return true if the given validation step is enabled.
+ */
+ public boolean enables (ValidationStep step) {
+// -------------------------------------------
+ if (step == ValidationStep.PROMOTION) return true;
+ else if (step == ValidationStep.REVIEW) return (reviewer != null);
+ else if (step == ValidationStep.APPROVAL) return (approver != null);
+ else if (step == ValidationStep.ACCEPTANCE || step == ValidationStep.REFUSAL) return (signatory != null);
+ return false;
+ }
+
+/**
+ * Returns the user involved in a given step of this document validation cycle.
+ * When enabled, the Review and Approval steps have one explicit actor returned by this function. On the other hand,
+ * Promotion and Acceptance have default actors - they respectively are the author of the document or the responsible of study,
+ * and the customer or its representative internal user. In this context, a null user is returned.
+ *
+ * @param step the validation step
+ * @return the user involved by the given step or null if the step is disabled or the actors are the default ones
+ * @see #getAllActors()
+ * @see #enables
+ */
+ public User getActor (ValidationStep step) {
+// -----------------------------------------
+ if (step == ValidationStep.PROMOTION) return publisher;
+ else if (step == ValidationStep.REVIEW) return reviewer;
+ else if (step == ValidationStep.APPROVAL) return approver;
+ else if (step == ValidationStep.ACCEPTANCE || step == ValidationStep.REFUSAL) return signatory;
+ return null;
+ }
+
+/**
+ * Returns all explicit actors of this document validation cycle, that is, actors of enabled validation cycles, excluding
+ * the default actors.
+ *
+ * @return the users explicitly involved by the steps of this validation cycle
+ * @see #getActor(ValidationStep)
+ * @see #enables(ValidationStep)
+ */
+ public User[] getAllActors () {
+// -----------------------------
+ Vector<User> result = new Vector<User>();
+ if (publisher != null) result.add(publisher);
+ if (reviewer != null) result.add(reviewer);
+ if (approver != null) result.add(approver);
+ if (signatory != null) result.add(signatory);
+ return result.toArray(new User[result.size()]);
+ }
+
+/**
+ * Return the document type to which this validation cycle applies. If this validation cycle is a default one, the document
+ * type is not defined.
+ *
+ * @return the document type involved by this validation cycle, or null if this validation cycle is a default one.
+ * @see #isDefault()
+ */
+ public DocumentType getDocumentType () {
+// --------------------------------------
+ return mytype; // May be null
+ }
+
+/**
+ * Checks if this validation cycle is assigned to a study. If not, it is common to all studies of the workflow in which it has
+ * been defined.
+ *
+ * @return true if this validation cycle is assigned to a study.
+ */
+ public boolean isAssigned () {
+// ----------------------------
+ return (context != null);
+ }
+
+/**
+ * Checks if this validation cycle is a default one, either specific to a Study or defined in the configuration workflow or
+ * built-in.<br/>
+ * Default validation cycle are not attached to any document type. As for built-in ones, they doesn't include any validation step
+ * other than Promotion.
+ *
+ * @return true if this validation cycle is a default one.
+ * @see #getDocumentType()
+ * @see ProjectSettings#getNewValidationCycle()
+ */
+ public boolean isDefault () {
+// ---------------------------
+ return (mytype == null);
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected ValidationCycleRelation getContext () {
+// -----------------------------------------------
+ return context;
+ }
+
+ protected void remove (ValidationStep step) {
+// ------------------------------------------
+ if (step == ValidationStep.REVIEW) reviewer = null;
+ else if (step == ValidationStep.APPROVAL) approver = null;
+ else if (step == ValidationStep.ACCEPTANCE || step == ValidationStep.REFUSAL) signatory = null;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+
+ protected void resetActors (Properties vprop) {
+// ---------------------------------------------
+ publisher = vprop.publisher; // May be null
+ reviewer = vprop.reviewer; // May be null
+ approver = vprop.approver; // May be null
+ signatory = vprop.signatory; // May be null
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+
+ protected void setActor (ValidationStep step, User actor) {
+// --------------------------------------------------------
+ if (step == ValidationStep.PROMOTION) publisher = actor;
+ else if (step == ValidationStep.REVIEW) reviewer = actor;
+ else if (step == ValidationStep.APPROVAL) approver = actor;
+ else if (step == ValidationStep.ACCEPTANCE || step == ValidationStep.REFUSAL) signatory = actor;
+ if (this.isSaved()) Database.getSession().update(this);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+
+
+public class ValidationCycleRelation extends Relation {
+
+ private ValidationCycle refer;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected ValidationCycleRelation () {
+ }
+// Internal constructor
+ protected ValidationCycleRelation (Study from, ValidationCycle to) {
+// ------------------------------------------------------------------
+ super(from);
+ this.refer = to;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+/**
+ * Returns the document type to which the validation cycle referenced by this relation applies. If the referenced validation cycle
+ * is a default one, the associated document type is not defined.
+ *
+ * @return the document type involved by the referenced validation cycle, or null if this latter is a default one.
+ */
+ public DocumentType getDocumentType () {
+// --------------------------------------
+ return refer.getDocumentType();
+ }
+
+ public ValidationCycle getTo () {
+// -------------------------------
+ return refer;
+ }
+
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (ValidationCycle)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public enum ValidationStep {
+ PROMOTION, REVIEW, APPROVAL, ACCEPTANCE, // Validation steps subject of time stamp
+ DISTRIBUTION, REFUSAL // Additional Time stamps
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import org.splat.kernel.Persistent;
+import org.splat.kernel.Relation;
+
+
+public class VersionsRelation extends Relation {
+
+// Persistent field
+ private Document refer;
+
+// Transient fields
+ private boolean got; // For optimizing getDescription()
+ private String description; // Null if this is not described
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+// Database fetch constructor
+ protected VersionsRelation () {
+// -----------------------------
+ got = false;
+ description = null;
+ }
+// Initialization constructors
+ protected VersionsRelation (Document from, Document to) {
+// -------------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.got = true;
+ this.description = null; // Conversion not described
+ }
+ protected VersionsRelation (Document from, Document to, String description) {
+// ---------------------------------------------------------------------------
+ super(from);
+ this.refer = to;
+ this.got = true;
+ this.description = description; // May be null
+ if (description != null) this.setAttribute( new DescriptionAttribute(this, description) );
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public String getDescription () {
+// -------------------------------
+ if (!got) {
+ DescriptionAttribute field = (DescriptionAttribute)this.getAttribute(DescriptionAttribute.class);
+ if (field != null) description = field.getValue();
+ got = true; // Don't need to be modified later as set and remove attribute functions are private to this class
+ }
+ return description; // May be null
+ }
+
+ public Document getTo () {
+// -------------------------
+ return refer;
+ }
+ protected void setTo (Persistent to) {
+// ------------------------------------
+ refer = (Document)to;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.som;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+public enum Visibility {
+ PRIVATE, // Qualifies studies stored into the private area
+ PUBLIC, // Qualifies studies stored into the public area
+ REFERENCE // Qualifies studies stored into the reference area
+}
\ No newline at end of file
--- /dev/null
+name.module = Centre d''études
+
+size.format = #,##0 Ko
+date.format = dd/MM/yyyy
+dd/MM/yyyy = jj/mm/aaaa
+
+menu.step.1 = Spécifier l''étude
+menu.step.2 = Concevoir le scénario
+menu.step.3 = Créer la géométrie
+menu.step.4 = Générer le modèle d''analyse
+menu.step.5 = Entrer les conditions de calcul
+menu.step.6 = Effectuer le calcul
+menu.step.7 = Analyser les résultats
+menu.step.8 = Capitaliser ce cas d''étude
+menu.step.9 = Finaliser l''étude
+
+folder.step.1 = Spécification de l''étude
+folder.step.2 = Description du scénario
+folder.step.3 = Géométrie
+folder.step.4 = Modèle d''analyse
+folder.step.5 = Conditions de calcul
+folder.step.6 = Schéma de calcul
+folder.step.7 = Résultats
+folder.step.8 = Élements de connaissances
+folder.step.9 = Rapport final
+
+type.document.requirements = Cahier des charges
+type.document.specification = Document de spécification
+type.document.design = Document de conception
+type.document.geometry = Géométrie
+type.document.model = Modèle d''analyse
+type.document.loads = Conditions de calcul
+type.document.script = Script d''exécution
+type.document.log = Log d''exécution
+type.document.results = Résultats de calcul
+type.document.report = Rapport final
+type.document.memorandum = Note technique
+type.document.minutes = Compte rendu
+
+type.context.customer = Client
+type.context.product = Produit
+type.context.phase = Phase du produit
+type.context.need = Besoin client
+type.context.purpose = Finalité de l''étude
+type.context.physic = Type de physique
+type.context.object = Objet étudié
+type.context.part = Objet modélisé
+type.context.geometry = Type de géométrie
+type.context.model = Type de modèle
+type.context.element = Type d''éléments
+type.context.shape = Géométrie des éléments
+type.context.order = Degré des éléments
+type.context.analysis = Type d''analyse
+type.context.platform = Plate-forme logicielle
+type.context.module = Module de calcul
+type.context.component = Brique technologique
+
+type.knowledge.bestpractice = Bonne pratique
+type.knowledge.limitation = Limitation
+type.knowledge.inconsistency = Incohérence
+type.knowledge.metrics = Métrique
+type.knowledge.improvement = Amélioration
+
+history.creation = Document créé par
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project-structure>
+
+
+<!-- 1. Database physical location
+ The database includes an SQL base containing the studies and the document metadata, a Lucene index used for searching studies and
+ knowledges, a file vault including all actual data and a directory where files uploaded and downloaded by users are temporarily saved.
+ All these information are located in sub-directories of a common root directory defined below.
+ This directory must be visible from the server application (Tomcat).
+ -->
+ <database>
+ <repository disk="C:/Repository" />
+ </database>
+
+
+<!-- 2. Formats
+ -->
+ <formats>
+
+<!-- 2.1 Project elements identification scheme
+ Studies, Knowledges and Documents are identified by unique user references. The structure of these references is customizable.
+ You customize references through patterns.
+ A reference's pattern is a character string including format directives. These format directives allow you to insert
+ some information into the reference. The following directives are available:
+ - %yy or %yyyy for inserting the entity creation year on 2 or 4 digits
+ - %0000 for inserting a unique index, the number of digits being defined by the number of 0
+ The above index is unique in the scope of cycle defined by the first format directive (year). In other words, this index
+ restarts every new year. As such, for making references unique on this application server, both format directives (cycle
+ and index) must be present in the pattern.
+ Other characters are simply inserted as is in generated references. They can be used for extending the reference uniqueness
+ beyond application servers, by adding a prefix specific to a given server (for example, a company department name).
+ Given that these references may be used as directory or file names of the repository vault, the pattern must not include
+ illicit characters such as '/', '?', '<', '>' etc.
+ -->
+ <references study="DER%yy%0000"/>
+
+<!-- 2.2 Physical files naming scheme
+ The physical data files stored into the repository vault can be named as follows:
+ - By the user-defined title of corresponding documents ("title" name attribute below)
+ - Encoded by a built-in scheme ("encoded" name attribute)
+ - As is, that is, by keeping the name of the imported file ("asis" name attribute - not yet supported)
+ Remarks:
+ - When using the title scheme, as file names may include accent characters, client browsers must be configured for
+ NOT encoding URLs as UTF-8.
+ - Whatever is the naming scheme used, in order to avoid name clashes, file names are anyway suffixed by an index
+ unique in the scope of the owner study.
+ -->
+ <files name="encoded"/>
+
+<!-- 2.3 Document versions format
+ Defines the format in which version numbers are presented to users.
+ A version number includes a major, a minor and a branch number, when exist.
+ -->
+ <versions pattern="%M.%m[-%s]"/>
+ </formats>
+
+
+<!-- 3. Study step types
+ The user activities involved in studies are defined by study step types. The tag below simply lists all possible steps
+ applicable in a workflow.
+ Step types are defined by type names used in the API for accessing to study activities.
+ The document data produced during these activities are saved into the repository vault. They can be structured in
+ sub-directories of each study root directory. As such, the definition of study step types includes the path of the
+ corresponding sub-directory.
+ The list below does not define the order of steps - this order is specified by the workflow. The steps are listed in
+ an order defining the internal index of steps. These index are used for localizing the activity names and corresponding
+ folder names.
+
+ Remark:
+ - "scenario" is a reserved type name.
+ -->
+ <steps>
+ <article type="specification" path="1.Study"/>
+ <article type="design" path="1.Study"/>
+ <article type="modeling" path="2.Geometry"/>
+ <article type="meshing" path="3.Mesh"/>
+ <article type="preprocessing" path="4.Load"/>
+ <article type="solving" path="5.Result"/>
+ <article type="postprocessing" path="6.Analysis"/>
+ <article type="capitalization" path="7.Knowledge"/>
+ <article type="reporting" path="1.Study"/>
+ </steps>
+
+
+<!-- 4. Document types
+ All documents under the control of the Study Manager are typed. The tag below simply lists all possible document types
+ involved in a workflow.
+ Document types are defined by type names used in the API for manipulating document types. These type names are also used
+ for localizing document types.
+ The documents have dependencies in accordance to their type. As such, the definition of each document type include the
+ potential dependencies of corresponding documents.
+
+ Warning: Articles must be ordered in a way that dependent document types (uses attribute values) must previously be defined.
+ Example: "requirements" type must be defined before "specification" because "specification" uses "requirements".
+ Remarks:
+ - The dependencies are transitive (if document A depends on document B, itself depending on C, A implicitly depends on C).
+ - "knowledge" is a reserved word qualifying Knowledge Elements. So, it must not be used as a document type name.
+ - "default" and "built-in" are also reserved words used for defining validation cycles.
+ - In this version, the "uses" attribute is limited to 1 document type only.
+ -->
+ <documents>
+ <article type="requirements"/>
+ <article type="specification" uses="requirements"/>
+ <article type="design" uses="specification"/>
+ <article type="geometry" uses="design"/>
+ <article type="model" uses="geometry"/>
+ <article type="loads" uses="model"/>
+ <article type="script" uses="loads"/>
+ <article type="log" uses="script"/>
+ <article type="results" uses="script"/>
+ <article type="report" uses="results"/>
+ <article type="memorandum"/>
+ <article type="minutes"/>
+ </documents>
+
+
+<!-- 5. Simulation Context types
+ As documents, the simulation contexts are typed. The tag below simply lists the simulation context types available initially,
+ after the installation of the product. These types can then be extended on the fly by end-users when assigning simulation
+ contexts to studies.
+ Simulation context types are defined by type names used in the API for manipulating simulation contexts. These type names
+ are also used for localizing simulation contexts types.
+
+ Warning: The Simulation Context type "product" is mandatory as it is used when creating a study.
+ -->
+ <contexts>
+
+ <!-- General information -->
+ <article type="customer"/>
+ <article type="product"/>
+ <article type="phase"/> <!-- Phase of the product -->
+ <article type="need"/> <!-- Customer needs -->
+ <article type="purpose"/> <!-- Objective of the study -->
+ <article type="physic"/> <!-- Structure analysis, Thermal-hydraulics, Neutronic... -->
+
+ <!-- Geometry characteristics Examples: -->
+ <article type="object"/> <!-- Car, Plane, Equipment... -->
+ <article type="part"/> <!-- Crankcase, Outer layer... -->
+ <artivle type="geometry"/> <!-- Surface, Volume -->
+
+ <!-- Model characteristics Examples: -->
+ <article type="model"/> <!-- CSG, FEM... -->
+ <article type="element"/> <!-- Bar, Surface, Volume -->
+ <article type="shape"/> <!-- (Surface) Triangle, Quadrangle... (Volume) Tetrahedron, Hexahedron... -->
+ <article type="order"/> <!-- First-order, Second-order... -->
+
+ <!-- Analysis type Examples: -->
+ <article type="analysis"/> <!-- Static, Dynamic... -->
+
+ <!-- Software tools used -->
+ <article type="platform"/>
+ <article type="module"/>
+ <article type="component"/>
+ </contexts>
+
+
+<!-- 6. Knowledge Elements types
+ As documents and simulation contexts, the knowledges are typed. The tag below lists these knowledge types.
+ Knowledge types are simply defined by type names used in the API for manipulating knowledge types. These type names
+ are also used for localizing knowledge types.
+
+ Warning: The Knowledge Elements type "usecase" is reserved for internal use.
+ -->
+ <knowledges>
+ <article type="bestpractice"/>
+ <article type="limitation"/>
+ <article type="inconsistency"/>
+ <article type="metrics"/>
+ <article type="improvement"/>
+ </knowledges>
+
+
+<!-- 7. User activities
+
+ Remarks:
+ - Step names must naturally be unique.
+ - Simulation Contexts must be attached to one classification step only.
+ - Result document types must be results of one step only and be part of contents of the corresponding step.
+ -->
+ <activities>
+ <step name="specification">
+ <classification context="customer,product,phase,need,purpose,physic"/>
+ <flow contents="requirements,specification,minutes" result="specification"/>
+ <storage path="1.Study"/>
+ </step>
+ <scenario>
+ <step name="design">
+ <flow contents="design,memorandum,minutes" result="design"/>
+ <storage path="1.Study"/>
+ </step>
+ <step name="modeling">
+ <classification context="object,part,geometry"/>
+ <flow contents="geometry,memorandum,minutes" result="geometry"/>
+ <storage path="2.Geometry"/>
+ </step>
+ <step name="meshing">
+ <classification context="model,element,shape,order"/>
+ <flow contents="model,memorandum,minutes" result="model"/>
+ <storage path="3.Mesh"/>
+ </step>
+ <step name="preprocessing">
+ <classification context="analysis"/>
+ <flow contents="loads,script,minutes" result="loads"/>
+ <storage path="4.Analysis"/>
+ </step>
+ <step name="solving">
+ <classification context="platform,module,component"/>
+ <flow contents="log,results,minutes" result="results"/>
+ <storage path="5.Result"/>
+ </step>
+ <step name="postprocessing">
+ <flow contents="memorandum,minutes"/>
+ <storage path="6.Report"/>
+ </step>
+ <step name="capitalization">
+ <flow contents="knowledge"/>
+ <storage path="6.Report"/>
+ </step>
+ </scenario>
+ <step name="reporting">
+ <flow contents="report,minutes" result="report"/>
+ <storage path="1.Study"/>
+ </step>
+ </activities>
+
+
+<!-- 8. Document validation cycles
+ Validation cycles define the actors involved in the validation steps of documents. These steps can be
+ "review", "approval" and "acceptance".
+ Remarks:
+ - Each validation cycle is defined by a tag corresponding to the type of an activity result document.
+ - The actors of validation steps can be
+ "manager", referring the responsible of study,
+ "Nx1", referring the manager of the department (see User definition for more information),
+ "Nx2", referring the boss of the department manager,
+ "customer" (most likely involved in the acceptance step).
+ -->
+ <validations>
+ <specification review="Nx1" approval="Nx2"/>
+ <report review="Nx1" approval="Nx2"/>
+ <default review="manager" />
+ </validations>
+
+</project-structure>
\ No newline at end of file
--- /dev/null
+name.module = Study Manager
+
+size.format = #,##0 Kb
+date.format = MM.dd.yyyy
+MM.dd.yyyy = mm.dd.yyyy
+
+menu.step.1 = Specify the study
+menu.step.2 = Design the scenario
+menu.step.3 = Create the geometry
+menu.step.4 = Generate the analysis model
+menu.step.5 = Enter the boundary conditions
+menu.step.6 = Execute the calculation
+menu.step.7 = Analyze the results
+menu.step.8 = Capitalize this use-case
+menu.step.9 = Finalize the study
+
+folder.step.1 = Specification of the study
+folder.step.2 = Description of the scenario
+folder.step.3 = Geometry
+folder.step.4 = Analysis model
+folder.step.5 = Boundary conditions
+folder.step.6 = Calculation scheme
+folder.step.7 = Calculation results
+folder.step.8 = Knowledge elements
+folder.step.9 = Final report
+
+type.document.requirements = Customer requirements
+type.document.specification = Specification document
+type.document.design = Design document
+type.document.geometry = Geometry
+type.document.model = Analysis model
+type.document.loads = Boundary conditions
+type.document.script = Execution script
+type.document.log = Execution log
+type.document.results = Calculation results
+type.document.report = Final report
+type.document.memorandum = Technical report
+type.document.minutes = Minute meeting
+
+type.context.customer = Customer
+type.context.product = Product
+type.context.phase = Product phase
+type.context.need = Customer needs
+type.context.purpose = Purpose of study
+type.context.physic = Physics
+type.context.object = Studied object
+
+type.context.part = Modeled object
+type.context.geometry = Geometry type
+type.context.model = Type of analysis model
+type.context.element = Element type
+type.context.shape = Geometry of elements
+type.context.order = Order of elements
+type.context.analysis = Analysis type
+type.context.platform = Software platform
+type.context.module = Solver
+type.context.component = Software component
+
+type.knowledge.bestpractice = Best practice
+type.knowledge.limitation = Limitation
+type.knowledge.inconsistency = Inconsistency
+type.knowledge.metrics = Metrics
+type.knowledge.improvement = Improvement
+
+history.creation = Document created by
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<study ref="PLM110001">
+
+ <properties title="Évaluation de la dose flash"
+ user="ffe"
+ date="03/05/2011" />
+
+ <contexts>
+ <context type="product" value="LMJ"/>
+ </contexts>
+
+ <step name="specification">
+ <document ref="PLM110001.01">
+ <properties title="Cahier des charges" type="requirements" format="pdf" author="ffe" date="03/05/2011" state="EXTERN" />
+ </document>
+ <document ref="PLM110001.02">
+ <properties title="Spécifications générales" type="specification" format="xml" author="ffe" date="10/05/2011" state="inDRAFT" />
+ <relations>
+ <uses ref="PLM110001.01"/>
+ </relations>
+ </document>
+ </step>
+ <scenario title="Neutronique">
+ <step name="modeling">
+ <document ref="PLM110001.03">
+ <properties title="Assemblage PCC" type="geometry" format="ProE" author="ffe" date="10/05/2011" state="inDRAFT" />
+ <relations>
+ <uses ref="PLM110001.02"/>
+ </relations>
+ </document>
+ </step>
+ </scenario>
+ <scenario title="Activation">
+ </scenario>
+ <scenario title="Photonique">
+ </scenario>
+
+</study>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<users>
+
+<user>
+ <first>Jean-Bernard</first>
+ <last>Trépon</last>
+ <display>Jean-Bernard Trépon</display>
+ <username>jbt</username>
+ <role>manager</role>
+ <mail>jean-bernard.trepon@euriware.fr</mail>
+ <organization>Euriware</organization>
+</user>
+
+<user>
+ <first>Hervé</first>
+ <last>Lexpert</last>
+ <display>Hervé</display>
+ <username>hl</username>
+ <role>manager</role>
+ <mail>herve.lexpert@opencascade.com</mail>
+ <organization>OC-F</organization>
+</user>
+
+<user>
+ <first>Paul</first>
+ <last>Durand</last>
+ <username>pdd</username>
+ <role>studengineer</role>
+ <mail>paul.durand@euriware.fr</mail>
+ <organization>Euriware</organization>
+</user>
+
+<user>
+ <first>Sylvie</first>
+ <last>Dupond</last>
+ <username>sdd</username>
+ <role>manager</role>
+ <mail>sylvie.dupond@cea.fr</mail>
+ <organization>CEA</organization>
+</user>
+
+<user>
+ <first>Michel</first>
+ <last>Karyo</last>
+ <username>mko</username>
+ <password>mko</password>
+ <role>manager</role>
+ <mail>michel.karyo@opencascade.com</mail>
+ <organization>Nx1</organization>
+</user>
+
+<user>
+ <first>Pierre</first>
+ <last>Jarnet</last>
+ <username>pjt</username>
+ <password>pjt</password>
+ <role>manager</role>
+ <mail>pierre.jarnet@euriware.fr</mail>
+ <organization>Nx2</organization>
+</user>
+
+</users>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+ <useProjectRuleSet>false</useProjectRuleSet>
+ <ruleSetFile>.ruleset</ruleSetFile>
+ <rules>
+ <rule>
+ <name>LooseCoupling</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloneMethodMustImplementCloneable</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedImports</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SignatureDeclareThrowsException</name>
+ <ruleset>Type Resolution Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IfStmtsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>WhileLoopsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IfElseStmtsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ForLoopsMustUseBraces</name>
+ <ruleset>Braces Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryConstructor</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NullAssignment</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>OnlyOneReturn</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedModifier</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AssignmentInOperand</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AtLeastOneConstructor</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DontImportSun</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousOctalEscape</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CallSuperInConstructor</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryParentheses</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DefaultPackage</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BooleanInversion</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DataflowAnomalyAnalysis</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidFinalLocalVariable</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingShortType</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingVolatile</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingNativeCode</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidAccessibilityAlteration</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotCallGarbageCollectionExplicitly</name>
+ <ruleset>Controversial Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyCatchBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyIfStmt</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyWhileStmt</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyTryBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyFinallyBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptySwitchStatements</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JumbledIncrementer</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ForLoopShouldBeWhileLoop</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryConversionTemporary</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>OverrideBothEqualsAndHashcode</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoubleCheckedLocking</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReturnFromFinallyBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptySynchronizedBlock</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryReturn</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyStaticInitializer</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnconditionalIfStatement</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyStatementNotInLoop</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BooleanInstantiation</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryFinalModifier</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CollapsibleIfStatements</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UselessOverridingMethod</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ClassCastExceptionWithToArray</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDecimalLiteralsInBigDecimalConstructor</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UselessOperationOnImmutable</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MisplacedNullCheck</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedNullCheckInEquals</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThreadGroup</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BrokenNullCheck</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BigIntegerInstantiation</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingOctalValues</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidUsingHardCodedIP</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CheckResultSet</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidMultipleUnaryOperators</name>
+ <ruleset>Basic Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedPrivateField</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedLocalVariable</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedPrivateMethod</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedFormalParameter</name>
+ <ruleset>Unused Code Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MoreThanOneLogger</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LoggerIsNotStaticFinal</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SystemPrintln</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidPrintStackTrace</name>
+ <ruleset>Java Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidCatchingThrowable</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SignatureDeclareThrowsException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExceptionAsFlowControl</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidCatchingNPE</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThrowingRawExceptionTypes</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidThrowingNullPointerException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidRethrowingException</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotExtendJavaLangError</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotThrowExceptionInFinally</name>
+ <ruleset>Strict Exception Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReplaceVectorWithList</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReplaceHashtableWithMap</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReplaceEnumerationWithIterator</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidEnumAsIdentifier</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidAssertAsIdentifier</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IntegerInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ByteInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ShortInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LongInstantiation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4TestShouldUseBeforeAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4TestShouldUseAfterAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4TestShouldUseTestAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnit4SuitesShouldUseSuiteAnnotation</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitUseExpected</name>
+ <ruleset>Migration Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseSingleton</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyBooleanReturns</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyBooleanExpressions</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SwitchStmtsShouldHaveDefault</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDeeplyNestedIfStmts</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidReassigningParameters</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SwitchDensity</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ConstructorCallsOverridableMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AccessorClassGeneration</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalFieldCouldBeStatic</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloseResource</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NonStaticInitializer</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DefaultLabelNotLastInSwitchStmt</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NonCaseLabelInSwitchStatement</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>OptimizableToArrayCall</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BadComparison</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EqualsNull</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ConfusingTernary</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InstantiationToGetClass</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>IdempotentOperations</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimpleDateFormatNeedsLocale</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ImmutableField</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseLocaleWithCaseConversions</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidProtectedFieldInFinalClass</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AssignmentToNonFinalStatic</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MissingStaticMethodInNonInstantiatableClass</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidSynchronizedAtMethodLevel</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MissingBreakInSwitch</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseNotifyAllInsteadOfNotify</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidInstanceofChecksInCatchClause</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AbstractClassWithoutAbstractMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyConditional</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CompareObjectsWithEquals</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>PositionLiteralsFirstInComparisons</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryLocalBeforeReturn</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NonThreadSafeSingleton</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UncommentedEmptyMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UncommentedEmptyConstructor</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidConstantsInterface</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnsynchronizedStaticDateFormatter</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>PreserveStackTrace</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseCollectionIsEmpty</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ClassWithOnlyPrivateConstructorsShouldBeFinal</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyMethodInAbstractClassShouldBeAbstract</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SingularField</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ReturnEmptyArrayRatherThanNull</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AbstractClassWithoutAnyMethod</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooFewBranchesForASwitchStatement</name>
+ <ruleset>Design Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseProperClassLoader</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MDBAndSessionBeanNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>RemoteSessionInterfaceNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LocalInterfaceSessionNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LocalHomeNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>RemoteInterfaceNamingConvention</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotCallSystemExit</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StaticEJBFieldShouldBeFinal</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DoNotUseThreads</name>
+ <ruleset>J2EE Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LocalVariableCouldBeFinal</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodArgumentCouldBeFinal</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidInstantiatingObjectsInLoops</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseArrayListInsteadOfVector</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyStartsWith</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseStringBufferForStringAppends</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseArraysAsList</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidArrayLoops</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryWrapperObjectCreation</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AddEmptyString</name>
+ <ruleset>Optimization Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodReturnsInternalArray</name>
+ <ruleset>Security Code Guidelines</ruleset>
+ </rule>
+ <rule>
+ <name>ArrayIsStoredDirectly</name>
+ <ruleset>Security Code Guidelines</ruleset>
+ </rule>
+ <rule>
+ <name>CouplingBetweenObjects</name>
+ <ruleset>Coupling Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveImports</name>
+ <ruleset>Coupling Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LooseCoupling</name>
+ <ruleset>Coupling Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DuplicateImports</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>DontImportJavaLang</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnusedImports</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ImportFromSamePackage</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooManyStaticImports</name>
+ <ruleset>Import Statement Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitStaticSuite</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitSpelling</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitAssertionsShouldIncludeMessage</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>JUnitTestsShouldIncludeAssert</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TestClassWithoutTestCases</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryBooleanAssertion</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseAssertEqualsInsteadOfAssertTrue</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseAssertSameInsteadOfAssertTrue</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseAssertNullInsteadOfAssertTrue</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SimplifyBooleanAssertion</name>
+ <ruleset>JUnit Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ShortVariable</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>LongVariable</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ShortMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>VariableNamingConventions</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodNamingConventions</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ClassNamingConventions</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AbstractNaming</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDollarSigns</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MethodWithSameNameAsEnclosingClass</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousHashcodeMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousConstantFieldName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>SuspiciousEqualsMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidFieldNameMatchingTypeName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidFieldNameMatchingMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NoPackage</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>PackageCase</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MisleadingVariableName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BooleanGetMethodName</name>
+ <ruleset>Naming Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NPathComplexity</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveMethodLength</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveParameterList</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessiveClassLength</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CyclomaticComplexity</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ExcessivePublicCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooManyFields</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NcssMethodCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NcssTypeCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>NcssConstructorCount</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>TooManyMethods</name>
+ <ruleset>Code Size Rules</ruleset>
+ </rule>
+ <rule>
+ <name>EmptyFinalizer</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeOnlyCallsSuperFinalize</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeOverloaded</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeDoesNotCallSuperFinalize</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>FinalizeShouldBeProtected</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidCallingFinalize</name>
+ <ruleset>Finalizer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseCorrectExceptionLogging</name>
+ <ruleset>Jakarta Commons Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ProperLogger</name>
+ <ruleset>Jakarta Commons Logging Rules</ruleset>
+ </rule>
+ <rule>
+ <name>BeanMembersShouldSerialize</name>
+ <ruleset>JavaBean Rules</ruleset>
+ </rule>
+ <rule>
+ <name>MissingSerialVersionUID</name>
+ <ruleset>JavaBean Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ProperCloneImplementation</name>
+ <ruleset>Clone Implementation Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloneThrowsCloneNotSupportedException</name>
+ <ruleset>Clone Implementation Rules</ruleset>
+ </rule>
+ <rule>
+ <name>CloneMethodMustImplementCloneable</name>
+ <ruleset>Clone Implementation Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidDuplicateLiterals</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StringInstantiation</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StringToString</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InefficientStringBuffering</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UnnecessaryCaseChange</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseStringBufferLength</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AppendCharacterWithChar</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ConsecutiveLiteralAppends</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseIndexOfChar</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InefficientEmptyStringCheck</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>InsufficientStringBufferDeclaration</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UselessStringValueOf</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>StringBufferInstantiationWithChar</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>UseEqualsToCompareStrings</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>AvoidStringBufferField</name>
+ <ruleset>String and StringBuffer Rules</ruleset>
+ </rule>
+ <rule>
+ <name>ParametersNamingRules</name>
+ <ruleset></ruleset>
+ </rule>
+ <rule>
+ <name>FieldNamingRules</name>
+ <ruleset></ruleset>
+ </rule>
+ <rule>
+ <name>DoNotUseConditionalExpression </name>
+ <ruleset></ruleset>
+ </rule>
+ </rules>
+ <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Servers</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
--- /dev/null
+#Wed Sep 12 17:57:21 MSD 2012
+org.eclipse.wst.server.core.isServerProject=true
+eclipse.preferences.version=1
--- /dev/null
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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.
+
+// ============================================================================
+// catalina.policy - Security Policy Permissions for Tomcat 6
+//
+// This file contains a default set of security policies to be enforced (by the
+// JVM) when Catalina is executed with the "-security" option. In addition
+// to the permissions granted here, the following additional permissions are
+// granted to the codebase specific to each web application:
+//
+// * Read access to its document root directory
+// * Read, write and delete access to its working directory
+//
+// $Id$
+// ============================================================================
+
+
+// ========== SYSTEM CODE PERMISSIONS =========================================
+
+
+// These permissions apply to javac
+grant codeBase "file:${java.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions
+grant codeBase "file:${java.home}/jre/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/../lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions when
+// ${java.home} points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+
+// ========== CATALINA CODE PERMISSIONS =======================================
+
+
+// These permissions apply to the daemon code
+grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the logging API
+// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
+// update this section accordingly.
+// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
+grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
+ permission java.io.FilePermission
+ "${java.home}${file.separator}lib${file.separator}logging.properties", "read";
+
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs", "read, write";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs${file.separator}*", "read, write";
+
+ permission java.lang.RuntimePermission "shutdownHooks";
+ permission java.lang.RuntimePermission "getClassLoader";
+ permission java.lang.RuntimePermission "setContextClassLoader";
+
+ permission java.util.logging.LoggingPermission "control";
+
+ permission java.util.PropertyPermission "java.util.logging.config.class", "read";
+ permission java.util.PropertyPermission "java.util.logging.config.file", "read";
+ permission java.util.PropertyPermission "catalina.base", "read";
+
+ // Note: To enable per context logging configuration, permit read access to
+ // the appropriate file. Be sure that the logging configuration is
+ // secure before enabling such access.
+ // E.g. for the examples web application (uncomment and unwrap
+ // the following to be on a single line):
+ // permission java.io.FilePermission "${catalina.base}${file.separator}
+ // webapps${file.separator}examples${file.separator}WEB-INF
+ // ${file.separator}classes${file.separator}logging.properties", "read";
+};
+
+// These permissions apply to the server startup code
+grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the servlet API classes
+// and those that are shared across all class loaders
+// located in the "lib" directory
+grant codeBase "file:${catalina.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+
+// If using a per instance lib directory, i.e. ${catalina.base}/lib,
+// then the following permission will need to be uncommented
+// grant codeBase "file:${catalina.base}/lib/-" {
+// permission java.security.AllPermission;
+// };
+
+
+// ========== WEB APPLICATION PERMISSIONS =====================================
+
+
+// These permissions are granted by default to all web applications
+// In addition, a web application will be given a read FilePermission
+// and JndiPermission for all files and directories in its document root.
+grant {
+ // Required for JNDI lookup of named JDBC DataSource's and
+ // javamail named MimePart DataSource used to send mail
+ permission java.util.PropertyPermission "java.home", "read";
+ permission java.util.PropertyPermission "java.naming.*", "read";
+ permission java.util.PropertyPermission "javax.sql.*", "read";
+
+ // OS Specific properties to allow read access
+ permission java.util.PropertyPermission "os.name", "read";
+ permission java.util.PropertyPermission "os.version", "read";
+ permission java.util.PropertyPermission "os.arch", "read";
+ permission java.util.PropertyPermission "file.separator", "read";
+ permission java.util.PropertyPermission "path.separator", "read";
+ permission java.util.PropertyPermission "line.separator", "read";
+
+ // JVM properties to allow read access
+ permission java.util.PropertyPermission "java.version", "read";
+ permission java.util.PropertyPermission "java.vendor", "read";
+ permission java.util.PropertyPermission "java.vendor.url", "read";
+ permission java.util.PropertyPermission "java.class.version", "read";
+ permission java.util.PropertyPermission "java.specification.version", "read";
+ permission java.util.PropertyPermission "java.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.specification.name", "read";
+
+ permission java.util.PropertyPermission "java.vm.specification.version", "read";
+ permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.specification.name", "read";
+ permission java.util.PropertyPermission "java.vm.version", "read";
+ permission java.util.PropertyPermission "java.vm.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.name", "read";
+
+ // Required for OpenJMX
+ permission java.lang.RuntimePermission "getAttribute";
+
+ // Allow read of JAXP compliant XML parser debug
+ permission java.util.PropertyPermission "jaxp.debug", "read";
+
+ // Precompiled JSPs need access to these packages.
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime.*";
+
+ // Precompiled JSPs need access to these system properties.
+ permission java.util.PropertyPermission
+ "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
+ permission java.util.PropertyPermission "org.apache.el.parser.COERCE_TO_ZERO", "read";
+};
+
+
+// The Manager application needs access to the following packages to support the
+// session display functionality. These settings support the following
+// configurations:
+// - default CATALINA_HOME == CATALINA_BASE
+// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE
+// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME
+grant codeBase "file:${catalina.base}/webapps/manager/-" {
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
+};
+grant codeBase "file:${catalina.home}/webapps/manager/-" {
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
+};
+
+// You can assign additional permissions to particular web applications by
+// adding additional "grant" entries here, based on the code base for that
+// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
+//
+// Different permissions can be granted to JSP pages, classes loaded from
+// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
+// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
+//
+// For instance, assume that the standard "examples" application
+// included a JDBC driver that needed to establish a network connection to the
+// corresponding database and used the scrape taglib to get the weather from
+// the NOAA web server. You might create a "grant" entries like this:
+//
+// The permissions granted to the context root directory apply to JSP pages.
+// grant codeBase "file:${catalina.base}/webapps/examples/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+//
+// The permissions granted to the context WEB-INF/classes directory
+// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {
+// };
+//
+// The permission granted to your JDBC driver
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// };
+// The permission granted to the scrape taglib
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+
--- /dev/null
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, no packages are restricted for definition, and none of
+# the class loaders supplied with the JDK call checkPackageDefinition.
+#
+package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
+
+#
+#
+# List of comma-separated paths defining the contents of the "common"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank,the JVM system loader will be used as Catalina's "common"
+# loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
+
+#
+# List of comma-separated paths defining the contents of the "server"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
+# If left as blank, the "common" loader will be used as Catalina's "server"
+# loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+server.loader=
+
+#
+# List of comma-separated paths defining the contents of the "shared"
+# classloader. Prefixes should be used to define what is the repository type.
+# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
+# the "common" loader will be used as Catalina's "shared" loader.
+# Examples:
+# "foo": Add this folder as a class repository
+# "foo/*.jar": Add all the JARs of the specified folder as class
+# repositories
+# "foo/bar.jar": Add bar.jar as a class repository
+# Please note that for single jars, e.g. bar.jar, you need the URL form
+# starting with file:.
+shared.loader=
+
+#
+# String cache configuration.
+tomcat.util.buf.StringCache.byte.enabled=true
+#tomcat.util.buf.StringCache.char.enabled=true
+#tomcat.util.buf.StringCache.trainThreshold=500000
+#tomcat.util.buf.StringCache.cacheSize=5000
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+--><!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ --><Server port="8005" shutdown="SHUTDOWN">
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JasperListener"/>
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
+ <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
+ <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+
+ <!--The connectors can use a shared executor, you can define one or more named thread pools-->
+ <!--
+ <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
+ maxThreads="150" minSpareThreads="4"/>
+ -->
+
+
+ <!-- A "Connector" represents an endpoint by which requests are received
+ and responses are returned. Documentation at :
+ Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
+ Java AJP Connector: /docs/config/ajp.html
+ APR (HTTP/AJP) Connector: /docs/apr.html
+ Define a non-SSL HTTP/1.1 Connector on port 8080
+ -->
+ <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
+ <!-- A "Connector" using the shared thread pool-->
+ <!--
+ <Connector executor="tomcatThreadPool"
+ port="8080" protocol="HTTP/1.1"
+ connectionTimeout="20000"
+ redirectPort="8443" />
+ -->
+ <!-- Define a SSL HTTP/1.1 Connector on port 8443
+ This connector uses the JSSE configuration, when using APR, the
+ connector should be using the OpenSSL style configuration
+ described in the APR documentation -->
+ <!--
+ <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
+ maxThreads="150" scheme="https" secure="true"
+ clientAuth="false" sslProtocol="TLS" />
+ -->
+
+ <!-- Define an AJP 1.3 Connector on port 8009 -->
+ <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
+
+
+ <!-- An Engine represents the entry point (within Catalina) that processes
+ every request. The Engine implementation for Tomcat stand alone
+ analyzes the HTTP headers included with the request, and passes them
+ on to the appropriate Host (virtual host).
+ Documentation at /docs/config/engine.html -->
+
+ <!-- You should set jvmRoute to support load-balancing via AJP ie :
+ <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
+ -->
+ <Engine defaultHost="localhost" name="Catalina">
+
+ <!--For clustering, please take a look at documentation at:
+ /docs/cluster-howto.html (simple how to)
+ /docs/config/cluster.html (reference documentation) -->
+ <!--
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
+ -->
+
+ <!-- The request dumper valve dumps useful debugging information about
+ the request and response data received and sent by Tomcat.
+ Documentation at: /docs/config/valve.html -->
+ <!--
+ <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
+ -->
+
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
+
+ <!-- Define the default virtual host
+ Note: XML Schema validation will not work with Xerces 2.2.
+ -->
+ <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
+
+ <!-- SingleSignOn valve, share authentication between web applications
+ Documentation at: /docs/config/valve.html -->
+ <!--
+ <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
+ -->
+
+ <!-- Access log processes all example.
+ Documentation at: /docs/config/valve.html -->
+ <!--
+ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
+ prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
+ -->
+
+ <Context docBase="Siman" path="/siman" reloadable="true" source="org.eclipse.jst.jee.server:Siman"/></Host>
+ </Engine>
+ </Service>
+</Server>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+--><tomcat-users>
+<!--
+ NOTE: By default, no user is included in the "manager-gui" role required
+ to operate the "/manager/html" web application. If you wish to use this app,
+ you must define such a user - the username and password are arbitrary.
+-->
+<!--
+ NOTE: The sample user and role entries below are wrapped in a comment
+ and thus are ignored when reading this file. Do not forget to remove
+ <!.. ..> that surrounds them.
+-->
+<!--
+ <role rolename="tomcat"/>
+ <role rolename="role1"/>
+ <user username="tomcat" password="tomcat" roles="tomcat"/>
+ <user username="both" password="tomcat" roles="tomcat,role1"/>
+ <user username="role1" password="tomcat" roles="role1"/>
+-->
+<role rolename="manager-gui"/>
+<user password="11111" roles="manager-gui" username="admin"/>
+</tomcat-users>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+--><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+ <!-- ======================== Introduction ============================== -->
+ <!-- This document defines default values for *all* web applications -->
+ <!-- loaded into this instance of Tomcat. As each application is -->
+ <!-- deployed, this file is processed, followed by the -->
+ <!-- "/WEB-INF/web.xml" deployment descriptor from your own -->
+ <!-- applications. -->
+ <!-- -->
+ <!-- WARNING: Do not configure application-specific resources here! -->
+ <!-- They should go in the "/WEB-INF/web.xml" file in your application. -->
+
+
+ <!-- ================== Built In Servlet Definitions ==================== -->
+
+
+ <!-- The default servlet for all web applications, that serves static -->
+ <!-- resources. It processes all requests that are not mapped to other -->
+ <!-- servlets with servlet mappings (defined either here or in your own -->
+ <!-- web.xml file). This servlet supports the following initialization -->
+ <!-- parameters (default values are in square brackets): -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- fileEncoding Encoding to be used to read static resources -->
+ <!-- [platform default] -->
+ <!-- -->
+ <!-- input Input buffer size (in bytes) when reading -->
+ <!-- resources to be served. [2048] -->
+ <!-- -->
+ <!-- listings Should directory listings be produced if there -->
+ <!-- is no welcome file in this directory? [false] -->
+ <!-- WARNING: Listings for directories with many -->
+ <!-- entries can be slow and may consume -->
+ <!-- significant proportions of server resources. -->
+ <!-- -->
+ <!-- output Output buffer size (in bytes) when writing -->
+ <!-- resources to be served. [2048] -->
+ <!-- -->
+ <!-- readonly Is this context "read only", so HTTP -->
+ <!-- commands like PUT and DELETE are -->
+ <!-- rejected? [true] -->
+ <!-- -->
+ <!-- readmeFile File name to display with the directory -->
+ <!-- contents. [null] -->
+ <!-- -->
+ <!-- sendfileSize If the connector used supports sendfile, this -->
+ <!-- represents the minimal file size in KB for -->
+ <!-- which sendfile will be used. Use a negative -->
+ <!-- value to always disable sendfile. [48] -->
+ <!-- -->
+ <!-- useAcceptRanges Should the Accept-Ranges header be included -->
+ <!-- in responses where appropriate? [true] -->
+ <!-- -->
+ <!-- For directory listing customization. Checks localXsltFile, then -->
+ <!-- globalXsltFile, then defaults to original behavior. -->
+ <!-- -->
+ <!-- localXsltFile Make directory listings an XML doc and -->
+ <!-- pass the result to this style sheet residing -->
+ <!-- in that directory. This overrides -->
+ <!-- contextXsltFile and globalXsltFile[null] -->
+ <!-- -->
+ <!-- contextXsltFile Make directory listings an XML doc and -->
+ <!-- pass the result to this style sheet which is -->
+ <!-- relative to the context root. This overrides -->
+ <!-- globalXsltFile[null] -->
+ <!-- -->
+ <!-- globalXsltFile Site wide configuration version of -->
+ <!-- localXsltFile This argument is expected -->
+ <!-- to be a physical file. [null] -->
+ <!-- -->
+ <!-- -->
+
+ <servlet>
+ <servlet-name>default</servlet-name>
+ <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>listings</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+
+ <!-- This servlet has been deprecated due to security concerns. Servlets -->
+ <!-- should be explicitly mapped in web.xml -->
+ <!-- -->
+ <!-- The "invoker" servlet, which executes anonymous servlet classes -->
+ <!-- that have not been defined in a web.xml file. Traditionally, this -->
+ <!-- servlet is mapped to the URL pattern "/servlet/*", but you can map -->
+ <!-- it to other patterns as well. The extra path info portion of such a -->
+ <!-- request must be the fully qualified class name of a Java class that -->
+ <!-- implements Servlet (or extends HttpServlet), or the servlet name -->
+ <!-- of an existing servlet definition. This servlet supports the -->
+ <!-- following initialization parameters (default values are in square -->
+ <!-- brackets): -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+
+<!--
+ <servlet>
+ <servlet-name>invoker</servlet-name>
+ <servlet-class>
+ org.apache.catalina.servlets.InvokerServlet
+ </servlet-class>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <load-on-startup>2</load-on-startup>
+ </servlet>
+-->
+
+
+ <!-- The JSP page compiler and execution servlet, which is the mechanism -->
+ <!-- used by Tomcat to support JSP pages. Traditionally, this servlet -->
+ <!-- is mapped to the URL pattern "*.jsp". This servlet supports the -->
+ <!-- following initialization parameters (default values are in square -->
+ <!-- brackets): -->
+ <!-- -->
+ <!-- checkInterval If development is false and checkInterval is -->
+ <!-- greater than zero, background compilations are -->
+ <!-- enabled. checkInterval is the time in seconds -->
+ <!-- between checks to see if a JSP page (and its -->
+ <!-- dependent files) needs to be recompiled. [0] -->
+ <!-- -->
+ <!-- classdebuginfo Should the class file be compiled with -->
+ <!-- debugging information? [true] -->
+ <!-- -->
+ <!-- classpath What class path should I use while compiling -->
+ <!-- generated servlets? [Created dynamically -->
+ <!-- based on the current web application] -->
+ <!-- -->
+ <!-- compiler Which compiler Ant should use to compile JSP -->
+ <!-- pages. See the jasper documentation for more -->
+ <!-- information. -->
+ <!-- -->
+ <!-- compilerSourceVM Compiler source VM. [1.5] -->
+ <!-- -->
+ <!-- compilerTargetVM Compiler target VM. [1.5] -->
+ <!-- -->
+ <!-- development Is Jasper used in development mode? If true, -->
+ <!-- the frequency at which JSPs are checked for -->
+ <!-- modification may be specified via the -->
+ <!-- modificationTestInterval parameter. [true] -->
+ <!-- -->
+ <!-- displaySourceFragment -->
+ <!-- Should a source fragment be included in -->
+ <!-- exception messages? [true] -->
+ <!-- -->
+ <!-- dumpSmap Should the SMAP info for JSR45 debugging be -->
+ <!-- dumped to a file? [false] -->
+ <!-- False if suppressSmap is true -->
+ <!-- -->
+ <!-- enablePooling Determines whether tag handler pooling is -->
+ <!-- enabled. This is a compilation option. It will -->
+ <!-- not alter the behaviour of JSPs that have -->
+ <!-- already been compiled. [true] -->
+ <!-- -->
+ <!-- engineOptionsClass Allows specifying the Options class used to -->
+ <!-- configure Jasper. If not present, the default -->
+ <!-- EmbeddedServletOptions will be used. -->
+ <!-- -->
+ <!-- errorOnUseBeanInvalidClassAttribute -->
+ <!-- Should Jasper issue an error when the value of -->
+ <!-- the class attribute in an useBean action is -->
+ <!-- not a valid bean class? [true] -->
+ <!-- -->
+ <!-- fork Tell Ant to fork compiles of JSP pages so that -->
+ <!-- a separate JVM is used for JSP page compiles -->
+ <!-- from the one Tomcat is running in. [true] -->
+ <!-- -->
+ <!-- genStrAsCharArray Should text strings be generated as char -->
+ <!-- arrays, to improve performance in some cases? -->
+ <!-- [false] -->
+ <!-- -->
+ <!-- ieClassId The class-id value to be sent to Internet -->
+ <!-- Explorer when using <jsp:plugin> tags. -->
+ <!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] -->
+ <!-- -->
+ <!-- javaEncoding Java file encoding to use for generating java -->
+ <!-- source files. [UTF8] -->
+ <!-- -->
+ <!-- keepgenerated Should we keep the generated Java source code -->
+ <!-- for each page instead of deleting it? [true] -->
+ <!-- -->
+ <!-- mappedfile Should we generate static content with one -->
+ <!-- print statement per input line, to ease -->
+ <!-- debugging? [true] -->
+ <!-- -->
+ <!-- modificationTestInterval -->
+ <!-- Causes a JSP (and its dependent files) to not -->
+ <!-- be checked for modification during the -->
+ <!-- specified time interval (in seconds) from the -->
+ <!-- last time the JSP was checked for -->
+ <!-- modification. A value of 0 will cause the JSP -->
+ <!-- to be checked on every access. -->
+ <!-- Used in development mode only. [4] -->
+ <!-- -->
+ <!-- recompileOnFail If a JSP compilation fails should the -->
+ <!-- modificationTestInterval be ignored and the -->
+ <!-- next access trigger a re-compilation attempt? -->
+ <!-- Used in development mode only and is disabled -->
+ <!-- by default as compilation may be expensive and -->
+ <!-- could lead to excessive resource usage. -->
+ <!-- [false] -->
+ <!-- -->
+ <!-- scratchdir What scratch directory should we use when -->
+ <!-- compiling JSP pages? [default work directory -->
+ <!-- for the current web application] -->
+ <!-- -->
+ <!-- suppressSmap Should the generation of SMAP info for JSR45 -->
+ <!-- debugging be suppressed? [false] -->
+ <!-- -->
+ <!-- trimSpaces Should white spaces in template text between -->
+ <!-- actions or directives be trimmed? [false] -->
+ <!-- -->
+ <!-- xpoweredBy Determines whether X-Powered-By response -->
+ <!-- header is added by generated servlet [false] -->
+ <!-- -->
+ <!-- If you wish to use Jikes to compile JSP pages: -->
+ <!-- Please see the "Using Jikes" section of the Jasper-HowTo -->
+ <!-- page in the Tomcat documentation. -->
+
+ <servlet>
+ <servlet-name>jsp</servlet-name>
+ <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
+ <init-param>
+ <param-name>fork</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <init-param>
+ <param-name>xpoweredBy</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <load-on-startup>3</load-on-startup>
+ </servlet>
+
+
+ <!-- NOTE: An SSI Filter is also available as an alternative SSI -->
+ <!-- implementation. Use either the Servlet or the Filter but NOT both. -->
+ <!-- -->
+ <!-- Server Side Includes processing servlet, which processes SSI -->
+ <!-- directives in HTML pages consistent with similar support in web -->
+ <!-- servers like Apache. Traditionally, this servlet is mapped to the -->
+ <!-- URL pattern "*.shtml". This servlet supports the following -->
+ <!-- initialization parameters (default values are in square brackets): -->
+ <!-- -->
+ <!-- buffered Should output from this servlet be buffered? -->
+ <!-- (0=false, 1=true) [0] -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- expires The number of seconds before a page with SSI -->
+ <!-- directives will expire. [No default] -->
+ <!-- -->
+ <!-- isVirtualWebappRelative -->
+ <!-- Should "virtual" paths be interpreted as -->
+ <!-- relative to the context root, instead of -->
+ <!-- the server root? (0=false, 1=true) [0] -->
+ <!-- -->
+ <!-- inputEncoding The encoding to assume for SSI resources if -->
+ <!-- one is not available from the resource. -->
+ <!-- [Platform default] -->
+ <!-- -->
+ <!-- outputEncoding The encoding to use for the page that results -->
+ <!-- from the SSI processing. [UTF-8] -->
+ <!-- -->
+ <!-- allowExec Is use of the exec command enabled? [false] -->
+
+<!--
+ <servlet>
+ <servlet-name>ssi</servlet-name>
+ <servlet-class>
+ org.apache.catalina.ssi.SSIServlet
+ </servlet-class>
+ <init-param>
+ <param-name>buffered</param-name>
+ <param-value>1</param-value>
+ </init-param>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>expires</param-name>
+ <param-value>666</param-value>
+ </init-param>
+ <init-param>
+ <param-name>isVirtualWebappRelative</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <load-on-startup>4</load-on-startup>
+ </servlet>
+-->
+
+
+ <!-- Common Gateway Includes (CGI) processing servlet, which supports -->
+ <!-- execution of external applications that conform to the CGI spec -->
+ <!-- requirements. Typically, this servlet is mapped to the URL pattern -->
+ <!-- "/cgi-bin/*", which means that any CGI applications that are -->
+ <!-- executed must be present within the web application. This servlet -->
+ <!-- supports the following initialization parameters (default values -->
+ <!-- are in square brackets): -->
+ <!-- -->
+ <!-- cgiPathPrefix The CGI search path will start at -->
+ <!-- webAppRootDir + File.separator + this prefix. -->
+ <!-- [WEB-INF/cgi] -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- executable Name of the executable used to run the -->
+ <!-- script. [perl] -->
+ <!-- -->
+ <!-- parameterEncoding Name of parameter encoding to be used with -->
+ <!-- CGI servlet. -->
+ <!-- [System.getProperty("file.encoding","UTF-8")] -->
+ <!-- -->
+ <!-- passShellEnvironment Should the shell environment variables (if -->
+ <!-- any) be passed to the CGI script? [false] -->
+ <!-- -->
+ <!-- stderrTimeout The time (in milliseconds) to wait for the -->
+ <!-- reading of stderr to complete before -->
+ <!-- terminating the CGI process. [2000] -->
+
+<!--
+ <servlet>
+ <servlet-name>cgi</servlet-name>
+ <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cgiPathPrefix</param-name>
+ <param-value>WEB-INF/cgi</param-value>
+ </init-param>
+ <load-on-startup>5</load-on-startup>
+ </servlet>
+-->
+
+
+ <!-- ================ Built In Servlet Mappings ========================= -->
+
+
+ <!-- The servlet mappings for the built in servlets defined above. Note -->
+ <!-- that, by default, the CGI and SSI servlets are *not* mapped. You -->
+ <!-- must uncomment these mappings (or add them to your application's own -->
+ <!-- web.xml deployment descriptor) to enable these services -->
+
+ <!-- The mapping for the default servlet -->
+ <servlet-mapping>
+ <servlet-name>default</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+ <!-- The mapping for the deprecated invoker servlet -->
+<!--
+ <servlet-mapping>
+ <servlet-name>invoker</servlet-name>
+ <url-pattern>/servlet/*</url-pattern>
+ </servlet-mapping>
+-->
+
+ <!-- The mapping for the JSP servlet -->
+ <servlet-mapping>
+ <servlet-name>jsp</servlet-name>
+ <url-pattern>*.jsp</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>jsp</servlet-name>
+ <url-pattern>*.jspx</url-pattern>
+ </servlet-mapping>
+
+ <!-- The mapping for the SSI servlet -->
+<!--
+ <servlet-mapping>
+ <servlet-name>ssi</servlet-name>
+ <url-pattern>*.shtml</url-pattern>
+ </servlet-mapping>
+-->
+
+ <!-- The mapping for the CGI Gateway servlet -->
+
+<!--
+ <servlet-mapping>
+ <servlet-name>cgi</servlet-name>
+ <url-pattern>/cgi-bin/*</url-pattern>
+ </servlet-mapping>
+-->
+
+
+ <!-- ================== Built In Filter Definitions ===================== -->
+
+ <!-- A filter that triggers request parameters parsing and rejects the -->
+ <!-- request if some parameters were skipped because of parsing errors or -->
+ <!-- request size limitations. -->
+<!--
+ <filter>
+ <filter-name>failedRequestFilter</filter-name>
+ <filter-class>
+ org.apache.catalina.filters.FailedRequestFilter
+ </filter-class>
+ </filter>
+-->
+
+
+ <!-- NOTE: An SSI Servlet is also available as an alternative SSI -->
+ <!-- implementation. Use either the Servlet or the Filter but NOT both. -->
+ <!-- -->
+ <!-- Server Side Includes processing filter, which processes SSI -->
+ <!-- directives in HTML pages consistent with similar support in web -->
+ <!-- servers like Apache. Traditionally, this filter is mapped to the -->
+ <!-- URL pattern "*.shtml", though it can be mapped to "*" as it will -->
+ <!-- selectively enable/disable SSI processing based on mime types. For -->
+ <!-- this to work you will need to uncomment the .shtml mime type -->
+ <!-- definition towards the bottom of this file. -->
+ <!-- The contentType init param allows you to apply SSI processing to JSP -->
+ <!-- pages, javascript, or any other content you wish. This filter -->
+ <!-- supports the following initialization parameters (default values are -->
+ <!-- in square brackets): -->
+ <!-- -->
+ <!-- contentType A regex pattern that must be matched before -->
+ <!-- SSI processing is applied. -->
+ <!-- [text/x-server-parsed-html(;.*)?] -->
+ <!-- -->
+ <!-- debug Debugging detail level for messages logged -->
+ <!-- by this servlet. [0] -->
+ <!-- -->
+ <!-- expires The number of seconds before a page with SSI -->
+ <!-- directives will expire. [No default] -->
+ <!-- -->
+ <!-- isVirtualWebappRelative -->
+ <!-- Should "virtual" paths be interpreted as -->
+ <!-- relative to the context root, instead of -->
+ <!-- the server root? (0=false, 1=true) [0] -->
+ <!-- -->
+ <!-- allowExec Is use of the exec command enabled? [false] -->
+
+<!--
+ <filter>
+ <filter-name>ssi</filter-name>
+ <filter-class>
+ org.apache.catalina.ssi.SSIFilter
+ </filter-class>
+ <init-param>
+ <param-name>contentType</param-name>
+ <param-value>text/x-server-parsed-html(;.*)?</param-value>
+ </init-param>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>expires</param-name>
+ <param-value>666</param-value>
+ </init-param>
+ <init-param>
+ <param-name>isVirtualWebappRelative</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ </filter>
+-->
+
+
+ <!-- ==================== Built In Filter Mappings ====================== -->
+
+ <!-- The mapping for the Failed Request Filter -->
+<!--
+ <filter-mapping>
+ <filter-name>failedRequestFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+-->
+
+ <!-- The mapping for the SSI Filter -->
+<!--
+ <filter-mapping>
+ <filter-name>ssi</filter-name>
+ <url-pattern>*.shtml</url-pattern>
+ </filter-mapping>
+-->
+
+
+ <!-- ==================== Default Session Configuration ================= -->
+ <!-- You can set the default session timeout (in minutes) for all newly -->
+ <!-- created sessions by modifying the value below. -->
+
+ <session-config>
+ <session-timeout>30</session-timeout>
+ </session-config>
+
+
+ <!-- ===================== Default MIME Type Mappings =================== -->
+ <!-- When serving static resources, Tomcat will automatically generate -->
+ <!-- a "Content-Type" header based on the resource's filename extension, -->
+ <!-- based on these mappings. Additional mappings can be added here (to -->
+ <!-- apply to all web applications), or in your own application's web.xml -->
+ <!-- deployment descriptor. -->
+
+ <mime-mapping>
+ <extension>abs</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ai</extension>
+ <mime-type>application/postscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aif</extension>
+ <mime-type>audio/x-aiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aifc</extension>
+ <mime-type>audio/x-aiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aiff</extension>
+ <mime-type>audio/x-aiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>aim</extension>
+ <mime-type>application/x-aim</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>art</extension>
+ <mime-type>image/x-jg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>asf</extension>
+ <mime-type>video/x-ms-asf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>asx</extension>
+ <mime-type>video/x-ms-asf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>au</extension>
+ <mime-type>audio/basic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>avi</extension>
+ <mime-type>video/x-msvideo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>avx</extension>
+ <mime-type>video/x-rad-screenplay</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bcpio</extension>
+ <mime-type>application/x-bcpio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bin</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>bmp</extension>
+ <mime-type>image/bmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>body</extension>
+ <mime-type>text/html</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cdf</extension>
+ <mime-type>application/x-cdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cer</extension>
+ <mime-type>application/x-x509-ca-cert</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>class</extension>
+ <mime-type>application/java</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>cpio</extension>
+ <mime-type>application/x-cpio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>csh</extension>
+ <mime-type>application/x-csh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>css</extension>
+ <mime-type>text/css</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dib</extension>
+ <mime-type>image/bmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>doc</extension>
+ <mime-type>application/msword</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dtd</extension>
+ <mime-type>application/xml-dtd</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dv</extension>
+ <mime-type>video/x-dv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>dvi</extension>
+ <mime-type>application/x-dvi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>eps</extension>
+ <mime-type>application/postscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>etx</extension>
+ <mime-type>text/x-setext</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>exe</extension>
+ <mime-type>application/octet-stream</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gif</extension>
+ <mime-type>image/gif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gtar</extension>
+ <mime-type>application/x-gtar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>gz</extension>
+ <mime-type>application/x-gzip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hdf</extension>
+ <mime-type>application/x-hdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hqx</extension>
+ <mime-type>application/mac-binhex40</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>htc</extension>
+ <mime-type>text/x-component</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>htm</extension>
+ <mime-type>text/html</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>html</extension>
+ <mime-type>text/html</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>hqx</extension>
+ <mime-type>application/mac-binhex40</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ief</extension>
+ <mime-type>image/ief</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jad</extension>
+ <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jar</extension>
+ <mime-type>application/java-archive</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>java</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jnlp</extension>
+ <mime-type>application/x-java-jnlp-file</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpe</extension>
+ <mime-type>image/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpeg</extension>
+ <mime-type>image/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jpg</extension>
+ <mime-type>image/jpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>js</extension>
+ <mime-type>text/javascript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jsf</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jspf</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>kar</extension>
+ <mime-type>audio/x-midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>latex</extension>
+ <mime-type>application/x-latex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>m3u</extension>
+ <mime-type>audio/x-mpegurl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mac</extension>
+ <mime-type>image/x-macpaint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>man</extension>
+ <mime-type>application/x-troff-man</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mathml</extension>
+ <mime-type>application/mathml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>me</extension>
+ <mime-type>application/x-troff-me</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mid</extension>
+ <mime-type>audio/x-midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>midi</extension>
+ <mime-type>audio/x-midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mif</extension>
+ <mime-type>application/x-mif</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mov</extension>
+ <mime-type>video/quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>movie</extension>
+ <mime-type>video/x-sgi-movie</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp1</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp2</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp3</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mp4</extension>
+ <mime-type>video/mp4</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpa</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpe</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpeg</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpega</extension>
+ <mime-type>audio/x-mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpg</extension>
+ <mime-type>video/mpeg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>mpv2</extension>
+ <mime-type>video/mpeg2</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ms</extension>
+ <mime-type>application/x-wais-source</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>nc</extension>
+ <mime-type>application/x-netcdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>oda</extension>
+ <mime-type>application/oda</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Database -->
+ <extension>odb</extension>
+ <mime-type>application/vnd.oasis.opendocument.database</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Chart -->
+ <extension>odc</extension>
+ <mime-type>application/vnd.oasis.opendocument.chart</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Formula -->
+ <extension>odf</extension>
+ <mime-type>application/vnd.oasis.opendocument.formula</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Drawing -->
+ <extension>odg</extension>
+ <mime-type>application/vnd.oasis.opendocument.graphics</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Image -->
+ <extension>odi</extension>
+ <mime-type>application/vnd.oasis.opendocument.image</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Master Document -->
+ <extension>odm</extension>
+ <mime-type>application/vnd.oasis.opendocument.text-master</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Presentation -->
+ <extension>odp</extension>
+ <mime-type>application/vnd.oasis.opendocument.presentation</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Spreadsheet -->
+ <extension>ods</extension>
+ <mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Text -->
+ <extension>odt</extension>
+ <mime-type>application/vnd.oasis.opendocument.text</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ogg</extension>
+ <mime-type>application/ogg</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Drawing Template -->
+ <extension>otg</extension>
+ <mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- HTML Document Template -->
+ <extension>oth</extension>
+ <mime-type>application/vnd.oasis.opendocument.text-web</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Presentation Template -->
+ <extension>otp</extension>
+ <mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Spreadsheet Template -->
+ <extension>ots</extension>
+ <mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- OpenDocument Text Template -->
+ <extension>ott</extension>
+ <mime-type>application/vnd.oasis.opendocument.text-template</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pbm</extension>
+ <mime-type>image/x-portable-bitmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pct</extension>
+ <mime-type>image/pict</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pdf</extension>
+ <mime-type>application/pdf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pgm</extension>
+ <mime-type>image/x-portable-graymap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pic</extension>
+ <mime-type>image/pict</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pict</extension>
+ <mime-type>image/pict</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pls</extension>
+ <mime-type>audio/x-scpls</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>png</extension>
+ <mime-type>image/png</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pnm</extension>
+ <mime-type>image/x-portable-anymap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pnt</extension>
+ <mime-type>image/x-macpaint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppm</extension>
+ <mime-type>image/x-portable-pixmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ppt</extension>
+ <mime-type>application/vnd.ms-powerpoint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>pps</extension>
+ <mime-type>application/vnd.ms-powerpoint</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ps</extension>
+ <mime-type>application/postscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>psd</extension>
+ <mime-type>image/x-photoshop</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qt</extension>
+ <mime-type>video/quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qti</extension>
+ <mime-type>image/x-quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>qtif</extension>
+ <mime-type>image/x-quicktime</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ras</extension>
+ <mime-type>image/x-cmu-raster</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rdf</extension>
+ <mime-type>application/rdf+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rgb</extension>
+ <mime-type>image/x-rgb</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rm</extension>
+ <mime-type>application/vnd.rn-realmedia</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>roff</extension>
+ <mime-type>application/x-troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rtf</extension>
+ <mime-type>application/rtf</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>rtx</extension>
+ <mime-type>text/richtext</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sh</extension>
+ <mime-type>application/x-sh</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>shar</extension>
+ <mime-type>application/x-shar</mime-type>
+ </mime-mapping>
+<!--
+ <mime-mapping>
+ <extension>shtml</extension>
+ <mime-type>text/x-server-parsed-html</mime-type>
+ </mime-mapping>
+-->
+ <mime-mapping>
+ <extension>smf</extension>
+ <mime-type>audio/x-midi</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sit</extension>
+ <mime-type>application/x-stuffit</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>snd</extension>
+ <mime-type>audio/basic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>src</extension>
+ <mime-type>application/x-wais-source</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sv4cpio</extension>
+ <mime-type>application/x-sv4cpio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>sv4crc</extension>
+ <mime-type>application/x-sv4crc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>svg</extension>
+ <mime-type>image/svg+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>svgz</extension>
+ <mime-type>image/svg+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>swf</extension>
+ <mime-type>application/x-shockwave-flash</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>t</extension>
+ <mime-type>application/x-troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tar</extension>
+ <mime-type>application/x-tar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tcl</extension>
+ <mime-type>application/x-tcl</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tex</extension>
+ <mime-type>application/x-tex</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>texi</extension>
+ <mime-type>application/x-texinfo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>texinfo</extension>
+ <mime-type>application/x-texinfo</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tif</extension>
+ <mime-type>image/tiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tiff</extension>
+ <mime-type>image/tiff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tr</extension>
+ <mime-type>application/x-troff</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>tsv</extension>
+ <mime-type>text/tab-separated-values</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>txt</extension>
+ <mime-type>text/plain</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ulw</extension>
+ <mime-type>audio/basic</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>ustar</extension>
+ <mime-type>application/x-ustar</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vxml</extension>
+ <mime-type>application/voicexml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xbm</extension>
+ <mime-type>image/x-xbitmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xht</extension>
+ <mime-type>application/xhtml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xhtml</extension>
+ <mime-type>application/xhtml+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xls</extension>
+ <mime-type>application/vnd.ms-excel</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xml</extension>
+ <mime-type>application/xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xpm</extension>
+ <mime-type>image/x-xpixmap</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xsl</extension>
+ <mime-type>application/xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xslt</extension>
+ <mime-type>application/xslt+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xul</extension>
+ <mime-type>application/vnd.mozilla.xul+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>xwd</extension>
+ <mime-type>image/x-xwindowdump</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>vsd</extension>
+ <mime-type>application/x-visio</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wav</extension>
+ <mime-type>audio/x-wav</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- Wireless Bitmap -->
+ <extension>wbmp</extension>
+ <mime-type>image/vnd.wap.wbmp</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- WML Source -->
+ <extension>wml</extension>
+ <mime-type>text/vnd.wap.wml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- Compiled WML -->
+ <extension>wmlc</extension>
+ <mime-type>application/vnd.wap.wmlc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- WML Script Source -->
+ <extension>wmls</extension>
+ <mime-type>text/vnd.wap.wmlscript</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <!-- Compiled WML Script -->
+ <extension>wmlscriptc</extension>
+ <mime-type>application/vnd.wap.wmlscriptc</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wmv</extension>
+ <mime-type>video/x-ms-wmv</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wrl</extension>
+ <mime-type>x-world/x-vrml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>wspolicy</extension>
+ <mime-type>application/wspolicy+xml</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>Z</extension>
+ <mime-type>application/x-compress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>z</extension>
+ <mime-type>application/x-compress</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>zip</extension>
+ <mime-type>application/zip</mime-type>
+ </mime-mapping>
+ <mime-mapping>
+ <extension>jjj</extension>
+ <mime-type>application/jjj</mime-type>
+ </mime-mapping>
+
+ <!-- ==================== Default Welcome File List ===================== -->
+ <!-- When a request URI refers to a directory, the default servlet looks -->
+ <!-- for a "welcome file" within that directory and, if present, -->
+ <!-- to the corresponding resource URI for display. If no welcome file -->
+ <!-- is present, the default servlet either serves a directory listing, -->
+ <!-- or returns a 404 status, depending on how it is configured. -->
+ <!-- -->
+ <!-- If you define welcome files in your own application's web.xml -->
+ <!-- deployment descriptor, that list *replaces* the list configured -->
+ <!-- here, so be sure that you include any of the default values that -->
+ <!-- you wish to include. -->
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+
+</web-app>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <fileset name="all" enabled="true" check-config-name="Siman CheckStyle" local="false">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/SPlat"/>
+ <classpathentry exported="true" kind="lib" path="/SPlat/dist/splat-kernel.jar"/>
+ <classpathentry exported="true" kind="lib" path="/SPlat/dist/splat-manox.jar"/>
+ <classpathentry exported="true" kind="lib" path="/SPlat/dist/splat-som.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.aop-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.asm-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.aspects-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.beans-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.context.support-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.context-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.core-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.expression-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.instrument.tomcat-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.instrument-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.jdbc-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.jms-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.orm-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.oxm-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.test-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.transaction-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.web.portlet-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.web.servlet-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.web.struts-3.1.2.RELEASE.jar"/>
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.web-3.1.2.RELEASE.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_CLEAN_TARGETS" value="clean,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/SPlat/dist" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman-Common/dist" type="2"/> </launchConfigurationWorkingSet>}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Siman-Common/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Siman-Common"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Siman-Common/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,clean"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Siman-Common}"/>
+</launchConfiguration>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+ <useProjectRuleSet>true</useProjectRuleSet>
+ <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+ <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Siman-Common</name>
+ <comment></comment>
+ <projects>
+ <project>SPlat</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.springframework.ide.eclipse.core.springbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/Ant_Siman_Common_Builder.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sourceforge.pmd.runtime.pmdBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.springframework.ide.eclipse.core.springnature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+ <nature>net.sourceforge.pmd.runtime.pmdNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>
+ <rule ref="rulesets/controversial.xml/NullAssignment"/>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn"/>
+ <rule ref="rulesets/controversial.xml/UnusedModifier"/>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
+ <rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>
+ <rule ref="rulesets/controversial.xml/DontImportSun"/>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
+ <rule ref="rulesets/controversial.xml/DefaultPackage"/>
+ <rule ref="rulesets/controversial.xml/BooleanInversion"/>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis"/>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode"/>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration"/>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer"/>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod"/>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray"/>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable"/>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck"/>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals"/>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup"/>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck"/>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP"/>
+ <rule ref="rulesets/basic.xml/CheckResultSet"/>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln"/>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException"/>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError"/>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally"/>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList"/>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap"/>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator"/>
+ <rule ref="rulesets/migrating.xml/AvoidEnumAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/AvoidAssertAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation"/>
+ <rule ref="rulesets/migrating.xml/LongInstantiation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseBeforeAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseAfterAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseTestAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4SuitesShouldUseSuiteAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnitUseExpected"/>
+ <rule ref="rulesets/design.xml/UseSingleton"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters"/>
+ <rule ref="rulesets/design.xml/SwitchDensity"/>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration"/>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>
+ <rule ref="rulesets/design.xml/CloseResource"/>
+ <rule ref="rulesets/design.xml/NonStaticInitializer"/>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
+ <rule ref="rulesets/design.xml/BadComparison"/>
+ <rule ref="rulesets/design.xml/EqualsNull"/>
+ <rule ref="rulesets/design.xml/ConfusingTernary"/>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass"/>
+ <rule ref="rulesets/design.xml/IdempotentOperations"/>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale"/>
+ <rule ref="rulesets/design.xml/ImmutableField"/>
+ <rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch"/>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>
+ <rule ref="rulesets/design.xml/SimplifyConditional"/>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
+ <rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor"/>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface"/>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter"/>
+ <rule ref="rulesets/design.xml/PreserveStackTrace"/>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty"/>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
+ <rule ref="rulesets/design.xml/SingularField"/>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod"/>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement"/>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader"/>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit"/>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal"/>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads"/>
+ <rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList"/>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops"/>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString"/>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports"/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/imports.xml/DuplicateImports"/>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage"/>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports"/>
+ <rule ref="rulesets/junit.xml/JUnitStaticSuite"/>
+ <rule ref="rulesets/junit.xml/JUnitSpelling"/>
+ <rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>
+ <rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>
+ <rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>
+ <rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>
+ <rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertNullInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/SimplifyBooleanAssertion"/>
+ <rule ref="rulesets/naming.xml/ShortVariable"/>
+ <rule ref="rulesets/naming.xml/LongVariable"/>
+ <rule ref="rulesets/naming.xml/ShortMethodName"/>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions"/>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions"/>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions"/>
+ <rule ref="rulesets/naming.xml/AbstractNaming"/>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns"/>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>
+ <rule ref="rulesets/naming.xml/NoPackage"/>
+ <rule ref="rulesets/naming.xml/PackageCase"/>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName"/>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
+ <rule ref="rulesets/codesize.xml/NPathComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyFields"/>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount"/>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount"/>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount"/>
+ <rule ref="rulesets/codesize.xml/TooManyMethods"/>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation"/>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/>
+ <rule ref="rulesets/strings.xml/StringInstantiation"/>
+ <rule ref="rulesets/strings.xml/StringToString"/>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering"/>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength"/>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar"/>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends"/>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar"/>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck"/>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration"/>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf"/>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar"/>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings"/>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField"/>
+</ruleset>
--- /dev/null
+#Thu Sep 20 13:04:12 MSD 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="Siman-Common">
+ <wb-resource deploy-path="/" source-path="/src"/>
+ </wb-module>
+</project-modules>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.utility"/>
+ <installed facet="jst.java" version="6.0"/>
+ <installed facet="jst.utility" version="1.0"/>
+</faceted-project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+ <configExtensions>
+ <configExtension>xml</configExtension>
+ </configExtensions>
+ <configs>
+ <config>src/spring/globalContext.xml</config>
+ </configs>
+ <configSets>
+ </configSets>
+</beansProjectDescription>
--- /dev/null
+siman-common.src.dir=src
+siman-common.lib.dir=lib
+siman-common.bin.dir=bin
+siman-common.dist.dir=dist
+siman-common.jar.name=siman-common.jar
+splat.project.name=SPlat
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project default="build-dist" name="SIMAN Common Jar builder">
+ <!--this file was created by Eclipse Runnable JAR Export Wizard-->
+ <!--ANT 1.7 is required -->
+ <property environment="env" />
+ <property file="../SPlat/build.properties" description="set the SPlat build parameters" />
+ <property file="build.properties" description="set the build parameters" />
+
+ <!-- ================================================= -->
+ <!-- build-stub: Build siman-stub.jar -->
+ <!-- ================================================= -->
+ <target name="build-stub" description="Build the hewis-stub.jar">
+ <!--<ant antfile="${hewis-stub.dir}/build.xml" target="build-stub-dist" inheritall="false">
+ <property name="project.dir" value="${project.dir}" />
+ <property name="compiler.debug" value="${compiler.debug}" />
+ <property name="compiler.generate.no.warnings" value="${compiler.generate.no.warnings}" />
+ <property name="compiler.max.memory" value="${compiler.max.memory}" />
+ <property name="compiler.optimize" value="${compiler.optimize}" />
+ <property name="compiler.deprecation" value="${compiler.deprecation}" />
+ </ant>-->
+ </target>
+
+ <!-- ================================================= -->
+ <!-- splat: Build SPlat project -->
+ <!-- ================================================= -->
+ <target name="splat" description="Builds SPlat project">
+ <ant dir="../${splat.project.name}" />
+ </target>
+
+ <!-- ================================================= -->
+ <!-- build-dist: Create the JAR distribution -->
+ <!-- ================================================= -->
+ <target name="build-dist" depends="clean, splat, build-stub" description="Builds the JAR distribution">
+ <echo message="build ${siman-common.jar.name}.jar" />
+
+ <!-- <antcall target="compile-java">
+ </antcall>-->
+
+ <mkdir dir="${siman-common.dist.dir}" />
+ <jar destfile="${siman-common.dist.dir}/${siman-common.jar.name}">
+ <zipfileset dir="${siman-common.bin.dir}">
+ <include name="**" />
+ <exclude name="test" />
+ <exclude name="**/datasourceContextTomcat.xml" />
+ </zipfileset>
+ <manifest>
+ <attribute name="Built-By" value="${app.author}" />
+ <attribute name="Version" value="${app.version}" />
+ <attribute name="Built-Date" value="${timesimple}" />
+ </manifest>
+ </jar>
+ <!-- <jar destfile="${hewis-lib-common.dist.dir}/${hewis-lib-common.itf.jar.name}">
+ <zipfileset dir="${build.classes.dir}">
+ <include name="**/*.properties" />
+ <include name="**/*Enum.class" />
+ <include name="**/*Utils.class" />
+ <include name="**/*Props.class" />
+ <include name="**/wsclient/dto/*DTO.class" />
+ <exclude name="test" />
+ </zipfileset>
+ <manifest>
+ <attribute name="Built-By" value="EURIWARE" />
+ <attribute name="Version" value="${app.version}" />
+ <attribute name="Built-Date" value="${timesimple}" />
+ </manifest>
+ </jar>-->
+ </target>
+
+ <!-- ================================================= -->
+ <!-- clean: Clean the dist directory -->
+ <!-- ================================================= -->
+ <target name="clean" description="clean the build directory">
+ <echo message="deleting files in ${splat.dist.dir}" />
+ <delete includeemptydirs="true" failonerror="false">
+ <fileset dir="${splat.dist.dir}" includes="**/*" />
+ </delete>
+ </target>
+</project>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description>PMD Plugin preferences rule set Hewis
+ level 1 : not to be violated AREVA requirements
+ level 2 : not to be violated EURIWARE requirements
+ level 3 :should not be violated AREVA requirements
+ level 4 :should not be violated EURIWARE requirements
+ level 5 : good practices
+ </description>
+
+ <exclude-pattern>.*/org/.*</exclude-pattern>
+ <exclude-pattern>.*/test/.*</exclude-pattern>
+
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringInstantiation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringToString">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseSingleton">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchDensity">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CloseResource">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/BadComparison">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EqualsNull">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConfusingTernary">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/IdempotentOperations">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ImmutableField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyConditional">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PreserveStackTrace">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SingularField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/LooseCoupling">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CheckResultSet">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/NullAssignment">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnusedModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DontImportSun">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DefaultPackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/BooleanInversion">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace">
+ <priority>1</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/DuplicateImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang">
+ <priority>2</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/UnusedImports">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/LongInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize">
+ <properties>
+ <property name="prefix" value="_"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions">
+ <properties>
+ <property name="staticPrefix" value=""/>
+ <property name="staticSuffix" value=""/>
+ <property name="memberPrefix" value="_"/>
+ <property name="memberSuffix" value=""/>
+ </properties>
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AbstractNaming">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/NoPackage">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/PackageCase">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NPathComplexity">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
+ <properties>
+ <property name="minimun" value="50"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList">
+ <properties>
+ <property name="minimun" value="10"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength">
+ <properties>
+ <property name="minimun" value="1000"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
+ <properties>
+ <property name="reportLevel" value="25"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount">
+ <priority>4</priority>
+ <properties>
+ <property name="reportLevel" value="20"/>
+ </properties>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyFields">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyMethods">
+ <properties>
+ <property name="maxmethods" value="15"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter">
+ <priority>5</priority>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid naming fields without the prefix '_'" name="FieldNamingRules">
+ <description>
+ Detects when a field has not a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private int _foo; // OK
+ private int bar; // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //FieldDeclaration[@Static='false']
+ //VariableDeclarator
+ //VariableDeclaratorId
+ [not(starts-with(@Image, '_'))]
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid parameters with the prefix '_'" name="ParametersNamingRules">
+ <description>
+ Detects when a parameter has a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private void foo(int bar) // OK
+ private void foo2(int _bar) // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //VariableDeclaratorId
+ [starts-with(@Image, '_')]
+ [not (../../../FieldDeclaration)]
+
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule name="DoNotUseConditionalExpression "
+ message="Do not use condition?statement:statement;"
+ class="net.sourceforge.pmd.rules.XPathRule">
+ <description>
+ Detect using of condition?statement:statement;
+ </description>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value>
+ <![CDATA[
+ //ConditionalExpression
+ ]]>
+ </value>
+ </property>
+ </properties>
+ <priority>3</priority>
+ <example>
+ <![CDATA[
+ public class Sample {
+ boolean bar(int x, int y) {
+ if (x== y)
+ same;
+ else
+ diff;
+
+
+ return (x == y) ? same : diff;
+ // wrong
+ }
+
+
+ }
+ ]]>
+ </example>
+ </rule>
+
+
+</ruleset>
--- /dev/null
+Manifest-Version: 1.0
+Class-Path:
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:aop="http://www.springframework.org/schema/aop"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans
+http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+http://www.springframework.org/schema/aop
+http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
+
+</beans>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+ <fileset name="all" enabled="true" check-config-name="Siman CheckStyle" local="false">
+ <file-match-pattern match-pattern="." include-pattern="true"/>
+ </fileset>
+</fileset-config>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+ <classpathentry kind="src" path=".apt_src">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry combineaccessrules="false" kind="src" path="/Siman-Common"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/SPlat"/>
+ <classpathentry kind="lib" path="/Siman-Common/dist/siman-common.jar"/>
+ <classpathentry kind="output" path="build/classes"/>
+</classpath>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="debug-config,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AUTO_TARGETS" value="debug-config,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="debug-config,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/simer.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/hibernate.cfg.xml" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/struts.xml" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/labels.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/som_en.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/Test.java" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/spring" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/labels_en.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/jndi.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/som.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/log4j.xml" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/src/siman.properties" type="1"/> </launchConfigurationWorkingSet>}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Siman/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Siman"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="workingSet" name="workingSet"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/conf/debug.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/conf/templates" type="2"/> </launchConfigurationWorkingSet>}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Siman/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,auto,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Siman}"/>
+</launchConfiguration>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:<?xml version="1.0" encoding="UTF-8"?> <launchConfigurationWorkingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" label="working set" name="working set"> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/SPlat/dist" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/Test.class" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/hibernate.cfg.xml" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/jndi.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/labels.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/labels_en.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/log4j.xml" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/siman.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/simer.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/som.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/som_en.properties" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/spring" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/build/classes/struts.xml" type="1"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/conf/generated" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman/dist" type="2"/> <item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/Siman-Common/dist" type="2"/> </launchConfigurationWorkingSet>}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/Siman/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Siman"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Siman/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Siman}"/>
+</launchConfiguration>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+ <useProjectRuleSet>true</useProjectRuleSet>
+ <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+ <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Siman</name>
+ <comment></comment>
+ <projects>
+ <project>Siman-Common</project>
+ <project>SPlat</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>auto,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/Ant_Siman_Dev_Config_Builder.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/Ant_Siman_War_Builder.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.atlassw.tools.eclipse.checkstyle.CheckstyleBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sourceforge.pmd.runtime.pmdBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>com.atlassw.tools.eclipse.checkstyle.CheckstyleNature</nature>
+ <nature>net.sourceforge.pmd.runtime.pmdNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description/>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor"/>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators"/>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP"/>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues"/>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation"/>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation"/>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck"/>
+ <rule ref="rulesets/basic.xml/CheckResultSet"/>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray"/>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt"/>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements"/>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock"/>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt"/>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer"/>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck"/>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals"/>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable"/>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod"/>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation"/>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount"/>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount"/>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount"/>
+ <rule ref="rulesets/codesize.xml/NPathComplexity"/>
+ <rule ref="rulesets/codesize.xml/TooManyFields"/>
+ <rule ref="rulesets/codesize.xml/TooManyMethods"/>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
+ <rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration"/>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType"/>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile"/>
+ <rule ref="rulesets/controversial.xml/BooleanInversion"/>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis"/>
+ <rule ref="rulesets/controversial.xml/DefaultPackage"/>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly"/>
+ <rule ref="rulesets/controversial.xml/DontImportSun"/>
+ <rule ref="rulesets/controversial.xml/NullAssignment"/>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn"/>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
+ <rule ref="rulesets/controversial.xml/UnusedModifier"/>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod"/>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration"/>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface"/>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters"/>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>
+ <rule ref="rulesets/design.xml/BadComparison"/>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal"/>
+ <rule ref="rulesets/design.xml/CloseResource"/>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>
+ <rule ref="rulesets/design.xml/ConfusingTernary"/>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract"/>
+ <rule ref="rulesets/design.xml/EqualsNull"/>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>
+ <rule ref="rulesets/design.xml/IdempotentOperations"/>
+ <rule ref="rulesets/design.xml/ImmutableField"/>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass"/>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch"/>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>
+ <rule ref="rulesets/design.xml/NonStaticInitializer"/>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton"/>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
+ <rule ref="rulesets/design.xml/PreserveStackTrace"/>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull"/>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
+ <rule ref="rulesets/design.xml/SimplifyConditional"/>
+ <rule ref="rulesets/design.xml/SingularField"/>
+ <rule ref="rulesets/design.xml/SwitchDensity"/>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor"/>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod"/>
+ <rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter"/>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty"/>
+ <rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>
+ <rule ref="rulesets/design.xml/UseSingleton"/>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang"/>
+ <rule ref="rulesets/imports.xml/DuplicateImports"/>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage"/>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports"/>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit"/>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads"/>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention"/>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal"/>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln"/>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>
+ <rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>
+ <rule ref="rulesets/junit.xml/JUnitSpelling"/>
+ <rule ref="rulesets/junit.xml/JUnitStaticSuite"/>
+ <rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>
+ <rule ref="rulesets/junit.xml/SimplifyBooleanAssertion"/>
+ <rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>
+ <rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>
+ <rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertNullInsteadOfAssertTrue"/>
+ <rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>
+ <rule ref="rulesets/migrating.xml/AvoidAssertAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/AvoidEnumAsIdentifier"/>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation"/>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4SuitesShouldUseSuiteAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseAfterAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseBeforeAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnit4TestShouldUseTestAnnotation"/>
+ <rule ref="rulesets/migrating.xml/JUnitUseExpected"/>
+ <rule ref="rulesets/migrating.xml/LongInstantiation"/>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator"/>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap"/>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList"/>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation"/>
+ <rule ref="rulesets/naming.xml/AbstractNaming"/>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions"/>
+ <rule ref="rulesets/naming.xml/LongVariable"/>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions"/>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName"/>
+ <rule ref="rulesets/naming.xml/NoPackage"/>
+ <rule ref="rulesets/naming.xml/PackageCase"/>
+ <rule ref="rulesets/naming.xml/ShortMethodName"/>
+ <rule ref="rulesets/naming.xml/ShortVariable"/>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName"/>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions"/>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString"/>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops"/>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>
+ <rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation"/>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList"/>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError"/>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally"/>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar"/>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField"/>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends"/>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck"/>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering"/>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration"/>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar"/>
+ <rule ref="rulesets/strings.xml/StringInstantiation"/>
+ <rule ref="rulesets/strings.xml/StringToString"/>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings"/>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar"/>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf"/>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength"/>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable"/>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling"/>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException"/>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
+</ruleset>
--- /dev/null
+#Wed Sep 19 19:21:52 MSD 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=true
+org.eclipse.jdt.apt.genSrcDir=.apt_src
--- /dev/null
+#Wed Sep 19 19:21:52 MSD 2012
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.processAnnotations=enabled
+org.eclipse.jdt.core.compiler.source=1.6
--- /dev/null
+#Wed Sep 19 19:21:52 MSD 2012
+classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER/owners=jst.java\:6.0
+classpath.helper/org.eclipse.jst.server.core.container\:\:org.eclipse.jst.server.tomcat.runtimeTarget\:\:Apache\ Tomcat\ v6.0/owners=jst.web\:2.5
+eclipse.preferences.version=1
--- /dev/null
+#Thu Sep 20 12:53:11 MSD 2012
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="Siman">
+ <wb-resource deploy-path="/" source-path="/WebContent"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
+ <wb-resource deploy-path="/WEB-INF/classes" source-path="/.apt_src"/>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/hibernate-3.5.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.aop-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.asm-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.aspects-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.beans-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.context.support-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.context-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.core-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.expression-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.instrument.tomcat-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.instrument-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.jdbc-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.jms-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.orm-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.oxm-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.test-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.transaction-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.web.portlet-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.web.servlet-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.web.struts-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/lib/org.springframework.web-3.1.2.RELEASE.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/activation.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/antlr-2.7.6.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/commons-collections-3.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/dom4j-1.6.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/javassist-3.11.0.GA.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/jta-1.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/log4j-1.2.15.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/lucene-core-2.9.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/lucene-queries-2.9.2.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/mailapi.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/mysql-connector-java-5.1.5-bin.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/poi-3.7-20101029.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/poi-ooxml-3.7-20101029.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/poi-ooxml-schemas-3.7-20101029.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/poi-scratchpad-3.7-20101029.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/pop3.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/slf4j-api-1.6.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/slf4j-log4j12-1.6.1.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/smtp.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/lib/xmlpublic.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/dist/splat-kernel.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/dist/splat-manox.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/SPlat/dist/splat-som.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/classpath/lib/Siman-Common/dist/siman-common.jar">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <property name="java-output-path" value="build/classes"/>
+ <property name="context-root" value="siman"/>
+ </wb-module>
+</project-modules>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <runtime name="Apache Tomcat v6.0"/>
+ <fixed facet="jst.java"/>
+ <fixed facet="jst.web"/>
+ <installed facet="jst.java" version="6.0"/>
+ <installed facet="jst.web" version="2.5"/>
+ <installed facet="java.apt" version="5.0"/>
+</faceted-project>
--- /dev/null
+#Thu Sep 20 12:53:11 MSD 2012
+DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator;
+USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;
+USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.common.componentcore.internal.ModuleCoreValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;
+USER_PREFERENCE=overrideGlobalPreferencesfalse
+eclipse.preferences.version=1
--- /dev/null
+Manifest-Version: 1.0
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="WebApp_9" version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+ <display-name>S-SIMER</display-name>
+
+ <welcome-file-list>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+
+ <filter>
+ <filter-name>struts2</filter-name>
+ <filter-class>
+ org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
+ </filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>struts2</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+
+ <mime-mapping>
+ <extension>brep</extension>
+ <mime-type>application/geom</mime-type>
+ </mime-mapping>
+
+ <!-- ======================================================== -->
+ <!-- Link between ServletContext and Spring framework -->
+ <!-- ======================================================== -->
+ <context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>classpath*:/spring/*</param-value>
+ </context-param>
+
+ <listener>
+ <listener-class>
+ org.springframework.web.context.ContextLoaderListener
+ </listener-class>
+ </listener>
+
+</web-app>
--- /dev/null
+<Context path="/download" docBase="REPOSITORY_HOME/downloads" crossContext="true" reloadable="true" />
\ No newline at end of file
--- /dev/null
+Simer {
+ org.splat.kernel.RealmLoginModule required debug=true;
+};
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application>
+
+ <default-doctypes>
+ <step number="1">
+ <mapping extension="pdf" type="requirements"/>
+ <mapping extension="doc" type="specification"/> <!-- Microsoft Word 2003 and earlier -->
+ <mapping extension="docx" type="specification"/> <!-- Microsoft Word 2007 and later -->
+ <mapping extension="xml" type="specification"/> <!-- Microsoft Word 2007 Open XML -->
+ </step>
+ <step number="2">
+ <mapping extension="doc" type="design"/>
+ <mapping extension="docx" type="design"/>
+ <mapping extension="xml" type="design"/>
+ </step>
+ <step number="3">
+ <mapping extension="doc" type="memorandum"/>
+ <mapping extension="docx" type="memorandum"/>
+ <mapping extension="xml" type="memorandum"/>
+ <mapping extension="sldprt" type="geometry"/> <!-- SolidWorks Part -->
+ <mapping extension="sldasm" type="geometry"/> <!-- SolidWorks Assembly -->
+ <mapping extension="part" type="geometry"/> <!-- GEOM Part -->
+ <mapping extension="py" type="geometry"/> <!-- GEOM Python script -->
+ </step>
+ <step number="4">
+ <mapping extension="doc" type="memorandum"/>
+ <mapping extension="docx" type="memorandum"/>
+ <mapping extension="xml" type="memorandum"/>
+ <mapping extension="med" type="model"/>
+ <mapping extension="py" type="model"/> <!-- SMESH Python script -->
+ </step>
+ </default-doctypes>
+
+ <modules>
+ <mapping extension="doc" executable="winword.exe"/>
+ <mapping extension="docx" executable="winword.exe"/>
+ <mapping extension="xml" executable="winword.exe"/>
+ <mapping extension="part" executable="../sgeom/index.jsp"/>
+ <mapping extension="med" executable="../smesh/index.jsp"/>
+ </modules>
+
+ <viewers extension="pdf,brep" />
+
+ <converters>
+ <geometry from="sldprt" to="brep" executable="converter.exe"/>
+ <geometry from="py" to="brep" executable="converter.exe"/>
+ </converters>
+
+ <templates>
+ <document type="specification" file="specification.xml"/>
+ <document type="design" file="design.xml"/>
+ </templates>
+
+</application>
\ No newline at end of file
--- /dev/null
+<Context path="/repository" docBase="REPOSITORY_HOME/vault" crossContext="true" reloadable="true" />
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project-structure>
+
+
+<!-- 1. Database physical location
+ -->
+ <database>
+ <repository disk="C:/Repository" />
+ </database>
+
+
+<!-- 2. Formats
+ -->
+ <formats>
+
+<!-- 2.1 Project elements identification scheme
+ Studies, Knowledges and Documents are identified by unique user references. The structure of these references is customizable.
+ You customize references through patterns.
+ A reference's pattern is a character string including format directives. These format directives allow you to insert
+ some information into the reference. The following directives are available:
+ - %yy or %yyyy for inserting the entity creation year on 2 or 4 digits
+ - %0000 for inserting a unique index, the number of digits being defined by the number of 0
+ The above index is unique in the scope of cycle defined by the first format directive (year). In other words, this index
+ restarts every new year. As such, for making references unique on this application server, both format directives (cycle
+ and index) must be present in the pattern.
+ Other characters are simply inserted as is in generated references. They can be used for extending the reference uniqueness
+ beyond application servers, by adding a prefix specific to a given server (for example, a company department name).
+ Given that these references may be used as directory or file names of the repository vault, the pattern must not include
+ illicit characters such as '/', '?', '<' etc.
+ -->
+ <references study="DER%yy%0000"/>
+
+<!-- 2.2 Physical files naming scheme
+ The physical data files stored into the repository vault can be named as follows:
+ - By the user-defined title of corresponding documents ("title" name attribute below)
+ - Encoded by a built-in scheme ("encoded" name attribute)
+ - As is, that is, by keeping the name of the imported file ("asis" name attribute - not yet supported)
+ Remarks:
+ - When using the title scheme, as file names may include accent characters, client browsers must be configured for
+ NOT encoding URLs as UTF-8.
+ - Whatever is the naming scheme used, in order to avoid name clashes, file names are anyway suffixed by an index
+ unique in the scope of the owner study.
+ -->
+ <files name="encoded"/>
+
+<!-- 2.3 Document versions format
+ -->
+ <versions pattern="%M.%m[-%s]"/>
+ </formats>
+
+
+<!-- 3. Document types
+
+ Warning: Articles must be ordered in a way that used document types (uses attribute values) must previously be defined.
+ Example: "requirements" type must be defined before "specification" because "specification" uses "requirements".
+ Remarks:
+ - "knowledge" is a reserved word qualifying Knowledge Elements. So, it must not be used as a document type name.
+ - "default" and "built-in" are also reserved words used for defining validation cycles.
+ - In this version, the "uses" attribute is limited to 1 document type only.
+ -->
+ <documents>
+ <article type="requirements"/>
+ <article type="specification" uses="requirements"/>
+ <article type="design" uses="specification"/>
+ <article type="geometry" uses="design"/>
+ <article type="model" uses="geometry"/>
+ <article type="loads" uses="model"/>
+ <article type="script" uses="loads"/>
+ <article type="log" uses="script"/>
+ <article type="results" uses="script"/>
+ <article type="report" uses="results"/>
+ <article type="memorandum"/>
+ <article type="minutes"/>
+ </documents>
+
+
+<!-- 4. Simulation Context types
+
+ Warning: The Simulation Context type "product" is mandatory as it is used by at least one application.
+ -->
+ <contexts>
+
+ <!-- General information -->
+ <article type="customer"/>
+ <article type="product"/>
+ <article type="phase"/> <!-- Phase of the product -->
+ <article type="need"/> <!-- Customer needs -->
+ <article type="purpose"/> <!-- Objective of the study -->
+ <article type="physic"/> <!-- Structure analysis, Thermal-hydraulics, Neutronic... -->
+
+ <!-- Geometry characteristics Examples: -->
+ <article type="object"/> <!-- Car, Plane, Equipment... -->
+ <article type="part"/> <!-- Crankcase, Outer layer... -->
+ <artivle type="geometry"/> <!-- Surface, Volume -->
+
+ <!-- Model characteristics Examples: -->
+ <article type="model"/> <!-- CSG, FEM... -->
+ <article type="element"/> <!-- Bar, Surface, Volume -->
+ <article type="shape"/> <!-- (Surface) Triangle, Quadrangle... (Volume) Tetrahedron, Hexahedron... -->
+ <article type="order"/> <!-- First-order, Second-order... -->
+
+ <!-- Analysis type Examples: -->
+ <article type="analysis"/> <!-- Static, Dynamic... -->
+
+ <!-- Software tools used -->
+ <article type="platform"/>
+ <article type="module"/>
+ <article type="component"/>
+ </contexts>
+
+
+<!-- 5. Knowledge Elements types
+
+ Warning: The Knowledge Elements type "usecase" is reserved for internal use.
+ -->
+ <knowledges>
+ <article type="bestpractice"/>
+ <article type="limitation"/>
+ <article type="inconsistency"/>
+ <article type="metrics"/>
+ <article type="improvement"/>
+ </knowledges>
+
+
+<!-- 6. User activities
+
+ Remarks:
+ - Step names must naturally be unique.
+ - Simulation Contexts must be attached to one classification step only.
+ - Result document types must be results of one step only and be part of contents of the corresponding step.
+ -->
+ <activities>
+ <step name="specification">
+ <classification context="customer,product,phase,need,purpose,physic"/>
+ <flow contents="requirements,specification,minutes" result="specification"/>
+ <storage path="1.Study"/>
+ </step>
+ <scenario>
+ <step name="design">
+ <flow contents="design,memorandum,minutes" result="design"/>
+ <storage path="1.Study"/>
+ </step>
+ <step name="modeling">
+ <classification context="object,part,geometry"/>
+ <flow contents="geometry,memorandum,minutes" result="geometry"/>
+ <storage path="2.Geometry"/>
+ </step>
+ <step name="meshing">
+ <classification context="model,element,shape,order"/>
+ <flow contents="model,memorandum,minutes" result="model"/>
+ <storage path="3.Mesh"/>
+ </step>
+ <step name="preprocessing">
+ <classification context="analysis"/>
+ <flow contents="loads,script,minutes" result="loads"/>
+ <storage path="4.Analysis"/>
+ </step>
+ <step name="solving">
+ <classification context="platform,module,component"/>
+ <flow contents="log,results,minutes" result="results"/>
+ <storage path="5.Result"/>
+ </step>
+ <step name="postprocessing">
+ <flow contents="memorandum,minutes"/>
+ <storage path="6.Report"/>
+ </step>
+ <step name="capitalization">
+ <flow contents="knowledge"/>
+ <storage path="6.Report"/>
+ </step>
+ </scenario>
+ <step name="reporting">
+ <flow contents="report,minutes" result="report"/>
+ <storage path="1.Study"/>
+ </step>
+ </activities>
+
+
+<!-- 6. Document validation cycles
+ Validation cycles define the actors involved in the validation steps of documents. These steps can be
+ "review", "approval" and "acceptance".
+ Remarks:
+ - Each validation cycle is defined by a tag corresponding to the type of an activity result document.
+ - The actors of validation steps can be
+ "manager", referring the responsible of study,
+ "Nx1", referring the manager of the department (see User definition for more information),
+ "Nx2", referring the boss of the department manager,
+ "customer" (most likely involved in the acceptance step).
+ -->
+ <validations>
+ <specification review="Nx1" approval="Nx2"/>
+ <report review="Nx1" approval="Nx2"/>
+ <default review="manager" />
+ </validations>
+
+</project-structure>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+ * $Id$
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+-->
+<!-- START SNIPPET: strutsDtd -->
+
+<!--
+ Struts configuration DTD.
+ Use the following DOCTYPE
+
+ <!DOCTYPE struts PUBLIC
+ "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
+ "http://struts.apache.org/dtds/struts-2.0.dtd">
+-->
+
+<!ELEMENT struts (package|include|bean|constant)*>
+
+<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)>
+<!ATTLIST package
+ name CDATA #REQUIRED
+ extends CDATA #IMPLIED
+ namespace CDATA #IMPLIED
+ abstract CDATA #IMPLIED
+ externalReferenceResolver NMTOKEN #IMPLIED
+>
+
+<!ELEMENT result-types (result-type+)>
+
+<!ELEMENT result-type (param*)>
+<!ATTLIST result-type
+ name CDATA #REQUIRED
+ class CDATA #REQUIRED
+ default (true|false) "false"
+>
+
+<!ELEMENT interceptors (interceptor|interceptor-stack)+>
+
+<!ELEMENT interceptor (param*)>
+<!ATTLIST interceptor
+ name CDATA #REQUIRED
+ class CDATA #REQUIRED
+>
+
+<!ELEMENT interceptor-stack (interceptor-ref*)>
+<!ATTLIST interceptor-stack
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT interceptor-ref (param*)>
+<!ATTLIST interceptor-ref
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT default-interceptor-ref (#PCDATA)>
+<!ATTLIST default-interceptor-ref
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT default-action-ref (#PCDATA)>
+<!ATTLIST default-action-ref
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT default-class-ref (#PCDATA)>
+<!ATTLIST default-class-ref
+ class CDATA #REQUIRED
+>
+
+<!ELEMENT global-results (result+)>
+
+<!ELEMENT global-exception-mappings (exception-mapping+)>
+
+<!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>
+<!ATTLIST action
+ name CDATA #REQUIRED
+ class CDATA #IMPLIED
+ method CDATA #IMPLIED
+ converter CDATA #IMPLIED
+>
+
+<!ELEMENT param (#PCDATA)>
+<!ATTLIST param
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT result (#PCDATA|param)*>
+<!ATTLIST result
+ name CDATA #IMPLIED
+ type CDATA #IMPLIED
+>
+
+<!ELEMENT exception-mapping (#PCDATA|param)*>
+<!ATTLIST exception-mapping
+ name CDATA #IMPLIED
+ exception CDATA #REQUIRED
+ result CDATA #REQUIRED
+>
+
+<!ELEMENT include (#PCDATA)>
+<!ATTLIST include
+ file CDATA #REQUIRED
+>
+
+<!ELEMENT bean (#PCDATA)>
+<!ATTLIST bean
+ type CDATA #IMPLIED
+ name CDATA #IMPLIED
+ class CDATA #REQUIRED
+ scope CDATA #IMPLIED
+ static CDATA #IMPLIED
+ optional CDATA #IMPLIED
+>
+
+<!ELEMENT constant (#PCDATA)>
+<!ATTLIST constant
+ name CDATA #REQUIRED
+ value CDATA #REQUIRED
+>
+
+<!-- END SNIPPET: strutsDtd -->
+
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<% String reason = request.getParameter("error");
+%>
+<s:set var="reason"><%=reason%></s:set>
+
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>SIMAN</title>
+ </head>
+
+ <body>
+ <s:text name="message.error.%{#reason}"/>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<% String reason = request.getParameter("error");
+ boolean error = false;
+ if (reason != null) error = true;
+%>
+<s:set var="error"><%=error%></s:set>
+
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="none" />
+ </jsp:include>
+
+ <s:if test="%{#error}">
+ <s:set var="reason"><%=reason%></s:set>
+ <table border="0" cellpadding="10" cellspacing="0" class="error">
+ <tr height=24 valign=middle>
+ <td>
+ <s:text name="message.error.%{#reason}"/>
+ </td>
+ </tr>
+ </table>
+ </s:if>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="button.saveas"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%><%
+ String action = request.getParameter("action");
+ String index = request.getParameter("index");
+%>
+<s:set var="todo"><%=action%></s:set>
+<s:set var="edit"><%=index%></s:set>
+
+<s:url id="develop" namespace="/study" action="document-study">
+ <s:param name="action">develop</s:param>
+</s:url>
+<s:url id="reduce" namespace="/study" action="document-study">
+ <s:param name="action">reduce</s:param>
+</s:url>
+<s:url id="reduceall" namespace="/study" action="document-study">
+ <s:param name="action">reduceall</s:param>
+</s:url>
+<s:url id="addocument" namespace="/study" action="select-file">
+ <s:param name="nextAction">import</s:param>
+</s:url>
+<s:url id="undo" namespace="/study" action="step-study"></s:url>
+
+<table width=100% cellpadding=0 cellspacing=0 border=0 class=attribute>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td width=18></td>
+ <td width=18></td>
+ <td><s:text name="label.title"/></td>
+ <td width=120 align=center> <s:text name="label.version"/> </td>
+ <td width=80 align=right><s:text name="label.size"/> </td>
+ <td width=75 align=left> <s:text name="label.date"/><img src="<s:url value="/skin/icon.sortdown.png"/>" border="none"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=7></td></tr>
+ <s:if test="documents.size > 0">
+ <s:iterator value="documents">
+ <s:set var="docindex" value="%{index}"/>
+ <tr height=18>
+ <td>
+ <s:if test="%{#todo == 'renameDocument'}">
+ <s:if test="%{#edit == #docindex}">
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </s:if><s:else>
+ <img src="<s:url value="/skin/image.box.png"/>" border="none" title=""/>
+ </s:else>
+ </s:if><s:elseif test="%{presentationState == 'open' || presentationState == 'deepopen'}">
+ <s:a href="%{reduceall}&index=%{#docindex}"><img src="<s:url value="/skin/icon.minus.png"/>" border="none" title=""/></s:a>
+ </s:elseif><s:else>
+ <s:a href="%{develop}&index=%{#docindex}"><img src="<s:url value="/skin/icon.plus.png"/>" border="none" title=""/></s:a>
+ </s:else>
+ </td>
+ <td>
+ <s:if test="%{#todo != 'renameDocument'}">
+ <div id="popdoc<s:property value="%{#docindex}"/>" style="position:absolute; display:none; top:0px; left:0px; z-index:10000;" onmouseover="javascript:_mouseOverContext=true;" onmouseout="javascript:_mouseOverContext=false;">
+ <jsp:include page="/jsp/menupopup.jsp"/>
+ </div>
+ <s:a href="popdoc%{#docindex}">
+ <img src="<s:url value="/skin/%{editIcon}"/>" onMouseOver=this.src="<s:url value="/skin/icon.ed.png"/>" onMouseOut=this.src="<s:url value="/skin/%{editIcon}"/>" width=14 height=14 border="none" title="<s:text name="tooltip.edit.document"/>"/>
+ </s:a>
+ </s:if>
+ <s:else>
+ <img src="<s:url value="/skin/%{stateIcon}"/>" width=14 height=14 border="none" title=""/>
+ </s:else>
+ </td>
+ <td><img src="<s:url value="/skin/%{fileIcon}"/>" border="none" title=""/></td>
+ <td>
+ <s:if test="%{#todo == 'renameDocument'}">
+ <s:if test="%{#edit == #docindex}">
+ <input type="hidden" name="action" value="renameDocument" />
+ <input type="hidden" name="index" value="<%=index%>" />
+ <input type="text" name="documentTitle" size="60" value="<s:property value="title"/>" />
+ </s:if><s:else>
+ <s:property value="title"/>
+ </s:else>
+ </s:if><s:else>
+ <s:a href="%{URL}" target="_blank" cssClass="link"><s:property value="title"/></s:a>
+ </s:else>
+ </td>
+ <td align=center>
+ <s:if test="%{progressState == 'EXTERN'}"><s:property value="version"/></s:if>
+ <s:else>
+ <table>
+ <tr>
+ <td><img src="<s:url value="/skin/%{sharingIcon}"/>" width=14 height=14 border="none" title="<s:text name="tooltip.shared"/>"/></td>
+ <td> <s:property value="version"/> </td>
+ <td><img src="<s:url value="/skin/%{versioningIcon}"/>" width=14 height=14 border="none" title=""/></td>
+ </tr>
+ </table>
+ </s:else>
+ </td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ <s:if test="%{presentationState == 'open' || presentationState == 'deepopen'}">
+ <s:iterator value="uses">
+ <tr height=18>
+ <td></td>
+ <td></td>
+ <td><img src="<s:url value="/skin/icon.relation.png"/>" border="none" title=""/></td>
+ <td><i><s:text name="label.uses"/>:</i> <s:property value="title"/></td>
+ <td align=center><s:property value="version"/></td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ </s:iterator>
+ <s:iterator value="attachments">
+ <tr height=18>
+ <td></td>
+ <td></td>
+ <td><img src="<s:url value="/skin/image.attach.png"/>" border="none" title=""/></td>
+ <td>
+ <i><s:text name="label.converts"/>:</i>
+ <s:property value="format"/> <s:property value="description"/>
+ </td>
+ <td align=center></td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ </s:iterator>
+ <s:if test="%{history != null}">
+ <tr height=18>
+ <td></td>
+ <s:if test="%{presentationState == 'deepopen'}">
+ <td>
+ <s:a href="%{reduce}&index=%{#docindex}"><img src="<s:url value="/skin/icon.minus.png"/>" border="none" title=""/></s:a>
+ </td>
+ <td><img src="<s:url value="/skin/image.diropen.png"/>" border="none" title=""/></td>
+ </s:if><s:else>
+ <td>
+ <s:a href="%{develop}&index=%{#docindex}"><img src="<s:url value="/skin/icon.plus.png"/>" border="none" title=""/></s:a>
+ </td>
+ <td><img src="<s:url value="/skin/image.dirclosed.png"/>" border="none" title=""/></td>
+ </s:else>
+ <td><i><s:text name="label.history"/></i></td>
+ </tr>
+ <s:if test="%{presentationState == 'deepopen'}">
+ <s:iterator value="history">
+ <tr height=18>
+ <td colspan=3></td>
+ <td>
+ <table cellpadding=0 cellspacing=0 border=0>
+ <tr>
+ <td width=18><img src="<s:url value="/skin/%{fileIcon}"/>" border="none" title=""/></td>
+ <td><s:property value="description"/></td>
+ </tr>
+ </table>
+ </td>
+ <td align=center>
+ <table>
+ <tr>
+ <td><img src="<s:url value="/skin/%{sharingIcon}"/>" width=14 height=14 border="none" title="<s:text name="tooltip.shared"/>"/></td>
+ <td><s:property value="version"/></td>
+ <td><img src="<s:url value="/skin/%{versioningIcon}"/>" width=14 height=14 border="none" title=""/></td>
+ </tr>
+ </table>
+ </td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ </s:iterator>
+ </s:if>
+ </s:if>
+ </s:if>
+ </s:iterator>
+ </s:if>
+ <s:if test="%{#todo != 'renameDocument' && userRights.canCreateDocument()}">
+ <tr height=22 valign=bottom>
+ <td align=center>
+ <s:a href="%{addocument}">
+ <img src="<s:url value="/skin/icon.add.png"/>" onMouseOver=this.src="<s:url value="/skin/icon.addhot.png"/>" onMouseOut=this.src="<s:url value="/skin/icon.add.png"/>" border="none" title="<s:text name="tooltip.import"/>" />
+ </s:a>
+ </td>
+ </tr>
+ </s:if>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%>
+<s:set var="todo"><%=request.getParameter("action")%></s:set>
+<s:set var="type"><%=request.getParameter("type")%></s:set>
+<s:url id="undo" namespace="/study" action="step-study"></s:url>
+
+<!-- Selection of an existing type of simulation context
+ -->
+<s:if test="%{#todo == 'selectContext'}">
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=2><td></td></tr>
+ <s:iterator value="simulationContexts">
+ <tr height=18>
+ <td width=18>
+ <s:if test="%{isApproved()}"><img src="<s:url value="/skin/disabled.APPROVED.png"/>" width=14 height=14 border="none" /></s:if>
+ <s:else><img src="<s:url value="/skin/disabled.state.png"/>" width=14 height=14 border="none" /></s:else>
+ </td>
+ <td>
+ <s:if test="%{type.isApproved()}"><b><s:text name="type.context.%{typeName}"/>: </b></s:if>
+ <s:else><b><s:property value="%{typeName}"/>: </b></s:else>
+ </td>
+ <td><s:property value="value"/></td>
+ </tr>
+ </s:iterator>
+ </table>
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=26>
+ <td width=18 align=center>
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </td>
+ <td>
+ <select name="contextType" onChange="submit()">
+ <s:set var="category" value="-1"/>
+ <option value="-1"><s:text name="menu.selectcontextype"/></option>
+ <option value="0"> <s:text name="menu.newcontype"/></option>
+ <s:iterator value="simulationContextTypes">
+ <s:set var="valided" value="%{isApproved()}"/>
+ <s:if test="%{#category != #valided}">
+ <s:if test="%{#category != '-1'}"></optgroup></s:if>
+ <s:if test="%{#valided}"><optgroup label=" <s:text name="label.contypes.valid"/>"></s:if>
+ <s:else><optgroup label=" <s:text name="label.contypes"/>"></s:else>
+ <s:set var="category" value="%{#valided}"/>
+ </s:if>
+ <option value="<s:property value="index"/>">
+ <s:if test="%{isApproved()}"> <s:text name="type.context.%{name}"/></s:if>
+ <s:else> <s:property value="%{name}"/></s:else>
+ </option>
+ </s:iterator>
+ </optgroup>
+ </select>
+ </td>
+ </tr>
+ </table>
+</s:if>
+<s:else>
+
+<!-- List of existing simulation contexts
+ -->
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=2><td></td></tr>
+ <s:iterator value="simulationContexts">
+ <tr height=18>
+ <td width=18>
+ <s:if test="%{isApproved()}"><img src="<s:url value="/skin/disabled.APPROVED.png"/>" width=14 height=14 border="none" /></s:if>
+ <s:else><img src="<s:url value="/skin/disabled.state.png"/>" width=14 height=14 border="none" /></s:else>
+ </td>
+ <td>
+ <s:if test="%{type.isApproved()}"><b><s:text name="type.context.%{typeName}"/>: </b></s:if>
+ <s:else><b><s:property value="%{typeName}"/>: </b></s:else>
+ </td>
+ <td><s:property value="value"/></td>
+ </tr>
+ </s:iterator>
+ </table>
+
+<!-- Display of eventual input error
+ -->
+
+<!-- Input of a new type of simulation context
+-->
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <s:if test="%{#todo == 'newContext'}">
+ <tr height=18>
+ <td width=18 align=center>
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </td>
+ <td><input type=text name=newType value="<s:text name="field.contextype"/>"> : </td>
+ <td><input type=text name=contextValue></td>
+ <td>
+ <button type="submit" value="" style="width:24px; height:16px; border:0; cursor:pointer; cursor:hand; background:transparent">
+ <img src="<s:url value="/skin/image.export.png"/>" title="<s:text name="button.save"/>"/>
+ </button>
+ </td>
+ </tr>
+ </s:if>
+
+<!-- Input of a value of the selected simulation context type
+ -->
+ <s:elseif test="%{#todo == 'setContext'}">
+ <tr height=18>
+ <td width=18 align=center>
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </td>
+ <td>
+ <s:if test="%{contextType.isApproved()}"><b><s:text name="type.context.%{contextName}"/>: </b></s:if>
+ <s:else><b><s:property value="%{contextName}"/>: </b></s:else>
+ </td>
+ <s:if test="simulationContextValues.size > 0">
+ <td id=select>
+ <select name="contextValue" onChange="setValue()">
+ <option value="-1"><s:text name="menu.select"/></option>
+ <option value="0"> <s:text name="menu.newcontext"/></option>
+ <optgroup label=" <s:text name="label.contexts"/>">
+ <s:iterator value="simulationContextValues">
+ <option value="<s:property value="index"/>"> <s:property value="value"/></option>
+ </s:iterator>
+ </optgroup>
+ </select>
+ </td>
+ <td id=enter style="display: none">
+ <input type=hidden name=contextType value="<s:property value="%{#type}"/>">
+ <input type=text name=contextValue>
+ </td>
+ <td>
+ <button type="submit" value="" style="width:24px; height:16px; border:0; cursor:pointer; cursor:hand; background:transparent">
+ <img src="<s:url value="/skin/image.export.png"/>" title="<s:text name="button.save"/>"/>
+ </button>
+ </td>
+ </s:if>
+ <s:else>
+ <td>
+ <input type=hidden name=contextType value="<s:property value="%{#type}"/>">
+ <input type=hidden name=contextValue value="0">
+ <input type=text name=contextValue>
+ </td>
+ <td>
+ <button type="submit" value="" style="width:24px; height:16px; border:0; cursor:pointer; cursor:hand; background:transparent">
+ <img src="<s:url value="/skin/image.export.png"/>" title="<s:text name="button.save"/>"/>
+ </button>
+ </td>
+ </s:else>
+ </tr>
+ </s:elseif>
+
+ </table>
+</s:else>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%>
+<%@ page import="java.util.List"%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="java.util.ResourceBundle"%>
+<%@ page import="org.splat.simer.OpenObject"%>
+<%@ page import="org.splat.simer.OpenStudy"%>
+<%@ page import="org.splat.simer.KnowledgeElementFacade"%>
+<%!
+ private enum Action { addKnowledge, renameKnowledge, editKnowledge };
+%><%
+// Scriptlet implementation is required for displaying HTML contents of knowledge values which does not work with Struts tags
+ Action todo = Action.valueOf(request.getParameter("action"));
+ String typenumber = request.getParameter("index");
+ OpenStudy study = (OpenStudy)session.getAttribute("study.open");
+ List<OpenObject.KnowledgeIterator> knowlist = study.getDisplayedKnowledges();
+ ResourceBundle locale = ResourceBundle.getBundle("som");
+%>
+<s:url id="undo" namespace="/study" action="step-study"></s:url>
+
+<table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <input type=hidden name=knowledgeType value="<%=typenumber%>">
+<%
+ for (Iterator<OpenObject.KnowledgeIterator> knowtypes = knowlist.iterator(); knowtypes.hasNext(); ) {
+ OpenObject.KnowledgeIterator type = knowtypes.next();
+%>
+ <tr height=20>
+ <td width=38%><%=locale.getString("type.knowledge." + type.getType())%></td>
+ <td width=62%><s:text name="label.description"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=7></td></tr>
+<%
+ List<KnowledgeElementFacade> knowelms = type.getKnowledgeElements();
+ for (Iterator<KnowledgeElementFacade> iterator = knowelms.iterator(); iterator.hasNext(); ) {
+ KnowledgeElementFacade kelm = iterator.next();
+%>
+ <tr height=20 valign=top>
+
+<!-- Title
+ -->
+ <td>
+<% if (kelm.getPresentationState().equals("open")) {
+%> <img src="<s:url value="/skin/image.hold.gif"/>" border="none" width=18 height=12/>
+<% }%> <table cellpadding=0 cellspacing=0 border=0>
+ <tr>
+<%
+ if (todo == Action.renameKnowledge && kelm.getIndex().equals(typenumber)) {
+%> <td width=18>
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </td>
+ <td><input type=text size="35" name=knowledgeTitle value="<%=kelm.getTitle()%>"></td>
+<% } else
+ if (todo == Action.editKnowledge && kelm.getIndex().equals(typenumber)) {
+%> <td width=18>
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </td>
+ <td><%=kelm.getTitle()%></td>
+<% } else {
+%> <td width=18>
+ <s:set var="path">/skin/icon.<%=kelm.getProgressState()%>.png</s:set>
+ <img src="<s:url value="%{#path}"/>" width=14 height=14 border="none" title=""/>
+ </td>
+ <td><%=kelm.getTitle()%></td>
+<% }
+%> </tr>
+ </table>
+ </td>
+
+<!-- Value
+ -->
+ <td>
+ <table cellpadding=0 cellspacing=0 border=0>
+ <tr valign=top>
+<%
+ if (todo == Action.editKnowledge && kelm.getIndex().equals(typenumber)) {
+%> <td>
+ <input type=hidden name=text>
+ <script language='JavaScript' type='text/javascript'>
+<% out.print("displayTextEditor('knowledgeValue', '" + kelm.getFullValue() + "', 450, 150);");
+%> </script>
+ </td>
+<% } else {
+%> <td background="<s:url value="/skin/image.vline.png"/>" width=20>
+<% if (kelm.getPresentationState().equals("open")) {
+%> <img src="<s:url value="/skin/image.hide.png"/>" border="none" width=20 height=12/>
+<% } %> <img src="<s:url value="/skin/image.box.png"/>" border="none" title=""/>
+ </td>
+ <td><%=kelm.getValue()%></td>
+<% }
+%> </tr>
+<% if (kelm.getPresentationState().equals("open")) {
+%> <tr height=8>
+ <td><img src="<s:url value="/skin/image.hline.png"/>" border="none" width=20 height=8 title=""/></td>
+ </tr>
+<% }
+%> </table>
+ </td>
+ </tr>
+<%
+ }
+ if (todo == Action.addKnowledge && type.getIndex().equals(typenumber)) {
+%> <tr height=5><td></td></tr>
+ <tr valign=top>
+ <td>
+ <table cellpadding=0 cellspacing=0 border=0>
+ <tr>
+ <td width=18>
+ <s:a href="%{undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" /></s:a>
+ </td>
+ <td><input type=text size="35" name=knowledgeTitle></td>
+ </tr>
+ </table>
+ </td>
+ <td>
+ <input type=hidden name=text>
+ <script language='JavaScript' type='text/javascript'>
+<% out.print("displayTextEditor('knowledgeValue', '<p> </p>', 450, 150);");
+%> </script>
+ </td>
+ </tr>
+ <tr height=4><td></td></tr>
+<% }
+ else {
+%> <tr height=30><td></td></tr>
+<% }
+ }
+%> <tr height=30 valign=middle><td></td></tr>
+
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.simer.OpenKnowledge"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!-- Initialization of the context
+ -->
+<% OpenKnowledge entity = (OpenKnowledge)session.getAttribute("knowledge.open");
+%>
+<!-- Display of the properties tab
+ -->
+ <div id="tab-bar">
+ <span id="tab-front"> <s:text name="title.properties"/> </span>
+ </div>
+
+<!-- Display of properties
+ -->
+ <div id=menuitem-box>
+ <table border=0 cellspacing=0 cellpadding=0 class=text>
+ <tr height=2><td></td></tr>
+ <tr>
+ <td> <s:text name="label.reference"/>: </td>
+ <td><%=entity.getReference()%></td>
+ </tr>
+ <tr>
+ <td> <s:text name="label.author"/>: </td>
+ <td><%=entity.getAuthorName()%></td>
+ </tr>
+ <tr>
+ <td> <s:text name="label.created"/>: </td>
+ <td><%=entity.getDate()%></td>
+ </tr>
+ <tr height=2><td></td></tr>
+ </table>
+ </div>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.kernel.User"%>
+<%@ page import="org.splat.som.Study"%>
+<%@ page import="org.splat.som.KnowledgeElement"%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@ page import="org.splat.simer.ApplicationSettings"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<%! private enum Menu { none, create, open, study, knowledge, datadmin, sysadmin, help };
+%>
+<!-- Initialization of the context
+ -->
+<% String login = request.getParameter("login"); // Null or disabled
+ String selection = request.getParameter("menu"); // Active menu
+
+ Menu selected = Menu.valueOf(selection);
+
+ ApplicationRights user = (ApplicationRights)session.getAttribute("user.rights"); // Active user rights
+ Object study = (Object)session.getAttribute("study.open"); // Active study, if exists
+ Object known = (Object)session.getAttribute("knowledge.open"); // Active knowledge, if exists
+%>
+<!-- Set of actions associated to menus
+ -->
+<s:set var="wurl"><%=ApplicationSettings.getWebSiteURL()%></s:set>
+<s:set var="hurl"><%=ApplicationSettings.getHelpURL()%></s:set>
+<s:url id="login" namespace="/" action="login">
+ <s:param name="backMenu"><%=selection%></s:param>
+</s:url>
+<s:url id="logout" namespace="/" action="logout">
+ <s:param name="backMenu"><%=selection%></s:param>
+</s:url>
+<s:url id="new" namespace="/" action="select">
+ <s:param name="menu">create</s:param>
+</s:url>
+<s:url id="open" namespace="/" action="select">
+ <s:param name="menu">search</s:param>
+</s:url>
+<s:url id="study" namespace="/study" action="step-study"></s:url>
+<s:url id="idea" namespace="/study" action="step-knowledge"></s:url>
+<s:url id="datadmin" namespace="/" action="select">
+ <s:param name="menu">datadmin</s:param>
+</s:url>
+<s:url id="sysadmin" namespace="/" action="select">
+ <s:param name="menu">sysadmin</s:param>
+</s:url>
+<s:url id="site" value="%{#wurl}"></s:url>
+<s:url id="help" value="%{#hurl}"></s:url>
+
+<!-- Display of the menu-bar
+ -->
+<div id=header>
+ <div id=top-spacer></div>
+ <div id=logo>
+ <s:a href="%{site}" target="_new"><img src="<s:url value="/skin/logo.png"/>" width="115" height="24" border="none"/></s:a>
+ </div>
+
+ <div id=menu-bar>
+<%
+ if (selected == Menu.create) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.new.png"/>" border="none" title="<s:text name="tooltip.new"/>" /></span>
+<% } else if (user.canCreateStudy()) {
+%> <span id="menu-back"><s:a href="%{new}"><img src="<s:url value="/skin/icon.new.png"/>" border="none" title="<s:text name="tooltip.new"/>" /></s:a></span>
+<% } else {
+%> <span id="menu-back"><img src="<s:url value="/skin/disabled.new.png"/>" border="none" /></span>
+<% }
+
+ if (selected == Menu.open) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.open.png"/>" border="none" title="<s:text name="tooltip.open"/>" /></span>
+<% } else { // Accessible to everyone
+%> <span id="menu-back"><s:a href="%{open}"><img src="<s:url value="/skin/icon.open.png"/>" border="none" title="<s:text name="tooltip.open"/>" /></s:a></span>
+<% }
+
+ if (selected == Menu.study) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.study.png"/>" border="none" /></span>
+<% } else if (study == null) {
+%> <span id="menu-back"><img src="<s:url value="/skin/disabled.study.png"/>" border="none" /></span>
+<% } else {
+%> <span id="menu-back"><s:a href="%{study}"><img src="<s:url value="/skin/icon.study.png"/>" border="none" title="<s:text name="tooltip.study"/>" /></s:a></span>
+<% }
+
+ if (selected == Menu.knowledge) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.idea.png"/>" border="none" /></span>
+<% } else if (known == null) {
+%> <span id="menu-back"><img src="<s:url value="/skin/disabled.idea.png"/>" border="none" /></span>
+<% } else {
+%> <span id="menu-back"><s:a href="%{idea}"><img src="<s:url value="/skin/icon.idea.png"/>" border="none" title="<s:text name="tooltip.idea"/>" /></s:a></span>
+<% }
+
+ if (selected == Menu.datadmin) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.books.png"/>" border="none" /></span>
+<% } else if (user.canManageKnowledges()) {
+%> <span id="menu-back"><s:a href="%{datadmin}"><img src="<s:url value="/skin/icon.books.png"/>" border="none" title="<s:text name="tooltip.datadmin"/>" /></s:a></span>
+<% }
+
+ if (selected == Menu.sysadmin) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.base.png"/>" border="none" /></span>
+<% } else if (user.canManageDatabase()) {
+%> <span id="menu-back"><s:a href="%{sysadmin}"><img src="<s:url value="/skin/icon.base.png"/>" border="none" title="<s:text name="tooltip.sysadmin"/>" /></s:a></span>
+<% }
+
+ if (selected == Menu.help) {
+%> <span id="menu-front"><img src="<s:url value="/skin/icon.help.png"/>" border="none" /></span>
+<% } else { // Accessible to everyone
+%> <span id="menu-back"><s:a href="%{help}" target="_new"><img src="<s:url value="/skin/icon.help.png"/>" border="none" title="<s:text name="tooltip.help"/>" /></s:a></span>
+<% }
+%></div>
+<!-- Display of the login menu
+ -->
+<%if (login == null) { // That is, not disabled (yes, null means enabled!)
+ User connected = user.getUser();
+%><div id=login-bar>
+ <table border="0" cellpadding="4" cellspacing="0" class="text">
+ <tr valign="bottom">
+ <td><br/><img src="<s:url value="/skin/image.user.png"/>" border="none"/></td>
+<% if (connected != null) {
+ if (connected.getRoleNames().equals("sysadmin")) {
+%> <td><s:text name="label.sysadmin"/></td>
+<% } else {
+%> <td><%=connected.getDisplayName()%></td>
+<% }
+%> <td>| <s:a href="%{logout}" cssClass="link"><s:text name="menu.logout"/></s:a></td>
+<% } else {
+%> <td><br/><s:a href="%{login}" cssClass="link"><s:text name="menu.login"/></s:a></td>
+<% }
+%> <td></td>
+ </tr>
+ </table>
+ </div>
+<%}
+%><div id=dock></div>
+</div>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="org.splat.wapp.Menu"%>
+<%@ page import="org.splat.wapp.MenuItem"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!-- Initialization of the context
+ -->
+<% String mename = request.getParameter("menu");
+ Menu menu = (Menu)session.getAttribute("menu." + mename);
+%>
+ <s:set var="menuname"><%=menu.getName()%></s:set>
+ <s:set var="namespace"><%=menu.getNamespace()%></s:set>
+
+<!-- Display of the menu tab
+ -->
+ <div id="tab-bar">
+ <span id="tab-front"> <s:text name="title.%{#menuname}"/> </span>
+ </div>
+
+<!-- Display of menu items
+ -->
+ <div id=menuitem-box>
+<%
+ boolean submenu = false;
+ for (Iterator<MenuItem> listem = menu.asList().iterator(); listem.hasNext(); ) {
+ MenuItem item = listem.next();
+ String arrow = "image.hold.gif";
+
+ if (item.isSubItem()) {
+ if (!submenu) {
+ submenu = true;
+%> <div id="article-separator"></div>
+<% }
+ } else {
+ if (submenu) {
+ submenu = false;
+%> <div id="article-separator"></div>
+<% }
+ if (item.isGroup()) {
+ if (item.isOpen()) arrow = "image.downarrow.png";
+ else arrow = "image.rightarrow.png";
+ }
+ }
+ String name = item.getLabel();
+ String icon = item.getIcon();
+%> <div id="article-item" onMouseOver="this.style.backgroundImage='url(<s:url value="/skin/image.highlighted.png"/>)'" onMouseOut="this.style.backgroundImage='url(<s:url value="/skin/image.white.png"/>)'">
+ <table width=100% border=0 cellspacing=0 cellpadding=0 class=menu>
+ <tr height=22 valign=middle>
+ <s:set var="menulabel"><%=name%></s:set>
+ <s:set var="menuicon">/skin/<%=icon%></s:set>
+ <s:set var="menuarrow">/skin/<%=arrow%></s:set>
+<% if (item.isSelected()) {
+ if (icon != null) {
+%> <td background="<s:url value="/skin/image.highlighted.png"/>" width=20 align=center><img src="<s:url value="%{#menuicon}"/>" border="none" /></td>
+<% }
+%> <td background="<s:url value="/skin/image.highlighted.png"/>"> <s:text name="%{#menulabel}"/></td>
+ <td background="<s:url value="/skin/image.highlighted.png"/>" width=20 align=right><img src="<s:url value="%{#menuarrow}"/>" border="none" /></td>
+<% } else {
+ if (icon != null) {
+%> <td width=20 align=center><img src="<s:url value="%{#menuicon}"/>" border="none" /></td>
+<% }
+ String href = item.getAction();
+ if (href != null) {
+ String[] link = href.split("\\x3F"); // '?' character
+%> <s:set var="menulink"><%=link[0]%></s:set>
+ <s:url id="item" namespace="%{#namespace}" action="%{#menulink}">
+<% if (link.length > 1) {
+ link = link[1].split("\\x26"); // '&' character
+ for (int i=0; i<link.length; i++) {
+ String[] param = link[i].split("=");
+%> <s:set var="menuitemparameter"><%=param[0]%></s:set>
+ <s:set var="menuitemvalue"><%=param[1]%></s:set>
+ <s:param name="%{#menuitemparameter}" value="%{#menuitemvalue}"/>
+<% }
+ }
+%> </s:url>
+ <td> <s:a href="%{#item}" cssClass="item"><s:text name="%{#menulabel}"/></s:a></td>
+<% } else {
+%> <td> <font color=#A1A192><s:text name="%{#menulabel}"/></font></td>
+<% }
+%> <td width=20 align=right><img src="<s:url value="%{#menuarrow}"/>" border="none" /></td>
+<% }
+%>
+ </tr>
+ </table>
+ </div>
+<% }
+%>
+ </div>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<s:set var="entitindex" value="%{index}"/>
+<s:set var="menupopup" value="%{popup}"/>
+
+<table width=186 cellspacing=0 cellpadding=0>
+<tr valign=top>
+<td>
+<table width=182 cellspacing=1 cellspacing=0 cellpadding=0 bgcolor=#AAAAAA>
+ <tr><td>
+ <table width=180 cellspacing=0 cellpadding=0>
+ <s:iterator value="#menupopup.asList()">
+ <s:if test="isSeparator()">
+ <tr height=<s:property value="height"/> bgcolor="#FFFFFF">
+ <td align=center><img src="<s:url value="/skin/image.hr.png"/>" height=1 width=170 border="none"/></td>
+ </tr>
+ </s:if>
+ <s:else>
+ <tr height=<s:property value="height"/> bgcolor="#FFFFFF">
+ <s:if test="isEnabled()">
+ <td onMouseOver="this.style.backgroundImage='url(<s:url value="/skin/image.highlighted.png"/>)'" onMouseOut="this.style.backgroundImage='url(<s:url value="/skin/image.white.png"/>)'">
+ <s:if test="isClientSide()">
+ <s:set var="menu" value="%{action}"/>
+ </s:if><s:else>
+ <s:url id="menu" namespace="/study" action="%{action}">
+ <s:param name="index" value="%{#entitindex}" />
+ </s:url>
+ </s:else>
+ <table cellspacing=0 cellpadding=0>
+ <tr>
+ <td width=22 align=right><img src="<s:url value="/skin/%{icon}"/>" style="margin-top:1px; border:none;"/> </td>
+ <s:if test="needConfirmation()">
+ <td>
+ <a href="javascript:void(0)" class="item" onclick="executeConfirmedAction('<s:property value="%{#menu}"/>', '<s:text name="%{confirmationMessage}"/>')"><s:text name="%{label}"/></a>
+ </td>
+ </s:if>
+ <s:else>
+ <td>
+ <a href="javascript:void(0)" class="item" onclick="executeAction('<s:property value="%{#menu}"/>')"><s:text name="%{label}"/></a>
+ </td>
+ </s:else>
+ </tr>
+ </table>
+ </td>
+ </s:if>
+ <s:else>
+ <td onMouseOver="this.style.backgroundImage='url(<s:url value="/skin/image.disablighted.png"/>)'" onMouseOut="this.style.backgroundImage='url(<s:url value="/skin/image.white.png"/>)'">
+ <table cellspacing=0 cellpadding=0>
+ <tr>
+ <td width=22></td>
+ <td><font color="#A1A192"><s:text name="%{label}"/></font></td>
+ </tr>
+ </table>
+ </td>
+ </s:else>
+ </tr>
+ </s:else>
+ </s:iterator>
+ </table>
+ </td></tr>
+</table>
+</td>
+<td>
+<table width=4 cellspacing=0 cellspacing=0 cellpadding=0>
+ <tr height=10>
+ <td><img src="<s:url value="/skin/image.trcorner.png"/>" border="none"/></td>
+ </tr>
+ <tr>
+ <s:set var="menuheight" value="#menupopup.height - 10"/>
+ <td><img src="<s:url value="/skin/image.right.png"/>" height=<s:property value="#menuheight"/> width=4 border="none"/></td>
+ </tr>
+</table>
+</td>
+</tr>
+<tr>
+ <td><img src="<s:url value="/skin/image.bottom.png"/>" border="none"/></td>
+ <td><img src="<s:url value="/skin/image.brcorner.png"/>" border="none"/></td>
+</tr>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="java.io.ObjectOutputStream"%>
+<%@ page import="java.io.IOException"%>
+<%@ page import="java.net.URL"%>
+<%@ page import="org.splat.kernel.User"%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@ page import="org.splat.simer.OpenStudyServices"%>
+<%
+ String doctype = request.getParameter("type");
+ ApplicationRights rights = (ApplicationRights)session.getAttribute("user.rights");
+ OpenStudyServices make = (OpenStudyServices)session.getAttribute("study.open");
+
+ try {
+ ObjectOutputStream toapplet = new ObjectOutputStream(response.getOutputStream());
+
+ URL docurl = make.newTemplateBasedDocument(doctype, rights.getUser());
+ if (docurl != null) {
+ toapplet.writeObject(docurl);
+ toapplet.flush();
+ toapplet.close();
+ }
+ } catch (IOException error) {
+// error.printStackTrace();
+ }
+%>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%>
+<table width=100% cellpadding=0 cellspacing=0 border=0 class=attribute>
+ <tr height=22 valign=bottom>
+ <s:if test="%{writeAccess == 'true' && stepEnabled == 'true' && userRights.canAddComment()}">
+ <td width=20 align=center>
+ <img src="<s:url value="/skin/icon.add.png"/>" border="none" title="<s:text name="tooltip.addcomment"/>" />
+ </td>
+ <td> </td>
+ </s:if>
+ </tr>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%>
+<!-- Initialization of the context
+ -->
+<% String type = request.getParameter("entity"); // Study or Knowledge element
+%>
+<s:set var="type"><%=type%></s:set>
+<s:url id="develop" namespace="/study" action="document-%{#type}">
+ <s:param name="action">develop</s:param>
+</s:url>
+<s:url id="reduce" namespace="/study" action="document-%{#type}">
+ <s:param name="action">reduce</s:param>
+</s:url>
+<s:url id="reduceall" namespace="/study" action="document-%{#type}">
+ <s:param name="action">reduceall</s:param>
+</s:url>
+
+<table width=100% cellpadding=0 cellspacing=0 border=0 class=attribute>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td width=18></td>
+ <td width=18></td>
+ <td><s:text name="label.title"/></td>
+ <td width=120 align=center> <s:text name="label.version"/> </td>
+ <td width=80 align=right><s:text name="label.size"/> </td>
+ <td width=75 align=left> <s:text name="label.date"/><img src="<s:url value="/skin/icon.sortdown.png"/>" border="none"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=7></td></tr>
+ <s:if test="documents.size > 0">
+ <s:iterator value="documents">
+ <tr height=18>
+ <td>
+ <s:if test="%{presentationState == 'open' || presentationState == 'deepopen'}">
+ <s:a href="%{reduceall}&index=%{index}"><img src="<s:url value="/skin/icon.minus.png"/>" border="none" title=""/></s:a>
+ </s:if><s:else>
+ <s:a href="%{develop}&index=%{index}"><img src="<s:url value="/skin/icon.plus.png"/>" border="none" title=""/></s:a>
+ </s:else>
+ </td>
+ <td><img src="<s:url value="/skin/%{stateIcon}"/>" width=14 height=14 border="none" title=""/></td>
+ <td><img src="<s:url value="/skin/%{fileIcon}"/>" border="none" title=""/></td>
+ <td>
+ <s:a href="%{URL}" target="_blank" cssClass="link"><s:property value="title"/></s:a>
+ </td>
+ <td align=center>
+ <s:if test="%{progressState == 'EXTERN'}"><s:property value="version"/></s:if>
+ <s:else>
+ <table>
+ <tr>
+ <td><img src="<s:url value="/skin/%{sharingIcon}"/>" width=14 height=14 border="none" title="<s:text name="tooltip.shared"/>"/></td>
+ <td> <s:property value="version"/> </td>
+ <td><img src="<s:url value="/skin/%{versioningIcon}"/>" width=14 height=14 border="none" title=""/></td>
+ </tr>
+ </table>
+ </s:else>
+ </td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ <s:if test="%{presentationState == 'open' || presentationState == 'deepopen'}">
+ <s:iterator value="uses">
+ <tr height=18>
+ <td></td>
+ <td></td>
+ <td><img src="<s:url value="/skin/icon.relation.png"/>" border="none" title=""/></td>
+ <td><i><s:text name="label.uses"/>:</i> <s:property value="title"/></td>
+ <td align=center><s:property value="version"/></td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ </s:iterator>
+ <s:iterator value="attachments">
+ <tr height=18>
+ <td></td>
+ <td></td>
+ <td><img src="<s:url value="/skin/image.attach.png"/>" border="none" title=""/></td>
+ <td>
+ <i><s:text name="label.converts"/>:</i>
+ <s:property value="format"/> <s:property value="description"/>
+ </td>
+ <td align=center></td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ </s:iterator>
+ <s:if test="%{history != null}">
+ <tr height=18>
+ <td></td>
+ <s:if test="%{presentationState == 'deepopen'}">
+ <td>
+ <s:a href="%{reduce}&index=%{index}"><img src="<s:url value="/skin/icon.minus.png"/>" border="none" title=""/></s:a>
+ </td>
+ <td><img src="<s:url value="/skin/image.diropen.png"/>" border="none" title=""/></td>
+ </s:if><s:else>
+ <td>
+ <s:a href="%{develop}&index=%{index}"><img src="<s:url value="/skin/icon.plus.png"/>" border="none" title=""/></s:a>
+ </td>
+ <td><img src="<s:url value="/skin/image.dirclosed.png"/>" border="none" title=""/></td>
+ </s:else>
+ <td><i><s:text name="label.history"/></i></td>
+ </tr>
+ <s:if test="%{presentationState == 'deepopen'}">
+ <s:iterator value="history">
+ <tr height=18>
+ <td colspan=3></td>
+ <td>
+ <table>
+ <tr>
+ <td><img src="<s:url value="/skin/%{fileIcon}"/>" border="none" title=""/></td>
+ <td><s:property value="description"/></td>
+ </tr>
+ </table>
+ </td>
+ <td align=center>
+ <table>
+ <tr>
+ <td><img src="<s:url value="/skin/%{sharingIcon}"/>" width=14 height=14 border="none" title="<s:text name="tooltip.shared"/>"/></td>
+ <td><s:property value="version"/></td>
+ <td><img src="<s:url value="/skin/%{versioningIcon}"/>" width=14 height=14 border="none" title=""/></td>
+ </tr>
+ </table>
+ </td>
+ <td align=right><s:property value="size"/> </td>
+ <td align=right><s:property value="date"/></td>
+ </tr>
+ </s:iterator>
+ </s:if>
+ </s:if>
+ </s:if>
+ </s:iterator>
+ </s:if>
+ <s:else>
+ <tr height=18><td></td></tr>
+ </s:else>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"%>
+
+<s:set name="active" value="%{stepNumber}"/>
+<s:url id="addcontext" namespace="/study" action="add-context" />
+
+<table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=2><td></td></tr>
+ <s:iterator value="simulationContexts">
+ <tr height=18>
+ <s:if test="%{writeAccess == 'true' && stepEnabled == 'true' && userRights.canEditSimulationContext()}">
+ <s:set var="sindex" value="%{index}"/>
+ <td width=18>
+ <s:if test="%{stepNumber == #active}">
+ <div id="popctx<s:property value="%{#sindex}"/>" style="position:absolute; display:none; top:0px; left:0px; z-index:10000;" onmouseover="javascript:_mouseOverContext=true;" onmouseout="javascript:_mouseOverContext=false;">
+ <jsp:include page="/jsp/menupopup.jsp"/>
+ </div>
+ <s:a href="popctx%{#sindex}">
+ <img src="<s:url value="/skin/%{editIcon}"/>" onMouseOver=this.src="<s:url value="/skin/icon.ed.png"/>" onMouseOut=this.src="<s:url value="/skin/%{editIcon}"/>" width=14 height=14 border="none" title="<s:text name="tooltip.edit.context"/>"/>
+ </s:a>
+ </s:if>
+ <s:else>
+ <s:if test="%{isApproved()}"><img src="<s:url value="/skin/disabled.APPROVED.png"/>" width=14 height=14 border="none" /></s:if>
+ <s:else><img src="<s:url value="/skin/disabled.state.png"/>" width=14 height=14 border="none" /></s:else>
+ </s:else>
+ </td>
+ </s:if>
+ <td>
+ <b><s:property value="%{typeName}"/>: </b>
+ </td>
+ <td><s:property value="value"/></td>
+ </tr>
+ </s:iterator>
+ <s:if test="%{writeAccess == 'true' && stepEnabled == 'true' && userRights.canEditSimulationContext()}">
+ <tr height=26>
+ <td>
+ <s:a href="%{#addcontext}">
+ <img src="<s:url value="/skin/icon.add.png"/>" onMouseOver=this.src="<s:url value="/skin/icon.addhot.png"/>" onMouseOut=this.src="<s:url value="/skin/icon.add.png"/>" border="none" title="<s:text name="tooltip.addcontext"/>" />
+ </s:a>
+ </td>
+ </tr>
+ </s:if>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%>
+<%@ page import="org.splat.simer.OpenObject"%>
+<%
+// On the contrary of Struts tags, the Java implementation allows the HTML contents of knowledge values to be displayed
+ String entitype = request.getParameter("entity"); // Study or Knowledge element
+ OpenObject object = (OpenObject)session.getAttribute(entitype + ".open");
+ String description = object.getDisplayedDescription();
+%>
+<table cellpadding=0 cellspacing=0 border=0 class=text>
+<% if (description != null) {
+%><tr>
+ <td><%=description%></td>
+ </tr>
+<% }
+%><tr height=2><td></td></tr>
+ <tr height=18>
+ <s:if test="%{writeAccess == 'true' && stepEnabled == 'true'}">
+ <td>
+ <img src="<s:url value="/skin/icon.add.png"/>" border="none" title="<s:text name="tooltip.adddescription"/>" />
+ </td>
+ </s:if>
+ </tr>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ taglib prefix="s" uri="/struts-tags"
+%>
+<%@ page import="java.util.List"%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="java.util.ResourceBundle"%>
+<%@ page import="org.splat.simer.OpenObject"%>
+<%@ page import="org.splat.simer.OpenKnowledge"%>
+<%@ page import="org.splat.simer.KnowledgeElementFacade"%>
+<%@ page import="org.splat.simer.DisplayBaseAction"%>
+<%@ page import="com.opensymphony.xwork2.ActionContext"%>
+<%@ page import="com.opensymphony.xwork2.util.ValueStack"%>
+<%
+// Scriptlet implementation is required for displaying HTML contents of knowledge values which does not work with Struts tags
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ Object stacktop = stack.peek();
+ DisplayBaseAction action = (DisplayBaseAction)stacktop;
+
+ String entitype = request.getParameter("entity"); // Study or Knowledge element
+ OpenObject object = (OpenObject)session.getAttribute(entitype + ".open");
+ List<OpenObject.KnowledgeIterator> knowlist = object.getDisplayedKnowledges();
+ ResourceBundle locale = ResourceBundle.getBundle("som");
+%>
+<s:set var="entitype"><%=entitype%></s:set>
+<s:url id="develop" namespace="/study" action="knowledge-%{#entitype}">
+ <s:param name="action">develop</s:param>
+</s:url>
+<s:url id="reduce" namespace="/study" action="knowledge-%{#entitype}">
+ <s:param name="action">reduce</s:param>
+</s:url>
+<s:url id="addknowledge" namespace="/study" action="add-knowledge" />
+
+<table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+<%
+ String curindex = object.getIndex().toString();
+ for (Iterator<OpenObject.KnowledgeIterator> knowtypes = knowlist.iterator(); knowtypes.hasNext(); ) {
+ OpenObject.KnowledgeIterator type = knowtypes.next();
+%>
+ <tr height=20>
+ <td width=38%><%=locale.getString("type.knowledge." + type.getType())%></td>
+ <td width=62%><s:text name="label.description"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=7></td></tr>
+<%
+ List<KnowledgeElementFacade> knowelms = type.getKnowledgeElements();
+ for (Iterator<KnowledgeElementFacade> iterator = knowelms.iterator(); iterator.hasNext(); ) {
+ KnowledgeElementFacade kelm = iterator.next();
+ if (object instanceof OpenKnowledge && kelm.getIndex().equals(curindex)) continue;
+ stack.push(kelm);
+%>
+ <tr height=20 valign=top>
+
+<!-- Title
+ -->
+ <td>
+<% if (kelm.getPresentationState().equals("open")) {
+%> <img src="<s:url value="/skin/image.hold.gif"/>" border="none" width=18 height=12/>
+<% }%> <table cellpadding=0 cellspacing=0 border=0>
+ <tr>
+ <td width=18>
+<% if (action.getWriteAccess().equals("true") && !kelm.getProgressState().equals("APPROVED")) {
+%>
+ <s:set var="edimage">/skin/icon.ed<%=kelm.getProgressState()%>.png</s:set>
+ <div id="popup<s:property value="%{index}"/>" style="position:absolute; display:none; top:0px; left:0px; z-index:10000;" onmouseover="javascript:_mouseOverContext=true;" onmouseout="javascript:_mouseOverContext=false;">
+ <jsp:include page="/jsp/menupopup.jsp" />
+ </div>
+ <s:a href="popup%{index}">
+ <img src="<s:url value="%{#edimage}"/>" onMouseOver=this.src="<s:url value="/skin/icon.ed.png"/>" onMouseOut=this.src="<s:url value="%{#edimage}"/>" width=14 height=14 border="none" title=""/>
+ </s:a>
+<% } else {
+%> <s:set var="reamage">/skin/icon.<%=kelm.getProgressState()%>.png</s:set>
+ <img src="<s:url value="%{#reamage}"/>" width=14 height=14 border="none" title=""/>
+<% }
+%> </td>
+ <td><%=kelm.getTitle()%></td>
+ </tr>
+ </table>
+ </td>
+
+<!-- Value
+ -->
+ <td>
+ <table cellpadding=0 cellspacing=0 border=0>
+ <tr valign=top>
+ <td background="<s:url value="/skin/image.vline.png"/>" width=20>
+ <s:set var="knowledge"><%=kelm.getIndex()%></s:set>
+<% if (kelm.getPresentationState().equals("open")) {
+%> <img src="<s:url value="/skin/image.hide.png"/>" border="none" width=20 height=12/>
+ <s:a href="%{reduce}&index=%{#knowledge}"><img src="<s:url value="/skin/icon.minus.png"/>" border="none" title=""/></s:a>
+<% } else {
+%> <s:a href="%{develop}&index=%{#knowledge}"><img src="<s:url value="/skin/icon.plus.png"/>" border="none" title=""/></s:a>
+<% }
+%> </td>
+ <td><%=kelm.getValue()%></td>
+ </tr>
+<% if (kelm.getPresentationState().equals("open")) {
+%> <tr height=8>
+ <td><img src="<s:url value="/skin/image.hline.png"/>" border="none" width=20 height=8 title=""/></td>
+ </tr>
+<% }
+%> </table>
+ </td>
+ </tr>
+<%
+ }
+%>
+ <s:if test="writeAccess">
+
+<!-- Add knowledge element button
+ -->
+ <s:set var="knowledge"><%=type.getIndex()%></s:set>
+ <tr height=20 valign=bottom>
+ <td>
+ <s:a href="%{addknowledge}?knowledgeType=%{#knowledge}">
+ <img src="<s:url value="/skin/icon.add.png"/>" onMouseOver=this.src="<s:url value="/skin/icon.addhot.png"/>" onMouseOut=this.src="<s:url value="/skin/icon.add.png"/>" border="none" title="<s:text name="tooltip.addknowledge"/>" />
+ </s:a>
+ </td>
+ </tr>
+ <tr height=10><td></td></tr>
+ </s:if><s:else>
+ <tr height=20><td></td></tr>
+ </s:else>
+<%
+ }
+%>
+</table>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!-- Initialization of the context
+ -->
+<% ApplicationRights rights = (ApplicationRights)session.getAttribute("user.rights");
+ boolean anonymous = true;
+
+ if (rights.getUser() != null) anonymous = false;
+%>
+ <div id=article-box>
+ <div id=article-body>
+ <form name="search" action="refresh-study" method="post">
+ <input type=hidden name="contextIndex" />
+ <s:set var="valid"><s:text name="button.result"/></s:set>
+
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20>
+ <td width=20%> <s:text name="field.among"/></td>
+ <td width=20%> <s:text name="field.state"/></td>
+ <td width=60%> <s:text name="field.context"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=3></td></tr>
+ <tr valign=top>
+ <td>
+ <s:if test="owner == 'all'">
+ <input type=radio name="owner" value="all" checked onClick="unsetReference()"><s:text name="criterion.study.all"/><br/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="all" onClick="unsetReference()"><s:text name="criterion.study.all"/><br/>
+ </s:else>
+<% if (anonymous) {
+%> <input type=radio name="owner" value="mine" disabled><s:text name="criterion.study.mine"/><br/>
+<% } else {
+%> <s:if test="owner == 'mine'">
+ <input type=radio name="owner" value="mine" checked onClick="unsetReference()"><s:text name="criterion.study.mine"/><br/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="mine" onClick="unsetReference()"><s:text name="criterion.study.mine"/><br/>
+ </s:else>
+<% }
+%> <s:if test="owner == 'ref'">
+ <input type=radio name="owner" value="ref" checked onClick="setReference()"><s:text name="criterion.study.ref"/><br/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="ref" onClick="setReference()"><s:text name="criterion.study.ref"/><br/>
+ </s:else>
+ <div id=refid>
+ <input type=text name="reference" value="<s:property value="%{reference}"/>" size="18" onKeydown="changeFilter()"/>
+ <br/>
+ </div>
+ </td>
+ <td>
+ <div id=statlist>
+ <s:if test="state == 'inPROGRESS'">
+ <input type=radio name="state" value="inPROGRESS" checked onClick="changeFilter()"><s:text name="criterion.inprogress"/><br/>
+ </s:if><s:else>
+ <input type=radio name="state" value="inPROGRESS" onClick="changeFilter()"><s:text name="criterion.inprogress"/><br/>
+ </s:else>
+ <s:if test="state == 'inCHECK'">
+ <input type=radio name="state" value="inCHECK" checked onClick="changeFilter()"><s:text name="criterion.incheck"/><br/>
+ </s:if><s:else>
+ <input type=radio name="state" value="inCHECK" onClick="changeFilter()"><s:text name="criterion.incheck"/><br/>
+ </s:else>
+ <s:if test="state == 'END'">
+ <input type=radio name="state" value="END" checked onClick="changeFilter()"><s:text name="criterion.end"/>
+ </s:if><s:else>
+ <input type=radio name="state" value="END" onClick="changeFilter()"><s:text name="criterion.end"/>
+ </s:else>
+ </div>
+ </td>
+ <td rowspan=2>
+ <div id=contlist>
+
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <s:iterator value="simulationContexts">
+ <tr>
+ <td><input type=checkbox checked onClick="removeContext('<s:property value="index"/>')"> </td>
+ <td>
+ <s:if test="%{type.isApproved()}"><s:text name="type.context.%{type.name}"/>: </s:if>
+ <s:else><s:property value="%{type.name}"/>: </s:else>
+ </td>
+ <td><s:property value="value"/></td>
+ </tr>
+ </s:iterator>
+
+ <s:if test="%{#todo == 'setContext'}">
+ <tr>
+ <td>
+ <img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" onClick="cancel()" />
+ </td>
+ <td>
+ <s:if test="%{selectedContextType.isApproved()}"><s:text name="type.context.%{selectedContextType.name}"/>: </s:if>
+ <s:else><s:property value="%{selectedContextType.name}"/>: </s:else>
+ </td>
+ <td>
+ <select name="contextValue" onChange="submit()">
+ <option value="-1"><s:text name="menu.select"/></option>
+ <s:iterator value="contextValueOptions">
+ <option value="<s:property value="index"/>"> <s:property value="value" /></option>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ </s:if>
+ </table>
+
+ <s:if test="%{#todo != 'setContext'}">
+ <select name="contextType" onChange="submit()">
+ <option value="-1"><s:text name="menu.addcontext"/></option>
+ <s:iterator value="contextTypeOptions">
+ <option value="<s:property value="index"/>">
+ <s:if test="%{isApproved()}"> <s:text name="type.context.%{name}" /></s:if>
+ <s:else> <s:property value="%{name}" /></s:else>
+ </option>
+ </s:iterator>
+ </select>
+ </s:if>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <div id=wordin>
+ <br/><s:text name="field.contain"/> : <input type=text name=words value="<s:property value="%{words}"/>" onKeydown="changeFilter()" />
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan=2></td>
+ <td align=left>
+ <input type="submit" name="refresh" value="<s:text name="button.result"/>" disabled/>
+ </td>
+ </tr>
+ </table>
+
+ </form>
+ </div>
+ </div>
+ </div>
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+ <s:set var="separator" value="true"></s:set>
+
+ <s:iterator value="tabs" status="counter">
+
+ <s:set var="area" value="action"></s:set>
+
+ <s:if test="isSelected()">
+ <span id="tab-front"> <s:text name="title.%{label}"/> </span>
+ <s:set var="separator" value="false"></s:set>
+ </s:if>
+ <s:else>
+ <s:if test="#separator"><span id="tab-separator"></span></s:if>
+ <s:if test="isEnabled()">
+ <span id="tab-back" onMouseOver="this.style.backgroundColor='#EDF6FF';this.style.borderBottom='1px solid #AAAAAA';" onMouseOut="this.style.backgroundColor='transparent'"> <s:a href="%{#area}" cssClass="item"><s:text name="title.%{label}"/></s:a> </span>
+ </s:if>
+ <s:else>
+ <span id="tab-disabled"> <s:text name="title.%{label}"/> </span>
+ </s:else>
+ <s:if test="#counter.last"><span id="tab-separator"></span></s:if>
+ <s:set var="separator" value="true"></s:set>
+ </s:else>
+ </s:iterator>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.simer.OpenStudy"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!-- Initialization of the context
+ -->
+<% OpenStudy entity = (OpenStudy)session.getAttribute("study.open");
+%>
+<!-- Display of the properties tab
+ -->
+ <div id="tab-bar">
+ <span id="tab-front"> <s:text name="title.properties"/> </span>
+ </div>
+
+<!-- Display of properties
+ -->
+ <div id=menuitem-box>
+ <table border=0 cellspacing=0 cellpadding=0 class=text>
+ <tr height=2><td></td></tr>
+ <tr>
+ <td> <s:text name="label.reference"/>: </td>
+ <td><%=entity.getReference()%></td>
+ </tr>
+ <tr>
+ <td> <s:text name="label.version"/>: </td>
+ <td><%=entity.getVersion()%></td>
+ </tr>
+ <tr>
+ <td> <s:text name="label.resp"/>: </td>
+ <td><%=entity.getAuthorName()%></td>
+ </tr>
+ <tr>
+ <td> <s:text name="label.created"/>: </td>
+ <td><%=entity.getDate()%></td>
+ </tr>
+ <tr>
+ <td> <s:text name="label.modified"/>: </td>
+ <td><%=entity.getLastModificationDate()%></td>
+ </tr>
+ <tr height=2><td></td></tr>
+ </table>
+ </div>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.simer.OpenObject"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!-- Initialization of the context
+ -->
+<% String type = request.getParameter("entity"); // Study or Knowledge Element
+ String disabled = request.getParameter("disable"); // State of right buttons
+ OpenObject entity = (OpenObject)session.getAttribute(type + ".open"); // Active entity (Proxy + getSelection())
+%>
+<s:set var="entitype"><%=type%></s:set>
+<s:set var="disabled"><%=disabled%></s:set>
+<s:set var="proxtate"><%=entity.getProgressState()%></s:set>
+
+<s:url id="close" namespace="/study" action="close-%{#entitype}"></s:url>
+<s:url id="refresh" namespace="/study" action="open-%{#entitype}">
+ <s:param name="selection"><%=entity.getSelection()%></s:param>
+</s:url>
+
+<div id=title-bar>
+ <table width=100% border="0" cellpadding="0" cellspacing="0" class="test">
+ <tr>
+ <td width=18>
+ <s:if test="%{#disabled == 'true' || writeAccess == 'false'}">
+ <img src="<s:url value="/skin/icon.%{#proxtate}.png"/>" width=14 height=14 border="none" title="<s:text name="label.%{#proxtate}"/>" />
+ </s:if><s:else>
+ <div id="toolpop" style="position:absolute; display:none; top:0px; left:0px; z-index:10000;" onmouseover="javascript:_mouseOverContext=true;" onmouseout="javascript:_mouseOverContext=false;">
+ <jsp:include page="/jsp/menupopup.jsp"/>
+ </div>
+ <s:a href="toolpop">
+ <img src="<s:url value="/skin/icon.ed%{#proxtate}.png"/>" onMouseOver=this.src="<s:url value="/skin/icon.ed.png"/>" onMouseOut=this.src="<s:url value="/skin/icon.ed%{#proxtate}.png"/>" width=14 height=14 border="none" title="<s:text name="tooltip.edit.study"/>"/>
+ </s:a>
+ </s:else>
+ </td>
+ <td>
+ <b><%=entity.getType()%>: </b><%=entity.getTitle()%>
+ </td>
+ <td align=right>
+ <table border="0" cellpadding="0" cellspacing="0" class="text">
+ <tr>
+ <s:if test="%{#disabled == 'true'}">
+ <td width=20><img src="<s:url value="/skin/disabled.refresh.png"/>" border="none" /></td>
+ <td width=20><img src="<s:url value="/skin/disabled.delete.png"/>" border="none" /></td>
+ </s:if>
+ <s:else>
+ <td width=20>
+ <s:a href="%{refresh}">
+ <img src="<s:url value="/skin/icon.refresh.png"/>" border="none" title="<s:text name="tooltip.refresh"/>" />
+ </s:a>
+ </td>
+ <td width=20>
+ <s:a href="%{close}">
+ <img src="<s:url value="/skin/icon.close.png"/>" onMouseOver=this.src="<s:url value="/skin/icon.delete.png"/>" onMouseOut=this.src="<s:url value="/skin/icon.close.png"/>" border="none" title="<s:text name="tooltip.close"/>" />
+ </s:a>
+ </td>
+ </s:else>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</div>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.som.StudyRights"%>
+<%@ page import="org.splat.som.StepRights"%>
+<%@ page import="org.splat.simer.OpenStudy"%>
+<%@ page import="org.splat.wapp.ToolBar"%>
+<%@ page import="org.splat.wapp.ToolButton"%>
+<%@ page import="org.splat.wapp.PopupMenu"%>
+<%@ page import="java.util.Iterator"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<%!private enum Tool { none, standard, study, back };%>
+<!-- Initialization of the context
+ -->
+<%
+ String barname = request.getParameter("tools");
+ Tool bar = Tool.valueOf(barname);
+%>
+<s:url id="properties" namespace="/" action="select">
+ <s:param name="menu">configuration</s:param>
+</s:url>
+<s:url id="scenario" namespace="/study" action="add-scenario"></s:url>
+<s:url id="idea" namespace="/study" action="notyetimplemented"></s:url>
+<s:url id="back" namespace="/study" action="step-study"></s:url>
+
+<table width=100% border=0 cellspacing=0 cellpadding=0>
+ <tr height=30 valign=middle>
+<%
+ if (bar == Tool.study) {
+ OpenStudy study = (OpenStudy)session.getAttribute("study.open");
+ PopupMenu popup = study.getPopup();
+ StudyRights user = study.getStudyRights();
+%>
+ <td width=30 align=left>
+<% if (user.canEditProperties()) {
+%> <s:a href="%{#properties}"><img src="<s:url value="/skin/tool.property.png"/>" border="none" title="<s:text name="tooltip.property"/>" /></s:a>
+<% } else {
+%> <s:a href="%{#properties}"><img src="<s:url value="/skin/tool.property.png"/>" border="none" title="<s:text name="tooltip.details"/>" /></s:a>
+<% }
+%> </td>
+ <td width=30 align=left>
+<% if (popup.isEnabled("script")) {
+%> <s:a href="%{#scenario}"><img src="<s:url value="/skin/tool.scenario.png"/>" border="none" title="<s:text name="tooltip.scenario"/>"/></s:a>
+<% } else {
+%> <img src="<s:url value="/skin/disabled.scenario.png"/>" border="none" title="" />
+<% }
+%> </td>
+ <td align=right>
+ <img src="<s:url value="/skin/image.vseparator.png"/>" border="none" />
+<% ToolBar mbar = study.getModuleBar();
+ if (study.getSelectedStepRights().canCreateDocument() && mbar != null) {
+%>
+ <applet name="perform" id="perform" code="org.splat.launcher.ToolbarApplet.class" archive="../jap/splat-signedlauncher.jar" width=<%=mbar.getWidth()%> height=<%=mbar.getHeight()%>>
+<% Iterator<ToolButton> item = mbar.asList().iterator();
+ for (int i=0; item.hasNext(); i++) {
+ ToolButton tool = item.next();
+ String arg = tool.getArgument();
+%> <param name="icon<%=i%>" value="<%=tool.getIcon()%>" />
+ <param name="tool<%=i%>" value="<%=tool.getAction()%>" />
+<% if (arg != null) {
+%> <param name="file<%=i%>" value="<%=arg%>" />
+<% }
+ }
+%> </applet>
+<% }
+%> </td>
+ <td width=30 align=right>
+ <s:a href="%{#idea}"><img src="<s:url value="/skin/icon.idea.png"/>" border="none" title="<s:text name="tooltip.search"/>" /></s:a>
+ </td>
+<% }
+ else if (bar == Tool.standard) {
+%>
+ <td width=30 align=left>
+ <s:a href="%{#properties}"><img src="<s:url value="/skin/tool.property.png"/>" border="none" title="<s:text name="tooltip.details"/>" /></s:a>
+ </td>
+<% }
+ else if (bar == Tool.back) {
+%>
+ <td width=30 align=left>
+ <s:a href="%{#back}"><img src="<s:url value="/skin/icon.back.png"/>" border="none" title="<s:text name="tooltip.back"/>" /></s:a>
+ </td>
+<% }
+%></tr>
+</table>
\ No newline at end of file
--- /dev/null
+ function executeConfirmedAction (action, message) {
+// -------------------------------------------------
+ if (confirm(message)) executeAction(action);
+ else ContextHide();
+ }
+
+ function executeAction (action) {
+// -------------------------------
+ ContextHide();
+ var open = action.indexOf("(");
+ if (open > 0 && action.charAt(action.length-1) == ")") { // Function call
+
+// Client side execution via the "perform" Applet
+ var method = action.substring(0, open); // Better trim the result
+ var args = action.substring(open+1, action.length-1).split(","); // Better trim each argument
+ if (method == "launch") {
+// args[0] = executable name, args[1] = file name
+ if (args.length == 1) {
+// alert("Executing " + args[0]);
+ document.perform.launch(args[0], null);
+ } else if (args.length >= 2) {
+// alert("Executing " + args[0] + " with " + args[1]);
+ document.perform.launch(args[0], args[1]);
+ }
+ }
+ } else {
+// Server side execution via a Struts action
+ window.location = action.replace("&", "&"); // Due to string conversion in menupopup JSP
+ }
+ }
\ No newline at end of file
--- /dev/null
+//
+// Displays and hide pop-up menus.
+// Pop-ups are displayed when left-clicking on an edition icon of a link.
+// The HTML corresponding tags are supposed being the following:
+//
+// <a href="popupname"><img src="{path}icon.ed..." .../></a>
+//
+// Any other HTML construct will be ignored.
+//
+// Pop-ups can be used on a web page including java applets.
+// If a pop-up hides an applet, this latter must be hidden when displaying the pop-up - as a limitation,
+// the applet is supposed entirely hidden by the pop-up.
+// By convention:
+// - such pop-up must be named "toolpop" (<div id="toolpop"...></div><a href="toolpop">...</a>),
+// - the applet must be named "perform" (<applet id="perform"...></applet>).
+
+ var _iconName = "icon.ed";
+ var _appletName = "perform";
+ var _hiddingPopup = "toolpop";
+
+ var _replaceContext = false; // replace the system context menu
+ var _mouseOverContext = false; // is the mouse over the context menu
+ var _divContext = null;
+ var _appletContext = null; // Applet hidden by the popup
+
+ InitContext();
+
+ function InitContext() {
+// ----------------------
+ document.onmousedown = ContextMouseDown;
+ document.onclick = ContextShow;
+ }
+
+// Call from the onMouseDown event, passing the event if standards compliant
+ function ContextMouseDown(event) {
+// --------------------------------
+ if (_mouseOverContext) return;
+
+ var leftbutton = 0;
+
+ // IE is evil and doesn't pass the event object
+ if (event == null) {
+ event = window.event;
+ leftbutton = 1;
+ }
+ // We assume we have a standards compliant browser, but check if we have IE
+ var target = event.target != null ? event.target : event.srcElement;
+
+ // Only show the context menu if the right mouse button is pressed
+ // and a hyperlink on an edit icon has been clicked
+ if (_divContext != null) ContextHide(); // In case of another context menu previously shown
+ if (target.tagName.toLowerCase() == 'img') {
+ if (target.src.indexOf(_iconName) < 0) return;
+ target = target.parentNode;
+ }
+ if (event.button == leftbutton && target.tagName.toLowerCase() == 'a') {
+ _replaceContext = true;
+ if (target.getAttribute("href") == _hiddingPopup) _appletContext = document.getElementById(_appletName);
+ }
+ }
+
+ function ContextHide() {
+// -----------------------
+ _divContext.style.display = 'none';
+ if (_appletContext != null) {
+ _appletContext.style.display = 'inline';
+ _appletContext = null;
+ }
+ }
+
+// Call from the onContextMenu event, passing the event
+// If this function returns false, the browser's context menu will not show up
+ function ContextShow(event) {
+// ---------------------------
+ if (_mouseOverContext) return true;
+
+ // IE is evil and doesn't pass the event object
+ if (event == null) event = window.event;
+
+ // we assume we have a standards compliant browser, but check if we have IE
+ var target = event.target != null ? event.target : event.srcElement;
+ target = target.parentNode; // Gets the hyperlink
+ if (_replaceContext) {
+ _divContext = $(target.attributes[0].nodeValue); // Popup involved (made of document index prefixed by "popup")
+
+ // document.body.scrollTop does not work in IE
+ var scrollTop = document.scrollTop ? document.scrollTop : document.documentElement.scrollTop;
+ var scrollLeft = document.scrollLeft ? document.scrollLeft : document.documentElement.scrollLeft;
+
+ // hide the menu first to avoid an "up-then-over" visual effect
+ _divContext.style.display = 'none';
+ _divContext.style.left = event.clientX + scrollLeft + 'px';
+ _divContext.style.top = event.clientY + scrollTop + 'px';
+ _divContext.style.display = 'block';
+
+ _replaceContext = false;
+ if (_appletContext != null) _appletContext.style.display = 'none';
+
+ return false;
+ }
+ return true;
+ }
+
+// For making easier on the eyes and fingers
+ function $(id) {
+// --------------
+ return document.getElementById(id);
+ }
\ No newline at end of file
--- /dev/null
+ function initialize (result) {
+// ----------------------------
+ var refon = search.owner[3].checked;
+ if (refon) {
+ var contx = document.getElementById("contlist");
+ var words = document.getElementById("wordin");
+ contx.style.display = "none";
+ words.style.display = "none";
+ } else {
+ var refin = document.getElementById("refid");
+ refin.style.display = "none";
+ }
+ search.state.disabled = !search.owner[0].checked;
+ search.author.disabled = !search.owner[1].checked;
+ if (search.owner[0].checked && search.state.value == "0") result = "obsolete";
+ if (search.owner[1].checked && search.author.value == "0") result = "obsolete";
+ if (result == "obsolete") changeFilter(); // Hides the result section and enables the Search button
+ }
+
+ function changeFilter () {
+// ------------------------
+ var result = document.getElementById("resulist");
+
+ search.elements[0].value = "0"; // Marks the result obsolete
+ result.style.display = "none"; // Hides the result section
+ search.refresh.disabled = false; // Enables the Search button
+ if (search.owner[0].checked) {
+ if (search.state.value == "0") search.refresh.disabled = true;
+ } else search.state.value = "0";
+ if (search.owner[1].checked) {
+ if (search.author.value == "0") search.refresh.disabled = true;
+ } else search.author.value = "0";
+ }
+
+ function setReference () {
+// ------------------------
+ var result = document.getElementById("resulist");
+ var refin = document.getElementById("refid");
+ var words = document.getElementById("wordin");
+ var contx = document.getElementById("contlist");
+
+ result.style.display = "none";
+ words.style.display = "none";
+ contx.style.display = "none";
+ refin.style.display = "block";
+ search.elements[4].focus();
+ search.refresh.disabled = false;
+ }
+
+ function unsetReference () {
+// ------------------------
+ var result = document.getElementById("resulist");
+ var refin = document.getElementById("refid");
+ var words = document.getElementById("wordin");
+ var contx = document.getElementById("contlist");
+
+ result.style.display = "none";
+ refin.style.display = "none";
+ words.style.display = "block";
+ contx.style.display = "block";
+ search.refresh.disabled = false;
+ search.state.disabled = !search.owner[0].checked;
+ search.author.disabled = !search.owner[1].checked;
+ if (search.owner[0].checked && search.state.value == "0") search.refresh.disabled = true;
+ if (search.owner[1].checked && search.author.value == "0") search.refresh.disabled = true;
+ }
+
+ function removeContext (index) {
+// ------------------------------
+ search.elements[0].value = index;
+ search.submit();
+ }
+
+ function cancel () {
+// ------------------
+ search.elements[0].value = "-1";
+ search.submit();
+ }
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<% String menu = request.getParameter("backMenu"); // Last active menu
+%>
+<s:set var="menu"><%=menu%></s:set>
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>Login</title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body onLoad="document.login.username.focus();">
+
+<!-- Menu-bar
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="login" value="disabled" />
+ <jsp:param name="menu" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Login dialog
+ -->
+ <div id=right-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.login"/></div>
+ <table width=100% border="0" cellpadding="0" cellspacing="0">
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center>
+ <s:form action="login" namespace="/">
+ <tr class="error">
+ <td colspan=2><s:text name="%{errorCode}"/></td>
+ </tr>
+ <s:set var="valid"><s:text name="menu.login"/></s:set>
+ <s:textfield name="username" key="field.username" required="true" />
+ <s:password name="password" key="field.password" />
+ <s:hidden name="backMenu" value="%{menu}" />
+ <s:submit type="button" value="%{valid}" />
+ </s:form>
+ </td>
+ </tr>
+ <tr height=10><td></td></tr>
+ </table>
+ </div>
+ </div>
+
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization
+ =============================================================================================================================
+ -->
+<% String menu = request.getParameter("menu");
+%>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="<%=menu%>" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Selected active menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+ <title></title>
+</head>
+
+<body>
+
+</body>
+</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<script>document.write("<title>"+window.opener.lblInsertChar+"</title>");</script>
+<style>
+body { background: #EFEDDE; margin: 0px; }
+table { vertical-align: middle; text-align: center; border: 1px solid #e7e7e7; }
+td { font-family: tahoma, arial; font-size: 12px; vertical-align: middle; text-align: center; border: 1px solid #e7e7e7; height: 15px; width: 18px; }
+</style>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(opener.isIE7) {
+ window.resizeTo(450, 190);
+} else if(document.all) {
+ window.resizeTo(450, 180);
+} else {
+ window.resizeTo(450, 165);
+}
+function selectChar(ch) {
+ window.opener.insertHTML(ch);
+ window.close();
+}
+function InitCharPalette() {
+ if (document.getElementsByTagName)
+ var x = document.getElementsByTagName('TD');
+ else if (document.all)
+ var x = document.all.tags('TD');
+ for (var i=0; i < x.length; i++) {
+ x[i].onmouseover = over;
+ x[i].onmouseout = out;
+ x[i].onclick = click;
+ x[i].bgColor = 'lightyellow';
+ x[i].innerHTML = x[i].id;
+ }
+}
+function over() {
+ this.style.border = '1px dotted #696969';
+ this.bgColor = '#ffff99';
+}
+function out() {
+ this.style.border = '1px solid #e7e7e7';
+ this.bgColor = 'lightyellow';
+}
+function click() {
+ selectChar(this.id);
+}
+//-->
+</script>
+</head><body onLoad="InitCharPalette();"><table cellpadding="0" cellspacing="2" border="0">
+<tr><td id="¢"></td><td id="€"></td><td id="£"></td>
+<td id="¤"></td><td id="¥"></td><td id="©"></td>
+<td id="®"></td><td id="™"></td><td id="÷"></td>
+<td id="×"></td><td id="±"></td><td id="¼"></td>
+<td id="½"></td><td id="¾"></td><td id="°"></td>
+<td id="¹"></td><td id="²"></td><td id="³"></td>
+<td id="µ"></td><td id="«"></td>
+</tr><tr>
+<td id="»"></td><td id="""></td><td id="‘"></td>
+<td id="’"></td><td id="‹"></td><td id="›"></td>
+<td id="‚"></td><td id="„"></td><td id="“"></td>
+<td id="”"></td><td id="¡"></td><td id="¦"></td>
+<td id="§"></td><td id="¬"></td><td id="¯"></td>
+<td id="¶"></td><td id="·"></td><td id="¸"></td>
+<td id="¿"></td><td id="ƒ"></td>
+</tr><tr>
+<td id="—"></td><td id="–"></td><td id="•"></td>
+<td id="…"></td><td id="‰"></td><td id="ª"></td>
+<td id="º"></td><td id="ß"></td><td id="†"></td>
+<td id="‡"></td><td id="ð"></td><td id="Ð"></td>
+<td id="ø"></td><td id="Ø"></td><td id="þ"></td>
+<td id="Þ"></td><td id="œ"></td><td id="Œ"></td>
+<td id="š"></td><td id="Š"></td>
+</tr><tr>
+<td id="´"></td><td id="ˆ"></td><td id="˜"></td>
+<td id="¨"></td><td id="à"></td><td id="á"></td>
+<td id="â"></td><td id="ã"></td><td id="ä"></td>
+<td id="å"></td><td id="æ"></td><td id="À"></td>
+<td id="Á"></td><td id="Â"></td><td id="Ã"></td>
+<td id="Ä"></td><td id="Å"></td><td id="Æ"></td>
+<td id="ç"></td><td id="Ç"></td>
+</tr><tr>
+<td id="è"></td><td id="é"></td><td id="ê"></td>
+<td id="ë"></td><td id="È"></td><td id="É"></td>
+<td id="Ê"></td><td id="Ë"></td><td id="ì"></td>
+<td id="í"></td><td id="î"></td><td id="ï"></td>
+<td id="Ì"></td><td id="Í"></td><td id="Î"></td>
+<td id="Ï"></td><td id="ñ"></td><td id="Ñ"></td>
+<td id="ò"></td><td id="ó"></td>
+</tr><tr>
+<td id="ô"></td><td id="õ"></td><td id="ö"></td>
+<td id="Ò"></td><td id="Ó"></td><td id="Ô"></td>
+<td id="Õ"></td><td id="Ö"></td><td id="ù"></td>
+<td id="ú"></td><td id="û"></td><td id="ü"></td>
+<td id="Ù"></td><td id="Ú"></td><td id="Û"></td>
+<td id="Ü"></td><td id="ý"></td><td id="ÿ"></td>
+<td id="Ý"></td><td id="Ÿ"></td>
+</tr></table></body></html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<script>document.write("<title>"+window.opener.lblAddImage+"</title>");</script>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<STYLE>
+body { background: #EFEDDE; margin:10px;}
+table { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; }
+legend { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; padding-left: 5px; padding-right: 8px; }
+</STYLE>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(opener.isIE7) {
+ window.resizeTo(530, 230);
+} else if(document.all) {
+ window.resizeTo(530, 220);
+} else {
+ window.resizeTo(530, 215);
+}
+
+function AddLink() {
+ var oForm = document.linkForm;
+ if (oForm.imgurl.value == '') {
+ alert(window.opener.lblImageVal0);
+ return false;
+ }
+ html = '<img src="http://' + oForm.imgurl.value + '" alt="' + oForm.alttext.value +'" border="' + oForm.border.value + '">';
+ window.opener.insertHTML(html);
+ window.close();
+ return true;
+}
+//-->
+</script>
+</head>
+<body>
+<form name="linkForm">
+<table cellpadding="0" cellspacing="0" border="0" width=100%>
+<tr>
+<td>
+ <fieldset style="margin-left: 5px;">
+ <legend><script>document.write(window.opener.lblAddImage);</script></legend>
+ <table cellpadding="4" cellspacing="0" border="0" width=100%>
+ <tr>
+ <td align="right" valign="middle" nowrap><script>document.write(window.opener.lblImageURL);</script>:</td>
+ <td align="left" valign="top" nowrap><font color=#808080>http://</font> <input name="imgurl" type="text" id="imgurl" style="width:208px;height:18px;font-size:14px"></td>
+ </tr>
+ <tr>
+ <td align="right" valign="middle" nowrap><script>document.write(window.opener.lblImageAltText);</script>:</td>
+ <td align="left" valign="middle"><input name="alttext" type="text" id="alttext" style="width:250px;height:18px;font-size:14px"></td>
+ </tr>
+ <tr>
+ <td align="right" valign="middle" nowrap><script>document.write(window.opener.lblImageBorder);</script>:</td>
+ <td align="left" valign="middle"><input name="border" type="text" id="padding" value="0" style="width:20px;height:18px;font-size:14px"> <script>document.write(window.opener.lblImageBorderPx);</script></td>
+ </tr>
+ </table>
+ </fieldset>
+</td>
+<td></td>
+<td align="left" valign="top" style="padding: 8px;">
+<input type="button" name="btnsubmit" value="" onClick="AddLink();" style="width:100px;"/>
+<input type="button" name="btncancel" value="" onClick="window.close();" style="width:100px;"/>
+</td>
+</tr>
+</table>
+</form>
+</body>
+</html>
+<script>
+document.linkForm.btnsubmit.value = window.opener.lblLinkSubmit;
+document.linkForm.btncancel.value = window.opener.lblLinkCancel;
+</script>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Thanks to Tom Bovingdon and Rob Rix-->
+<html>
+<head>
+<script>document.write("<title>"+window.opener.lblInsertLink+"</title>");</script>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+body { background-color: #EFEDDE; margin: 10px;}
+table { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; }
+legend { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; padding-left: 5px; padding-right: 8px; }
+.style2 {font-size: 18px; background:black; font-wieght:bold; color:white; display:block; width:100%; }
+.show {left:auto;top:auto;position:auto;}
+.hide {left:-1000px;top:-1000px;position:absolute;}
+-->
+</style>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(document.all){
+ window.resizeTo(525, 255);
+} else {
+ window.resizeTo(513, 250);
+}
+function get_anchors() {
+ document.getElementById('trDocumentAnchors').className="hide";
+ rte = window.opener.document.getElementById('hdn'+window.opener.currentRTE).value
+ re = new RegExp("<[aA][^>]+?name=\"?(.+?)(\".*?>|>)", "m")
+ anchors = new Array
+ m = re.exec(rte)
+ while(m) {
+ anchors.push(m[1])
+ m = re.exec(RegExp.rightContext)
+ }
+ if(anchors.length) {
+ s = anchors.length + " matches:\n"
+ for(i = 0; i < anchors.length; i++) {
+ s = s + "- " + anchors[i] + "\n"
+ document.forms['linkForm'].DocumentAnchors.options[i] = new Option(anchors[i],anchors[i]);
+ }
+ //alert(s)
+ } else {
+ document.forms['linkForm'].DocumentAnchors.options[0] = new Option(window.opener.lblLinkNoA,'');
+ }
+ return anchors
+}
+
+var baseurl;
+function setType(type) {
+ var aa = document.getElementById('trText');
+ var ab = document.getElementById('trTarget');
+ var ac = document.getElementById('trAddress');
+ var ad = document.getElementById('trDocumentAnchors');
+ switch (type) {
+ case "mailto" :
+ baseurl= '<a href="mailto:';
+ aa.className="show";
+ ab.className="hide";
+ ac.className="show";
+ ad.className="hide";
+ if(document.all){
+ window.resizeTo(525, 225);
+ } else {
+ window.resizeTo(513, 218);
+ }
+ break;
+ case "newanchor" :
+ baseurl= '<a "';
+ aa.className="hide";
+ ab.className="hide";
+ ac.className="show";
+ ad.className="hide";
+ if(document.all){
+ window.resizeTo(525, 190);
+ } else {
+ window.resizeTo(513, 185);
+ }
+ break;
+ case "oldanchor" :
+ baseurl= '<a href=""';
+ endurl='#'
+ aa.className="show";
+ ab.className="hide";
+ ac.className="hide";
+ ad.className="show";
+ if(document.all){
+ window.resizeTo(525, 222);
+ } else {
+ window.resizeTo(513, 218);
+ }
+ break;
+ default:
+ baseurl= '<a href="';
+ aa.className="show";
+ ab.className="show";
+ ac.className="show";
+ ad.className="hide";
+ if(document.all){
+ window.resizeTo(525, 255);
+ } else {
+ window.resizeTo(513, 250);
+ }
+ break;
+ }
+}
+function AddLink() {
+ var oForm = document.linkForm;
+ //validate form
+ var protocol='';
+ var prefix="href";
+ var html;
+ var selIndex = document.linkForm.linktype.options[document.linkForm.linktype.selectedIndex].value;
+ switch (selIndex)
+ {
+ case 'http':
+ protocol='http://';
+ break;
+ case 'https':
+ protocol='https://';
+ break;
+ case 'ftp':
+ protocol='ftp://';
+ break;
+ case 'relative':
+ protocol='';
+ break;
+ case 'oldanchor':
+ oForm.url.value=document.linkForm.DocumentAnchors.options[document.linkForm.DocumentAnchors.selectedIndex].value;
+ protocol='#';
+ break;
+ case 'newanchor':
+ oForm.linkText.value=' ';
+ prefix='name';
+ break;
+ case 'mailto':
+ protocol='mailto:';
+ break;
+ }
+ if (oForm.url.value == '') {
+ alert(window.opener.lblLinkVal0);
+ return false;
+ }
+ if (oForm.linkText.value != '' && (selIndex == "http" || selIndex == "https" || selIndex == "ftp" || selIndex == "relative" )) {
+ html = '<a '+ prefix + '="'+protocol + document.linkForm.url.value + '" target="' + document.linkForm.linkTarget.options[document.linkForm.linkTarget.selectedIndex].value + '">' + document.linkForm.linkText.value + '</a>';
+ window.opener.insertHTML(html);
+ } else if(oForm.linkText.value != '') {
+ html = '<a '+ prefix + '="'+protocol + document.linkForm.url.value + '">' + document.linkForm.linkText.value + '</a>';
+ window.opener.insertHTML(html);
+ } else {
+ var param=protocol+document.linkForm.url.value + '" target="' + document.linkForm.linkTarget.options[document.linkForm.linkTarget.selectedIndex].value + '"';
+ window.opener.document.getElementById(rte).contentWindow.document.execCommand('createLink',false,param );
+ }
+ window.close();
+ return true;
+}
+//-->
+</script>
+</head><body onload="get_anchors()"><form name="linkForm">
+<table cellpadding="0" cellspacing="0" border="0" width=100%><tr>
+<td><fieldset style="margin-left: 5px;"><legend><script>document.write(window.opener.lblInsertLink);</script></legend>
+<div style="padding: 2px;"></div><table cellpadding="4" cellspacing="0" border="0" width=100%><tr>
+ <td align="right" nowrap><script>document.write(window.opener.lblLinkType);</script>:</td>
+ <td><select name="linktype" onChange="setType(this.value);" style="height:18px;font-size:14px">
+ <option value="http" selected>http://</option>
+ <option value="https">https://</option>
+ <option value="ftp">ftp://</option>
+ <script>if(!document.all) document.write("<option value=\"relative\">relative</option>")</script>
+ <option value="mailto">email</option>
+ <option value="oldanchor"><script>document.write(window.opener.lblLinkOldA);</script></option>
+ <option value="newanchor"><script>document.write(window.opener.lblLinkNewA);</script></option>
+ </select>
+ </td>
+ </tr>
+ <tr name="trDocumentAnchors" id="trDocumentAnchors">
+ <td align="right" nowrap><script>document.write(window.opener.lblLinkAnchors);</script>:</td>
+ <td>
+ <select name="DocumentAnchors" id="DocumentAnchors" style="height:18px;font-size:14px">
+ </select></td>
+ </tr>
+ <tr name="trAddress" id="trAddress">
+ <td align="right" nowrap><script>document.write(window.opener.lblLinkAddress);</script>:</td>
+ <td><input name="url" type="text" id="url" style="width:250px;height:18px;font-size:14px" value=""></td>
+ </tr>
+ <tr name="trText" id="trText">
+ <td align="right" nowrap><script>document.write(window.opener.lblLinkText);</script>:</td>
+ <td><input name="linkText" type="text" id="linkText" style="width:250px;height:18px;font-size:14px" value=""></td>
+ </tr>
+ <tr name="trTarget" id="trTarget">
+ <td align="right" nowrap><script>document.write(window.opener.lblLinkOpenIn);</script>:</td>
+ <td align="left">
+ <select name="linkTarget" id="linkTarget" style="width:180px;height:18px;font-size:14px">
+ <option value="_blank">_blank</option>
+ <option value="_self" selected>_self</option>
+ <option value="_parent">_parent</option>
+ <option value="_top">_top</option>
+ </select>
+ </td>
+ </tr>
+</table>
+<div style="padding: 2px;"></div>
+</fieldset></td><td><td align="left" valign="top" style="padding: 8px;">
+<input type="button" name="btnsubmit" value="" onclick="AddLink();" style="width:100px;"/><br>
+<input type="button" name="btncancel" value="" onClick="window.close();" style="width:100px;"/>
+</td></tr></table></form></body></html>
+<script>
+document.getElementById('trDocumentAnchors').className="hide";
+document.linkForm.btnsubmit.value = window.opener.lblLinkSubmit;
+document.linkForm.btncancel.value = window.opener.lblLinkCancel;
+</script>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><script>document.write("<title>"+window.opener.lblInsertTable+"</title>");</script>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<STYLE>
+body { background: #EFEDDE; margin:10px;}
+table { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; }
+legend { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; padding-left: 5px; padding-right: 8px; }
+</STYLE>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(opener.isIE7) {
+ window.resizeTo(530, 245);
+} else if(document.all) {
+ window.resizeTo(530, 235);
+} else {
+ window.resizeTo(460, 215);
+}
+
+function AddTable() {
+ var widthType = (document.tableForm.widthType.value == "pixels") ? "" : "%";
+ var html = '<table border="' + document.tableForm.border.value + '" cellpadding="' + document.tableForm.padding.value + '" ';
+ html += 'cellspacing="' + document.tableForm.spacing.value + '" width="' + document.tableForm.width.value + widthType + '">\n';
+ for (var rows = 0; rows < document.tableForm.rows.value; rows++) {
+ html += "<tr>\n";
+ for (cols = 0; cols < document.tableForm.columns.value; cols++) {
+ html += "<td> </td>\n";
+ }
+ html+= "</tr>\n";
+ }
+ html += "</table>\n";
+ window.opener.insertHTML(html);
+ window.opener.showGuidelines("");
+ window.close();
+}
+//-->
+</script>
+</head><body><form name="tableForm"><table cellpadding="0" cellspacing="0" border="0" width=100%><tr>
+<td><fieldset style="margin-left: 5px;"><legend><script>document.write(window.opener.lblInsertTable);</script></legend>
+<div style="padding: 2px;"></div>
+<table cellpadding="0" cellspacing="0" border="0" width=100%><tr>
+<td align="right"><script>document.write(window.opener.lblTableRows);</script>: </td>
+<td><input name="rows" type="text" id="rows" value="2" size="4"></td>
+<td align="left" valign=middle nowrap> <script>document.write(window.opener.lblTableColumns);</script>: <input name="columns" type="text" id="columns" value="2" size="4"></td>
+</tr><tr>
+<td align="right"><script>document.write(window.opener.lblTableWidth);</script>: </td>
+<td><input name="width" type="text" id="width" value="100" size="4"></td>
+<td align="left">
+<select name="widthType" id="widthType">
+<option value="percent" selected><script>document.write(window.opener.lblTablePercent);</script></option>
+<option value="pixels"><script>document.write(window.opener.lblTablePx);</script></option>
+</select></td></tr><tr>
+<td align="right" nowrap><script>document.write(window.opener.lblTableBorder);</script>: </td>
+<td><input name="border" type="text" id="border" value="1" size="4"></td>
+<td align="left"> <script>document.write(window.opener.lblTablePx);</script></td></tr><tr>
+<td align="right"><script>document.write(window.opener.lblTablePadding);</script>: </td>
+<td><input name="padding" type="text" id="padding" value="4" size="4"></td>
+<td valign=middle nowrap> <script>document.write(window.opener.lblTableSpacing);</script>: <input name="spacing" type="text" id="0" value="0" size="4"></td>
+</tr></table><div style="padding: 2px;"></div></fieldset></td>
+<td valign=top style="padding: 8px;">
+<input type="button" name="btnsubmit" value="" onClick="AddTable();" style="width:100px"/><br>
+<input type="button" name="btncancel" value="" onClick="window.close();" style="width:100px"/>
+</td></tr></table></form></body></html>
+<script>
+document.tableForm.btnsubmit.value = window.opener.lblLinkSubmit;
+document.tableForm.btncancel.value = window.opener.lblLinkCancel;
+</script>
--- /dev/null
+// Czech Language File
+// Translation provided by Richi(nickname)
+
+// Buttons
+var lblSubmit = "Odeslat"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Prepnout do RichText módu"; // Label of the Show Design view link
+var lblModeHTML = "Prepnout do HTML módu"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Uložit";
+var lblPrint = "Tisk";
+var lblSelectAll = "Vybrat/Zrušit vše";
+var lblSpellCheck = "Kontrola pravopisu";
+var lblCut = "Vyjmout";
+var lblCopy = "Kopírovat";
+var lblPaste = "Vložit";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "Zpet";
+var lblRedo = "Vpred";
+var lblHR = "Horizontální cára";
+var lblInsertChar = "Vložit speciální znak";
+var lblBold = "Tucné";
+var lblItalic = "Kurzíva";
+var lblUnderline = "Podtrhnout";
+var lblStrikeThrough = "Preškrtnuté";
+var lblSuperscript = "Horní index";
+var lblSubscript = "Dolní index";
+var lblAlgnLeft = "Zarovnat vlevo";
+var lblAlgnCenter = "Zarovanat na stred";
+var lblAlgnRight = "Zarovanat vpravo";
+var lblJustifyFull = "Zarovant do bloku";
+var lblOL = "Císlovaný seznam";
+var lblUL = "Necíslovaný seznam";
+var lblOutdent = "Zmenšit odsazení";
+var lblIndent = "Zvetšit odsazení";
+var lblTextColor = "Barva písma";
+var lblBgColor = "Zvýraznení";
+var lblSearch = "Najít a nahradit";
+var lblInsertLink = "Hypertextový odkaz";
+var lblAddImage = "Vložit obrázek";
+var lblInsertTable = "Vložit tabulku";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Vzhled</option>";
+lblFormat += "<option value=\"<h1>\">Nadpis 1</option>";
+lblFormat += "<option value=\"<h2>\">Nadpis 2</option>";
+lblFormat += "<option value=\"<h3>\">Nadpis 3</option>";
+lblFormat += "<option value=\"<h4>\">Nadpis 4</option>";
+lblFormat += "<option value=\"<h5>\">Nadpis 5</option>";
+lblFormat += "<option value=\"<h6>\">Nadpis 6</option>";
+lblFormat += "<option value=\"<p>\">Odstavec</option>";
+lblFormat += "<option value=\"<address>\">Adresa</option>";
+lblFormat += "<option value=\"<pre>\">Predformátovaný text</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Písmo</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Velikost</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Chyba preformátování obsahu";
+var lblSearchConfirm = "Hledaný výraz [SF] byl nalezen [RUNCOUNT] krát.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Jste si jistý, že chcete nahradit tento výraz výrazem [RW] ?\n";
+var lblSearchAbort = "Úkon zrušen.";
+var lblSearchNotFound = "nebyl nalezen.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Typ odkazu";
+var lblLinkOldA = "existující kotvení";
+var lblLinkNewA = "nové kotvení";
+var lblLinkNoA = "Nenalezeno kotvení";
+var lblLinkAnchors = "Kotvení";
+var lblLinkAddress = "Adresa";
+var lblLinkText = "Text odkazu";
+var lblLinkOpenIn = "Otevrít odkaz v";
+var lblLinkVal0 = "Prosím vložte url.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Storno";
+// Insert Image
+var lblImageURL = "URL obrázku";
+var lblImageAltText = "Alternativní text";
+var lblImageBorder = "Ohranicení";
+var lblImageBorderPx = "Pixelu";
+var lblImageVal0 = "Prosím udejte \"URL obrázku\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Storno";
+// Insert Table
+var lblTableRows = "Rádku";
+var lblTableColumns = "Sloupcu";
+var lblTableWidth = "Šírka tabulky";
+var lblTablePx = "pixelu";
+var lblTablePercent = "procent";
+var lblTableBorder = "Tlouštka ohranicení";
+var lblTablePadding = "Okraj bunky";
+var lblTableSpacing = "Vzdálenost bunky";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Storno";
+// Search and Replace
+var lblSearchFind = "Najít";
+var lblSearchReplace = "Nahradit za";
+var lblSearchMatch = "Rozlišovat malá a velká písmena";
+var lblSearchWholeWord = "Pouze celá slova";
+var lblSearchVal0 = "Musíte zadat hledaný retezec do \"Najít:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Storno";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Storno";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Storno";
+
+// non-designMode
+var lblAutoBR = "Použití automatického ukoncení rádku";
+var lblRawHTML = "Použití pouze nezpracovného HTML";
+var lblnon_designMode = 'Rich Text Editor lze použít v prohlížeci <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (prípadne, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) nebo <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows) vyžadováno. Prohlížece Apple Safari, IE5(Mac) a Opera nejsou v soucasné dobe podporovány, veškerý text je zde zobrazen jako HTML.';
--- /dev/null
+// German Language File
+// Translation provided by Rolf Cleis, www.cleis.net
+
+// Buttons
+var lblSubmit = "Senden"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "zum Layout-Modus wechseln"; // Label of the Show Design view link
+var lblModeHTML = "zum HTML-Modus wechseln"; // Label of the Show Code view link
+var lblSave = "Speichern";
+var lblPrint = "Drucken";
+var lblSelectAll = "Alles aus-/abwählen";
+var lblSpellCheck = "Rechtschreibung";
+var lblCut = "Ausschneiden";
+var lblCopy = "Kopieren";
+var lblPaste = "Einfügen";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "Rückgängig";
+var lblRedo = "Wiederherstellen";
+var lblHR = "horizontale Trennlinie";
+var lblInsertChar = "Sonderzeichen einfügen";
+var lblBold = "Fett";
+var lblItalic = "Kursiv";
+var lblUnderline = "Unterstrichen";
+var lblStrikeThrough = "Durchgestrichen";
+var lblSuperscript = "Hochgestellt";
+var lblSubscript = "Tiefgestellt";
+var lblAlgnLeft = "Linksbündig";
+var lblAlgnCenter = "Zentriert";
+var lblAlgnRight = "Rechtsbündig";
+var lblJustifyFull = "Blocksatz";
+var lblOL = "Geordnete Liste";
+var lblUL = "Ungeordnete Liste";
+var lblOutdent = "Text-Negativeinzug";
+var lblIndent = "Texteinzug";
+var lblTextColor = "Textfarbe";
+var lblBgColor = "Hintergrundsfarbe";
+var lblSearch = "Suchen und Ersetzen";
+var lblInsertLink = "Hyperlink einfügen";
+var lblAddImage = "Bild einfügen";
+var lblInsertTable = "Tabelle einfügen";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Format</option>";
+lblFormat += "<option value=\"<h1>\">Überschrift 1</option>";
+lblFormat += "<option value=\"<h2>\">Überschrift 2</option>";
+lblFormat += "<option value=\"<h3>\">Überschrift 3</option>";
+lblFormat += "<option value=\"<h4>\">Überschrift 4</option>";
+lblFormat += "<option value=\"<h5>\">Überschrift 5</option>";
+lblFormat += "<option value=\"<h6>\">Überschrift 6</option>";
+lblFormat += "<option value=\"<p>\">Absatz</option>";
+lblFormat += "<option value=\"<address>\">Addresse</option>";
+lblFormat += "<option value=\"<pre>\">Vorformatiert</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Schriftart</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Grösse</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Fehler beim Laden des Inhaltes.";
+var lblSearchConfirm = "Ihr Suchausdruck [SF] wurde [RUNCOUNT] mal gefunden.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Sind Sie sicher dass Sie alle gefundenen Einträge mit [RW] ersetzen wollen?\n";
+var lblSearchAbort = "Funktion wurde abgebrochen.";
+var lblSearchNotFound = "wurde nicht gefunden.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Hyperlink-Typ";
+var lblLinkOldA = "bestehender Anker";
+var lblLinkNewA = "neuer Anker";
+var lblLinkNoA = "kein Anker vorhanden";
+var lblLinkAnchors = "Anker";
+var lblLinkAddress = "Addresse";
+var lblLinkText = "Link-Text";
+var lblLinkOpenIn = "Link öffnen in";
+var lblLinkVal0 = "Bitte geben Sie eine Adresse ein.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Abbrechen";
+// Insert Image
+var lblImageURL = "Bild-Adresse";
+var lblImageAltText = "Alternativtext";
+var lblImageBorder = "Rahmenbreite";
+var lblImageBorderPx = "Pixel";
+var lblImageVal0 = "Bitte geben Sie eine Bild-Adresse ein.";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Abbrechen";
+// Insert Table
+var lblTableRows = "Zeilen";
+var lblTableColumns = "Spalten";
+var lblTableWidth = "Tabellenbreite";
+var lblTablePx = "Pixel";
+var lblTablePercent = "Prozent";
+var lblTableBorder = "Rahmenbreite";
+var lblTablePadding = "Zellabstand aussen";
+var lblTableSpacing = "Zellabstand innen";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Abbrechen";
+// Search and Replace
+var lblSearchFind = "Suchen nach";
+var lblSearchReplace = "Ersetzen durch";
+var lblSearchMatch = "Gross-/Kleinschreibung beachten";
+var lblSearchWholeWord = "Ganzes Wort";
+var lblSearchVal0 = "Bitte geben Sie einen Suchtext ein.";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Abbrechen";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Abbrechen";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Abbrechen";
+
+// non-designMode
+var lblAutoBR = "Automatischer Zeilenumbruch";
+var lblRawHTML = "Nur rein HTML verwenden";
+var lblnon_designMode = 'Um diesen Rich Text Editor verwenden zu können, benötigen Sie einen <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> Browser (z.B., <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) oder <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). Apple Safari, IE5(Mac) und Opera Browsers werden nicht unterstützt.';
--- /dev/null
+// Danish Language File
+// Translation provided by Martin Vium and Anders Jenbo
+
+// Buttons
+var lblSubmit = "Gem"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Skift til Grafisk visning"; // Label of the Show Design view link
+var lblModeHTML = "Skift til HTML visning"; // Label of the Show Code view link
+var lblSave = "Gem";
+var lblPrint = "Udskriv";
+var lblSelectAll = "Markér Alt";
+var lblSpellCheck = "Stavekontrol";
+var lblCut = "Klip";
+var lblCopy = "Kopier";
+var lblPaste = "Indsæt";
+var lblPasteText = "Indsæt fra normal tekst";
+var lblPasteWord = "Indsæt fra Word";
+var lblUndo = "Fortryd";
+var lblRedo = "Fortryd Fortryd";
+var lblHR = "Indsæt Vandret Streg";
+var lblInsertChar = "Indsæt Special Tegn";
+var lblBold = "Fed Skrift";
+var lblItalic = "Skrå Skrift";
+var lblUnderline = "Understregning";
+var lblStrikeThrough = "Gennemstregning";
+var lblSuperscript = "Hævet Skrift";
+var lblSubscript = "Sænket Skrift";
+var lblAlgnLeft = "Ventre Orienter";
+var lblAlgnCenter = "Centrér";
+var lblAlgnRight = "Højre Orienter";
+var lblJustifyFull = "Tilpas Bredde";
+var lblOL = "Tal Liste";
+var lblUL = "Uordnet Liste";
+var lblOutdent = "Tilbagejustering";
+var lblIndent = "Indjustering";
+var lblTextColor = "Tekst Farve";
+var lblBgColor = "Baggrunds Farve";
+var lblSearch = "Søg og Erstat";
+var lblInsertLink = "Indsæt Henvisning";
+var lblAddImage = "Indsæt Billede";
+var lblInsertTable = "Indsæt Tabel";
+var lblWordCount = "Ordoptælling";
+var lblUnformat = "Fjern Formatering";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Format</option>";
+lblFormat += "<option value=\"<h1>\">Overskrift 1</option>";
+lblFormat += "<option value=\"<h2>\">Overskrift 2</option>";
+lblFormat += "<option value=\"<h3>\">Overskrift 3</option>";
+lblFormat += "<option value=\"<h4>\">Overskrift 4</option>";
+lblFormat += "<option value=\"<h5>\">Overskrift 5</option>";
+lblFormat += "<option value=\"<h6>\">Overskrift 6</option>";
+lblFormat += "<option value=\"<p>\">Paragraf</option>";
+lblFormat += "<option value=\"<address>\">Adresse</option>";
+lblFormat += "<option value=\"<pre>\">Maskintekst</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Skrifttype</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Skriftstørrelse</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Der skete en fejl da indholdet skulle indlæses.";
+var lblSearchConfirm = "Søgeordet [SF] findes [RUNCOUNT] gang(e).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Er du sikker på du vil erstatte disse ord med [RW] ?\n";
+var lblSearchAbort = "Handling annulleret.";
+var lblSearchNotFound = "blev ikke fundet.";
+var lblCountTotal = "Ordtæling";
+var lblCountChar = "Bogstaver tilbage";
+var lblCountCharWarn = "Advarsel! Din text er for lang og kan moske ikke gemmes korekt.";
+
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Henvisnings Type";
+var lblLinkOldA = "eksisterende anker";
+var lblLinkNewA = "nyt anker";
+var lblLinkNoA = "Ingen Eksisterende Anker";
+var lblLinkAnchors = "Anker";
+var lblLinkAddress = "Adresse";
+var lblLinkText = "Henvisnings Tekst";
+var lblLinkOpenIn = "Åben Henvisning I";
+var lblLinkVal0 = "Indsæt venligst en adresse.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Annullér";
+// Insert Image
+var lblImageURL = "Billede Adresse";
+var lblImageAltText = "Alternativ Tekst";
+var lblImageBorder = "Kantens Tykkelse";
+var lblImageBorderPx = "Pixels";
+var lblImageVal0 = "Vær venlig at indtaste adressen til billedet.";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Annullér";
+// Insert Table
+var lblTableRows = "Rækker";
+var lblTableColumns = "Kolonner";
+var lblTableWidth = "Tabel Bredde";
+var lblTablePx = "pixels";
+var lblTablePercent = "procent";
+var lblTableBorder = "Kantens Tykkelse";
+var lblTablePadding = "Celle Indjustering";
+var lblTableSpacing = "Celle Margin";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Annullér";
+// Search and Replace
+var lblSearchFind = "Søg efter";
+var lblSearchReplace = "Erstat med";
+var lblSearchMatch = "Forskel på store og små bogstaver";
+var lblSearchWholeWord = "Søg kun efter hele ord";
+var lblSearchVal0 = "Vær venlig at indtaste et søgeord.";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Annullér";
+// Paste As Plain Text
+var lblPasteTextHint = "Tip: Højreklik og vælg \"Indsæt\" eller brug genvestasterne Ctrl+V.<br><br>";
+var lblPasteTextVal0 = "Indtast tekst."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Annuller";
+// Paste As Plain Text
+var lblPasteWordHint = "Tip: Højreklik og vælg \"Indsæt\" eller brug genvestasterne Ctrl+V.<br><br>";
+var lblPasteWordVal0 = "Indtast tekst."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Annuller";
+
+// non-designMode
+var lblAutoBR = "Benyt automatiske linie skift";
+var lblRawHTML = "Benyt kun ren HTML";
+var lblnon_designMode = 'For at benytte den grafiske tekstredigering, kræves enten en <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> browser (fx, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) eller <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). Apple Safari, IE5(Mac) og Opera browserne understøttes ikke på nuværende tidspunkt. Desuden skal alt tekst være HTML.';
--- /dev/null
+// English Language File
+// Translation provided by Timothy Bell
+
+// Buttons
+var lblSubmit = "Submit"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Switch to RichText Mode"; // Label of the Show Design view link
+var lblModeHTML = "Switch to HTML Mode"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Save";
+var lblPrint = "Print";
+var lblSelectAll = "Select/Deselect All";
+var lblSpellCheck = "Spell Check";
+var lblCut = "Cut";
+var lblCopy = "Copy";
+var lblPaste = "Paste";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "Undo";
+var lblRedo = "Redo";
+var lblHR = "Horizontal Rule";
+var lblInsertChar = "Insert Special Character";
+var lblBold = "Bold";
+var lblItalic = "Italic";
+var lblUnderline = "Underline";
+var lblStrikeThrough = "Strike Through";
+var lblSuperscript = "Superscript";
+var lblSubscript = "Subscript";
+var lblAlgnLeft = "Align Left";
+var lblAlgnCenter = "Center";
+var lblAlgnRight = "Align Right";
+var lblJustifyFull = "Justify Full";
+var lblOL = "Ordered List";
+var lblUL = "Unordered List";
+var lblOutdent = "Outdent";
+var lblIndent = "Indent";
+var lblTextColor = "Text Color";
+var lblBgColor = "Background Color";
+var lblSearch = "Search And Replace";
+var lblInsertLink = "Insert Link";
+var lblAddImage = "Add Image";
+var lblInsertTable = "Insert Table";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Format</option>";
+lblFormat += "<option value=\"<h1>\">Heading 1</option>";
+lblFormat += "<option value=\"<h2>\">Heading 2</option>";
+lblFormat += "<option value=\"<h3>\">Heading 3</option>";
+lblFormat += "<option value=\"<h4>\">Heading 4</option>";
+lblFormat += "<option value=\"<h5>\">Heading 5</option>";
+lblFormat += "<option value=\"<h6>\">Heading 6</option>";
+lblFormat += "<option value=\"<p>\">Paragraph</option>";
+lblFormat += "<option value=\"<address>\">Address</option>";
+lblFormat += "<option value=\"<pre>\">Preformatted</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Font</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Size</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Error preloading content.";
+var lblSearchConfirm = "The search expression [SF] was found [RUNCOUNT] time(s).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Are you sure you want to replace these entries with [RW] ?\n";
+var lblSearchAbort = "Operation Aborted.";
+var lblSearchNotFound = "was not found.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Link Type";
+var lblLinkOldA = "existing anchor";
+var lblLinkNewA = "new anchor";
+var lblLinkNoA = "No Existing Anchors";
+var lblLinkAnchors = "Anchors";
+var lblLinkAddress = "Address";
+var lblLinkText = "Link Text";
+var lblLinkOpenIn = "Open Link In";
+var lblLinkVal0 = "Please enter a url.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Cancel";
+// Insert Image
+var lblImageURL = "Image URL";
+var lblImageAltText = "Alternative Text";
+var lblImageBorder = "Border";
+var lblImageBorderPx = "Pixels";
+var lblImageVal0 = "Please indicate the \"Image URL\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Cancel";
+// Insert Table
+var lblTableRows = "Rows";
+var lblTableColumns = "Columns";
+var lblTableWidth = "Table width";
+var lblTablePx = "pixels";
+var lblTablePercent = "percent";
+var lblTableBorder = "Border thickness";
+var lblTablePadding = "Cell padding";
+var lblTableSpacing = "Cell spacing";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Cancel";
+// Search and Replace
+var lblSearchFind = "Find what";
+var lblSearchReplace = "Replace with";
+var lblSearchMatch = "Match case";
+var lblSearchWholeWord = "Find whole words only";
+var lblSearchVal0 = "You must enter something into \"Find what:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Cancel";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Cancel";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Cancel";
+
+
+// non-designMode
+var lblAutoBR = "Use Auto Line Breaks";
+var lblRawHTML = "Use Only Raw HTML";
+var lblnon_designMode = 'To use the Rich Text Editor, a <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> browser (eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) or <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows) are required. Apple Safari, IE5(Mac) and Opera browsers are not currently supported and all text must be in HTML.';
--- /dev/null
+// Spanish Language File
+// Translation provided by Mariano Luna
+
+// Buttons
+var lblSubmit = "Enviar"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Cambiar al modo Texto Enriquecido"; // Label of the Show Design view link
+var lblModeHTML = "Switch to HTML Mode"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Grabar";
+var lblPrint = "Imprimir";
+var lblSelectAll = "Seleccionar/Deseleccionar Todo";
+var lblSpellCheck = "Chequear Ortografía";
+var lblCut = "Cortar";
+var lblCopy = "Copiar";
+var lblPaste = "Pegar";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "Deshacer";
+var lblRedo = "Rehacer";
+var lblHR = "División Horizontal";
+var lblInsertChar = "Insertar Caracteres Especiales";
+var lblBold = "Negrita";
+var lblItalic = "Itálica";
+var lblUnderline = "Subrayado";
+var lblStrikeThrough = "Tachado";
+var lblSuperscript = "Superindice";
+var lblSubscript = "Subindice";
+var lblAlgnLeft = "Alinear a la Izquierda";
+var lblAlgnCenter = "Centrar";
+var lblAlgnRight = "Alinear a la Derecha";
+var lblJustifyFull = "Justificación Completa";
+var lblOL = "Lista Ordenada";
+var lblUL = "Lista Desordenada";
+var lblOutdent = "Quitar Indentación";
+var lblIndent = "Indentar";
+var lblTextColor = "Color del Texto";
+var lblBgColor = "Color de Fondo";
+var lblSearch = "Buscar y Reemplazar";
+var lblInsertLink = "Insertar Enlace";
+var lblAddImage = "Agregar Imágen";
+var lblInsertTable = "Insertar Tabla";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Formato</option>";
+lblFormat += "<option value=\"<h1>\">Encabezado 1</option>";
+lblFormat += "<option value=\"<h2>\">Encabezado 2</option>";
+lblFormat += "<option value=\"<h3>\">Encabezado 3</option>";
+lblFormat += "<option value=\"<h4>\">Encabezado 4</option>";
+lblFormat += "<option value=\"<h5>\">Encabezado 5</option>";
+lblFormat += "<option value=\"<h6>\">Encabezado 6</option>";
+lblFormat += "<option value=\"<p>\">Párrafo</option>";
+lblFormat += "<option value=\"<address>\">Dirección</option>";
+lblFormat += "<option value=\"<pre>\">Preformateado</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Fuente</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Tamaño</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Error precargando el contenido.";
+var lblSearchConfirm = "La expresión de busqueda [SF] fue encontrada [RUNCOUNT] veces.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Esta seguro que desea reemplazar estas entradas con [RW] ?\n";
+var lblSearchAbort = "Operacion Abortada.";
+var lblSearchNotFound = "no fué encontrada.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Tipo de Enlace";
+var lblLinkOldA = "anchor Existente";
+var lblLinkNewA = "nuevo new anchor";
+var lblLinkNoA = "No hay Anchors existentes";
+var lblLinkAnchors = "Anchors";
+var lblLinkAddress = "Direcciones";
+var lblLinkText = "Texto de Enlace";
+var lblLinkOpenIn = "Abrir link en";
+var lblLinkVal0 = "Por favor ingrese un URL.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Cancelar";
+// Insert Image
+var lblImageURL = "URL de la Imagen";
+var lblImageAltText = "Texto Alternativo";
+var lblImageBorder = "Borde";
+var lblImageBorderPx = "Pixeles";
+var lblImageVal0 = "Por favor indique el \"URL de la Imagen\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Cancelar";
+// Insert Table
+var lblTableRows = "Renglones";
+var lblTableColumns = "Columnas";
+var lblTableWidth = "Table width";
+var lblTablePx = "pixeles";
+var lblTablePercent = "porcentaje";
+var lblTableBorder = "Ancho del Borde";
+var lblTablePadding = "Margen de las celdas";
+var lblTableSpacing = "Espacio entre celdas";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Cancelar";
+// Search and Replace
+var lblSearchFind = "Buscar";
+var lblSearchReplace = "Reemplazar con";
+var lblSearchMatch = "Distinguir mayusculas";
+var lblSearchWholeWord = "Buscar la palabra completa solamente";
+var lblSearchVal0 = "Debe ingresar algo en \"Buscar:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Cancelar";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Cancelar";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Cancelar";
+
+// non-designMode
+var lblAutoBR = "Usar corte de linea automatico";
+var lblRawHTML = "Usar solo HTML Puro";
+var lblnon_designMode = 'Para usar el Editor de Texto Enriquecido, se requiere un navegador tipo <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) o <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). Apple Safari, IE5(Mac) y el Navegador Opera no son soportados actualmente todo el texto debe ser ingresado en HTML.';
--- /dev/null
+// French Language File
+// Translation provided by Christian Dispagne
+// Revised by François Talbot
+
+// Buttons
+var lblSubmit = "Soumettre"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Passer en mode editeur"; // Label of the Show Design view link
+var lblModeHTML = "Voir le code HTML"; // Label of the Show Code view link
+var lblPreview = "Visualiser";
+var lblSave = "Sauvegarder";
+var lblPrint = "Imprimer";
+var lblSelectAll = "Sélectionner/Désélectionner Tout";
+var lblSpellCheck = "Vérifier l\'orthographe";
+var lblCut = "Couper";
+var lblCopy = "Copier";
+var lblPaste = "Coller";
+var lblPasteText = "Coller en texte standard";
+var lblPasteWord = "Coller à partir de Word";
+var lblUndo = "Annuler";
+var lblRedo = "Répéter";
+var lblHR = "Ligne horizontale";
+var lblInsertChar = "Insérer un caractère spécial";
+var lblBold = "Gras";
+var lblItalic = "Italique";
+var lblUnderline = "Souligné";
+var lblStrikeThrough = "Frapper Par";
+var lblSuperscript = "Exposant";
+var lblSubscript = "Indice inférieur";
+var lblAlgnLeft = "Aligner à gauche";
+var lblAlgnCenter = "Centrer";
+var lblAlgnRight = "Aligner à droite";
+var lblJustifyFull = "Justifié";
+var lblOL = "Liste ordonnée";
+var lblUL = "Liste non-ordonnée";
+var lblOutdent = "Diminuer le retrait";
+var lblIndent = "Augmenter le retrait";
+var lblTextColor = "Couleur du texte";
+var lblBgColor = "Couleur de fond";
+var lblSearch = "Chercher et remplacer";
+var lblInsertLink = "Insérer un lien";
+var lblAddImage = "Ajouter une image";
+var lblInsertSmiley = "Insérer un smiley";
+var lblInsertTable = "Insérer un tableau";
+var lblWordCount = "Nombre de mots";
+var lblUnformat = "Enlever le formatage";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Format</option>";
+lblFormat += "<option value=\"<h1>\">Titre 1</option>";
+lblFormat += "<option value=\"<h2>\">Titre 2</option>";
+lblFormat += "<option value=\"<h3>\">Titre 3</option>";
+lblFormat += "<option value=\"<h4>\">Titre 4</option>";
+lblFormat += "<option value=\"<h5>\">Titre 5</option>";
+lblFormat += "<option value=\"<h6>\">Titre 6</option>";
+lblFormat += "<option value=\"<p>\">Paragraphe</option>";
+lblFormat += "<option value=\"<address>\">Adresse</option>";
+lblFormat += "<option value=\"<pre>\">Préformatté</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Police</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\" selected>Taille</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Erreur lors du chargement du contenu.";
+var lblSearchConfirm = "L'expression [SF] a été trouvée [RUNCOUNT] fois.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Êtes-vous sûr de vouloir remplacer ces entrées avec [RW] ?\n";
+var lblSearchAbort = "Operation abandonnée.";
+var lblSearchNotFound = " : l'expression n\'a pas été trouvée.";
+var lblCountTotal = "Nombre de mots";
+var lblCountChar = "Caractères disponibles";
+var lblCountCharWarn = "Attention! Votre contenu est trop long et pourrait ne pas être sauvegardé correctement.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Type de lien";
+var lblLinkOldA = "Ancre Existante";
+var lblLinkNewA = "Nouvelle Ancre";
+var lblLinkNoA = "Aucune ancre existante";
+var lblLinkAnchors = "Ancres";
+var lblLinkAddress = "Adresse";
+var lblLinkText = "Texte du lien";
+var lblLinkOpenIn = "Ouvrir le lien dans";
+var lblLinkVal0 = "S'il vous plaît, entrez une URL.";
+var lblLinkSubmit = "Valider";
+var lblLinkCancel = "Annuler";
+// Insert Image
+var lblImageURL = "URL de l'image";
+var lblImageAltText = "Texte alternatif";
+var lblImageBorder = "Bord";
+var lblImageBorderPx = "Pixels";
+var lblImageVal0 = "S'il vous plaît, indiquez \"URL de l'image\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Annuler";
+// Insert Table
+var lblTableRows = "Lignes";
+var lblTableColumns = "Colonnes";
+var lblTableWidth = "Largeur";
+var lblTablePx = "pixels";
+var lblTablePercent = "pourcents";
+var lblTableBorder = "Épaisseur du bord";
+var lblTablePadding = "Espacement interne à la cellule";
+var lblTableSpacing = "Espacement entre cellules";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Annuler";
+// Search and Replace
+var lblSearchFind = "Chercher quoi";
+var lblSearchReplace = "Remplacer avec";
+var lblSearchMatch = "Respecter la casse";
+var lblSearchWholeWord = "Trouver des mots entiers uniquement";
+var lblSearchVal0 = "Vous devez entrer quelque chose dans \"Trouver quoi:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Annuler";
+// Paste As Plain Text
+var lblPasteTextHint = "Conseil: Pour coller, vous pouvez soit cliquer sur le bouton droit de la souris et sélectionner \"Coller\" ou utiliser la combinaison de touches Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Veuillez s'il vous plaît entrer votre texte."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Annuler";
+// Paste As Plain Text
+var lblPasteWordHint = "Conseil: Pour coller, vous pouvez soit cliquer sur le bouton droit de la souris et sélectionner \"Coller\" ou utiliser la combinaison de touches Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Veuillez s'il vous plaît entrer votre texte."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Annuler";
+
+// non-designMode
+var lblAutoBR = "Utiliser le retour à la ligne automatique";
+var lblRawHTML = "N\'utiliser que du HTML";
+var lblnon_designMode = 'Pour utiliser le Rich Text Editor, un browser tel que <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (ex : <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) ou <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows) est nécessaire. Les browsers Apple Safari, IE5(Mac) et Opera ne sont pas supportés pour l\instant et tout le texte doit être en HTML.';
--- /dev/null
+// Hebrew Language File
+// Translation provided by Erel Segal
+
+// Buttons
+var lblSubmit = "ùìç"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "è÷ñè îòåöá"; // Label of the Show Design view link
+var lblModeHTML = "÷åã î÷åø"; // Label of the Show Code view link
+var lblPreview = "úöåâä î÷ãéîä";
+var lblSave = "ùîåø";
+var lblPrint = "äãôñ";
+var lblSelectAll = "áçø äëì";
+var lblSpellCheck = "áãå÷ àéåú";
+var lblCut = "âæåø";
+var lblCopy = "äòú÷";
+var lblPaste = "äãá÷";
+var lblPasteText = "äãá÷ ëè÷ñè ôùåè";
+var lblPasteWord = "äãá÷ îúåê ååøã";
+var lblUndo = "áèì ôòåìä àçøåðä";
+var lblRedo = "áöò ùåá";
+var lblHR = "÷å îôøéã";
+var lblInsertChar = "ñéîï îéåçã";
+var lblBold = "äãâù";
+var lblItalic = "äôåê ìëúá ðèåé";
+var lblUnderline = "îúç ÷å úçúé";
+var lblStrikeThrough = "îúç ÷å çåöä";
+var lblSuperscript = "ëúá òéìé";
+var lblSubscript = "ëúá úçúé";
+var lblAlgnLeft = "ééùø ùîàìä";
+var lblAlgnCenter = "ééùø ìîøëæ";
+var lblAlgnRight = "ééùø éîéðä";
+var lblJustifyFull = "ééùø ìöããéí";
+var lblOL = "øùéîä îîåñôøú";
+var lblUL = "øùéîä ìà îîåñôøú";
+var lblOutdent = "îùåê ôéñ÷ä äçåöä";
+var lblIndent = "ãçåó ôéñ÷ä ôðéîä";
+var lblTextColor = "öáò è÷ñè";
+var lblBgColor = "öáò ø÷ò";
+var lblSearch = "çôù åäçìó";
+var lblInsertLink = "÷éùåø";
+var lblAddImage = "öéåø";
+var lblInsertTable = "èáìä";
+var lblWordCount = "ñôåø îéìéí";
+var lblUnformat = "áèì òéöåá";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>ñâðåï</option>";
+lblFormat += "<option value=\"<h1>\">ëåúøú 1</option>";
+lblFormat += "<option value=\"<h2>\">ëåúøú 2</option>";
+lblFormat += "<option value=\"<h3>\">ëåúøú 3</option>";
+lblFormat += "<option value=\"<h4>\">ëåúøú 4</option>";
+lblFormat += "<option value=\"<h5>\">ëåúøú 5</option>";
+lblFormat += "<option value=\"<h6>\">ëåúøú 6</option>";
+lblFormat += "<option value=\"<p>\">áøéøú îçãì ùì ôéñ÷ä</option>";
+lblFormat += "<option value=\"<address>\">ëúåáú</option>";
+lblFormat += "<option value=\"<pre>\">îòåöá îøàù</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>âåôï</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">âåãì</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "ùâéàä áèòéðú úåëï.";
+var lblSearchConfirm = "äáéèåé [SF] ðîöà [RUNCOUNT] ôòîéí.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "äàí áøöåðê ìäçìéó àú ëì äîåôòéí ùì äáéèåé á-[RW] ?\n";
+var lblSearchAbort = "äôòåìä áåèìä.";
+var lblSearchNotFound = "ìà ðîöà.";
+var lblCountTotal = "îñôø äîéìéí";
+var lblCountChar = "úåéí ùàôùø òåã ìäåñéó";
+var lblCountCharWarn = "æäéøåú! äúåëï àøåê îãé åééúëï ùìà ééùîø ëîå ùöøéê";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "ñåâ ä÷éùåø";
+var lblLinkOldA = "ñéîðéä ÷ééîú";
+var lblLinkNewA = "ñéîðéä çãùä";
+var lblLinkNoA = "àéï ñéîðéåú";
+var lblLinkAnchors = "ñéîðéåú";
+var lblLinkAddress = "ëúåáú";
+var lblLinkText = "è÷ñè";
+var lblLinkOpenIn = "ôúç ÷éùåø á-";
+var lblLinkVal0 = "àðà öééï àú ëúåáú ä÷éùåø.";
+var lblLinkSubmit = "àéùåø";
+var lblLinkCancel = "áéèåì";
+// Insert Image
+var lblImageURL = "ëúåáú öéåø";
+var lblImageAltText = "è÷ñè çìåôé";
+var lblImageBorder = "âáåì";
+var lblImageBorderPx = "ôé÷ñìéí";
+var lblImageVal0 = "àðà öééï àú \"ëúåáú äöéåø\".";
+var lblImageSubmit = "àéùåø";
+var lblImageCancel = "áéèåì";
+// Insert Table
+var lblTableRows = "ùåøåú";
+var lblTableColumns = "òîåãåú";
+var lblTableWidth = "øåçá äèáìä";
+var lblTablePx = "ôé÷ñìéí";
+var lblTablePercent = "àçåæéí";
+var lblTableBorder = "òåáé äâáåì";
+var lblTablePadding = "øååç áúåê äúàéí";
+var lblTableSpacing = "øååç áéï äúàéí";
+var lblTableSubmit = "àéùåø";
+var lblTableCancel = "áéèåì";
+// Search and Replace
+var lblSearchFind = "îä ìçôù?";
+var lblSearchReplace = "áîä ìäçìéó?";
+var lblSearchMatch = "äáçï áéï àåúéåú âãåìåú ì÷èðåú?";
+var lblSearchWholeWord = "îöà ø÷ îéìéí ùìîåú?";
+var lblSearchVal0 = "àðà äëðñ òøê ìçéôåù";
+var lblSearchSubmit = "àéùåø";
+var lblSearchCancel = "áéèåì";
+// Paste As Plain Text
+var lblPasteTextHint = "òöä: ëãé ìäãáé÷, àôùø ìä÷ìé÷ ëôúåø-éîðé åìáçåø \"äãá÷\" àå ìäùúîù á- Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "àðà äëðñ è÷ñè."
+var lblPasteTextSubmit = "àéùåø";
+var lblPasteTextCancel = "áéèåì";
+// Paste As Plain Text
+var lblPasteWordHint = "òöä: ëãé ìäãáé÷, àôùø ìä÷ìé÷ ëôúåø-éîðé åìáçåø \"äãá÷\" àå ìäùúîù á- Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "àðà äëðñ è÷ñè."
+var lblPasteWordSubmit = "àéùåø";
+var lblPasteWordCancel = "áéèåì";
+
+
+// non-designMode
+var lblAutoBR = "äåñó ñåôé-ùåøä áàåôï àåèåîèé";
+var lblRawHTML = "äùúîù ø÷ á÷åã html âåìîé";
+var lblnon_designMode = 'ëãé ìäùúîù áòåøê è÷ñè îòåöá, ãøåù ãôãôï <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (ìãåâîä, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) àå <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (çìåðåú). äãôãôðéí Apple Safari, IE5(Mac) å-Opera òãééï ìà ðúîëéí, åëì äè÷ñè çééá ìäéåú á÷åã HTML.';
+
--- /dev/null
+// Hebrew Language File
+// Translation provided by Erel Segal
+
+// Buttons
+var lblSubmit = "שלח"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "טקסט מעוצב"; // Label of the Show Design view link
+var lblModeHTML = "קוד מקור"; // Label of the Show Code view link
+var lblPreview = "תצוגה מקדימה";
+var lblSave = "שמור";
+var lblPrint = "הדפס";
+var lblSelectAll = "בחר הכל";
+var lblSpellCheck = "בדוק איות";
+var lblCut = "גזור";
+var lblCopy = "העתק";
+var lblPaste = "הדבק";
+var lblPasteText = "הדבק כטקסט פשוט";
+var lblPasteWord = "הדבק מתוך וורד";
+var lblUndo = "בטל פעולה אחרונה";
+var lblRedo = "בצע שוב";
+var lblHR = "קו מפריד";
+var lblInsertChar = "סימן מיוחד";
+var lblBold = "הדגש";
+var lblItalic = "הפוך לכתב נטוי";
+var lblUnderline = "מתח קו תחתי";
+var lblStrikeThrough = "מתח קו חוצה";
+var lblSuperscript = "כתב עילי";
+var lblSubscript = "כתב תחתי";
+var lblAlgnLeft = "יישר שמאלה";
+var lblAlgnCenter = "יישר למרכז";
+var lblAlgnRight = "יישר ימינה";
+var lblJustifyFull = "יישר לצדדים";
+var lblOL = "רשימה ממוספרת";
+var lblUL = "רשימה לא ממוספרת";
+var lblOutdent = "משוך פיסקה החוצה";
+var lblIndent = "דחוף פיסקה פנימה";
+var lblTextColor = "צבע טקסט";
+var lblBgColor = "צבע רקע";
+var lblSearch = "חפש והחלף";
+var lblInsertLink = "קישור";
+var lblAddImage = "ציור";
+var lblInsertTable = "טבלה";
+var lblWordCount = "ספור מילים";
+var lblUnformat = "בטל עיצוב";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>סגנון</option>";
+lblFormat += "<option value=\"<h1>\">כותרת 1</option>";
+lblFormat += "<option value=\"<h2>\">כותרת 2</option>";
+lblFormat += "<option value=\"<h3>\">כותרת 3</option>";
+lblFormat += "<option value=\"<h4>\">כותרת 4</option>";
+lblFormat += "<option value=\"<h5>\">כותרת 5</option>";
+lblFormat += "<option value=\"<h6>\">כותרת 6</option>";
+lblFormat += "<option value=\"<p>\">ברירת מחדל של פיסקה</option>";
+lblFormat += "<option value=\"<address>\">כתובת</option>";
+lblFormat += "<option value=\"<pre>\">מעוצב מראש</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>גופן</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">גודל</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "שגיאה בטעינת תוכן.";
+var lblSearchConfirm = "הביטוי [SF] נמצא [RUNCOUNT] פעמים.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "האם ברצונך להחליף את כל המופעים של הביטוי ב-[RW] ?\n";
+var lblSearchAbort = "הפעולה בוטלה.";
+var lblSearchNotFound = "לא נמצא.";
+var lblCountTotal = "מספר המילים";
+var lblCountChar = "תוים שאפשר עוד להוסיף";
+var lblCountCharWarn = "זהירות! התוכן ארוך מדי וייתכן שלא יישמר כמו שצריך";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "סוג הקישור";
+var lblLinkOldA = "סימניה קיימת";
+var lblLinkNewA = "סימניה חדשה";
+var lblLinkNoA = "אין סימניות";
+var lblLinkAnchors = "סימניות";
+var lblLinkAddress = "כתובת";
+var lblLinkText = "טקסט";
+var lblLinkOpenIn = "פתח קישור ב-";
+var lblLinkVal0 = "אנא ציין את כתובת הקישור.";
+var lblLinkSubmit = "אישור";
+var lblLinkCancel = "ביטול";
+// Insert Image
+var lblImageURL = "כתובת ציור";
+var lblImageAltText = "טקסט חלופי";
+var lblImageBorder = "גבול";
+var lblImageBorderPx = "פיקסלים";
+var lblImageVal0 = "אנא ציין את \"כתובת הציור\".";
+var lblImageSubmit = "אישור";
+var lblImageCancel = "ביטול";
+// Insert Table
+var lblTableRows = "שורות";
+var lblTableColumns = "עמודות";
+var lblTableWidth = "רוחב הטבלה";
+var lblTablePx = "פיקסלים";
+var lblTablePercent = "אחוזים";
+var lblTableBorder = "עובי הגבול";
+var lblTablePadding = "רווח בתוך התאים";
+var lblTableSpacing = "רווח בין התאים";
+var lblTableSubmit = "אישור";
+var lblTableCancel = "ביטול";
+// Search and Replace
+var lblSearchFind = "מה לחפש?";
+var lblSearchReplace = "במה להחליף?";
+var lblSearchMatch = "הבחן בין אותיות גדולות לקטנות?";
+var lblSearchWholeWord = "מצא רק מילים שלמות?";
+var lblSearchVal0 = "אנא הכנס ערך לחיפוש";
+var lblSearchSubmit = "אישור";
+var lblSearchCancel = "ביטול";
+// Paste As Plain Text
+var lblPasteTextHint = "עצה: כדי להדביק, אפשר להקליק כפתור-ימני ולבחור \"הדבק\" או להשתמש ב- Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "אנא הכנס טקסט."
+var lblPasteTextSubmit = "אישור";
+var lblPasteTextCancel = "ביטול";
+// Paste As Plain Text
+var lblPasteWordHint = "עצה: כדי להדביק, אפשר להקליק כפתור-ימני ולבחור \"הדבק\" או להשתמש ב- Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "אנא הכנס טקסט."
+var lblPasteWordSubmit = "אישור";
+var lblPasteWordCancel = "ביטול";
+
+
+// non-designMode
+var lblAutoBR = "הוסף סופי-שורה באופן אוטומטי";
+var lblRawHTML = "השתמש רק בקוד html גולמי";
+var lblnon_designMode = 'כדי להשתמש בעורך טקסט מעוצב, דרוש דפדפן <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (לדוגמה, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) או <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (חלונות). הדפדפנים Apple Safari, IE5(Mac) ו-Opera עדיין לא נתמכים, וכל הטקסט חייב להיות בקוד HTML.';
+
--- /dev/null
+// Italian Language File
+// Translation provided by Giulio Paci and LucaS(nickname)
+
+
+// Buttons
+var lblSubmit = "Invia"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Visualizza testo formattato"; // Label of the Show Design view link
+var lblModeHTML = "Visualizza sorgente HTML"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Salva";
+var lblPrint = "Stampa";
+var lblSelectAll = "Seleziona/Deseleziona Tutto";
+var lblSpellCheck = "Controllo ortografico";
+var lblCut = "Taglia";
+var lblCopy = "Copia";
+var lblPaste = "Incolla";
+var lblPasteText = "Incolla come Testo Semplice";
+var lblPasteWord = "Incolla da Word";
+var lblUndo = "Annulla";
+var lblRedo = "Ripristina";
+var lblHR = "Riga orizzontale";
+var lblInsertChar = "Inserisci Carattere Speciale";
+var lblBold = "Grassetto";
+var lblItalic = "Corsivo";
+var lblUnderline = "Sottolineato";
+var lblStrikeThrough = "Barrato";
+var lblSuperscript = "Apice";
+var lblSubscript = "Pedice";
+var lblAlgnLeft = "Allinea a sinistra";
+var lblAlgnCenter = "Centrato";
+var lblAlgnRight = "Allinea a destra";
+var lblJustifyFull = "Giustificato";
+var lblOL = "Elenco numerato";
+var lblUL = "Elenco non numerato";
+var lblOutdent = "Togli indentazione";
+var lblIndent = "Indenta";
+var lblTextColor = "Colore del testo";
+var lblBgColor = "Colore di sfondo";
+var lblSearch = "Cerca e Sostituisci";
+var lblInsertLink = "Inserisci collegamento";
+var lblAddImage = "Aggiungi immagine";
+var lblInsertTable = "Inserisci tabella";
+var lblWordCount = "Conteggio parole";
+var lblUnformat = "Togli formattazione";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Formato</option>";
+lblFormat += "<option value=\"<h1>\">Intestazione 1</option>";
+lblFormat += "<option value=\"<h2>\">Intestazione 2</option>";
+lblFormat += "<option value=\"<h3>\">Intestazione 3</option>";
+lblFormat += "<option value=\"<h4>\">Intestazione 4</option>";
+lblFormat += "<option value=\"<h5>\">Intestazione 5</option>";
+lblFormat += "<option value=\"<h6>\">Intestazione 6</option>";
+lblFormat += "<option value=\"<p>\">Paragrafo</option>";
+lblFormat += "<option value=\"<address>\">Indirizzo</option>";
+lblFormat += "<option value=\"<pre>\">Preformattato</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Carattere</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Dimensione</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Errore nel precaricamento del testo.";
+var lblSearchConfirm = "La stringa cercata [SF] è stata trovata [RUNCOUNT] volte.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Sei sicuro di voler sostituire la stringa con [RW] ?\n";
+var lblSearchAbort = "Operazione annullata.";
+var lblSearchNotFound = "non è stata trovata.";
+var lblCountTotal = "Parole totali:";
+var lblCountChar = "Caratteri Disponibili";
+var lblCountCharWarn = "Attenzione! Il contenuto è troppo lungo e potrebbe non essere salvato correttamente.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Tipo del collegamento";
+var lblLinkOldA = "Ancoraggio esistente";
+var lblLinkNewA = "Nuovo ancoraggio";
+var lblLinkNoA = "Non esistono ancoraggi";
+var lblLinkAnchors = "Ancoraggio";
+var lblLinkAddress = "Indirizzo";
+var lblLinkText = "Testo del collegamento";
+var lblLinkOpenIn = "Apri il collegamento in";
+var lblLinkVal0 = "Inserire un URL.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Annulla";
+// Insert Image
+var lblImageURL = "URL dell\'immagine";
+var lblImageAltText = "Testo alternativo";
+var lblImageBorder = "Bordo";
+var lblImageBorderPx = "Pixels";
+var lblImageVal0 = "Inserire l\'\"" + lblImageURL + "\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Annulla";
+// Insert Table
+var lblTableRows = "Righe";
+var lblTableColumns = "Colonne";
+var lblTableWidth = "Larghezza";
+var lblTablePx = "pixels";
+var lblTablePercent = "percentuale";
+var lblTableBorder = "Bordo";
+var lblTablePadding = "Margine della cella";
+var lblTableSpacing = "Margine fra celle";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Annulla";
+// Search and Replace
+var lblSearchFind = "Cerca";
+var lblSearchReplace = "Sostituisci con";
+var lblSearchMatch = "Distingui fra maiuscole e minuscole";
+var lblSearchWholeWord = "Trova solo parole intere";
+var lblSearchVal0 = "Devi inserire qualcosa in \"" + lblSearchFind + "\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Annulla";
+// Paste As Plain Text
+var lblPasteTextHint = "Suggerimento: per incollare è possibile cliccare col tasto destro del mouse e scegliere \"Incolla\" o usare la combinazione di tasti Ctrl+V.<br><br>";
+var lblPasteTextVal0 = "Inserire il testo."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Annulla";
+// Paste As Plain Text
+var lblPasteWordHint = "Suggerimento: per incollare è possibile cliccare col tasto destro del mouse e scegliere \"Incolla\" o usare la combinazione di tasti Ctrl+V.<br><br>";
+var lblPasteWordVal0 = "Inserire il testo."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Annulla";
+
+// non-designMode
+var lblAutoBR = "Utilizza \"a capo\" automatici";
+var lblRawHTML = "Utilizza solo HTML grezzo";
+var lblnon_designMode = 'Per usare il Rich Text Editor, è necessario un browser <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (es, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) o <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). I browser Apple Safari, IE5(Mac) e Opera non sono al momento supportati e tutto il testo deve essere inserito in HTML.';
--- /dev/null
+// Dutch Language File
+// Translation provided by CLock(nickname) and Chris Da Ponte
+
+// Buttons
+var lblSubmit = "Opslaan"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Ga naar Richtekst mode"; // Label of the Show Design view link
+var lblModeHTML = "Ga naar HTML mode"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Opslaan";
+var lblPrint = "Print";
+var lblSelectAll = "Selecteer/Deselecteer alles";
+var lblSpellCheck = "Spellingscontrole";
+var lblCut = "Knippen";
+var lblCopy = "Kopieren";
+var lblPaste = "Plakken";
+var lblPasteText = "Plakken als Platte Tekst";
+var lblPasteWord = "Plakken uit Word";
+var lblUndo = "Ongedaan maken";
+var lblRedo = "Opniew";
+var lblHR = "Horizontale lijn";
+var lblInsertChar = "Speciaal symbool invoegen";
+var lblBold = "Vetgedrukt";
+var lblItalic = "Schuingedrukt";
+var lblUnderline = "Onderstrepen";
+var lblStrikeThrough = "Doorstrepen";
+var lblSuperscript = "Hoofdletters";
+var lblSubscript = "Kleine letters";
+var lblAlgnLeft = "Links uitlijnen";
+var lblAlgnCenter = "Centreren";
+var lblAlgnRight = "Rechts uitlijnen";
+var lblJustifyFull = "Uitvullen";
+var lblOL = "Genummerde lijst";
+var lblUL = "Ongenummerde lijst";
+var lblOutdent = "Inspringing vergoten";
+var lblIndent = "Inspringing verkleinen";
+var lblTextColor = "Tekstkleur";
+var lblBgColor = "Achtergrondkleur";
+var lblSearch = "Zoeken en vervangen";
+var lblInsertLink = "Link invoegen";
+var lblAddImage = "Afbeelding invoegen";
+var lblInsertTable = "Tabel invoegen";
+var lblWordCount = "Aantal Woorden";
+var lblUnformat = "Verwijder Opmaak";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Stijl</option>";
+lblFormat += "<option value=\"<h1>\">Kop 1</option>";
+lblFormat += "<option value=\"<h2>\">Kop 2</option>";
+lblFormat += "<option value=\"<h3>\">Kop 3</option>";
+lblFormat += "<option value=\"<h4>\">Kop 4</option>";
+lblFormat += "<option value=\"<h5>\">Kop 5</option>";
+lblFormat += "<option value=\"<h6>\">Kop 6</option>";
+lblFormat += "<option value=\"<p>\">Paragraaf</option>";
+lblFormat += "<option value=\"<address>\">Adres</option>";
+lblFormat += "<option value=\"<pre>\">Code</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Lettertype</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Grootte</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Er is een fot opgetreden met het inladen van de content.";
+var lblSearchConfirm = "De zoekterm [SF] is gevonden [RUNCOUNT] time(s).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Weet je zeker dat je de zoekterm wilt vervangen voor: [RW] ?\n";
+var lblSearchAbort = "Actie geannuleer.";
+var lblSearchNotFound = "is niet gevonden.";
+var lblCountTotal = "Aantal Woorden";
+var lblCountChar = "Beschikbare Karakters";
+var lblCountCharWarn = "Waarschuwing! De inhoud is te lang en kan wellicht niet correct worden opgeslagen.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Link Type";
+var lblLinkOldA = "bestaand anker";
+var lblLinkNewA = "nieuw anker";
+var lblLinkNoA = "Geen bestaande ankers";
+var lblLinkAnchors = "Ankers";
+var lblLinkAddress = "Adres";
+var lblLinkText = "Link tekst";
+var lblLinkOpenIn = "Open de link in";
+var lblLinkVal0 = "Voor aub een URL in.";
+var lblLinkSubmit = "Ok";
+var lblLinkCancel = "Annuleren";
+// Insert Image
+var lblImageURL = "URL van de afbeelding";
+var lblImageAltText = "Alt tekst";
+var lblImageBorder = "Rand";
+var lblImageBorderPx = "Pixels";
+var lblImageVal0 = "U moet wel iets invullen bij de \"Image URL\".";
+var lblImageSubmit = "Ok";
+var lblImageCancel = "Annuleren";
+// Insert Table
+var lblTableRows = "Rijen";
+var lblTableColumns = "Kolommen";
+var lblTableWidth = "Tabel breedte";
+var lblTablePx = "pixels";
+var lblTablePercent = "procent";
+var lblTableBorder = "Dikte v/d rand";
+var lblTablePadding = "Celopvulling";
+var lblTableSpacing = "Celruimte";
+var lblTableSubmit = "Ok";
+var lblTableCancel = "Annuleren";
+// Search and Replace
+var lblSearchFind = "Zoekterm";
+var lblSearchReplace = "Vervangen voor";
+var lblSearchMatch = "Hoofdlettergevoelig";
+var lblSearchWholeWord = "Vindt alleen hele woorden";
+var lblSearchVal0 = "Je moet wel wat invullen bij \"Find what:\".";
+var lblSearchSubmit = "Ok";
+var lblSearchCancel = "Annuleren";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: Om te plakken gebruik of rechter muis-klik en kies \"Plakken\" of gebruik de toetscombinatie Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Voer tekst in alstublieft.";
+var lblPasteTextSubmit = "Ok";
+var lblPasteTextCancel = "Annuleren";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: Om te plakken gebruik of rechter muis-klik en kies \"Plakken\" of gebruik de toetscombinatie Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Voer tekst in alstublieft.";
+var lblPasteWordSubmit = "Ok";
+var lblPasteWordCancel = "Annuleren";
+
+// non-designMode
+var lblAutoBR = "Automatische regelafbreking";
+var lblRawHTML = "Gebruik alleen ruwe HTML";
+var lblnon_designMode = 'Om hiervan gebruik te kunnen maken is een a <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> browser (eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) of <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows) benodigd. Apple Safari, IE5(Mac) en Opera browsers worden (nog) niet ondersteund.';
--- /dev/null
+// Norwegian Language File
+// Translation provided by Thor Skaar
+
+// Buttons
+var lblSubmit = "Send"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Skift til RichText Mode"; // Label of the Show Design view link
+var lblModeHTML = "Skift til HTML Mode"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Lagre";
+var lblPrint = "Skriv ut";
+var lblSelectAll = "Marker alt";
+var lblSpellCheck = "Stavekontroll";
+var lblCut = "Klipp";
+var lblCopy = "Kopier";
+var lblPaste = "Lim inn";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "Angre";
+var lblRedo = "Angre igjen";
+var lblHR = "Horisontal linje";
+var lblInsertChar = "Sett inn spesialtegn";
+var lblBold = "Fet";
+var lblItalic = "Kursiv";
+var lblUnderline = "Underlinjert";
+var lblStrikeThrough = "Gjennomstreket";
+var lblSuperscript = "Hevet skrift";
+var lblSubscript = "Senket skrift";
+var lblAlgnLeft = "Venstrejustert";
+var lblAlgnCenter = "Midtstilt";
+var lblAlgnRight = "Høyrejustert";
+var lblJustifyFull = "Blokkjustert";
+var lblOL = "Numrert Liste";
+var lblUL = "Punktliste";
+var lblOutdent = "Reduser Innrykk";
+var lblIndent = "Øk innrykk";
+var lblTextColor = "Tekstfarge";
+var lblBgColor = "Bakgrunnsfarge";
+var lblSearch = "Søk og erstatt";
+var lblInsertLink = "Sett inn link";
+var lblAddImage = "Legg til bilde";
+var lblInsertTable = "Sett inn tabell";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Stil</option>";
+lblFormat += "<option value=\"<h1>\">Overskrift 1</option>";
+lblFormat += "<option value=\"<h2>\">Overskrift 2</option>";
+lblFormat += "<option value=\"<h3>\">Overskrift 3</option>";
+lblFormat += "<option value=\"<h4>\">Overskrift 4</option>";
+lblFormat += "<option value=\"<h5>\">Overskrift 5</option>";
+lblFormat += "<option value=\"<h6>\">Overskrift 6</option>";
+lblFormat += "<option value=\"<p>\">Avsnitt</option>";
+lblFormat += "<option value=\"<address>\">Addresse</option>";
+lblFormat += "<option value=\"<pre>\">Preformatert</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Font</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Størrelse</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Feil ved forhåndsvisning av innhold.";
+var lblSearchConfirm = "Søkeordet [SF] ble funnet [RUNCOUNT] gang(er).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Vil du virkelig erstatte ordet med [RW] ?\n";
+var lblSearchAbort = "handling avbrutt.";
+var lblSearchNotFound = "ble ikke funnet.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Link Type";
+var lblLinkOldA = "eksisterende anker";
+var lblLinkNewA = "nytt anker";
+var lblLinkNoA = "Ingen eksisterende anker";
+var lblLinkAnchors = "Anker";
+var lblLinkAddress = "Addresse";
+var lblLinkText = "Link Tekst";
+var lblLinkOpenIn = "Åpne Link I";
+var lblLinkVal0 = "Vennligst skriv url.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Avbryt";
+// Insert Image
+var lblImageURL = "Bilde URL";
+var lblImageAltText = "Alternativ Tekst";
+var lblImageBorder = "Ramme";
+var lblImageBorderPx = "Piksler";
+var lblImageVal0 = "Vennligst indiker \"Image URL\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Avbryt";
+// Insert Table
+var lblTableRows = "Rader";
+var lblTableColumns = "Kolonner";
+var lblTableWidth = "Tabell bredde";
+var lblTablePx = "piksler";
+var lblTablePercent = "prosent";
+var lblTableBorder = "Ramme tykkelse";
+var lblTablePadding = "Celle utforing";
+var lblTableSpacing = "Celle mellomrom";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Avbryt";
+// Search and Replace
+var lblSearchFind = "Finn hva";
+var lblSearchReplace = "Erstatt med";
+var lblSearchMatch = "Sammenlign bokstav";
+var lblSearchWholeWord = "Finn bare hele ord";
+var lblSearchVal0 = "Du må skrive inn noe \"Find what:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Avbryt";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Avbryt";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Avbryt";
+
+// non-designMode
+var lblAutoBR = "Bruk Auto Linjeskift";
+var lblRawHTML = "Bruk bare rå HTML";
+var lblnon_designMode = 'For å bruke denne tekstbehandleren, må du ha <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a>Mozilla 1.3+(eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) eller <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows) webleser. Apple Safari, IE5(Mac) eller Opera lesere støtter ikke alle funksjoner.';
--- /dev/null
+// Polish Language File (UTF-8)
+// Translation provided by Marcin Kierdelewicz, marcin(dot)kierdelewicz(at)gmail(dot)com
+
+// Buttons
+var lblSubmit = "Prześlij"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Przełącz do trybu RichText"; // Label of the Show Design view link
+var lblModeHTML = "Przełącz do trybu HTML"; // Label of the Show Code view link
+var lblPreview = "Podgląd";
+var lblSave = "Zapisz";
+var lblPrint = "Drukuj";
+var lblSelectAll = "Zaznacz/Odznacz wszystko";
+var lblSpellCheck = "Sprawdź pisownię";
+var lblCut = "Wytnij";
+var lblCopy = "Kopiuj";
+var lblPaste = "Wklej";
+var lblPasteText = "Wklej jako zwykły tekst";
+var lblPasteWord = "Wklej jako tekst z WORD'a";
+var lblUndo = "Cofnij";
+var lblRedo = "Powtórz";
+var lblHR = "Pozioma linia";
+var lblInsertChar = "Wstaw znaki specjalne";
+var lblBold = "Pogrubienie";
+var lblItalic = "Kursywa";
+var lblUnderline = "Podkreślenie";
+var lblStrikeThrough = "Rozstrzel tekst";
+var lblSuperscript = "Indeks górny";
+var lblSubscript = "Indeks dolny";
+var lblAlgnLeft = "Wyrównaj do lewej";
+var lblAlgnCenter = "Wyrównanie do środka";
+var lblAlgnRight = "Wyrównaj do prawej";
+var lblJustifyFull = "Wyjustuj";
+var lblOL = "Lista uporządkowana";
+var lblUL = "Lista nieuporządkowana";
+var lblOutdent = "Zmniejsz wcięcie";
+var lblIndent = "Zwiększ wcięcie";
+var lblTextColor = "Kolor tekstu";
+var lblBgColor = "Kolor tła";
+var lblSearch = "Wyszukaj i zamień";
+var lblInsertLink = "Wstaw odnośnik";
+var lblAddImage = "Dodaj rysunek";
+var lblInsertTable = "Wstaw tabelę";
+var lblWordCount = "Policz słowa";
+var lblUnformat = "Porzuć formatowanie";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Styl</option>";
+lblFormat += "<option value=\"<h1>\">Nagłówek 1</option>";
+lblFormat += "<option value=\"<h2>\">Nagłówek 2</option>";
+lblFormat += "<option value=\"<h3>\">Nagłówek 3</option>";
+lblFormat += "<option value=\"<h4>\">Nagłówek 4</option>";
+lblFormat += "<option value=\"<h5>\">Nagłówek 5</option>";
+lblFormat += "<option value=\"<h6>\">Nagłówek 6</option>";
+lblFormat += "<option value=\"<p>\">Akapit</option>";
+lblFormat += "<option value=\"<address>\">Adres</option>";
+lblFormat += "<option value=\"<pre>\">Preformatowany</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Czcionka</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Rozmiar</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Błąd ładowania treści.";
+var lblSearchConfirm = "Szukane wyrażenie [SF] występuje [RUNCOUNT] raz(y).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Czy jesteś pewny, że chcesz zamienić te dane na [RW] ?\n";
+var lblSearchAbort = "Operacja przerwana.";
+var lblSearchNotFound = "nie został znaleziony.";
+var lblCountTotal = "Wpisanych słów";
+var lblCountChar = "Dostępnych znaków";
+var lblCountCharWarn = "Uwaga! Treść jest za długa i może zostać zapisana nieprawidłowo.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Typ odnośnika";
+var lblLinkOldA = "istniejąca kotwica";
+var lblLinkNewA = "nowa kotwica";
+var lblLinkNoA = "Brak istniejących kotwic";
+var lblLinkAnchors = "Kotwice";
+var lblLinkAddress = "Adres";
+var lblLinkText = "Tekst odnośnika";
+var lblLinkOpenIn = "Otwórz odnośnik w";
+var lblLinkVal0 = "Proszę wpisać url.";
+var lblLinkSubmit = "Wstaw";
+var lblLinkCancel = "Anuluj";
+// Insert Image
+var lblImageURL = "URL obrazka";
+var lblImageAltText = "Opis rysunku";
+var lblImageBorder = "Tło";
+var lblImageBorderPx = "pikseli";
+var lblImageVal0 = "Proszę wypełnić pole \"URL obrazka\".";
+var lblImageSubmit = "Wstaw";
+var lblImageCancel = "Anuluj";
+// Insert Table
+var lblTableRows = "Wierszy";
+var lblTableColumns = "Kolumn";
+var lblTableWidth = "Szerokość tabeli";
+var lblTablePx = "pikseli";
+var lblTablePercent = "procent";
+var lblTableBorder = "Grubość ramki";
+var lblTablePadding = "Odległości na zewnątrz";
+var lblTableSpacing = "Odległości względem komórek";
+var lblTableSubmit = "Wstaw";
+var lblTableCancel = "Anuluj";
+// Search and Replace
+var lblSearchFind = "Znajdź";
+var lblSearchReplace = "Zamień na";
+var lblSearchMatch = "Uwzględniaj wielkość liter";
+var lblSearchWholeWord = "Wyszukuj tylko całe wyrazy";
+var lblSearchVal0 = "Musisz wypełnić pole \"Znajdź:\".";
+var lblSearchSubmit = "Zamień";
+var lblSearchCancel = "Anuluj";
+// Paste As Plain Text
+var lblPasteTextHint = "Wskazówka: Aby wkleić tekst, możesz kliknąć prawym przyciskiem myszki i wybrać \"Paste\" lub użyć kombinacji klawiszy Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Proszę wprowadzić tekst."
+var lblPasteTextSubmit = "Zamień";
+var lblPasteTextCancel = "Anuluj";
+// Paste As Plain Text
+var lblPasteWordHint = "Wskazówka: Aby wkleić tekst, możesz kliknąć prawym przyciskiem myszki i wybrać \"Paste\" lub użyć kombinacji klawiszy Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Proszę wprowadzić tekst."
+var lblPasteWordSubmit = "Zamień";
+var lblPasteWordCancel = "Anuluj";
+
+// non-designMode
+var lblAutoBR = "Użyj automatycznego łamania linii";
+var lblRawHTML = "Użyj tylko czystego HTML";
+var lblnon_designMode = 'Aby korzystać z edytora "Rich Text" wymagana jest przeglądarka <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (np., <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) lub <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). Przeglądarki Apple Safari, IE5(Mac) oraz Opera w obecnej chwili nie są wspierane i tekst musi być od razu wpisywany w postaci HTML.';
--- /dev/null
+// Portuguese Language File
+// Translation provided by Afonso Serralha & João Nuno
+
+// Buttons
+var lblSubmit = "Enviar"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Ver em modo RichText"; // Label of the Show Design view link
+var lblModeHTML = "Ver em modo HTML"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Guardar";
+var lblPrint = "Imprimir";
+var lblSelectAll = "Seleccionar Tudo";
+var lblSpellCheck = "Verificação Ortográfica";
+var lblCut = "Cortar";
+var lblCopy = "Copiar";
+var lblPaste = "Colar";
+var lblPasteText = "Colar como Texto";
+var lblPasteWord = "Colar apartir do Word";
+var lblUndo = "Anular Acção";
+var lblRedo = "Reverter Acção";
+var lblHR = "Barra Horizontal";
+var lblInsertChar = "Inserir Caracter Especial";
+var lblBold = "Negrito";
+var lblItalic = "Itálico";
+var lblUnderline = "Sublinhado";
+var lblStrikeThrough = "Traçado";
+var lblSuperscript = "Sobre-escrito";
+var lblSubscript = "Sub-escrito";
+var lblAlgnLeft = "Alinhar à Esquerda";
+var lblAlgnCenter = "Centrar";
+var lblAlgnRight = "Alinhar à Direita";
+var lblJustifyFull = "Justificar";
+var lblOL = "Lista Ordenada";
+var lblUL = "Lista Não Ordenada";
+var lblOutdent = "Recuar Parágrafo";
+var lblIndent = "Avançar Parágrafo";
+var lblTextColor = "Côr do Texto";
+var lblBgColor = "Côr do Fundo";
+var lblSearch = "Pesquisar e Substituir";
+var lblInsertLink = "Inserir Link";
+var lblAddImage = "Inserir Imagem";
+var lblInsertTable = "Inserir Tabela";
+var lblWordCount = "Número de Palavras";
+var lblUnformat = "Remover Formatação";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Formato</option>";
+lblFormat += "<option value=\"<h1>\">Título 1</option>";
+lblFormat += "<option value=\"<h2>\">Título 2</option>";
+lblFormat += "<option value=\"<h3>\">Título 3</option>";
+lblFormat += "<option value=\"<h4>\">Título 4</option>";
+lblFormat += "<option value=\"<h5>\">Título 5</option>";
+lblFormat += "<option value=\"<h6>\">Título 6</option>";
+lblFormat += "<option value=\"<p>\">Parágrafo</option>";
+lblFormat += "<option value=\"<address>\">Endereço</option>";
+lblFormat += "<option value=\"<pre>\">Pré-formatado</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Tipo de Letra</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Tamanho</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Erro ao carregar conteúdo.";
+var lblSearchConfirm = "A expressão [SF] foi encontrada [RUNCOUNT] vez(es).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Tem a certeza de pretender substituir estas ocorrências por [RW] ?\n";
+var lblSearchAbort = "Operação Cancelada.";
+var lblSearchNotFound = "não encontrada.";
+var lblCountTotal = "Número de Palavras";
+var lblCountChar = "Caracteres Disponíveis";
+var lblCountCharWarn = "Atenção! O conteúdo inserido é demasiado longo e poderá não ficar gravado correctamente.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Tipo de Link";
+var lblLinkOldA = "Âncora existente";
+var lblLinkNewA = "nova Âncora";
+var lblLinkNoA = "Âncoras inexistentes.";
+var lblLinkAnchors = "Âncoras";
+var lblLinkAddress = "Endereço";
+var lblLinkText = "Texto do Link";
+var lblLinkOpenIn = "Abrir Link em";
+var lblLinkVal0 = "Introduza um URL.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Cancelar";
+// Insert Image
+var lblImageURL = "URL da Imagem";
+var lblImageAltText = "Texto Alternativo";
+var lblImageBorder = "Bordo";
+var lblImageBorderPx = "Pixeis";
+var lblImageVal0 = "Indique por favor o \"URL da Imagem\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Cancelar";
+// Insert Table
+var lblTableRows = "Linhas";
+var lblTableColumns = "Colunas";
+var lblTableWidth = "Largura da Tabela";
+var lblTablePx = "pixeis";
+var lblTablePercent = "por cento";
+var lblTableBorder = "Espessura do Bordo";
+var lblTablePadding = "Espaçamento intra-célula";
+var lblTableSpacing = "Espaçamento inter-célula";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Cancelar";
+// Search and Replace
+var lblSearchFind = "Texto a Pesquisar";
+var lblSearchReplace = "Substituir por";
+var lblSearchMatch = "Ocorrência exacta";
+var lblSearchWholeWord = "Pesquisar palavra integral";
+var lblSearchVal0 = "É necessário introduzir conteúdo em \"Texto a Pesquisar:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Cancelar";
+// Paste As Plain Text
+var lblPasteTextHint = "Ajuda: Para colar texto você pode usar o botão direito do rato e escolher "Colar" ou usar a combinação de teclas Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Por favor insira texto."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Cancelar";
+// Paste As Plain Text
+var lblPasteWordHint = "Ajuda: Para colar texto você pode usar o botão direito do rato e escolher "Colar" ou usar a combinação de teclas Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Por favor insira texto."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Cancelar";
+
+// non-designMode
+var lblAutoBR = "Usar Quebra de Linha Automática";
+var lblRawHTML = "Usar apenas HTML de baixo nível";
+var lblnon_designMode = 'Para usar o ´Rich Text Editor´, é necessário dispor do browser <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> (eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) ou <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). Não são suportados os browsers Apple Safari, IE5(Mac) e Opera, pelo que todo o texto tem nestes casos que ser editado em HTML.';
--- /dev/null
+// Russian Language File
+// Translation provided by ??????? ?????? (norfolk_@rambler.ru)
+
+// Buttons
+var lblSubmit = "Îòïðàâèòü"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "RichText Ðåæèì"; // Label of the Show Design view link
+var lblModeHTML = "HTML Ðåæèì"; // Label of the Show Code view link
+var lblPreview = "Ïðîñìîòð";
+var lblSave = "Ñîõðàíèòü";
+var lblPrint = "Ðàñïå÷àòàòü";
+var lblSelectAll = "Âûáðàòü/Ñíÿòü Âñ¸";
+var lblSpellCheck = "Îðôîãðàôèÿ";
+var lblCut = "Âûðåçàòü";
+var lblCopy = "Ñêîïèðîâàòü";
+var lblPaste = "Âñòàâèòü";
+var lblPasteText = "Âñòàâèòü ïðîñòûì òåêñòîì";
+var lblPasteWord = "Âñòàâèòü èç Word";
+var lblUndo = "Îòìåíèòü";
+var lblRedo = "Ïîâòîðèòü";
+var lblHR = "Ðàçäåëèòåëü";
+var lblInsertChar = "Âñòàâèòü ñïåöèàëüíûé ñèìâîë";
+var lblBold = "Æèðíûé";
+var lblItalic = "Íàêëîííûé";
+var lblUnderline = "Ïîä÷¸ðêíóòûé";
+var lblStrikeThrough = "Strike Through";
+var lblSuperscript = "Âåðõíèé èíäåêñ";
+var lblSubscript = "Íèæíèé èíäåêñ";
+var lblAlgnLeft = "Ïî ëåâîìó êðàþ";
+var lblAlgnCenter = "Îò öåíòðà";
+var lblAlgnRight = "Ïî ïðàâîìó êðàþ";
+var lblJustifyFull = "Ïî øèðèíå";
+var lblOL = "Íóìåðîâàííûé ñïèñîê";
+var lblUL = "Ìàðêèðîâàííûé ñïèñîê";
+var lblOutdent = "Âûñòóïèòü";
+var lblIndent = "Îòñòóïèòü";
+var lblTextColor = "Öâåò òåêñòà";
+var lblBgColor = "Öâåò ôîíà";
+var lblSearch = "Íàéòè è çàìåíèòü";
+var lblInsertLink = "Âñòàâèòü ññûëêó";
+var lblAddImage = "Äîáàâèòü êàðòèíêó";
+var lblInsertTable = "Âñòàâèòü òàáëèöó";
+var lblWordCount = "Ïîäñ÷¸ò ñëîâ";
+var lblUnformat = "Ðàñôîðìàòèðîâàòü";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Ôîðìàò</option>";
+lblFormat += "<option value=\"<h1>\">Çàãîëîâîê 1</option>";
+lblFormat += "<option value=\"<h2>\">Çàãîëîâîê 2</option>";
+lblFormat += "<option value=\"<h3>\">Çàãîëîâîê 3</option>";
+lblFormat += "<option value=\"<h4>\">Çàãîëîâîê 4</option>";
+lblFormat += "<option value=\"<h5>\">Çàãîëîâîê 5</option>";
+lblFormat += "<option value=\"<h6>\">Çàãîëîâîê 6</option>";
+lblFormat += "<option value=\"<p>\">Ïàðàãðàô</option>";
+lblFormat += "<option value=\"<address>\">Àäðåñ</option>";
+lblFormat += "<option value=\"<pre>\">Ïðåôîðìàò</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Øðèôò</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Ðàçìåð</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Îøèáêà ïðè çàãðóçêå ñîäåðæèìîãî";
+var lblSearchConfirm = "Èñêîìîå ñî÷åòàíèå [SF] áûëî íàéäåíî [RUNCOUNT] ðàç(à).\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "Âû äåéñòâèòåëüíî õîòèòå çàìåíèòü âõîæäåíèÿ íà [RW] ?\n";
+var lblSearchAbort = "Îïåðàöèÿ ïðåðâàíà.";
+var lblSearchNotFound = "íå íàéäåíî.";
+var lblCountTotal = "Ïîäñ÷¸ò ñëîâ";
+var lblCountChar = "Äîñòóïíûå ñèìâîëû";
+var lblCountCharWarn = "Âíèìàíèå! Ôðàãìåíò ñëèøêîì äëèííûé è ìîæåò áûòü ñîõðàí¸í íåêîððåêòíî.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "Òèï ññûëêè";
+var lblLinkOldA = "Ñóùåñòâóþùèé àíêåð";
+var lblLinkNewA = "Íîâûé àíêåð";
+var lblLinkNoA = "Àíêåðû íå çàäàíû";
+var lblLinkAnchors = "Àíêåðû";
+var lblLinkAddress = "Àäðåñ";
+var lblLinkText = "Òåêñò ññûëêè";
+var lblLinkOpenIn = "Îòêðûòü ññûëêó â";
+var lblLinkVal0 = "Ïîæàëóéñòà, ââåäèòå URL.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Îòìåíà";
+// Insert Image
+var lblImageURL = "URL êàðòèíêè";
+var lblImageAltText = "Àëüòåðíàòèâíûé òåêñò";
+var lblImageBorder = "Ãðàíèöà";
+var lblImageBorderPx = "Ïèêñåëîâ";
+var lblImageVal0 = "Óêàæèòå \"Image URL\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Îòìåíà";
+// Insert Table
+var lblTableRows = "Ñòðîê";
+var lblTableColumns = "Ñòîëáöîâ";
+var lblTableWidth = "Øèðèíà òàáëèöû";
+var lblTablePx = "ïèêñåëû";
+var lblTablePercent = "ïðîöåíòû";
+var lblTableBorder = "Òîëùèíà ãðàíèöû";
+var lblTablePadding = "Äî ðàìêè ÿ÷åéêè";
+var lblTableSpacing = "Ìåæäó ÿ÷åéêàìè";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Îòìåíà";
+// Search and Replace
+var lblSearchFind = "Èñêàòü";
+var lblSearchReplace = "Çàìåíèòü íà";
+var lblSearchMatch = "Ó÷èòûâàòü ðåãèñòð";
+var lblSearchWholeWord = "Òîëüêî ñëîâî öåëèêîì";
+var lblSearchVal0 = "Çàäàéòå ïîëå \"Èñêàòü:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Îòìåíà";
+// Paste As Plain Text
+var lblPasteTextHint = "Ñîâåò: ×òîáû âñòàâèòü âû ìîæåòå ù¸ëêíóòü ïðàâîé êíîïêîé ìûøè è âûáðàòü \"Âñòàâèòü\" èëè âîñïîëüçîâàòüñÿ Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Ïîæàëóéñòà ââåäèòå òåêñò."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Îòìåíà";
+// Paste As Plain Text
+var lblPasteWordHint = "Ñîâåò: ×òîáû âñòàâèòü âû ìîæåòå ù¸ëêíóòü ïðàâîé êíîïêîé ìûøè è âûáðàòü \"Âñòàâèòü\" èëè âîñïîëüçîâàòüñÿ Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Ïîæàëóéñòà ââåäèòå òåêñò."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Îòìåíà";
+
+
+// non-designMode
+var lblAutoBR = "Àâòîìàòè÷åñêèé ðàçðûâ ñòðîêè";
+var lblRawHTML = "Òîëüêî HTML";
+var lblnon_designMode = '×òîáû èñïîëüçîâàòü Rich Text Editor òðåáóþòñÿ: <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+</a> áðàóçåðû (eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) èëè <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+</a> (Windows). Apple Safari, IE5(Mac) è Opera ïîê àíå ïîääåðæèâàþòñÿ è âåñü òåêñò äîëæåí áûòü íà HTML.';
--- /dev/null
+// Slovak Language File
+// Translation provided by Rolf Cleis, www.cleis.net
+
+// Buttons
+var lblSubmit = "Potvrdit"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "Prepnút do RichText režimu"; // Label of the Show Design view link
+var lblModeHTML = "Prepnút do HTML režimu"; // Label of the Show Code view link
+var lblPreview = "Preview";
+var lblSave = "Uložit";
+var lblPrint = "Tlacit";
+var lblSelectAll = "Oznacit/Odznacit všetko";
+var lblSpellCheck = "Kontrola pravopisu";
+var lblCut = "Vymazat";
+var lblCopy = "Kopírovat";
+var lblPaste = "Vložit";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "Vrátit naspät";
+var lblRedo = "Vrátit dopredu";
+var lblHR = "Horizontálne pravidlo";
+var lblInsertChar = "Vložit špeciálny znak";
+var lblBold = "Tucné písmo";
+var lblItalic = "Šikmé písmo";
+var lblUnderline = "Podciarknuté písmo";
+var lblStrikeThrough = "Preciarknút";
+var lblSuperscript = "Index";
+var lblSubscript = "Prípona";
+var lblAlgnLeft = "Zarovnat zlava";
+var lblAlgnCenter = "Vycentrovat";
+var lblAlgnRight = "Zarovnat sprava";
+var lblJustifyFull = "Potvrdit všetko";
+var lblOL = "Usporiadaný zoznam";
+var lblUL = "Neusporiadaný zoznam";
+var lblOutdent = "Odsek dolava";
+var lblIndent = "Odsek doprava";
+var lblTextColor = "Farba písma";
+var lblBgColor = "Farba pozadia";
+var lblSearch = "Nájst a nahradit";
+var lblInsertLink = "Vložit odkaz";
+var lblAddImage = "Vložit obrázok";
+var lblInsertTable = "Vložit tabulku";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Formát</option>";
+lblFormat += "<option value=\"<h1>\">Nadpis 1</option>";
+lblFormat += "<option value=\"<h2>\">Nadpis 2</option>";
+lblFormat += "<option value=\"<h3>\">Nadpis 3</option>";
+lblFormat += "<option value=\"<h4>\">Nadpis 4</option>";
+lblFormat += "<option value=\"<h5>\">Nadpis 5</option>";
+lblFormat += "<option value=\"<h6>\">Nadpis 6</option>";
+lblFormat += "<option value=\"<p>\">Odstavec</option>";
+lblFormat += "<option value=\"<address>\">Adresa</option>";
+lblFormat += "<option value=\"<pre>\">Vopred naformátované</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>Písmo</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">Velkost</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "Chyba v predbežnom natiahnutí obsahu";
+var lblSearchConfirm = "Hladaný výraz [SF] bol nájdený [RUNCOUNT] krát.\n\n"; // Nechat v [SF], [RUNCOUNT] a [RW]
+lblSearchConfirm += "Naozaj chcete zamenit tieto vstupy s [RW] ?\n";
+var lblSearchAbort = "Operácia zrušená.";
+var lblSearchNotFound = "nenájdené.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "typ odkazu";
+var lblLinkOldA = "existujúca kotva";
+var lblLinkNewA = "nová kotva";
+var lblLinkNoA = "žiadne existujúce kotvy";
+var lblLinkAnchors = "Kotvy";
+var lblLinkAddress = "Adresa";
+var lblLinkText = "textový odkAz";
+var lblLinkOpenIn = "otvorit odkaz v";
+var lblLinkVal0 = "Vložte url adresu.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Zrušit";
+// Insert Image
+var lblImageURL = "URL obrázok";
+var lblImageAltText = "alternatívny text";
+var lblImageBorder = "okraj";
+var lblImageBorderPx = "pixely";
+var lblImageVal0 = "oznacit URL obrázok.";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Zrušit";
+// Insert Table
+var lblTableRows = "Riadky";
+var lblTableColumns = "Stlpce";
+var lblTableWidth = "Šírka tabulky";
+var lblTablePx = "pixely";
+var lblTablePercent = "percento";
+var lblTableBorder = "Hrúbka okraja";
+var lblTablePadding = "Obsah bunky";
+var lblTableSpacing = "Odstup buniek";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Zrušit";
+// Search and Replace
+var lblSearchFind = "Hladat";
+var lblSearchReplace = "Zamenit za";
+var lblSearchMatch = "Porovnat";
+var lblSearchWholeWord = "Hladat iba celé slová";
+var lblSearchVal0 = "Vložit nieco do \"Hladat:\".";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Zrušit";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Zrušit";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Zrušit";
+
+// non-designMode
+var lblAutoBR = "použit automatický prerušovac ciar";
+var lblRawHTML = "Použit iba cistý HTML";
+var lblnon_designMode = "Použit Rich Text Editor, vyžaduje sa <a href=\"http://www.mozilla.org/\" target=\"_new\">Mozilla 1.3+</a> browser (eg, <a href=\"http://www.mozilla.org/products/firefox/\" target=_new>Firefox</a>) alebo <a href=\"http://www.microsoft.com/windows/ie/default.asp\" target=\"_new\">MS IE5+</a> (Windows). Apple Safari, IE5(Mac) a Opera browsery nie sú v súcasnosti podporované a celý text musí byt vo formáte HTML.";
--- /dev/null
+// Swedish Language File
+// Provided by Olle Jansson, ollej(at)swedesign.com.au and Johan Norman
+
+// Knappar:
+var lblSubmit = "Skicka"; // Etikett för non-designMode() & icke fullskärm RTE
+var lblModeRichText = "Växla till RichText Mode"; // Etikett för 'Show Design view' länk
+var lblModeHTML = "Växla till HTML Mode"; // Etikett för 'Show Code view' länk
+var lblPreview = "Preview";
+var lblSave = "Spara";
+var lblPrint = "Skriv ut";
+var lblSelectAll = "Markera/Avmarkera allt";
+var lblSpellCheck = "Stavningskontroll";
+var lblCut = "Klipp ut";
+var lblCopy = "Kopiera";
+var lblPaste = "Klistra in";
+var lblPasteText = "Klistra in som ren text";
+var lblPasteWord = "Klistra in från Word";
+var lblUndo = "Ångra";
+var lblRedo = "Återställ";
+var lblHR = "Vågrät linje";
+var lblInsertChar = "Infoga specialtecken";
+var lblBold = "Fet";
+var lblItalic = "Kursiv";
+var lblUnderline = "Understruken";
+var lblStrikeThrough = "Överstruken";
+var lblSuperscript = "Upphöjd";
+var lblSubscript = "Nedsänkt";
+var lblAlgnLeft = "Vänsterställd";
+var lblAlgnCenter = "Centrerad";
+var lblAlgnRight = "Högerställd";
+var lblJustifyFull = "Rak höger";
+var lblOL = "Numrerad lista";
+var lblUL = "Onumrerad lista";
+var lblOutdent = "Minska indrag";
+var lblIndent = "Öka indrag";
+var lblTextColor = "Textfärg";
+var lblBgColor = "Bakgrundsfärg";
+var lblSearch = "Sök och ersätt";
+var lblInsertLink = "Infoga länk";
+var lblAddImage = "Infoga bild";
+var lblInsertTable = "Infoga tabell";
+var lblWordCount = "Antal ord";
+var lblUnformat = "Oformaterad";
+
+// Listor:
+
+// Formatlista
+var lblFormat = "<option value=\"\" selected>Format</option>";
+lblFormat += "<option value=\"<h1>\">Rubrik 1</option>";
+lblFormat += "<option value=\"<h2>\">Rubrik 2</option>";
+lblFormat += "<option value=\"<h3>\">Rubrik 3</option>";
+lblFormat += "<option value=\"<h4>\">Rubrik 4</option>";
+lblFormat += "<option value=\"<h5>\">Rubrik 5</option>";
+lblFormat += "<option value=\"<h6>\">Rubrik 6</option>";
+lblFormat += "<option value=\"<p>\">Stycke</option>";
+lblFormat += "<option value=\"<address>\">Adress</option>";
+lblFormat += "<option value=\"<pre>\">Förformatterat</option>";
+
+// Fontvalslista
+var lblFont = "<option value=\"\" selected>Font</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+
+// Storlekslista
+var lblSize = "<option value=\"\">Storlek</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Varningar:
+
+var lblErrorPreload = "Fel vid .";
+var lblSearchConfirm = "Sökuttrycket [SF] hittades [RUNCOUNT] gång(er).\n\n";
+lblSearchConfirm += "Ska allt detta ersättas med [RW] ?\n";
+var lblSearchAbort = "Åtgärden avbröts.";
+var lblSearchNotFound = "kunde inte hittas.";
+var lblCountTotal = "Antal ord";
+var lblCountChar = "Tillgängliga tecken";
+var lblCountCharWarn = "Varning! Din text är för lång och kanske inte kan sparas korrekt.";
+
+// Dialogrutor:
+
+// Infoga länk
+var lblLinkType = "Länktyp";
+var lblLinkOldA = "befintligt ankare";
+var lblLinkNewA = "nytt ankare";
+var lblLinkNoA = "Finns inga ankare";
+var lblLinkAnchors = "Ankaren";
+var lblLinkAddress = "Adress";
+var lblLinkText = "Länktext";
+var lblLinkOpenIn = "Öppna länk i";
+var lblLinkVal0 = "Ange en url.";
+var lblLinkSubmit = "OK";
+var lblLinkCancel = "Avbryt";
+
+// Infoga bild
+var lblImageURL = "Bildens URL";
+var lblImageAltText = "Alternativ text";
+var lblImageBorder = "Ram";
+var lblImageBorderPx = "Pixlar";
+var lblImageVal0 = "Ange \"Bildens URL\".";
+var lblImageSubmit = "OK";
+var lblImageCancel = "Avbryt";
+
+// Infoga tabell
+var lblTableRows = "Rader";
+var lblTableColumns = "Kolumner";
+var lblTableWidth = "Tabellbredd";
+var lblTablePx = "pixlar";
+var lblTablePercent = "procent";
+var lblTableBorder = "Ramtjocklek";
+var lblTablePadding = "Cellmarginaler";
+var lblTableSpacing = "Cellavstånd";
+var lblTableSubmit = "OK";
+var lblTableCancel = "Avbryt";
+
+// Sök och ersätt
+var lblSearchFind = "Sök";
+var lblSearchReplace = "Ersätt med";
+var lblSearchMatch = "Matcha gemener/VERSALER";
+var lblSearchWholeWord = "Sök bara hela ord";
+var lblSearchVal0 = "\"Sök:\" får inte vara tom.";
+var lblSearchSubmit = "OK";
+var lblSearchCancel = "Avbryt";
+// Paste As Plain Text
+var lblPasteTextHint = "Tips: För att klistra in kan du antingen högerklicka och välja \\94Klistra in\\94 eller använda tangentkombinationen Ctrl-V. .<br><br>";
+var lblPasteTextVal0 = "Var vänlig och skriv in text."
+var lblPasteTextSubmit = "OK";
+var lblPasteTextCancel = "Avbryt";
+// Paste As Plain Text
+var lblPasteWordHint = "Tips: För att klistra in kan du antingen högerklicka och välja \\94Klistra in\\94 eller använda tangentkombinationen Ctrl-V. .<br><br>";
+var lblPasteWordVal0 = "Var vänlig och skriv in text."
+var lblPasteWordSubmit = "OK";
+var lblPasteWordCancel = "Avbryt";
+
+// icke-designMode
+var lblAutoBR = "Använd automatiska radbrytningar";
+var lblRawHTML = "Använd bara rå HTML";
+var lblnon_designMode = 'Rich Text Editor kan användas med <a href="http://www.mozilla.org/" target="_blank">Mozilla 1.3+</a>, (dvs. <a href="http://www.mozilla.org/products/firefox/" target="_blank">Firefox</a>) eller <a href="http://www.microsoft.com/windows/ie/default.asp" target="_blank">MS IE5+</a> (Windows). Apple Safari, IE5(Mac) och Opera bläddrare stöds inte för tillfället och all text måste vara HTML.';
--- /dev/null
+// Simplified Chinese language file (UTF-8)
+// Translation provided by WebND Technologies - http://www.webnd.com.cn/
+
+// Buttons
+var lblSubmit = "提交"; // Button value for non-designMode() & non fullsceen RTE
+var lblModeRichText = "切换到文本模式"; // Label of the Show Design view link
+var lblModeHTML = "切换到HTML代码模式"; // Label of the Show Code view link
+var lblPreview = "";
+var lblSave = "保存";
+var lblPrint = "打印";
+var lblSelectAll = "选择/全部取消";
+var lblSpellCheck = "检查拼写";
+var lblCut = "剪切";
+var lblCopy = "复制";
+var lblPaste = "粘贴";
+var lblPasteText = "Paste as Plain Text";
+var lblPasteWord = "Paste From Word";
+var lblUndo = "撤销";
+var lblRedo = "重做";
+var lblHR = "水平线";
+var lblInsertChar = "插入特殊字符";
+var lblBold = "粗体";
+var lblItalic = "斜体";
+var lblUnderline = "下划线";
+var lblStrikeThrough = "删除线";
+var lblSuperscript = "上标";
+var lblSubscript = "下标";
+var lblAlgnLeft = "左对齐";
+var lblAlgnCenter = "居中";
+var lblAlgnRight = "右对齐";
+var lblJustifyFull = "编排格式";
+var lblOL = "整齐排列";
+var lblUL = "无序排列";
+var lblOutdent = "突出";
+var lblIndent = "缩进";
+var lblTextColor = "文本颜色";
+var lblBgColor = "背景颜色";
+var lblSearch = "查找和替换";
+var lblInsertLink = "插入链接";
+var lblAddImage = "添加图片";
+var lblInsertTable = "插入表格";
+var lblWordCount = "Word Count";
+var lblUnformat = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>格式段落</option>";
+lblFormat += "<option value=\"<h1>\">标题 1</option>";
+lblFormat += "<option value=\"<h2>\">标题 2</option>";
+lblFormat += "<option value=\"<h3>\">标题 3</option>";
+lblFormat += "<option value=\"<h4>\">标题 4</option>";
+lblFormat += "<option value=\"<h5>\">标题 5</option>";
+lblFormat += "<option value=\"<h6>\">标题 6</option>";
+lblFormat += "<option value=\"<p>\">段落</option>";
+lblFormat += "<option value=\"<address>\">地址</option>";
+lblFormat += "<option value=\"<pre>\">已编排格式</option>";
+// Font Dropdown
+var lblFont = "<option value=\"\" selected>字体</option>";
+lblFont += "<option value=\"Arial, Helvetica, sans-serif\">Arial</option>";
+lblFont += "<option value=\"Courier New, Courier, mono\">Courier New</option>";
+lblFont += "<option value=\"Palatino Linotype\">Palatino Linotype</option>";
+lblFont += "<option value=\"Times New Roman, Times, serif\">Times New Roman</option>";
+lblFont += "<option value=\"Verdana, Arial, Helvetica, sans-serif\">Verdana</option>";
+// Size Dropdown
+var lblSize = "<option value=\"\">大小</option>";
+lblSize += "<option value=\"1\">1</option>";
+lblSize += "<option value=\"2\">2</option>";
+lblSize += "<option value=\"3\">3</option>";
+lblSize += "<option value=\"4\">4</option>";
+lblSize += "<option value=\"5\">5</option>";
+lblSize += "<option value=\"6\">6</option>";
+lblSize += "<option value=\"7\">7</option>";
+
+// Alerts
+var lblErrorPreload = "预载内容错误.";
+var lblSearchConfirm = "搜索结果 [SF] [RUNCOUNT] 次.\n\n"; // Leave in [SF], [RUNCOUNT] and [RW]
+lblSearchConfirm += "确定要替换内容吗 [RW] ?\n";
+var lblSearchAbort = "操作失败.";
+var lblSearchNotFound = "无法查找.";
+var lblCountTotal = "Word Count";
+var lblCountChar = "Available Characters";
+var lblCountCharWarn = "Warning! Your content is too long and may not save correctly.";
+
+// Dialogs
+// Insert Link
+var lblLinkType = "链接类型";
+var lblLinkOldA = "当前锚记";
+var lblLinkNewA = "新锚记";
+var lblLinkNoA = "无当前锚记";
+var lblLinkAnchors = "锚记";
+var lblLinkAddress = "地址";
+var lblLinkText = "链接文本";
+var lblLinkOpenIn = "打开链接";
+var lblLinkVal0 = "请输入 url.";
+var lblLinkSubmit = "确定";
+var lblLinkCancel = "取消";
+// Insert Image
+var lblImageURL = "图片URL";
+var lblImageAltText = "可替换文本";
+var lblImageBorder = "边框";
+var lblImageBorderPx = "像素";
+var lblImageVal0 = "请显示 \"图片URL\".";
+var lblImageSubmit = "确定";
+var lblImageCancel = "取消";
+// Insert Table
+var lblTableRows = "行";
+var lblTableColumns = "列";
+var lblTableWidth = "表格宽度";
+var lblTablePx = "像素";
+var lblTablePercent = "百分比";
+var lblTableBorder = "边框粗细";
+var lblTablePadding = "单元格边距";
+var lblTableSpacing = "单元格间距";
+var lblTableSubmit = "确定";
+var lblTableCancel = "取消";
+// Search and Replace
+var lblSearchFind = "查找";
+var lblSearchReplace = "替换";
+var lblSearchMatch = "区分大小写";
+var lblSearchWholeWord = "全字匹配";
+var lblSearchVal0 = "你必须输入一些 \"查找内容:\".";
+var lblSearchSubmit = "确定";
+var lblSearchCancel = "取消";
+// Paste As Plain Text
+var lblPasteTextHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteTextVal0 = "Please enter text."
+var lblPasteTextSubmit = "确定";
+var lblPasteTextCancel = "取消";
+// Paste As Plain Text
+var lblPasteWordHint = "Hint: To paste you can either right-click and choose \"Paste\" or use the key combination of Ctrl-V.<br><br>";
+var lblPasteWordVal0 = "Please enter text."
+var lblPasteWordSubmit = "确定";
+var lblPasteWordCancel = "取消";
+
+// non-designMode
+var lblAutoBR = "使用自动链接分隔";
+var lblRawHTML = "只使用原始HTML";
+var lblnon_designMode = '使用字体编辑器, 需要 <a href="http://www.mozilla.org/" target="_new">Mozilla 1.3+或以上版本</a> 浏览器 (eg, <a href="http://www.mozilla.org/products/firefox/" target=_new>Firefox</a>) 或者 <a href="http://www.microsoft.com/windows/ie/default.asp" target="_new">MS IE5+或以上版本</a> (Windows) . Apple Safari, IE5(Mac) 和 Opera 浏览器不支持当前编辑器,所有字体必须是HTML编码.';
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Text Color</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <script language="JavaScript" type="text/javascript">
+ <!--
+ function selectColor(color) {
+ self.parent.setColor(color);
+ }
+ function InitColorPalette() {
+ if (document.getElementsByTagName)
+ var x = document.getElementsByTagName('TD');
+ else if (document.all)
+ var x = document.all.tags('TD');
+ for (var i=0; i < x.length; i++) {
+ x[i].onmouseover = over;
+ x[i].onmouseout = out;
+ x[i].onclick = click;
+ x[i].style.background = x[i].id;
+ x[i].style.border = '1px solid white';
+ }
+ }
+ function over() {
+ this.style.border = '1px dotted gray';
+ }
+ function out() {
+ this.style.border = '1px solid white';
+ }
+ function click() {
+ selectColor(this.id);
+ }
+ //-->
+ </script>
+<style>
+body{background:white;margin:0px;}
+td{width:14px;height:14px;}
+img{width:1px;height:1px;}
+</style>
+</head>
+<body onLoad="InitColorPalette()">
+<table style="width:140px;height:95px;" cellpadding="0" cellspacing="0" align="center">
+ <tr>
+ <td id="#FFFFFF"><img></td>
+ <td id="#FFCCCC"><img></td>
+ <td id="#FFCC99"><img></td>
+ <td id="#FFFF99"><img></td>
+ <td id="#FFFFCC"><img></td>
+ <td id="#99FF99"><img></td>
+ <td id="#99FFFF"><img></td>
+ <td id="#CCFFFF"><img></td>
+ <td id="#CCCCFF"><img></td>
+ <td id="#FFCCFF"><img></td>
+ </tr>
+ <tr>
+ <td id="#CCCCCC"><img></td>
+ <td id="#FF6666"><img></td>
+ <td id="#FF9966"><img></td>
+ <td id="#FFFF66"><img></td>
+ <td id="#FFFF33"><img></td>
+ <td id="#66FF99"><img></td>
+ <td id="#33FFFF"><img></td>
+ <td id="#66FFFF"><img></td>
+ <td id="#9999FF"><img></td>
+ <td id="#FF99FF"><img></td>
+ </tr>
+ <tr>
+ <td id="#C0C0C0"><img></td>
+ <td id="#FF0000"><img></td>
+ <td id="#FF9900"><img></td>
+ <td id="#FFCC66"><img></td>
+ <td id="#FFFF00"><img></td>
+ <td id="#33FF33"><img></td>
+ <td id="#66CCCC"><img></td>
+ <td id="#33CCFF"><img></td>
+ <td id="#6666CC"><img></td>
+ <td id="#CC66CC"><img></td>
+ </tr>
+ <tr>
+ <td id="#999999"><img></td>
+ <td id="#CC0000"><img></td>
+ <td id="#FF6600"><img></td>
+ <td id="#FFCC33"><img></td>
+ <td id="#FFCC00"><img></td>
+ <td id="#33CC00"><img></td>
+ <td id="#00CCCC"><img></td>
+ <td id="#3366FF"><img></td>
+ <td id="#6633FF"><img></td>
+ <td id="#CC33CC"><img></td>
+ </tr>
+ <tr>
+ <td id="#666666"><img></td>
+ <td id="#990000"><img></td>
+ <td id="#CC6600"><img></td>
+ <td id="#CC9933"><img></td>
+ <td id="#999900"><img></td>
+ <td id="#009900"><img></td>
+ <td id="#339999"><img></td>
+ <td id="#3333FF"><img></td>
+ <td id="#6600CC"><img></td>
+ <td id="#993399"><img></td>
+ </tr>
+ <tr>
+ <td id="#333333"><img></td>
+ <td id="#660000"><img></td>
+ <td id="#993300"><img></td>
+ <td id="#996633"><img></td>
+ <td id="#666600"><img></td>
+ <td id="#006600"><img></td>
+ <td id="#336666"><img></td>
+ <td id="#000099"><img></td>
+ <td id="#333399"><img></td>
+ <td id="#663366"><img></td>
+ </tr>
+ <tr>
+ <td id="#000000"><img></td>
+ <td id="#330000"><img></td>
+ <td id="#663300"><img></td>
+ <td id="#663333"><img></td>
+ <td id="#333300"><img></td>
+ <td id="#003300"><img></td>
+ <td id="#003333"><img></td>
+ <td id="#000066"><img></td>
+ <td id="#330099"><img></td>
+ <td id="#330033"><img></td>
+ </tr>
+</table>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<script>document.write("<title>"+window.opener.lblPasteText+"</title>");</script>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+body { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #EFEDDE; margin: 10px;}
+legend { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; padding-left: 5px; padding-right: 8px; }
+.style2 {font-size: 18px; background:black; font-wieght:bold; color:white; display:block; width:100%; }
+.show {left:auto;top:auto;position:auto;}
+.hide {left:-1000px;top:-1000px;position:absolute;}
+-->
+</style>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(opener.isIE7) {
+ window.resizeTo(360,460);
+} else {
+ window.resizeTo(360,440);
+}
+
+function submitForm(){
+ if (document.frm_obj.content.value==''){
+ alert(window.opener.lblPasteTextVal0);
+ }else{
+ cleaned = formatText(document.frm_obj.content.value);
+ window.opener.insertHTML(cleaned);
+ window.close();
+ }
+}
+
+function formatText(html){
+ html = html.replace(/&/g, "&");
+ html = html.replace(/</g, "<");
+ html = html.replace(/>/g, ">");
+ html = html.replace(/\n/g,"</p><p>");
+ html = html.replace(/\t/g," ");
+ return html;
+}
+//-->
+</script>
+</head>
+<body>
+<form name="frm_obj">
+<fieldset style="margin:8px;"><legend><script>document.write(window.opener.lblPasteText);</script></legend>
+<div style="padding:8px;"><script>document.write(window.opener.lblPasteTextHint);</script><textarea name="content" type="text" id="cleanText" style="width:280px; height:230px;"></textarea></div>
+</fieldset>
+<center>
+<input type="button" name="btnsubmit" value="" style="width:100px" onclick="submitForm();"/>
+<input type="button" name="btncancel" value="" style="width:100px" onClick="window.close();"/>
+</center></form></body></html>
+<script>
+document.frm_obj.btnsubmit.value = window.opener.lblPasteTextSubmit;
+document.frm_obj.btncancel.value = window.opener.lblPasteTextCancel;
+document.frm_obj.content.focus();
+</script>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<script>document.write("<title>"+window.opener.lblPasteWord+"</title>");</script>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+body { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; background-color: #EFEDDE; margin: 10px;}
+legend { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; padding-left: 5px; padding-right: 8px; }
+.style2 {font-size: 18px; background:black; font-wieght:bold; color:white; display:block; width:100%; }
+.show {left:auto;top:auto;position:auto;}
+.hide {left:-1000px;top:-1000px;position:absolute;}
+-->
+</style>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(opener.isIE7) {
+ window.resizeTo(360,460);
+} else {
+ window.resizeTo(360,440);
+}
+
+function submitForm(){
+ if (document.frm_obj.content.value==''){
+ alert(window.opener.lblPasteWordVal0);
+ }else{
+ cleaned = stripWord(document.frm_obj.content.value);
+ window.opener.insertHTML(cleaned);
+ window.close();
+ }
+}
+
+function stripWord(html){
+ html = html.replace(/<o:p>\s*<\/o:p>/g,"<br>");
+ html = html.replace(/<o:p>.*?<\/o:p>/g," <br>");
+ // Remove mso-xxx styles.
+ html = html.replace(/\s*mso-[^:]+:[^;"]+;?/gi,"");
+ // Remove margin styles - does not affect indented text
+ html = html.replace(/\s*MARGIN: 0cm 0cm 0pt\s*;/gi,"");
+ html = html.replace(/\s*MARGIN: 0cm 0cm 0pt\s*"/gi,"\"");
+ html = html.replace(/\s*TEXT-INDENT: 0cm\s*;/gi,"");
+ html = html.replace(/\s*TEXT-INDENT: 0cm\s*"/gi,"\"");
+ html = html.replace(/\s*TEXT-ALIGN: [^\s;]+;?"/gi,"\"");
+ html = html.replace(/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi,"\"");
+ html = html.replace(/\s*FONT-VARIANT: [^\s;]+;?"/gi,"\"");
+ html = html.replace(/\s*tab-stops:[^;"]*;?/gi,"");
+ html = html.replace(/\s*tab-stops:[^"]*/gi,"");
+ // Remove FONT face attributes.
+ html = html.replace(/\s*face="[^"]*"/gi,"");
+ html = html.replace(/\s*face=[^ >]*/gi,"");
+ html = html.replace(/\s*FONT-FAMILY:[^;"]*;?/gi,"");
+ // Remove Class attributes
+ html = html.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");
+ // Remove styles.
+ html = html.replace(/<(\w[^>]*) style="([^\"]*)"([^>]*)/gi,"<$1$3");
+ // Remove empty styles.
+ html = html.replace(/\s*style="\s*"/gi,'');
+ html = html.replace(/<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi,' ');
+ html = html.replace(/<SPAN\s*[^>]*><\/SPAN>/gi,'');
+ // Remove Lang attributes
+ html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");
+ html = html.replace(/<SPAN\s*>(.*?)<\/SPAN>/gi,'$1');
+ html = html.replace(/<FONT\s*>(.*?)<\/FONT>/gi,'$1');
+ // Remove XML elements and declarations
+ html = html.replace(/<\\?\?xml[^>]*>/gi,"");
+ // Remove Tags with XML namespace declarations: <o:p></o:p>
+ html = html.replace(/<\/?\w+:[^>]*>/gi,"");
+ html = html.replace(/<H\d>\s*<\/H\d>/gi,'');
+ html = html.replace(/<H1([^>]*)>/gi,'<span style="font-size:22;font-weight:bold">');
+ html = html.replace(/<H2([^>]*)>/gi,'<span style="font-size:20;font-weight:bold">');
+ html = html.replace(/<H3([^>]*)>/gi,'<span style="font-size:18;font-weight:bold">');
+ html = html.replace(/<H4([^>]*)>/gi,'<span style="font-size:16;font-weight:bold">');
+ html = html.replace(/<H5([^>]*)>/gi,'<span style="font-size:14;font-weight:bold">');
+ html = html.replace(/<H6([^>]*)>/gi,'<span style="font-size:12;font-weight:bold">');
+ html = html.replace(/<\/H\d>/gi, '</span><br><br>');
+ html = html.replace(/<(U|I|STRIKE)> <\/\1>/g,' ');
+ // Remove empty tags (three times, just to be sure).
+ html = html.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g,'');
+ // Transform <P> to <span>
+ var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)","gi");
+ html=html.replace(re,"<span$2</span><br>");
+ return html;
+}
+//-->
+</script>
+</head>
+<body>
+<form name="frm_obj">
+<fieldset style="margin:8px;"><legend><script>document.write(window.opener.lblPasteWord);</script></legend>
+<div style="padding:8px;"><script>document.write(window.opener.lblPasteWordHint);</script><textarea name="content" type="text" id="cleanText" style="width:280px; height:230px;"></textarea></div>
+</fieldset>
+<center>
+<input type="button" name="btnsubmit" value="" style="width:100px" onclick="submitForm();"/>
+<input type="button" name="btncancel" value="" style="width:100px" onClick="window.close();"/>
+</center></form></body></html>
+<script>
+document.frm_obj.btnsubmit.value = window.opener.lblPasteWordSubmit;
+document.frm_obj.btncancel.value = window.opener.lblPasteWordCancel;
+document.frm_obj.content.focus();
+</script>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--Thanks to Tom Bovingdon and Rob Rix-->
+<html>
+<head>
+<script>document.write("<title>"+window.opener.lblSearch+"</title>");</script>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<style type="text/css">
+<!--
+body { background-color: #EFEDDE; margin: 10px;}
+table { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 12px; }
+legend { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 14px; padding-left: 5px; padding-right: 8px; }
+.style2 {font-size: 18px; background:black; font-weight:bold; color:white; display:block; width:100%; }
+.show {left:auto;top:auto;position:auto;}
+.hide {left:-1000px;top:-1000px;position:absolute;}
+-->
+</style>
+<script language="JavaScript" type="text/javascript">
+<!--
+if(opener.isIE7) {
+ window.resizeTo(515, 250);
+} else if(document.all) {
+ window.resizeTo(515, 240);
+} else {
+ window.resizeTo(503, 236);
+}
+
+function submitForm() {
+ if(document.getElementById("searchText").value == ""){
+ alert(window.opener.lblSearchVal0);
+ return;
+ }
+ var searchText = document.getElementById("searchText").value;
+ var replaceText = document.getElementById("replaceText").value;
+ window.opener.SearchAndReplace(searchText, replaceText, document.getElementById("matchCase").checked, document.getElementById("wholeWord").checked);
+ window.close();
+ return false;
+}
+//-->
+</script>
+</head><body><form name="linkForm">
+<table cellpadding="0" cellspacing="0" border="0" width=100%><tr>
+<td><fieldset style="margin-left: 5px;"><legend><script>document.write(window.opener.lblSearch);</script></legend>
+<div style="padding: 2px;"></div><table cellpadding="4" cellspacing="0" border="0" width=100%>
+ <tr>
+ <td align="right" nowrap><script>document.write(window.opener.lblSearchFind);</script>: </td>
+ <td><input name="searchText" type="text" id="searchText" style="width:250px;height:18px;font-size:14px" value=""></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap><script>document.write(window.opener.lblSearchReplace);</script>: </td>
+ <td><input name="replaceText" type="text" id="replaceText" style="width:250px;height:18px;font-size:14px" value=""></td>
+ </tr>
+ <tr>
+ <td align="right" nowrap> </td>
+ <td align="left">
+ <input id=matchCase name=matchCase type=checkbox><script>document.write(window.opener.lblSearchMatch);</script><br>
+ <input id=wholeWord name=wholeWord type=checkbox><script>document.write(window.opener.lblSearchWholeWord);</script>
+ </td>
+ </tr>
+</table>
+<div style="padding: 2px;"></div>
+</fieldset></td><td><td align="left" valign="top" style="padding: 8px;">
+<input type="button" name="btnsubmit" value="" style="width:100px" onclick="submitForm();"/><br>
+<input type="button" name="btncancel" value="" style="width:100px;" onClick="window.close();"/>
+</td></tr></table></form></body></html>
+<script>
+document.linkForm.btnsubmit.value = window.opener.lblSearchSubmit;
+document.linkForm.btncancel.value = window.opener.lblSearchCancel;
+</script>
--- /dev/null
+////////////////////////////////////////////////////////////////////////////////
+//
+// Richtext Editor: Fork (RTEF) VERSION: 0.002
+// Released: 8/11/2006
+// For the latest release visit http://richtext.cabspace.com
+// For support visit http://cabspace.com/forums/?mforum=richtext
+//
+////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// The MIT License
+//
+// Copyright (c) 2006 Timothy Bell
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// Constants
+var minWidth = 450; // minumum width
+var wrapWidth = 1245; //width at which all icons will appear on one bar
+var maxchar = 64000; // maximum number of characters per save
+var lang = "en"; //xhtml language
+var lang_direction = "ltr"; //language direction : ltr = left-to-right, rtl = right-to-left
+var encoding = "utf-8"; //xhtml encoding
+var zeroBorder = "#c0c0c0"; //guideline color - see showGuidelines()
+var btnText = "submit"; //Button value for non-designMode() & fullsceen rte
+var resize_fullsrcreen = true;
+// (resize_fullsrcreen) limited in that: 1)won't auto wrap icons. 2)won't
+// shrink to less than (wrapWidth)px if screen was initized over (wrapWidth)px;
+
+var keep_absolute = true; // !!!Disabled - see line 456 for details!!!!!
+// By default IE will try to convery all hyperlinks to absolute paths. By
+// setting this value to "false" it will retain the relative path.
+
+// Pointers
+var InsertChar;
+var InsertTable;
+var InsertLink;
+var InsertImg;
+var dlgReplace;
+var dlgPasteText;
+var dlgPasteWord;
+
+//Init Variables & Attributes
+var ua = navigator.userAgent.toLowerCase();
+var isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1))? true:false;
+var isIE7 = ((isIE) && (ua.indexOf("msie 7.") != -1))? true:false;
+var isGecko = (ua.indexOf("gecko") != -1)? true:false;
+var isSafari = (ua.indexOf("safari") != -1)? true:false;
+var safariVersion = parseFloat(ua.substring(ua.lastIndexOf("safari/") + 7));
+var isKonqueror = (ua.indexOf("konqueror") != -1)? true:false;
+var rng;
+var currentRTE;
+var allRTEs = "";
+var obj_width;
+var obj_height;
+var imagesPath;
+var includesPath;
+var cssFile;
+var generateXHTML = true;
+var isRichText = false;
+//check to see if designMode mode is available
+//Safari/Konqueror think they are designMode capable even though they are not
+//if(document.getElementById && document.designMode && !isSafari && !isKonqueror){
+if(document.getElementById && document.designMode) {
+ isRichText = true;
+} else if ((isSafari && safariVersion >= 312) || isKonqueror) {
+ //Safari 1.3+ is capable of designMode, Safari 1.3 = webkit build 312
+ isRichText = true;
+}
+//for testing standard textarea, uncomment the following line
+//isRichText = false;
+
+var replacements = new Array (
+ new RegExp(String.fromCharCode(145),'g'), "'",
+ new RegExp(String.fromCharCode(146),'g'), "'",
+ new RegExp("'"), "'",
+ //convert all types of double quotes
+ new RegExp(String.fromCharCode(147),'g'), "\"",
+ new RegExp(String.fromCharCode(148),'g'), "\"",
+ new RegExp("\""), """, //doesn't work
+ //replace carriage returns & line feeds
+ new RegExp("[\r\n]",'g'), " ");
+
+function rteSafe(html) {
+ html = trim(html);
+ for (i=0; i<replacements.length; i = i+2) {
+ html = html.replace(replacements[i], replacements[i+1]);
+ }
+ return html;
+}
+
+// [DBC]
+var nbcommand = 0; // For not duplicating separators when no command between
+var defaultFont = "Times New Roman, Times, serif";
+var defaultSize = "13px";
+var activeCommand = { // Strait-forward HashMap
+ put : function(foo, bar) {this[foo] = bar;},
+ get : function(foo) {return this[foo];}
+}
+
+function initTextInput() {
+ activeCommand.put("cut", lblCut);
+ activeCommand.put("copy", lblCopy);
+ activeCommand.put("paste", lblPaste);
+ activeCommand.put("undo", lblUndo);
+ activeCommand.put("redo", lblRedo);
+ activeCommand.put("bold", lblBold);
+ activeCommand.put("italic", lblItalic);
+ activeCommand.put("underline", lblUnderline);
+ activeCommand.put("list", lblUL);
+ activeCommand.put("numbered_list", lblOL);
+ activeCommand.put("indent", lblIndent);
+ activeCommand.put("outdent", lblOutdent);
+ activeCommand.put("replace", lblSearch);
+ activeCommand.put("hyperlink", lblInsertLink);
+
+ wrapWidth = 14 * 24;
+ defaultFont = "Arial, Helvetica, sans-serif";
+ initRTE("../rtef/images/", "", "", true);
+}
+
+function initTextEditor() {
+ activeCommand.put("save", lblSave);
+// activeCommand.put("print", lblPrint);
+ activeCommand.put("cut", lblCut);
+ activeCommand.put("copy", lblCopy);
+ activeCommand.put("paste", lblPaste);
+ activeCommand.put("undo", lblUndo);
+ activeCommand.put("redo", lblRedo);
+ activeCommand.put("bold", lblBold);
+ activeCommand.put("italic", lblItalic);
+ activeCommand.put("underline", lblUnderline);
+ activeCommand.put("list", lblUL);
+ activeCommand.put("numbered_list", lblOL);
+ activeCommand.put("indent", lblIndent);
+ activeCommand.put("outdent", lblOutdent);
+ activeCommand.put("replace", lblSearch);
+ activeCommand.put("hyperlink", lblInsertLink);
+
+ wrapWidth = 15 * 24;
+ defaultFont = "Arial, Helvetica, sans-serif";
+ initRTE("../rtef/images/", "", "", true);
+}
+
+function addCommand(name, action) {
+ var label = activeCommand.get(name);
+ if (label != null) {
+ insertImg(label, name + ".gif", action);
+ nbcommand += 1;
+ }
+}
+
+function displayTextEditor(inputname, initialtext, width, height) {
+ writeRichText(inputname, rteSafe(initialtext), '', width, height, true, false, false);
+}
+// [/DBC]
+
+function initRTE(imgPath, incPath, css, genXHTML){
+ // CM 05/04/05 check args for compatibility with old RTE implementations
+ if (arguments.length == 3) {
+ genXHTML = generateXHTML;
+ }
+ //set paths vars
+ imagesPath = imgPath;
+ includesPath = incPath;
+ cssFile = css;
+ generateXHTML = genXHTML;
+ if(isRichText){
+ document.writeln('<style type="text/css">@import "' + includesPath + 'rte.css";</style>');
+ }
+ if(!isIE){
+ minWidth = minWidth-48;
+ wrapWidth = wrapWidth-102;
+ }
+}
+
+function writeRichText(rte, html, css, width, height, buttons, readOnly, fullscreen) {
+ currentRTE = rte;
+ if(allRTEs.length > 0){
+ allRTEs += ";";
+ }
+ allRTEs += rte;
+ // CM 06/04/05 stops single quotes from messing everything up
+ html=replaceIt(html,'\'',''');
+ // CM 05/04/05 a bit of juggling for compatibility with old RTE implementations
+ if (arguments.length == 6) {
+ fullscreen = false;
+ readOnly = buttons;
+ buttons = height;
+ height = width;
+ width = css;
+ css = "";
+ }
+ var iconWrapWidth = wrapWidth;
+ var tablewidth;
+ if(readOnly) {
+ buttons = false;
+ }
+ if(fullscreen) {
+ readOnly = false; // fullscreen is not readOnly and must show buttons
+ buttons = true;
+ // resize rte on resize if the option resize_fullsrcreen = true.
+ if(isRichText && resize_fullsrcreen) {
+ window.onresize = resizeRTE;
+ }
+ document.body.style.margin = "0px";
+ document.body.style.overflow = "hidden";
+ //adjust maximum table widths
+ findSize("");
+ width = obj_width;
+ if(width < iconWrapWidth) {
+ height = (obj_height - 83);
+ } else {
+ height = (obj_height - 55);
+ }
+ if (width < minWidth) {
+ document.body.style.overflow = "auto";
+ if(isIE) {
+ height = obj_height-22;
+ } else {
+ height = obj_height-24;
+ }
+ width = minWidth;
+ }
+ tablewidth = width;
+ } else {
+ fullscreen = false;
+ iconWrapWidth = iconWrapWidth-25;
+ //adjust minimum table widths
+ if(buttons && (width < minWidth)) {
+ width = minWidth;
+ }
+ if(isIE){
+ tablewidth = width;
+ } else {
+ tablewidth = width + 4;
+ }
+ }
+ if(isRichText) {
+ var rte_css = "";
+ if(css.length > 0) {
+ rte_css = css;
+ } else {
+ rte_css = cssFile;
+ }
+ document.writeln('<span class="rteDiv">');
+ if(buttons) {
+ document.writeln('<table class="rteBk" cellpadding=0 cellspacing=0 id="Buttons1_'+rte+'" width="' + tablewidth + '">');
+ document.writeln('<tbody><tr>');
+ insertBar();
+ if(fullscreen || activeCommand.get("save") != null){
+ document.writeln('<td><input type=image class="rteImg" src="'+imagesPath+'save.gif" alt="'+lblSave+'" title="'+lblSave+'" onmouseover="this.className=\'rteImgUp\'" onmouseout="this.className=\'rteImg\'" onmousedown="this.className=\'rteImgDn\'" onmouseup="this.className=\'rteImgUp\'" onClick="submitEdit()"></td>');
+ nbcommand += 1;
+ }
+ if(!isSafari && !isKonqueror) {
+ addCommand("print","rtePrint('"+rte+"')");
+// insertImg(lblPrint,"print.gif","rtePrint('"+rte+"')");
+ insertSep();
+ addCommand("selectall","toggleSelection('"+rte+"')");
+// insertImg(lblSelectAll,"selectall.gif","toggleSelection('"+rte+"')");
+ addCommand("unformat","rteCommand('"+rte+"','removeformat')");
+// insertImg(lblUnformat,"unformat.gif","rteCommand('"+rte+"','removeformat')");
+ insertSep();
+ }
+ if(isIE || isSafari || isKonqueror) {
+ addCommand("cut","rteCommand('"+rte+"','cut')");
+// insertImg(lblCut,"cut.gif","rteCommand('"+rte+"','cut')");
+ addCommand("copy","rteCommand('"+rte+"','copy')");
+// insertImg(lblCopy,"copy.gif","rteCommand('"+rte+"','copy')");
+ }
+ if(isSafari || isKonqueror) {
+ addCommand("paste","rteCommand('"+rte+"','InsertText')");
+// insertImg(lblPaste,"paste.gif","rteCommand('"+rte+"','InsertText')");
+ }
+ if(isIE) {
+ addCommand("paste","rteCommand('"+rte+"','paste')");
+// insertImg(lblPaste,"paste.gif","rteCommand('"+rte+"','paste')");
+ }
+ if(!isSafari && !isKonqueror) {
+ addCommand("pastetext","dlgLaunch('"+rte+"','text')");
+// insertImg(lblPasteText,"pastetext.gif","dlgLaunch('"+rte+"','text')");
+ addCommand("pasteword","dlgLaunch('"+rte+"','word')");
+// insertImg(lblPasteWord,"pasteword.gif","dlgLaunch('"+rte+"','word')");
+ }
+ insertSep();
+ addCommand("undo","rteCommand('"+rte+"','undo')");
+// insertImg(lblUndo,"undo.gif","rteCommand('"+rte+"','undo')");
+ addCommand("redo","rteCommand('"+rte+"','redo')");
+// insertImg(lblRedo,"redo.gif","rteCommand('"+rte+"','redo')");
+ if(!isSafari && !isKonqueror) {
+// insertSep();
+// document.writeln('<td>');
+// document.writeln('<select id="formatblock_'+rte+'" onchange="selectFont(\''+rte+'\', this.id);return false" style="font-size:14px;width:105px;height:20px;margin:1px;">');
+// document.writeln(lblFormat);
+// document.writeln('</select></td><td>');
+// document.writeln('<select id="fontname_'+rte+'" onchange="selectFont(\''+rte+'\', this.id);return false" style="font-size:14px;width:125px;height:20px;margin:1px;">');
+// document.writeln(lblFont);
+// document.writeln('</select></td><td>');
+// document.writeln('<select unselectable="on" id="fontsize_'+rte+'" onchange="selectFont(\''+rte+'\', this.id);return false" style="font-size:14px;width:75px;height:20px;margin:1px;">');
+// document.writeln(lblSize);
+// document.writeln('</select></td>');
+ }
+ if(tablewidth < iconWrapWidth){
+ document.writeln('<td width="100%"></td></tr></tbody></table>');
+ document.writeln('<table class="rteBk" cellpadding="0" cellspacing="0" id="Buttons2_'+rte+'" width="' + tablewidth + '">');
+ document.writeln('<tbody><tr>');
+ }
+ insertBar();
+ addCommand("bold","rteCommand('"+rte+"','bold')");
+// insertImg(lblBold,"bold.gif","rteCommand('"+rte+"','bold')");
+ addCommand("italic","rteCommand('"+rte+"','italic')");
+// insertImg(lblItalic,"italic.gif","rteCommand('"+rte+"','italic')");
+ addCommand("underline","rteCommand('"+rte+"','underline')");
+// insertImg(lblUnderline,"underline.gif","rteCommand('"+rte+"','underline')");
+ //if(!isSafari && !isKonqueror) insertImg(lblStrikeThrough,"strikethrough.gif","rteCommand('"+rte+"','strikethrough')");
+ //insertImg(lblSuperscript,"superscript.gif","rteCommand('"+rte+"','superscript')");
+ //if(!isSafari && !isKonqueror){
+ //insertImg(lblSubscript,"subscript.gif","rteCommand('"+rte+"','subscript')");
+ //} else {
+ //insertImg(lblSubscript,"subscript.gif","rteCommand('"+rte+"','StyleChange',sub)");
+ //}
+ insertSep();
+ addCommand("left_just","rteCommand('"+rte+"','justifyleft')");
+// insertImg(lblAlgnLeft,"left_just.gif","rteCommand('"+rte+"','justifyleft')");
+ addCommand("centre","rteCommand('"+rte+"','justifycenter')");
+// insertImg(lblAlgnCenter,"centre.gif","rteCommand('"+rte+"','justifycenter')");
+ addCommand("right_just","rteCommand('"+rte+"','justifyright')");
+// insertImg(lblAlgnRight,"right_just.gif","rteCommand('"+rte+"','justifyright')");
+ addCommand("justifyfull","rteCommand('"+rte+"','justifyfull')");
+// insertImg(lblJustifyFull,"justifyfull.gif","rteCommand('"+rte+"','justifyfull')");
+ if(!isSafari && !isKonqueror) {
+ insertSep();
+ addCommand("numbered_list","rteCommand('"+rte+"','insertorderedlist')");
+// insertImg(lblOL,"numbered_list.gif","rteCommand('"+rte+"','insertorderedlist')");
+ addCommand("list","rteCommand('"+rte+"','insertunorderedlist')");
+// insertImg(lblUL,"list.gif","rteCommand('"+rte+"','insertunorderedlist')");
+ addCommand("outdent","rteCommand('"+rte+"','outdent')");
+// insertImg(lblOutdent,"outdent.gif","rteCommand('"+rte+"','outdent')");
+ addCommand("indent","rteCommand('"+rte+"','indent')");
+// insertImg(lblIndent,"indent.gif","rteCommand('"+rte+"','indent')");
+ insertSep();
+ addCommand("textcolor","dlgColorPalette('"+rte+"','forecolor')","forecolor_"+rte);
+// insertImg(lblTextColor,"textcolor.gif","dlgColorPalette('"+rte+"','forecolor')","forecolor_"+rte);
+ addCommand("bgcolor","dlgColorPalette('"+rte+"','hilitecolor')","hilitecolor_"+rte);
+// insertImg(lblBgColor,"bgcolor.gif","dlgColorPalette('"+rte+"','hilitecolor')","hilitecolor_"+rte);
+ insertSep();
+ addCommand("hr","rteCommand('"+rte+"','inserthorizontalrule')");
+// insertImg(lblHR,"hr.gif","rteCommand('"+rte+"','inserthorizontalrule')");
+ insertSep();
+ addCommand("special_char","dlgLaunch('"+rte+"','char')");
+// insertImg(lblInsertChar,"special_char.gif","dlgLaunch('"+rte+"','char')");
+ addCommand("hyperlink","dlgLaunch('"+rte+"','link')");
+// insertImg(lblInsertLink,"hyperlink.gif","dlgLaunch('"+rte+"','link')");
+ addCommand("image","dlgLaunch('"+rte+"','image')");
+// insertImg(lblAddImage,"image.gif","dlgLaunch('"+rte+"','image')");
+ addCommand("insert_table","dlgLaunch('"+rte+"','table')");
+// insertImg(lblInsertTable,"insert_table.gif","dlgLaunch('"+rte+"','table')");
+ }
+ insertSep();
+ if(!isSafari && !isKonqueror) {
+ addCommand("replace","dlgLaunch('"+rte+"','replace')");
+// insertImg(lblSearch,"replace.gif","dlgLaunch('"+rte+"','replace')");
+ }
+ addCommand("word_count","countWords('"+rte+"')");
+// insertImg(lblWordCount,"word_count.gif","countWords('"+rte+"')");
+ if(isIE) {
+ addCommand("spellcheck","checkspell()");
+// insertImg(lblSpellCheck,"spellcheck.gif","checkspell()");
+ }
+ document.writeln('<td width="100%"></td></tr></tbody></table>');
+ }
+ document.writeln('<iframe id="'+rte+'" width="' + (tablewidth - 2) + 'px" height="' + height + 'px" frameborder=0 style="border: 1px solid #d2d2d2" src="' + includesPath + 'blank.htm" onfocus="dlgCleanUp();"></iframe>');
+ if(!readOnly){
+ document.writeln('<table id="vs'+rte+'" name="vs'+rte+'" class="rteBk" cellpadding=0 cellspacing=0 border=0 width="' + tablewidth + '"><tr>');
+ document.writeln('<td onclick="toggleHTMLSrc(\''+rte+'\', ' + buttons + ');" nowrap><img class="rteBar" src="'+imagesPath+'bar.gif" alt="" align=absmiddle><span id="imgSrc'+rte+'"><img src="'+imagesPath+'code.gif" alt="" title="" style="margin:1px;" align=absmiddle></span><span id="_xtSrc'+rte+'" style="font-family:tahoma,sans-serif;font-size:12px;color:#0000ff;CURSOR: default;">'+lblModeHTML+'</span></td>');
+ document.writeln('<td width="100%" nowrap> </td></tr></table>');
+ }
+ document.writeln('<iframe width="142" height="98" id="cp'+rte+'" src="' + includesPath + 'palette.htm" scrolling="no" frameborder=0 style="margin:0;border:0;visibility:hidden;position:absolute;border:1px solid #cdcdcd;top:-1000px;left:-1000px"></iframe>');
+ document.writeln('<input type="hidden" id="hdn'+rte+'" name="'+rte+'" value="" style="position: absolute;left:-1000px;top:-1000px;">');
+ if(!fullscreen){
+ document.writeln('<input type="hidden" id="size'+rte+'" name="size'+rte+'" value="'+height+'" style="position: absolute;left:-1000px;top:-1000px;">');
+ }
+ document.writeln('</span>');
+ document.getElementById('hdn'+rte).value = html;
+ enableDesignMode(rte, html, rte_css, readOnly);
+ } else {
+ buttons = false;
+ if(fullscreen && height > 90) {
+ height = (height - 75);tablewidth=tablewidth-30;
+ }
+ // CM non-designMode() UI
+ html = parseBreaks(html);
+ document.writeln('<div style="font:12px Verdana, Arial, Helvetica, sans-serif;width: ' + tablewidth + 'px;padding:15px;">');
+ if(!readOnly) {
+ document.writeln('<div style="color:gray">'+lblnon_designMode+'</div><br>');
+ document.writeln('<input type="radio" name="' + rte + '_autobr" value="1" checked="checked" onclick="autoBRon(\'' + rte + '\');" /> '+lblAutoBR+'<input type="radio" name="' + rte + '_autobr" value="0" onclick="autoBRoff(\'' + rte + '\');" />'+lblRawHTML+'<br>');
+ document.writeln('<textarea name="'+rte+'" id="'+rte+'" style="width: ' + tablewidth + 'px; height: ' + height + 'px;">' + html + '</textarea>');
+ } else {
+ document.writeln('<textarea name="'+rte+'" id="'+rte+'" style="width: ' + tablewidth + 'px; height: ' + height + 'px;" readonly=readonly>' + html + '</textarea>');
+ }
+ if(fullscreen) document.writeln('<br><input type="submit" value="'+btnText+'" />');
+ document.writeln('</div>');
+ }
+}
+
+function insertBar() {
+ document.writeln('<td><img class="rteBar" src="'+imagesPath+'bar.gif" alt=""></td>');
+ nbcommand = 0;
+}
+function insertSep() {
+ if (nbcommand > 0) {
+ document.writeln('<td><img class="rteSep" src="'+imagesPath+'blackdot.gif" alt=""></td>');
+ nbcommand = 0;
+ }
+}
+function insertImg(name, image, command, id){
+ var td = "<td>";
+ if(id!=null){
+ td = "<td id='"+id+"'>";
+ }
+ document.writeln(td+'<img class="rteImg" src="'+imagesPath+image+'" alt="'+name+'" title="'+name+'" onMouseDown="'+command+';return false" onmouseover="this.className=\'rteImgUp\'" onmouseout="this.className=\'rteImg\'" onmousedown="this.className=\'rteImgDn\'" onmouseup="this.className=\'rteImgUp\'"></td>');
+}
+
+function enableDesignMode(rte, html, css, readOnly) {
+ var frameHtml = "<html dir='" + lang_direction + "' lang='" + lang + "' id='" + rte + "'>\n<head>\n";
+ frameHtml += "<meta http-equiv='Content-Type' content='text/html; charset=" + encoding + "'>\n";
+ frameHtml += "<meta http-equiv='Content-Language' content='" + lang + "'>\n";
+ //to reference your stylesheet, set href property below to your stylesheet path and uncomment
+ if(css.length > 0) {
+ frameHtml += "<link media=\"all\" type=\"text/css\" href=\"" + css + "\" rel=\"stylesheet\">\n";
+ } else {
+ frameHtml += "<style>@charset \"utf-8\"; body {background:#FFFFFF;margin:8px;padding:0px;font-family:"+defaultFont+";font-size:"+defaultSize+";}</style>\n";
+ }
+ frameHtml += "</head><body>\n"+html+"\n</body></html>";
+ if(!isSafari && !isKonqueror) var oRTE = returnRTE(rte).document;
+ if (document.all) {
+ if(isSafari || isKonqueror) var oRTE = frames[rte].document;
+ oRTE.open("text/html","replace");
+ oRTE.write(frameHtml);
+ oRTE.close();
+ if (!readOnly) {
+ oRTE.designMode = "On";
+ }
+ } else {
+ try {
+ // Commented out the following line to confront a bug when loading multiple RTEs on one page in a MOZ browser
+ // Fix provided by "Kings". Safari may have problems with this snytax - unable to test because I don't own a MAC.(Tim Bell)
+ //
+ // if(!readOnly) document.getElementById(rte).contentDocument.designMode = "on";
+ if(!readOnly && !isKonqueror && !isSafari) {
+ addLoadEvent(function() { document.getElementById(rte).contentDocument.designMode = "on"; });
+ } else if(!readOnly) {
+ if (!readOnly) document.getElementById(rte).contentDocument.designMode = "on";
+ }
+ try {
+
+ if(isSafari || isKonqueror) var oRTE = document.getElementById(rte).contentWindow.document;
+ oRTE.open("text/html","replace");
+ oRTE.write(frameHtml);
+ oRTE.close();
+ if(isGecko && !readOnly) {
+ //attach a keyboard handler for gecko browsers to make keyboard shortcuts work
+ oRTE.addEventListener("keypress", geckoKeyPress, true);
+ oRTE.addEventListener("focus", function (){dlgCleanUp();}, false);
+ }
+ } catch(e) {
+ alert(lblErrorPreload);
+ }
+ } catch(e) {
+ //gecko may take some time to enable design mode.
+ //Keep looping until able to set.
+ if(isGecko){
+ setTimeout("enableDesignMode('"+rte+"', '"+html+"', '"+css+"', "+readOnly+");", 200);
+ }else{
+ return false;
+ }
+ }
+ }
+ setTimeout('showGuidelines("'+rte+'")',300);
+}
+
+function addLoadEvent(func) {
+ var oldonload = window.onload;
+ if (typeof window.onload != 'function') {
+ window.onload = func;
+ } else {
+ window.onload = function() {
+ oldonload();
+ func();
+ };
+ }
+}
+
+function returnRTE(rte) {
+ var rtn;
+ if(document.all){
+ rtn = frames[rte];
+ } else {
+ rtn = document.getElementById(rte).contentWindow;
+ }
+ return rtn;
+}
+
+function updateRTE(rte) {
+ if(isRichText) {
+ dlgCleanUp(); // Closes Pop-ups
+ stripGuidelines(rte); // Removes Table Guidelines
+ }
+ parseRTE(rte);
+}
+
+function updateRTEs(){
+ var vRTEs = allRTEs.split(";");
+ for(var i=0; i<vRTEs.length; i++){
+ updateRTE(vRTEs[i]);
+ }
+}
+
+function parseRTE(rte) {
+ if (!isRichText) {
+ autoBRoff(rte); // sorts out autoBR
+ return false;
+ }
+ //check for readOnly mode
+ var readOnly = false;
+ var oRTE = returnRTE(rte);
+ if(document.all){
+ if(oRTE.document.designMode != "On"){
+ readOnly = true;
+ }
+ }else{
+ if(oRTE.document.designMode != "on"){
+ readOnly = true;
+ }
+ }
+ if(isRichText && !readOnly){
+ //if viewing source, switch back to design view
+ if(document.getElementById("_xtSrc"+rte).innerHTML == lblModeRichText){
+ if(document.getElementById("Buttons1_"+rte)){
+ toggleHTMLSrc(rte, true);
+ }else{
+ toggleHTMLSrc(rte, false);
+ }
+ stripGuidelines(rte);
+ }
+ setHiddenVal(rte);
+ }
+}
+
+function setHiddenVal(rte){
+ //set hidden form field value for current rte
+ var oHdnField = document.getElementById('hdn'+rte);
+ //convert html output to xhtml (thanks Timothy Bell and Vyacheslav Smolin!)
+ if(oHdnField.value==null){
+ oHdnField.value = "";
+ }
+ var sRTE = returnRTE(rte).document.body;
+ if(generateXHTML){
+ try{
+ oHdnField.value = getXHTML(sRTE.innerHTML);
+ }catch(e){
+ oHdnField.value = sRTE.innerHTML;
+ }
+ }else{
+ oHdnField.value = sRTE.innerHTML;
+ }
+ // fix to replace special characters added here:
+ oHdnField.value = replaceSpecialChars(oHdnField.value);
+ //if there is no content (other than formatting) set value to nothing
+ if(stripHTML(oHdnField.value.replace(" ", " ")) == "" &&
+ oHdnField.value.toLowerCase().search("<hr") == -1 &&
+ oHdnField.value.toLowerCase().search("<img") == -1){
+ oHdnField.value = "";
+ }
+}
+
+function rteCommand(rte, command, option){
+ dlgCleanUp();
+ //function to perform command
+ var oRTE = returnRTE(rte);
+ try{
+ oRTE.focus();
+ oRTE.document.execCommand(command, false, option);
+ oRTE.focus();
+ }catch(e){
+// alert(e);
+// setTimeout("rteCommand('" + rte + "', '" + command + "', '" + option + "');", 10);
+ }
+}
+
+function toggleHTMLSrc(rte, buttons){
+ dlgCleanUp();
+ //contributed by Bob Hutzel (thanks Bob!)
+ var cRTE = document.getElementById(rte);
+ var hRTE = document.getElementById('hdn'+rte);
+ var sRTE = document.getElementById("size"+rte);
+ var tRTE = document.getElementById("_xtSrc"+rte);
+ var iRTE = document.getElementById("imgSrc"+rte);
+ var oRTE = returnRTE(rte).document;
+ var htmlSrc;
+ if(sRTE){
+ obj_height = parseInt(sRTE.value);
+ }else{
+ findSize(rte);
+ }
+ if(tRTE.innerHTML == lblModeHTML){
+ //we are checking the box
+ tRTE.innerHTML = lblModeRichText;
+ stripGuidelines(rte);
+ if(buttons){
+ showHideElement("Buttons1_" + rte, "hide", true);
+ if(document.getElementById("Buttons2_"+rte)){
+ showHideElement("Buttons2_" + rte, "hide", true);
+ cRTE.style.height = obj_height+56;
+ }else{
+ cRTE.style.height = obj_height+28;
+ }
+ }
+ setHiddenVal(rte);
+ if(document.all){
+ oRTE.body.innerText = hRTE.value;
+ }else{
+ htmlSrc = oRTE.createTextNode(hRTE.value);
+ oRTE.body.innerHTML = "";
+ oRTE.body.appendChild(htmlSrc);
+ }
+ iRTE.innerHTML = '<img src="'+imagesPath+'design.gif" alt="Switch Mode" style="margin:1px;" align=absmiddle>';
+ }else{
+ //we are unchecking the box
+ obj_height = parseInt(cRTE.style.height);
+ tRTE.innerHTML = lblModeHTML;
+ if(buttons){
+ showHideElement("Buttons1_" + rte, "show", true);
+ if(document.getElementById("Buttons2_"+rte)){
+ showHideElement("Buttons2_" + rte, "show", true);
+ cRTE.style.height = obj_height-56;
+ }else{
+ cRTE.style.height = obj_height-28;
+ }
+ }
+ if(document.all){
+ //fix for IE
+ var output = escape(oRTE.body.innerText);
+ output = output.replace("%3CP%3E%0D%0A%3CHR%3E", "%3CHR%3E");
+ output = output.replace("%3CHR%3E%0D%0A%3C/P%3E", "%3CHR%3E");
+ oRTE.body.innerHTML = unescape(output);
+ // Disabled due to flaw in the regular expressions, this fix
+ // does not work with the revamped's enhanced insert link dialog window.
+ //
+ // Prevent links from changing to absolute paths
+ if(!keep_absolute){
+ var tagfix = unescape(output).match(/<a[^>]*href=(['"])([^\1>]*)\1[^>]*>/ig);
+ var coll = oRTE.body.all.tags('A');
+ for(i=0; i<coll.length; i++){
+ // the 2 alerts below show when we hinder the links from becoming absolute
+ //alert(tagfix[i]);
+ coll[i].href = tagfix[i].replace(/.*href=(['"])([^\1]*)\1.*/i,"$2");
+ //alert(RegExp.$1 + " " + RegExp.$2 + " " + RegExp.$3);
+ }
+ var imgfix = unescape(output).match(/<img[^>]*src=['"][^'"]*['"][^>]*>/ig);
+ var coll2 = oRTE.body.all.tags('IMG');
+ for(i=0; i<coll2.length; i++){
+ coll2[i].src = imgfix[i].replace(/.*src=['"]([^'"]*)['"].*/i,"$1");
+ }
+ }
+ //end path fix
+ }else{
+ htmlSrc = oRTE.body.ownerDocument.createRange();
+ htmlSrc.selectNodeContents(oRTE.body);
+ oRTE.body.innerHTML = htmlSrc.toString();
+ }
+ oRTE.body.innerHTML = replaceSpecialChars(oRTE.body.innerHTML);
+ showGuidelines(rte);
+ // (IE Only)This prevents an undo operation from displaying a pervious HTML mode
+ // This resets the undo/redo buffer.
+ if(document.all){
+ parseRTE(rte);
+ }
+ iRTE.innerHTML = '<img src="'+imagesPath+'code.gif" alt="Switch Mode" style="margin:1px;" align=absmiddle>';
+ }
+}
+
+function toggleSelection(rte) {
+ var rng = setRange(rte);
+ var oRTE = returnRTE(rte).document;
+ var length1;
+ var length2;
+ if(document.all){
+ length1 = rng.text.length;
+ var output = escape(oRTE.body.innerText);
+ output = output.replace("%3CP%3E%0D%0A%3CHR%3E", "%3CHR%3E");
+ output = output.replace("%3CHR%3E%0D%0A%3C/P%3E", "%3CHR%3E");
+ length2 = unescape(output).length;
+ }else{
+ length1 = rng.toString().length;
+ var htmlSrc = oRTE.body.ownerDocument.createRange();
+ htmlSrc.selectNodeContents(oRTE.body);
+ length2 = htmlSrc.toString().length;
+ }
+ if(length1 < length2){
+ rteCommand(rte,'selectall','');
+ } else {
+ if(!document.all){
+ oRTE.designMode = "off";
+ oRTE.designMode = "on";
+ }else{
+ rteCommand(rte,'unselect','');
+ }
+ }
+}
+
+function dlgColorPalette(rte, command) {
+ //function to display or hide color palettes
+ setRange(rte);
+ //get dialog position
+ var oDialog = document.getElementById('cp' + rte);
+ var buttonElement = document.getElementById(command+"_"+rte);
+ var iLeftPos = buttonElement.offsetLeft+5;
+ var iTopPos = buttonElement.offsetTop+53;
+ if (!document.getElementById('Buttons2_'+rte)){
+ iTopPos = iTopPos-28;
+ }
+ oDialog.style.left = iLeftPos + "px";
+ oDialog.style.top = iTopPos + "px";
+
+ if((command == parent.command)&&(rte == currentRTE)){
+ //if current command dialog is currently open, close it
+ if(oDialog.style.visibility == "hidden"){
+ showHideElement(oDialog, 'show', false);
+ }else{
+ showHideElement(oDialog, 'hide', false);
+ }
+ }else{
+ //if opening a new dialog, close all others
+ var vRTEs = allRTEs.split(";");
+ for(var i = 0; i<vRTEs.length; i++){
+ showHideElement('cp' + vRTEs[i], 'hide', false);
+ }
+ showHideElement(oDialog, 'show', false);
+ }
+ //save current values
+ currentRTE = rte;
+ parent.command = command;
+}
+
+function dlgLaunch(rte, command) {
+ var selectedText = '';
+ //save current values
+ parent.command = command;
+ currentRTE = rte;
+ switch(command){
+ case "char":
+ InsertChar = popUpWin(includesPath+'insert_char.htm', 'InsertChar', 50, 50, 'status=yes,');
+ break;
+ case "table":
+ InsertTable = popUpWin(includesPath + 'insert_table.htm', 'InsertTable', 50, 50, 'status=yes,');
+ break;
+ case "image":
+ setRange(rte);
+ parseRTE(rte);
+ InsertImg = popUpWin(includesPath + 'insert_img.htm','AddImage', 50, 50, 'status=yes,');
+ break;
+ case "link":
+ selectedText = getText(rte);
+ InsertLink = popUpWin(includesPath + 'insert_link.htm', 'InsertLink', 50, 50, 'status=yes,');
+ setFormText("0", selectedText);
+ break;
+ case "replace":
+ selectedText = getText(rte);
+ dlgReplace = popUpWin(includesPath + 'replace.htm', 'dlgReplace', 50, 50, 'status=yes,');
+ setFormText("1", selectedText);
+ break;
+ case "text":
+ dlgPasteText = popUpWin(includesPath + 'paste_text.htm', 'dlgPasteText', 50, 50, 'status=yes,');
+ break;
+ case "word":
+ dlgPasteWord = popUpWin(includesPath + 'paste_word.htm', 'dlgPasteWord', 50, 50, 'status=yes,');
+ break;
+ }
+}
+
+function getText(rte) {
+ //get currently highlighted text and set link text value
+ setRange(rte);
+ var rtn = '';
+ if (isIE) {
+ rtn = stripHTML(rng.htmlText);
+ } else {
+ rtn = stripHTML(rng.toString());
+ }
+ parseRTE(rte);
+ if(document.all){
+ rtn = rtn.replace("'","\\\\\\'");
+ }else{
+ rtn = rtn.replace("'","\\'");
+ }
+ return rtn;
+}
+
+function setFormText(popup, content){
+ //set link text value in dialog windows
+ if(content != "undefined")
+ {
+ try{
+ switch(popup){
+ case "0": InsertLink.document.getElementById("linkText").value = content; break;
+ case "1": dlgReplace.document.getElementById("searchText").value = content; break;
+ }
+ }catch(e){
+ //may take some time to create dialog window.
+ //Keep looping until able to set.
+ setTimeout("setFormText('"+popup+"','" + content + "');", 10);
+ }
+ }
+}
+
+function dlgCleanUp(){
+ var vRTEs = allRTEs.split(";");
+ for(var i = 0; i < vRTEs.length; i++){
+ showHideElement('cp' + vRTEs[i], 'hide', false);
+ }
+ if(InsertChar != null){
+ InsertChar.close();
+ InsertChar=null;
+ }
+ if(InsertTable != null){
+ InsertTable.close();
+ InsertTable=null;
+ }
+ if(InsertLink != null){
+ InsertLink.close();
+ InsertLink=null;
+ }
+ if(InsertImg != null){
+ InsertImg.close();
+ InsertImg=null;
+ }
+ if(dlgReplace != null){
+ dlgReplace.close();
+ dlgReplace=null;
+ }
+ if(dlgPasteText != null){
+ dlgPasteText.close();
+ dlgPasteText=null;
+ }
+ if(dlgPasteWord != null){
+ dlgPasteWord.close();
+ dlgPasteWord=null;
+ }
+}
+
+function popUpWin (url, win, width, height, options) {
+ dlgCleanUp();
+ var leftPos = (screen.availWidth - width) / 2;
+ var topPos = (screen.availHeight - height) / 2;
+ options += 'width=' + width + ',height=' + height + ',left=' + leftPos + ',top=' + topPos;
+ return window.open(url, win, options);
+}
+
+function setColor(color) {
+ //function to set color
+ var rte = currentRTE;
+ var parentCommand = parent.command;
+ if(document.all){
+ if(parentCommand == "hilitecolor"){
+ parentCommand = "backcolor";
+ }
+ //retrieve selected range
+ rng.select();
+ }
+ rteCommand(rte, parentCommand, color);
+ showHideElement('cp'+rte, "hide", false);
+}
+
+function addImage(rte) {
+ dlgCleanUp();
+ //function to add image
+ imagePath = prompt('Enter Image URL:', 'http://');
+ if((imagePath != null)&&(imagePath != "")){
+ rteCommand(rte, 'InsertImage', imagePath);
+ }
+}
+
+function rtePrint(rte) {
+ dlgCleanUp();
+ if(isIE){
+ document.getElementById(rte).contentWindow.document.execCommand('Print');
+ }else{
+ document.getElementById(rte).contentWindow.print();
+ }
+}
+
+function selectFont(rte, selectname){
+ //function to handle font changes
+ var idx = document.getElementById(selectname).selectedIndex;
+ // First one is always a label
+ if(idx != 0){
+ var selected = document.getElementById(selectname).options[idx].value;
+ var cmd = selectname.replace('_'+rte, '');
+ rteCommand(rte, cmd, selected);
+ document.getElementById(selectname).selectedIndex = 0;
+ }
+}
+
+function insertHTML(html){
+ //function to add HTML -- thanks dannyuk1982
+ var rte = currentRTE;
+ var oRTE = returnRTE(rte);
+ oRTE.focus();
+ if(document.all){
+ var oRng = oRTE.document.selection.createRange();
+ oRng.pasteHTML(html);
+ oRng.collapse(false);
+ oRng.select();
+ }else{
+ oRTE.document.execCommand('insertHTML', false, html);
+ }
+}
+
+function replaceHTML(tmpContent, searchFor, replaceWith) {
+ var runCount = 0;
+ var intBefore = 0;
+ var intAfter = 0;
+ var tmpOutput = "";
+ while(tmpContent.toUpperCase().indexOf(searchFor.toUpperCase()) > -1) {
+ runCount = runCount+1;
+ // Get all content before the match
+ intBefore = tmpContent.toUpperCase().indexOf(searchFor.toUpperCase());
+ tmpBefore = tmpContent.substring(0, intBefore);
+ tmpOutput = tmpOutput + tmpBefore;
+ // Get the string to replace
+ tmpOutput = tmpOutput + replaceWith;
+ // Get the rest of the content after the match until
+ // the next match or the end of the content
+ intAfter = tmpContent.length - searchFor.length + 1;
+ tmpContent = tmpContent.substring(intBefore + searchFor.length);
+ }
+ return runCount+"|^|"+tmpOutput+tmpContent;
+}
+
+function replaceSpecialChars(html){
+ var specials = new Array("¢","€","£","¤","¥","©","®","™","÷","×","±","¼","½","¾","°","¹","²","³","µ","«","»","‘","’","‹","›","‚","„","“","”","¡","¦","§","¬","¯","¶","·","¸","¿","ƒ","—","–","•","…","‰","ª","º","ß","†","‡","ð","Ð","ø","Ø","þ","Þ","œ","Œ","š","Š","´","ˆ","˜","¨","à","á","â","ã","ä","å","æ","À","Á","Â","Ã","Ä","Å","Æ","ç","Ç","è","é","ê","ë","È","É","Ê","Ë","ì","í","î","ï","Ì","Í","Î","Ï","ñ","Ñ","ò","ó","ô","õ","ö","Ò","Ó","Ô","Õ","Ö","ù","ú","û","ü","Ù","Ú","Û","Ü","ý","ÿ","Ý","Ÿ");
+ var unicodes = new Array("\u00a2","\u20ac","\u00a3","\u00a4","\u00a5","\u00a9","\u00ae","\u2122","\u00f7","\u00d7","\u00b1","\u00bc","\u00bd","\u00be","\u00b0","\u00b9","\u00b2","\u00b3","\u00b5","\u00ab","\u00bb","\u2018","\u2019","\u2039","\u203a","\u201a","\u201e","\u201c","\u201d","\u00a1","\u00a6","\u00a7","\u00ac","\u00af","\u00b6","\u00b7","\u00b8","\u00bf","\u0192","\u2014","\u2013","\u2022","\u2026","\u2030","\u00aa","\u00ba","\u00df","\u2020","\u2021","\u00f0","\u00d0","\u00f8","\u00d8","\u00fe","\u00de","\u0153","\u0152","\u0161","\u0160","\u00b4","\u02c6","\u02dc","\u00a8","\u00e0","\u00e1","\u00e2","\u00e3","\u00e4","\u00e5","\u00e6","\u00c0","\u00c1","\u00c2","\u00c3","\u00c4","\u00c5","\u00c6","\u00e7","\u00c7","\u00e8","\u00e9","\u00ea","\u00eb","\u00c8","\u00c9","\u00ca","\u00cb","\u00ec","\u00ed","\u00ee","\u00ef","\u00cc","\u00cd","\u00ce","\u00cf","\u00f1","\u00d1","\u00f2","\u00f3","\u00f4","\u00f5","\u00f6","\u00d2","\u00d3","\u00d4","\u00d5","\u00d6","\u00f9","\u00fa","\u00fb","\u00fc","\u00d9","\u00da","\u00db","\u00dc","\u00fd","\u00ff","\u00dd","\u0178");
+ for(var i=0; i<specials.length; i++){
+ html = replaceIt(html,unicodes[i],specials[i]);
+ }
+ return html;
+}
+
+function SearchAndReplace(searchFor, replaceWith, matchCase, wholeWord) {
+ var cfrmMsg = lblSearchConfirm.replace("SF",searchFor).replace("RW",replaceWith);
+ var rte = currentRTE;
+ stripGuidelines(rte);
+ var oRTE = returnRTE(rte);
+ var tmpContent = oRTE.document.body.innerHTML.replace("'", "\'").replace('"', '\"');
+ var strRegex;
+ if (matchCase && wholeWord) {
+ strRegex = "/(?!<[^>]*)(\\b(" + searchFor + ")\\b)(?![^<]*>)/g";
+ }
+ else if (matchCase) {
+ strRegex = "/(?!<[^>]*)(" + searchFor + ")(?![^<]*>)/g";
+ }
+ else if (wholeWord) {
+ strRegex = "/(?!<[^>]*)(\\b(" + searchFor + ")\\b)(?![^<]*>)/gi";
+ } else {
+ strRegex = "/(?!<[^>]*)(" + searchFor + ")(?![^<]*>)/gi";
+ }
+ var cmpRegex=eval(strRegex);
+ var runCount = 0;
+ var tmpNext = tmpContent;
+ var intFound = tmpNext.search(cmpRegex);
+ while(intFound > -1) {
+ runCount = runCount+1;
+ tmpNext = tmpNext.substr(intFound + searchFor.length);
+ intFound = tmpNext.search(cmpRegex);
+ }
+ if (runCount > 0) {
+ cfrmMsg = cfrmMsg.replace("[RUNCOUNT]",runCount);
+ if(confirm(cfrmMsg)) {
+ tmpContent=tmpContent.replace(cmpRegex,replaceWith);
+ oRTE.document.body.innerHTML = tmpContent.replace("\'", "'").replace('\"', '"');
+ } else {
+ alert(lblSearchAbort);
+ }
+ showGuidelines(rte);
+ }
+ else {
+ showGuidelines(rte);
+ alert("["+searchFor+"] "+lblSearchNotFound);
+ }
+}
+
+function showHideElement(element, showHide, rePosition){
+ //function to show or hide elements
+ //element variable can be string or object
+ if(document.getElementById(element)){
+ element = document.getElementById(element);
+ }
+ if(showHide == "show"){
+ element.style.visibility = "visible";
+ if(rePosition){
+ element.style.position = "relative";
+ element.style.left = "auto";
+ element.style.top = "auto";
+ }
+ }else if(showHide == "hide"){
+ element.style.visibility = "hidden";
+ if(rePosition){
+ element.style.position = "absolute";
+ element.style.left = "-1000px";
+ element.style.top = "-1000px";
+ }
+ }
+}
+
+function setRange(rte){
+ //function to store range of current selection
+ var oRTE = returnRTE(rte);
+ var selection;
+ if(document.all){
+ selection = oRTE.document.selection;
+ if(selection != null){
+ rng = selection.createRange();
+ }
+ }else{
+ selection = oRTE.getSelection();
+ rng = selection.getRangeAt(selection.rangeCount - 1).cloneRange();
+ }
+ return rng;
+}
+
+function stripHTML(strU) {
+ //strip all html
+ var strN = strU.replace(/(<([^>]+)>)/ig,"");
+ //replace carriage returns and line feeds
+ strN = strN.replace(/\r\n/g," ");
+ strN = strN.replace(/\n/g," ");
+ strN = strN.replace(/\r/g," ");
+ strN = trim(strN);
+ return strN;
+}
+
+function trim(inputString) {
+ if (typeof inputString != "string"){
+ return inputString;
+ }
+ inputString = inputString.replace(/^\s+|\s+$/g, "").replace(/\s{2,}/g, "");
+ return inputString;
+}
+
+function showGuidelines(rte) {
+ if(rte.length == 0) rte = currentRTE;
+ var oRTE = returnRTE(rte);
+ var tables = oRTE.document.getElementsByTagName("table");
+ var sty = "dashed 1px "+zeroBorder;
+ for(var i=0; i<tables.length; i++){
+ if(tables[i].getAttribute("border") == 0){
+ if(document.all){
+ var trs = tables[i].getElementsByTagName("tr");
+ for(var j=0; j<trs.length; j++){
+ var tds = trs[j].getElementsByTagName("td");
+ for(var k=0; k<tds.length; k++){
+ if(j == 0 && k == 0){
+ tds[k].style.border = sty;
+ }else if(j == 0 && k != 0){
+ tds[k].style.borderBottom = sty;
+ tds[k].style.borderTop = sty;
+ tds[k].style.borderRight = sty;
+ }else if(j != 0 && k == 0) {
+ tds[k].style.borderBottom = sty;
+ tds[k].style.borderLeft = sty;
+ tds[k].style.borderRight = sty;
+ }else if(j != 0 && k != 0) {
+ tds[k].style.borderBottom = sty;
+ tds[k].style.borderRight = sty;
+ }
+ }
+ }
+ }else{
+ tables[i].removeAttribute("border");
+ tables[i].setAttribute("style","border: " + sty);
+ tables[i].setAttribute("rules", "all");
+ }
+ }
+ }
+}
+
+function stripGuidelines(rte) {
+ var oRTE = returnRTE(rte);
+ var tbls = oRTE.document.getElementsByTagName("table");
+ for(var j=0; j<tbls.length; j++) {
+ if(tbls[j].getAttribute("border") == 0 || tbls[j].getAttribute("border") == null){
+ if(document.all) {
+ var tds = tbls[j].getElementsByTagName("td");
+ for(var k=0; k<tds.length; k++) {
+ tds[k].removeAttribute("style");
+ }
+ } else {
+ tbls[j].removeAttribute("style");
+ tbls[j].removeAttribute("rules");
+ tbls[j].setAttribute("border","0");
+ }
+ }
+ }
+}
+
+function findSize(obj) {
+ if(obj.length > 0 && document.all) {
+ obj = frames[obj];
+ } else if(obj.length > 0 && !document.all) {
+ obj = document.getElementById(obj).contentWindow;
+ } else {
+ obj = this;
+ }
+ if ( typeof( obj.window.innerWidth ) == 'number' ) {
+ //Non-IE
+ obj_width = obj.window.innerWidth;
+ obj_height = obj.window.innerHeight;
+ } else if( obj.document.documentElement && ( obj.document.documentElement.clientWidth || obj.document.documentElement.clientHeight ) ) {
+ //IE 6+ in 'standards compliant mode'
+ obj_width = document.documentElement.clientWidth;
+ obj_height = document.documentElement.clientHeight;
+ } else if( obj.document.body && ( obj.document.body.clientWidth || obj.document.body.clientHeight ) ) {
+ //IE 4 compatible
+ obj_width = obj.document.body.clientWidth;
+ obj_height = obj.document.body.clientHeight;
+ }
+}
+
+function resizeRTE() {
+ document.body.style.overflow = "hidden";
+ var rte = currentRTE;
+ var oRTE = document.getElementById(rte);
+ var oBut1 = document.getElementById('Buttons1_'+rte);
+ var oBut2;
+ var oVS = document.getElementById('vs'+rte);
+ findSize("");
+ width = obj_width;
+ if (width < minWidth){
+ document.body.style.overflow = "auto";
+ width = minWidth;
+ }
+ var height = obj_height - 83;
+ if (document.getElementById("_xtSrc"+rte).innerHTML == lblModeRichText){
+ height = obj_height-28;
+ if (!document.getElementById('Buttons2_'+rte) && width < wrapWidth) {
+ document.body.style.overflow = "auto";
+ width = wrapWidth;
+ }
+ if (document.getElementById('Buttons2_'+rte)){
+ document.getElementById('Buttons2_'+rte).style.width = width;
+ }
+ } else {
+ if (document.getElementById('Buttons2_'+rte)) {
+ document.getElementById('Buttons2_'+rte).style.width = width;
+ } else {
+ height = obj_height - 55;
+ if(width < wrapWidth){
+ document.body.style.overflow = "auto";
+ width = wrapWidth;
+ }
+ }
+ }
+ if(document.body.style.overflow == "auto" && isIE){
+ height = height-18;
+ }
+ if(document.body.style.overflow == "auto" && !isIE){
+ height = height-24;
+ }
+ oBut1.style.width = width;
+ oVS.style.width = width;
+ oRTE.style.width = width-2;
+ oRTE.style.height = height;
+ if(!document.all){
+ oRTE.contentDocument.designMode = "on";
+ }
+}
+
+function replaceIt(string,text,by) {
+ // CM 19/10/04 custom replace function
+ var strLength = string.length, _xtLength = text.length;
+ if ((strLength == 0) || (_xtLength == 0)){
+ return string;
+ }
+ var i = string.indexOf(text);
+ if ((!i) && (text != string.substring(0,_xtLength))){
+ return string;
+ }
+ if(i == -1){
+ return string;
+ }
+ var newstr = string.substring(0,i) + by;
+ if(i+_xtLength < strLength){
+ newstr += replaceIt(string.substring(i+_xtLength,strLength),text,by);
+ }
+ return newstr;
+}
+
+function countWords(rte){
+ parseRTE(rte);
+ var words = document.getElementById("hdn"+rte).value;
+ var str = stripHTML(words);
+ var chars = trim(words);
+ chars = chars.length;
+ chars = maxchar - chars;
+ str = str+" a "; // word added to avoid error
+ str = trim(str.replace(/ /gi,' ').replace(/([\n\r\t])/g,' ').replace(/&(.*);/g,' '));
+ var count = 0;
+ for(x=0;x<str.length;x++){
+ if(str.charAt(x)==" " && str.charAt(x-1)!=" "){
+ count++;
+ }
+ }
+ if(str.charAt(str.length-1) != " "){
+ count++;
+ }
+ count = count - 1; // extra word removed
+ var alarm = "";
+ if(chars<0){
+ alarm = "\n\n"+lblCountCharWarn;
+ }
+ alert(lblCountTotal+": "+count+ "\n\n"+lblCountChar+": "+chars+alarm);
+}
+
+//********************
+// Non-designMode() Functions
+//********************
+function autoBRon(rte) {
+ // CM 19/10/04 used for non RTE browsers to deal with auto <BR> (and clean up other muck)
+ var oRTE = document.forms[0].elements[rte];
+ oRTE.value=parseBreaks(oRTE.value);
+ oRTE.value=replaceIt(oRTE.value,''','\'');
+}
+
+function autoBRoff(rte) {
+ // CM 19/10/04 used for non RTE browsers to deal with auto <BR> (auto carried out when the form is submitted)
+ var oRTE = document.forms[0].elements[rte];
+ oRTE.value=replaceIt(oRTE.value,'\n','<br />');
+ oRTE.value=replaceIt(oRTE.value,'\'',''');
+}
+
+function parseBreaks(argIn) {
+ // CM 19/10/04 used for non RTE browsers to deal with auto <BR> (and clean up other muck)
+ argIn=replaceIt(argIn,'<br>','\n');
+ argIn=replaceIt(argIn,'<BR>','\n');
+ argIn=replaceIt(argIn,'<br/>','\n');
+ argIn=replaceIt(argIn,'<br />','\n');
+ argIn=replaceIt(argIn,'\t',' ');
+ argIn=replaceIt(argIn,'\n ','\n');
+ argIn=replaceIt(argIn,' <p>','<p>');
+ argIn=replaceIt(argIn,'</p><p>','\n\n');
+ argIn=replaceIt(argIn,''','\'');
+ argIn = trim(argIn);
+ return argIn;
+}
+
+//********************
+//Gecko-Only Functions
+//********************
+function geckoKeyPress(evt) {
+ //function to add bold, italic, and underline shortcut commands to gecko RTEs
+ //contributed by Anti Veeranna (thanks Anti!)
+ var rte = evt.target.id;
+ if (evt.ctrlKey) {
+ var key = String.fromCharCode(evt.charCode).toLowerCase();
+ var cmd = '';
+ switch (key) {
+ case 'b': cmd = "bold"; break;
+ case 'i': cmd = "italic"; break;
+ case 'u': cmd = "underline"; break;
+ }
+ if (cmd) {
+ rteCommand(rte, cmd, null);
+ // stop the event bubble
+ evt.preventDefault();
+ evt.stopPropagation();
+ }
+ }
+}
+
+//*****************
+//IE-Only Functions
+//*****************
+function checkspell() {
+ dlgCleanUp();
+ //function to perform spell check
+ try {
+ var tmpis = new ActiveXObject("ieSpell.ieSpellExtension");
+ tmpis.CheckAllLinkedDocuments(document);
+ }
+ catch(exception) {
+ if(exception.number==-2146827859) {
+ if(confirm("ieSpell not detected. Click Ok to go to download page.")){
+ window.open("http://www.iespell.com/download.php","DownLoad");
+ }
+ }else{
+ alert("Error Loading ieSpell: Exception " + exception.number);
+ }
+ }
+}
--- /dev/null
+
+var minWidth=640;var wrapWidth=1245;var maxchar=64000;var lang="en";var lang_direction="ltr";var encoding="utf-8";var zeroBorder="#c0c0c0";var btnText="submit";var resize_fullsrcreen=true;var keep_absolute=true;var InsertChar;var InsertTable;var InsertLink;var InsertImg;var dlgReplace;var dlgPasteText;var dlgPasteWord;var ua=navigator.userAgent.toLowerCase();var isIE=((ua.indexOf("msie")!=-1)&&(ua.indexOf("opera")==-1)&&(ua.indexOf("webtv")==-1))?true:false;var isIE7=((isIE)&&(ua.indexOf("msie 7.")!=-1))?true:false;var isGecko=(ua.indexOf("gecko")!=-1)?true:false;var isSafari=(ua.indexOf("safari")!=-1)?true:false;var safariVersion=parseFloat(ua.substring(ua.lastIndexOf("safari/")+7));var isKonqueror=(ua.indexOf("konqueror")!=-1)?true:false;var rng;var currentRTE;var allRTEs="";var obj_width;var obj_height;var imagesPath;var includesPath;var cssFile;var generateXHTML=true;var isRichText=false;if(document.getElementById&&document.designMode){isRichText=true;}else if((isSafari&&safariVersion>=312)||isKonqueror){isRichText=true;};var replacements=new Array(new RegExp(String.fromCharCode(145),'g'),"'",new RegExp(String.fromCharCode(146),'g'),"'",new RegExp("'"),"'",new RegExp(String.fromCharCode(147),'g'),"\"",new RegExp(String.fromCharCode(148),'g'),"\"",new RegExp("[\r\n]",'g')," ");function rteSafe(html){html=trim(html);for(i=0;i<replacements.length;i=i+2){html=html.replace(replacements[i],replacements[i+1]);};return html;};function initRTE(imgPath,incPath,css,genXHTML){if(arguments.length==3){genXHTML=generateXHTML;};imagesPath=imgPath;includesPath=incPath;cssFile=css;generateXHTML=genXHTML;if(isRichText){document.writeln('<style type="text/css">@import "'+includesPath+'rte.css";</style>');};if(!isIE){minWidth=minWidth-48;wrapWidth=wrapWidth-102;}};function writeRichText(rte,html,css,width,height,buttons,readOnly,fullscreen){currentRTE=rte;if(allRTEs.length>0){allRTEs+=";";};allRTEs+=rte;html=replaceIt(html,'\'',''');if(arguments.length==6){fullscreen=false;readOnly=buttons;buttons=height;height=width;width=css;css="";};var iconWrapWidth=wrapWidth;var tablewidth;if(readOnly){buttons=false;};if(fullscreen){readOnly=false;buttons=true;if(isRichText&&resize_fullsrcreen){window.onresize=resizeRTE;};document.body.style.margin="0px";document.body.style.overflow="hidden";findSize("");width=obj_width;if(width<iconWrapWidth){height=(obj_height-83);}else{height=(obj_height-55);};if(width<minWidth){document.body.style.overflow="auto";if(isIE){height=obj_height-22;}else{height=obj_height-24;};width=minWidth;};tablewidth=width;}else{fullscreen=false;iconWrapWidth=iconWrapWidth-25;if(buttons&&(width<minWidth)){width=minWidth;};if(isIE){tablewidth=width;}else{tablewidth=width+4;}};if(isRichText){var rte_css="";if(css.length>0){rte_css=css;}else{rte_css=cssFile;};document.writeln('<span class="rteDiv">');if(buttons){document.writeln('<table class="rteBk" cellpadding=0 cellspacing=0 id="Buttons1_'+rte+'" width="'+tablewidth+'">');document.writeln('<tbody><tr>');insertBar();if(fullscreen){document.writeln('<td><input type=image class="rteImg" src="'+imagesPath+'save.gif" alt="'+lblSave+'" title="'+lblSave+'" onmouseover="this.className=\'rteImgUp\'" onmouseout="this.className=\'rteImg\'" onmousedown="this.className=\'rteImgDn\'" onmouseup="this.className=\'rteImgUp\'"></td>');};if(!isSafari&&!isKonqueror){insertImg(lblPrint,"print.gif","rtePrint('"+rte+"')");insertSep();insertImg(lblSelectAll,"selectall.gif","toggleSelection('"+rte+"')");insertImg(lblUnformat,"unformat.gif","rteCommand('"+rte+"','removeformat')");insertSep();};if(isIE||isSafari||isKonqueror){insertImg(lblCut,"cut.gif","rteCommand('"+rte+"','cut')");insertImg(lblCopy,"copy.gif","rteCommand('"+rte+"','copy')");};if(isSafari||isKonqueror)insertImg(lblPaste,"paste.gif","rteCommand('"+rte+"','InsertText')");if(isIE)insertImg(lblPaste,"paste.gif","rteCommand('"+rte+"','paste')");if(!isSafari&&!isKonqueror){insertImg(lblPasteText,"pastetext.gif","dlgLaunch('"+rte+"','text')");insertImg(lblPasteWord,"pasteword.gif","dlgLaunch('"+rte+"','word')");};insertSep();insertImg(lblUndo,"undo.gif","rteCommand('"+rte+"','undo')");insertImg(lblRedo,"redo.gif","rteCommand('"+rte+"','redo')");if(!isSafari&&!isKonqueror){insertSep();document.writeln('<td>');document.writeln('<select id="formatblock_'+rte+'" onchange="selectFont(\''+rte+'\', this.id);return false" style="font-size:14px;width:105px;height:20px;margin:1px;">');document.writeln(lblFormat);document.writeln('</select></td><td>');document.writeln('<select id="fontname_'+rte+'" onchange="selectFont(\''+rte+'\', this.id);return false" style="font-size:14px;width:125px;height:20px;margin:1px;">');document.writeln(lblFont);document.writeln('</select></td><td>');document.writeln('<select unselectable="on" id="fontsize_'+rte+'" onchange="selectFont(\''+rte+'\', this.id);return false" style="font-size:14px;width:75px;height:20px;margin:1px;">');document.writeln(lblSize);document.writeln('</select></td>');};if(tablewidth<iconWrapWidth){document.writeln('<td width="100%"></td></tr></tbody></table>');document.writeln('<table class="rteBk" cellpadding="0" cellspacing="0" id="Buttons2_'+rte+'" width="'+tablewidth+'">');document.writeln('<tbody><tr>');};insertBar();insertImg(lblBold,"bold.gif","rteCommand('"+rte+"','bold')");insertImg(lblItalic,"italic.gif","rteCommand('"+rte+"','italic')");insertImg(lblUnderline,"underline.gif","rteCommand('"+rte+"','underline')");insertSep();insertImg(lblAlgnLeft,"left_just.gif","rteCommand('"+rte+"','justifyleft')");insertImg(lblAlgnCenter,"centre.gif","rteCommand('"+rte+"','justifycenter')");insertImg(lblAlgnRight,"right_just.gif","rteCommand('"+rte+"','justifyright')");insertImg(lblJustifyFull,"justifyfull.gif","rteCommand('"+rte+"','justifyfull')");if(!isSafari&&!isKonqueror){insertSep();insertImg(lblOL,"numbered_list.gif","rteCommand('"+rte+"','insertorderedlist')");insertImg(lblUL,"list.gif","rteCommand('"+rte+"','insertunorderedlist')");insertImg(lblOutdent,"outdent.gif","rteCommand('"+rte+"','outdent')");insertImg(lblIndent,"indent.gif","rteCommand('"+rte+"','indent')");insertSep();insertImg(lblTextColor,"textcolor.gif","dlgColorPalette('"+rte+"','forecolor')","forecolor_"+rte);insertImg(lblBgColor,"bgcolor.gif","dlgColorPalette('"+rte+"','hilitecolor')","hilitecolor_"+rte);insertSep();insertImg(lblHR,"hr.gif","rteCommand('"+rte+"','inserthorizontalrule')");insertSep();insertImg(lblInsertChar,"special_char.gif","dlgLaunch('"+rte+"','char')");insertImg(lblInsertLink,"hyperlink.gif","dlgLaunch('"+rte+"','link')");insertImg(lblAddImage,"image.gif","dlgLaunch('"+rte+"','image')");insertImg(lblInsertTable,"insert_table.gif","dlgLaunch('"+rte+"','table')");};insertSep();if(!isSafari&&!isKonqueror)insertImg(lblSearch,"replace.gif","dlgLaunch('"+rte+"','replace')");insertImg(lblWordCount,"word_count.gif","countWords('"+rte+"')");if(isIE)insertImg(lblSpellCheck,"spellcheck.gif","checkspell()");document.writeln('<td width="100%"></td></tr></tbody></table>');};document.writeln('<iframe id="'+rte+'" width="'+(tablewidth-2)+'px" height="'+height+'px" frameborder=0 style="border: 1px solid #d2d2d2" src="'+includesPath+'blank.htm" onfocus="dlgCleanUp();"></iframe>');if(!readOnly){document.writeln('<table id="vs'+rte+'" name="vs'+rte+'" class="rteBk" cellpadding=0 cellspacing=0 border=0 width="'+tablewidth+'"><tr>');document.writeln('<td onclick="toggleHTMLSrc(\''+rte+'\', '+buttons+');" nowrap><img class="rteBar" src="'+imagesPath+'bar.gif" alt="" align=absmiddle><span id="imgSrc'+rte+'"><img src="'+imagesPath+'code.gif" alt="" title="" style="margin:1px;" align=absmiddle></span><span id="_xtSrc'+rte+'" style="font-family:tahoma,sans-serif;font-size:12px;color:#0000ff;CURSOR: default;">'+lblModeHTML+'</span></td>');document.writeln('<td width="100%" nowrap> </td></tr></table>');};document.writeln('<iframe width="142" height="98" id="cp'+rte+'" src="'+includesPath+'palette.htm" scrolling="no" frameborder=0 style="margin:0;border:0;visibility:hidden;position:absolute;border:1px solid #cdcdcd;top:-1000px;left:-1000px"></iframe>');document.writeln('<input type="hidden" id="hdn'+rte+'" name="'+rte+'" value="" style="position: absolute;left:-1000px;top:-1000px;">');if(!fullscreen){document.writeln('<input type="hidden" id="size'+rte+'" name="size'+rte+'" value="'+height+'" style="position: absolute;left:-1000px;top:-1000px;">');};document.writeln('</span>');document.getElementById('hdn'+rte).value=html;enableDesignMode(rte,html,rte_css,readOnly);}else{buttons=false;if(fullscreen&&height>90){height=(height-75);tablewidth=tablewidth-30;};html=parseBreaks(html);document.writeln('<div style="font:12px Verdana, Arial, Helvetica, sans-serif;width: '+tablewidth+'px;padding:15px;">');if(!readOnly){document.writeln('<div style="color:gray">'+lblnon_designMode+'</div><br>');document.writeln('<input type="radio" name="'+rte+'_autobr" value="1" checked="checked" onclick="autoBRon(\'' + rte + '\');" /> '+lblAutoBR+'<input type="radio" name="'+rte+'_autobr" value="0" onclick="autoBRoff(\'' + rte + '\');" />'+lblRawHTML+'<br>');document.writeln('<textarea name="'+rte+'" id="'+rte+'" style="width: '+tablewidth+'px; height: '+height+'px;">'+html+'</textarea>');}else{document.writeln('<textarea name="'+rte+'" id="'+rte+'" style="width: '+tablewidth+'px; height: '+height+'px;" readonly=readonly>'+html+'</textarea>');};if(fullscreen)document.writeln('<br><input type="submit" value="'+btnText+'" />');document.writeln('</div>');}};function insertBar(){document.writeln('<td><img class="rteBar" src="'+imagesPath+'bar.gif" alt=""></td>');};function insertSep(){document.writeln('<td><img class="rteSep" src="'+imagesPath+'blackdot.gif" alt=""></td>');};function insertImg(name,image,command,id){var td="<td>";if(id!=null){td="<td id='"+id+"'>";};document.writeln(td+'<img class="rteImg" src="'+imagesPath+image+'" alt="'+name+'" title="'+name+'" onMouseDown="'+command+';return false" onmouseover="this.className=\'rteImgUp\'" onmouseout="this.className=\'rteImg\'" onmousedown="this.className=\'rteImgDn\'" onmouseup="this.className=\'rteImgUp\'"></td>');};function enableDesignMode(rte,html,css,readOnly){var frameHtml="<html dir='"+lang_direction+"' lang='"+lang+"' id='"+rte+"'>\n<head>\n";frameHtml+="<meta http-equiv='Content-Type' content='text/html; charset="+encoding+"'>\n";frameHtml+="<meta http-equiv='Content-Language' content='"+lang+"'>\n";if(css.length>0){frameHtml+="<link media=\"all\" type=\"text/css\" href=\"" + css + "\" rel=\"stylesheet\">\n";}else{frameHtml+="<style>@charset \"utf-8\"; body {background:#FFFFFF;margin:8px;padding:0px;};</style>\n";};frameHtml+="</head><body>\n"+html+"\n</body></html>";if(!isSafari&&!isKonqueror)var oRTE=returnRTE(rte).document;if(document.all){if(isSafari||isKonqueror)var oRTE=frames[rte].document;oRTE.open("text/html","replace");oRTE.write(frameHtml);oRTE.close();if(!readOnly){oRTE.designMode="On";}}else{try{if(!readOnly&&!isKonqueror&&!isSafari){addLoadEvent(function(){document.getElementById(rte).contentDocument.designMode="on";});}else if(!readOnly){if(!readOnly)document.getElementById(rte).contentDocument.designMode="on";};try{if(isSafari||isKonqueror)var oRTE=document.getElementById(rte).contentWindow.document;oRTE.open("text/html","replace");oRTE.write(frameHtml);oRTE.close();if(isGecko&&!readOnly){oRTE.addEventListener("keypress",geckoKeyPress,true);oRTE.addEventListener("focus",function(){dlgCleanUp();},false);}}catch(e){alert(lblErrorPreload);}}catch(e){if(isGecko){setTimeout("enableDesignMode('"+rte+"', '"+html+"', '"+css+"', "+readOnly+");",200);}else{return false;}}};setTimeout('showGuidelines("'+rte+'")',300);};function addLoadEvent(func){var oldonload=window.onload;if(typeof window.onload!='function'){window.onload=func;}else{window.onload=function(){oldonload();func();};}};function returnRTE(rte){var rtn;if(document.all){rtn=frames[rte];}else{rtn=document.getElementById(rte).contentWindow;};return rtn;};function updateRTE(rte){if(isRichText){dlgCleanUp();stripGuidelines(rte);};parseRTE(rte);};function updateRTEs(){var vRTEs=allRTEs.split(";");for(var i=0;i<vRTEs.length;i++){updateRTE(vRTEs[i]);}};function parseRTE(rte){if(!isRichText){autoBRoff(rte);return false;};var readOnly=false;var oRTE=returnRTE(rte);if(document.all){if(oRTE.document.designMode!="On"){readOnly=true;}}else{if(oRTE.document.designMode!="on"){readOnly=true;}};if(isRichText&&!readOnly){if(document.getElementById("_xtSrc"+rte).innerHTML==lblModeRichText){if(document.getElementById("Buttons1_"+rte)){toggleHTMLSrc(rte,true);}else{toggleHTMLSrc(rte,false);};stripGuidelines(rte);};setHiddenVal(rte);}};function setHiddenVal(rte){var oHdnField=document.getElementById('hdn'+rte);if(oHdnField.value==null){oHdnField.value="";};var sRTE=returnRTE(rte).document.body;if(generateXHTML){try{oHdnField.value=getXHTML(sRTE.innerHTML);}catch(e){oHdnField.value=sRTE.innerHTML;}}else{oHdnField.value=sRTE.innerHTML;};oHdnField.value=replaceSpecialChars(oHdnField.value);if(stripHTML(oHdnField.value.replace(" "," "))==""&&oHdnField.value.toLowerCase().search("<hr")==-1&&oHdnField.value.toLowerCase().search("<img")==-1){oHdnField.value="";}};function rteCommand(rte,command,option){dlgCleanUp();var oRTE=returnRTE(rte);try{oRTE.focus();oRTE.document.execCommand(command,false,option);oRTE.focus();}catch(e){}};function toggleHTMLSrc(rte,buttons){dlgCleanUp();var cRTE=document.getElementById(rte);var hRTE=document.getElementById('hdn'+rte);var sRTE=document.getElementById("size"+rte);var tRTE=document.getElementById("_xtSrc"+rte);var iRTE=document.getElementById("imgSrc"+rte);var oRTE=returnRTE(rte).document;var htmlSrc;if(sRTE){obj_height=parseInt(sRTE.value);}else{findSize(rte);};if(tRTE.innerHTML==lblModeHTML){tRTE.innerHTML=lblModeRichText;stripGuidelines(rte);if(buttons){showHideElement("Buttons1_"+rte,"hide",true);if(document.getElementById("Buttons2_"+rte)){showHideElement("Buttons2_"+rte,"hide",true);cRTE.style.height=obj_height+56;}else{cRTE.style.height=obj_height+28;}};setHiddenVal(rte);if(document.all){oRTE.body.innerText=hRTE.value;}else{htmlSrc=oRTE.createTextNode(hRTE.value);oRTE.body.innerHTML="";oRTE.body.appendChild(htmlSrc);};iRTE.innerHTML='<img src="'+imagesPath+'design.gif" alt="Switch Mode" style="margin:1px;" align=absmiddle>';}else{obj_height=parseInt(cRTE.style.height);tRTE.innerHTML=lblModeHTML;if(buttons){showHideElement("Buttons1_"+rte,"show",true);if(document.getElementById("Buttons2_"+rte)){showHideElement("Buttons2_"+rte,"show",true);cRTE.style.height=obj_height-56;}else{cRTE.style.height=obj_height-28;}};if(document.all){var output=escape(oRTE.body.innerText);output=output.replace("%3CP%3E%0D%0A%3CHR%3E","%3CHR%3E");output=output.replace("%3CHR%3E%0D%0A%3C/P%3E","%3CHR%3E");oRTE.body.innerHTML=unescape(output);if(!keep_absolute){var tagfix=unescape(output).match(/<a[^>]*href=(['"])([^\1>]*)\1[^>]*>/ig);var coll=oRTE.body.all.tags('A');for(i=0;i<coll.length;i++){coll[i].href=tagfix[i].replace(/.*href=(['"])([^\1]*)\1.*/i,"$2");};var imgfix=unescape(output).match(/<img[^>]*src=['"][^'"]*['"][^>]*>/ig);var coll2=oRTE.body.all.tags('IMG');for(i=0;i<coll2.length;i++){coll2[i].src=imgfix[i].replace(/.*src=['"]([^'"]*)['"].*/i,"$1");}}}else{htmlSrc=oRTE.body.ownerDocument.createRange();htmlSrc.selectNodeContents(oRTE.body);oRTE.body.innerHTML=htmlSrc.toString();};oRTE.body.innerHTML=replaceSpecialChars(oRTE.body.innerHTML);showGuidelines(rte);if(document.all){parseRTE(rte);};iRTE.innerHTML='<img src="'+imagesPath+'code.gif" alt="Switch Mode" style="margin:1px;" align=absmiddle>';}};function toggleSelection(rte){var rng=setRange(rte);var oRTE=returnRTE(rte).document;var length1;var length2;if(document.all){length1=rng.text.length;var output=escape(oRTE.body.innerText);output=output.replace("%3CP%3E%0D%0A%3CHR%3E","%3CHR%3E");output=output.replace("%3CHR%3E%0D%0A%3C/P%3E","%3CHR%3E");length2=unescape(output).length;}else{length1=rng.toString().length;var htmlSrc=oRTE.body.ownerDocument.createRange();htmlSrc.selectNodeContents(oRTE.body);length2=htmlSrc.toString().length;};if(length1<length2){rteCommand(rte,'selectall','');}else{if(!document.all){oRTE.designMode="off";oRTE.designMode="on";}else{rteCommand(rte,'unselect','');}}};function dlgColorPalette(rte,command){setRange(rte);var oDialog=document.getElementById('cp'+rte);var buttonElement=document.getElementById(command+"_"+rte);var iLeftPos=buttonElement.offsetLeft+5;var iTopPos=buttonElement.offsetTop+53;if(!document.getElementById('Buttons2_'+rte)){iTopPos=iTopPos-28;};oDialog.style.left=iLeftPos+"px";oDialog.style.top=iTopPos+"px";if((command==parent.command)&&(rte==currentRTE)){if(oDialog.style.visibility=="hidden"){showHideElement(oDialog,'show',false);}else{showHideElement(oDialog,'hide',false);}}else{var vRTEs=allRTEs.split(";");for(var i=0;i<vRTEs.length;i++){showHideElement('cp'+vRTEs[i],'hide',false);};showHideElement(oDialog,'show',false);};currentRTE=rte;parent.command=command;};function dlgLaunch(rte,command){var selectedText='';parent.command=command;currentRTE=rte;switch(command){case "char":InsertChar=popUpWin(includesPath+'insert_char.htm','InsertChar',50,50,'status=yes,');break;case "table":InsertTable=popUpWin(includesPath+'insert_table.htm','InsertTable',50,50,'status=yes,');break;case "image":setRange(rte);parseRTE(rte);InsertImg=popUpWin(includesPath+'insert_img.htm','AddImage',50,50,'status=yes,');break;case "link":selectedText=getText(rte);InsertLink=popUpWin(includesPath+'insert_link.htm','InsertLink',50,50,'status=yes,');setFormText("0",selectedText);break;case "replace":selectedText=getText(rte);dlgReplace=popUpWin(includesPath+'replace.htm','dlgReplace',50,50,'status=yes,');setFormText("1",selectedText);break;case "text":dlgPasteText=popUpWin(includesPath+'paste_text.htm','dlgPasteText',50,50,'status=yes,');break;case "word":dlgPasteWord=popUpWin(includesPath+'paste_word.htm','dlgPasteWord',50,50,'status=yes,');break;}};function getText(rte){setRange(rte);var rtn='';if(isIE){rtn=stripHTML(rng.htmlText);}else{rtn=stripHTML(rng.toString());};parseRTE(rte);if(document.all){rtn=rtn.replace("'","\\\\\\'");}else{rtn=rtn.replace("'","\\'");};return rtn;};function setFormText(popup,content){if(content!="undefined"){try{switch(popup){case "0":InsertLink.document.getElementById("linkText").value=content;break;case "1":dlgReplace.document.getElementById("searchText").value=content;break;}}catch(e){setTimeout("setFormText('"+popup+"','"+content+"');",10);}}};function dlgCleanUp(){var vRTEs=allRTEs.split(";");for(var i=0;i<vRTEs.length;i++){showHideElement('cp'+vRTEs[i],'hide',false);};if(InsertChar!=null){InsertChar.close();InsertChar=null;};if(InsertTable!=null){InsertTable.close();InsertTable=null;};if(InsertLink!=null){InsertLink.close();InsertLink=null;};if(InsertImg!=null){InsertImg.close();InsertImg=null;};if(dlgReplace!=null){dlgReplace.close();dlgReplace=null;};if(dlgPasteText!=null){dlgPasteText.close();dlgPasteText=null;};if(dlgPasteWord!=null){dlgPasteWord.close();dlgPasteWord=null;}};function popUpWin(url,win,width,height,options){dlgCleanUp();var leftPos=(screen.availWidth-width)/2;var topPos=(screen.availHeight-height)/2;options+='width='+width+',height='+height+',left='+leftPos+',top='+topPos;return window.open(url,win,options);};function setColor(color){var rte=currentRTE;var parentCommand=parent.command;if(document.all){if(parentCommand=="hilitecolor"){parentCommand="backcolor";};rng.select();};rteCommand(rte,parentCommand,color);showHideElement('cp'+rte,"hide",false);};function addImage(rte){dlgCleanUp();imagePath=prompt('Enter Image URL:','http://');if((imagePath!=null)&&(imagePath!="")){rteCommand(rte,'InsertImage',imagePath);}};function rtePrint(rte){dlgCleanUp();if(isIE){document.getElementById(rte).contentWindow.document.execCommand('Print');}else{document.getElementById(rte).contentWindow.print();}};function selectFont(rte,selectname){var idx=document.getElementById(selectname).selectedIndex;if(idx!=0){var selected=document.getElementById(selectname).options[idx].value;var cmd=selectname.replace('_'+rte,'');rteCommand(rte,cmd,selected);document.getElementById(selectname).selectedIndex=0;}};function insertHTML(html){var rte=currentRTE;var oRTE=returnRTE(rte);oRTE.focus();if(document.all){var oRng=oRTE.document.selection.createRange();oRng.pasteHTML(html);oRng.collapse(false);oRng.select();}else{oRTE.document.execCommand('insertHTML',false,html);}};function replaceHTML(tmpContent,searchFor,replaceWith){var runCount=0;var intBefore=0;var intAfter=0;var tmpOutput="";while(tmpContent.toUpperCase().indexOf(searchFor.toUpperCase())>-1){runCount=runCount+1;intBefore=tmpContent.toUpperCase().indexOf(searchFor.toUpperCase());tmpBefore=tmpContent.substring(0,intBefore);tmpOutput=tmpOutput+tmpBefore;tmpOutput=tmpOutput+replaceWith;intAfter=tmpContent.length-searchFor.length+1;tmpContent=tmpContent.substring(intBefore+searchFor.length);};return runCount+"|^|"+tmpOutput+tmpContent;};function replaceSpecialChars(html){var specials=new Array("¢","€","£","¤","¥","©","®","™","÷","×","±","¼","½","¾","°","¹","²","³","µ","«","»","‘","’","‹","›","‚","„","“","”","¡","¦","§","¬","¯","¶","·","¸","¿","ƒ","—","–","•","…","‰","ª","º","ß","†","‡","ð","Ð","ø","Ø","þ","Þ","œ","Œ","š","Š","´","ˆ","˜","¨","à","á","â","ã","ä","å","æ","À","Á","Â","Ã","Ä","Å","Æ","ç","Ç","è","é","ê","ë","È","É","Ê","Ë","ì","í","î","ï","Ì","Í","Î","Ï","ñ","Ñ","ò","ó","ô","õ","ö","Ò","Ó","Ô","Õ","Ö","ù","ú","û","ü","Ù","Ú","Û","Ü","ý","ÿ","Ý","Ÿ");var unicodes=new Array("\u00a2","\u20ac","\u00a3","\u00a4","\u00a5","\u00a9","\u00ae","\u2122","\u00f7","\u00d7","\u00b1","\u00bc","\u00bd","\u00be","\u00b0","\u00b9","\u00b2","\u00b3","\u00b5","\u00ab","\u00bb","\u2018","\u2019","\u2039","\u203a","\u201a","\u201e","\u201c","\u201d","\u00a1","\u00a6","\u00a7","\u00ac","\u00af","\u00b6","\u00b7","\u00b8","\u00bf","\u0192","\u2014","\u2013","\u2022","\u2026","\u2030","\u00aa","\u00ba","\u00df","\u2020","\u2021","\u00f0","\u00d0","\u00f8","\u00d8","\u00fe","\u00de","\u0153","\u0152","\u0161","\u0160","\u00b4","\u02c6","\u02dc","\u00a8","\u00e0","\u00e1","\u00e2","\u00e3","\u00e4","\u00e5","\u00e6","\u00c0","\u00c1","\u00c2","\u00c3","\u00c4","\u00c5","\u00c6","\u00e7","\u00c7","\u00e8","\u00e9","\u00ea","\u00eb","\u00c8","\u00c9","\u00ca","\u00cb","\u00ec","\u00ed","\u00ee","\u00ef","\u00cc","\u00cd","\u00ce","\u00cf","\u00f1","\u00d1","\u00f2","\u00f3","\u00f4","\u00f5","\u00f6","\u00d2","\u00d3","\u00d4","\u00d5","\u00d6","\u00f9","\u00fa","\u00fb","\u00fc","\u00d9","\u00da","\u00db","\u00dc","\u00fd","\u00ff","\u00dd","\u0178");for(var i=0;i<specials.length;i++){html=replaceIt(html,unicodes[i],specials[i]);};return html;};function SearchAndReplace(searchFor,replaceWith,matchCase,wholeWord){var cfrmMsg=lblSearchConfirm.replace("SF",searchFor).replace("RW",replaceWith);var rte=currentRTE;stripGuidelines(rte);var oRTE=returnRTE(rte);var tmpContent=oRTE.document.body.innerHTML.replace("'","\'").replace('"','\"');var strRegex;if(matchCase&&wholeWord){strRegex="/(?!<[^>]*)(\\b("+searchFor+")\\b)(?![^<]*>)/g";}else if(matchCase){strRegex="/(?!<[^>]*)("+searchFor+")(?![^<]*>)/g";}else if(wholeWord){strRegex="/(?!<[^>]*)(\\b("+searchFor+")\\b)(?![^<]*>)/gi";}else{strRegex="/(?!<[^>]*)("+searchFor+")(?![^<]*>)/gi";};var cmpRegex=eval(strRegex);var runCount=0;var tmpNext=tmpContent;var intFound=tmpNext.search(cmpRegex);while(intFound>-1){runCount=runCount+1;tmpNext=tmpNext.substr(intFound+searchFor.length);intFound=tmpNext.search(cmpRegex);};if(runCount>0){cfrmMsg=cfrmMsg.replace("[RUNCOUNT]",runCount);if(confirm(cfrmMsg)){tmpContent=tmpContent.replace(cmpRegex,replaceWith);oRTE.document.body.innerHTML=tmpContent.replace("\'","'").replace('\"','"');}else{alert(lblSearchAbort);};showGuidelines(rte);}else{showGuidelines(rte);alert("["+searchFor+"] "+lblSearchNotFound);}};function showHideElement(element,showHide,rePosition){if(document.getElementById(element)){element=document.getElementById(element);};if(showHide=="show"){element.style.visibility="visible";if(rePosition){element.style.position="relative";element.style.left="auto";element.style.top="auto";}}else if(showHide=="hide"){element.style.visibility="hidden";if(rePosition){element.style.position="absolute";element.style.left="-1000px";element.style.top="-1000px";}}};function setRange(rte){var oRTE=returnRTE(rte);var selection;if(document.all){selection=oRTE.document.selection;if(selection!=null){rng=selection.createRange();}}else{selection=oRTE.getSelection();rng=selection.getRangeAt(selection.rangeCount-1).cloneRange();};return rng;};function stripHTML(strU){var strN=strU.replace(/(<([^>]+)>)/ig,"");strN=strN.replace(/\r\n/g," ");strN=strN.replace(/\n/g," ");strN=strN.replace(/\r/g," ");strN=trim(strN);return strN;};function trim(inputString){if(typeof inputString!="string"){return inputString;};inputString=inputString.replace(/^\s+|\s+$/g,"").replace(/\s{2,};/g,"");return inputString;};function showGuidelines(rte){if(rte.length==0)rte=currentRTE;var oRTE=returnRTE(rte);var tables=oRTE.document.getElementsByTagName("table");var sty="dashed 1px "+zeroBorder;for(var i=0;i<tables.length;i++){if(tables[i].getAttribute("border")==0){if(document.all){var trs=tables[i].getElementsByTagName("tr");for(var j=0;j<trs.length;j++){var tds=trs[j].getElementsByTagName("td");for(var k=0;k<tds.length;k++){if(j==0&&k==0){tds[k].style.border=sty;}else if(j==0&&k!=0){tds[k].style.borderBottom=sty;tds[k].style.borderTop=sty;tds[k].style.borderRight=sty;}else if(j!=0&&k==0){tds[k].style.borderBottom=sty;tds[k].style.borderLeft=sty;tds[k].style.borderRight=sty;}else if(j!=0&&k!=0){tds[k].style.borderBottom=sty;tds[k].style.borderRight=sty;}}}}else{tables[i].removeAttribute("border");tables[i].setAttribute("style","border: "+sty);tables[i].setAttribute("rules","all");}}}};function stripGuidelines(rte){var oRTE=returnRTE(rte);var tbls=oRTE.document.getElementsByTagName("table");for(var j=0;j<tbls.length;j++){if(tbls[j].getAttribute("border")==0||tbls[j].getAttribute("border")==null){if(document.all){var tds=tbls[j].getElementsByTagName("td");for(var k=0;k<tds.length;k++){tds[k].removeAttribute("style");}}else{tbls[j].removeAttribute("style");tbls[j].removeAttribute("rules");tbls[j].setAttribute("border","0");}}}};function findSize(obj){if(obj.length>0&&document.all){obj=frames[obj];}else if(obj.length>0&&!document.all){obj=document.getElementById(obj).contentWindow;}else{obj=this;};if(typeof(obj.window.innerWidth)=='number'){obj_width=obj.window.innerWidth;obj_height=obj.window.innerHeight;}else if(obj.document.documentElement&&(obj.document.documentElement.clientWidth||obj.document.documentElement.clientHeight)){obj_width=document.documentElement.clientWidth;obj_height=document.documentElement.clientHeight;}else if(obj.document.body&&(obj.document.body.clientWidth||obj.document.body.clientHeight)){obj_width=obj.document.body.clientWidth;obj_height=obj.document.body.clientHeight;}};function resizeRTE(){document.body.style.overflow="hidden";var rte=currentRTE;var oRTE=document.getElementById(rte);var oBut1=document.getElementById('Buttons1_'+rte);var oBut2;var oVS=document.getElementById('vs'+rte);findSize("");width=obj_width;if(width<minWidth){document.body.style.overflow="auto";width=minWidth;};var height=obj_height-83;if(document.getElementById("_xtSrc"+rte).innerHTML==lblModeRichText){height=obj_height-28;if(!document.getElementById('Buttons2_'+rte)&&width<wrapWidth){document.body.style.overflow="auto";width=wrapWidth;};if(document.getElementById('Buttons2_'+rte)){document.getElementById('Buttons2_'+rte).style.width=width;}}else{if(document.getElementById('Buttons2_'+rte)){document.getElementById('Buttons2_'+rte).style.width=width;}else{height=obj_height-55;if(width<wrapWidth){document.body.style.overflow="auto";width=wrapWidth;}}};if(document.body.style.overflow=="auto"&&isIE){height=height-18;};if(document.body.style.overflow=="auto"&&!isIE){height=height-24;};oBut1.style.width=width;oVS.style.width=width;oRTE.style.width=width-2;oRTE.style.height=height;if(!document.all){oRTE.contentDocument.designMode="on";}};function replaceIt(string,text,by){var strLength=string.length,_xtLength=text.length;if((strLength==0)||(_xtLength==0)){return string;};var i=string.indexOf(text);if((!i)&&(text!=string.substring(0,_xtLength))){return string;};if(i==-1){return string;};var newstr=string.substring(0,i)+by;if(i+_xtLength<strLength){newstr+=replaceIt(string.substring(i+_xtLength,strLength),text,by);};return newstr;};function countWords(rte){parseRTE(rte);var words=document.getElementById("hdn"+rte).value;var str=stripHTML(words);var chars=trim(words);chars=chars.length;chars=maxchar-chars;str=str+" a ";str=trim(str.replace(/ /gi,' ').replace(/([\n\r\t])/g,' ').replace(/&(.*);/g,' '));var count=0;for(x=0;x<str.length;x++){if(str.charAt(x)==" "&&str.charAt(x-1)!=" "){count++;}};if(str.charAt(str.length-1)!=" "){count++;};count=count-1;var alarm="";if(chars<0){alarm="\n\n"+lblCountCharWarn;};alert(lblCountTotal+": "+count+"\n\n"+lblCountChar+": "+chars+alarm);};function autoBRon(rte){var oRTE=document.forms[0].elements[rte];oRTE.value=parseBreaks(oRTE.value);oRTE.value=replaceIt(oRTE.value,''','\'');};function autoBRoff(rte){var oRTE=document.forms[0].elements[rte];oRTE.value=replaceIt(oRTE.value,'\n','<br />');oRTE.value=replaceIt(oRTE.value,'\'',''');};function parseBreaks(argIn){argIn=replaceIt(argIn,'<br>','\n');argIn=replaceIt(argIn,'<BR>','\n');argIn=replaceIt(argIn,'<br/>','\n');argIn=replaceIt(argIn,'<br />','\n');argIn=replaceIt(argIn,'\t',' ');argIn=replaceIt(argIn,'\n ','\n');argIn=replaceIt(argIn,' <p>','<p>');argIn=replaceIt(argIn,'</p><p>','\n\n');argIn=replaceIt(argIn,''','\'');argIn=trim(argIn);return argIn;};function geckoKeyPress(evt){var rte=evt.target.id;if(evt.ctrlKey){var key=String.fromCharCode(evt.charCode).toLowerCase();var cmd='';switch(key){case 'b':cmd="bold";break;case 'i':cmd="italic";break;case 'u':cmd="underline";break;};if(cmd){rteCommand(rte,cmd,null);evt.preventDefault();evt.stopPropagation();}}};function checkspell(){dlgCleanUp();try{var tmpis=new ActiveXObject("ieSpell.ieSpellExtension");tmpis.CheckAllLinkedDocuments(document);}catch(exception){if(exception.number==-2146827859){if(confirm("ieSpell not detected. Click Ok to go to download page.")){window.open("http://www.iespell.com/download.php","DownLoad");}}else{alert("Error Loading ieSpell: Exception "+exception.number);}}};
+
+
--- /dev/null
+@charset "utf-8";
+.rteImg {background:#EFEDDE;border:1px solid #EFEDDE;width:23px;height:22px;margin:1px;}
+.rteImgUp {background:#cddbf3;border:1px solid #6e9ce6;width:23px;height:22px;margin:1px;}
+.rteImgDn {background:#C1D2EE;border:1px solid #316ac5;width:23px;height:22px;margin:1px;}
+.rteSep {margin:0 2px 0 2px;width:1px;height:20px;border:0px}
+.rteBar {margin:0 2px 0 4px;width:3px;height:15px;border:0px}
+.rteBk {background:#EFEDDE;border: 1px solid #EFEDDE;letter-spacing:0;height:24px}
+.rteBk tbody tr td, .rteBk tr td {background:#EFEDDE;height:24px}
+.rteDiv {display:block;position:relative}
+.show {left:auto;top:auto;position:relative}
+.hide {left:-1000px;top:-1000px;position:absolute}
\ No newline at end of file
--- /dev/null
+/*
+Html2Xhtml : Javascript Mini HTML to XHTML Parser
+--------------------------------------------------
+
+Copyright ¨Ï 2006 All rights reserved. Jacob Lee <letsgolee@lycos.co.kr>
+
+Free for noncommercial && commercial use.
+*/
+function getXHTML(data){return new Html2Xhtml(data).parse()};function Html2Xhtml(data){this.data=data||''};Html2Xhtml.prototype.setHTML=function(data){this.data=data||this.data};Html2Xhtml.prototype.parse=function(){var state=0;var xhtml='';var p=0;var unget=false;var tagname='';var attrname='';var attrval='';var quot='';var data=this.data;var len=data.length;var phpval='';var tagtype=0;var insidepre=false;while(1){if(p>=len&&!unget){return xhtml}if(unget){unget=false}else{var c=data.substr(p++,1)}switch(state){case 0:if(c=='<'){state=1;break}var cc=c.charCodeAt();if(Html2Xhtml.charEntities[cc]){xhtml+='&'+Html2Xhtml.charEntities[cc]+';'}else{xhtml+=c}break;case 1:if(/[a-zA-Z]/.test(c)){state=2;tagtype=1;tagname=c.toLowerCase();break}if(c=='/'){state=2;tagtype=-1;break}if(c=='!'){if(data.substr(p,2)=='--'){xhtml+='<!--';p+=2;state=9;break}xhtml+='<!';state=10;break}if(c=='?'){state=11;xhtml+='<'+'?';break}xhtml+='<';unget=true;state=0;break;case 2:if(Html2Xhtml.isSpaceChar[c]){xhtml+=(!insidepre&&tagtype>0&&Html2Xhtml.hasNLBefore[tagname]&&xhtml.length&&xhtml.substr(xhtml.length-1,1)!='\n'?'\n':'')+(tagtype>0?'<':'</')+tagname;state=3;break}if(c=='/'){xhtml+=(!insidepre&&tagtype>0&&Html2Xhtml.hasNLBefore[tagname]&&xhtml.length&&xhtml.substr(xhtml.length-1,1)!='\n'?'\n':'')+(tagtype>0?'<':'</')+tagname;if(data.substr(p,1)!='>'){state=3;break}state=4;break}if(c=='>'){xhtml+=(!insidepre&&tagtype>0&&Html2Xhtml.hasNLBefore[tagname]&&xhtml.length&&xhtml.substr(xhtml.length-1,1)!='\n'?'\n':'')+(tagtype>0?'<':'</')+tagname;unget=true;state=4;break}tagname+=c.toLowerCase();break;case 3:if(Html2Xhtml.isSpaceChar[c]){break}if(c=='/'){if(data.substr(p,1)!='>'){break}state=4;break}if(c=='>'){unget=true;state=4;break}attrname=c.toLowerCase();attrval='';state=5;break;case 4:xhtml+=(Html2Xhtml.isEmptyTag[tagname]?' />':'>')+(!insidepre&&tagtype<0&&Html2Xhtml.hasNLAfter[tagname]&&p<len&&data.substr(p,1)!='\n'?'\n':'');if(tagtype>0&&Html2Xhtml.dontAnalyzeContent[tagname]){state=13;attrname=attrval=quot='';tagtype=0;break}if(tagname=='pre'){insidepre=!insidepre}state=0;tagname=attrname=attrval=quot='';tagtype=0;break;case 5:if(Html2Xhtml.isSpaceChar[c]){xhtml+=' '+attrname;if(Html2Xhtml.isEmptyAttr[attrname]){xhtml+='="'+attrname+'"'}state=3;break}if(c=='/'){xhtml+=' '+attrname;if(Html2Xhtml.isEmptyAttr[attrname]){xhtml+='="'+attrname+'"'}if(data.substr(p,1)!='>'){state=3;break}state=4;break}if(c=='>'){xhtml+=' '+attrname;if(Html2Xhtml.isEmptyAttr[attrname]){xhtml+='="'+attrname+'"'}unget=true;state=4;break}if(c=='='){xhtml+=' '+attrname+'=';state=6;break}if(c=='"'||c=="'"){attrname+='?'}else{attrname+=c.toLowerCase()}break;case 6:if(Html2Xhtml.isSpaceChar[c]){xhtml+=(Html2Xhtml.isEmptyAttr[attrname]?'"'+attrname+'"':'""');state=3;break}if(c=='>'){xhtml+=(Html2Xhtml.isEmptyAttr[attrname]?'"'+attrname+'"':'""');unget=true;state=4;break}if(c=='/'&&data.substr(p,1)=='>'){xhtml+=(Html2Xhtml.isEmptyAttr[attrname]?'"'+attrname+'"':'""');state=4;break}if(c=='"'||c=="'"){quot=c;state=8;break}attrval=c;state=7;break;case 7:if(Html2Xhtml.isSpaceChar[c]){xhtml+='"'+Html2Xhtml.escapeQuot(attrval,'"')+'"';state=3;break}if(c=='/'&&data.substr(p,1)=='>'){xhtml+='"'+Html2Xhtml.escapeQuot(attrval,'"')+'"';state=4;break}if(c=='>'){unget=true;xhtml+='"'+Html2Xhtml.escapeQuot(attrval,'"')+'"';state=4;break}attrval+=c;break;case 8:if(c==quot){xhtml+='"'+Html2Xhtml.escapeQuot(attrval,'"')+'"';state=3;break}attrval+=c;break;case 9:if(c=='-'&&data.substr(p,2)=='->'){p+=2;xhtml+='-->';state=0;break}xhtml+=c;break;case 10:if(c=='>'){state=0}xhtml+=c;break;case 11:if(c=="'"||c=='"'){quot=c;state=12;break}if(c=='?'&&data.substr(p,1)=='>'){state=0;xhtml+='?'+'>';p++;break}xhtml+=c;break;case 12:if(c==quot){state=11;xhtml+=quot+Html2Xhtml.escapeQuot(phpval,quot)+quot;phpval=quot='';break}phpval+=c;break;case 13:if(c=='<'&&data.substr(p,tagname.length+1).toLowerCase()=='/'+tagname){unget=true;state=0;tagname='';break}if(tagname=='textarea'){xhtml+=Html2Xhtml.escapeHTMLChar(c)}else{xhtml+=c}break}}return xhtml};Html2Xhtml.escapeQuot=function(str,quot){if(!quot){quot='"'}if(quot=='"'){return str.replace(/"/ig,'\\"')}return str.replace(/'/ig,"\\'")};Html2Xhtml.escapeHTMLChar=function(c){if(c=='&'){return'&'}if(c=='<'){return'<'}if(c=='>'){return'>'}var cc=c.charCodeAt();if(Html2Xhtml.charEntities[cc]){return'&'+Html2Xhtml.charEntities[cc]+';'}else{return c}};Html2Xhtml.isSpaceChar={' ':1,'\r':1,'\n':1,'\t':1};Html2Xhtml.isEmptyTag={'area':1,'base':1,'basefont':1,'br':1,'hr':1,'img':1,'input':1,'link':1,'meta':1,'param':1};Html2Xhtml.isEmptyAttr={'checked':1,'compact':1,'declare':1,'defer':1,'disabled':1,'ismap':1,'multiple':1,'noresize':1,'nosave':1,'noshade':1,'nowrap':1,'readonly':1,'selected':1};Html2Xhtml.hasNLBefore={'div':1,'p':1,'table':1,'tbody':1,'tr':1,'td':1,'th':1,'title':1,'head':1,'body':1,'script':1,'comment':1,'li':1,'meta':1,'h1':1,'h2':1,'h3':1,'h4':1,'h5':1,'h6':1,'hr':1,'ul':1,'ol':1,'option':1,'link':1};Html2Xhtml.hasNLAfter={'html':1,'head':1,'body':1,'p':1,'th':1,'style':1};Html2Xhtml.dontAnalyzeContent={'textarea':1,'script':1,'style':1};Html2Xhtml.charEntities={160:'nbsp',161:'iexcl',162:'cent',163:'pound',164:'curren',165:'yen',166:'brvbar',167:'sect',168:'uml',169:'copy',170:'ordf',171:'laquo',172:'not',173:'shy',174:'reg',175:'macr',176:'deg',177:'plusmn',178:'sup2',179:'sup3',180:'acute',181:'micro',182:'para',183:'middot',184:'cedil',185:'sup1',186:'ordm',187:'raquo',188:'frac14',189:'frac12',190:'frac34',191:'iquest',192:'agrave',193:'aacute',194:'acirc',195:'atilde',196:'auml',197:'aring',198:'aelig',199:'ccedil',200:'egrave',201:'eacute',202:'ecirc',203:'euml',204:'igrave',205:'iacute',206:'icirc',207:'iuml',208:'eth',209:'ntilde',210:'ograve',211:'oacute',212:'ocirc',213:'otilde',214:'ouml',215:'times',216:'oslash',217:'ugrave',218:'uacute',219:'ucirc',220:'uuml',221:'yacute',222:'thorn',223:'szlig',224:'agrave',225:'aacute',226:'acirc',227:'atilde',228:'auml',229:'aring',230:'aelig',231:'ccedil',232:'egrave',233:'eacute',234:'ecirc',235:'euml',236:'igrave',237:'iacute',238:'icirc',239:'iuml',240:'eth',241:'ntilde',242:'ograve',243:'oacute',244:'ocirc',245:'otilde',246:'ouml',247:'divide',248:'oslash',249:'ugrave',250:'uacute',251:'ucirc',252:'uuml',253:'yacute',254:'thorn',255:'yuml',338:'oelig',339:'oelig',352:'scaron',353:'scaron',376:'yuml',710:'circ',732:'tilde',8194:'ensp',8195:'emsp',8201:'thinsp',8204:'zwnj',8205:'zwj',8206:'lrm',8207:'rlm',8211:'ndash',8212:'mdash',8216:'lsquo',8217:'rsquo',8218:'sbquo',8220:'ldquo',8221:'rdquo',8222:'bdquo',8224:'dagger',8225:'dagger',8240:'permil',8249:'lsaquo',8250:'rsaquo',8364:'euro',402:'fnof',913:'alpha',914:'beta',915:'gamma',916:'delta',917:'epsilon',918:'zeta',919:'eta',920:'theta',921:'iota',922:'kappa',923:'lambda',924:'mu',925:'nu',926:'xi',927:'omicron',928:'pi',929:'rho',931:'sigma',932:'tau',933:'upsilon',934:'phi',935:'chi',936:'psi',937:'omega',945:'alpha',946:'beta',947:'gamma',948:'delta',949:'epsilon',950:'zeta',951:'eta',952:'theta',953:'iota',954:'kappa',955:'lambda',956:'mu',957:'nu',958:'xi',959:'omicron',960:'pi',961:'rho',962:'sigmaf',963:'sigma',964:'tau',965:'upsilon',966:'phi',967:'chi',968:'psi',969:'omega',977:'thetasym',978:'upsih',982:'piv',8226:'bull',8230:'hellip',8242:'prime',8243:'prime',8254:'oline',8260:'frasl',8472:'weierp',8465:'image',8476:'real',8482:'trade',8501:'alefsym',8592:'larr',8593:'uarr',8594:'rarr',8595:'darr',8596:'harr',8629:'crarr',8656:'larr',8657:'uarr',8658:'rarr',8659:'darr',8660:'harr',8704:'forall',8706:'part',8707:'exist',8709:'empty',8711:'nabla',8712:'isin',8713:'notin',8715:'ni',8719:'prod',8721:'sum',8722:'minus',8727:'lowast',8730:'radic',8733:'prop',8734:'infin',8736:'ang',8743:'and',8744:'or',8745:'cap',8746:'cup',8747:'int',8756:'there4',8764:'sim',8773:'cong',8776:'asymp',8800:'ne',8801:'equiv',8804:'le',8805:'ge',8834:'sub',8835:'sup',8836:'nsub',8838:'sube',8839:'supe',8853:'oplus',8855:'otimes',8869:'perp',8901:'sdot',8968:'lceil',8969:'rceil',8970:'lfloor',8971:'rfloor',9001:'lang',9002:'rang',9426:'copy',9674:'loz',9824:'spades',9827:'clubs',9829:'hearts',9830:'diams'};
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="datadmin" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Search menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<s:set var="selected" value="%{selection}"/>
+
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="datadmin" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Administration menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+ <div id=main-pane>
+
+<!-- Result list
+ =============================================================================================================================
+ -->
+ <div id=article-box>
+ <div id=section><s:text name="title.valid.context"/></div>
+ <div id=article-body class=text>
+
+ <s:if test="contextsToBeApproved.size > 0">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td><s:text name="label.contypes.check"/></td>
+ <td><s:text name="label.value"/></td>
+ <td><s:text name="label.activity"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=7></td></tr>
+
+ <s:iterator value="contextsToBeApproved">
+ <s:url id="edit" namespace="/sadmin" action="scontext-edit">
+ <s:param name="selection" value="%{index}"/>
+ </s:url>
+ <s:if test="%{#selected == index}">
+ <tr height=18 background="<s:url value="/skin/image.selected.jpg"/>">
+ <td><img src="<s:url value="/skin/icon.ed.png"/>" width=14 height=14 border="none"></td>
+ <td><s:property value="typeName"/></td>
+ <td><s:property value="value"/></td>
+ <td><s:text name="menu.step.%{stepNumber}"/></td>
+ </tr>
+ </s:if><s:else>
+ <tr height=18>
+ <td>
+ <s:a href="%{#edit}">
+ <img src="<s:url value="/skin/%{editIcon}"/>" onMouseOver=this.src="<s:url value="/skin/icon.ed.png"/>" onMouseOut=this.src="<s:url value="/skin/%{editIcon}"/>" width=14 height=14 border="none"/>
+ </s:a>
+ </td>
+ <td><s:property value="typeName"/></td>
+ <td><s:property value="value"/></td>
+ <td><s:text name="menu.step.%{stepNumber}"/></td>
+ </tr>
+ </s:else>
+ </s:iterator>
+
+ </table>
+ </s:if>
+
+ <s:else>
+ <s:text name="message.nocontext" />
+ </s:else>
+ </div>
+ </div>
+
+<!-- Approval form
+ =============================================================================================================================
+ -->
+ <s:if test='%{#selected != "0"}'>
+ <div id=article-box>
+ <div id=section><s:text name="title.valid.form"/></div>
+ <div id=article-body class=text>
+
+<!-- Scenario studies indexed by the selected simulation context -->
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td colspan=2><s:text name="label.ownerstudy"/></td>
+ <td width=150><s:text name="label.manager"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=7></td></tr>
+ <s:iterator value="indexedElements">
+ <s:url id="open" namespace="/study" action="open-study?selection=%{selection}">
+ <s:param name="index" value="%{studyIndex}"/>
+ </s:url>
+ <tr>
+ <td width=20><img src="<s:url value="/skin/icon.%{progressState}.png"/>" width=12 height=12 border="none"/></td>
+ <td width=80><s:property value="reference"/></td>
+ <td><s:a href="%{open}" cssClass="link"><s:property value="title"/></s:a></td>
+ <td width=150><s:property value="authorName"/></td>
+ </tr>
+ </s:iterator>
+ </table>
+
+<!-- Form -->
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20><td width=20></td></tr>
+
+ <!-- Approval form of the context type -->
+ <s:if test="edited.type.isApproved() == false">
+ <s:set var="valbel"><s:text name="field.context.value"/></s:set>
+ <tr>
+ <td><img src="<s:url value="/skin/image.rightarrow.png"/>" border="none"/></td>
+ <td colspan=2><b><s:text name="label.approtype"/></b></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td colspan=2></td>
+ <td>
+ <table cellpadding=0 cellspacing=0>
+ <tr>
+ <td><i><s:text name="message.info.code"/></i></td>
+ <td> <img src="<s:url value="/skin/image.help.png"/>" border="none" title="<s:text name="help.contextcode"/>"/></td>
+ </tr>
+ </table>
+ </tr>
+ <tr>
+ <td></td>
+ <td align=right><s:text name="field.code"/>: </td>
+ <td>
+ <table cellpadding=0 cellspacing=0>
+ <tr>
+ <td><input type=text name=enteredCode size=40/></td>
+ <td>
+ <select name="code" style="width: 20px">
+ <option><s:text name="label.usedcode"/>:</option>
+ <s:iterator value="existingNames">
+ <option> <s:property value="name"/></option>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td colspan=2></td>
+ <td><i><s:text name="message.info.type"/></i></td>
+ </tr>
+
+ <s:iterator value="supportedLocales">
+ <tr>
+ <td></td>
+ <td align=right><s:text name="field.label"/> <s:text name="label.lang.%{locale}"/>: </td>
+ <td>
+ <table cellpadding=0 cellspacing=0>
+ <tr>
+ <td>
+ <s:if test="isCurrent()">
+ <input type=text name=enteredType size=40 value="<s:property value="edited.type.name"/>"/>
+ </s:if><s:else>
+ <input type=text name=enteredType size=40/>
+ </s:else>
+ </td>
+ <td>
+ <select name="code" style="width: 20px">
+ <option><s:text name="label.usedname"/>:</option>
+ <s:iterator value="typeNames" var="name">
+ <option> <s:property value="#name"/></option>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </s:iterator>
+
+ <tr height=5><td></td></tr>
+ <tr>
+ <td colspan=2></td>
+ <td><i><s:text name="message.info.step"/></i></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td align=right><s:text name="field.step"/>: </td>
+ <td>
+ <select name="code" style="width: 300px">
+ <s:set var="selection" value="attachedStep.number"/>
+ <s:iterator value="allStudySteps">
+ <s:if test="%{number == #selection}">
+ <option selected> <s:text name="menu.step.%{number}"/></option>
+ </s:if><s:else>
+ <option> <s:text name="menu.step.%{number}"/></option>
+ </s:else>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ <tr height=20><td></td></tr>
+ <tr>
+ <td><img src="<s:url value="/skin/image.rightarrow.png"/>" border="none"/></td>
+ <td colspan=2><b><s:text name="label.approval"/></b></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ </s:if><s:else>
+ <s:set var="valbel"><s:text name="type.context.%{edited.type.name}"/></s:set>
+ </s:else>
+
+ <!-- Approval form of the context value -->
+ <tr>
+ <td colspan=2></td>
+ <td><i><s:text name="message.info.value"/></i></td>
+ <s:if test="existingContexts.size > 0">
+ <td><i><s:text name="message.info.context"/></i></td>
+ </s:if>
+ </tr>
+ <tr>
+ <td></td>
+ <td align=right><s:text name="%{#valbel}"/>: </td>
+ <td><input type=text name=enteredValue size=40 value="<s:property value="%{edited.value}"/>"></td>
+ <s:if test="existingContexts.size > 0">
+ <td>
+ <select name="selectedValue" style="width: 20px">
+ <option value="-1"><s:text name="menu.select"/></option>
+ <s:iterator value="existingContexts">
+ <option value="<s:property value="index"/>"> <s:property value="value"/></option>
+ </s:iterator>
+ </select>
+ </td>
+ </s:if>
+ </tr>
+
+ <!-- Validation button -->
+ <tr height=20><td></td></tr>
+ <tr>
+ <td></td>
+ <td align=right><img src="<s:url value="/skin/icon.APPROVED.png"/>" border="none"></td>
+ <td><input type="submit" name="doIt" value="<s:text name="button.approve"/>" disabled/></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </s:if>
+
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="sysadmin" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+<!-- Updload dialog
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.user"/></div>
+ <div id=article-body class=text>
+
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td><s:text name="label.lastname"/></td>
+ <td><s:text name="label.firstname"/></td>
+ <td><s:text name="label.role"/></td>
+ <td><s:text name="label.email"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=5></td></tr>
+ <s:iterator value="users" var="user">
+ <tr>
+ <td>
+ <s:if test="%{isNew(#user)}">
+ <img src="<s:url value="/skin/image.uparrow.png"/>" border="none"/>
+ </s:if> </td>
+ <td><s:property value="name"/></td>
+ <td><s:property value="firstName"/></td>
+ <td><s:property value="roleNames"/></td>
+ <td><s:property value="mailAddress"/></td>
+ </tr>
+ </s:iterator>
+ </table>
+
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="sysadmin" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Search menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+ <div id=main-pane>
+
+<!-- Result list
+ =============================================================================================================================
+ -->
+ <div id=article-box>
+ <div id=section><s:text name="title.valid.index"/></div>
+ <div id=article-body class=text>
+
+ <s:if test="newStudies.size > 0">
+
+ <form name="index" action="valid-indexing" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td width=80><s:text name="label.reference"/></td>
+ <td><s:text name="label.title"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=3></td></tr>
+ <s:iterator value="newStudies">
+ <tr>
+ <td><input type="checkbox" name="indices" value="<s:property value="index"/>" checked></td>
+ <td><s:property value="reference"/></td>
+ <td><s:property value="title"/></td>
+ </tr>
+ </s:iterator>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td colspan=2></td>
+ <td><input type="submit" name="doIt" value=" <s:text name="button.index"/> "/></td>
+ </tr>
+ </table>
+ </form>
+
+ </s:if><s:else>
+ <s:text name="message.noindex" />
+ </s:else>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function enableUpload () {
+// ------------------------
+ upform.doIt.disabled = false;
+ }
+ </script>
+ </head>
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="sysadmin" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+<!-- Updload dialog
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.%{nextAction}"/></div>
+ <div id=article-body class=text>
+ <form name="upform" enctype="multipart/form-data" action="upload" method="post">
+ <table>
+ <tr height=10><td></td></tr>
+ <s:hidden name="nextAction" value="%{nextAction}" />
+ <s:hidden name="index" value="%{index}" />
+ <s:file name="upload" key="field.upload" onChange="enableUpload()" />
+ <tr height=10><td></td></tr>
+ <tr>
+ <td></td>
+ <td align=right>
+ <input type="submit" name="cancel" value="<s:text name="button.cancel"/>"/>
+ <input type="submit" name="doIt" value="<s:text name="button.upload"/>" disabled="true"/>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="java.util.ResourceBundle"%>
+<%@ page import="org.hibernate.Session"%>
+<%@ page import="org.hibernate.Transaction"%>
+<%@ page import="org.splat.som.Database"%>
+<%@ page import="org.splat.som.Scenario"%>
+<%@ page import="org.splat.som.Publication"%>
+<%@ page import="org.splat.som.Document"%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@ page import="org.splat.simer.OpenStudy"%>
+<%@ page import="org.splat.simer.StudyMenu"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization
+ =============================================================================================================================
+ -->
+<% String path = request.getParameter("open");
+ OpenStudy simer = (OpenStudy)session.getAttribute("study.open");
+ ApplicationRights rights = (ApplicationRights)session.getAttribute("user.rights");
+ String name;
+ boolean ishared;
+
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ if (path == null) {
+// Check-out from the tool-bar, looking for the scenario from the selected menu item
+ StudyMenu menu = simer.getMenu();
+ String[] item = menu.getSelection().split("\\x2E");
+ Scenario[] scene = simer.getStudyObject().getScenarii();
+ int j = Integer.valueOf(item[0]);
+ int i;
+ for (i=0; i<scene.length; i++) {
+ if (scene[i].getIndex() == j) break;
+ }
+ scene[i].checkout(rights.getUser());
+
+ name = ResourceBundle.getBundle("som").getString("type.document.geometry") + "1";
+ ishared = false;
+ }
+ else {
+// Check-out from a Geometry document, looking for the scenario from the corresponding publication
+ simer.selectDocument(path);
+
+ Publication edited = simer.getSelectedDocument();
+ Document selecdoc = edited.value();
+ Scenario owner = (Scenario)edited.getOwner(); // In the GEOM context, the ProjectElement is necessarilly a Scenario
+
+ owner.checkout(rights.getUser());
+
+ name = selecdoc.getTitle();
+ ishared = simer.getStudyObject().shares(selecdoc) || selecdoc.isVersioned();
+ }
+ transax.commit();
+%>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><%=name%></title>
+ <script language="JavaScript">
+
+ function saveAs () {
+// ------------------
+ var answer = window.showModalDialog("saveAs.jsp", window, "dialogHeight:115px; dialogWidth:400px; scroll:no; help:no; status:no");
+ if (answer != null) {
+ parse = answer.split(";");
+ window.location = "valid-save?documentType=4&fileName=Géométrie1.part&documentName=" + parse[0] + "&documentState=" + parse[1];
+ }
+ return false;
+ }
+
+ function versionAs () {
+// ---------------------
+ var answer = window.showModalDialog("versionAs.jsp", window, "dialogHeight:80px; dialogWidth:600px; scroll:no; help:no; status:no");
+ if (answer != null) {
+ parse = answer.split("&");
+ action = parse[0].split("=");
+
+ if (action[0] == "version") {
+ if (parse.length > 1) {
+ window.location = "valid-version?fileName=Géométrie1.part&documentState=" + action[1] + "&" + parse[1];
+ } else {
+ window.location = "valid-version?fileName=Géométrie1.part&documentState=" + action[1];
+ }
+ }
+ }
+ return false;
+ }
+
+ function updateAs () {
+// ------------------
+ var answer = window.showModalDialog("updateAs.jsp", window, "dialogHeight:155px; dialogWidth:600px; scroll:no; help:no; status:no");
+ if (answer != null) {
+ parse = answer.split("&");
+ action = parse[0].split("=");
+
+ if (action[0] == "update") {
+ window.location = "valid-update?fileName=Géométrie1.part";
+ } else
+ if (action[0] == "version") {
+ if (parse.length > 1) {
+ window.location = "valid-version?fileName=Géométrie1.part&documentState=" + action[1] + "&" + parse[1];
+ } else {
+ window.location = "valid-version?fileName=Géométrie1.part&documentState=" + action[1];
+ }
+ }
+ }
+ return false;
+ }
+ </script>
+ </head>
+
+ <body background="window.png">
+ <table width=100% border=0 cellspacing=0 cellpadding=0>
+ <tr height=20><td width=73></td></tr>
+ <tr height=24>
+ <td></td>
+ <td>
+<% if (path == null) {
+%> <a href="javascript:void(0)" onClick="saveAs()"><img src="<s:url value="/skin/image.hold.gif"/>" width="24" height="24" border="none"/></a>
+<% } else if (ishared) {
+%> <a href="javascript:void(0)" onClick="versionAs()"><img src="<s:url value="/skin/image.hold.gif"/>" width="24" height="24" border="none"/></a>
+<% } else {
+%> <a href="javascript:void(0)" onClick="updateAs()"><img src="<s:url value="/skin/image.hold.gif"/>" width="24" height="24" border="none"/></a>
+<% }
+%> </td>
+ </tr>
+ </table>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="button.saveas"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initForm () {
+// --------------------
+ save.name.focus();
+ }
+ function execute () {
+// -------------------
+ returnValue = save.name.value + ";" + save.state.value;
+ window.close();
+ }
+ function cancel () {
+// ------------------
+ returnValue = null;
+ window.close();
+ }
+ </script>
+ </head>
+
+ <body bgcolor=#ECE9D8 onLoad="initForm()">
+ <form name="save" action="save" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=right><s:text name="field.documentitle"/>: </td>
+ <td><input type="text" name="name" size="33" value="Géométrie1"></td>
+ </tr>
+ <tr>
+ <td align=right>Format du document: </td>
+ <td><input type="text" name="format" size="33" value="Document GEOM (*.part)" disabled></td>
+ </tr>
+ <tr height=50>
+ <td colspan=2 align=center>
+ <input type="button" name="ko" value="<s:text name="button.cancel"/>" onClick="cancel()">
+ <input type="button" name="ok" value="<s:text name="button.import"/>" onClick="execute()">
+ <select name="state">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>Enregistrer sous</title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initForm () {
+// --------------------
+ save.name.focus();
+ }
+ function updateMe () {
+// --------------------
+ returnValue = "update";
+ window.close();
+ }
+ function versionMe () {
+// ---------------------
+ returnValue = "version=" + save.state.value + "&description=" + save.description.value;
+ window.close();
+ }
+ function cancel () {
+// ------------------
+ returnValue = null;
+ window.close();
+ }
+ </script>
+ </head>
+
+ <body bgcolor=#ECE9D8 onLoad="initForm()">
+ <form name="save" action="save" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center>
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr>
+ <td></td>
+ <td><s:text name="label.doyou"/>:</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="button" name="update" style='width: 180px;' value="<s:text name="button.update"/>" onClick="updateMe()"></td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td></td>
+ <td><s:text name="label.or"/> <s:text name="menu.version"/>:</td>
+ </tr>
+ <tr>
+ <td align=right><s:text name="label.modifications"/>:</td>
+ <td colspan=2><input type="text" name="description" size="60"></td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center><input type="button" name="ko" value="<s:text name="button.cancel"/>" onClick="cancel()"> </td>
+ <td width=190><input type="button" name="version" style='width: 180px;' value="<s:text name="button.version"/>" onClick="versionMe()"></td>
+ <td align=left>
+ <select name="state">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="menu.version"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initForm () {
+// --------------------
+ save.name.focus();
+ }
+ function versionMe () {
+// ---------------------
+ returnValue = "version=" + save.state.value + "&description=" + save.description.value;
+ window.close();
+ }
+ function cancel () {
+// ------------------
+ returnValue = null;
+ window.close();
+ }
+ </script>
+ </head>
+
+ <body bgcolor=#ECE9D8 onLoad="initForm()">
+ <form name="save" action="save" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center>
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr>
+ <td align=right><s:text name="label.modifications"/>:</td>
+ <td colspan=2><input type="text" name="description" size="60"></td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center><input type="button" name="ko" value="<s:text name="button.cancel"/>" onClick="cancel()"> </td>
+ <td width=190><input type="button" name="version" style='width: 180px;' value="<s:text name="button.version"/>" onClick="versionMe()"></td>
+ <td align=left>
+ <select name="state">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+@CHARSET "ISO-8859-1";
+
+body {
+ margin: 0;
+ background-image: url("image.background.png");
+ background-repeat: repeat-x;
+}
+
+#header { /* Page header including contextual menu-bar */
+ width: 100%;
+ height:50px;
+ background-image: url("image.banner.jpg");
+ background-repeat: no-repeat;
+ min-width: 600px;
+}
+#top-spacer {
+ height:10px;
+}
+#bottom-spacer {
+ clear: both;
+ height:10px;
+ width: 100%;
+}
+
+#menu-bar {
+ height: 40px;
+ width: auto;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ float: left;
+}
+#logo {
+ height: 24px;
+ width: 142px;
+ padding: 8px;
+ text-align: center;
+ float: left;
+}
+#menu-front {
+ height: 24px;
+ width: 34px;
+ padding: 7px;
+ text-align: center;
+ border-left: 1px solid #828282;
+ border-top: 1px solid #828282;
+ border-right: 1px solid #FFFFFF;
+ border-bottom: 2px solid #D2E7FF;
+ background-color: #D2E7FF;
+ float: left;
+}
+#menu-back {
+ height: 24px;
+ width: 34px;
+ padding: 8px;
+ text-align: center;
+ float: left;
+}
+#login-bar {
+ height: 40px;
+ width: auto;
+ float: right;
+}
+#dock {
+ clear: both;
+ height: 1px;
+ width: 100%;
+ border-top: 1px solid #828282;
+}
+
+#title-bar {
+ height: 22px;
+ width: auto;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ padding-left: 10px;
+ padding-right: 10px;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ background-image: url("image.title.png");
+ background-repeat: repeat-x;
+}
+
+#tab-bar {
+ height: 24px;
+ width: 100%;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+}
+#tab-front {
+ height: 19px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ border-left: 1px solid #AAAAAA;
+ border-top: 1px solid #AAAAAA;
+ border-right: 1px solid #E6E6E6;
+ border-bottom: 1px solid #FFFFFF;
+ font-weight: bold;
+ background-color: #FFFFFF;
+ float: left;
+}
+#tab-separator {
+ height: 23px;
+ width: 1px;
+ margin-top: 2px;
+ background-color: #AAAAAA;
+ float: left;
+}
+#tab-back {
+ height: 17px;
+ margin-top: 2px;
+ padding-top: 3px;
+ padding-bottom: 1px;
+ border-top: 1px solid #AAAAAA;
+ float: left;
+}
+#tab-disabled {
+ height: 18px;
+ margin-top: 2px;
+ padding-top: 3px;
+ padding-bottom: 1px;
+ border-top: 1px solid #AAAAAA;
+ color: #A1A192;
+ float: left;
+}
+#tab-description {
+ height: auto;
+ width: 38%;
+ float: left;
+}
+#tab-context {
+ height: auto;
+ margin-left: 1px;
+ float: left;
+}
+
+#left-pane {
+ height: auto;
+ width: 210px;
+ float: left;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+#right-pane {
+ height: auto;
+ width: 280px;
+ float: right;
+ padding-left: 8px;
+ padding-right: 10px;
+}
+#center-pane {
+ height: auto;
+ width: auto;
+ margin-left: 226px;
+ margin-right: 210px;
+ min-width: 550px;
+}
+#main-pane {
+ height: auto;
+ width: auto;
+ margin-left: 226px;
+ margin-right: 10px;
+ min-width: 760px;
+}
+
+#menuitem-box {
+ height: auto;
+ width: 100%;
+ margin-bottom: 10px;
+ border-left: 1px solid #AAAAAA;
+ border-top: 1px solid #AAAAAA;
+ border-right: 1px solid #E6E6E6;
+ border-bottom: 1px solid #E6E6E6;
+ background-color: #FFFFFF;
+}
+
+#article-box {
+ height: auto;
+ width: 100%;
+ margin-bottom: 10px;
+ border-left: 1px solid #AAAAAA;
+ border-top: 1px solid #AAAAAA;
+ border-right: 1px solid #E6E6E6;
+ border-bottom: 1px solid #E6E6E6;
+ background-color: #FFFFFF;
+}
+#article-body {
+ padding-left: 8px;
+ padding-right: 8px;
+ padding-bottom: 10px;
+}
+#article-item {
+ height: 22px;
+ width: auto;
+}
+#article-separator {
+ height: 1px;
+ width: 100%;
+ background-color: #AAAAAA;
+}
+#section {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ font-weight: 600;
+ height: 20px;
+ padding-top: 0px;
+ padding-right: 8px;
+ padding-bottom: 0px;
+ padding-left: 8px;
+/* background-color: E0E3E6; */
+ background-image: url("image.section.png");
+ background-repeat: no-repeat;
+}
+
+#dialog-box {
+ height: auto;
+ width: auto;
+ margin-left: 226px;
+ background-color: #FFFFFF;
+}
+
+.menu {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ text-decoration: none;
+}
+.title {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: #000000;
+ text-decoration: none;
+ font-weight: bold;
+}
+.text {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: #000000;
+ text-decoration: none;
+}
+.attribute {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ color: #000000;
+ text-decoration: none;
+}
+.tdLabel {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: #000000;
+ text-decoration: none;
+}
+.error {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ font-weight: bold;
+ color: #FF0000;
+ text-decoration: none;
+}
+.warning {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 13px;
+ color: #FF0000;
+ text-decoration: none;
+}
+a.link {
+ color: #002BB8;
+ text-decoration: none;
+}
+a.link:hover {
+ text-decoration:underline;
+}
+a.item {
+ color: #000000;
+ text-decoration: none;
+}
+a.item:hover {
+ text-decoration: none;
+}
+a.item:visited {
+ color: #000000;
+}
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="java.util.ResourceBundle"%>
+<%@ page import="org.hibernate.Session"%>
+<%@ page import="org.hibernate.Transaction"%>
+<%@ page import="org.splat.som.Database"%>
+<%@ page import="org.splat.som.Scenario"%>
+<%@ page import="org.splat.som.Publication"%>
+<%@ page import="org.splat.som.Document"%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@ page import="org.splat.simer.OpenStudy"%>
+<%@ page import="org.splat.simer.StudyMenu"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization
+ =============================================================================================================================
+ -->
+<% String path = request.getParameter("open");
+ OpenStudy simer = (OpenStudy)session.getAttribute("study.open");
+ ApplicationRights rights = (ApplicationRights)session.getAttribute("user.rights");
+ String name;
+ boolean ishared;
+
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ if (path == null) {
+// Check-out from the tool-bar, looking for the scenario from the selected menu item
+ StudyMenu menu = simer.getMenu();
+ String[] item = menu.getSelection().split("\\x2E");
+ Scenario[] scene = simer.getStudyObject().getScenarii();
+ int j = Integer.valueOf(item[0]);
+ int i;
+ for (i=0; i<scene.length; i++) {
+ if (scene[i].getIndex() == j) break;
+ }
+ scene[i].checkout(rights.getUser());
+
+ name = ResourceBundle.getBundle("som").getString("type.document.model") + "1";
+ ishared = false;
+ }
+ else {
+// Check-out from a Geometry document, looking for the scenario from the corresponding publication
+ simer.selectDocument(path);
+
+ Publication edited = simer.getSelectedDocument();
+ Document selecdoc = edited.value();
+ Scenario owner = (Scenario)edited.getOwner(); // In the GEOM context, the ProjectElement is necessarilly a Scenario
+
+ owner.checkout(rights.getUser());
+
+ name = selecdoc.getTitle();
+ ishared = simer.getStudyObject().shares(selecdoc) || selecdoc.isVersioned();
+ }
+ transax.commit();
+%>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><%=name%></title>
+ <script language="JavaScript">
+
+ function saveAs () {
+// ------------------
+ var answer = window.showModalDialog("saveAs.jsp", window, "dialogHeight:115px; dialogWidth:400px; scroll:no; help:no; status:no");
+ if (answer != null) {
+ parse = answer.split(";");
+ window.location = "valid-save?documentType=5&fileName=Maillage1.med&documentName=" + parse[0] + "&documentState=" + parse[1];
+ }
+ return false;
+ }
+
+ function versionAs () {
+// ---------------------
+ var answer = window.showModalDialog("versionAs.jsp", window, "dialogHeight:80px; dialogWidth:600px; scroll:no; help:no; status:no");
+ if (answer != null) {
+ parse = answer.split("&");
+ action = parse[0].split("=");
+
+ if (action[0] == "version") {
+ if (parse.length > 1) {
+ window.location = "valid-version?fileName=Maillage1.med&documentState=" + action[1] + "&" + parse[1];
+ } else {
+ window.location = "valid-version?fileName=Maillage1.med&documentState=" + action[1];
+ }
+ }
+ }
+ return false;
+ }
+
+ function updateAs () {
+// ------------------
+ var answer = window.showModalDialog("updateAs.jsp", window, "dialogHeight:155px; dialogWidth:600px; scroll:no; help:no; status:no");
+ if (answer != null) {
+ parse = answer.split("&");
+ action = parse[0].split("=");
+
+ if (action[0] == "update") {
+ window.location = "valid-update?fileName=Maillage1.med";
+ } else
+ if (action[0] == "version") {
+ if (parse.length > 1) {
+ window.location = "valid-version?fileName=Maillage1.med&documentState=" + action[1] + "&" + parse[1];
+ } else {
+ window.location = "valid-version?fileName=Maillage1.med&documentState=" + action[1];
+ }
+ }
+ }
+ return false;
+ }
+ </script>
+ </head>
+
+ <body background="window.png">
+ <table width=100% border=0 cellspacing=0 cellpadding=0>
+ <tr height=20><td width=73></td></tr>
+ <tr height=24>
+ <td></td>
+ <td>
+<% if (path == null) {
+%> <a href="javascript:void(0)" onClick="saveAs()"><img src="<s:url value="/skin/image.hold.gif"/>" width="24" height="24" border="none"/></a>
+<% } else if (ishared) {
+%> <a href="javascript:void(0)" onClick="versionAs()"><img src="<s:url value="/skin/image.hold.gif"/>" width="24" height="24" border="none"/></a>
+<% } else {
+%> <a href="javascript:void(0)" onClick="updateAs()"><img src="<s:url value="/skin/image.hold.gif"/>" width="24" height="24" border="none"/></a>
+<% }
+%> </td>
+ </tr>
+ </table>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="button.saveas"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initForm () {
+// --------------------
+ save.name.focus();
+ }
+ function execute () {
+// -------------------
+ returnValue = save.name.value + ";" + save.state.value;
+ window.close();
+ }
+ function cancel () {
+// ------------------
+ returnValue = null;
+ window.close();
+ }
+ </script>
+ </head>
+
+ <body bgcolor=#ECE9D8 onLoad="initForm()">
+ <form name="save" action="save" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=right><s:text name="field.documentitle"/>: </td>
+ <td><input type="text" name="name" size="33" value="Maillage1"></td>
+ </tr>
+ <tr>
+ <td align=right>Format du document: </td>
+ <td><input type="text" name="format" size="33" value="Document SMESH (*.med)" disabled></td>
+ </tr>
+ <tr height=50>
+ <td colspan=2 align=center>
+ <input type="button" name="ko" value="<s:text name="button.cancel"/>" onClick="cancel()">
+ <input type="button" name="ok" value="<s:text name="button.import"/>" onClick="execute()">
+ <select name="state">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title>Enregistrer sous</title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initForm () {
+// --------------------
+ save.name.focus();
+ }
+ function updateMe () {
+// --------------------
+ returnValue = "update";
+ window.close();
+ }
+ function versionMe () {
+// ---------------------
+ returnValue = "version=" + save.state.value + "&description=" + save.description.value;
+ window.close();
+ }
+ function cancel () {
+// ------------------
+ returnValue = null;
+ window.close();
+ }
+ </script>
+ </head>
+
+ <body bgcolor=#ECE9D8 onLoad="initForm()">
+ <form name="save" action="save" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center>
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr>
+ <td></td>
+ <td><s:text name="label.doyou"/>:</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="button" name="update" style='width: 180px;' value="<s:text name="button.update"/>" onClick="updateMe()"></td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td></td>
+ <td><s:text name="label.or"/> <s:text name="menu.version"/>:</td>
+ </tr>
+ <tr>
+ <td align=right><s:text name="label.modifications"/>:</td>
+ <td colspan=2><input type="text" name="description" size="60"></td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center><input type="button" name="ko" value="<s:text name="button.cancel"/>" onClick="cancel()"> </td>
+ <td width=190><input type="button" name="version" style='width: 180px;' value="<s:text name="button.version"/>" onClick="versionMe()"></td>
+ <td align=left>
+ <select name="state">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="menu.version"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initForm () {
+// --------------------
+ save.name.focus();
+ }
+ function versionMe () {
+// ---------------------
+ returnValue = "version=" + save.state.value + "&description=" + save.description.value;
+ window.close();
+ }
+ function cancel () {
+// ------------------
+ returnValue = null;
+ window.close();
+ }
+ </script>
+ </head>
+
+ <body bgcolor=#ECE9D8 onLoad="initForm()">
+ <form name="save" action="save" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center>
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr>
+ <td align=right><s:text name="label.modifications"/>:</td>
+ <td colspan=2><input type="text" name="description" size="60"></td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center><input type="button" name="ko" value="<s:text name="button.cancel"/>" onClick="cancel()"> </td>
+ <td width=190><input type="button" name="version" style='width: 180px;' value="<s:text name="button.version"/>" onClick="versionMe()"></td>
+ <td align=left>
+ <select name="state">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="knowledge" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="knowledge" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="knowledge" />
+ </jsp:include>
+ <jsp:include page="/jsp/knowledgeProperties.jsp" />
+ </div>
+
+ <div id=main-pane>
+
+<!-- Description and simulation context sections
+ =============================================================================================================================
+
+ Display of tabs
+ -->
+ <div id="tab-bar">
+ <div id="tab-description">
+ <span id="tab-front"> <s:text name="title.description"/> </span>
+ </div>
+ <div id="tab-context">
+ <span id="tab-front"> <s:text name="title.context"/> </span>
+ </div>
+ </div>
+
+<!-- Display of contents
+ -->
+ <div id="article-box">
+ <table width=100% border=0 cellspacing=0 cellpadding=0>
+ <tr valign=top>
+
+<!-- Description of the knowledge element -->
+ <td width=38%> <!-- Must conform to the width of above tab-description -->
+ <div id="top-spacer"></div>
+ <div id=article-body class=text>
+ <jsp:include page="/jsp/readDescription.jsp">
+ <jsp:param name="entity" value="knowledge" />
+ </jsp:include>
+ </div>
+ </td>
+
+<!-- Separator -->
+ <td width=1 bgcolor=#AAAAAA></td>
+
+<!-- Simulation contexts -->
+ <td width=62%>
+ <div id="top-spacer"></div>
+ <div id=article-body class=text>
+ <jsp:include page="/jsp/readContext.jsp" />
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+<!-- Knowledge elements section
+ =============================================================================================================================
+ -->
+ <s:if test="knowledges != null">
+ <div id=article-box>
+ <div id=section><s:text name="title.otherknowledge"/></div>
+ <div id=article-body class=text>
+ <jsp:include page="/jsp/readKnowledge.jsp">
+ <jsp:param name="entity" value="knowledge" />
+ </jsp:include>
+ </div>
+ </div>
+ </s:if>
+
+<!-- Documents section
+ =============================================================================================================================
+ -->
+ <s:if test="documents != null">
+ <div id=article-box>
+ <div id=section><s:text name="title.document"/></div>
+ <div id=article-body class=text>
+ <jsp:include page="/jsp/readContents.jsp">
+ <jsp:param name="entity" value="knowledge" />
+ </jsp:include>
+ </div>
+ </div>
+ </s:if>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="back" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Properties form
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section>
+ <s:text name="title.prop.study" />
+ </div>
+ <div id=article-body class=text>
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+
+ <tr height=10><td width=20></td></tr>
+ <tr>
+ <td width=16><img src="<s:url value="/skin/image.downarrow.png"/>" border="none"/></td>
+ <td width=24%><b><s:text name="label.members"/></b></td>
+ <td width=23%></td>
+ <td width=23%></td>
+ <td width=23%></td>
+ <td width=24></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td></td>
+ <td><s:text name="label.contributor"/></td>
+ <td></td>
+ <td></td>
+ <td><s:text name="label.manager"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=6></td></tr>
+ <tr>
+ <td></td>
+ <td colspan=3>
+ <s:if test="contributors.size > 0">
+ <s:iterator value="contributors" status="counter">
+ <s:if test="#counter.last"><s:property value="toString()"/></s:if>
+ <s:else><s:property value="toString()"/>,</s:else>
+ </s:iterator>
+ </s:if><s:else>
+ <s:property value="%{'-'}"/>
+ </s:else>
+ </td>
+ <td><s:property value="%{author.toString()}"/></td>
+ </tr>
+
+ <tr height=15><td width=20></td></tr>
+ <tr>
+ <td><img src="<s:url value="/skin/image.downarrow.png"/>" border="none"/></td>
+ <td><b><s:text name="label.approcycle"/></b></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td></td>
+ <td><s:text name="field.documentype"/></td>
+ <td><s:text name="label.PROMOTION"/></td>
+ <td><s:text name="label.REVIEW"/></td>
+ <td><s:text name="label.APPROVAL"/></td>
+ <td></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=6></td></tr>
+ <s:set var="height" value=""/>
+ <s:iterator value="validations" status="counter">
+ <s:if test="#counter.last"><s:set var="height" value="24"/></s:if>
+ <tr height="<s:property value="#height"/>">
+ <s:if test="#counter.last">
+ <td></td>
+ <td>
+ <s:if test="validations.size > 0"><i><s:text name="label.other"/></i></s:if>
+ <s:else><i><s:text name="label.all"/></i></s:else>
+ </td>
+ </s:if><s:else>
+ <td><img src="<s:url value="/skin/%{icon}"/>" border="none"/></td>
+ <td><s:text name="type.document.%{documentType}"/></td>
+ </s:else>
+ <td>
+ <s:if test="publisherIndex > 0"><s:property value="publisherName"/></s:if>
+ <s:else><i><s:property value="publisherName"/></i></s:else>
+ </td>
+ <td>
+ <s:if test="reviewerIndex > 0"><s:property value="reviewerName"/></s:if>
+ <s:else><font color="#A1A192"><i><s:property value="reviewerName"/></i></font></s:else>
+ </td>
+ <td>
+ <s:if test="approverIndex > 0"><s:property value="approverName"/></s:if>
+ <s:else><font color="#A1A192"><i><s:property value="approverName"/></i></font></s:else>
+ </td>
+ </tr>
+ </s:iterator>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization of the edit action, if any
+ =============================================================================================================================
+ -->
+<% String action = request.getParameter("action");
+ String type = request.getParameter("index");
+ if (action == null) action = "display";
+%>
+<s:set var="todo"><%=action%></s:set>
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <link href="../rtef/rte.css" rel="stylesheet" type="text/css">
+ <script language="JavaScript" type="text/javascript" src="../rtef/lang/fr.js"></script>
+ <script language="JavaScript" type="text/javascript" src="../rtef/richtext.js"></script>
+ <script language="JavaScript" type="text/javascript" src="../rtef/xhtml.js"></script>
+ <script language="JavaScript" type="text/javascript" src="../jvs/popup.js"></script>
+ <script language="JavaScript" type="text/javascript" src="../jvs/action.js"></script>
+
+ <script language="JavaScript">
+
+ initTextEditor();
+
+ var substitutions = new Array (
+ new RegExp("[\r\n]",'g'), " ", // For removing carriage returns & line feeds
+ new RegExp("<p> "), "<p>", // For removing of the 1st paragraph
+ new RegExp(" </p>"), "</p>", // For removing of the 1st paragraph
+
+ new RegExp("é",'g'), "é",
+ new RegExp("è",'g'), "è",
+ new RegExp("ê",'g'), "ê",
+ new RegExp("ë",'g'), "ë",
+ new RegExp("à",'g'), "à",
+ new RegExp("â",'g'), "â",
+ new RegExp("î",'g'), "î",
+ new RegExp("ï",'g'), "ï",
+ new RegExp("ô",'g'), "ô",
+ new RegExp("ù",'g'), "ù",
+ new RegExp("û",'g'), "û",
+ new RegExp("ü",'g'), "ü",
+
+ new RegExp("ç",'g'), "ç"
+ );
+
+ function initialize (action) {
+// ----------------------------
+ if (action == "setContext") {
+ edit.elements[2].focus();
+ } else
+ if (action == "renameDocument") {
+ edoc.documentTitle.focus();
+ } else
+ if (action == "renameKnowledge") {
+ edit.knowledgeTitle.focus();
+ } else
+ if (action == "addKnowledge") {
+ edit.elements[1].focus();
+ } else
+ if (action != "display") {
+ edit.elements[0].focus();
+ }
+ }
+ function setValue () {
+// -------------------
+ var select = edit.elements[0].value; // contextValue select input
+ if (select == "0") { // Creation of a new context type
+ tds = document.getElementById("select");
+ tde = document.getElementById("enter");
+ tds.style.display = "none"; // Hides the select input
+ tde.style.display = "block"; // Displays the text input
+ }
+ edit.elements[2].focus();
+ }
+ function clean (html) {
+// ---------------------
+ html = trim(html);
+ for (i=0; i<substitutions.length; i = i+2) {
+ html = html.replace(substitutions[i], substitutions[i+1]);
+ }
+ return html;
+ }
+ function submitEdit () {
+// ----------------------
+ updateRTEs(); // Sets the value of knowledgeValue input
+ edit.knowledgeValue.value = clean(edit.knowledgeValue.value);
+ edit.submit();
+ }
+ </script>
+ </head>
+
+ <body onLoad="initialize('<%=action%>')">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <s:if test="%{writeAccess && userRights.canCreateDocument()}">
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="study" />
+ </jsp:include>
+ </s:if>
+ <s:else>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="standard" />
+ </jsp:include>
+ </s:else>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+ <div id=main-pane>
+
+<!-- Description and simulation context sections
+ =============================================================================================================================
+
+ Display of tabs
+ -->
+ <div id="tab-bar">
+ <div id="tab-description">
+ <span id="tab-front"> <s:text name="title.description"/> </span>
+ </div>
+ <div id="tab-context">
+ <span id="tab-front"> <s:text name="title.context"/> </span>
+ </div>
+ </div>
+
+<!-- Display of contents
+ -->
+ <div id="article-box">
+ <table width=100% border=0 cellspacing=0 cellpadding=0>
+ <tr valign=top>
+ <td width=38%> <!-- Must conform to the width of above tab-description -->
+ <div id="top-spacer"></div>
+ <div id=article-body class=text>
+ <jsp:include page="/jsp/readDescription.jsp">
+ <jsp:param name="entity" value="study" />
+ </jsp:include>
+ </div>
+ </td>
+ <td width=1></td> <!-- Trick for aligning the vertical separator with the tab -->
+ <td width=1 bgcolor=#AAAAAA></td>
+ <td>
+ <div id="top-spacer"></div>
+ <div id="article-body">
+ <s:if test="%{#todo == 'newContext' || #todo == 'selectContext' || #todo == 'setContext'}">
+ <form name="edit" action="<%=action%>?selection=<s:property value="selection"/>" method="post">
+ <jsp:include page="/jsp/editContext.jsp">
+ <jsp:param name="action" value="<%=action%>" />
+ <jsp:param name="type" value="<%=type%>" />
+ </jsp:include>
+ </form>
+ </s:if>
+ <s:else>
+ <jsp:include page="/jsp/readContext.jsp" />
+ </s:else>
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+<!-- Knowledge elements section
+ =============================================================================================================================
+ -->
+ <s:if test="knowledges != null">
+ <div id=article-box>
+ <div id=section><s:text name="title.knowledge"/></div>
+ <div id=article-body class=text>
+ <s:if test="%{#todo == 'addKnowledge' || #todo == 'renameKnowledge' || #todo == 'editKnowledge'}">
+ <form name="edit" action="setKnowledge" method="post">
+ <jsp:include page="/jsp/editKnowledge.jsp">
+ <jsp:param name="action" value="<%=action%>" />
+ <jsp:param name="index" value="<%=type%>" />
+ </jsp:include>
+ </form>
+ </s:if>
+ <s:else>
+ <jsp:include page="/jsp/readKnowledge.jsp">
+ <jsp:param name="entity" value="study" />
+ </jsp:include>
+ </s:else>
+ </div>
+ </div>
+ </s:if>
+
+<!-- Documents section
+ =============================================================================================================================
+ -->
+ <s:if test="documents != null">
+ <div id=article-box>
+ <div id=section><s:text name="title.document"/></div>
+ <div id=article-body class=text>
+ <s:if test="%{writeAccess == 'true' && stepEnabled == 'true'}">
+ <form name="edoc" action="setDocument" method="post">
+ <jsp:include page="/jsp/editContents.jsp">
+ <jsp:param name="action" value="<%=action%>" />
+ <jsp:param name="index" value="<%=type%>" />
+ </jsp:include>
+ </form>
+ </s:if>
+ <s:else>
+ <jsp:include page="/jsp/readContents.jsp">
+ <jsp:param name="entity" value="study" />
+ </jsp:include>
+ </s:else>
+ </div>
+ </div>
+
+<!-- Comment section
+ =============================================================================================================================
+ -->
+ <s:if test="%{writeAccess == 'true' && stepEnabled == 'true'}">
+ <div id=article-box>
+ <div id=section><s:text name="title.comment"/></div>
+ <div id=article-body class=text>
+ <jsp:include page="/jsp/readComment.jsp"/>
+ </div>
+ </div>
+ </s:if>
+ </s:if>
+
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function checkin (message) {
+// --------------------------
+ if (confirm(message)) {
+ window.location = "checkin-scenario";
+ }
+ return false;
+ }
+ </script>
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="back" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Properties form
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section>
+ <s:text name="title.prop.scenario">
+ <s:param><s:property value="%{title}"/></s:param>
+ </s:text>
+ </div>
+ <div id=article-body class=text>
+
+<!-- Scenario checked-out (not editable)
+ --> <s:if test="%{isCheckedout()}">
+ <table class="text">
+ <tr>
+ <td colspan=3>
+ <s:text name="message.checkedout">
+ <s:param><s:property value="%{author.displayName}"/></s:param>
+ <s:param><s:property value="%{lastModificationDate}"/></s:param>
+ <s:param><s:property value="%{author.firstName}"/></s:param>
+ </s:text>
+ </td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr align=middle>
+ <td align=right>
+ <a href="mailto:<s:property value="author.mailAddress"/>?subject=<s:property value="subject"/>">
+ <input type="button" name="mailto" value="<s:text name="button.mailto"><s:param><s:property value="%{author.firstName}"/></s:param></s:text>"/>
+ </a>
+ </td>
+ <td> <s:text name="label.or"/> </td>
+ <td align=left>
+ <input type="button" name="checkin" value="<s:text name="button.checkin"/>" onClick="checkin('<s:text name="message.checkin"/>')"/>
+ </td>
+ </tr>
+ </table>
+ </s:if>
+
+<!-- Scenario ckecked-in (editable)
+ --> <s:else>
+ <form name="property" action="valid-rename" method="post">
+ <table class="text">
+ <tr>
+ <td><s:text name="field.scenariotitle"/>*: </td>
+ <td>
+ <input type=text size="25" name=title value="<s:property value="title"/>">
+ </td>
+ <td>
+ <input type="submit" name="save" value="<s:text name="button.save"/>"/>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </s:else>
+
+ </div>
+ </div>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="java.util.Iterator"%>
+<%@ page import="com.opensymphony.xwork2.util.ValueStack"%>
+<%@ page import="com.opensymphony.xwork2.ActionContext"%>
+<%@ page import="org.splat.simer.StudyPropertiesAction"%>
+<%@ page import="org.splat.kernel.User"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<% String action = request.getParameter("action");
+ if (action == null) action = "display";
+%>
+<s:set var="todo"><%=action%></s:set>
+<s:url id="edititle" namespace="/study" action="edit-title" />
+<s:url id="edibutor" namespace="/study" action="edit-contributor" />
+<s:url id="addcycle" namespace="/study" action="edit-cycle">
+ <s:param name="cycle" value="%{'default'}"/>
+</s:url>
+<s:url id="undo" namespace="/study" action="prop-study" />
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function setType () {
+// -------------------
+ var type = edit.documentType.value;
+// if (type == "0") edit.saveCycle.disabled = true;
+// else edit.saveCycle.disabled = false;
+ }
+ </script>
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="back" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Properties form
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section>
+ <s:text name="title.prop.study" />
+ </div>
+ <div id=article-body class=text>
+
+ <form name="edit" action="valid-edit" method="post">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+
+ <tr height=10><td width=20></td></tr>
+ <tr>
+ <td width=16><img src="<s:url value="/skin/image.downarrow.png"/>" border="none"/></td>
+ <td width=24%><b><s:text name="field.studytitle"/></b></td>
+ <td width=23%></td>
+ <td width=23%></td>
+ <td width=23%></td>
+ <td width=24></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <tr height=26>
+<% if (action.equals("edititle")) {
+%>
+ <td>
+ <s:a href="%{#undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="button.cancel"/>"/></s:a>
+ </td>
+ <td colspan=4>
+ <input type=text size="108" name=title value="<s:property value="studyTitle"/>">
+ </td>
+ <td align=right>
+ <button type="submit" name="saveTitle" value="" style="width:24px; height:16px; border:0; cursor:pointer; cursor:hand; background:transparent">
+ <img src="<s:url value="/skin/image.export.png"/>" title="<s:text name="button.save"/>"/>
+ </button>
+ </td>
+<% } else {
+%> <td>
+ <s:if test="#todo == 'display'"><s:a href="%{#edititle}"><img src="<s:url value="/skin/icon.ed.png"/>" border="none" title="<s:text name="tooltip.edit.title"/>"/></s:a></s:if>
+ </td>
+ <td colspan=4><s:property value="studyTitle"/></td>
+<% }
+%> </tr>
+ <tr height=10><td width=20></td></tr>
+ <tr>
+ <td><img src="<s:url value="/skin/image.downarrow.png"/>" border="none"/></td>
+ <td><b><s:text name="label.members"/></b></td>
+ </tr>
+ <tr height=5><td></td></tr>
+<% if (action.equals("edibutor")) {
+%>
+ <tr>
+ <td>
+ <s:a href="%{#undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="button.cancel"/>"/></s:a>
+ </td>
+ <td><s:text name="label.presents"/></td>
+ <td colspan=3><s:text name="label.absents"/></td>
+ <td align=right>
+ <button type="submit" name="saveContributors" value="" style="width:24px; height:16px; border:0; cursor:pointer; cursor:hand; background:transparent">
+ <img src="<s:url value="/skin/image.export.png"/>" title="<s:text name="button.save"/>"/>
+ </button>
+ </td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=6></td></tr>
+<%
+// Scriptlet implementation is required due to specific iteration
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ Object stacktop = stack.peek();
+ StudyPropertiesAction controler = (StudyPropertiesAction)stacktop;
+
+ Iterator<User> members = controler.getContributors().iterator();
+ for (Iterator<User> staff = controler.getCandidates().iterator(); staff.hasNext(); ) {
+ out.print("<tr>");
+ if (members.hasNext()) {
+ User user = members.next();
+ out.print("<td><input type=checkbox name=\"members\" value=\"" + user.getIndex() + "\" checked/></td>");
+ out.print("<td>");
+ out.print(user.toString());
+ out.print("</td>");
+ } else {
+ out.print("<td></td><td></td>");
+ }
+ for (int j=0; j<3; j++) {
+ if (staff.hasNext()) {
+ User user = staff.next();
+ out.print("<td><input type=checkbox name=\"candidates\" value=\"" + user.getIndex() + "\" /> ");
+ out.print(user.toString());
+ out.print("</td>");
+ } else {
+ out.print("<td></td>");
+ }
+ }
+ out.print("</tr>");
+ }
+ while (members.hasNext()) {
+ User user = members.next();
+ out.print("<tr>");
+ out.print("<td><input type=checkbox name=\"members\" value=\"" + user.getIndex() + "\" checked/></td>");
+ out.print("<td>");
+ out.print(user.toString());
+ out.print("</td>");
+ out.print("</tr>");
+ }
+ } else {
+%> <tr>
+ <td></td>
+ <td><s:text name="label.contributor"/></td>
+ <td></td>
+ <td></td>
+ <td><s:text name="label.manager"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=6></td></tr>
+ <tr>
+ <td>
+ <s:if test="#todo == 'display'"><s:a href="%{#edibutor}"><img src="<s:url value="/skin/icon.ed.png"/>" border="none" title="<s:text name="tooltip.edit.members"/>"/></s:a></s:if>
+ </td>
+ <td colspan=3>
+ <s:if test="contributors.size > 0">
+ <s:iterator value="contributors" status="counter">
+ <s:if test="#counter.last"><s:property value="toString()"/></s:if>
+ <s:else><s:property value="toString()"/>,</s:else>
+ </s:iterator>
+ </s:if><s:else>
+ <s:property value="%{'-'}"/>
+ </s:else>
+ </td>
+ <td><s:property value="%{author.toString()}"/></td>
+ </tr>
+<% }
+%> <tr height=15><td width=20></td></tr>
+ <tr>
+ <td><img src="<s:url value="/skin/image.downarrow.png"/>" border="none"/></td>
+ <td><b><s:text name="label.approcycle"/></b></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td></td>
+ <td><s:text name="field.documentype"/></td>
+ <td><s:text name="label.PROMOTION"/></td>
+ <td><s:text name="label.REVIEW"/></td>
+ <td><s:text name="label.APPROVAL"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=6></td></tr>
+
+ <s:set var="edited" value="cycle"/>
+ <s:set var="height" value=""/>
+ <s:iterator value="validations" status="counter">
+ <s:url id="edicycle" namespace="/study" action="edit-cycle">
+ <s:param name="cycle" value="documentType"/>
+ </s:url>
+ <s:if test="#counter.last"><s:set var="height" value="24"/></s:if>
+ <tr height="<s:property value="#height"/>">
+ <td>
+ <s:if test="#todo == 'display'">
+ <s:if test="#counter.last">
+ <s:if test="otherDocumentTypes.size > 0">
+ <s:a href="%{#addcycle}">
+ <img src="<s:url value="/skin/icon.ed.png"/>" border="none" title="<s:text name="tooltip.addvalidation"/>" />
+ </s:a>
+ </s:if>
+ </s:if><s:else>
+ <s:a href="%{#edicycle}">
+ <img src="<s:url value="/skin/icon.ed.png"/>" border="none" title="<s:text name="tooltip.editvalidation"/>" />
+ </s:a>
+ </s:else>
+ </s:if><s:elseif test="#todo == 'edicycle' && documentType == #edited">
+ <s:a href="%{#undo}"><img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="button.cancel"/>"/></s:a>
+ </s:elseif>
+ </td>
+ <td>
+ <s:if test="#counter.last">
+ <s:if test="#todo == 'edicycle' && documentType == #edited">
+ <select name="documentType" onChange="setType()">
+ <option value="0"> <s:text name="menu.select"/></option>
+ <s:iterator value="otherDocumentTypes">
+ <option value="<s:property value="index"/>"><s:text name="type.document.%{name}"/></option>
+ </s:iterator>
+ </select>
+ </s:if><s:else>
+ <s:if test="validations.size > 0"><i><s:text name="label.other"/></i></s:if>
+ <s:else><i><s:text name="label.all"/></i></s:else>
+ </s:else>
+ </s:if><s:else>
+ <s:if test="#todo == 'edicycle' && documentType == #edited">
+ <input type="hidden" name="documentType" value="<s:property value="documentTypeIndex"/>"/>
+ </s:if>
+ <s:text name="type.document.%{documentType}"/>
+ </s:else>
+ </td>
+ <td>
+ <s:if test="#todo == 'edicycle' && documentType == #edited">
+ <s:set var="selection" value="publisherIndex"/>
+ <select name="publisher">
+ <option value="0"><s:text name="label.bytheauthor"/></option>
+ <s:if test="%{#selection != 0}"><option value="<s:property value="#selection"/>" selected><s:text name="label.me"/></option></s:if>
+ <s:else><option value="<s:property value="author.index"/>"><s:text name="label.me"/></option></s:else>
+ </select>
+ </s:if><s:else>
+ <s:if test="publisherIndex > 0"><s:property value="publisherName"/></s:if>
+ <s:else><i><s:property value="publisherName"/></i></s:else>
+ </s:else>
+ </td>
+ <td>
+ <s:if test="#todo == 'edicycle' && documentType == #edited">
+ <s:set var="selection" value="reviewerIndex"/>
+ <select name="reviewer">
+ <option value="0">- <s:text name="label.skipped"/> -</option>
+ <s:iterator value="validationActors">
+ <s:if test="%{index == #selection}"><option value="<s:property value="index"/>" selected><s:property value="toString()"/></option></s:if>
+ <s:else><option value="<s:property value="index"/>"><s:property value="toString()"/></option></s:else>
+ </s:iterator>
+ </select>
+ </s:if><s:else>
+ <s:if test="reviewerIndex > 0"><s:property value="reviewerName"/></s:if>
+ <s:else><font color="#A1A192"><i><s:property value="reviewerName"/></i></font></s:else>
+ </s:else>
+ </td>
+ <td>
+ <s:if test="#todo == 'edicycle' && documentType == #edited">
+ <s:set var="selection" value="approverIndex"/>
+ <select name="approver">
+ <option value="0">- <s:text name="label.skipped"/> -</option>
+ <s:iterator value="validationActors">
+ <s:if test="%{index == #selection}"><option value="<s:property value="index"/>" selected><s:property value="toString()"/></option></s:if>
+ <s:else><option value="<s:property value="index"/>"><s:property value="toString()"/></option></s:else>
+ </s:iterator>
+ </select>
+ </s:if><s:else>
+ <s:if test="approverIndex > 0"><s:property value="approverName"/></s:if>
+ <s:else><font color="#A1A192"><i><s:property value="approverName"/></i></font></s:else>
+ </s:else>
+ </td>
+ <td align=right>
+ <s:if test="#todo == 'edicycle' && documentType == #edited">
+ <button type="submit" name="saveCycle" value="" style="width:24px; height:16px; border:0; cursor:pointer; cursor:hand; background:transparent">
+ <img src="<s:url value="/skin/image.export.png"/>" title="<s:text name="button.save"/>"/>
+ </button>
+ </s:if>
+ </td>
+ </tr>
+ </s:iterator>
+ <tr height=3><td></td></tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization of the message
+ =============================================================================================================================
+ -->
+<% String message = request.getParameter("message");
+ String value = request.getParameter("value");
+%>
+<s:set var="code"><%=message%></s:set>
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Message pane
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=article-body>
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=error>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td>
+ <s:text name="message.error.%{#code}">
+<% if (value != null) {
+%> <s:param><%=value%></s:param>
+<% }
+%> </s:text>
+ </td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center><input type=button style='width: 100px;' value="<s:text name="button.ok"/>" onClick="history.back();return false;">
+ </tr>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ </body>
+
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initialize () {
+// ----------------------
+ bring.documentName.focus();
+ }
+ </script>
+ </head>
+ <body onLoad="initialize()">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <s:if test="writeAccess">
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="study" />
+ </jsp:include>
+ </s:if>
+ <s:else>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ </s:else>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Import dialog
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.import"/></div>
+ <div id=article-body class=text>
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=25 valign=middle>
+ <td>
+ <s:text name="message.upload">
+ <s:param><s:property value="%{fileName}"/></s:param>
+ </s:text>
+ </td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td></td></tr>
+ </table>
+
+ <form name="bring" action="valid-import" method="post">
+ <s:hidden name="fileName" value="%{fileName}" />
+ <s:hidden name="reference" value="%{reference}" />
+ <s:hidden name="documentTitle" value="%{documentName}" />
+ <s:hidden name="defaultDocumentType" value="%{documentType}" />
+ <s:hidden name="defaultDocumentState" value="%{documentState}" />
+ <s:hidden name="version" value="%{version}" />
+ <s:hidden name="documentDate" value="%{documentDate}" />
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=15><td></td></tr>
+ <tr>
+ <td align=right><s:text name="field.documentype"/> </td>
+ <td align=left> <s:text name="field.documentitle"/></td>
+ </tr>
+ <tr>
+ <td>
+ <s:set var="type" value="defaultDocumentType.index"/>
+ <s:set var="selectype" value="%{'onChange=submit()'}"/>
+ <s:if test="%{documentType != 0}">
+ <s:set var="selectype" value="%{'disabled'}"/>
+ </s:if>
+ <select name="documentType" <s:property value="%{#selectype}"/>>
+ <option value="-1"><s:text name="menu.select"/></option>
+ <option value="0"> <s:text name="menu.newdoctype"/></option>
+ <optgroup label=" <s:text name="label.doctypes"/>">
+ <s:iterator value="documentTypes">
+ <s:if test="%{index == #type}">
+ <option selected value="<s:property value="index"/>"> <s:text name="type.document.%{name}"/></option>
+ </s:if><s:else>
+ <option value="<s:property value="index"/>"> <s:text name="type.document.%{name}"/></option>
+ </s:else>
+ </s:iterator>
+ </optgroup>
+ </select>
+ </td>
+ <td>
+ <s:set var="setname" value="%{''}"/>
+ <s:if test="%{reference != null}">
+ <s:set var="setname" value="%{'disabled'}"/>
+ </s:if>
+ <input type="text" name="documentName" size="60" value="<s:property value="documentName"/>" <s:property value="%{#setname}"/> />
+ </td>
+ </tr>
+ <s:if test="defaultDocumentUses.size > 0">
+ <tr><td align=right><s:text name="label.uses"/>:</td></tr>
+ <s:iterator value="defaultDocumentUses">
+ <tr>
+ <td align=right><input type="checkbox" name="uses" value="<s:property value="index"/>" checked></td>
+ <td><s:property value="title"/></td>
+ </tr>
+ </s:iterator>
+ </s:if>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=right>
+ <input type="submit" name="cancel" value="<s:text name="button.cancel"/>"/>
+ </td>
+ <td align=left>
+ <input type="submit" name="save" value="<s:text name="button.import"/>"/>
+ <select name="documentState" <s:property value="%{#setname}"/>>
+ <s:if test="documentState == 'EXTERN'">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ <option value="EXTERN" selected><s:text name="label.EXTERN"/></option>
+ </s:if>
+ <s:elseif test="documentState == 'inDRAFT'">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT" selected><s:text name="label.inDRAFT"/></option>
+ <option value="EXTERN"><s:text name="label.EXTERN"/></option>
+ </s:elseif>
+ <s:else>
+ <option value="inWORK" selected><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ <option value="EXTERN"><s:text name="label.EXTERN"/></option>
+ </s:else>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization of the message
+ =============================================================================================================================
+ -->
+<% String message = request.getParameter("message");
+ String value = request.getParameter("value");
+%>
+<s:set var="code"><%=message%></s:set>
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Message pane
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.import"/></div>
+ <div id=article-body>
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=25 valign=middle>
+ <td>
+ <s:text name="message.upload">
+ <s:param><s:property value="%{fileName}"/></s:param>
+ </s:text>
+ </td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td></td></tr>
+ </table>
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=error>
+ <tr height=5><td></td></tr>
+ <tr>
+ <td>
+ <s:text name="message.error.%{#code}">
+<% if (value != null) {
+%> <s:param><%=value%></s:param>
+<% }
+%> </s:text>
+ </td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=center>
+ <s:url id="back" namespace="/study" action="step-study" />
+ <s:a href="%{#back}">
+ <input type=button style='width: 100px;' value="<s:text name="button.ok"/>">
+ </s:a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ </div>
+
+ </body>
+
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<% String init = request.getParameter("init");
+ if (init == null) init = "none";
+%>
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initialize (context) {
+// -----------------------------
+ if (context == "focus") create.elements[0].focus();
+ }
+ </script>
+ </head>
+
+ <body onLoad="initialize('<%=init%>')">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="scenario" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- New scenario properties
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.newscenario"/></div>
+ <div id=article-body class=text>
+ <form name="create" action="valid-add" method="post">
+ <table class="text">
+ <tr>
+ <td><s:text name="field.scenariotitle"/>*: </td>
+ <td>
+ <input type=text size="25" name=title value="<s:property value="title"/>">
+ </td>
+ </tr>
+ <tr>
+ <td><s:text name="field.scenario"/>*: </td>
+ <td>
+ <s:set var="previous" value="selectedScenarioIndex"/>
+ <select name="selectedScenario" style="width:204px">
+ <s:iterator value="scenarii">
+ <s:if test="%{index == #previous}">
+ <option selected value="<s:property value="index"/>"><s:property value="%{title}"/></option>
+ </s:if><s:else>
+ <option value="<s:property value="index"/>"><s:property value="%{title}"/></option>
+ </s:else>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><i><s:text name="message.info.bastep"/></i></td>
+ </tr>
+ <tr>
+ <td><s:text name="field.activity"/> : </td>
+ <td>
+ <s:if test="sharesStep()">
+ <input type=text size="25" value="<s:text name="menu.step.%{sharedStep}"/>" disabled>
+ </s:if><s:else>
+ <input type=text size="25" disabled>
+ </s:else>
+ </td>
+ </tr>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=right>
+ <input type="submit" name="cancel" value="<s:text name="button.cancel"/>"/>
+ </td>
+ <td>
+ <input type="submit" name="save" value="<s:text name="button.newscenario"/>"/>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initialize () {
+// ----------------------
+ create.elements[0].focus();
+ }
+
+ function setValue () {
+// -------------------
+ var select = create.elements[1].value; // contextValue select input
+ if (select == "0") { // Creation of a new context type
+ tds = document.getElementById("select");
+ tde = document.getElementById("enter");
+ tds.style.display = "none"; // Hides the select input
+ tde.style.display = "block"; // Displays the text input
+ }
+ create.elements[2].focus();
+ }
+ </script>
+ </head>
+
+ <body onLoad="initialize()">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="create" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Creation menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+<!-- New study dialog
+ =============================================================================================================================
+ -->
+ <div id=center-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.newstudy"/></div>
+ <div id=top-spacer></div>
+ <form name="create" action="valid-new" method="post">
+ <table class="text">
+
+ <tr class="error">
+ <td colspan=3><s:text name="%{error}"/></td>
+ </tr>
+
+ <tr>
+ <td>
+ <s:text name="field.studytitle"/>*:
+ </td>
+ <td colspan=2>
+ <input type=text size="60" name=title value="<s:property value="title"/>">
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <s:text name="field.product"/>*:
+ </td>
+ <s:if test="projectContextValues.size > 0">
+ <td id=select>
+ <select name="projectContext" style="width:214px" onChange="setValue()">
+ <option value="-1"><s:text name="menu.select"/></option>
+ <option value="0"> <s:text name="menu.newproduct"/></option>
+ <optgroup label=" <s:text name="label.products"/>">
+ <s:iterator value="projectContextValues">
+ <option value="<s:property value="index"/>"> <s:property value="value"/></option>
+ </s:iterator>
+ </optgroup>
+ </select>
+ </td>
+ <td id=enter style="display: none">
+ <input type=text size="30" name=projectContext>
+ </td>
+ </s:if>
+ <s:else>
+ <td>
+ <input type=hidden name=projectContext value="0">
+ <input type=text size="30" name=projectContext>
+ </td>
+ </s:else>
+ <td align=right>
+ <input type="submit" value="<s:text name="button.newstudy"/>"/>
+ </td>
+ </tr>
+
+ </table>
+ </form>
+ <div id=top-spacer></div>
+ </div>
+ </div>
+
+<!-- Reserved
+ -->
+ <div id=right-pane></div>
+ <div id=bottom-spacer></div>
+
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.som.KnowledgeElement"%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization of the context
+ =============================================================================================================================
+ -->
+<% String action = request.getParameter("action");
+
+ ApplicationRights user = (ApplicationRights)session.getAttribute("user.rights");
+ String result = "uptodate";
+ boolean anonymous = true;
+
+ if (user.canCreateStudy()) anonymous = false;
+ if (session.getAttribute("search.result") == null) result = "obsolete";
+%>
+<s:set var="todo"><%=action%></s:set>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript" type="text/javascript" src="../jvs/search.js"></script>
+ </head>
+
+ <body onLoad="initialize('<%=result%>')">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Search menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+ <div id=main-pane>
+
+<!-- Search criteria section
+ =============================================================================================================================
+ -->
+ <div id="tab-bar">
+ <jsp:include page="/jsp/searchtabs.jsp"/>
+ </div>
+ <div id=article-box>
+ <div id="top-spacer"></div>
+ <div id="article-body">
+ <form name="search" action="refresh-knowledge" method="post">
+ <input type=hidden name="contextIndex" />
+ <s:set var="valid"><s:text name="button.result"/></s:set>
+
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20>
+ <td width=40%> <s:text name="field.among"/></td>
+ <td width=60%> <s:text name="field.context"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=3></td></tr>
+ <tr valign=top>
+ <td>
+ <div id="article-item">
+ <s:if test="owner == 'all'">
+ <input type=radio name="owner" value="all" checked onClick="unsetReference()"><s:text name="criterion.knowledge.all"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="all" onClick="unsetReference()"><s:text name="criterion.knowledge.all"/>
+ </s:else>
+ <s:set var="type" value="state"/>
+ <select name="state" style="width: <s:text name="size.knowledge.state"/>" onChange="changeFilter()">
+ <option value="0"><s:text name="menu.select" /></option>
+ <s:iterator value="knowledgeTypes">
+ <s:if test="%{index == #type}">
+ <option value="<s:property value="index"/>" selected> <s:text name="type.knowledge.%{name}" /></option>
+ </s:if><s:else>
+ <option value="<s:property value="index"/>"> <s:text name="type.knowledge.%{name}" /></option>
+ </s:else>
+ </s:iterator>
+ </select>
+ </div>
+ <div id="article-item">
+ <s:if test="owner == 'his'">
+ <input type=radio name="owner" value="his" checked onClick="unsetReference()"><s:text name="criterion.knowledge.his"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="his" onClick="unsetReference()"><s:text name="criterion.knowledge.his"/>
+ </s:else>
+ <s:set var="him" value="author"/>
+ <select name="author" style="width: <s:text name="size.knowledge.author"/>" onChange="changeFilter()">
+ <option value="0"><s:text name="menu.select" /></option>
+ <s:iterator value="candidates">
+ <s:if test="%{index == #him}">
+ <option value="<s:property value="index"/>" selected><s:property value="toString()"/></option>
+ </s:if><s:else>
+ <option value="<s:property value="index"/>"><s:property value="toString()"/></option>
+ </s:else>
+ </s:iterator>
+ </select>
+ </div>
+ <div id="article-item">
+<% if (anonymous) {
+%> <input type=radio name="owner" value="mine" disabled><font color="#A1A192"><s:text name="criterion.knowledge.mine"/></font>
+<% } else {
+%> <s:if test="owner == 'mine'">
+ <input type=radio name="owner" value="mine" checked onClick="unsetReference()"><s:text name="criterion.knowledge.mine"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="mine" onClick="unsetReference()"><s:text name="criterion.knowledge.mine"/>
+ </s:else>
+<% } %> </div>
+ <div id="article-item">
+ <s:if test="owner == 'ref'">
+ <input type=radio name="owner" value="ref" checked onClick="setReference()"><s:text name="criterion.knowledge.ref"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="ref" onClick="setReference()"><s:text name="criterion.knowledge.ref"/>
+ </s:else>
+ <div id=refid>
+ <input type=text name="reference" value="<s:property value="%{reference}"/>" size="18" onKeydown="changeFilter()"/>
+ </div>
+ </div>
+ </td>
+ <td rowspan=2>
+ <div id=contlist>
+
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <s:iterator value="simulationContexts">
+ <tr>
+ <td><input type=checkbox checked onClick="removeContext('<s:property value="index"/>')"> </td>
+ <td>
+ <s:if test="%{type.isApproved()}"><s:text name="type.context.%{type.name}"/>: </s:if>
+ <s:else><s:property value="%{type.name}"/>: </s:else>
+ </td>
+ <td><s:property value="value"/></td>
+ </tr>
+ </s:iterator>
+
+ <s:if test="%{#todo == 'setContext'}">
+ <tr>
+ <td>
+ <img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" onClick="cancel()" />
+ </td>
+ <td>
+ <s:if test="%{selectedContextType.isApproved()}"><s:text name="type.context.%{selectedContextType.name}"/>: </s:if>
+ <s:else><s:property value="%{selectedContextType.name}"/>: </s:else>
+ </td>
+ <td>
+ <select name="contextValue" onChange="submit()">
+ <option value="-1"><s:text name="menu.select"/></option>
+ <s:iterator value="contextValueOptions">
+ <option value="<s:property value="index"/>"> <s:property value="value" /></option>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ </s:if>
+ </table>
+
+ <s:if test="%{#todo != 'setContext'}">
+ <select name="contextType" onChange="submit()">
+ <option value="-1"><s:text name="menu.addcontext"/></option>
+ <s:set var="snum" value="null"/>
+ <s:iterator value="contextTypeOptions">
+ <s:if test="%{#snum != attachedStep.number}">
+ <s:set var="snum" value="%{attachedStep.number}"/>
+ <optgroup label=" <s:text name="folder.step.%{#snum}"/>">
+ </s:if>
+ <option value="<s:property value="index"/>">
+ <s:if test="%{isApproved()}"> <s:text name="type.context.%{name}" /></s:if>
+ <s:else> <s:property value="%{name}" /></s:else>
+ </option>
+ </s:iterator>
+ </select>
+ </s:if>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div id=wordin>
+ <br/><s:text name="field.contain"/> : <input type=text name=words value="<s:property value="%{words}"/>" onKeydown="changeFilter()" />
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td align=left>
+ <input type="submit" name="refresh" value="<s:text name="button.result"/>" disabled/>
+ </td>
+ </tr>
+ </table>
+
+ </form>
+ </div>
+ </div>
+
+<!-- Result list
+ =============================================================================================================================
+ -->
+ <div id=resulist>
+ <div id=article-box>
+ <div id=section><s:text name="title.result"/></div>
+ <div id=article-body class=text>
+
+ <s:if test="result.size > 0">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td width=80><s:text name="label.reference"/></td>
+ <td><s:text name="label.title"/><img src="<s:url value="/skin/icon.sortup.png"/>" border="none"/></td>
+ <td width=150><s:text name="label.author"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=4></td></tr>
+ <s:iterator value="result">
+ <tr>
+ <td><img src="<s:url value="/skin/icon.%{progressState}.png"/>" width=12 height=12 border="none" title=""/></td>
+ <td><s:property value="reference"/></td>
+ <td>
+ <s:url id="open" namespace="/study" action="open-knowledge?selection=0">
+ <s:param name="index" value="%{index}"/>
+ </s:url>
+ <s:a href="%{open}" cssClass="link"><s:property value="title"/></s:a>
+ </td>
+ <td><s:property value="authorName"/></td>
+ </tr>
+ </s:iterator>
+ </table>
+ </s:if>
+
+ <s:else>
+ <s:text name="message.noknowledge" />
+ </s:else>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@ page import="org.splat.som.Study"%>
+<%@ page import="org.splat.som.ApplicationRights"%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+
+<!-- Initialization of the context
+ =============================================================================================================================
+ -->
+<% String action = request.getParameter("action");
+
+ ApplicationRights user = (ApplicationRights)session.getAttribute("user.rights");
+ String result = "uptodate";
+ boolean anonymous = true;
+
+ if (user.canCreateStudy()) anonymous = false;
+ if (session.getAttribute("search.result") == null) result = "obsolete";
+%>
+<s:set var="todo"><%=action%></s:set>
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript" type="text/javascript" src="../jvs/search.js"></script>
+ </head>
+
+ <body onLoad="initialize('<%=result%>')">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ <div id=top-spacer></div>
+
+<!-- Search menu
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="open" />
+ </jsp:include>
+ </div>
+
+ <div id=main-pane>
+
+<!-- Search criteria section
+ =============================================================================================================================
+ -->
+ <div id="tab-bar">
+ <jsp:include page="/jsp/searchtabs.jsp"/>
+ </div>
+ <div id=article-box>
+ <div id="top-spacer"></div>
+ <div id="article-body">
+ <form name="search" action="refresh-study" method="post">
+ <input type=hidden name="contextIndex" />
+ <s:set var="valid"><s:text name="button.result"/></s:set>
+
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20>
+ <td width=40%> <s:text name="field.among"/></td>
+ <td width=60%> <s:text name="field.context"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=3></td></tr>
+ <tr valign=top>
+ <td>
+ <div id="article-item">
+ <s:if test="owner == 'all'">
+ <input type=radio name="owner" value="all" checked onClick="unsetReference()"><s:text name="criterion.study.all"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="all" onClick="unsetReference()"><s:text name="criterion.study.all"/>
+ </s:else>
+ <select name="state" style="width: <s:text name="size.study.state"/>" onChange="changeFilter()">
+ <option value="0"><s:text name="menu.select" /></option>
+ <s:if test="area == 'reference'">
+ <s:if test="state == 'ARCHIVED'"> <option value="ARCHIVED" selected><s:text name="criterion.archived" /></option></s:if>
+ <s:else> <option value="ARCHIVED" ><s:text name="criterion.archived" /></option></s:else>
+ <s:if test="state == 'TEMPLATE'"> <option value="TEMPLATE" selected><s:text name="criterion.template" /></option></s:if>
+ <s:else> <option value="TEMPLATE" ><s:text name="criterion.template" /></option></s:else>
+ </s:if><s:else>
+ <s:if test="state == 'inPROGRESS'"><option value="inPROGRESS" selected><s:text name="criterion.inprogress" /></option></s:if>
+ <s:else> <option value="inPROGRESS" ><s:text name="criterion.inprogress" /></option></s:else>
+ <s:if test="state == 'inDRAFT'"> <option value="inDRAFT" selected><s:text name="criterion.indraft" /></option></s:if>
+ <s:else> <option value="inDRAFT" ><s:text name="criterion.indraft" /></option></s:else>
+ <s:if test="state == 'inCHECK'"> <option value="inCHECK" selected><s:text name="criterion.incheck" /></option></s:if>
+ <s:else> <option value="inCHECK" ><s:text name="criterion.incheck" /></option></s:else>
+ <s:if test="state == 'APPROVED'"> <option value="APPROVED" selected><s:text name="criterion.approved" /></option></s:if>
+ <s:else> <option value="APPROVED" ><s:text name="criterion.approved" /></option></s:else>
+ </s:else>
+ </select>
+ </div>
+ <div id="article-item">
+ <s:if test="owner == 'his'">
+ <input type=radio name="owner" value="his" checked onClick="unsetReference()"><s:text name="criterion.study.his"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="his" onClick="unsetReference()"><s:text name="criterion.study.his"/>
+ </s:else>
+ <s:set var="him" value="author"/>
+ <select name="author" style="width: <s:text name="size.study.author"/>" onChange="changeFilter()">
+ <option value="0"><s:text name="menu.select" /></option>
+ <s:iterator value="candidates">
+ <s:if test="%{index == #him}">
+ <option value="<s:property value="index"/>" selected><s:property value="toString()"/></option>
+ </s:if><s:else>
+ <option value="<s:property value="index"/>"><s:property value="toString()"/></option>
+ </s:else>
+ </s:iterator>
+ </select>
+ </div>
+ <div id="article-item">
+<% if (anonymous) {
+%> <input type=radio name="owner" value="mine" disabled><font color="#A1A192"><s:text name="criterion.study.mine"/></font>
+<% } else {
+%> <s:if test="owner == 'mine'">
+ <input type=radio name="owner" value="mine" checked onClick="unsetReference()"><s:text name="criterion.study.mine"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="mine" onClick="unsetReference()"><s:text name="criterion.study.mine"/>
+ </s:else>
+<% } %> </div>
+ <div id="article-item">
+ <s:if test="owner == 'ref'">
+ <input type=radio name="owner" value="ref" checked onClick="setReference()"><s:text name="criterion.study.ref"/>
+ </s:if><s:else>
+ <input type=radio name="owner" value="ref" onClick="setReference()"><s:text name="criterion.study.ref"/>
+ </s:else>
+ <div id=refid>
+ <input type=text name="reference" value="<s:property value="%{reference}"/>" size="18" onKeydown="changeFilter()"/>
+ </div>
+ </div>
+ </td>
+ <td rowspan=2>
+ <div id=contlist>
+
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <s:iterator value="simulationContexts">
+ <tr>
+ <td><input type=checkbox checked onClick="removeContext('<s:property value="index"/>')"> </td>
+ <td>
+ <s:if test="%{type.isApproved()}"><s:text name="type.context.%{type.name}"/>: </s:if>
+ <s:else><s:property value="%{type.name}"/>: </s:else>
+ </td>
+ <td><s:property value="value"/></td>
+ </tr>
+ </s:iterator>
+
+ <s:if test="%{#todo == 'setContext'}">
+ <tr>
+ <td>
+ <img src="<s:url value="/skin/icon.undo.png"/>" border="none" title="<s:text name="tooltip.cancel"/>" onClick="cancel()" />
+ </td>
+ <td>
+ <s:if test="%{selectedContextType.isApproved()}"><s:text name="type.context.%{selectedContextType.name}"/>: </s:if>
+ <s:else><s:property value="%{selectedContextType.name}"/>: </s:else>
+ </td>
+ <td>
+ <select name="contextValue" onChange="submit()">
+ <option value="-1"><s:text name="menu.select"/></option>
+ <s:iterator value="contextValueOptions">
+ <option value="<s:property value="index"/>"> <s:property value="value" /></option>
+ </s:iterator>
+ </select>
+ </td>
+ </tr>
+ </s:if>
+ </table>
+
+ <s:if test="%{#todo != 'setContext'}">
+ <select name="contextType" onChange="submit()">
+ <option value="-1"><s:text name="menu.addcontext"/></option>
+ <s:iterator value="contextTypeOptions">
+ <option value="<s:property value="index"/>">
+ <s:if test="%{isApproved()}"> <s:text name="type.context.%{name}" /></s:if>
+ <s:else> <s:property value="%{name}" /></s:else>
+ </option>
+ </s:iterator>
+ </select>
+ </s:if>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <div id=wordin>
+ <br/><s:text name="field.contain"/> : <input type=text name=words value="<s:property value="%{words}"/>" onKeydown="changeFilter()" />
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td align=left>
+ <input type="submit" name="refresh" value="<s:text name="button.result"/>" disabled/>
+ </td>
+ </tr>
+ </table>
+
+ </form>
+ </div>
+ </div>
+
+<!-- Result list
+ =============================================================================================================================
+ -->
+ <div id=resulist>
+ <div id=article-box>
+ <div id=section><s:text name="title.result"/></div>
+ <div id=article-body class=text>
+
+ <s:if test="result.size > 0">
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=20 valign=bottom>
+ <td width=20></td>
+ <td width=80><s:text name="label.reference"/></td>
+ <td><s:text name="label.title"/><img src="<s:url value="/skin/icon.sortup.png"/>" border="none"/></td>
+ <td width=150><s:text name="label.manager"/></td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td colspan=4></td></tr>
+ <s:iterator value="result">
+ <tr>
+ <td><img src="<s:url value="/skin/icon.%{progressState}.png"/>" width=12 height=12 border="none" title=""/></td>
+ <td><s:property value="reference"/></td>
+ <td>
+ <s:url id="open" namespace="/study" action="open-study?selection=0.0">
+ <s:param name="index" value="%{index}"/>
+ </s:url>
+ <s:a href="%{open}" cssClass="link"><s:property value="title"/></s:a>
+ </td>
+ <td><s:property value="authorName"/></td>
+ </tr>
+ </s:iterator>
+ </table>
+ </s:if>
+
+ <s:else>
+ <s:text name="message.nostudy" />
+ </s:else>
+ </div>
+ </div>
+ </div>
+
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function enableUpload () {
+// ------------------------
+ upform.doIt.disabled = false;
+ }
+ </script>
+ </head>
+ <body>
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Updload dialog
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.%{nextAction}"/></div>
+ <div id=article-body class=text>
+ <form name="upform" enctype="multipart/form-data" action="upload" method="post">
+ <table>
+ <tr height=10><td></td></tr>
+ <s:hidden name="nextAction" value="%{nextAction}" />
+ <s:hidden name="index" value="%{index}" />
+ <s:file name="upload" key="field.upload" onChange="enableUpload()" />
+ <tr height=10><td></td></tr>
+ <tr>
+ <td></td>
+ <td align=right>
+ <input type="submit" name="cancel" value="<s:text name="button.cancel"/>"/>
+ <input type="submit" name="doIt" value="<s:text name="button.upload"/>" disabled="true"/>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%>
+<%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ <script language="JavaScript">
+
+ function initialize () {
+// ----------------------
+ version.description.focus();
+ }
+ </script>
+ </head>
+ <body onLoad="initialize()">
+<!-- Menu-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+
+<!-- Title-bar
+ =============================================================================================================================
+ -->
+ <jsp:include page="/jsp/titlebar.jsp">
+ <jsp:param name="entity" value="study" />
+ <jsp:param name="disable" value="true" />
+ </jsp:include>
+
+<!-- Left pane
+ =============================================================================================================================
+ -->
+ <div id=left-pane>
+ <s:if test="writeAccess">
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="study" />
+ </jsp:include>
+ </s:if>
+ <s:else>
+ <jsp:include page="/jsp/toolbar.jsp">
+ <jsp:param name="tools" value="none" />
+ </jsp:include>
+ </s:else>
+ <div id=top-spacer></div>
+ <jsp:include page="/jsp/menuitem.jsp">
+ <jsp:param name="menu" value="study" />
+ </jsp:include>
+ <jsp:include page="/jsp/studyProperties.jsp" />
+ </div>
+
+<!-- Import dialog
+ =============================================================================================================================
+ -->
+ <div id=main-pane>
+ <div id=article-box>
+ <div id=section><s:text name="title.version"/></div>
+ <div id=article-body class=text>
+ <table width=100% cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=25 valign=middle>
+ <td>
+ <s:text name="message.upload">
+ <s:param><s:property value="%{fileName}"/></s:param>
+ </s:text>
+ </td>
+ </tr>
+ <tr height=1 bgcolor=#AAAAAA><td></td></tr>
+ </table>
+
+ <form name="version" action="valid-version" method="post">
+ <s:hidden name="fileName" value="%{fileName}" />
+ <s:hidden name="index" value="%{index}" />
+ <s:hidden name="version" value="%{version}" />
+ <s:hidden name="date" value="%{date}" />
+ <s:hidden name="defaultDescription" value="%{description}" />
+ <table cellpadding=0 cellspacing=0 border=0 class=text>
+ <tr height=15><td></td></tr>
+ <tr>
+ <td align=right><s:text name="field.documentype"/> </td>
+ <td align=left> <s:text name="field.documentitle"/></td>
+ </tr>
+ <tr>
+ <td align=right>
+ <select name="documentType" disabled="disabled">
+ <option selected value="<s:property value="defaultDocumentType.index"/>"> <s:text name="type.document.%{defaultDocumentType.name}"/></option>
+ </select>
+ </td>
+ <td align=left>
+ <input type="text" name="documentName" disabled="disabled" size="60" value="<s:property value="documentName"/>" />
+ </td>
+ </tr>
+ <s:if test="defaultDocumentUses.size > 0">
+ <tr><td align=right><s:text name="label.uses"/>:</td></tr>
+ <s:iterator value="defaultDocumentUses">
+ <tr>
+ <td align=right><input type="checkbox" name="uses" value="<s:property value="index"/>" checked></td>
+ <td><s:property value="title"/></td>
+ </tr>
+ </s:iterator>
+ </s:if>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=right><s:text name="label.modifications"/>:</td>
+ <td>
+ <s:set var="sethistory" value="%{''}"/>
+ <s:if test="%{description != null}">
+ <s:set var="sethistory" value="%{'disabled'}"/>
+ </s:if>
+ <input type="text" name="description" size="60" value="<s:property value="description"/>" <s:property value="%{#sethistory}"/> />
+ </td>
+ </tr>
+ <s:if test="dependencies.size > 0">
+ <tr height=10><td></td></tr>
+ <tr height=10 class=warning>
+ <td colspan=2><b><s:text name="label.warning"/>:</b><br><s:text name="message.dependencies"/></td>
+ </tr>
+ <tr height=5><td></td></tr>
+ <s:iterator value="dependencies">
+ <tr>
+ <td align=right><input type="checkbox" name="usedBy" value="<s:property value="index"/>"></td>
+ <td><s:property value="value().title"/></td>
+ </tr>
+ </s:iterator>
+ <tr>
+ <tr>
+ </s:if>
+ <tr height=10><td></td></tr>
+ <tr>
+ <td align=right>
+ <input type="submit" name="cancel" value="<s:text name="button.cancel"/>"/>
+ </td>
+ <td align=left>
+ <s:set var="setstate" value="%{''}"/>
+ <s:if test="%{version != ''}">
+ <s:set var="setstate" value="%{'disabled'}"/>
+ </s:if>
+ <input type="submit" name="save" value="<s:text name="button.import"/>"/>
+ <select name="documentState" <s:property value="%{#setstate}"/>>
+ <s:if test="documentState == 'inDRAFT'">
+ <option value="inWORK"><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT" selected><s:text name="label.inDRAFT"/></option>
+ </s:if><s:else>
+ <option value="inWORK" selected><s:text name="label.inWORK"/></option>
+ <option value="inDRAFT"><s:text name="label.inDRAFT"/></option>
+ </s:else>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </form>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
\ No newline at end of file
--- /dev/null
+<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
+ pageEncoding="ISO-8859-1"
+%><%@
+ taglib prefix="s" uri="/struts-tags"
+%>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+ <title><s:text name="name.module"/></title>
+ <link href=<s:url value="/skin/default.css"/> rel="stylesheet" type="text/css">
+ </head>
+
+ <body>
+<!-- Menu-bar
+ -->
+ <jsp:include page="/jsp/menubar.jsp">
+ <jsp:param name="menu" value="none" />
+ </jsp:include>
+
+<!-- Title-bar
+ -->
+ <div id=title-bar><s:text name="message.welcome"/></div>
+
+ </body>
+
+</html>
\ No newline at end of file
--- /dev/null
+siman.src.dir=src
+siman.bin.dir=build
+siman.dist.dir=dist
+webapp.name=siman
+siman.content.dir=WebContent
+siman-common.project.name=Siman-Common
+config.src.dir=conf
+config.debug.dir=src
+config.release.dir=conf/generated/release
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Siman-War" default="build-war">
+
+ <property environment="env" />
+
+ <property file="build.properties" description="set the build parameters" />
+ <property file="../${siman-common.project.name}/build.properties" description="set the build parameters" />
+ <property file="../${splat.project.name}/build.properties" description="set the build parameters" />
+
+ <property name="time.simple.pattern" value="dd/MM/yyyy" />
+ <tstamp>
+ <format property="datesimple" pattern="${time.simple.pattern}" />
+ </tstamp>
+
+ <property name="time.pattern" value="hh:mm:ss" />
+ <tstamp>
+ <format property="time" pattern="${time.pattern}" />
+ </tstamp>
+
+ <!-- ================================================= -->
+ <!-- siman-common: Build Siman-Common project -->
+ <!-- ================================================= -->
+ <target name="siman-common" description="Builds Siman-Common project">
+ <ant dir="../${siman-common.project.name}" />
+ </target>
+
+ <!-- ================================================= -->
+ <!-- copy-config: Copy parametrized config files -->
+ <!-- ================================================= -->
+ <macrodef name="copy-config">
+ <!-- Parameter "mode" can be equal to "debug" or "release" -->
+ <attribute name="mode" />
+ <sequential>
+ <echo message="Generating configuration in @{mode} mode" />
+ <!-- Copy files from config source directory according to the given mode -->
+ <copy todir="${basedir}/${config.@{mode}.dir}" overwrite="true">
+ <fileset dir="${config.src.dir}/templates">
+ </fileset>
+ <!-- Transform the files from templates substituting properties values -->
+ <filterset>
+ <filter token="datesimple" value="${datesimple}" />
+ <filter token="time" value="${time}" />
+ <!-- Get properties to substitute according to the given mode -->
+ <filtersfile file="${config.src.dir}/@{mode}.properties" />
+ <!-- Substitute the complete config source directory path value in files -->
+ <filter token="config.src.dir" value="${basedir}${file.separator}${config.src.dir}${file.separator}templates" />
+ </filterset>
+ </copy>
+ </sequential>
+ </macrodef>
+
+ <!-- ================================================= -->
+ <!-- debug-config: Generate parametrized config files -->
+ <!-- ================================================= -->
+ <target name="debug-config" description="Generate parametrized debug config files">
+ <copy-config mode="debug" />
+ </target>
+
+ <!-- =================================================== -->
+ <!-- release-config: Generate parametrized config files -->
+ <!-- =================================================== -->
+ <target name="release-config" description="Generate parametrized release config files">
+ <copy-config mode="release" />
+ </target>
+
+ <!-- ===================================================================== -->
+ <!-- build-dist : Create the war file -->
+ <!-- ===================================================================== -->
+ <target name="build-war" depends="clean, siman-common, release-config" description="Builds the WAR distribution">
+ <echo message="build ${webapp.name}.war" />
+
+ <mkdir dir="${siman.dist.dir}" />
+ <war destfile="${siman.dist.dir}/${webapp.name}.war" webxml="${basedir}/${siman.content.dir}/WEB-INF/web.xml">
+ <fileset dir="${siman.content.dir}" />
+ <!-- Copy all sources except those which should be generated -->
+ <classes dir="${siman.bin.dir}/classes">
+ <present present="srconly" targetdir="${config.release.dir}" />
+ </classes>
+ <!-- Copy generated sources -->
+ <zipfileset dir="${config.release.dir}" prefix="WEB-INF/classes" />
+ <manifest>
+ <attribute name="Built-By" value="${app.author}" />
+ <attribute name="Version" value="${app.version}" />
+ <attribute name="Built-Date" value="${datesimple}" />
+ </manifest>
+ <lib dir="${basedir}/../${siman-common.project.name}/${siman-common.dist.dir}" includes="**/*.jar" />
+ <lib dir="${basedir}/../${siman-common.project.name}/${siman-common.lib.dir}" includes="**/*.jar" />
+ <lib dir="${basedir}/../${splat.project.name}/${splat.dist.dir}" includes="**/*.jar" />
+ <lib dir="${basedir}/../${splat.project.name}/${splat.lib.dir}" includes="**/*.jar" />
+ </war>
+ </target>
+
+ <!-- ================================================= -->
+ <!-- clean: Clean the dist directory -->
+ <!-- ================================================= -->
+ <target name="clean" description="clean the build directory">
+ <echo message="deleting files in ${siman.dist.dir}" />
+ <delete includeemptydirs="true" failonerror="false">
+ <fileset dir="${siman.dist.dir}" includes="**/*" />
+ </delete>
+ </target>
+</project>
--- /dev/null
+# Connection properties
+connection.url=jdbc:mysql://localhost/simer
+connection.username=simer
+connection.password=admin
+
+# Log properties
+hibernate.show_sql=true
+root.logger.appender=<appender-ref ref="console"/>
+root.logger.level=INFO
+com.opensymphony.logger.level=DEBUG
+org.apache.struts2.logger.level=DEBUG
+org.springframework.logger.level=DEBUG
+org.hibernate.logger.level=DEBUG
+org.splat.siman.logger.level=DEBUG
+log4j.logger.org.hibernate.logger.level=DEBUG
+
+# Generated file header
+file.header=Don't edit manually. See the source in @config.src.dir@.
+
+
+
+
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+<!-- Generated at 21/09/2012 04:30:35 -->
+<!-- -------------------------------- -->
+
+ <session-factory>
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
+ <property name="connection.url">jdbc:mysql://localhost/simer</property>
+ <property name="connection.username">simer</property>
+ <property name="connection.password">admin</property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+ <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+
+ <!-- Enable Hibernate's automatic session context management -->
+ <property name="current_session_context_class">thread</property>
+
+ <!-- Echo all executed SQL statements to stdout -->
+ <property name="hibernate.show_sql">false</property>
+
+ <!-- mapping files -->
+ <mapping resource="org/splat/kernel/Persistent.hbm.xml" />
+ <mapping resource="org/splat/kernel/Any.hbm.xml" />
+ <mapping resource="org/splat/kernel/Entity.hbm.xml" />
+ <mapping resource="org/splat/kernel/Attribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Relation.hbm.xml" />
+ <mapping resource="org/splat/kernel/IDPool.hbm.xml" />
+ <mapping resource="org/splat/kernel/TextAttribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Text.hbm.xml" />
+ <mapping resource="org/splat/kernel/User.hbm.xml" />
+
+ <mapping resource="org/splat/som/ProjectElement.hbm.xml" />
+ <mapping resource="org/splat/som/Study.hbm.xml" />
+ <mapping resource="org/splat/som/Scenario.hbm.xml" />
+ <mapping resource="org/splat/som/Attributes.hbm.xml" />
+ <mapping resource="org/splat/som/Relations.hbm.xml" />
+ <mapping resource="org/splat/som/File.hbm.xml" />
+ <mapping resource="org/splat/som/Document.hbm.xml" />
+ <mapping resource="org/splat/som/Publication.hbm.xml" />
+ <mapping resource="org/splat/som/ValidationCycle.hbm.xml" />
+ <mapping resource="org/splat/som/Timestamp.hbm.xml" />
+ <mapping resource="org/splat/som/SimulationContext.hbm.xml" />
+ <mapping resource="org/splat/som/KnowledgeElement.hbm.xml" />
+ <mapping resource="org/splat/som/IDBuilder.hbm.xml" />
+
+ </session-factory>
+
+</hibernate-configuration>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "../WebContent/META-INF/dtds/log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <!-- Generated at 21/09/2012 04:30:35 -->
+ <!-- -------------------------------- -->
+
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%t] %-5p %-11c{1} - %m%n"/>
+ </layout>
+ </appender>
+
+ <appender name="logfile" class="org.apache.log4j.RollingFileAppender">
+ <param name="File" value="${catalina.home}/logs/siman.log" />
+ <param name="MaxFileSize" value="500KB" />
+ <param name="MaxBackupIndex" value="10" />
+ <param name="Append" value="false" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%t] %-5p %-11c{1} - %m%n"/>
+ </layout>
+ </appender>
+
+ <!-- specify the logging level for loggers from other libraries -->
+ <logger name="com.opensymphony">
+ <level value="INFO" />
+ </logger>
+
+ <logger name="org.apache.struts2">
+ <level value="INFO" />
+ </logger>
+
+ <logger name="org.springframework">
+ <level value="INFO" />
+ </logger>
+
+ <logger name="org.hibernate">
+ <level value="INFO" />
+ </logger>
+
+ <logger name="org.splat.siman">
+ <level value="INFO" />
+ </logger>
+
+ <logger name="log4j.logger.org.hibernate">
+ <level value="INFO" />
+ </logger>
+
+ <!-- for all other loggers log only debug and above log messages -->
+ <root>
+ <priority value="INFO"/>
+ <appender-ref ref="logfile" />
+
+ </root>
+
+</log4j:configuration>
\ No newline at end of file
--- /dev/null
+# Connection properties
+connection.url=jdbc:mysql://localhost/simer
+connection.username=simer
+connection.password=admin
+
+# Log properties
+hibernate.show_sql=false
+root.logger.appender=
+root.logger.level=INFO
+com.opensymphony.logger.level=INFO
+org.apache.struts2.logger.level=INFO
+org.springframework.logger.level=INFO
+org.hibernate.logger.level=INFO
+org.splat.siman.logger.level=INFO
+log4j.logger.org.hibernate.logger.level=INFO
+
+# Generated file header
+file.header=--------------------------------
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+<!-- Generated at @datesimple@ @time@ -->
+<!-- @file.header@ -->
+
+ <session-factory>
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
+ <property name="connection.url">@connection.url@</property>
+ <property name="connection.username">@connection.username@</property>
+ <property name="connection.password">@connection.password@</property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+ <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+
+ <!-- Enable Hibernate's automatic session context management -->
+ <property name="current_session_context_class">thread</property>
+
+ <!-- Echo all executed SQL statements to stdout -->
+ <property name="hibernate.show_sql">@hibernate.show_sql@</property>
+
+ <!-- mapping files -->
+ <mapping resource="org/splat/kernel/Persistent.hbm.xml" />
+ <mapping resource="org/splat/kernel/Any.hbm.xml" />
+ <mapping resource="org/splat/kernel/Entity.hbm.xml" />
+ <mapping resource="org/splat/kernel/Attribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Relation.hbm.xml" />
+ <mapping resource="org/splat/kernel/IDPool.hbm.xml" />
+ <mapping resource="org/splat/kernel/TextAttribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Text.hbm.xml" />
+ <mapping resource="org/splat/kernel/User.hbm.xml" />
+
+ <mapping resource="org/splat/som/ProjectElement.hbm.xml" />
+ <mapping resource="org/splat/som/Study.hbm.xml" />
+ <mapping resource="org/splat/som/Scenario.hbm.xml" />
+ <mapping resource="org/splat/som/Attributes.hbm.xml" />
+ <mapping resource="org/splat/som/Relations.hbm.xml" />
+ <mapping resource="org/splat/som/File.hbm.xml" />
+ <mapping resource="org/splat/som/Document.hbm.xml" />
+ <mapping resource="org/splat/som/Publication.hbm.xml" />
+ <mapping resource="org/splat/som/ValidationCycle.hbm.xml" />
+ <mapping resource="org/splat/som/Timestamp.hbm.xml" />
+ <mapping resource="org/splat/som/SimulationContext.hbm.xml" />
+ <mapping resource="org/splat/som/KnowledgeElement.hbm.xml" />
+ <mapping resource="org/splat/som/IDBuilder.hbm.xml" />
+
+ </session-factory>
+
+</hibernate-configuration>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "../WebContent/META-INF/dtds/log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <!-- Generated at @datesimple@ @time@ -->
+ <!-- @file.header@ -->
+
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%t] %-5p %-11c{1} - %m%n"/>
+ </layout>
+ </appender>
+
+ <appender name="logfile" class="org.apache.log4j.RollingFileAppender">
+ <param name="File" value="${catalina.home}/logs/siman.log" />
+ <param name="MaxFileSize" value="500KB" />
+ <param name="MaxBackupIndex" value="10" />
+ <param name="Append" value="false" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%t] %-5p %-11c{1} - %m%n"/>
+ </layout>
+ </appender>
+
+ <!-- specify the logging level for loggers from other libraries -->
+ <logger name="com.opensymphony">
+ <level value="@com.opensymphony.logger.level@" />
+ </logger>
+
+ <logger name="org.apache.struts2">
+ <level value="@org.apache.struts2.logger.level@" />
+ </logger>
+
+ <logger name="org.springframework">
+ <level value="@org.springframework.logger.level@" />
+ </logger>
+
+ <logger name="org.hibernate">
+ <level value="@org.hibernate.logger.level@" />
+ </logger>
+
+ <logger name="org.splat.siman">
+ <level value="@org.splat.siman.logger.level@" />
+ </logger>
+
+ <logger name="log4j.logger.org.hibernate">
+ <level value="@log4j.logger.org.hibernate.logger.level@" />
+ </logger>
+
+ <!-- for all other loggers log only debug and above log messages -->
+ <root>
+ <priority value="@root.logger.level@"/>
+ <appender-ref ref="logfile" />
+ @root.logger.appender@
+ </root>
+
+</log4j:configuration>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ruleset xmlns="http://pmd.sf.net/ruleset/1.0.0" name="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd">
+ <description>PMD Plugin preferences rule set Hewis
+ level 1 : not to be violated AREVA requirements
+ level 2 : not to be violated EURIWARE requirements
+ level 3 :should not be violated AREVA requirements
+ level 4 :should not be violated EURIWARE requirements
+ level 5 : good practices
+ </description>
+
+ <exclude-pattern>.*/org/.*</exclude-pattern>
+ <exclude-pattern>.*/test/.*</exclude-pattern>
+
+ <rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidDuplicateLiterals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringInstantiation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringToString">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientStringBuffering">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UnnecessaryCaseChange">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseStringBufferLength">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AppendCharacterWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/ConsecutiveLiteralAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseIndexOfChar">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InefficientEmptyStringCheck">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/InsufficientStringBufferDeclaration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UselessStringValueOf">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/StringBufferInstantiationWithChar">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/UseEqualsToCompareStrings">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strings.xml/AvoidStringBufferField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/SimplifyStartsWith">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UseArraysAsList">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AvoidArrayLoops">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/UnnecessaryWrapperObjectCreation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/optimizations.xml/AddEmptyString">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/LooseCoupling">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/UnusedImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/typeresolution.xml/SignatureDeclareThrowsException">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseSingleton">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanReturns">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyBooleanExpressions">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidReassigningParameters">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SwitchDensity">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AccessorClassGeneration">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/FinalFieldCouldBeStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CloseResource">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/OptimizableToArrayCall">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/BadComparison">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EqualsNull">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ConfusingTernary">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/InstantiationToGetClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/IdempotentOperations">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimpleDateFormatNeedsLocale">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ImmutableField">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AssignmentToNonFinalStatic">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/MissingBreakInSwitch">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SimplifyConditional">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/CompareObjectsWithEquals">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/NonThreadSafeSingleton">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UncommentedEmptyConstructor">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AvoidConstantsInterface">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UnsynchronizedStaticDateFormatter">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/PreserveStackTrace">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/UseCollectionIsEmpty">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/EmptyMethodInAbstractClassShouldBeAbstract">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/SingularField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/ReturnEmptyArrayRatherThanNull">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/AbstractClassWithoutAnyMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/design.xml/TooFewBranchesForASwitchStatement">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/braces.xml/ForLoopsMustUseBraces">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/CouplingBetweenObjects">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/ExcessiveImports">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/coupling.xml/LooseCoupling">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyCatchBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyIfStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyWhileStmt">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyTryBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyFinallyBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySwitchStatements">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/JumbledIncrementer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/DoubleCheckedLocking">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptySynchronizedBlock">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryReturn">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStaticInitializer">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnconditionalIfStatement">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BooleanInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CollapsibleIfStatements">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOverridingMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/ClassCastExceptionWithToArray">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UselessOperationOnImmutable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/MisplacedNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/UnusedNullCheckInEquals">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidThreadGroup">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BrokenNullCheck">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/BigIntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingOctalValues">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidUsingHardCodedIP">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/CheckResultSet">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/basic.xml/AvoidMultipleUnaryOperators">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/NullAssignment">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/OnlyOneReturn">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnusedModifier">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AssignmentInOperand">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DontImportSun">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/SuspiciousOctalEscape">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/CallSuperInConstructor">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/UnnecessaryParentheses">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DefaultPackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/BooleanInversion">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DataflowAnomalyAnalysis">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidFinalLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingShortType">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingVolatile">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidUsingNativeCode">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/AvoidAccessibilityAlteration">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/controversial.xml/DoNotCallGarbageCollectionExplicitly">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/MoreThanOneLogger">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/SystemPrintln">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace">
+ <priority>1</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/DuplicateImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/DontImportJavaLang">
+ <priority>2</priority>
+ </rule>
+
+ <rule ref="rulesets/imports.xml/UnusedImports">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/ImportFromSamePackage">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/imports.xml/TooManyStaticImports">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceVectorWithList">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceHashtableWithMap">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ReplaceEnumerationWithIterator">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/IntegerInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ByteInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/ShortInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/migrating.xml/LongInstantiation">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/ProperCloneImplementation">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidCatchingNPE">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/AvoidRethrowingException">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotExtendJavaLangError">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/strictexception.xml/DoNotThrowExceptionInFinally">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize">
+ <properties>
+ <property name="prefix" value="_"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/javabeans.xml/MissingSerialVersionUID">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/EmptyFinalizer">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeOverloaded">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/finalizers.xml/AvoidCallingFinalize">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/UseProperClassLoader">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/MDBAndSessionBeanNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteSessionInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalInterfaceSessionNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/LocalHomeNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/RemoteInterfaceNamingConvention">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotCallSystemExit">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/StaticEJBFieldShouldBeFinal">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/j2ee.xml/DoNotUseThreads">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/VariableNamingConventions">
+ <properties>
+ <property name="staticPrefix" value=""/>
+ <property name="staticSuffix" value=""/>
+ <property name="memberPrefix" value="_"/>
+ <property name="memberSuffix" value=""/>
+ </properties>
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/ClassNamingConventions">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AbstractNaming">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidDollarSigns">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousConstantFieldName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/SuspiciousEqualsMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/NoPackage">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/PackageCase">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/MisleadingVariableName">
+ <priority>1</priority>
+ </rule>
+ <rule ref="rulesets/naming.xml/BooleanGetMethodName">
+ <priority>5</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NPathComplexity">
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveMethodLength">
+ <properties>
+ <property name="minimun" value="50"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessiveParameterList">
+ <properties>
+ <property name="minimun" value="10"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+
+ <rule ref="rulesets/codesize.xml/ExcessiveClassLength">
+ <properties>
+ <property name="minimun" value="1000"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/CyclomaticComplexity">
+ <properties>
+ <property name="reportLevel" value="25"/>
+ </properties>
+ <priority>3</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/ExcessivePublicCount">
+ <priority>4</priority>
+ <properties>
+ <property name="reportLevel" value="20"/>
+ </properties>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyFields">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssMethodCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssTypeCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/NcssConstructorCount">
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/codesize.xml/TooManyMethods">
+ <properties>
+ <property name="maxmethods" value="15"/>
+ </properties>
+ <priority>4</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateField">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod">
+ <priority>2</priority>
+ </rule>
+ <rule ref="rulesets/unusedcode.xml/UnusedFormalParameter">
+ <priority>5</priority>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid naming fields without the prefix '_'" name="FieldNamingRules">
+ <description>
+ Detects when a field has not a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private int _foo; // OK
+ private int bar; // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //FieldDeclaration[@Static='false']
+ //VariableDeclarator
+ //VariableDeclaratorId
+ [not(starts-with(@Image, '_'))]
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule class="net.sourceforge.pmd.rules.XPathRule" message="Avoid parameters with the prefix '_'" name="ParametersNamingRules">
+ <description>
+ Detects when a parameter has a name starting with '_'.
+ </description>
+ <example><![CDATA[
+
+ public class Foo {
+ private void foo(int bar) // OK
+ private void foo2(int _bar) // Not good
+
+ }
+
+ ]]></example>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value><![CDATA[
+
+ //VariableDeclaratorId
+ [starts-with(@Image, '_')]
+ [not (../../../FieldDeclaration)]
+
+
+ ]]></value>
+ </property>
+ <property name="pluginname" value="true"/>
+ </properties>
+ </rule>
+ <rule name="DoNotUseConditionalExpression "
+ message="Do not use condition?statement:statement;"
+ class="net.sourceforge.pmd.rules.XPathRule">
+ <description>
+ Detect using of condition?statement:statement;
+ </description>
+ <priority>1</priority>
+ <properties>
+ <property name="xpath">
+ <value>
+ <![CDATA[
+ //ConditionalExpression
+ ]]>
+ </value>
+ </property>
+ </properties>
+ <priority>3</priority>
+ <example>
+ <![CDATA[
+ public class Sample {
+ boolean bar(int x, int y) {
+ if (x== y)
+ same;
+ else
+ diff;
+
+
+ return (x == y) ? same : diff;
+ // wrong
+ }
+
+
+ }
+ ]]>
+ </example>
+ </rule>
+
+
+</ruleset>
--- /dev/null
+
+import org.splat.launcher.FileTransfer;
+import org.splat.launcher.WindowsRegistry;
+
+
+public class Test {
+
+
+// ==============================================================================================================================
+// Main
+// ==============================================================================================================================
+
+ public static void main(String[] args) {
+// --------------------------------------
+// String url = "http://localhost:8080/repository/2011/PLM110001/1.Study";
+ String command = args[0];
+// String filename = args[1];
+
+ String applikey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Applications\\" + command;
+ String key = "";
+ String module = WindowsRegistry.readValue(applikey + "\\shell\\open\\command ", key);
+ if (module == null) module = WindowsRegistry.readValue(applikey + "\\shell\\edit\\command ", key);
+ try {
+// FileTransfer.Download(url, filename, path);
+ String[] parse = module.split("/"); // Removing eventual options
+
+ Runtime.getRuntime().exec(parse[0]);
+// Runtime.getRuntime().exec(parse[0] + " \"" + path + "\\" + filename + "\"");
+ }
+ catch (Exception error) {
+ System.out.println("Unable to start " + module);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+<!-- Generated at 21/09/2012 04:30:33 -->
+<!-- Don't edit manually. See the source in D:\users\rkv\SIMAN\Workspace\Siman\conf\templates. -->
+
+ <session-factory>
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
+ <property name="connection.url">jdbc:mysql://localhost/simer</property>
+ <property name="connection.username">simer</property>
+ <property name="connection.password">admin</property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+ <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+
+ <!-- Enable Hibernate's automatic session context management -->
+ <property name="current_session_context_class">thread</property>
+
+ <!-- Echo all executed SQL statements to stdout -->
+ <property name="hibernate.show_sql">true</property>
+
+ <!-- mapping files -->
+ <mapping resource="org/splat/kernel/Persistent.hbm.xml" />
+ <mapping resource="org/splat/kernel/Any.hbm.xml" />
+ <mapping resource="org/splat/kernel/Entity.hbm.xml" />
+ <mapping resource="org/splat/kernel/Attribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Relation.hbm.xml" />
+ <mapping resource="org/splat/kernel/IDPool.hbm.xml" />
+ <mapping resource="org/splat/kernel/TextAttribute.hbm.xml" />
+ <mapping resource="org/splat/kernel/Text.hbm.xml" />
+ <mapping resource="org/splat/kernel/User.hbm.xml" />
+
+ <mapping resource="org/splat/som/ProjectElement.hbm.xml" />
+ <mapping resource="org/splat/som/Study.hbm.xml" />
+ <mapping resource="org/splat/som/Scenario.hbm.xml" />
+ <mapping resource="org/splat/som/Attributes.hbm.xml" />
+ <mapping resource="org/splat/som/Relations.hbm.xml" />
+ <mapping resource="org/splat/som/File.hbm.xml" />
+ <mapping resource="org/splat/som/Document.hbm.xml" />
+ <mapping resource="org/splat/som/Publication.hbm.xml" />
+ <mapping resource="org/splat/som/ValidationCycle.hbm.xml" />
+ <mapping resource="org/splat/som/Timestamp.hbm.xml" />
+ <mapping resource="org/splat/som/SimulationContext.hbm.xml" />
+ <mapping resource="org/splat/som/KnowledgeElement.hbm.xml" />
+ <mapping resource="org/splat/som/IDBuilder.hbm.xml" />
+
+ </session-factory>
+
+</hibernate-configuration>
\ No newline at end of file
--- /dev/null
+java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
+
+# Connector
+java.naming.provider.url = ftp://localhost:61616
--- /dev/null
+menu.login = Se connecter
+menu.logout = Déconnexion
+
+menu.new.empty = Vierge
+menu.new.copy = A partir d''une étude existante
+menu.new.instance = A partir d''un modèle
+menu.new.import = A partir d''une étude importée
+menu.search.study = Une étude
+menu.search.idea = Une connaissance
+menu.search.document = Un document
+menu.prop.general = Configuration de l''étude
+menu.prop.scenario = Configuration du scénario
+menu.prop.timestamp = Historique des validations
+menu.prop.comlog = Historique des actions
+menu.prop.version = Historique des versions
+menu.addmember = - Ajouter un contributeur -
+menu.addcontext = - Ajouter un contexte de simulation -
+menu.selectcontextype = - Sélectionner un type de contexte -
+menu.select = - Sélectionner -
+menu.newscenario = Ajouter un scénario
+menu.newproduct = Nouveau produit
+menu.newcontext = Nouveau contexte
+menu.newcontype = Nouveau type de contexte
+menu.newdoctype = Nouveau type de document
+menu.accept = Accepter les modifications
+menu.publish = Publier
+menu.archive = Archiver
+menu.promote = Promouvoir
+menu.review = Valider
+menu.approve = Approuver
+menu.disapprove = Refuser
+menu.demote = Revenir en arrière
+menu.rename = Renommer
+menu.edit = Éditer
+menu.properties = Configurer l''étude
+menu.attach = Attacher un autre format
+menu.version = Versionner
+menu.replace = Remplacer
+menu.export = Exporter
+menu.remove = Supprimer
+menu.remove.study = Supprimer l''étude
+menu.remove.document = Supprimer ce document
+menu.remove.version = Supprimer cette version
+menu.purge = Supprimer l''historique
+
+menu.admin.indexing = Indexer les études
+menu.admin.importuser = Importer des utilisateurs
+menu.admin.context = Les contextes de simulation
+menu.admin.knowledge = Les connaissances
+menu.admin.study = Les études
+
+
+title.login = Saisissez vos coordonnées
+title.newstudy = Entrez les caractéristiques de votre étude
+title.newscenario = Ajout d''un scénario
+title.private = Dans mon espace de travail
+title.public = Dans l''espace public
+title.reference = Dans l''espace de référence
+title.result = Résultat de la recherche
+title.description = Description
+title.context = Contexte de simulation
+title.document = Document(s)
+title.knowledge = Elément(s) de connaissance
+title.otherknowledge = Autre(s) élément(s) de connaissance
+title.user = Utilisateurs
+title.comment = Commentaire(s)
+title.import = Importation d''un document
+title.importuser = Importation d''utilisateur(s) depuis une définition XML
+title.version = Versionnement d''un document
+title.attach = Attachement d''un autre format
+title.prop.study = Panneau de configuration
+title.prop.scenario = Panneau de configuration du scénario "{0}"
+title.valid.index = Étude(s) à indexer
+title.valid.context = Contexte(s) de simulation à approuver
+title.valid.form = Formulaire d''approbation
+
+title.create = Créer une étude
+title.search = Rechercher
+title.activities = Activités
+title.scenarii = Scénarios existants
+title.configuration = Configuration
+title.properties = Propriétés
+title.steps = Dossiers
+title.sysadmin = Administration
+title.datadmin = Gérer
+
+
+label.sysadmin = Administrateur de la base
+label.study = Étude
+label.knowledge = Connaissance
+label.scenario = Scénario
+label.activity = Rattaché à l''activité
+label.source = Source
+label.filter = Filtre
+label.reference = Réf.
+label.id = ID
+label.created = Créé le
+label.modified = Modifié le
+label.title = Titre
+label.description = Description
+label.version = Version
+label.size = Taille
+label.value = Valeur
+label.date = Date
+label.manager = Responsable
+label.resp = Resp.
+label.author = Auteur
+label.lastname = Nom
+label.firstname = Prénom
+label.role = Rôle(s)
+label.email = E-Mail
+label.inWORK = En travaux
+label.inDRAFT = Préversion
+label.inCHECK = A approuver
+label.APPROVED = Approuvé
+label.EXTERN = Document externe
+label.products = Produits déjà étudiés
+label.contexts = Contextes existants
+label.contypes.check = Types de contexte
+label.contypes.valid = Types de contexte existants
+label.contypes = Types de contexte à venir
+label.doctypes = Types de documents existants
+label.ownerstudy = Étude(s) relative(s) au contexte sélectionné ci-dessus
+label.members = Chargé(s) de l''étude
+label.approcycle = Circuits de validation
+label.contributor = Contributeur(s)
+label.presents = Contributeur(s) actuel(s)
+label.absents = Autres contributeurs possibles
+label.approtype = Approbation du type de contexte
+label.approval = Approbation de la valeur du contexte
+label.kilobyte = Ko
+label.warning = Attention
+label.uses = Utilise
+label.converts = Export au format
+label.history = Historique
+label.modifications = Résumé des modifications
+label.doyou = Voulez-vous
+label.or = ou bien
+label.all = Tous
+label.other = Tous les autres
+label.lang.fr = Français
+label.lang.en = Anglais
+label.usedcode = Codes déjà utilisés
+label.usedname = Noms déjà utilisés
+label.PROMOTION = Promu par
+label.REVIEW = Validé par
+label.APPROVAL = Approuvé par
+label.skipped = Ne s'applique pas
+label.bytheauthor = Auteur du document
+label.me = Moi
+
+
+field.username = Nom utilisateur
+field.password = Mot de passe
+field.studytitle = Titre de l''étude
+field.scenariotitle = Titre du scénario
+field.documentitle = Titre du document
+field.product = Produit étudié
+field.among = Parmi
+field.context = Contexte
+field.contain = Dont le titre contient
+field.contextype = Type de contexte
+field.documentype = Type du document
+field.upload = Fichier à télécharger
+field.scenario = Insérer le nouveau scénario après
+field.activity = Partager tous les documents jusqu''à l''activité
+field.code = Code interne
+field.step = Activité concernée
+field.label = Nom en
+field.context.value = Valeur
+
+
+criterion.study.all = Toutes les études
+criterion.study.mine = Mes études
+criterion.study.his = Les études de
+criterion.study.ref = L''étude référencée...
+criterion.knowledge.all = Toutes les
+criterion.knowledge.mine = Toutes mes connaissances
+criterion.knowledge.his = Les acquis de
+criterion.knowledge.ref = La connaissance référencée...
+criterion.inprogress = En cours
+criterion.indraft = A valider
+criterion.incheck = A approuver
+criterion.approved = Terminées
+criterion.archived = Archivées
+criterion.template = Modèles
+
+
+size.study.state = 158px
+size.study.author = 179px
+size.knowledge.state = 201px
+size.knowledge.author = 180px
+
+
+button.newstudy = Créer l''étude
+button.newscenario = Créer le scénario
+button.result = Afficher le résultat
+button.add = Ajouter
+button.upload = Télécharger
+button.change = Changer de fichier
+button.save = Enregistrer
+button.saveas = Enregistrer sous
+button.import = Enregistrer en tant que
+button.update = Enregistrer une mise à jour
+button.version = Versionner en tant que
+button.ok = OK
+button.index = Indexer
+button.approve = Approuver
+button.cancel = Abandonner
+button.mailto = Envoyer un message à {0}
+button.checkin = Abandonner les modifications en cours
+
+
+tooltip.new = Nouvelle étude...
+tooltip.open = Ouvrir...
+tooltip.study = Afficher l''étude ouverte
+tooltip.idea = Consulter la connaissance
+tooltip.datadmin = Gérer les connaissances
+tooltip.sysadmin = Gérer la base de données
+tooltip.help = Ouvrir l''aide
+tooltip.search = Rechercher une connaissance
+tooltip.details = Afficher la configuration de l''étude
+tooltip.property = Configurer l''étude
+tooltip.back = Revenir dans l''étude
+tooltip.scenario = Ajouter un scénario
+tooltip.addvalidation = Définir un nouveau circuit de validation
+tooltip.editvalidation = Modifier ce circuit de validation
+tooltip.adddescription = Ajouter une description
+tooltip.addcontext = Ajouter un contexte de simulation
+tooltip.addknowledge = Ajouter un élément de connaissance
+tooltip.addcomment = Ajouter un commentaire
+tooltip.addknowtype = Créer un nouveau type de connaissance
+tooltip.import = Importer un document
+tooltip.deletecontext = Retirer ce contexte de simulation
+tooltip.edit.title = Modifier le titre
+tooltip.edit.study = Modifier cette étude...
+tooltip.edit.document = Modifier ce document...
+tooltip.edit.context = Modifier ce contexte de simulation...
+tooltip.edit.members = Inscrire les contributeurs
+tooltip.version = Versionner ce document
+tooltip.refresh = Actualiser
+tooltip.close = Fermer
+tooltip.cancel = Abandonner
+tooltip.shared = Document partagé entre plusieurs scénarios
+tooltip.versioned = Document modifié dans cette version de l''étude
+
+
+help.contextcode = Le code interne est un nom utilisable depuis l''interface de programmation pour référencer les contextes de simulation indépendamment de leur nom affiché à l''écran dans la langue en cours.
+
+
+message.welcome = Bienvenue dans votre outil de gestion des études de simulation.
+message.nostudy = Aucune étude ne répond aux critères ci-dessus.
+message.noknowledge = Aucune connaissance ne répond aux critères ci-dessus.
+message.nodocument = Aucun document ne répond aux critères ci-dessus.
+message.noindex = Aucune étude ne nécessite d''être indexée.
+message.nocontext = Aucun contexte de simulation n''est en attente d''approbation.
+message.emptydocument = Aucun document n''a été créé à cette étape.
+message.accept.document = Voulez-vous accepter les modifications des documents utilisés ?
+message.publish.study = Voulez-vous publier l’étude ?
+message.promote.document = Voulez-vous promouvoir ce document ?
+message.promote.knowledge = Voulez-vous avancer l’état de cette connaissance ?
+message.review.document = Voulez-vous valider ce document ?
+message.approve.document = Voulez-vous approuver ce document ?
+message.demote.document = Voulez-vous reculer l’état de ce document ?
+message.demote.knowledge = Voulez-vous reculer l’état de cette connaissance ?
+message.delete.study = Voulez-vous placer l’étude dans la Corbeille ?
+message.delete.context = Voulez-vous retirer ce contexte de simulation ?
+message.delete.document = Voulez-vous supprimer ce document ?
+message.delete.knowledge = Voulez-vous supprimer cette connaissance ?
+message.purge.study = Voulez-vous supprimer l’historique de l’étude ?
+message.purge.document = Voulez-vous supprimer l’historique de ce document ?
+message.upload = Le fichier "{0}" a été téléchargé avec succès.
+message.checkedout = Ce scénario a été réservé par {0} le {1}. Pour pouvoir en modifier les propriétés, {2} doit donc préalablement restituer ses modifications.</br>Du coup, voulez-vous :
+message.checkin = Voulez-vous vraiment abandonner les modifications en cours ?
+message.dependencies = Les documents suivants devront a priori être mis à jour car ils utilisent le document en cours de versionnement.</br>Si certains d''entre eux ne sont PAS IMPACTÉS par ce versionnement, ils doivent être COCHÉS.
+
+message.info.contact = Contactez votre administrateur système.
+message.info.scename = Si besoin, changez le titre du scénario ci-dessous.
+message.info.bastep = Si besoin, sélectionnez l''activité partagée dans le panneau de gauche.
+message.info.code = Saisissez un code qui ne figure pas dans la liste ci-dessous.
+message.info.type = Si besoin, modifiez le nom ci-dessous, à condition qu''il ne figure pas dans les listes ci-contre.
+message.info.step = Si besoin, sélectionnez une autre activité ci-dessous:
+message.info.value = Si besoin, modifiez la valeur ci-dessous:
+message.info.context = ou sélectionnez une valeur déjà utilisée.
+
+message.error.internal = Erreur interne. Contactez votre administrateur.
+message.error.launch = Erreur fatale lors du démarrage de l''application {0}. Contactez votre administrateur.
+message.error.initialization = Erreur fatale lors de l''initialisation de l''application. Contactez votre administrateur.
+message.error.configuration = Erreur fatale lors de la configuration de l''application. Contactez votre administrateur.
+message.error.notyetimplemented = Désolé, cette fonction n''est pas encore disponible.
+message.error.login = Impossible de se connecter. Contactez votre administrateur.
+message.error.logout = Erreur lors de la déconnexion.
+message.error.login.username = Nom utilisateur incorrect.
+message.error.login.password = Mot de passe incorrect.
+message.error.newstudy = Impossible de créer l''étude. Contactez votre administrateur.
+message.error.contextvalue = Entrer le contexte de simulation.
+message.error.outofmemory = Désolé, l''application n''est pas configurée pour importer un aussi gros fichier.
+message.error.import.type = Le type du document n''est pas défini.
+message.error.import.file = Impossible d''enregistrer le document. Réessayez plus tard.
+message.error.reference.undefined = Ce document porte une référence qui n''est pas valide.
+message.error.reference.duplicate = Ce document porte une référence qui est déjà utilisée.
+message.error.reference.mismatch = Ce document porte une référence différente du document versionné.
+message.error.format.version = Ce document porte un numéro de version illicite.
+message.error.format.date = Ce document porte une date illicite ou définie dans un format non supporté.
+message.error.version.mismatch = Ce document porte un numéro de version illicite ou incorrect.
\ No newline at end of file
--- /dev/null
+menu.login = Connection
+menu.logout = Logout
+
+menu.new.empty = From scratch
+menu.new.copy = From an existing study
+menu.new.instance = From a template
+menu.new.import = From an imported study
+menu.search.study = A study
+menu.search.idea = A knowledge
+menu.search.document = A document
+menu.prop.general = Study settings
+menu.prop.scenario = Scenario settings
+menu.prop.timestamp = History of validations
+menu.prop.comlog = History actions
+menu.prop.version = History of versions
+menu.addmember = - Add a contributor -
+menu.addcontext = - Add a simulation context -
+menu.selectcontextype = - Select a type of context -
+menu.select = - Select -
+menu.newscenario = Add a scenario
+menu.newproduct = New product
+menu.newcontext = New context
+menu.newcontype = New context type
+menu.newdoctype = New document type
+menu.accept = Set up-to-date
+menu.publish = Publish
+menu.archive = Archive
+menu.promote = Promote
+menu.review = Validate
+menu.approve = Approve
+menu.disapprove = Disapprove
+menu.demote = Demote
+menu.rename = Rename
+menu.edit = Edit
+menu.properties = Configure the study
+menu.attach = Attach another format
+menu.version = Version
+menu.replace = Replace
+menu.export = Export
+menu.remove = Remove
+menu.remove.study = Remove the study
+menu.remove.document = Remove this document
+menu.remove.version = Remove this version
+menu.purge = Remove the history
+
+menu.admin.indexing = Index the studies
+menu.admin.importuser = Import users
+menu.admin.context = The simulation contexts
+menu.admin.knowledge = The knowledges
+menu.admin.study = The studies
+
+
+title.login = Enter your login identification
+title.newstudy = Define your study
+title.newscenario = Add a scenario
+title.private = From my Workspace
+title.public = From the Public area
+title.reference = From the Reference area
+title.result = Search result
+title.description = Description
+title.context = Simulation context
+title.document = Document(s)
+title.knowledge = Knowledge element(s)
+title.otherknowledge = Other knowledge element(s)
+title.user = Users
+title.comment = Comment(s)
+title.import = Import a document
+title.importuser = Import users from their XML definitions
+title.version = Versioning a document
+title.attach = Attachment of another format
+title.prop.study = Configuration pannel
+title.prop.scenario = Configuration panel of the scenario "{0}"
+title.valid.index = Study to be indexed
+title.valid.context = Simulation context to be approved
+title.valid.form = Approval form
+
+title.create = Create a study
+title.search = Search for
+title.activities = Activities
+title.scenarii = Existing scenarios
+title.configuration = Configuration
+title.properties = Properties
+title.steps = Folders
+title.sysadmin = Administration
+title.datadmin = Managing
+
+
+label.sysadmin = Database administrator
+label.study = Study
+label.knowledge = Knowledge
+label.scenario = Scenario
+label.activity = Attached to the activity
+label.source = Source
+label.filter = Filter
+label.reference = Ref.
+label.id = ID
+label.created = Created
+label.modified = Modified
+label.title = Title
+label.description = Description
+label.version = Version
+label.size = Size
+label.value = Value
+label.date = Date
+label.manager = Responsible
+label.resp = Resp.
+label.author = Author
+label.lastname = Last name
+label.firstname = First name
+label.role = Role(s)
+label.email = E-Mail
+label.inWORK = In-Work
+label.inDRAFT = In-Draft
+label.inCHECK = In-Check
+label.APPROVED = Approved
+label.EXTERN = External document
+label.products = Available products
+label.contexts = Available contexts
+label.contypes.check = Context types
+label.contypes.valid = Available context types
+label.contypes = New context types
+label.doctypes = Available document types
+label.ownerstudy = Study relative to the above selected context
+label.members = Member(s) of the study
+label.approcycle = Validation cycles
+label.contributor = Contributor(s)
+label.presents = Current contributor(s)
+label.absents = Other possible contributors
+label.approtype = Approval of the context type
+label.approval = Approval of the context value
+label.kilobyte = Kb
+label.warning = Warning
+label.uses = Uses
+label.converts = Exports to format
+label.history = History
+label.modifications = Summary of modifications
+label.doyou = Do you want
+label.or = or
+label.all = All
+label.other = All others
+label.lang.fr = French
+label.lang.en = English
+label.usedcode = Codes already used
+label.usedname = Names already used
+label.PROMOTION = Promoted by
+label.REVIEW = Validated by
+label.APPROVAL = Approved by
+label.skipped = Not Applicable
+label.bytheauthor = Author of document
+label.me = Me
+
+
+field.username = Username
+field.password = Password
+field.studytitle = Title of the study
+field.scenariotitle = Title of the scenario
+field.documentitle = Title of the document
+field.product = Studied product
+field.among = Amongst
+field.context = Context
+field.contain = Whose title contains
+field.contextype = Context type
+field.documentype = Document type
+field.upload = File to be uploaded
+field.scenario = Insert the new scenario after
+field.activity = Share all documents till the activity
+field.code = Internal code
+field.step = Involved activity
+field.label = Name in
+field.context.value = Value
+
+
+criterion.study.all = All studies
+criterion.study.mine = My studies
+criterion.study.his = The studies of
+criterion.study.ref = The study referenced...
+criterion.knowledge.all = All the
+criterion.knowledge.mine = All my knowledges
+criterion.knowledge.his = Knowledges of
+criterion.knowledge.ref = The knowledge referenced...
+criterion.inprogress = on going
+criterion.indraft = currently being reviewed
+criterion.incheck = currently being approved
+criterion.approved = completed
+criterion.archived = archived
+criterion.template = making a Template
+
+
+size.study.state = 202px
+size.study.author = 182px
+size.knowledge.state = 226px
+size.knowledge.author = 179px
+
+
+button.newstudy = Create the study
+button.newscenario = Create the scenario
+button.result = Display the result
+button.add = Add
+button.upload = Upload
+button.change = Change the file
+button.save = Save
+button.saveas = Save as
+button.import = Save as
+button.update = Save an update
+button.version = Version as
+button.ok = OK
+button.index = Index
+button.approve = Approve
+button.cancel = Cancel
+button.mailto = Send a message to {0}
+button.checkin = Forget the on-going modifications
+
+
+tooltip.new = New study...
+tooltip.open = Open...
+tooltip.study = Display the open study
+tooltip.idea = Display the knowledge
+tooltip.datadmin = Managing knowledges
+tooltip.sysadmin = Managing the database
+tooltip.help = Help
+tooltip.search = Search for a knowledge
+tooltip.details = Display the study configuration
+tooltip.property = Configure the study
+tooltip.back = Back to the study
+tooltip.scenario = Add a scenario
+tooltip.addvalidation = Define a new validation cycle
+tooltip.editvalidation = Edit this validation cycle
+tooltip.adddescription = Add a description
+tooltip.addcontext = Add a simulation context
+tooltip.addknowledge = Add a knowledge element
+tooltip.addcomment = Add a comment
+tooltip.addknowtype = Create a new knowledge type
+tooltip.import = Import a document
+tooltip.deletecontext = Remove this simulation context
+tooltip.edit.title = Edit the title
+tooltip.edit.study = Edit this study...
+tooltip.edit.document = Edit this document...
+tooltip.edit.context = Edit this simulation context
+tooltip.edit.members = Register contributors
+tooltip.version = Version this document
+tooltip.refresh = Refresh
+tooltip.close = Close
+tooltip.cancel = Cancel
+
+tooltip.shared = Document shared by several scenarios
+tooltip.versioned = Document modified in this version of the study
+
+help.contextcode = The internal code is a name used from the Application Programming Interface for referencing the simulation contexts apart from any locale (English, French, Russian or whatever).
+
+
+message.welcome = Welcome to your Simulation Study Management Tool.
+message.nostudy = No study found according to the above search criteria.
+message.noknowledge = No knowledge found according to the above search criteria.
+message.nodocument = No document found according to the above search criteria.
+message.noindex = All existing studies are already indexed.
+message.nocontext = No simulation context is pending for approval.
+message.emptydocument = No document has been created at this step.
+message.accept.document = Do you really want to accept the modifications of dependent documents ?
+message.publish.study = Do you really want to publish the study ?
+message.promote.document = Do you really want to promote this document ?
+message.promote.knowledge = Do you really want to promote this knowledge ?
+message.review.document = Do you really want to validate this document ?
+message.approve.document = Do you really want to approve this document ?
+message.demote.document = Do you really want to demote this document ?
+message.demote.knowledge = Do you really want to demote this knowledge ?
+message.delete.study = Do you really want to move this study to Trash ?
+message.delete.context = Do you really want to remove this simulation context ?
+message.delete.document = Do you really want to remove this document ?
+message.delete.knowledge = Do you really want to remove this knowledge ?
+message.purge.study = Do you really want to remove the history of the study ?
+message.purge.document = Do you really want to remove the history of this document ?
+message.upload = The file "{0}" has been successfully uploaded.
+message.checkedout = This scenario has been checked-out by {0} on {1}. For being able to edit the properties, {2} must first check-in his/her modifications.</br>Then, do you want :
+message.checkin = Do you really want to forget the on-going modifications ?
+message.dependencies = The documents below will must probably be updated because they use the document being versioned.</br>Those which are NOT IMPACTED by this versioning must be CHECKED.
+
+message.info.contact = Contact your system administrator.
+message.info.scename = If needed, change below the title of the scenario.
+message.info.bastep = If needed, select the shared activity in the left panel.
+message.info.code = Enter a code which is not in the list next to the input.
+message.info.type = If needed, edit the name below, providing that it is not in the corresponding list.
+message.info.step = If needed, select another activity below:
+message.info.value = If needed, change the value below:
+message.info.context = or select a value already used.
+
+message.error.internal = Internal error. Contact your system administrator.
+message.error.launch = Fatal error when starting {0}. Contact your system administrator.
+message.error.initialization = Fatal error when initializing the application. Contact your system administrator.
+message.error.configuration = Fatal error when configuring the application. Contact your system administrator.
+message.error.notyetimplemented = Sorry, this function is not yet available.
+message.error.login = Impossible to connect. Contact your system administrator.
+message.error.logout = Error during the logout.
+message.error.login.username = Incorrect user name.
+message.error.login.password = Incorrect password.
+message.error.newstudy = Impossible to create the study. Contact your system administrator.
+message.error.contextvalue = Enter le simulation context.
+message.error.outofmemory = Sorry, the application is not configured for importing a so big file.
+message.error.import.type = Undefined document type.
+message.error.import.file = Impossible to store the document. Try again later.
+message.error.reference.undefined = The reference of this document is not valid.
+message.error.reference.duplicate = The reference of this document is already used.
+message.error.reference.mismatch = The reference of this document does not match the one of the versioned document.
+message.error.format.version = The revision number of this document is illicit.
+message.error.format.date = The date of this document is illicit or is defined in an unsupported format.
+message.error.version.mismatch = The revision number of this document is illicit or incorrect.
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "../WebContent/META-INF/dtds/log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+
+ <!-- Generated at 21/09/2012 04:30:33 -->
+ <!-- Don't edit manually. See the source in D:\users\rkv\SIMAN\Workspace\Siman\conf\templates. -->
+
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%t] %-5p %-11c{1} - %m%n"/>
+ </layout>
+ </appender>
+
+ <appender name="logfile" class="org.apache.log4j.RollingFileAppender">
+ <param name="File" value="${catalina.home}/logs/siman.log" />
+ <param name="MaxFileSize" value="500KB" />
+ <param name="MaxBackupIndex" value="10" />
+ <param name="Append" value="false" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="[%t] %-5p %-11c{1} - %m%n"/>
+ </layout>
+ </appender>
+
+ <!-- specify the logging level for loggers from other libraries -->
+ <logger name="com.opensymphony">
+ <level value="DEBUG" />
+ </logger>
+
+ <logger name="org.apache.struts2">
+ <level value="DEBUG" />
+ </logger>
+
+ <logger name="org.springframework">
+ <level value="DEBUG" />
+ </logger>
+
+ <logger name="org.hibernate">
+ <level value="DEBUG" />
+ </logger>
+
+ <logger name="org.splat.siman">
+ <level value="DEBUG" />
+ </logger>
+
+ <logger name="log4j.logger.org.hibernate">
+ <level value="DEBUG" />
+ </logger>
+
+ <!-- for all other loggers log only debug and above log messages -->
+ <root>
+ <priority value="INFO"/>
+ <appender-ref ref="logfile" />
+ <appender-ref ref="console"/>
+ </root>
+
+</log4j:configuration>
\ No newline at end of file
--- /dev/null
+package org.splat.launcher;
+
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+
+public class FileTransfer {
+
+ final static int size = 1024;
+
+ public static void Download (String path, String filename, String destination) {
+// ------------------------------------------------------------------------------
+ URLConnection conx = null; // Communication link between the application and a URL.
+ InputStream is = null;
+ OutputStream os = null;
+ try {
+ URL url;
+ byte[] buf;
+ int ByteRead = 0;
+// int ByteWritten = 0;
+
+ url = new URL(path);
+ os = new BufferedOutputStream( new FileOutputStream(destination + "/" + filename) );
+// The URLConnection object is created by invoking the openConnection method on a URL.
+
+ conx = url.openConnection();
+ is = conx.getInputStream();
+ buf = new byte[size];
+ while ((ByteRead = is.read(buf)) != -1) {
+ os.write(buf, 0, ByteRead);
+// ByteWritten += ByteRead;
+ }
+// System.out.println("File \"" + filename + "\" successfully downloaded");
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ finally {
+ try {
+ is.close();
+ os.close();
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.launcher;
+
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Graphics;
+import java.awt.Image;
+
+
+public class ToolButton extends Button {
+
+ private Image icon;
+ private int orx; // X of the icon top left corner
+ private int ory; // Y of the icon top left corner
+ private String link;
+ private String target;
+
+ private static final long serialVersionUID = 5723786125423445749L;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public ToolButton (int size, Image icon, String link) {
+// -----------------------------------------------------
+ this(size, icon, link, null);
+ }
+ public ToolButton (int size, Image icon, String link, String target) {
+// --------------------------------------------------------------------
+ orx = 24; // icon.getWidth(this); seems returning 0 before being painted
+ ory = 24; // icon.getHeight(this); seems returning 0 before being painted
+ if (orx < size) orx = (size - orx) / 2;
+ else orx = 0;
+ if (ory < size) ory = (size - ory) / 2;
+ else ory = 0;
+
+ this.icon = icon;
+ this.link = link;
+ this.target = target;
+ this.setSize(size, size);
+ this.setCursor(new Cursor(Cursor.HAND_CURSOR));
+ }
+
+// ==============================================================================================================================
+// Overridden functions
+// ==============================================================================================================================
+
+ public void paint(Graphics screen) {
+// ----------------------------------
+ screen.drawImage(icon, orx, ory, new Color(205, 229, 255), this);
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public String getTool () {
+// ------------------------
+ return link;
+ }
+
+ public String getTarget () {
+// --------------------------
+ return target;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.launcher;
+
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.ComponentOrientation;
+import java.io.ObjectInputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+
+public class ToolbarApplet extends java.applet.Applet implements ActionListener {
+
+ private int width;
+ private int height;
+
+ private static final long serialVersionUID = 3243053622061086715L;
+
+// ==============================================================================================================================
+// Overridden functions
+// ==============================================================================================================================
+
+ public void init () {
+// -------------------
+ URL appurl = getCodeBase();
+ int hgap = 6; // Gap between icons
+ int ntools;
+
+ width = getSize().width;
+ height = getSize().height;
+ for (ntools = 0; ntools < (width+hgap)/(height+hgap); ntools++) {
+ String icon = this.getParameter("icon"+ntools);
+ String tool = this.getParameter("tool"+ntools);
+ String file = this.getParameter("file"+ntools); // May be null
+ if (icon != null && tool != null) {
+ ToolButton button = new ToolButton(height, getImage(appurl, "../skin/" + icon), tool, file);
+ add(button); // For displaying the button
+ button.addActionListener(this);
+ }
+ }
+ setLayout( new GridLayout(1, ntools, hgap, 0) ); // 1 row, {ntools} buttons
+ applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
+ }
+
+ public void actionPerformed (ActionEvent event) {
+// -----------------------------------------------
+ if (event.getSource() instanceof ToolButton) {
+ ToolButton clicked = (ToolButton)event.getSource();
+ String module = clicked.getTool();
+ String target = clicked.getTarget();
+ launch(module, target);
+ }
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public void launch (String name, String filename) {
+// -------------------------------------------------
+ String module = name;
+ try {
+
+// Opening a Web page in a new tab
+ if (module.startsWith("http")) {
+ getAppletContext().showDocument(new URL(module), "_blank");
+ } else
+
+// Opening a Web module in a new tab
+ if (module.startsWith("../") || module.startsWith("/")) {
+ module = getCodeBase().toString() + module;
+ if (filename != null) module = module + "?open=" + filename;
+ getAppletContext().showDocument(new URL(module), "_blank");
+ } else
+
+// Opening an application on the local machine
+ if (module.endsWith(".exe") || module.endsWith(".EXE")) {
+ String applikey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Applications\\" + module;
+ String valkey = ""; // Default application and file keys
+
+ module = WindowsRegistry.readValue(applikey + "\\shell\\open\\command", valkey);
+ if (module == null) module = WindowsRegistry.readValue(applikey + "\\shell\\edit\\command", valkey);
+// if (module == null) module = "\"C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE\"";
+ if (module != null) {
+ String[] parse = module.split("/");
+ String command = parse[0]; // Removing eventual options
+ if (filename != null) {
+ String path = "";
+// Opening the application with a server side existing file
+ if (filename.startsWith("http")) {
+ path = " \"" + filename + "\"";
+ }
+// Opening the application with a file previously created by the server
+ else if (filename.startsWith("/jsp")) { // Document created through a JSP
+ URL my = getDocumentBase();
+ String http = "http://" + my.getHost() + ":" + my.getPort() + "/";
+ String[] jsppath = my.getPath().split("/"); // Parses "/webapp/..."
+ String location = http + jsppath[1] + filename;
+
+ URLConnection connection = new URL(location).openConnection();
+ ObjectInputStream fromservlet = new ObjectInputStream(connection.getInputStream());
+ URL docurl = (URL)fromservlet.readObject();
+
+ fromservlet.close();
+ if (docurl != null) path = " " + docurl.toString();
+ }
+ command = command + path;
+ }
+ Runtime.getRuntime().exec(command);
+ } else {
+ module = getCodeBase().toString() + "error.jsp?message=launch&value=" + name;
+ getAppletContext().showDocument(new URL(module));
+ }
+ }
+ } catch (Exception error) {
+ error.printStackTrace();
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.launcher;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+
+
+public class WindowsRegistry {
+
+ static class StreamReader extends Thread {
+// ----------------------------------------
+ private InputStream is;
+ private StringWriter sw= new StringWriter();;
+
+ public StreamReader(InputStream is) {
+ this.is = is;
+ }
+ public void run() {
+ try {
+ int c;
+ while ((c = is.read()) != -1) sw.write(c);
+ }
+ catch (IOException e) {
+ }
+ }
+ public String getResult() {
+ return sw.toString();
+ }
+ }
+
+ public static final String readValue (String location, String key) {
+// ------------------------------------------------------------------
+ try {
+// Run reg query, then read output with StreamReader (internal class)
+ if (key.length() == 0) key = "/ve"; // Looking for the default key
+ else key = "/v " + key;
+
+ Process process = Runtime.getRuntime().exec("reg query " + location + " " + key);
+ BufferedReader buffer = new BufferedReader( new InputStreamReader(process.getInputStream()) );
+
+// Output has the following format:
+// \n<Version information>\n\n<key>\t<registry type>\t<value>
+ String output = null;
+ String value = "REG_SZ";
+ while ((output = buffer.readLine()) != null) {
+ if (output.contains(value)) {
+ int index = output.indexOf(value) + value.length() + 1;
+ return output.substring(index).trim();
+ }
+ }
+ return null;
+// StreamReader reader = new StreamReader(process.getInputStream());
+
+// reader.start();
+// process.waitFor();
+// reader.join();
+// String output = reader.getResult();
+
+// Output has the following format:
+// \n<Version information>\n\n<key>\t<registry type>\t<value>
+// if( ! output.contains("\t") ){
+// return null;
+// }
+// Parse out the value
+// String[] parsed = output.split("\t");
+// return parsed[parsed.length-1];
+ }
+ catch (Exception e) {
+ return null;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.module;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.Do;
+import org.splat.kernel.User;
+import org.splat.simer.Action;
+import org.splat.simer.OpenStudy;
+import org.splat.som.ConvertsRelation;
+import org.splat.som.Database;
+import org.splat.som.Document;
+import org.splat.som.DocumentType;
+import org.splat.som.ProgressState;
+import org.splat.som.Publication;
+import org.splat.som.Scenario;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Step;
+
+
+public class SaveDocumentAction extends Action {
+
+ private OpenStudy mystudy = null;
+ private int doctype = 0;
+ private String filename = null;
+ private String docname = null;
+ private ProgressState state = null;
+ private List<Document> defuses = null;
+ private String summary = null; // Summary of changes in the new version
+
+ private static final long serialVersionUID = -3364960833373200115L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doSave () {
+// -----------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+// Getting user inputs
+ mystudy = getOpenStudy();
+ User user = getConnectedUser();
+ Step step = mystudy.getSelectedStep();
+ DocumentType type = Document.selectType(doctype);
+// File updir = Database.getDownloadDirectory(user);
+// File upfile = new File(updir.getPath() + "/" + filename);
+ String upath = Database.getTemplatePath(); // Instead of DownloadDirectory for sharing the "uploaded" file between users
+ File upfile = new File(upath + filename);
+ String[] table = filename.split("\\x2E");
+ String format = table[table.length-1];
+
+// Creation of the document
+ ((Scenario)step.getOwner()).checkin(); // Modules necessarily save their data in a scenario step
+ connex.flush();
+
+ Document.Properties dprop = new Document.Properties();
+ Publication credoc = step.createDocument(dprop.setName(docname)
+ .setType(type)
+ .setFormat(format)
+ .setAuthor(user));
+// Writing the uploaded file into the created document
+ File target = credoc.getSourceFile().asFile();
+ if (target.exists()) target.delete();
+ Do.copy(upfile, target); // Instead of rename for keeping the "uploaded" file for further use
+// upfile.renameTo(target);
+
+// Saving the document in given state
+ credoc.saveAs(state);
+
+// Creation of default uses relations
+ defuses = new Vector<Document>();
+ setupDefaultUses(type); // Recursive function
+ for (Iterator<Document> i=defuses.iterator(); i.hasNext(); ) {
+ credoc.addDependency(i.next());
+ }
+
+// Execution of module specific operations
+
+// 1. Conversion of the document to internal format, if required
+//TODO: The following code is temporary, waiting for the support of converters
+ if (format.equals("part")) {
+ ConvertsRelation export = credoc.attach("brep");
+
+ target = export.getTo().asFile();
+ if (target.exists()) target.delete();
+ Do.copy(upfile, target); // Instead of rename for keeping the "uploaded" file for further use
+ }
+// 2. Addition of simulation contexts
+ if (type.equals("model")) { // Set the characteristics of the mesh
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType ctype = SimulationContext.selectType("model");
+ SimulationContext context = Database.selectSimulationContext(ctype, "Éléments finis");
+ if (context == null) {
+ step.addSimulationContext(cprop.setType(ctype).setValue("Éléments finis"));
+ } else {
+ step.addSimulationContext(context);
+ }
+ ctype = SimulationContext.selectType("element");
+ context = Database.selectSimulationContext(ctype, "Surfacique");
+ if (context == null) {
+ step.addSimulationContext(cprop.setType(ctype).setValue("Surfacique"));
+ } else {
+ step.addSimulationContext(context);
+ }
+ ctype = SimulationContext.selectType("shape");
+ context = Database.selectSimulationContext(ctype, "Triangles");
+ if (context == null) {
+ step.addSimulationContext(cprop.setType(ctype).setValue("Triangles"));
+ } else {
+ step.addSimulationContext(context);
+ }
+ }
+// Update of the open study
+// mystudy.add(credoc); // Useless while the SIMER page need to be refreshed manually
+ getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of first added document
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+ public String doUpdate () {
+// -------------------------
+ return SUCCESS;
+ }
+
+ public String doVersion () {
+// --------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+// Getting user inputs
+ mystudy = getOpenStudy();
+ User user = getConnectedUser();
+ Step step = mystudy.getSelectedStep();
+// File updir = Database.getDownloadDirectory(user);
+// File upfile = new File(updir.getPath() + "/" + filename);
+ String upath = Database.getTemplatePath(); // Instead of DownloadDirectory for sharing the "uploaded" file between users
+ File upfile = new File(upath + filename);
+ String[] table = filename.split("\\x2E");
+ String format = table[table.length-1];
+
+// Versioning of the document
+ Publication current = mystudy.getSelectedDocument();
+ Document.Properties dprop = new Document.Properties();
+ dprop.setAuthor(user);
+ if (summary.length() > 0) dprop.setDescription(summary);
+
+ Publication next = step.versionDocument(current, dprop);
+
+// Writing the uploaded file into the created document
+ File target = next.getSourceFile().asFile();
+ if (target.exists()) target.delete();
+ Do.copy(upfile, target); // Instead of rename for keeping the "uploaded" file for further use
+// upfile.renameTo(target);
+
+// Saving the document in given state
+ next.saveAs(state);
+
+// Creation of default uses relations
+ defuses = new Vector<Document>();
+ setupDefaultUses(next.value().getType()); // Recursive function
+ for (Iterator<Document> i=defuses.iterator(); i.hasNext(); ) {
+ next.addDependency(i.next());
+ }
+//TODO: Outdating impacted document
+
+// Execution of module specific operations
+
+// 1. Conversion of the document to internal format, if required
+//TODO: The following code is temporary, waiting for the support of converters
+ if (format.equals("part")) {
+ ConvertsRelation export = next.attach("brep");
+ String fname = table[0];
+
+ for (int i=1; i<table.length-1; i++) fname = fname + table[i];
+ upfile = new File(upath + fname + ".brep");
+ upfile.renameTo(export.getTo().asFile());
+ }
+
+// Update of the open study
+// mystudy.setSelection(mystudy.getSelection()); // Rebuild the presentation
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getDescription () {
+// -------------------------------
+ return summary;
+ }
+
+ public void setDescription (String summary) {
+// -------------------------------------------
+ this.summary = summary;
+ }
+ public void setDocumentName (String name) {
+// -----------------------------------------
+ this.docname = name;
+ }
+ public void setDocumentState (String state) {
+// -------------------------------------------
+ this.state = ProgressState.valueOf(state);
+ }
+ public void setDocumentType (String value) {
+// ------------------------------------------
+ this.doctype = Integer.valueOf(value);
+ }
+ public void setFileName (String name) {
+// -------------------------------------
+ this.filename = name;
+ }
+// ==============================================================================================================================
+// Private service
+// ==============================================================================================================================
+
+ private void setupDefaultUses (DocumentType type) {
+// -------------------------------------------------
+ Set<DocumentType> uses = type.getDefaultUses();
+
+ for (Iterator<DocumentType> i=uses.iterator(); i.hasNext();) {
+ DocumentType usetype = i.next();
+ List<Document> usedoc = mystudy.collectInvolvedDocuments(usetype);
+ if (usedoc.isEmpty()) setupDefaultUses(usetype);
+ else defuses.addAll(usedoc);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Map;
+import java.util.Comparator;
+import java.util.ResourceBundle;
+
+import javax.security.auth.login.LoginContext;
+
+import com.opensymphony.xwork2.ActionSupport;
+
+import org.apache.struts2.interceptor.SessionAware;
+import org.apache.log4j.Logger;
+import org.splat.kernel.User;
+import org.splat.som.ApplicationRights;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Study;
+import org.splat.som.DocumentType;
+import org.splat.wapp.Menu;
+
+
+public class Action extends ActionSupport implements SessionAware {
+
+ private Map<String, Object> session;
+ private String mercode;
+
+ private static final long serialVersionUID = -895295026709526501L;
+ protected static final Logger logger = Logger.getLogger(Action.class);
+
+ public class DocumentTypeComparator implements Comparator<DocumentType> {
+// -----------------------------------------------------------------------
+ public int compare(DocumentType t1, DocumentType t2)
+ {
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ String name1 = t1.getName();
+ if (t1.isApproved()) name1 = locale.getString("type.document." + name1);
+ String name2 = t2.getName();
+ if (t2.isApproved()) name2 = locale.getString("type.document." + name2);
+
+ return name1.compareToIgnoreCase(name2);
+ }
+ }
+ public class ContextTypeComparator implements Comparator<SimulationContextType> {
+// --------------------------------------------------------------------------------
+ public int compare(SimulationContextType t1, SimulationContextType t2)
+ {
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ String name1 = t1.getName();
+ if (t1.isApproved()) name1 = locale.getString("type.context." + name1);
+ String name2 = t2.getName();
+ if (t2.isApproved()) name2 = locale.getString("type.context." + name2);
+
+ return name1.compareToIgnoreCase(name2);
+ }
+ }
+
+// ==============================================================================================================================
+// Session services
+// ==============================================================================================================================
+
+ protected void closeKnowledge () {
+// --------------------------------
+ OpenObject open = (OpenObject)session.remove("knowledge.open");
+ if (open != null) {
+ if (session.get("study.open") == null) open.clearFacades(); // For eventually reopening the knowledge from a fresh context
+ }
+ }
+ protected void closeStudy () {
+// ----------------------------
+ OpenObject open = (OpenObject)session.remove("study.open");
+ if (open != null) {
+ if (session.get("knowledge.open") == null) open.clearFacades(); // For eventually reopening the study from a fresh context
+ }
+ }
+ protected void connect (LoginContext context, User user) {
+// --------------------------------------------------------
+ OpenStudy open = getOpenStudy();
+ if (open != null) {
+ open.changeUser(user);
+ }
+ session.put("user.rights", new ApplicationRights(user) );
+ session.put("login.context", context); // For executing the deconnection, when requested
+ }
+ protected void disconnect () {
+// ----------------------------
+ OpenStudy open = getOpenStudy();
+ if (open != null) {
+ open.changeUser(null);
+ }
+ session.put("user.rights", new ApplicationRights(null) ); // Disables user rights
+ session.remove("login.context");
+ }
+ protected User getConnectedUser () {
+// ----------------------------------
+ ApplicationRights rights = (ApplicationRights)session.get("user.rights");
+ return rights.getUser(); // May be null
+ }
+ protected Menu getMenu (String name) {
+// ------------------------------------
+ return (Menu)session.get("menu." + name);
+ }
+ protected OpenKnowledge getOpenKnowledge () {
+// -------------------------------------------
+ return (OpenKnowledge)session.get("knowledge.open"); // May be null
+ }
+ protected OpenStudy getOpenStudy () {
+// -----------------------------------
+ return (OpenStudy)session.get("study.open"); // May be null
+ }
+ protected OpenKnowledge open (KnowledgeElement kelm) {
+// ----------------------------------------------------
+ OpenKnowledge open = new OpenKnowledge(kelm);
+
+ closeKnowledge(); // Just in case
+ session.put("knowledge.open", open);
+ return open;
+ }
+ protected OpenStudy open (Study study) {
+// --------------------------------------
+ OpenStudy open = new OpenStudy(getConnectedUser(), study); // The connected user may be null
+
+ closeStudy(); // Just in case
+ session.put("study.open", open);
+ return open;
+ }
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getErrorCode () {
+// -----------------------------
+ return mercode;
+ }
+ public Map<String, Object> getSession () {
+// ----------------------------------------
+ return session;
+ }
+
+ public void setErrorCode (String code) {
+// --------------------------------------
+ this.mercode = code;
+ }
+ public void setSession (Map<String, Object> session) {
+// ----------------------------------------------------
+ this.session = session;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.NamedNodeMap;
+
+import org.apache.log4j.Logger;
+import org.splat.kernel.User;
+import org.splat.kernel.XDOM;
+import org.splat.som.Document;
+import org.splat.som.DocumentRights;
+import org.splat.som.DocumentType;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.SimulationContext;
+import org.splat.som.Step;
+import org.splat.som.StudyRights;
+import org.splat.wapp.MenuItem;
+import org.splat.wapp.PopupMenu;
+import org.splat.wapp.PopupItem;
+import org.splat.wapp.SimpleMenu;
+import org.splat.wapp.TabBar;
+import org.splat.wapp.ToolBar;
+
+
+public class ApplicationSettings {
+
+ private String wappserver;
+ private String wappname;
+ private Properties wapprops; // General properties from the application properties files
+ private Locale locale; // Current user locale
+ private Map<String,SimpleMenu> menus = null; // Application menus
+ private Map<Integer,ToolBar> bars = null; // Study module-bars structured by steps
+ private Map<String,PopupMenu> popups = null;
+ private Map<String,Map<String,Object>> filter = null; // Named search filters
+ private Map<String,DocumentType> defdoctype = null; // Default document types structured by step.formats
+ private Map<String,String> tempfile = null; // Available template files
+ private String[] viewermap = null; // List of file extensions mapped to a viewer
+ private Map<String,Converter> convertmap = null; // Available document format converters
+ private Properties jndprops = null; // JNDI context for launching converters
+
+ private static ApplicationSettings my = null; // Singleton instance
+ protected final static Logger logger = Logger.getLogger(ApplicationSettings.class);
+
+
+ private static class NewMenu extends SimpleMenu {
+// -----------------------------------------------------------------
+ private NewMenu ()
+ {
+ super("create");
+ addItem("new-empty", "menu.new.empty", "image.empty.png", "select?menu=create&item=new-empty");
+ addItem("new-copy", new MenuItem("menu.new.copy").icon("image.copy.png") );
+ addItem("new-instance", new MenuItem("menu.new.instance").icon("image.hold.gif") );
+ addItem("new-import", new MenuItem("menu.new.import").icon("icon.upload.png") );
+ this.selects("new-empty");
+ }
+ }
+ private static class SearchMenu extends SimpleMenu {
+// -----------------------------------------------------------------
+ private SearchMenu ()
+ {
+ super("search");
+ addItem("search-study", "menu.search.study", "image.study.png", "select?menu=search&item=search-study");
+ addItem("search-knowledge", "menu.search.idea", "image.idea.png", "select?menu=search&item=search-knowledge");
+ addItem("search-document", new MenuItem("menu.search.document").icon("icon.any.png") );
+ this.selects("search-study");
+ }
+ }
+ private static class PropertiesMenu extends SimpleMenu {
+// -----------------------------------------------------------------
+ private PropertiesMenu ()
+ {
+ super("configuration");
+ addItem("prop-general", "menu.prop.general", "image.hold.gif", "select?menu=properties&item=prop-general");
+ addItem("prop-scenario", "menu.prop.scenario", "image.hold.gif", "select?menu=properties&item=prop-scenario");
+ addItem("prop-timestamp", new MenuItem("menu.prop.timestamp").icon("image.stamp.png") );
+ addItem("prop-comlog", new MenuItem("menu.prop.comlog").icon("image.hold.gif") );
+ addItem("prop-version", new MenuItem("menu.prop.version").icon("image.dirclosed.png") );
+ }
+ }
+ private static class DatadminMenu extends SimpleMenu {
+// -----------------------------------------------------------------
+ private DatadminMenu ()
+ {
+ super("datadmin");
+ addItem("admin-scontext", "menu.admin.context", "image.hold.gif", "select?menu=datadmin&item=admin-scontext");
+ addItem("admin-knowelm", "menu.admin.knowledge", "image.idea.png", "select?menu=datadmin&item=admin-knowelm");
+ addItem("admin-study", new MenuItem("menu.admin.study").icon("image.study.png") );
+ }
+ }
+ private static class SysadminMenu extends SimpleMenu {
+// -----------------------------------------------------------------
+ private SysadminMenu ()
+ {
+ super("sysadmin");
+ addItem("admin-indexing", "menu.admin.indexing", "image.index.png", "select?menu=sysadmin&item=admin-indexing");
+ addItem("admin-importuser", "menu.admin.importuser", "image.group.png", "select?menu=sysadmin&item=admin-importuser");
+ }
+ }
+ private enum Item { publish, accept, approve, promote, demote, undo, rename, attach, edit, script, version, replace, export, remove, purge };
+// Resources relative to studies
+ private static class EditableStudyPopup extends PopupMenu {
+// ----------------------------------------------------------------
+ private StudyRights user = null;
+
+ private EditableStudyPopup ()
+ {
+ addItem("publish", new PopupItem("menu.publish").icon("image.publish.png").action("edit-study?action=publish").confirmation("message.publish.study"));
+ addItem("promote", new PopupItem("menu.archive"));
+ addSeparator();
+ addItem("edit", new PopupItem("menu.properties").icon("icon.ed.png").action("../select?menu=properties"));
+ addSeparator();
+ addItem("script", new PopupItem("menu.newscenario").action("add-scenario"));
+ addItem("version", new PopupItem("menu.version").icon("image.version.png").action("notyetimplemented"));
+ addSeparator();
+ addItem("purge", new PopupItem("menu.purge").confirmation("message.purge.study"));
+ addItem("export", new PopupItem("menu.export").icon("image.export.png")); // For future needs
+ addItem("remove", new PopupItem("menu.remove.version").icon("icon.delete.png").action("notyetimplemented").confirmation("message.delete.study"));
+ }
+ public boolean isEnabled (String name)
+ {
+ if (user == null) return false; // Should not happen
+ Item item = Item.valueOf(name);
+ if (item == Item.publish) return user.canPublish();
+ if (item == Item.edit) return user.canEditProperties();
+ if (item == Item.script) return user.canAddScenario();
+ if (item == Item.version) return user.canVersion();
+ if (item == Item.remove) return user.canRemove();
+ if (item == Item.purge) return user.canPurge();
+ return false;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof StudyRights) {
+ user = (StudyRights)context; // Just for optimizing
+ boolean history = user.getOperand().isVersioned();
+ PopupItem item = this.item("remove");
+ if (history) item.rename("menu.remove.version");
+ else item.rename("menu.remove.study");
+ }
+ }
+ }
+// Resources relative to documents
+ private static class EditableDocumentPopup extends PopupMenu { // Popup of In-Work documents
+// ----------------------------------------------------------------
+ private DocumentRights user = null;
+
+ private EditableDocumentPopup ()
+ {
+ addItem("accept", new PopupItem("menu.accept").icon("image.accept.png").action("setDocument?action=accept").confirmation("message.accept.document"));
+ addItem("promote", new PopupItem("menu.promote").icon("image.publish.png").action("setDocument?action=promote").confirmation("message.promote.document"));
+ addSeparator();
+ addItem("rename", new PopupItem("menu.rename").action("edit-document?action=renameDocument"));
+ addItem("attach", new PopupItem("menu.attach").icon("image.attach.png").action("select-file?nextAction=attach"));
+ addSeparator();
+ addItem("version", new PopupItem("menu.version").icon("image.version.png").action("select-file?nextAction=version"));
+ addItem("replace", new PopupItem("menu.replace").icon("image.replace.png").action("select-file?nextAction=replace"));
+ addSeparator();
+ addItem("purge", new PopupItem("menu.purge").action("notyetimplemented").confirmation("message.purge.document"));
+ addItem("remove", new PopupItem("menu.remove.version").icon("icon.delete.png").action("remove-document").confirmation("message.delete.document"));
+ }
+ public boolean isEnabled (String name)
+ {
+ if (user == null) return false; // Should not happen
+ Item item = Item.valueOf(name);
+ if (item == Item.accept) return user.canAccept();
+ if (item == Item.promote) return user.canPromote();
+ if (item == Item.rename) return user.canRename();
+ if (item == Item.attach) return user.canAttach();
+ if (item == Item.version) return user.canVersion();
+ if (item == Item.replace) return user.canReplace();
+ if (item == Item.purge) return user.canPurge();
+ if (item == Item.remove) return user.canRemove();
+ return false;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof DocumentRights) {
+ user = (DocumentRights)context; // Just for optimizing
+ Document downer = user.getOperand();
+ PopupItem item = this.item("remove");
+ if (downer.isVersioned()) item.rename("menu.remove.version");
+ else item.rename("menu.remove.document");
+ }
+ }
+ }
+ private static class ReviewableDocumentPopup extends PopupMenu { // Popup of In-Draft documents
+// ----------------------------------------------------------------
+ private DocumentRights user = null;
+
+ private ReviewableDocumentPopup ()
+ {
+ addItem("demote", new PopupItem("menu.demote").icon("image.demote.png").action("setDocument?action=demote").confirmation("message.demote.document"));
+ addItem("promote", new PopupItem("menu.review").icon("image.review.png").action("setDocument?action=review").confirmation("message.review.document"));
+ addSeparator();
+ addItem("attach", new PopupItem("menu.attach").icon("image.attach.png").action("select-file?nextAction=attach"));
+ addSeparator();
+ addItem("version", new PopupItem("menu.version").icon("image.version.png").action("select-file?nextAction=version"));
+ addSeparator();
+ addItem("purge", new PopupItem("menu.purge").action("notyetimplemented").confirmation("message.purge.document"));
+ }
+ public boolean isEnabled (String name)
+ {
+ if (user == null) return false; // Should not happen
+ Item item = Item.valueOf(name);
+ if (item == Item.demote) return user.canDemote();
+ if (item == Item.promote) return user.canReview();
+ if (item == Item.attach) return user.canAttach();
+ if (item == Item.version) return user.canVersion();
+ if (item == Item.purge) return user.canPurge();
+ return false;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof DocumentRights) {
+ user = (DocumentRights)context; // Just for optimizing
+ }
+ }
+ }
+ private static class NotResultDocumentPopup extends PopupMenu {
+// ----------------------------------------------------------------
+ private DocumentRights user = null;
+
+ private NotResultDocumentPopup ()
+ {
+ addItem("demote", new PopupItem("menu.demote").icon("image.demote.png").action("setDocument?action=demote").confirmation("message.demote.document"));
+ addSeparator();
+ addItem("attach", new PopupItem("menu.attach").icon("image.attach.png").action("select-file?nextAction=attach"));
+ addSeparator();
+ addItem("version", new PopupItem("menu.version").icon("image.version.png").action("select-file?nextAction=version"));
+ addSeparator();
+ addItem("purge", new PopupItem("menu.purge").action("notyetimplemented").confirmation("message.purge.document"));
+ addItem("remove", new PopupItem("menu.remove.version").icon("icon.delete.png").action("remove-document").confirmation("message.delete.document"));
+ }
+ }
+ private static class ApprovableDocumentPopup extends PopupMenu { // Popup of In-Check documents
+// ----------------------------------------------------------------
+ private DocumentRights user = null;
+
+ private ApprovableDocumentPopup ()
+ {
+ addItem("undo", new PopupItem("menu.demote").icon("image.invalidate.png").action("setDocument?action=invalidate").confirmation("message.demote.document"));
+ addItem("demote", new PopupItem("menu.disapprove").icon("image.demote.png").action("setDocument?action=disapprove").confirmation("message.disapprove.document"));
+ addItem("approve", new PopupItem("menu.approve").icon("icon.APPROVED.png").action("setDocument?action=approve").confirmation("message.approve.document"));
+ }
+ public boolean isEnabled (String name)
+ {
+ if (user == null) return false; // Should not happen
+ Item item = Item.valueOf(name);
+ if (item == Item.undo) return user.canInvalidate();
+ if (item == Item.demote) return user.canDemote();
+ if (item == Item.approve) return user.canApprove();
+ return false;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof DocumentRights) {
+ user = (DocumentRights)context; // Just for optimizing
+ }
+ }
+ }
+ private static class ApprovedPopup extends PopupMenu { // Popup of Approved documents
+// ----------------------------------------------------------------
+ private ApprovedPopup ()
+ {
+ addItem("attach", new PopupItem("menu.attach").icon("image.attach.png").action("select-file?nextAction=attach"));
+ addSeparator();
+ addItem("version", new PopupItem("menu.version").icon("image.version.png").action("select-file?nextAction=version"));
+ }
+ }
+ private static class ExternPopup extends PopupMenu { // Popup of Extern documents
+// ----------------------------------------------------------------
+ private DocumentRights user = null;
+
+ private ExternPopup ()
+ {
+ addItem("rename", new PopupItem("menu.rename").action("edit-document?action=renameDocument"));
+ addItem("replace", new PopupItem("menu.replace").icon("image.replace.png").action("select-file?nextAction=replace"));
+ addSeparator();
+ addItem("remove", new PopupItem("menu.remove.document").icon("icon.delete.png").action("remove-document").confirmation("message.delete.document"));
+ }
+ public boolean isEnabled (String name)
+ {
+ if (user == null) return false; // Should not happen
+ Item item = Item.valueOf(name);
+ if (item == Item.rename) return user.canRename();
+ if (item == Item.replace) return user.canReplace();
+ if (item == Item.remove) return user.canRemove();
+ return false;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof DocumentRights) {
+ user = (DocumentRights)context; // Just for optimizing
+ }
+ }
+ }
+// Resources relative to simulation contexts
+ private static class ScontextPopup extends PopupMenu {
+// --------------------------------------------------------
+ private SimulationContextFacade owner = null;
+
+ private ScontextPopup ()
+ {
+ addItem("rename", new PopupItem("menu.rename").action("edit-context?action=renameContext"));
+ addItem("edit", new PopupItem("menu.edit").action("edit-context?action=editContext"));
+ addSeparator();
+ addItem("remove", new PopupItem("menu.remove").icon("icon.delete.png").action("remove-context").confirmation("message.delete.context"));
+ }
+ public boolean isEnabled (String name)
+ {
+ Item item = Item.valueOf(name);
+
+ if (item == Item.rename) {
+ return false;
+ } else
+ if (item == Item.edit) {
+// if (!owner.isEditable())
+ return false;
+ }
+ return true;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof SimulationContextFacade) {
+ owner = (SimulationContextFacade)context; // Just for optimizing
+ }
+ else {
+ super.setContext(name, context);
+ }
+ }
+ }
+// Resources relative to knowledge
+ private static class FeedbexPopup extends PopupMenu {
+// --------------------------------------------------------
+ private KnowledgeElement owner = null;
+
+ private FeedbexPopup ()
+ {
+ addItem("promote", new PopupItem("menu.promote").icon("image.review.png").action("promote-knowledge").confirmation("message.promote.knowledge"));
+ addItem("demote", new PopupItem("menu.demote").icon("image.invalidate.png").action("demote-knowledge").confirmation("message.demote.knowledge"));
+ addSeparator();
+ addItem("rename", new PopupItem("menu.rename").action("edit-knowledge?action=renameKnowledge"));
+ addItem("edit", new PopupItem("menu.edit").action("edit-knowledge?action=editKnowledge"));
+ addSeparator();
+ addItem("remove", new PopupItem("menu.remove").icon("icon.delete.png").action("remove-knowledge").confirmation("message.delete.knowledge"));
+ }
+ public boolean isEnabled (String name)
+ {
+ Item item = Item.valueOf(name);
+
+ if (item == Item.promote) {
+ if (owner.getProgressState() != ProgressState.inDRAFT) return false;
+ } else
+ if (item == Item.demote) {
+ if (owner.getProgressState() != ProgressState.inCHECK) return false;
+ }
+ return true;
+ }
+ public void setContext (String name, Object context)
+ {
+ if (context instanceof KnowledgeElement) owner = (KnowledgeElement)context; // Just for optimizing
+ else {
+ super.setContext(name, context);
+ }
+ }
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public static ApplicationSettings getMe () {
+// ------------------------------------------
+ return my; // The application is supposed being previously created below
+ }
+ protected ApplicationSettings (String wappurl, Locale lang) throws IOException {
+// -----------------------------------------------------------
+ ClassLoader cloader = getClass().getClassLoader();
+ String[] wurl = wappurl.split("/"); // [0]="http:", [1]="", [2]="{server}:{port}", [3]="name"
+
+ locale = lang;
+ wappserver = wurl[2];
+ wappname = wurl[3];
+ wapprops = new Properties();
+ jndprops = new Properties();
+ wapprops.load(cloader.getResourceAsStream(wappname + ".properties"));
+ jndprops.load(cloader.getResourceAsStream("jndi.properties"));
+
+ logger.info("Application root set to " + wapprops.getProperty("wapp.root"));
+ my = this;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public void configure (String filename) {
+// ---------------------------------------
+// Non customizable settings
+ menus = new HashMap<String, SimpleMenu>();
+ SimpleMenu menu = new NewMenu();
+ menus.put( menu.getName(), menu );
+ menu = new SearchMenu();
+ menus.put( menu.getName(), menu );
+ menu = new DatadminMenu();
+ menus.put( menu.getName(), menu );
+ menu = new SysadminMenu();
+ menus.put( menu.getName(), menu );
+ menu = new PropertiesMenu();
+ menus.put( menu.getName(), menu );
+
+ popups = new HashMap<String, PopupMenu>();
+ popups.put("steditable", new EditableStudyPopup());
+ popups.put("editable", new EditableDocumentPopup());
+ popups.put("notresult", new NotResultDocumentPopup());
+ popups.put("reviewable", new ReviewableDocumentPopup());
+ popups.put("approvable", new ApprovableDocumentPopup());
+ popups.put("approved", new ApprovedPopup());
+ popups.put("extern", new ExternPopup());
+ popups.put("scontext", new ScontextPopup());
+ popups.put("feedbex", new FeedbexPopup());
+
+// Default customizable mandatory settings
+ Map<String, Object> fprop = new HashMap<String, Object>();
+ TabBar sbar = new TabBar();
+ sbar.addItem("private", "search-study?area=private");
+ sbar.addItem("public", "search-study?area=public");
+ sbar.addItem("reference", "search-study?area=reference");
+ sbar.selects("private");
+ fprop.put("area", sbar);
+ fprop.put("state", "inPROGRESS");
+ fprop.put("author", "0");
+ fprop.put("owner", "all");
+ fprop.put("reference", "");
+ fprop.put("title", "");
+ fprop.put("context", new Vector<SimulationContext>());
+
+ Map<String, Object> gprop = new HashMap<String, Object>();
+ sbar = new TabBar();
+ sbar.addItem("private", "search-knowledge?area=private");
+ sbar.addItem("public", "search-knowledge?area=public");
+ sbar.addItem("reference", "search-knowledge?area=reference");
+ sbar.selects("public");
+ gprop.put("area", sbar);
+ gprop.put("author", "0");
+ gprop.put("owner", "all");
+ gprop.put("type", "2"); //TODO: Get the index from the type name
+ gprop.put("reference", "");
+ gprop.put("title", "");
+ gprop.put("context", new Vector<SimulationContext>());
+
+ defdoctype = new LinkedHashMap<String, DocumentType>();
+ tempfile = new HashMap<String, String>();
+ viewermap = new String[0];
+ convertmap = new HashMap<String, Converter>();
+ filter = new HashMap<String, Map<String, Object>>();
+ filter.put("study", fprop);
+ filter.put("knowledge", gprop);
+
+// Customization (must be done after above default settings)
+ File config = new File(filename);
+ if (config.exists()) {
+ loadCustomization(config); // Sets default document types, installed modules and available templates
+ } else {
+ logger.info("Could not find the application configuration file \"" + config.getAbsolutePath() + "\", using default settings");
+ }
+// Settings based on the customization
+ bars = new HashMap<Integer, ToolBar>(); // May be empty if no module installed
+
+ List<ProjectSettings.Step> steps = ProjectSettings.getAllSteps();
+ for (Iterator<ProjectSettings.Step> i=steps.iterator(); i.hasNext();) {
+ ProjectSettings.Step step = i.next();
+ List<String> formats = getDefaultFormats(step);
+ if (formats.size() == 0) continue;
+
+ ToolBar bar = new ToolBar(24); // Height of the module-bar
+ HashSet<String> module = new HashSet<String>(); // For not duplicating modules
+ for (Iterator<String> j=formats.iterator(); j.hasNext();) {
+ String format = j.next();
+ String command = getApplicationProperty("executable." + format);
+ if (command == null) continue; // Module not installed
+ if (module.contains(command)) continue;
+ module.add(command);
+ String[] parsed = command.split("/");
+ String[] name = parsed[parsed.length-1].split("\\x2E");
+ String docname = my.defdoctype.get(step.getNumber() + "." + format).getName();
+ if (tempfile.get(docname) == null) { // No available template
+ String tool = parsed[parsed.length-1];
+ String icon = name[0];
+ if (icon.equals("index")) {
+ tool = parsed[parsed.length-2];
+ icon = "tool." + tool.toLowerCase() + ".png";
+ }
+ else {
+ icon = "tool." + icon.toLowerCase() + ".png";
+ }
+ File image = new File(ApplicationSettings.getApplicationSkinPath() + icon);
+ if (!image.exists()) icon = "tool.any.png";
+ bar.addTool(tool, icon, command);
+ } else {
+ docname = "/jsp/newDocument.jsp?type=" + docname;
+ String icon = "tool." + name[0].toLowerCase() + ".png";
+ File image = new File(ApplicationSettings.getApplicationSkinPath() + icon);
+ if (!image.exists()) icon = "tool.any.png";
+ bar.addTool(name[0], icon, command, docname);
+ }
+ }
+ if (!bar.isEmpty()) bars.put(step.getNumber(), bar);
+ }
+ }
+
+ public String getApplicationProperty (String name) {
+// --------------------------------------------------
+ return wapprops.getProperty(name); // May be null
+ }
+
+ public String getApplicationRootPath () {
+// ---------------------------------------
+ return getApplicationProperty("wapp.root"); // The property is supposed including the Web application name
+ }
+
+ public String getApplicationURL () {
+// ----------------------------------
+ StringBuffer url = new StringBuffer("http://").append(my.wappserver).append("/").append(wappname);
+ return url.toString();
+ }
+
+ public Map<String, Object> getFilter (String name) {
+// --------------------------------------------------
+ return filter.get(name);
+ }
+
+ public ToolBar getModuleBar (Step step) {
+// -----------------------------------------
+ return bars.get(step.getNumber());
+ }
+
+ public Properties getNamingProperties () {
+// ----------------------------------------
+ return jndprops;
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static String getApplicationPluginPath () {
+// ------------------------------------------------
+ return my.getApplicationRootPath() + "plugin/";
+ }
+ public static String getApplicationResourcePath () {
+// --------------------------------------------------
+ return my.getApplicationRootPath() + "WEB-INF/classes/";
+ }
+ public static String getApplicationSkinPath () {
+// ----------------------------------------------
+ return my.getApplicationRootPath() + "skin/";
+ }
+ public static Converter getConverter (DocumentType type, String format) {
+// -----------------------------------------------------------------------
+ return my.convertmap.get(format + type.getName()); // May be null;
+ }
+ public static DocumentType getDefaultDocumentType (Step step, String format) {
+// ----------------------------------------------------------------------------
+ String[] table = format.split("\\x2E");
+ return my.defdoctype.get(step.getNumber() + "." + table[table.length-1]); // May be null
+ }
+ public static String getDownloadURL (User user) {
+// --------------------------------------------------
+ StringBuffer url = new StringBuffer("http://").append(my.wappserver).append("/download/").append(user.getUsername()).append("/");
+ return url.toString(); // The download Tomcat context is supposed being defined
+ }
+ public static Locale getCurrentLocale () {
+// ----------------------------------------
+ return my.locale;
+ }
+ public static SimpleMenu getMenu (String name) {
+// ----------------------------------------------
+ return my.menus.get(name);
+ }
+ public static PopupMenu getPopupMenu (String name) {
+// --------------------------------------------------
+ return my.popups.get(name);
+ }
+ public static String getRepositoryURL () {
+// ----------------------------------------
+ StringBuffer url = new StringBuffer("http://").append(my.wappserver).append("/repository/");
+ return url.toString(); // The repository Tomcat context is supposed being defined
+ }
+ public static Locale[] getSupportedLocales () {
+// ---------------------------------------------
+ String[] code = my.wapprops.getProperty("locale.supported").split(",");
+ Locale[] result = new Locale[code.length];
+ for (int i=0; i<code.length; i++) result[i] = new Locale(code[i]);
+ return result;
+ }
+ public static String[] getViewersMapping () {
+// -------------------------------------------
+ return my.viewermap;
+ }
+ public static String getWebSiteURL () {
+// -------------------------------------
+ return my.getApplicationProperty("wapp.website");
+ }
+ public static String getHelpURL () {
+// ----------------------------------
+ return my.getApplicationProperty("wapp.onlinehelp");
+ }
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private List<String> getDefaultFormats (ProjectSettings.Step step) {
+// ------------------------------------------------------------------
+ Set<String> keys = defdoctype.keySet();
+ int number = step.getNumber();
+ Vector<String> result = new Vector<String>();
+
+ for (Iterator<String> i=keys.iterator(); i.hasNext();) {
+ String[] key = i.next().split("\\x2E");
+ if (Integer.valueOf(key[0]) != number) continue;
+ if (key[1].equals("pdf")) continue; // PDF is not an authoring format
+ result.add(key[1]); // Formats are unique
+ }
+ return result;
+ }
+
+ private void loadCustomization (File config) {
+// --------------------------------------------
+ try {
+ DocumentBuilderFactory dfactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
+ DocumentBuilder dBuilder = dfactory.newDocumentBuilder();
+
+ org.w3c.dom.Document conf = dBuilder.parse(config.getPath());
+ HashMap<String, Node> children = XDOM.getNamedChildNodes(conf.getDocumentElement());
+
+// Default document types tag
+ Node child = children.get("default-doctypes");
+ NodeList nlist = child.getChildNodes();
+
+ List<DocumentType> listype = Document.selectAllTypes();
+ HashMap<String,DocumentType> maptype = new HashMap<String,DocumentType>();
+ for (Iterator<DocumentType> i=listype.iterator(); i.hasNext();) {
+ DocumentType type = i.next();
+ maptype.put(type.getName(), type);
+ }
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (!child.getNodeName().equals("step")) continue;
+
+ String nstep = child.getAttributes().getNamedItem("number").getNodeValue();
+ NodeList map = child.getChildNodes();
+ for (int j=0; j<map.getLength(); j++) {
+ child = map.item(j);
+ if (!child.getNodeName().equals("mapping")) continue;
+ NamedNodeMap natr = child.getAttributes();
+ String dext = natr.getNamedItem("extension").getNodeValue();
+ String type = natr.getNamedItem("type").getNodeValue();
+ defdoctype.put(nstep + "." + dext, maptype.get(type));
+ }
+ }
+// Modules tag
+ child = children.get("modules");
+ nlist = child.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (!child.getNodeName().equals("mapping")) continue;
+
+ NamedNodeMap natr = child.getAttributes();
+ String dext = natr.getNamedItem("extension").getNodeValue();
+ String exec = natr.getNamedItem("executable").getNodeValue();
+ wapprops.put("executable." + dext, exec);
+ }
+// Viewer mappings tag
+ child = children.get("viewers");
+ viewermap = child.getAttributes().getNamedItem("extension").getNodeValue().split(",");
+
+// Converters tag
+ child = children.get("converters");
+ nlist = child.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+
+ if (child.getNodeName().equals("geometry")) {
+ NamedNodeMap natr = child.getAttributes();
+ String from = natr.getNamedItem("from").getNodeValue();
+ String to = natr.getNamedItem("to").getNodeValue();
+ String exec = natr.getNamedItem("executable").getNodeValue();
+ convertmap.put(from + "geometry", new Converter("geometry", from, to, exec));
+ }
+ }
+
+// Templates tag
+ child = children.get("templates");
+ nlist = child.getChildNodes();
+ for (int i=0; i<nlist.getLength(); i++) {
+ child = nlist.item(i);
+ if (!child.getNodeName().equals("document")) continue;
+
+ NamedNodeMap natr = child.getAttributes();
+ String type = natr.getNamedItem("type").getNodeValue();
+ String file = natr.getNamedItem("file").getNodeValue();
+ tempfile.put(type, file);
+ }
+ }
+ catch (Exception error) {
+ logger.info("Error in customization", error);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.login.LoginContext;
+import javax.security.auth.Subject;
+import javax.security.auth.callback.*;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.User;
+import org.splat.som.ApplicationRights;
+import org.splat.som.Database;
+import org.splat.wapp.TabBar;
+
+import java.io.IOException;
+import javax.security.auth.login.FailedLoginException;
+
+
+public class ConnectionAction extends Action {
+
+ private String username = null;
+ private String password = null;
+ private String backmenu = null;
+
+ private static final long serialVersionUID = 6095471616361606231L;
+
+ private class Handler implements CallbackHandler {
+// ------------------------------------------------
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
+ {
+ for (int i = 0; i < callbacks.length; i++) {
+ if (callbacks[i] instanceof TextOutputCallback) {
+// Display a message according to a specified type
+
+ } else if (callbacks[i] instanceof NameCallback) {
+// Get the username
+ NameCallback call = (NameCallback)callbacks[i];
+ call.setName(username);
+
+ } else if (callbacks[i] instanceof PasswordCallback) {
+// Get the password
+ if (password != null) {
+ PasswordCallback call = (PasswordCallback)callbacks[i];
+ call.setPassword(password.toCharArray());
+ }
+ } else {
+ throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
+ }
+ }
+ }
+ }
+
+// ==============================================================================================================================
+// Action execution
+// ==============================================================================================================================
+
+ @SuppressWarnings("unchecked")
+ public String doLogin () throws Exception {
+// ------------------------
+ if (username == null || username.length() == 0) return INPUT;
+ if (password != null && password.length() == 0) password = null; // User having no password
+ try {
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ LoginContext context = new LoginContext("Simer", new Handler());
+ context.login();
+ transax.commit();
+
+ Subject identity = context.getSubject();
+ Set<User> table = identity.getPrincipals(User.class);
+ if (table.isEmpty()) throw new Exception();
+
+ User user = table.iterator().next(); // The user is (apparently...) the 1st principal
+ ApplicationRights logged = new ApplicationRights(user);
+ if (logged.canContributeToStudy() || logged.canValidate()) {
+//TODO: Set the search filter according to user preferences
+ Map<String,Object> session = getSession();
+ Map<String,Object> kfilter = (Map<String, Object>)session.get("knowledge.filter");
+ Map<String,Object> sfilter = (Map<String, Object>)session.get("study.filter");
+
+ TabBar kbar = (TabBar)kfilter.get("area");
+ TabBar sbar = (TabBar)sfilter.get("area");
+ kbar.enables("private");
+ sbar.enables("private");
+ sbar.selects("private");
+ if (logged.canCreateStudy()) sfilter.put("owner", "mine"); // Supposed being initialized to "all"
+ }
+ this.connect(context, user); // Updates the session context
+ return backmenu;
+ }
+ catch (FailedLoginException error) {
+ setErrorCode("message.error.login." + error.getMessage());
+ return INPUT;
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public String doLogout () {
+// -------------------------
+ try {
+ Map<String,Object> session = getSession();
+ Map<String,Object> kfilter = (Map<String, Object>)session.get("knowledge.filter");
+ Map<String,Object> sfilter = (Map<String, Object>)session.get("study.filter");
+ LoginContext context = (LoginContext)session.get("login.context");
+
+ logger.info("Deconnection of " + getConnectedUser().toString() + ".");
+ context.logout();
+
+//TODO: ProjectSettings.deleteDownloadDirectory(user);
+ sfilter.put("owner", "all");
+ ((TabBar)sfilter.get("area")).disables("private");
+ ((TabBar)kfilter.get("area")).disables("private");
+
+ this.disconnect(); // Updates the session context
+ return backmenu;
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getUsername () {
+// ----------------------------
+ return username;
+ }
+ public String getPassword () {
+// ----------------------------
+ return password;
+ }
+
+ public void setUsername (String value) {
+// --------------------------------------
+ this.username = value;
+ }
+ public void setPassword (String value) {
+// --------------------------------------
+ this.password = value;
+ }
+ public void setBackMenu (String menu) {
+// -------------------------------------
+ this.backmenu = menu;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageListener;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.splat.kernel.MismatchException;
+import org.splat.som.Document;
+import org.splat.som.Publication;
+import org.apache.log4j.Logger;
+
+
+public class Converter implements MessageListener {
+
+ private String type; // Type of document to be converted (e.g. geometry, model)
+ private String from; // Source format (e.g. py, sldprt)
+ private String to; // Target format (e.g. brep)
+ private String exec; // Command line launching the actual converter
+ private String fname; // Absolute path of the source file to be converted
+
+ final static Logger logger = Logger.getLogger(Converter.class);
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ protected Converter (String type, String from, String to, String exec) {
+// ----------------------------------------------------------------------
+ this.type = type;
+ this.from = from;
+ this.to = to;
+ this.exec = exec;
+ this.fname = null;
+
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public void converts (Publication source) throws MismatchException {
+// -----------------------------------------
+ Document sdoc = source.value();
+
+ if (!sdoc.getType().getName().equals(type)) throw new MismatchException();
+ if (!sdoc.getFormat().equals(from)) throw new MismatchException();
+ try {
+// Initialization of the asynchronous communication with the actual converter
+ ApplicationSettings settings = ApplicationSettings.getMe();
+ Context context = new InitialContext(settings.getNamingProperties());
+ ConnectionFactory factory = (javax.jms.QueueConnectionFactory)context.lookup("QueueConnectionFactory");
+ Connection connex = factory.createConnection();
+ Session session = connex.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Queue queue = session.createQueue("conversion");
+ MessageConsumer consum = session.createConsumer(queue);
+
+// Listen for arriving messages
+ consum.setMessageListener(this);
+ connex.start();
+
+// Start the conversion
+ String command = ApplicationSettings.getApplicationPluginPath() + "converter.jar";
+ String option = "-Dresource.dir=\"" + ApplicationSettings.getApplicationResourcePath() + "\"";
+ File executable = new File(command);
+ if (!executable.exists()) throw new NoSuchMethodException();
+
+ File sfile = sdoc.getSourceFile().asFile();
+ String args;
+
+ fname = sfile.getAbsolutePath();
+ args = "\"" + exec + "\" \"" + fname + "\"";
+ if (logger.isInfoEnabled()) {
+ logger.info("Launching the conversion of " + sfile.getName() + " to " + to.toUpperCase() + " format using " + command);
+ }
+ Runtime.getRuntime().exec("\"C:/Program Files/Java/jre6/bin/java.exe\" -jar " + option + " \"" + command + "\" " + args);
+ }
+ catch (Exception error) {
+ logger.error("Reason: ", error);
+ }
+ }
+
+// ==============================================================================================================================
+// Messages
+// ==============================================================================================================================
+
+ public void onMessage (Message msg) {
+// -----------------------------------
+ String result = msg.toString();
+ logger.info("Notification of availability of " + result);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+
+public abstract class DisplayBaseAction extends Action {
+
+ protected String myindex = null; // Index of the open object
+ protected String selection = null; // User activity selection
+ protected String action = null;
+
+ private static final long serialVersionUID = 3003902258668626946L;
+
+ protected enum Execute { popup, develop, reduce, reduceall }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getSelection () {
+// -----------------------------
+ return selection; // Equals to myobject.getSelection()
+ }
+
+ public void setAction (String action) {
+// -------------------------------------
+ this.action = action;
+ }
+ public void setIndex (String index) {
+// -----------------------------------
+ this.myindex = index;
+ }
+ public void setSelection (String step) {
+// --------------------------------------
+ this.selection = step;
+ }
+
+// ==============================================================================================================================
+// Abstract services
+// ==============================================================================================================================
+
+ public abstract String getWriteAccess ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.List;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.Database;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.Step;
+
+
+public class DisplayKnowledgeAction extends DisplayBaseAction {
+
+ protected OpenKnowledge myknelm = null; // Knowledge Element details
+
+ private static final long serialVersionUID = 8473504456981431762L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doOpen () {
+// -----------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ myknelm = getOpenKnowledge();
+ if (myindex != null) try { // Opening a knowledge from the search result
+ int index = Integer.valueOf(myindex);
+ if (myknelm != null && myknelm.getIndex() == index) { // - The selected knowledge is currently open
+ selection = myknelm.getSelection(); // Current selection
+ } else { // - The selected knowledge is new
+ KnowledgeElement kelm = Database.selectKnowledgeElement(index);
+ myknelm = open(kelm);
+ selection = myknelm.getSelection(); // Default selection
+ }
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR;
+ }
+ else if (selection != null) { // Re-opening (refreshing) the currently open knowledge
+ KnowledgeElement kelm = Database.selectKnowledgeElement(myknelm.getIndex());
+ myknelm = open(kelm); // Closes the previously open knowledge
+ myknelm.setSelection(selection);
+ }
+ getSession().put("menu.knowledge", myknelm.getMenu());
+
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doSelectStep () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ myknelm = getOpenKnowledge();
+
+ if (selection == null) { // Switch back to the current study
+ selection = myknelm.getSelection();
+ } else { // Selection of a step of current study
+ myknelm.setSelection(selection);
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doSelectDocument () {
+// ---------------------------------
+ Execute todo = Execute.valueOf(action);
+ myknelm = getOpenKnowledge();
+ if (todo == Execute.develop) myknelm.developDocument(myindex);
+ else if (todo == Execute.reduce) myknelm.reduceHistory(myindex);
+ else if (todo == Execute.reduceall) myknelm.reduceDocument(myindex);
+ return SUCCESS;
+ }
+
+ public String doSelectKnowledge () {
+// ----------------------------------
+ Execute todo = Execute.valueOf(action);
+ myknelm = getOpenKnowledge();
+ if (todo == Execute.develop) myknelm.developKnowledge(myindex);
+ else if (todo == Execute.reduce) myknelm.reduceKnowledge(myindex);
+ return SUCCESS;
+ }
+
+ public String doClose () {
+// ------------------------
+ closeKnowledge();
+ return SUCCESS;
+ }
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public List<DocumentFacade> getDocuments () {
+// --------------------------------------------
+ return myknelm.getDisplayedDocuments();
+ }
+ public List<OpenObject.KnowledgeIterator> getKnowledges () {
+// ----------------------------------------------------------
+ return myknelm.getDisplayedKnowledges();
+ }
+ public List<SimulationContextFacade> getSimulationContexts () {
+// -------------------------------------------------------------
+ return myknelm.getDisplayedSimulationContexts();
+ }
+ public Step getSelectedStep () {
+// ------------------------------
+ return myknelm.getSelectedStep();
+ }
+ public String getWriteAccess () {
+// -------------------------------
+ return "false";
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.List;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.Database;
+import org.splat.som.ProjectElement;
+import org.splat.som.Scenario;
+import org.splat.som.StepRights;
+import org.splat.som.Study;
+import org.splat.wapp.PopupMenu;
+import org.splat.wapp.SimpleMenu;
+
+
+public class DisplayStudyStepAction extends DisplayBaseAction {
+
+ protected OpenStudy mystudy = null; // Presented study
+
+ private static final long serialVersionUID = 6467920934724352021L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doOpen () {
+// -----------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ Study study;
+
+ mystudy = getOpenStudy();
+ if (myindex != null) try { // Opening a study from the search result
+ int index = Integer.valueOf(myindex);
+ if (mystudy != null && mystudy.getIndex() == index) { // - The selected study is currently open
+ selection = mystudy.getSelection(); // Current selection
+ study = mystudy.getStudyObject(); // Current Study object
+ } else { // - The selected study is new
+ study = Database.selectStudy(index);
+ mystudy = open(study);
+ selection = mystudy.getSelection(); // Default selection
+ }
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR;
+ }
+ else if (selection == null) { // Opening a study just newed
+ selection = mystudy.getSelection(); // Default selection
+ study = mystudy.getStudyObject();
+ }
+ else { // Re-opening (refreshing) the currently open study
+ study = Database.selectStudy(mystudy.getIndex());
+ mystudy = open(study); // Closes the previously open study
+ mystudy.setSelection(selection);
+ }
+// Initialization of menus
+ ProjectElement owner = mystudy.getSelectedStep().getOwner();
+ SimpleMenu menu = ApplicationSettings.getMenu("configuration");
+ if (owner instanceof Scenario) {
+ menu.enables("prop-scenario");
+ menu.selects("prop-scenario");
+ } else {
+ menu.disables("prop-scenario");
+ menu.selects("prop-general");
+ }
+ getSession().put("menu.study", mystudy.getMenu());
+
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doSelectStep () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+ if (selection == null) { // Switch back to the current study
+ selection = mystudy.getSelection();
+ } else { // Selection of a step of current study
+ mystudy.setSelection(selection);
+ }
+// Re-initialization of the properties menu according to the selected step
+ ProjectElement owner = mystudy.getSelectedStep().getOwner();
+ SimpleMenu menu = ApplicationSettings.getMenu("configuration");
+ if (owner instanceof Scenario) {
+ menu.enables("prop-scenario");
+ menu.selects("prop-scenario");
+ } else {
+ menu.disables("prop-scenario");
+ menu.selects("prop-general");
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doSelectDocument () {
+// ---------------------------------
+ mystudy = getOpenStudy();
+
+ Execute todo = Execute.valueOf(action);
+ if (todo == Execute.develop) mystudy.developDocument(myindex);
+ else if (todo == Execute.reduce) mystudy.reduceHistory(myindex);
+ else if (todo == Execute.reduceall) mystudy.reduceDocument(myindex);
+ return SUCCESS;
+ }
+
+ public String doSelectKnowledge () {
+// ----------------------------------
+ mystudy = getOpenStudy();
+
+ Execute todo = Execute.valueOf(action);
+ if (todo == Execute.develop) mystudy.developKnowledge(myindex);
+ else if (todo == Execute.reduce) mystudy.reduceKnowledge(myindex);
+ return SUCCESS;
+ }
+
+ public String doClose () {
+// ------------------------
+ closeStudy();
+ return SUCCESS;
+ }
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getAction () {
+// --------------------------
+ return action;
+ }
+ public List<DocumentFacade> getDocuments () {
+// -------------------------------------------
+ return mystudy.getDisplayedDocuments();
+ }
+ public List<OpenObject.KnowledgeIterator> getKnowledges () {
+// ----------------------------------------------------------
+ return mystudy.getDisplayedKnowledges();
+ }
+ public List<SimulationContextFacade> getSimulationContexts () {
+// -------------------------------------------------------------
+ return mystudy.getDisplayedSimulationContexts();
+ }
+ public PopupMenu getPopup () {
+// ----------------------------
+ return mystudy.getPopup();
+ }
+ public int getStepNumber () {
+// ---------------------------
+ return mystudy.getSelectedStep().getNumber();
+ }
+ public String getStepEnabled () {
+// -------------------------------
+ return String.valueOf(mystudy.isStepEnabled());
+ }
+ public StepRights getUserRights () {
+// ----------------------------------
+ return mystudy.getSelectedStepRights();
+ }
+ public String getWriteAccess () {
+// -------------------------------
+ return String.valueOf(mystudy.isOpenForWriting());
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.File;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.splat.manox.XMLDocument;
+import org.splat.kernel.Relation;
+import org.splat.som.ConvertsRelation;
+import org.splat.som.Document;
+import org.splat.som.DocumentRights;
+import org.splat.som.DocumentType;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Publication;
+import org.splat.som.Revision;
+import org.splat.som.Step;
+import org.splat.som.Timestamp;
+import org.splat.som.UsesRelation;
+import org.splat.som.VersionsRelation;
+import org.splat.wapp.PopupMenu;
+
+
+public class DocumentFacade implements HistoryFacade {
+
+ private OpenObject owner;
+ private Publication me;
+ private Document my; // Published document
+ private ProgressState state; // Document state
+ private String version; // My document version in customized format
+ private State display; // Presentation state
+ private String surl; // URL of the source file
+ private String format; // Extension of the source file
+ private String icon; // Corresponding icon
+ private String sharing; // Icon qualifying sharing between scenarios of a same study
+ private String updated; // Icon qualifying versioning from the previous study version
+ private String size;
+ private String date;
+ private String description;
+ private List<DocumentFacade> uses;
+ private List<FileFacade> exports;
+ private List<HistoryFacade> history;
+ private PopupMenu popup;
+
+ private enum State { closed, open, deepopen }
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public DocumentFacade (OpenObject opened, Publication represented) {
+// ------------------------------------------------------------------
+ owner = opened;
+ me = represented;
+ my = me.value();
+ state = my.getProgressState();
+ display = State.closed;
+ description = null;
+ uses = null;
+ exports = null;
+ history = null;
+ popup = null;
+
+ this.refresh(); // Initializes the presentation of my document
+ }
+/**
+ * Constructs the facade of a document presented in the history folder.
+ *
+ * @param represented the represented history document
+ */
+ private DocumentFacade (OpenObject opened, Document represented) {
+// ----------------------------------------------------------------
+ owner = opened;
+ me = null; // Marks the history context
+ my = represented;
+ state = my.getProgressState(); // In reality, HISTORY
+ display = State.open; // Because the given document is a history document
+ description = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale()).getString("history.creation") + " " + my.getAuthor().toString();
+ uses = null;
+ exports = null;
+ history = null;
+ popup = null;
+
+ this.refresh(); // Initializes the presentation of my document
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public void develop () {
+// -------------------
+ if (display != State.open) { // Opening the document
+ if (uses == null) {
+ List<Publication> relist = me.getRelations(UsesRelation.class);
+
+ uses = new ArrayList<DocumentFacade>(relist.size());
+ for (Iterator<Publication> i=relist.iterator(); i.hasNext();) {
+ Publication used = i.next();
+ Integer index = used.getIndex();
+ DocumentFacade facade = OpenObject.docpres.get(index);
+ if (facade == null) {
+ facade = new DocumentFacade(owner, used);
+ OpenObject.docpres.put(index, facade);
+ }
+ uses.add(facade);
+ }
+ }
+ if (exports == null) {
+ List<Relation> relation = my.getRelations(ConvertsRelation.class);
+
+ exports = new ArrayList<FileFacade>(relation.size());
+ for (Iterator<Relation> i=relation.iterator(); i.hasNext();) {
+ ConvertsRelation export = (ConvertsRelation)i.next();
+ exports.add( new FileFacade(export) );
+ }
+ }
+ if (history == null) {
+ if (my.getPreviousVersion() != null || state == ProgressState.inCHECK || state == ProgressState.APPROVED) history = new ArrayList<HistoryFacade>();
+ }
+ display = State.open;
+ } else { // Opening the history of document, if exist
+ if (history.isEmpty()) collectHistory(my);
+ display = State.deepopen;
+ }
+ }
+
+ public void reduce () {
+// ---------------------
+ if (display == State.deepopen) display = State.open;
+ }
+
+ public void reduceAll () {
+// ------------------------
+ display = State.closed;
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public List<FileFacade> getAttachments () {
+// ------------------------------------------
+ return exports;
+ }
+ public String getDate () {
+// ------------------------
+ return date;
+ }
+ public String getDescription () {
+// -------------------------------
+ return description;
+ }
+ public String getEditIcon () {
+// ----------------------------
+ return "icon.ed" + state + ".png";
+ }
+ public String getFileIcon () {
+// ----------------------------
+ return icon;
+ }
+ public List<HistoryFacade> getHistory () {
+// ----------------------------------------
+ return history;
+ }
+ public String getIndex () {
+// -------------------------
+ return String.valueOf(my.getIndex());
+ }
+ public PopupMenu getPopup () { // Contextualizes the pop-up
+// ----------------------------
+ popup.setContext("document", new DocumentRights(owner.getUser(), me));
+ return popup; // callers must "use" the returned pop-up before getting another pop-up
+ }
+ public String getPresentationState () {
+// -------------------------------------
+ return display.toString();
+ }
+ public String getProgressState () {
+// ---------------------------------
+ return state.toString();
+ }
+ public String getSharingIcon () {
+// -------------------------------
+ return sharing;
+ }
+ public String getSize () {
+// ------------------------
+ return size;
+ }
+ public String getStateIcon () {
+// -----------------------------
+ return "icon." + state + ".png";
+ }
+ public String getTitle () {
+// -------------------------
+ return my.getTitle();
+ }
+ public String getURL () {
+// -----------------------
+ return surl;
+ }
+ public List<DocumentFacade> getUses () {
+// ---------------------------------------
+ return uses;
+ }
+ public String getVersion () {
+// ---------------------------
+ return version;
+ }
+ public String getVersioningIcon () {
+// ----------------------------------
+ return updated;
+ }
+ public boolean isFacadeOf (Publication represented) {
+// ---------------------------------------------------
+ return me.equals(represented);
+ }
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void refresh () {
+// -------------------------
+ ResourceBundle custom = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ DecimalFormat sizstring = new DecimalFormat(custom.getString("size.format")); // Locale size display format
+ SimpleDateFormat datstring = new SimpleDateFormat(custom.getString("date.format")); // Locale date display format
+ Revision.Format verstring = new Revision.Format(ProjectSettings.getRevisionPattern());
+ String path = my.getSourceFile().getRelativePath();
+ String[] mapping = ApplicationSettings.getViewersMapping();
+
+ for (int i=0; i<mapping.length; i++) {
+ org.splat.som.File export = my.getAttachedFile(mapping[i]);
+ if (export == null) continue;
+ path = export.getRelativePath();
+ break;
+ }
+ surl = ApplicationSettings.getRepositoryURL() + path;
+ surl = surl.replaceAll("'", "\\\\'");
+ format = my.getFormat();
+ if (format.equals("xml")) format = XMLDocument.getActualFormat(my.getSourceFile().asFile());
+
+// Document state (overridable by the publication - see below)
+ state = my.getProgressState();
+ version = my.getVersion(); // May be null
+
+// Icons definition
+ icon = "icon." + format + ".png";
+ sharing = "image.hold.gif";
+ updated = "image.hold.gif";
+ File image = new File(ApplicationSettings.getApplicationSkinPath() + icon);
+ if (!image.exists()) icon = "icon.any.png";
+
+ if (me != null) {
+ if (me.getOwnerStudy().shares(my)) {
+ sharing = "image.share.png";
+ updated = "icon.hold.png";
+ }
+ if (me.isOutdated()) state = ProgressState.inWORK; // Overrides the document state
+
+ } else { // Facade in the history folder
+ if (!my.isVersioned()) { // History of the last version
+ if (state != ProgressState.inWORK) icon = "icon.inWORK.png";
+ else icon = "icon." + state.toString() + ".png";
+ } else
+ if ( my.isPublished()) {
+ sharing = "image.share.png"; // Not correct if published in a previous version of the study
+ updated = "icon.hold.png";
+ }
+ }
+// Document description
+ VersionsRelation versions = (VersionsRelation)my.getFirstRelation(VersionsRelation.class);
+ if (versions != null) {
+ description = versions.getDescription();
+ }
+// File details
+ if (state != ProgressState.EXTERN) version = verstring.format(version);
+ size = sizstring.format(my.getSourceFile().asFile().length()/1000);
+ date = datstring.format(my.getLastModificationDate());
+
+// Refresh of the history in case of promotion
+ if (display == State.deepopen) {
+ history.clear();
+ collectHistory(my);
+ }
+// Popup menus
+ if (me == null) return; // No pop-up (yet) in the history folder
+ if (state == ProgressState.EXTERN) popup = ApplicationSettings.getPopupMenu("extern");
+ else if (state == ProgressState.inWORK) popup = ApplicationSettings.getPopupMenu("editable");
+ else if (state == ProgressState.inDRAFT) popup = ApplicationSettings.getPopupMenu("reviewable");
+ else if (state == ProgressState.APPROVED) popup = ApplicationSettings.getPopupMenu("approved");
+ else { //(state == ProgressState.inCHECK)
+ DocumentType mytype = me.value().getType(); // Only result documents need to be approved
+ Step mystep = me.getInvolvedStep();
+ if (mytype.isResultOf(mystep.getStep())) popup = ApplicationSettings.getPopupMenu("approvable");
+ else popup = ApplicationSettings.getPopupMenu("notresult");
+ }
+ }
+
+ protected void setVersioned () {
+// ------------------------------
+ updated = "image.modified.png";
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private void collectHistory (Document given) {
+// --------------------------------------------
+ VersionsRelation versions = (VersionsRelation)given.getFirstRelation(VersionsRelation.class);
+ Timestamp[] stamp = given.getStamps(); // Stamps in ascending order of date
+
+ for (int i=stamp.length-1; i>-1; i--) history.add( new StampFacade(stamp[i]) );
+ history.add( new DocumentFacade(owner, given) );
+ if (versions != null) collectHistory(versions.getTo());
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+import java.util.Calendar;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.User;
+import org.splat.som.Database;
+import org.splat.som.Publication;
+import org.splat.som.ConvertsRelation;
+import org.splat.som.Step;
+
+
+public class EditDocumentAction extends DisplayStudyStepAction {
+
+ private String index = null;
+ private String title = null;
+ private String filename = null;
+
+ private static final long serialVersionUID = 4573036736137033679L;
+
+ private enum Execute { renameDocument, accept, promote, demote, review, invalidate, approve, disapprove };
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+// Session connex = Database.getSession();
+// Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+
+// transax.commit();
+ return SUCCESS;
+ }
+
+ public String doSetDocument () {
+// ------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+
+ Execute todo = Execute.valueOf(action);
+ Step step = mystudy.getSelectedStep();
+ Publication doc = step.getDocument(Integer.valueOf(index));
+
+ if (todo == Execute.renameDocument) {
+ doc.rename(title);
+// Useless to update the document presentation
+ } else
+ if (todo == Execute.accept) {
+ doc.actualize();
+ mystudy.update(doc);
+ } else
+ if (todo == Execute.promote) {
+ doc.promote(Calendar.getInstance().getTime());
+ mystudy.update(doc);
+ } else
+ if (todo == Execute.demote) {
+ doc.demote();
+ mystudy.update(doc);
+ } else
+ if (todo == Execute.review) {
+ doc.review(Calendar.getInstance().getTime());
+ mystudy.update(doc);
+ } else
+ if (todo == Execute.invalidate) {
+ doc.invalidate();
+ mystudy.update(doc);
+ } else
+ if (todo == Execute.approve) {
+ doc.approve(Calendar.getInstance().getTime());
+ mystudy.update(doc);
+ mystudy.getMenu().refreshSelectedItem(); // Updates the menu icon, in case of other documents in approved state
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ catch (InvalidPropertyException error) {
+ transax.commit();
+ return INPUT;
+ }
+ }
+
+ public String doAttach () {
+// -------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+// Getting user inputs
+ mystudy = getOpenStudy();
+ User user = getConnectedUser();
+ Step step = mystudy.getSelectedStep();
+ File updir = Database.getDownloadDirectory(user);
+ File upfile = new File(updir.getPath() + "/" + filename);
+ String[] parse = filename.split("\\x2E");
+
+ Publication edited = step.getDocument(Integer.valueOf(index));
+ ConvertsRelation export = edited.attach(parse[parse.length-1]);
+
+ if (logger.isInfoEnabled()) logger.info("Moving \"" + upfile.getName() + "\" to \"" + updir.getPath() + "\".");
+ upfile.renameTo(export.getTo().asFile());
+
+ mystudy.update(edited);
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR;
+ }
+ }
+
+ public String doDeleteDocument () {
+// ---------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+
+ Step step = mystudy.getSelectedStep();
+ Publication doctag = step.getDocument(Integer.valueOf(index));
+
+ step.removeDocument(doctag); // Updates the data structure
+ transax.commit();
+
+ mystudy.remove(doctag); // Updates the presentation
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public void setDocumentTitle (String title) {
+// -------------------------------------------
+ this.title = title;
+ }
+ public void setFileName (String filename) {
+// -----------------------------------------
+ this.filename = filename;
+ }
+ public void setIndex (String index) {
+// -----------------------------------
+ this.index = index;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.User;
+import org.splat.som.Database;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.KnowledgeElementType;
+import org.splat.som.Scenario;
+import org.splat.som.Step;
+
+
+public class EditKnowledgeElementAction extends DisplayStudyStepAction {
+
+ private String type = null; // Edited knowledge type
+ private String title = null;
+ private String value = null;
+
+ private static final long serialVersionUID = 4636919137087687068L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+// Session connex = Database.getSession();
+// Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+
+// transax.commit();
+ return SUCCESS;
+ }
+
+ public String doSetKnowledge () {
+// -------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ User user = getConnectedUser();
+ mystudy = getOpenStudy();
+
+ Step step = mystudy.getSelectedStep();
+ Scenario scene = (Scenario)step.getOwner(); // It is necessarily a Scenario
+
+ if (title != null && value != null) { // Addition of a new Knowledge Element
+ KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
+ KnowledgeElementType ktype = KnowledgeElement.selectType(Integer.valueOf(type));
+ kprop.setType(ktype)
+ .setTitle(title)
+ .setValue(value)
+ .setAuthor(user);
+ mystudy.add( scene.addKnowledgeElement(kprop) );
+ getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of first added document
+ } else
+ if (title != null) { // Renaming of an existing Knowledge Element
+ KnowledgeElement kelm = scene.getKnowledgeElement(Integer.valueOf(type));
+ kelm.rename(title);
+// Useless to update the open study
+ } else
+ if (value != null) { // Edition of a knowledge
+ KnowledgeElement kelm = scene.getKnowledgeElement(Integer.valueOf(type));
+ kelm.update(value);
+ mystudy.update(kelm); // For updating the truncated value
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ catch (Exception error) {
+ transax.commit();
+ return INPUT;
+ }
+ }
+
+ public String doDeleteKnowledge () {
+// ----------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+ Step step = mystudy.getSelectedStep();
+ Scenario scene = (Scenario)step.getOwner(); // It is necessarily a Scenario
+
+ KnowledgeElement kelm = scene.getKnowledgeElement(Integer.valueOf(myindex));
+ scene.removeKnowledgeElement(kelm); // The knowledge element necessarily exists
+
+ mystudy.remove(kelm);
+ getMenu("study").selects(mystudy.getSelection()); // Updates the menu icon, in case of last removed document
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getKnowledgeType () {
+// ---------------------------------
+ return type;
+ }
+ public String getSelectedKnowledge () {
+// -------------------------------------
+ return myindex;
+ }
+
+ public void setKnowledgeType (String type) {
+// ------------------------------------------
+ this.type = type;
+ }
+ public void setKnowledgeTitle (String title) {
+// --------------------------------------------
+ this.title = title;
+ }
+ public void setKnowledgeValue (String value) {
+// --------------------------------------------
+ this.value = value;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.text.SimpleDateFormat;
+import java.util.ResourceBundle;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.User;
+import org.splat.som.Database;
+import org.splat.som.Scenario;
+import org.splat.som.Step;
+import org.splat.som.StepRights;
+
+
+public class EditScenarioPropertiesAction extends DisplayStudyStepAction {
+
+ private Scenario myscenario;
+ private String lasdate;
+ private String subject;
+
+ private static final long serialVersionUID = 4964740932426016171L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ ResourceBundle label = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale());
+ ResourceBundle custom = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat datstring = new SimpleDateFormat(custom.getString("date.format")); // Locale date display format
+ Step step;
+
+ mystudy = getOpenStudy();
+ step = mystudy.getSelectedStep();
+ myscenario = (Scenario)step.getOwner(); // The selected step belong to a scenario
+ lasdate = datstring.format(myscenario.getLastModificationDate());
+ subject = label.getString("label.study") + " " + mystudy.getTitle();
+
+ return SUCCESS;
+ }
+
+ public String doCheckin () {
+// --------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ Step step;
+
+ mystudy = getOpenStudy();
+ selection = mystudy.getSelection();
+ step = mystudy.getSelectedStep();
+ myscenario = (Scenario)step.getOwner(); // The selected step belong to a scenario
+
+ myscenario.checkin();
+ transax.commit();
+
+ mystudy.getMenu().refreshGivenStepItem(myscenario.getFirstStep()); // For updating the scenario icon
+ return SUCCESS;
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public User getAuthor () {
+// ------------------------
+ if (myscenario.isCheckedout()) return myscenario.getUser();
+ else return myscenario.getAuthor();
+ }
+
+ public String getLastModificationDate () {
+// ----------------------------------------
+ return lasdate;
+ }
+
+ public StepRights getSelectedStep () {
+// ------------------------------------
+ return mystudy.getSelectedStepRights(); // Forget about the step as only step enabling is tested
+ }
+
+ public String getSubject () {
+// ---------------------------
+ return subject;
+ }
+ public String getTitle () {
+// -------------------------
+ return myscenario.getTitle();
+ }
+
+ public boolean isCheckedout () {
+// ------------------------------
+ return myscenario.isCheckedout();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.Database;
+import org.splat.som.ProjectElement;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Step;
+import org.splat.som.Study;
+
+
+public class EditSimulationContextAction extends DisplayStudyStepAction {
+
+ private List<SimulationContextType> contype = null;
+ private List<SimulationContext> contelm = null;
+ private String selectype = null; // Context type, if selected
+ private String newtype = null; // Context type, if newed
+ private SimulationContextType type = null; // Corresponding context type object
+ private String value = null; // Context value
+
+ private static final long serialVersionUID = -641719644024601042L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+ contype = getInvolvedContexts();
+
+ transax.commit();
+ if (contype.isEmpty()) return "create";
+ else return "select";
+ }
+
+ public String doSelectContext () {
+// --------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+ int typid = Integer.valueOf(selectype);
+ if (typid == 0) return "create";
+
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ type = SimulationContext.selectType(typid);
+ newtype = type.getName();
+ contype = getInvolvedContexts();
+ contelm = Database.selectSimulationContextsWhere(cprop.setType(type));
+
+ return "set";
+ }
+ finally {
+ transax.commit();
+ }
+ }
+
+ public String doCreateContext () {
+// --------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+ if (newtype.length() == 0 || value.length() == 0) return INPUT;
+
+ Step step = mystudy.getSelectedStep();
+ ProjectElement owner = step.getOwner();
+
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContext contex = null;
+ type = SimulationContext.createType(newtype, step.getStep());
+ cprop.setType(type).setValue(value);
+ if (owner instanceof Study) contex = ((Study)owner).addProjectContext(cprop); // Re-indexes knowledges and the study
+ else contex = step.addSimulationContext(cprop); // Re-indexes knowledges only
+
+ mystudy.add(contex);
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ catch (Exception error) {
+ transax.commit();
+ return INPUT;
+ }
+ }
+
+ public String doDeleteContext () {
+// --------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+
+ Step step = mystudy.getSelectedStep();
+ ProjectElement owner = step.getOwner();
+ SimulationContext context = step.getSimulationContext(Integer.valueOf(myindex));
+ if (owner instanceof Study) ((Study)owner).removeProjectContext(context); // Re-indexes knowledges and the study
+ else step.removeSimulationContext(context); // Re-indexes knowledges only
+
+ mystudy.remove(context);
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+ public String doSetContext () {
+// -----------------------------
+ String[] input = value.split(",");
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+
+ Step step = mystudy.getSelectedStep();
+ ProjectElement owner = step.getOwner();
+ SimulationContext contex = null;
+
+ if (input.length == 1 || (input.length == 2 && input[1].equals(" "))) {
+// Setting an existing simulation context identified by value (input = rid," ")
+ int valid = Integer.valueOf(input[0]);
+ contex = Database.selectSimulationContext(valid);
+ if (owner instanceof Study) ((Study)owner).addProjectContext(contex);
+ else step.addSimulationContext(contex);
+ }
+ else {
+// Setting a new simulation context value (input = 0,"new context value")
+ int typid = Integer.valueOf(selectype);
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ cprop.setType(SimulationContext.selectType(typid))
+ .setValue(input[1].trim());
+ if (owner instanceof Study) contex = ((Study)owner).addProjectContext(cprop); // Re-indexes knowledges and the study
+ else contex = step.addSimulationContext(cprop); // Re-indexes knowledges only
+ }
+ mystudy.add(contex);
+ contype = getInvolvedContexts();
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ catch (Exception error) {
+ value = input[0];
+ transax.commit();
+ return INPUT;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public SimulationContextType getContextType () {
+// ----------------------------------------------
+ return type;
+ }
+ public String getContextName () {
+// -------------------------------
+ return newtype;
+ }
+// public List<SimulationContextFacade> getSimulationContexts () {
+// -------------------------------------------------------
+// return mystudy.getSelectedStep().getAllSimulationContexts();
+// }
+ public List<SimulationContextType> getSimulationContextTypes () {
+// ---------------------------------------------------------------
+ return contype;
+ }
+ public List<SimulationContext> getSimulationContextValues () {
+// ------------------------------------------------------------
+ return contelm;
+ }
+
+ public void setContextType (String type) {
+// ----------------------------------------
+ this.selectype = type;
+ }
+ public void setContextValue (String value) {
+// -----------------------------------------
+ this.value = value;
+ }
+ public void setNewType (String name) {
+// ------------------------------------
+ this.newtype = name;
+ }
+
+// ==============================================================================================================================
+// Private service
+// ==============================================================================================================================
+
+ private List<SimulationContextType> getInvolvedContexts () {
+// ----------------------------------------------------------
+ SimulationContextType.Properties sprop = new SimulationContextType.Properties()
+ .setStep(mystudy.getSelectedStep().getStep());
+ List<SimulationContextType> contype = SimulationContext.selectTypesWhere(sprop);
+
+ if (!contype.isEmpty()) {
+// Ordering by alphabetical order of localized context types
+ SimulationContextType[] types = contype.toArray( new SimulationContextType[contype.size()] );
+ ContextTypeComparator compare = new ContextTypeComparator();
+ boolean state = types[0].isApproved();
+ int from = 0;
+ int to = 0;
+ while (to < types.length-1) {
+ to += 1;
+ if (types[to].isApproved() == state) continue;
+
+ if (to > from+1) Arrays.sort(types, from, to, compare);
+ state = !state;
+ from = to;
+ }
+ if (to > from) Arrays.sort(types, from, to+1, compare);
+ contype = Arrays.asList(types);
+ }
+ return contype;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.Database;
+import org.splat.som.Study;
+
+
+public class EditStudyAction extends DisplayStudyStepAction {
+
+ private static final long serialVersionUID = -4865668290514118396L;
+
+ private enum Execute { publish, promote }
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doEdition () {
+// --------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ mystudy = getOpenStudy();
+
+ Execute todo = Execute.valueOf(action);
+ Study study = mystudy.getStudyObject();
+
+ if (todo == Execute.publish) study.moveToPublic();
+ else if (todo == Execute.promote) study.moveToReference();
+ mystudy.getPopup().setContext("study", mystudy.getStudyRights()); // The context has changed
+
+// Useless to update the open study
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ResourceBundle;
+
+import org.splat.som.ConvertsRelation;
+
+
+public class FileFacade {
+
+ private String surl; // URL of the file
+ private String format; // Extension of the file
+ private String comment; // Short description
+ private String size;
+ private String date;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public FileFacade (ConvertsRelation represented) {
+// ------------------------------------------------
+ ResourceBundle custom = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ File export = represented.getTo().asFile();
+ String path = export.getPath();
+ String[] table = path.split("\\x2E");
+ DecimalFormat tostring = new DecimalFormat(custom.getString("size.format")); // Locale size display format
+ SimpleDateFormat convert = new SimpleDateFormat(custom.getString("date.format")); // Date display format
+
+ surl = ApplicationSettings.getRepositoryURL() + path;
+ surl = surl.replaceAll("'", "\\\\'");
+ format = table[table.length-1].toUpperCase();
+ size = tostring.format(export.length()/1000);
+ date = convert.format(represented.getTo().getDate());
+ comment = represented.getDescription();
+ if (comment == null) comment = "";
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getDate () {
+// ------------------------
+ return date;
+ }
+ public String getDescription () {
+// -------------------------------
+ return comment;
+ }
+ public String getFormat () {
+// -----------------------
+ return format;
+ }
+ public String getSize () {
+// ------------------------
+ return size;
+ }
+ public String getURL () {
+// -----------------------
+ return surl;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+/**
+ * Interface defining the services required for presenting the history of a document.
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+
+public interface HistoryFacade {
+
+ public String getDate ();
+ public String getDescription ();
+ public String getFileIcon ();
+ public String getSharingIcon ();
+ public String getSize ();
+ public String getVersion ();
+ public String getVersioningIcon ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.User;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
+import org.splat.som.Database;
+import org.splat.som.Document;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Publication;
+import org.splat.som.DocumentType;
+import org.splat.som.Revision;
+import org.splat.som.Step;
+
+
+public class ImportDocumentAction extends UploadBaseNextAction {
+
+ private List<DocumentType> doctypes = null;
+ private int doctype = 0;
+ private String docref = null; // Reference extracted from the imported file, if exist
+ private String docver = ""; // Version number extracted from the imported file, if exist
+ private String date = ""; // Date extracted from the imported file, if exist
+
+ private static final long serialVersionUID = 2587822564883588556L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ User user = getConnectedUser();
+ File updir = Database.getDownloadDirectory(user);
+ File upfile = new File(updir.getPath() + "/" + filename);
+ String[] table = filename.split("\\x2E");
+ String filext = table[table.length-1].toLowerCase();
+
+ mystudy = getOpenStudy();
+ Step step = mystudy.getSelectedStep();
+ doctypes = step.getValidDocumentTypes();
+ deftype = ApplicationSettings.getDefaultDocumentType(step, filext);
+ defuses = new Vector<Document>();
+ state = ProgressState.inWORK;
+
+ Reader tool = Toolbox.getReader(upfile);
+ if (tool != null) {
+ String fileref = tool.extractProperty("reference");
+ String filever = tool.extractProperty("version"); // Property kept even if the file is not referenced
+ String filetype = tool.extractProperty("type"); // Property kept even if the file is not referenced
+ for (Iterator<DocumentType> i=doctypes.iterator(); i.hasNext(); ) {
+ DocumentType type = i.next();
+ if (!type.getName().equals(filetype)) continue;
+ deftype = type;
+ doctype = type.getIndex(); // Disables the document type field
+ break;
+ }
+ if (fileref != null) {
+ Document slot = Database.selectDocument(fileref, new Revision().toString());
+ if (slot == null) {
+ setErrorCode("reference.undefined");
+ return ERROR;
+ }
+ else {
+ if (!slot.isUndefined()) {
+ setErrorCode("reference.duplicate");
+ return ERROR;
+ }
+ docref = fileref; // Disables document name and state fields
+ deftype = slot.getType(); // Just in case
+ doctype = deftype.getIndex(); // Disables the document type field
+ }
+ }
+ if (filever != null) try {
+ Revision.Format get = new Revision.Format(ProjectSettings.getRevisionPattern());
+ Revision version = get.parse(filever);
+ if ( version.isNull() ) throw new ParseException(filever, filever.length()-1);
+ if (!version.isMinor()) state = ProgressState.inCHECK;
+ docver = version.toString();
+ } catch (ParseException e) {
+ setErrorCode("format.version");
+ return ERROR;
+ }
+ docname = tool.extractProperty("title"); // Property kept even if the file is not referenced
+ date = tool.extractProperty("date");
+ if (date != null) {
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat check = new SimpleDateFormat(locale.getString("date.format"));
+ try {
+ check.parse(date);
+ } catch (ParseException e) {
+ setErrorCode("format.date");
+ return ERROR;
+ }
+ } else date = "";
+ } else
+ if (filext.equals("pdf")) state = ProgressState.EXTERN; //TODO: Should external extensions be configurable ?
+ if (docname == null) {
+ docname = table[0];
+ for (int i=1; i<table.length-1; i++) docname = docname + "." + table[i];
+ }
+ if (deftype != null) setupDefaultUses(deftype);
+
+ DocumentType[] types = doctypes.toArray( new DocumentType[doctypes.size()] );
+ DocumentTypeComparator compare = new DocumentTypeComparator();
+ Arrays.sort(types, compare);
+ doctypes = Arrays.asList(types);
+
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doImport () {
+// -------------------------
+ if (action == ToDo.cancel) return "cancel";
+ if (doctype == 0 ) {
+ setErrorCode("import.type");
+ return ERROR;
+ }
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+// Getting user inputs
+ mystudy = getOpenStudy();
+ User user = getConnectedUser();
+ Step step = mystudy.getSelectedStep();
+ DocumentType type = Document.selectType(doctype);
+ File updir = Database.getDownloadDirectory(user);
+ File upfile = new File(updir.getPath() + "/" + filename);
+ String[] table = filename.split("\\x2E");
+
+// Creation of the document
+ Document.Properties dprop = new Document.Properties();
+ Publication addoc;
+
+ if (docref.length() == 0) { // Importation of a foreign document
+//TODO: Extract property of supported documents (DOCX, ODT...)
+ addoc = step.createDocument(dprop.setName(docname).setType(type).setFormat(table[table.length-1]).setAuthor(user));
+ updir = addoc.getSourceFile().asFile();
+ if (logger.isInfoEnabled()) logger.info("Moving \"" + upfile.getName() + "\" to \"" + updir.getPath() + "\".");
+ upfile.renameTo(updir);
+ try {
+ addoc.saveAs(state); // May throw FileNotFound if rename was not done
+ } catch (FileNotFoundException saverror) {
+ Thread.sleep(1000);
+ logger.info("Waiting for the file.");
+ upfile.renameTo(updir);
+ addoc.saveAs(state); // Forget it if throw again FileNotFound
+ }
+ }
+ else { // Importation of a previously created template-based document
+ if (date.length() > 0) {
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat get = new SimpleDateFormat(locale.getString("date.format"));
+ dprop.setDate(get.parse(date));
+ }
+ addoc = step.assignDocument(dprop.setReference(docref).setName(docname));
+ updir = addoc.getSourceFile().asFile();
+ if (logger.isInfoEnabled()) logger.info("Moving \"" + upfile.getName() + "\" to \"" + updir.getPath() + "\".");
+ upfile.renameTo(updir);
+ try {
+ if (docver.length() > 0) addoc.saveAs(new Revision(docver));
+ else addoc.saveAs(state);
+ } catch (FileNotFoundException saverror) {
+ Thread.sleep(1000);
+ logger.info("Waiting for the file.");
+ upfile.renameTo(updir);
+ if (docver.length() > 0) addoc.saveAs(new Revision(docver));
+ else addoc.saveAs(state);
+ }
+ mystudy.updateSimulationContexts(); // In case of simulation contexts extracted from the imported document
+ }
+// Creation of uses relations
+ if (docuses != null) {
+ String[] list = docuses.split(",");
+ for (int i=0; i<list.length; i++) {
+ Integer index = Integer.valueOf(list[i].trim());
+ Publication used = getPublication(index);
+ addoc.addDependency(used);
+ }
+ }
+// Creation of derived the document formats
+// Document ndoc = addoc.value();
+// Converter send = ApplicationSettings.getConverter(ndoc.getType(), ndoc.getFormat());
+//
+// if (send != null) send.converts(addoc); // Asynchronous process
+ transax.commit();
+
+ mystudy.add(addoc); // Updates the presentation
+ return SUCCESS;
+ }
+ catch (FileNotFoundException error) {
+ logger.error("Reason:", error);
+ setErrorCode("import.file");
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ setErrorCode("internal");
+ }
+ if (transax != null && transax.isActive()) { // Probably useless test
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getDocumentDate () {
+// --------------------------------
+ return date;
+ }
+ public List<DocumentType> getDocumentTypes () {
+// ---------------------------------------------
+ return doctypes;
+ }
+ public int getDocumentType () {
+// -----------------------------
+ return doctype;
+ }
+ public String getReference () {
+// -----------------------------
+ return docref;
+ }
+ public String getVersion () {
+// ---------------------------
+ return docver;
+ }
+
+ public void setDocumentDate (String date) {
+// -----------------------------------------
+ this.date = date;
+ }
+ public void setDocumentName (String name) {
+// -----------------------------------------
+ this.docname = name; // Name entered by the user if enabled
+ }
+ public void setDocumentTitle (String name) { // Called even if DocumentName is enabled
+// -----------------------------------------
+ if (this.docname == null) this.docname = name;
+ }
+ public void setDocumentType (String value) {
+// ------------------------------------------
+ this.doctype = Integer.valueOf(value);
+ }
+ public void setDefaultDocumentState (String state) { // Called even if DocumentState is enabled
+// --------------------------------------------------
+ if (this.state == null) this.state = ProgressState.valueOf(state);
+ }
+ public void setDefaultDocumentType (String value) { // Called even if DocumentType is enabled
+// --------------------------------------------------
+ if (this.doctype == 0) this.doctype = Integer.valueOf(value);
+ }
+ public void setReference (String value) {
+// ---------------------------------------
+ this.docref = value;
+ }
+ public void setVersion (String value) {
+// -------------------------------------
+ this.docver = value;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import org.splat.som.KnowledgeElement;
+import org.splat.wapp.PopupMenu;
+
+
+public class KnowledgeElementFacade {
+
+ private KnowledgeElement my;
+ private State state;
+ private String value;
+ private PopupMenu popup;
+
+ private enum State { closed, open }
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public KnowledgeElementFacade (KnowledgeElement represented) {
+// ------------------------------------------------------------
+ my = represented;
+ state = State.closed;
+
+ this.refresh(); // Initializes the presentation of my knowledge
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public void develop () {
+// ----------------------
+ state = State.open;
+ }
+
+ public void reduce () {
+// ---------------------
+ state = State.closed;
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getFullValue () {
+// -----------------------------
+ return my.getValue().replaceAll("'", "‘").replaceAll("\"", """);
+ }
+ public String getIndex () {
+// -------------------------
+ return String.valueOf(my.getIndex());
+ }
+ public PopupMenu getPopup () {
+// ----------------------------
+ popup.setContext("feedbex", my); // Cannot be done at construction because pop-ups are shared
+ return popup;
+ }
+ public String getPresentationState () {
+// -------------------------------------
+ return state.toString();
+ }
+ public String getProgressState () {
+// ---------------------------------
+ return my.getProgressState().toString();
+ }
+ public String getTitle () {
+// -------------------------
+ return my.getTitle();
+ }
+ public String getValue () {
+// -------------------------
+ if (state == State.closed) return value;
+ else return my.getValue();
+ }
+ public boolean isFacadeOf (KnowledgeElement represented) {
+// --------------------------------------------------------
+ return my.equals(represented);
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void refresh () {
+// -------------------------
+ String[] tags = {"<b>", "<i>", "<u>", "<sup>", "<sub>" };
+
+ popup = ApplicationSettings.getPopupMenu("feedbex");
+ value = my.getValue();
+
+// One line extract of the knowledge value
+ int size = 70 + 3; // Maximum length displayable on 1 line, including the starting <p> tag
+ int i;
+ for (i=0; i<tags.length; i++) {
+ int pos = value.indexOf(tags[i]);
+ if (pos > -1 && pos < size) size = size + 2*tags[i].length() + 1; // Inclusion of the open and close tags
+ }
+ if (value.startsWith("<p>")) {
+ int endex = value.indexOf("</p>");
+ if ((i=value.indexOf("<br")) > 0) if (i < endex) endex = i;
+ if ((i=value.indexOf("<ul>")) > 0) if (i < endex) endex = i;
+ if ((i=value.indexOf("<ol>")) > 0) if (i < endex) endex = i;
+ int next = endex + 4; // Index of the next paragraph, if exist
+ if (endex > size) {
+ endex = size;
+ char endchar = value.charAt(endex);
+ if (endchar == '-' || endchar == ',' || endchar == ';' || endchar == '.') endex += 1;
+ else if (endchar != ' ') while (--endex > 0) {
+ endchar = value.charAt(endex);
+ if (endchar == ' ') break;
+ if (endchar == '-' || endchar == ',' || endchar == ';' || endchar == '.') {
+ endex += 1;
+ break;
+ }
+ }
+ }
+ else size = 0;
+
+ value = value.substring(3, endex).trim();
+ if ((i=value.lastIndexOf("b>")) > 0) if (value.charAt(i-1) == '<') value = value + "</b>";
+ if ((i=value.lastIndexOf("i>")) > 0) if (value.charAt(i-1) == '<') value = value + "</i>";
+ if ((i=value.lastIndexOf("u>")) > 0) if (value.charAt(i-1) == '<') value = value + "</u>";
+ if (my.getValue().length() > next || size > 0) value = value + " ...";
+ }
+ else {
+ if (value.length() > size-3) value = value.substring(0, size-3) + " ...";
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import org.splat.wapp.SimpleMenu;
+
+
+public class MenuAction extends Action {
+
+ private String menuname;
+ private String selection;
+
+ private static final long serialVersionUID = 5904292225286579036L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doSelectItem () {
+// -----------------------------
+ SimpleMenu menu = ApplicationSettings.getMenu(menuname);
+
+ if (selection == null) { // Switch back to the menu, keeping the last selection
+ getSession().put("menu.open", menu); // Activates the menu
+ selection = menu.getSelection();
+ if (selection == null) selection = "none";
+ } else { // Selection of another menu item
+ menu.selects(selection);
+ }
+ return selection;
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getItem () {
+// ------------------------
+ return selection;
+ }
+ public String getMenu () {
+// ------------------------
+ return menuname;
+ }
+
+ public void setMenu (String name) {
+// ---------------------------------
+ this.menuname = name;
+ }
+ public void setItem (String item) {
+// ---------------------------------
+ this.selection = item;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.Database;
+import org.splat.som.Publication;
+import org.splat.som.Scenario;
+import org.splat.som.Step;
+import org.splat.som.Study;
+import org.splat.wapp.Menu;
+
+
+public class NewScenarioAction extends Action {
+
+ private OpenStudy mystudy;
+ private List<Scenario> myscene;
+ private String mytitle;
+ private String selection;
+ private int scindex;
+ private int bastep;
+ private ToDo action;
+
+ private static final long serialVersionUID = -5586724442986956861L;
+
+ protected enum ToDo { cancel, save };
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ mystudy = getOpenStudy();
+ Study study = mystudy.getStudyObject();
+ Scenario[] scene = study.getScenarii();
+ Scenario base = scene[scene.length-1]; // Default base scenario
+ ResourceBundle locale = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale());
+
+ myscene = Arrays.asList(scene);
+ scindex = base.getIndex();
+ mytitle = locale.getString("label.scenario") + " " + String.valueOf(scene.length+1);
+ bastep = base.getFirstStep().getNumber(); // Better use the last current step ?
+ selection = scindex + "." + bastep;
+ action = null;
+
+ Menu menu = new NewScenarioMenu(study);
+ menu.selects(selection);
+ getSession().put("menu.scenario", menu);
+ return SUCCESS;
+ }
+
+ public String doSelectStep () {
+// -----------------------------
+ mystudy = getOpenStudy();
+ Study study = mystudy.getStudyObject();
+ Scenario[] scene = study.getScenarii();
+
+ myscene = Arrays.asList(scene);
+ bastep = scene[0].getFirstStep().getNumber(); // All scenarios have the same first step number
+ action = null;
+
+ getMenu("scenario").selects(selection);
+ return SUCCESS;
+ }
+
+ public String doCreate () {
+// -------------------------
+ if (action == ToDo.cancel) return "cancel";
+
+ Session session = Database.getSession();
+ Transaction transax = session.beginTransaction();
+ try { mystudy = getOpenStudy();
+ selection = getMenu("scenario").getSelection();
+ Study study = mystudy.getStudyObject();
+ String[] parse = selection.split("\\x2E");
+ int scindex = Integer.valueOf(parse[0]);
+ int number = Integer.valueOf(parse[1]);
+
+ Scenario[] scene = study.getScenarii();
+ Scenario bascene = scene[0];
+ for (int i=1; i<scene.length; i++) {
+ bascene = scene[i];
+ if (bascene.getIndex() == scindex) break;
+ }
+ Step[] step = null;
+ Scenario.Properties sprop = new Scenario.Properties().setManager(getConnectedUser()).setTitle(mytitle).setInsertAfter(bascene);
+
+ bastep = bascene.getFirstStep().getNumber();
+ if (this.sharesStep()) {
+ step = bascene.getSteps();
+ sprop.setBaseStep(step[number-bastep]);
+ }
+ bascene = study.addScenario(sprop);
+ transax.commit();
+
+// Update of the display
+ if (step != null) for (int i=0; i<number-bastep+1; i++) {
+ List<Publication> contents = step[i].getAllDocuments();
+ for (Iterator<Publication> j=contents.iterator(); j.hasNext(); ) mystudy.update(j.next());
+ }
+ mystudy.setSelection(bascene.getIndex() + "." + number);
+ getSession().remove("menu.scenario");
+ return SUCCESS;
+ }
+ catch (RuntimeException saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ catch (Exception error) {
+ return INPUT;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public List<Scenario> getScenarii () {
+// ------------------------------------
+ return myscene;
+ }
+ public int getSelectedScenarioIndex () {
+// --------------------------------------
+ return scindex;
+ }
+ public String getSelection () {
+// -----------------------------
+ return selection;
+ }
+ public String getSharedStep () {
+// -------------------------------
+ String[] parse = selection.split("\\x2E");
+ return parse[1];
+ }
+ public String getTitle () {
+// -------------------------
+ return mytitle;
+ }
+
+ public void setCancel (boolean cancel) {
+// --------------------------------------
+ action = ToDo.cancel;
+ }
+ public void setSave (boolean save) {
+// ----------------------------------
+ action = ToDo.save;
+ }
+ public void setSelectedScenario (String index) {
+// ----------------------------------------------
+ scindex = Integer.valueOf(index);
+ }
+ public void setSelection (String step) {
+// --------------------------------------
+ selection = step;
+ }
+ public void setTitle (String title) {
+// -----------------------------------
+ mytitle = title;
+ }
+ public Boolean sharesStep () {
+// ----------------------------
+ return (Integer.valueOf(getSharedStep()) > bastep);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+import org.splat.som.Scenario;
+import org.splat.som.Step;
+import org.splat.som.Study;
+import org.splat.wapp.MenuItem;
+import org.splat.wapp.SlidMenu;
+
+
+public class NewScenarioMenu extends SlidMenu {
+
+ private Study study;
+ private Scenario scopen; // Currently "open" scenario
+ private Step stopen; // Currently selected step
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public NewScenarioMenu (Study context) {
+// -----------------------------------
+ super("scenarii", "study");
+ study = context;
+ scopen = null;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public void selects (String name) {
+// ---------------------------------
+ String[] parse = name.split("\\x2E");
+ Scenario[] scenes = study.getScenarii();
+ Scenario scenew = scopen;
+ int askid = 0;
+
+// Initialization
+ if (scenew == null && scenes.length == 1) scenew = scenes[0];
+ try {
+ int askdex = Integer.valueOf(parse[0]);
+ if (askdex > 0) {
+ while (askid < scenes.length) {
+ if (scenes[askid].getIndex() == askdex) break;
+ askid += 1;
+ }
+ scenew = scenes[askid]; // Throws an exception if the scenario does not exist (that is, if name is not correct)
+ }
+ } catch (Exception error) {
+ return;
+ }
+ if (scenew == null) {
+
+// Study with several scenarii, non of them open
+
+// Collection of steps to be displayed
+ Vector<Step> steps = new Vector<Step>();
+ Step[] newstep = scenes[0].getSteps(); // All scenarii have the same steps
+
+ for (int i=0; i<scenes.length; i++) steps.add(scenes[i].getFirstStep());
+ newstep = study.getSteps();
+ stopen = newstep[0]; // Default selected step
+
+// Creation of the menu
+ for (Iterator<Step> i=steps.iterator(); i.hasNext(); ) {
+ Step step = i.next();
+ int number = step.getNumber();
+ Scenario group = (Scenario)step.getOwner(); // The menu includes first scenario steps only
+ int index = group.getIndex();
+ String value = index + "." + number;
+ String icon;
+ if (group.isEmpty()) icon = "icon.empty.png";
+// else if (group.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ addGroup(value, group.getTitle(), icon, "select-step?selection=" + value + "&title=%{title}");
+ }
+ } else
+ if (scopen == null || !scenew.equals(scopen)) {
+
+// Opening a scenario
+ this.clear();
+// Collection of steps to be displayed
+ Vector<Step> steps = new Vector<Step>();
+ Step[] newstep = scenew.getSteps();
+
+ for (int i=0; i<newstep.length; i++) {
+ steps.add(newstep[i]);
+ }
+ for (int i=askid-1; i>-1; i--) steps.add(0, scenes[i].getFirstStep());
+ newstep = study.getSteps();
+ for (int i=askid+1; i<scenes.length; i++) steps.add(scenes[i].getFirstStep());
+
+// Creation of the menu
+ boolean first = true; // For differentiating the first scenario step
+ int askdex = Integer.valueOf(parse[1]);
+ for (Iterator<Step> i=steps.iterator(); i.hasNext(); ) {
+ Step step = i.next();
+ int number = step.getNumber();
+ String icon;
+ if (!step.isStarted()) icon = "icon.empty.png";
+ else if (step.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ if (number == askdex) stopen = step;
+ Scenario group = (Scenario)step.getOwner();
+ int index = group.getIndex();
+ String value = index + "." + number;
+ if (index != scenew.getIndex()) {
+ if (group.isEmpty()) icon = "icon.empty.png";
+// else if (group.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ addGroup(value, group.getTitle(), icon, "select-step?selection=" + value + "&title=%{title}");
+ } else if (first) {
+ addGroup(value, scenew.getTitle(), icon, "select-step?selection=" + value + "&title=%{title}");
+ first = false;
+ } else {
+ addSubItem(value, "menu.step." + number, icon, "select-step?selection=" + value + "&title=%{title}");
+ }
+ }
+ scopen = scenew;
+ }
+ super.selects(name);
+ }
+
+ public void refreshSelectedItem () {
+// ----------------------------------
+ MenuItem item = this.getSelectedItem();
+ String icon;
+ if (!stopen.isStarted()) icon = "icon.empty.png";
+ else if (stopen.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ item.icon(icon);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.Database;
+import org.splat.som.Scenario;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Study;
+
+
+public class NewStudyAction extends Action {
+
+ private String title = null;
+ private List<SimulationContext> contelm = null;
+ private String context = null;
+
+ private static int number = 0;
+ private static final long serialVersionUID = 693943641800113782L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType product = SimulationContext.selectType("product");
+ ResourceBundle locale = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale());
+
+ contelm = Database.selectSimulationContextsWhere(cprop.setType(product));
+ title = locale.getString("label.study") + " " + String.valueOf(number + 1);
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doCreate () throws Exception {
+// -------------------------
+ String[] input = context.split(",");
+ int valid = Integer.valueOf(input[0]);
+ String value = ""; // input[1] if exists
+
+ Session session = Database.getSession();
+ Transaction transax = session.beginTransaction();
+ Study.Properties sprop = new Study.Properties();
+
+// Check arguments and creation of the study
+ try {
+ if (valid == -1) throw new Exception();
+ if (valid == 0) {
+ value = input[1].trim();
+ if (value.length() == 0) return INPUT; // No need to reinitialize the list of existing products
+ }
+ sprop.setTitle(title).setManager(getConnectedUser());
+ sprop.checkValidity();
+ sprop.disableCheck();
+ }
+ catch (Exception error) {
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ SimulationContextType product = SimulationContext.selectType("product");
+ contelm = Database.selectSimulationContextsWhere(cprop.setType(product));
+ transax.commit();
+ return INPUT; // Title empty, simply wait for input without error message
+ }
+ try {
+ Study study = Database.createStudy(sprop);
+
+// Addition of a default scenario
+ ResourceBundle locale = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale());
+ Scenario.Properties oprop = new Scenario.Properties();
+ oprop.setTitle(locale.getString("label.scenario") + " 1");
+ study.addScenario(oprop);
+
+// Addition of the entered project context
+ if (valid == 0) { // Input of new project context
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ cprop.setType(SimulationContext.selectType("product")).setValue(value);
+ study.addProjectContext(cprop);
+ }
+ else { // Selection of existing project context
+ SimulationContext context = Database.selectSimulationContext(valid);
+ study.addProjectContext(context);
+ }
+// Update of the session
+ number += 1;
+ open(study); // Opens the study,
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+ logger.error("Unable to save the study, reason:", error);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getProjectContext () {
+// ----------------------------------
+ return context;
+ }
+ public List<SimulationContext> getProjectContextValues () {
+// ---------------------------------------------------------
+ return contelm;
+ }
+ public String getTitle () {
+// ----------------------------
+ return title;
+ }
+
+ public void setProjectContext (String value) {
+// --------------------------------------------
+ this.context = value;
+ }
+ public void setTitle (String value) {
+// -----------------------------------
+ this.title = value;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+
+public class NotYetImplementedAction extends Action {
+
+ private static final long serialVersionUID = 3131921588316476454L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ return SUCCESS;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import org.splat.som.KnowledgeElement;
+import org.splat.som.ProgressState;
+import org.splat.som.Scenario;
+import org.splat.som.SimulationContext;
+import org.splat.som.Step;
+import org.splat.wapp.SimpleMenu;
+
+
+public class OpenKnowledge extends OpenObject {
+
+ private KnowledgeElement myknelm ;
+ private String credate;
+
+ public class Menu extends SimpleMenu {
+// ------------------------------------
+ public Menu (List<Step> context)
+ {
+ super("steps", "study");
+ int i = 0;
+ int j = 0;
+ for (Iterator<Step> k=context.iterator(); k.hasNext(); i++) {
+ Step step = k.next();
+ int number = step.getNumber();
+ String icon;
+ if (step.mayContain(KnowledgeElement.class)) j = i + 1; // Steps are numbered from 1 to N
+ if (!step.isStarted()) icon = "icon.empty.png";
+ else icon = "icon.done.png";
+ addItem(String.valueOf(number), "folder.step." + number, icon, "step-knowledge?selection=" + number);
+ }
+ this.selects(String.valueOf(j));
+ }
+ }
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public OpenKnowledge (KnowledgeElement knelm) {
+// ---------------------------------------------
+ ResourceBundle label = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale());
+ ResourceBundle custom = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat convert = new SimpleDateFormat(custom.getString("date.format"));
+ StringBuffer value = new StringBuffer(knelm.getValue());
+ Scenario scene = knelm.getOwnerScenario();
+
+ myknelm = knelm;
+
+// Preparation of the display
+ credate = convert.format(myknelm.getDate());
+ involving = getAllSteps(knelm.getOwnerScenario());
+ context = new ArrayList<SimulationContextFacade>();
+ menu = new Menu(getInvolvedSteps());
+ selection = menu.getSelection(); // The default selection is set in the menu definition
+ int index = Integer.valueOf(selection);
+ for (Iterator<Step> i=involving.iterator(); i.hasNext();) {
+ Step next = i.next();
+ if (next.getNumber() == index) ustep = next;
+ for (Iterator<SimulationContext> j=next.getAllSimulationContexts().iterator(); j.hasNext(); ) {
+ context.add( new SimulationContextFacade(j.next()) );
+ }
+ }
+ value.append("<p>")
+ .append("<b>").append(label.getString("label.source")).append(":</b>")
+ .append("<br>").append(label.getString("label.study")).append(" \"").append(scene.getOwnerStudy().getTitle()).append("\",")
+ .append("<br>").append(scene.getTitle()).append(".")
+ .append("</p>");
+ description = value.toString();
+ setupContents(); // Initializes documents and knowledge at ustep
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public String getAuthorName() {
+// -----------------------------
+ return myknelm.getAuthor().toString();
+ }
+ public String getDate () {
+// ------------------------
+ return credate;
+ }
+ public Integer getIndex() {
+// -------------------------
+ return myknelm.getIndex();
+ }
+ public Menu getMenu () {
+// ----------------------
+ return (Menu)menu;
+ }
+ public ProgressState getProgressState() {
+// ---------------------------------------
+ return myknelm.getProgressState();
+ }
+ public String getReference() {
+// ----------------------------
+ return myknelm.getReference();
+ }
+ public KnowledgeElement getKnowledgeObject () {
+// ---------------------------------------------
+ return myknelm;
+ }
+ public String getTitle() {
+// ------------------------
+ return myknelm.getTitle();
+ }
+ public String getType () {
+// ------------------------
+ return ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale()).getString("type.knowledge." + myknelm.getType().getName());
+ }
+
+ public void setSelection (String step) {
+// --------------------------------------
+ selection = step;
+ int index = Integer.valueOf(selection);
+ for (Iterator<Step> i=involving.iterator(); i.hasNext();) {
+ ustep = i.next();
+ if (ustep.getNumber() == index) break;
+ }
+ menu.selects(selection);
+ setupContents(); // The contents may have changed even if the selection is the same
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private List<Step> getAllSteps (Scenario scenar) {
+// ------------------------------------------------
+ Vector<Step> result = new Vector<Step>();
+ Step[] step = scenar.getSteps();
+
+ int base = step[0].getNumber();
+ int last = step[step.length-1].getNumber();
+ for (int i=0; i<step.length; i++) {
+ result.add(step[i]);
+ }
+ step = scenar.getOwnerStudy().getSteps();
+ for (int i=step.length-1; i>-1; i--) {
+ if(step[i].getNumber() >= base) continue;
+ result.add(0, step[i]);
+ }
+ for (int i=0; i<step.length; i++) {
+ if(step[i].getNumber() <= last) continue;
+ result.add(step[i]);
+ }
+ return result;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.splat.kernel.User;
+import org.splat.som.Document;
+import org.splat.som.DocumentType;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.KnowledgeElementType;
+import org.splat.som.ProgressState;
+import org.splat.som.Proxy;
+import org.splat.som.Publication;
+import org.splat.som.Scenario;
+import org.splat.som.Step;
+import org.splat.wapp.Menu;
+import org.splat.wapp.PopupMenu;
+
+
+public abstract class OpenObject implements Proxy {
+
+ protected User cuser = null; // Connected user
+ protected String selection = null; // Menu selected by the user
+ protected Step ustep = null; // Corresponding selected step
+ protected String description = null; // Object description (rich text)
+ protected List<Step> involving = null;
+ protected List<SimulationContextFacade> context = null; // Simulation Context display representations
+ protected List<DocumentFacade> contents = null; // Document display representations
+ protected List<KnowledgeIterator> knowledge = null; // Knowledge Element display representations structured by knowledge types
+
+ protected Menu menu = null; // Left pane menu of this object
+ protected PopupMenu popup = null; // Pop-up menu of this object, if the user has write access
+
+ protected static HashMap<Integer, DocumentFacade> docpres = null;
+ protected static HashMap<Integer, KnowledgeElementFacade> knowpres = null;
+
+ public class KnowledgeIterator {
+// ------------------------------
+ protected KnowledgeElementType type;
+ protected List<KnowledgeElementFacade> list;
+
+ public KnowledgeIterator (KnowledgeElementType type, List<KnowledgeElementFacade> list)
+ {
+ this.type = type;
+ this.list = list;
+ }
+ public String getIndex ()
+ {
+ return String.valueOf(type.getIndex());
+ }
+ public String getType ()
+ {
+ return type.getName();
+ }
+ public List<KnowledgeElementFacade> getKnowledgeElements ()
+ {
+ return list;
+ }
+ }
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ protected OpenObject () {
+// -----------------------
+// All member fields are supposed initialized by subclasses
+ if (docpres == null) docpres = new HashMap<Integer, DocumentFacade>();
+ if (knowpres == null) knowpres = new HashMap<Integer, KnowledgeElementFacade>();
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public void developDocument (String index) {
+// ------------------------------------------
+ for (Iterator<DocumentFacade> i=contents.iterator(); i.hasNext();) {
+ DocumentFacade doc = i.next();
+ if (!doc.getIndex().equals(index)) continue;
+ doc.develop();
+ return;
+ }
+ }
+
+ public void developKnowledge (String index) {
+// -------------------------------------------
+ for (Iterator<KnowledgeIterator> i=knowledge.iterator(); i.hasNext();) {
+ List<KnowledgeElementFacade> knowelms = i.next().getKnowledgeElements();
+ for (Iterator<KnowledgeElementFacade> j = knowelms.iterator(); j.hasNext(); ) {
+ KnowledgeElementFacade kelm = j.next();
+ if (!kelm.getIndex().equals(index)) continue;
+ kelm.develop();
+ return;
+ }
+ }
+ }
+
+ public void clearFacades () {
+// ---------------------------
+ docpres.clear(); // For eventually reopening the knowledge from a fresh context
+ knowpres.clear(); // For eventually reopening the knowledge from a fresh context
+ }
+
+ public List<Document> collectInvolvedDocuments (DocumentType type) {
+// ------------------------------------------------------------------
+ List<Document> found = new Vector<Document>();
+ for (Iterator<Step> i=involving.iterator(); i.hasNext();) {
+ Step step = i.next();
+ List<Publication> exist = step.getAllDocuments();
+ for (Iterator<Publication> j=exist.iterator(); j.hasNext();) {
+ Document doc = j.next().value();
+ if (doc.getType().equals(type)) found.add(doc);
+ }
+ }
+ return found;
+ }
+
+ public String getDisplayedDescription () {
+// ----------------------------------------
+ return description;
+ }
+
+ public List<DocumentFacade> getDisplayedDocuments () {
+// -----------------------------------------------------
+ return contents;
+ }
+
+ public List<SimulationContextFacade> getDisplayedSimulationContexts () {
+// ----------------------------------------------------------------------
+ return context;
+ }
+
+ public List<KnowledgeIterator> getDisplayedKnowledges () {
+// --------------------------------------------------------
+ return knowledge;
+ }
+
+ public List<Step> getInvolvedSteps () {
+// -------------------------------------
+ return involving;
+ }
+
+ public Menu getMenu () {
+// ----------------------
+ return menu;
+ }
+
+ public PopupMenu getPopup () {
+// ----------------------------
+ return popup;
+ }
+
+ public Step getSelectedStep () {
+// ------------------------------
+ return ustep;
+ }
+
+ public String getSelection () {
+// -----------------------------
+ return selection;
+ }
+
+ public User getUser () {
+// ----------------------
+ return cuser;
+ }
+
+ public boolean isOpenForWriting () {
+// ----------------------------------
+ return (popup != null); // The pop-up is supposed existed when the user is staffed on the study
+ }
+
+ public void reduceDocument (String index) {
+// -----------------------------------------
+ for (Iterator<DocumentFacade> i=contents.iterator(); i.hasNext();) {
+ DocumentFacade doc = i.next();
+ if (!doc.getIndex().equals(index)) continue;
+ doc.reduceAll();
+ return;
+ }
+ }
+
+ public void reduceHistory (String index) {
+// ----------------------------------------
+ for (Iterator<DocumentFacade> i=contents.iterator(); i.hasNext();) {
+ DocumentFacade doc = i.next();
+ if (!doc.getIndex().equals(index)) continue;
+ doc.reduce();
+ return;
+ }
+ }
+
+ public void reduceKnowledge (String index) {
+// ------------------------------------------
+ for (Iterator<KnowledgeIterator> i=knowledge.iterator(); i.hasNext();) {
+ List<KnowledgeElementFacade> knowelms = i.next().getKnowledgeElements();
+ for (Iterator<KnowledgeElementFacade> j = knowelms.iterator(); j.hasNext(); ) {
+ KnowledgeElementFacade kelm = j.next();
+ if (!kelm.getIndex().equals(index)) continue;
+ kelm.reduce();
+ return;
+ }
+ }
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void setupContents () {
+// -------------------------------
+// Description
+// Initialized in subclasses
+
+// Knowledge elements supposed ordered by type
+ if (ustep.mayContain(KnowledgeElement.class)) {
+ Scenario scene = (Scenario)ustep.getOwner();
+ List<KnowledgeElementType> types = KnowledgeElement.selectTypesWhere(ProgressState.APPROVED);
+ List<KnowledgeElement> kelms = scene.getAllKnowledgeElements();
+ Iterator<KnowledgeElement> more = kelms.iterator();
+ KnowledgeElement current = null;
+ if (more.hasNext()) current = more.next();
+
+ knowledge = new Vector<KnowledgeIterator>(types.size());
+ for (Iterator<KnowledgeElementType> i=types.iterator(); i.hasNext();) {
+ KnowledgeElementType type = i.next();
+ List<KnowledgeElementFacade> display = new Vector<KnowledgeElementFacade>(kelms.size());
+ while (current != null && current.getType().equals(type)) {
+ KnowledgeElementFacade facade = knowpres.get(current.getIndex());
+ if (facade == null) {
+ facade = new KnowledgeElementFacade(current);
+ knowpres.put(current.getIndex(), facade);
+ }
+ display.add(facade);
+ if (more.hasNext()) current = more.next();
+ else current = null;
+ }
+ knowledge.add( new KnowledgeIterator(type, display) );
+ }
+ } else {
+ knowledge = null;
+ }
+// Documents
+ if (ustep.mayContain(Document.class)) {
+ List<Publication> list = ustep.getAllDocuments();
+
+ contents = new Vector<DocumentFacade>(list.size());
+ for (Iterator<Publication> i=list.iterator(); i.hasNext();) {
+ Publication present = i.next();
+ Integer index = present.getIndex();
+ DocumentFacade facade = docpres.get(index);
+ if (facade == null) {
+ facade = new DocumentFacade(this, present);
+ docpres.put(index, facade);
+ }
+ contents.add(facade);
+ }
+ } else {
+ contents = null;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.io.File;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.apache.log4j.Logger;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.Do;
+import org.splat.kernel.User;
+import org.splat.manox.Toolbox;
+import org.splat.manox.Writer;
+import org.splat.som.Database;
+import org.splat.som.Document;
+import org.splat.som.DocumentType;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Publication;
+import org.splat.som.Revision;
+import org.splat.som.Scenario;
+import org.splat.som.SimulationContext;
+import org.splat.som.Step;
+import org.splat.som.StepRights;
+import org.splat.som.Study;
+import org.splat.som.StudyRights;
+import org.splat.wapp.ToolBar;
+
+
+public class OpenStudy extends OpenObject implements OpenStudyServices {
+
+ private Study mystudy;
+ private StudyRights urightstudy; // User rights on the open study
+ private StepRights urightstep; // User rights on the selected step
+ private String version;
+ private String credate;
+ private String lasdate;
+ private Publication selecdoc;
+
+ protected final static Logger logger = org.splat.simer.Action.logger;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public OpenStudy (User user, Study study) {
+// -----------------------------------------
+ ResourceBundle custom = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat datstring = new SimpleDateFormat(custom.getString("date.format"));
+ Revision.Format verstring = new Revision.Format(ProjectSettings.getRevisionPattern());
+
+ cuser = user; // May be null if nobody connected
+ mystudy = study;
+ selection = "0.1"; // Default selection
+ selecdoc = null;
+
+// Preparation of the display
+ version = verstring.format(mystudy.getVersion());
+ credate = datstring.format(mystudy.getDate());
+ lasdate = ""; // Not yet supported
+ description = mystudy.getDescription();
+ involving = new ArrayList<Step>(1);
+ context = new ArrayList<SimulationContextFacade>();
+ ustep = mystudy.getFirstStep();
+ ustep.setActor(cuser);
+ involving.add(ustep);
+ for (Iterator<SimulationContext> i=ustep.getAllSimulationContexts().iterator(); i.hasNext(); ) {
+ context.add( new SimulationContextFacade(i.next()) );
+ }
+ if (mystudy.isStaffedBy(cuser) || mystudy.hasActor(cuser)) {
+// ProgressState state = mystudy.getProgressState();
+// if (state == ProgressState.inCHECK) popup = ApplicationSettings.getPopupMenu("stapprovable");
+// else if (state == ProgressState.APPROVED) popup = ApplicationSettings.getPopupMenu("stapproved");
+/* else */ popup = ApplicationSettings.getPopupMenu("steditable");
+ popup.setContext("study", new StudyRights(cuser, mystudy));
+ }
+ urightstudy = new StudyRights(cuser, mystudy);
+ urightstep = new StepRights(cuser, ustep);
+
+ menu = new StudyMenu(mystudy);
+ menu.selects(selection); // Initializes menu items to be displayed
+ setupContents(); // Initializes documents and knowledge at ustep
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getAuthorName() {
+// -----------------------------
+ return mystudy.getAuthor().toString();
+ }
+ public Integer getIndex() {
+// -------------------------
+ return mystudy.getIndex();
+ }
+ public String getDate () {
+// ------------------------
+ return credate;
+ }
+ public StudyMenu getMenu () {
+// ---------------------------
+ return (StudyMenu)menu;
+ }
+ public ProgressState getProgressState() {
+// ----------------------------------------
+ return mystudy.getProgressState();
+ }
+ public String getLastModificationDate () {
+// ----------------------------------------
+ return lasdate;
+ }
+ public ToolBar getModuleBar () {
+// ------------------------------
+ return ApplicationSettings.getMe().getModuleBar(getSelectedStep());
+ }
+ public String getReference() {
+// ----------------------------
+ return mystudy.getReference();
+ }
+ public Publication getSelectedDocument () {
+// -----------------------------------------
+ return selecdoc;
+ }
+ public StepRights getSelectedStepRights () {
+// ------------------------------------------
+ return urightstep;
+ }
+ public StudyRights getStudyRights () {
+// ------------------------------------
+ return urightstudy;
+ }
+ public Study getStudyObject () {
+// ------------------------------
+ return mystudy;
+ }
+ public String getTitle() {
+// ------------------------
+ return mystudy.getTitle();
+ }
+ public String getType () {
+// ------------------------
+ return ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale()).getString("label.study");
+ }
+ public String getVersion () {
+// ---------------------------
+ return version;
+ }
+ public boolean isStepEnabled () {
+// -------------------------------
+ return urightstep.isEnabled();
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public URL newTemplateBasedDocument (String typename, User author) {
+// ------------------------------------------------------------------
+ String filename = typename + ".xml"; // Only XML templates are writeable
+ File template = new File(Database.getTemplatePath() + filename);
+ if (!template.exists()) return null;
+
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ File udir = Database.getDownloadDirectory(author);
+ File credoc = new File(udir.getPath() + "/" + filename);
+
+// Creation of the meta-document
+ Step step = getSelectedStep(); // Should we check if the given document type is compatible ?
+ DocumentType type = Document.selectType(typename);
+ Document.Properties dprop = new Document.Properties();
+ Document medoc = step.createDocument(dprop.setType(type).setFormat("xml").setAuthor(author)).value();
+ transax.commit();
+
+// Instantiation of the template into the user download directory
+ if (!udir.exists()) udir.mkdir();
+ if (credoc.exists()) credoc.delete();
+ Do.copy(template, credoc);
+
+// Transfer to the document of all known properties
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat get = new SimpleDateFormat(locale.getString("date.format"));
+ Writer tool = Toolbox.getWriter(credoc);
+ List<Step> slist = getInvolvedSteps();
+ for (Iterator<Step> i=slist.iterator(); i.hasNext(); ) {
+ List<SimulationContext> clist = i.next().getAllSimulationContexts();
+ for (Iterator<SimulationContext> j=clist.iterator(); j.hasNext(); ) {
+ SimulationContext context = j.next();
+ tool.updateProperty(context.getType().getName(), context.getValue());
+ }
+ }
+ tool.updateProperty("reference", medoc.getReference());
+ tool.updateProperty("study", mystudy.getTitle());
+ tool.updateProperty("step", locale.getString("folder.step." + step.getNumber()).replaceAll("''", "'"));
+ tool.updateProperty("author", author.getUsername().toUpperCase());
+ tool.updateProperty("date", get.format(medoc.getCreationDate()));
+ tool.updateProperty("history", locale.getString("label.creation").replaceAll("''", "'"));
+ tool.save();
+
+ return new URL(ApplicationSettings.getDownloadURL(author) + filename);
+ }
+ catch (Exception saverror) {
+ logger.error("Reason:", saverror);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return null;
+ }
+ }
+
+ public void selectDocument (String docurl) {
+// ------------------------------------------
+ String prefix = ApplicationSettings.getRepositoryURL();
+
+ if (docurl.startsWith(prefix)) try {
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ String path = docurl.substring(prefix.length());
+ String[] parse = path.split("'");
+
+ path = parse[0];
+ for (int i=1; i<parse.length; i++) path = path + "''" + parse[i];
+// Better call Database.selectDocument(path), but this service does not exist (overloading issue)
+ String query = "from Document where path='" + path + "'";
+ Document value = (Document)Database.getSession().createQuery(query).uniqueResult();
+
+ selecdoc = ustep.getDocument(value.getIndex());
+ transax.commit();
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ }
+ }
+
+ public void setSelection (String step) {
+// --------------------------------------
+ if (!step.equals(selection)) {
+ selection = step;
+ selecdoc = null;
+ setupPreviousToSelectedSteps();
+ updateSimulationContexts(); // Initializes contexts according to the selected steps
+ }
+ ustep = involving.get(involving.size()-1);
+ urightstep = new StepRights(cuser, ustep);
+ ustep.setActor(cuser);
+ menu.selects(selection); // Updates menu items to be displayed
+ setupContents(); // The contents may have changed even if the selection is the same
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void add (Publication doc) {
+// ------------------------------------
+ DocumentFacade facade = new DocumentFacade(this, doc);
+ boolean first = (contents.size() == 0);
+
+ docpres.put(doc.getIndex(), facade);
+ contents.add(0, facade); // Prepend the new publication
+ if (first) this.getMenu().refreshSelectedItem();
+
+ }
+
+ protected void add (SimulationContext contex) {
+// ---------------------------------------------
+ SimulationContextFacade facade = new SimulationContextFacade(contex);
+
+ context.add(facade);
+ }
+
+ protected void add (KnowledgeElement kelm) {
+// ------------------------------------------
+ KnowledgeElementFacade facade = new KnowledgeElementFacade(kelm);
+ KnowledgeIterator known = knowledge.get(kelm.getType().getIndex() - 2);
+ // Knowledges are ordered by type index, from 0 to n-1, the first one being reserved (reason for -2)
+ knowpres.put(kelm.getIndex(), facade);
+ known.list.add(facade); // Insert the new knowledge at the end of the corresponding knowledge type
+ }
+
+ protected void remove (Publication doctag) {
+// ------------------------------------------
+ for (Iterator<DocumentFacade> i=contents.iterator(); i.hasNext(); ) {
+ DocumentFacade facade = i.next();
+ if (!facade.isFacadeOf(doctag)) continue;
+ i.remove();
+ break;
+ }
+ if (contents.size() == 0) this.getMenu().refreshSelectedItem();
+ }
+
+ protected void changeUser (User user) {
+// -------------------------------------
+ cuser = user;
+ popup = null;
+ if (mystudy.isStaffedBy(cuser)) {
+ popup = ApplicationSettings.getPopupMenu("steditable");
+ popup.setContext("study", new StudyRights(cuser, mystudy));
+ }
+ ustep.setActor(cuser);
+ urightstudy = new StudyRights(cuser, mystudy);
+ urightstep = new StepRights(cuser, ustep);
+ }
+
+ protected void remove (SimulationContext contex) {
+// ------------------------------------------------
+ for (Iterator<SimulationContextFacade> i=context.iterator(); i.hasNext(); ) {
+ SimulationContextFacade facade = i.next();
+ if (!facade.isFacadeOf(contex)) continue;
+ i.remove();
+ break;
+ }
+ }
+
+ protected void remove (KnowledgeElement kelm) {
+// ---------------------------------------------
+ KnowledgeIterator known = knowledge.get(kelm.getType().getIndex() - 2);
+ // Knowledges are ordered by type index, from 0 to n-1, the first one being reserved (reason for -2)
+ knowpres.remove(kelm.getIndex());
+ for (Iterator<KnowledgeElementFacade> i=known.list.iterator(); i.hasNext(); ) {
+ KnowledgeElementFacade facade = i.next();
+ if (!facade.isFacadeOf(kelm)) continue;
+ i.remove();
+ break;
+ }
+ }
+
+ protected void update (Publication doc) {
+// ---------------------------------------
+ DocumentFacade facade = docpres.get(doc.getIndex());
+ if (facade != null) {
+ facade.refresh();
+ }
+ }
+
+ protected void update (KnowledgeElement kelm) {
+// ---------------------------------------------
+ KnowledgeElementFacade facade = knowpres.get(kelm.getIndex());
+ if (facade != null) {
+ facade.refresh();
+ }
+ }
+
+ protected void updateSimulationContexts () {
+// ------------------------------------------
+ context.clear();
+ for (Iterator<Step> i=involving.iterator(); i.hasNext(); ) {
+ for (Iterator<SimulationContext> j=i.next().getAllSimulationContexts().iterator(); j.hasNext(); ) {
+ context.add( new SimulationContextFacade(j.next()) );
+ }
+ }
+ }
+
+// ==============================================================================================================================
+// Private services
+// ==============================================================================================================================
+
+ private void setupPreviousToSelectedSteps () {
+// --------------------------------------------
+ String[] item = selection.split("\\x2E");
+ int major = Integer.valueOf(item[0]);
+ int minor = Integer.valueOf(item[1]);
+ int base = minor;
+ Step[] step;
+
+ involving.clear();
+ if (major > 0) {
+ Scenario[] branch = mystudy.getScenarii();
+ Scenario scenar = branch[0];
+ for (int i=0; i<branch.length; i++) {
+ scenar = branch[i];
+ if (scenar.getIndex() == major) break; // Supposed exist
+ }
+ step = scenar.getSteps();
+ base = step[0].getNumber() - 1;
+ for (int i=0; i+base<minor; i++) {
+ involving.add(step[i]);
+ }
+ }
+ step = mystudy.getSteps();
+ for (int i=step.length-1; i>-1; i--) {
+ Step firstep = step[i];
+ if(firstep.getNumber() > base) continue;
+ involving.add(0, firstep);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.net.URL;
+import org.splat.kernel.User;
+import org.splat.som.Publication;
+
+
+public interface OpenStudyServices {
+
+ public URL newTemplateBasedDocument (String typename, User author);
+ public Publication getSelectedDocument ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+import org.splat.som.ApplicationRights;
+import org.splat.som.Database;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Proxy;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+
+
+public abstract class SearchBaseAction extends Action {
+
+ protected String ctype = null; // Context type index, when selected
+ protected String cvalue = null; // Context value index, when selected
+ protected String cindex = ""; // Context index, when removed
+ protected String newarea = null; // Selected repository area
+ protected String author = null;
+ protected List<User> manager = null;
+ protected SimulationContextType newtype; // Context type to be valued
+ protected List<SimulationContext> newvalue; // Context value to be selected
+ protected List<SimulationContextType> critext; // Addable context types
+ protected List<SimulationContext> context; // Current contexts search criteria
+ protected List<Proxy> result;
+
+ private static final long serialVersionUID = 7863055790228544510L;
+
+ enum UserAction { refreshResult, selectContextType, selectContextValue, cancelSelect, removeContext }
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doSubmitForm () {
+// -----------------------------
+// Identification of the user action
+ UserAction action = UserAction.refreshResult;
+ if (ctype != null && Integer.valueOf(ctype) > 0) action = UserAction.selectContextType;
+ else if (cvalue != null && Integer.valueOf(cvalue) > 0) action = UserAction.selectContextValue;
+ else if (cindex.length() > 0) {
+ int index = Integer.valueOf(cindex);
+ if (index > 0) action = UserAction.removeContext;
+ else if (index < 0) action = UserAction.cancelSelect;
+ }
+// Execution of the user action
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ String done;
+ try {
+ saveFilter(); // Also reinitializes the form, if needed
+
+ if (action == UserAction.selectContextType) {
+ done = doSelectContextType();
+ } else
+ if (action == UserAction.selectContextValue) {
+ done = doAddContext();
+ } else
+ if (action == UserAction.removeContext) {
+ done = doRemoveContext();
+ } else
+ if (action == UserAction.cancelSelect) {
+ done = doCancel();
+ }
+ else { // UserAction.refreshResult
+ done = doSearch();
+ setContextTypeOptions(getInvolvedContexts()); // Done in other do functions, when required
+ }
+ setCandidates();
+ transax.commit();
+ return done;
+ }
+ catch (Exception error) {
+// No need to roll back the transaction as it is read only
+ logger.error("Reason: ", error);
+ return ERROR;
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected String doSelectContextType () {
+// ---------------------------------------
+ SimulationContext.Properties sprop = new SimulationContext.Properties();
+
+ newtype = SimulationContext.selectType(Integer.valueOf(ctype));
+ newvalue = Database.selectSimulationContextsWhere(sprop.setType(newtype));
+ if (cindex.length() > 0 && Integer.valueOf(cindex) == 0)
+ getSession().remove("search.result");
+ else
+ result = (List<Proxy>)getSession().get("search.result"); // We keep the previous result search, if valid
+ return "selectype";
+ }
+
+ protected String doAddContext () {
+// --------------------------------
+ SimulationContext selected = Database.selectSimulationContext(Integer.valueOf(cvalue));
+
+ context.add(selected);
+ setContextTypeOptions(getInvolvedContexts()); // Sets critext
+ getSession().remove("search.result"); // The current result is obsolete
+ return "refresh";
+ }
+
+ protected String doRemoveContext () {
+// -----------------------------------
+ int index = Integer.valueOf(cindex);
+ for (Iterator<SimulationContext> selected=context.iterator(); selected.hasNext();) {
+ if (selected.next().getIndex() == index) {
+ selected.remove();
+ break;
+ }
+ }
+ setContextTypeOptions(getInvolvedContexts()); // Sets critext
+ getSession().remove("search.result"); // The current result is obsolete
+ return "refresh";
+ }
+
+ @SuppressWarnings("unchecked")
+ protected String doCancel () {
+// ----------------------------
+ result = (List<Proxy>)getSession().get("search.result"); // Current result search
+ setContextTypeOptions(getInvolvedContexts()); // Sets critext
+ return "refresh";
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getAuthor () {
+// --------------------------
+ return author;
+ }
+ public List<User> getCandidates () {
+// ----------------------------------
+ return manager;
+ }
+ public List<SimulationContextType> getContextTypeOptions () {
+// -----------------------------------------------------------
+ return critext;
+ }
+ public List<SimulationContext> getContextValueOptions () {
+// --------------------------------------------------------
+ return newvalue;
+ }
+ public SimulationContextType getSelectedContextType () {
+// ------------------------------------------------------
+ return newtype;
+ }
+ public List<SimulationContext> getSimulationContexts () {
+// -------------------------------------------------------
+ return context;
+ }
+ public List<Proxy> getResult () {
+// -------------------------------
+ return result;
+ }
+
+// ==============================================================================================================================
+// Setters
+// ==============================================================================================================================
+
+ public void setArea (String name) {
+// ---------------------------------
+ this.newarea = name;
+ }
+ public void setAuthor (String index) {
+// ------------------------------------
+ this.author = index;
+ }
+ public void setContextType (String type) {
+// ----------------------------------------
+ this.ctype = type;
+ }
+ public void setContextValue (String value) {
+// ------------------------------------------
+ this.cvalue = value;
+ }
+ public void setContextIndex (String value) {
+// ------------------------------------------
+ this.cindex = value;
+ }
+
+ protected void setCandidates () {
+// -------------------------------
+ manager = new Vector<User>();
+ List<User> users = UserDirectory.selectAllUsers();
+ User me = getConnectedUser(); // May be null
+ for (Iterator<User> i=users.iterator(); i.hasNext(); ) {
+ User next = i.next();
+ if ( next.equals(me) ) continue;
+ ApplicationRights he = new ApplicationRights(next);
+ if (he.canCreateStudy()) manager.add(next);
+ }
+ }
+
+ protected void setContextTypeOptions (List<SimulationContextType> critext) {
+// --------------------------------------------------------------------------
+ for (Iterator<SimulationContext> i=context.iterator(); i.hasNext();) {
+ critext.remove(i.next().getType()); // Already used context type
+ }
+// Ordering by alphabetical order of localized context types
+ SimulationContextType[] types = critext.toArray( new SimulationContextType[critext.size()] );
+ ContextTypeComparator compare = new ContextTypeComparator();
+ ProjectSettings.Step step = types[0].getAttachedStep();
+ int from = 0;
+ int to = 0;
+ while (to < types.length-1) {
+ to += 1;
+ if (types[to].isAttachedTo(step)) continue;
+
+ if (to > from+1) Arrays.sort(types, from, to, compare);
+ from = to;
+ step = types[to].getAttachedStep();
+ }
+ if (to > from) Arrays.sort(types, from, to+1, compare);
+ this.critext = Arrays.asList(types);
+ }
+
+// ==============================================================================================================================
+// Abstract services
+// ==============================================================================================================================
+
+ protected abstract String doSearch () throws InvalidPropertyException;
+ protected abstract List<SimulationContextType> getInvolvedContexts ();
+ protected abstract void loadFilter ();
+ protected abstract void saveFilter ();
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+
+public class SearchDocumentAction extends Action {
+
+ private static final long serialVersionUID = 4347921635793712836L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ return SUCCESS;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.List;
+import java.util.Map;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+import org.splat.som.Database;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.KnowledgeElementType;
+import org.splat.som.ProgressState;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Visibility;
+import org.splat.wapp.Item;
+import org.splat.wapp.TabBar;
+
+
+public class SearchKnowledgeAction extends SearchBaseAction {
+
+ private TabBar area = null; // Active repository area
+ private String among = null; // "all", "inCHECK" or "ref"
+ private String typid = null; // Knowledge type index when among all
+ private String refid = null; // Knowledge reference when among ref
+ private String words = null; // Full text search words
+ private List<KnowledgeElementType> types; // Available knowledge types filter (initialized below)
+
+ private static final long serialVersionUID = -3104321907432838476L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ loadFilter();
+ if (newarea != null) { // New selected repository area
+ area.selects(newarea);
+ }
+ doSearch();
+
+// Final initialization of the form
+ types = KnowledgeElement.selectTypesWhere(ProgressState.APPROVED);
+ setCandidates();
+ setContextTypeOptions(getInvolvedContexts());
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+// No need to roll back the transaction as it is read only
+ logger.error("Reason: ", error);
+ return ERROR;
+ }
+ }
+
+ protected String doSearch () throws InvalidPropertyException {
+// ----------------------------
+ Map<String, Object> session = getSession();
+ User user = getConnectedUser();
+
+ KnowledgeElement.Properties sprop = new KnowledgeElement.Properties();
+ KnowledgeElement.Properties other = null;
+
+// Set of the selected repository area
+ String selectab = area.getSelection().toUpperCase();
+ Visibility reparea = Visibility.valueOf(selectab);
+ sprop.setVisibility(reparea);
+
+// Search from a given reference
+ if (among.equals("ref")) {
+ if (refid.length() == 0) {
+ getSession().remove("search.result"); // The current result is obsolete
+ return "wait";
+ }
+ sprop.setReference(refid);
+ if (reparea == Visibility.PRIVATE) { // Restriction to studies in which the connected user is involved
+ other = sprop.copy().setActor(user);
+ sprop.setAuthor(user);
+ }
+ } else {
+// Search from other available criteria
+ if (words.length() > 0) sprop.setTitle(words);
+ if (context.size() > 0) sprop.setSimulationContexts(context);
+ if ( among.equals("mine") ) sprop.setAuthor(user);
+ else if ( among.equals("his") ) {
+ User him = UserDirectory.selectUser(Integer.valueOf(author));
+ sprop.setAuthor(him);
+ if (reparea == Visibility.PRIVATE) sprop.setActor(user);
+ } else {//among.equals("all")
+ KnowledgeElementType type = KnowledgeElement.selectType(Integer.valueOf(typid));
+ sprop.setType(type);
+ if (reparea == Visibility.PRIVATE) { // Restriction to studies in which the connected user is involved
+ other = sprop.copy().setActor(user);
+ sprop.setAuthor(user);
+ }
+ }
+ }
+ if (other == null) result = Database.selectKnowledgeElementsWhere(sprop);
+ else result = Database.selectKnowledgeElementsWhere(sprop, other);
+
+ session.put("search.result", result); // For redisplaying the page without re-executing the search
+ return "refresh";
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public List<KnowledgeElementType> getKnowledgeTypes () {
+// ------------------------------------------------------
+ return types;
+ }
+ public String getOwner () {
+// -------------------------
+ return among;
+ }
+ public String getReference () {
+// -----------------------------
+ return refid;
+ }
+ public String getState () {
+// ------------------------
+ return typid;
+ }
+ public List<Item> getTabs () {
+// ----------------------------
+ return area.asList();
+ }
+ public String getWords () {
+// -------------------------
+ return words;
+ }
+
+// ==============================================================================================================================
+// Setters
+// ==============================================================================================================================
+
+ public void setOwner (String value) {
+// -----------------------------------
+ this.among = value;
+ }
+ public void setReference (String value) {
+// ---------------------------------------
+ this.refid = value;
+ }
+ public void setState (String value) {
+// ----------------------------------
+ this.typid = value;
+ }
+ public void setWords (String value) {
+// -----------------------------------
+ this.words = value;
+ }
+
+// ==============================================================================================================================
+// Implementation of abstract services
+// ==============================================================================================================================
+
+ protected List<SimulationContextType> getInvolvedContexts () {
+// ------------------------------------------------------------
+ return SimulationContext.selectAllTypes();
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void loadFilter () {
+// ----------------------------
+ Map<String,Object> session = getSession();
+ User user = getConnectedUser();
+ Map<String,Object> filter = (Map<String, Object>)session.get("knowledge.filter"); // A default filter is supposed being set at start
+
+ area = (TabBar)filter.get("area");
+ among = (String)filter.get("owner");
+ author = (String)filter.get("author");
+ typid = (String)filter.get("type");
+ refid = (String)filter.get("reference");
+ words = (String)filter.get("title");
+ context = (List<SimulationContext>)filter.get("context");
+
+ if (user == null) {
+ area.disables("private");
+ if (area.getSelection().equals("private")) area.selects("public");
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void saveFilter () {
+// ----------------------------
+ Map<String,Object> session = getSession();
+ Map<String,Object> filter = (Map<String, Object>)session.get("knowledge.filter"); // A default filter is supposed being set at start
+
+ area = (TabBar)filter.get("area"); // The area being not an input, it is null when submitting the form
+ if (among.equals("ref")) {
+ filter.put("owner", "ref");
+ filter.put("reference", this.refid);
+ } else {
+ filter.put("owner", this.among);
+ filter.put("author", this.author);
+ filter.put("type", this.typid);
+ filter.put("reference", "");
+ filter.put("title", this.words);
+
+ context = (List<SimulationContext>)filter.get("context"); // Only criteria not part of the form
+ }
+// Initialization required by all do functions
+ types = KnowledgeElement.selectTypesWhere(ProgressState.APPROVED);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.List;
+import java.util.Map;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+import org.splat.som.Database;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Study;
+import org.splat.som.Visibility;
+import org.splat.wapp.Item;
+import org.splat.wapp.TabBar;
+
+
+public class SearchStudyAction extends SearchBaseAction {
+
+ private TabBar area = null; // Active repository area
+ private String state = null; // "inPROGRESS", "inCHECK" or "END"
+ private String among = null; // "all", "mine" or "ref"
+ private String refid = null; // Study reference when among ref
+ private String words = null; // Full text search words
+
+ private static final long serialVersionUID = -1910481357051393077L;
+
+ enum UserAction { refreshResult, selectContextType, selectContextValue, cancelSelect, removeContext }
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ loadFilter();
+ if (newarea != null) { // New selected repository area
+ area.selects(newarea);
+ }
+ doSearch();
+
+// Final initialization of the form
+ setCandidates();
+ setContextTypeOptions(getInvolvedContexts());
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+// No need to roll back the transaction as it is read only
+ logger.error("Reason: ", error);
+ return ERROR;
+ }
+ }
+
+ protected String doSearch () throws InvalidPropertyException {
+// ----------------------------
+ Map<String, Object> session = getSession();
+ User user = getConnectedUser();
+
+ Study.Properties sprop = new Study.Properties();
+ Study.Properties other = null;
+
+// Set of the selected repository area
+ String selectab = area.getSelection().toUpperCase();
+ Visibility reparea = Visibility.valueOf(selectab);
+ sprop.setVisibility(reparea);
+
+// Search from a given reference
+ if (among.equals("ref")) {
+ if (refid.length() == 0) {
+ getSession().remove("search.result"); // The current result is obsolete
+ return "wait";
+ }
+ sprop.setReference(refid);
+ if (reparea == Visibility.PRIVATE) { // Restriction to studies in which the connected user is involved
+ other = sprop.copy().setActor(user);
+ sprop.setManager(user);
+ }
+ } else {
+// Search from other available criteria
+ if (this.state != null) {
+ ProgressState state = ProgressState.APPROVED; // Trick for the Public and Reference areas to not share the APPROVED state
+ if (!this.state.equals("ARCHIVED")) state = ProgressState.valueOf(this.state);
+ sprop.setState(state);
+ }
+ if (words.length() > 0) sprop.setTitle(words);
+ if (context.size() > 0) sprop.setSimulationContexts(context);
+ if (among.equals("mine")) sprop.setManager(user);
+ else if (among.equals("his")) {
+ User him = UserDirectory.selectUser(Integer.valueOf(author));
+ sprop.setManager(him);
+ if (reparea == Visibility.PRIVATE) sprop.setActor(user);
+ } else //among.equals("all")
+ if (reparea == Visibility.PRIVATE) {
+ other = sprop.copy().setActor(user);
+ sprop.setManager(user);
+ }
+ }
+ if (other == null) result = Database.selectStudiesWhere(sprop);
+ else result = Database.selectStudiesWhere(sprop, other);
+
+ session.put("search.result", result); // For redisplaying the page without re-executing the search
+ return "refresh";
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getArea () {
+// ------------------------
+ return area.getSelection();
+ }
+ public String getOwner () {
+// -------------------------
+ return among;
+ }
+ public String getReference () {
+// -----------------------------
+ return refid;
+ }
+ public String getState () {
+// -------------------------
+ return state;
+ }
+ public List<Item> getTabs () {
+// ----------------------------
+ return area.asList();
+ }
+ public String getWords () {
+// -------------------------
+ return words;
+ }
+
+// ==============================================================================================================================
+// Setters
+// ==============================================================================================================================
+
+ public void setOwner (String value) {
+// -----------------------------------
+ this.among = value;
+ }
+ public void setReference (String value) {
+// ---------------------------------------
+ this.refid = value;
+ }
+ public void setState (String value) {
+// -----------------------------------
+ this.state = value;
+ }
+ public void setWords (String value) {
+// -----------------------------------
+ this.words = value;
+ }
+
+// ==============================================================================================================================
+// Implementation of abstract services
+// ==============================================================================================================================
+
+ protected List<SimulationContextType> getInvolvedContexts () {
+// ------------------------------------------------------------
+ List<ProjectSettings.Step> steps = ProjectSettings.getStepsOf(Study.class);
+ ProjectSettings.Step[] number = steps.toArray(new ProjectSettings.Step[steps.size()]);
+
+ return SimulationContext.selectTypesOf(number);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void loadFilter () {
+// ----------------------------
+ Map<String,Object> session = getSession();
+ User user = getConnectedUser();
+ Map<String,Object> filter = (Map<String, Object>)session.get("study.filter"); // A default filter is supposed being set at start
+
+ area = (TabBar)filter.get("area");
+ state = (String)filter.get("state");
+ among = (String)filter.get("owner");
+ author = (String)filter.get("author");
+ refid = (String)filter.get("reference");
+ words = (String)filter.get("title");
+ context = (List<SimulationContext>)filter.get("context");
+
+ if (user == null) {
+ area.disables("private");
+ if (area.getSelection().equals("private")) area.selects("public");
+ if (among.equals("mine")) among = "all";
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void saveFilter () {
+// ----------------------------
+ Map<String, Object> session = getSession();
+ Map<String, Object> filter = (Map<String, Object>)session.get("study.filter"); // A default filter is supposed being set at start
+
+ area = (TabBar)filter.get("area"); // The area being not an input, it is null when submitting the form
+ if (among.equals("ref")) {
+ filter.put("owner", "ref");
+ filter.put("reference", this.refid);
+ } else {
+ filter.put("state", this.state);
+ filter.put("owner", this.among);
+ filter.put("author", this.author);
+ filter.put("reference", "");
+ filter.put("title", this.words);
+
+ context = (List<SimulationContext>)filter.get("context"); // Only criteria not part of the form
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Iterator;
+import java.util.ResourceBundle;
+
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.wapp.PopupMenu;
+
+
+public class SimulationContextFacade {
+
+ private SimulationContext my;
+ private String name;
+ private int step;
+ private ProgressState state;
+ private PopupMenu popup;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public SimulationContextFacade (SimulationContext represented) {
+// --------------------------------------------------------------
+ my = represented;
+ popup = ApplicationSettings.getPopupMenu("scontext");
+
+ SimulationContextType type = my.getType();
+ for (Iterator<ProjectSettings.Step> i=ProjectSettings.getAllSteps().iterator(); i.hasNext(); ) {
+ ProjectSettings.Step next = i.next();
+ if (!type.isAttachedTo(next)) continue;
+ step = next.getNumber();
+ break;
+ }
+ state = my.getProgressState(); // inCHECK or APPROVED
+ name = type.getName();
+ if (type.isApproved()) {
+ name = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale()).getString("type.context." + name);
+ } else {
+ state = ProgressState.inDRAFT;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getEditIcon () {
+// ----------------------------
+ return "icon.ed" + state + ".png";
+ }
+ public String getIndex () {
+// -------------------------
+ return String.valueOf(my.getIndex());
+ }
+ public PopupMenu getPopup () {
+// ----------------------------
+ popup.setContext("scontext", this); // Cannot be done at construction because pop-ups are shared
+ return popup;
+ }
+ public String getStateIcon () {
+// -----------------------------
+ return "icon." + state + ".png";
+ }
+ public String getStepNumber () {
+// ------------------------------
+ return String.valueOf(step);
+ }
+ public String getTypeName () {
+// ----------------------------
+ return name;
+ }
+ public String getValue () {
+// -------------------------
+ return my.getValue();
+ }
+
+ public boolean isApproved () {
+// ----------------------------
+ return (state == ProgressState.APPROVED);
+ }
+ public boolean isEditable () {
+// ----------------------------
+ return !my.isShared();
+ }
+ public boolean isFacadeOf (SimulationContext represented) {
+// ---------------------------------------------------------
+ return my.equals(represented);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+/**
+ *
+ * @author Daniel Brunier-Coulin
+ * @copyright OPEN CASCADE 2012
+ */
+
+import java.text.SimpleDateFormat;
+import java.util.ResourceBundle;
+
+import org.splat.som.Timestamp;
+import org.splat.som.ValidationStep;
+
+
+public class StampFacade implements HistoryFacade {
+
+ private String icon;
+ private String comment;
+ private String date;
+ private String empty;
+ private String nonicon;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public StampFacade (Timestamp stamp) {
+// ------------------------------------
+ ResourceBundle labels = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale());
+ ResourceBundle custom = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat convert = new SimpleDateFormat(custom.getString("date.format")); // Date display format
+ ValidationStep type = stamp.getType();
+
+ nonicon = "image.hold.gif";
+ empty = "";
+ date = convert.format(stamp.getDate());
+ comment = labels.getString("label." + type.toString()) + " " + stamp.getAuthor().toString();
+ if (type == ValidationStep.APPROVAL) icon = "icon.APPROVED.png";
+ else if (type == ValidationStep.REVIEW) icon = "icon.inCHECK.png";
+ else if (type == ValidationStep.PROMOTION) icon = "icon.inDRAFT.png";
+ else icon = "icon.inWORK.png";
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getDate () {
+// ------------------------
+ return date;
+ }
+ public String getDescription () {
+// -------------------------------
+ return comment;
+ }
+ public String getFileIcon () {
+// ----------------------------
+ return icon;
+ }
+ public String getSharingIcon () {
+// -------------------------------
+ return nonicon;
+ }
+ public String getSize () {
+// ------------------------
+ return empty;
+ }
+ public String getVersion () {
+// ---------------------------
+ return empty;
+ }
+ public String getVersioningIcon () {
+// ----------------------------------
+ return nonicon;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.struts2.interceptor.ServletRequestAware;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.som.ApplicationRights;
+import org.splat.som.Database;
+import org.splat.som.ProjectSettings;
+
+
+public class StartAction extends Action implements ServletRequestAware {
+
+ private HttpServletRequest request = null;
+
+ private static final long serialVersionUID = 5875058140682652964L;
+
+// ==============================================================================================================================
+// Action execution
+// ==============================================================================================================================
+
+ public String doInitialize () throws Exception {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ StringBuffer wappurl = request.getRequestURL(); // "http://{server}:{port}/{webapp}/", including the leading '/'
+
+ logger.info( new StringBuffer("Initializing ").append(wappurl).append("...").toString() );
+ try {
+ ProjectSettings project = ProjectSettings.getMe();
+ ApplicationSettings wapp = new ApplicationSettings(wappurl.toString(), this.getLocale());
+ String root = wapp.getApplicationRootPath();
+
+// Database configuration
+ project.configure(root + wapp.getApplicationProperty("wapp.configuration"));
+
+// Application configuration
+ System.setProperty("java.security.auth.login.config", root + wapp.getApplicationProperty("wapp.login"));
+ wapp.configure(root + wapp.getApplicationProperty("wapp.customization"));
+
+// Initialization of the user session
+ Map<String, Object> session = getSession();
+
+ session.put("user.rights", new ApplicationRights(null) ); // No user connected yet
+ session.put("study.filter", wapp.getFilter("study"));
+ session.put("knowledge.filter", wapp.getFilter("knowledge"));
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+ logger.fatal("Reason:", error);
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Setter
+// ==============================================================================================================================
+
+ public void setServletRequest (HttpServletRequest request) {
+// ----------------------------------------------------------
+ this.request = request;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+import org.splat.som.ProjectElement;
+import org.splat.som.Scenario;
+import org.splat.som.Step;
+import org.splat.som.Study;
+import org.splat.wapp.MenuItem;
+import org.splat.wapp.SlidMenu;
+
+
+public class StudyMenu extends SlidMenu {
+
+ private Study study;
+ private Scenario scopen; // Currently "open" scenario
+ private Step stopen; // Currently selected step
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public StudyMenu (Study context) {
+// --------------------------------
+ super("activities", "study");
+ study = context;
+ scopen = null;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public void selects (String name) {
+// ---------------------------------
+ String[] parse = name.split("\\x2E");
+ Scenario[] scenes = study.getScenarii();
+ Scenario scenew = scopen;
+ int askid = 0;
+
+// Initialization
+ if (scenew == null && scenes.length == 1) scenew = scenes[0];
+ try {
+ int askdex = Integer.valueOf(parse[0]);
+ if (askdex > 0) {
+ while (askid < scenes.length) {
+ if (scenes[askid].getIndex() == askdex) break;
+ askid += 1;
+ }
+ scenew = scenes[askid]; // Throws an exception if the scenario does not exist (that is, if name is not correct)
+ }
+ } catch (Exception error) {
+ return;
+ }
+ if (scenew == null) {
+
+// Study with several scenarii, non of them open
+// Collection of steps to be displayed
+ Vector<Step> steps = new Vector<Step>();
+ Step[] newstep = scenes[0].getSteps(); // All scenarii have the same steps
+
+ int base = newstep[0].getNumber();
+ int last = newstep[newstep.length-1].getNumber();
+ for (int i=0; i<scenes.length; i++) steps.add(scenes[i].getFirstStep());
+
+ newstep = study.getSteps();
+ stopen = newstep[0]; // Default selected step
+ for (int i=newstep.length-1; i>-1; i--) {
+ if(newstep[i].getNumber() >= base) continue;
+ steps.add(0, newstep[i]);
+ }
+ for (int i=0; i<newstep.length; i++) {
+ if(newstep[i].getNumber() <= last) continue;
+ steps.add(newstep[i]);
+ }
+// Creation of the menu
+ for (Iterator<Step> i=steps.iterator(); i.hasNext(); ) {
+ Step step = i.next();
+ int number = step.getNumber();
+ String icon;
+ if (step.getOwner() instanceof Study) {
+ if (!step.isStarted()) icon = "icon.empty.png";
+ else if (step.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ addItem("0." + number, "menu.step." + number, icon, "step-study?selection=0." + number);
+// WARNING: The selection number must end the action's parameters for the need of refreshGivenStepItem()
+ } else {
+ Scenario group = (Scenario)step.getOwner();
+ int index = group.getIndex();
+ String value = index + "." + number;
+ if (group.isCheckedout()) icon = "icon.checkedout.png";
+ else if (group.isEmpty()) icon = "icon.empty.png";
+// else if (group.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ addGroup(value, group.getTitle(), icon, "step-study?selection=" + value);
+ }
+ }
+ } else
+ if (scopen == null || !scenew.equals(scopen)) {
+
+// Opening a scenario
+ this.clear();
+// Collection of steps to be displayed
+ Vector<Step> steps = new Vector<Step>();
+ Step[] newstep = scenew.getSteps();
+
+ int base = newstep[0].getNumber();
+ int last = newstep[newstep.length-1].getNumber();
+ for (int i=0; i<newstep.length; i++) {
+ steps.add(newstep[i]);
+ }
+ for (int i=askid-1; i>-1; i--) steps.add(0, scenes[i].getFirstStep());
+ newstep = study.getSteps();
+ for (int i=newstep.length-1; i>-1; i--) {
+ if(newstep[i].getNumber() >= base) continue;
+ steps.add(0, newstep[i]);
+ }
+ for (int i=askid+1; i<scenes.length; i++) steps.add(scenes[i].getFirstStep());
+ for (int i=0; i<newstep.length; i++) {
+ if(newstep[i].getNumber() <= last) continue;
+ steps.add(newstep[i]);
+ }
+// Creation of the menu
+ boolean first = true; // For differentiating the first scenario step
+ int askdex = Integer.valueOf(parse[1]);
+ for (Iterator<Step> i=steps.iterator(); i.hasNext(); ) {
+ Step step = i.next();
+ int number = step.getNumber();
+ String icon;
+ if (!step.isStarted()) icon = "icon.empty.png";
+ else if (step.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ if (number == askdex) stopen = step;
+ if (step.getOwner() instanceof Study) {
+ addItem("0." + number, "menu.step." + number, icon, "step-study?selection=0." + number);
+ } else {
+ Scenario group = (Scenario)step.getOwner();
+ int index = group.getIndex();
+ String value = index + "." + number;
+ if (index != scenew.getIndex()) {
+ if (group.isCheckedout()) icon = "icon.checkedout.png";
+ else if (group.isEmpty()) icon = "icon.empty.png";
+// else if (group.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ addGroup(value, group.getTitle(), icon, "step-study?selection=" + value);
+ } else if (first) {
+ if (group.isCheckedout()) icon = "icon.checkedout.png";
+ addGroup(value, scenew.getTitle(), icon, "step-study?selection=" + value);
+ first = false;
+ } else {
+ addSubItem(value, "menu.step." + number, icon, "step-study?selection=" + value);
+ }
+ }
+ }
+ scopen = scenew;
+ }
+ else {
+ Step[] step = scopen.getSteps();
+ int selected = Integer.valueOf(parse[1]);
+ for (int i=0; i<step.length; i++) {
+ if (step[i].getNumber() != selected) continue;
+ stopen = step[i];
+ break;
+ }
+ }
+ super.selects(name);
+ }
+
+ public void refreshGivenStepItem (Step step) {
+// --------------------------------------------
+ String number = "." + step.getNumber();
+ ProjectElement owner = step.getOwner();
+ int range = 0;
+
+ for (Iterator<MenuItem> action=menu.iterator(); action.hasNext(); ) {
+ MenuItem item = action.next();
+ String index = item.getAction(); // Returns the above string ended by the selection number
+ if (!index.endsWith(number)) continue;
+
+ String icon;
+ if (owner instanceof Scenario) {
+ if (range == 0 && ((Scenario)owner).isCheckedout()) icon = "icon.checkedout.png";
+ range += 1;
+ }
+ if (!step.isStarted()) icon = "icon.empty.png";
+ else if (step.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ item.icon(icon);
+ }
+ }
+
+ public void refreshSelectedItem () {
+// ----------------------------------
+ MenuItem item = this.getSelectedItem();
+ String icon;
+ if (!stopen.isStarted()) icon = "icon.empty.png";
+ else if (stopen.isFinished()) icon = "icon.checked.png";
+ else icon = "icon.done.png";
+ item.icon(icon);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.Name;
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+import org.splat.som.ApplicationRights;
+import org.splat.som.Database;
+import org.splat.som.Document;
+import org.splat.som.DocumentType;
+import org.splat.som.Study;
+import org.splat.som.StudyRights;
+import org.splat.som.ValidationCycle;
+import org.splat.som.ValidationStep;
+
+
+public class StudyPropertiesAction extends DisplayStudyStepAction {
+
+// Presentation fields
+ private List<User> staff;
+ private List<User> member;
+ private List<Name> validor;
+ private List<ValidationFacade> validation;
+ private ValidationFacade validefault;
+ private List<DocumentType> other;
+
+// User input fields
+ private Save tosave; // Edition action (title, contributors or cycle)
+ private String edicycle;
+ private String stitle; // Title of the study
+ private String contributors; // List of existing contributors, some of them may have been removed
+ private String candidates; // List of added contributors
+ private int type; // Type of document to be included in the validation process
+ private int publisher;
+ private int reviewer;
+ private int approver;
+
+ private static final long serialVersionUID = 4210696018741092900L;
+
+ private enum Save { title, contributor, cycle }
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+ validation = new Vector<ValidationFacade>();
+ validefault = null;
+ other = Document.selectResultTypes();
+
+ Study study = mystudy.getStudyObject();
+ StudyRights user = mystudy.getStudyRights();
+ for (Iterator<DocumentType> i=other.iterator(); i.hasNext(); ) {
+ DocumentType type = i.next();
+ ValidationCycle cycle = study.getValidationCycleOf(type);
+ if (cycle.isDefault()) {
+ validefault = new ValidationFacade(cycle);
+ continue;
+ }
+ validation.add( new ValidationFacade(cycle) );
+ i.remove();
+ }
+ if (validefault != null) validation.add(validefault); // In order to be at the end
+ member = study.getContributors();
+ staff = null;
+ validor = null;
+
+ transax.commit();
+ if (mystudy.isOpenForWriting() && user.canEditProperties()) return "edit";
+ else return "display";
+ }
+
+ public String doEditTitle () {
+// ----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+ validation = new Vector<ValidationFacade>();
+ validefault = null;
+ other = Document.selectResultTypes();
+
+ Study study = mystudy.getStudyObject();
+ for (Iterator<DocumentType> i=other.iterator(); i.hasNext(); ) {
+ DocumentType type = i.next();
+ ValidationCycle cycle = study.getValidationCycleOf(type);
+ if (cycle.isDefault()) {
+ validefault = new ValidationFacade(cycle);
+ continue;
+ }
+ validation.add( new ValidationFacade(cycle) );
+ }
+ if (validefault != null) validation.add(validefault); // In order to be at the end
+ member = study.getContributors();
+ staff = null;
+ validor = null;
+ other = null;
+
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doEditContributors () {
+// -----------------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+ validation = new Vector<ValidationFacade>();
+ validefault = null;
+ other = Document.selectAllTypes();
+
+ Study study = mystudy.getStudyObject();
+ for (Iterator<DocumentType> i=other.iterator(); i.hasNext(); ) {
+ DocumentType type = i.next();
+ ValidationCycle cycle = study.getValidationCycleOf(type);
+ if (cycle.isDefault()) {
+ validefault = new ValidationFacade(cycle);
+ continue;
+ }
+ validation.add( new ValidationFacade(cycle) );
+ }
+ if (validefault != null) validation.add(validefault); // In order to be at the end
+ member = study.getContributors();
+ staff = UserDirectory.selectAllUsers();
+ validor = null;
+ other = null;
+ User me = this.getConnectedUser();
+ for (Iterator<User> i=staff.iterator(); i.hasNext(); ) {
+ User next = i.next();
+ ApplicationRights he = new ApplicationRights(next);
+ if (next.equals(me) || member.contains(next) || !he.canContributeToStudy()) i.remove();
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doEditCycle () {
+// ----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ mystudy = getOpenStudy();
+ validation = new Vector<ValidationFacade>();
+ validefault = null;
+ other = Document.selectResultTypes();
+
+ Study study = mystudy.getStudyObject();
+ for (Iterator<DocumentType> i=other.iterator(); i.hasNext(); ) {
+ DocumentType type = i.next();
+ ValidationCycle cycle = study.getValidationCycleOf(type);
+ if (cycle.isDefault()) {
+ validefault = new ValidationFacade(cycle);
+ continue;
+ }
+ if (type.getName().equals(edicycle)) {
+ this.type = type.getIndex();
+ }
+ validation.add( new ValidationFacade(cycle) );
+ i.remove();
+ }
+ if (validefault != null) validation.add(validefault); // In order to be at the end
+ member = study.getContributors();
+ validor = new Vector<Name>();
+ staff = null;
+ List<User> user = UserDirectory.selectAllUsers();
+ for (Iterator<User> i=user.iterator(); i.hasNext(); ) {
+ User next = i.next();
+ ApplicationRights he = new ApplicationRights(next);
+ if (he.canValidate()) {
+ if (next.equals(study.getAuthor())) validor.add( new ValidationFacade.ByManager(next) );
+ else validor.add(next);
+ }
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doEdition () {
+// --------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ Study study = getOpenStudy().getStudyObject();
+
+ if (tosave == Save.title) {
+
+// Edition of the title
+ Study.Properties sprop = new Study.Properties();
+ try {
+ study.update(sprop.setTitle(stitle));
+ }
+ catch (InvalidPropertyException e) {
+//TODO
+ }
+ } else
+ if (tosave == Save.contributor) {
+
+// Edition of contributors
+ if (contributors == null) contributors = "";
+ if (candidates == null) candidates = "";
+
+ String[] parsekept = contributors.split(",");
+ String[] parsenew = candidates.split(",");
+ Vector<User> toremove = new Vector<User>(study.getContributors());
+
+ for (int i=0; i<parsekept.length; i++) {
+ if (parsekept[i].length() == 0) continue; // Yet no contributor
+ int index = Integer.valueOf(parsekept[i].trim());
+ for (Iterator<User> j=toremove.iterator(); j.hasNext(); ){
+ int present = j.next().getIndex();
+ if (present != index) continue;
+ j.remove();
+ break;
+ }
+ }
+ int size = toremove.size();
+ if (size > 0) study.removeContributor(toremove.toArray(new User[size]));
+
+ for (int i=0; i<parsenew.length; i++) {
+ if (parsenew[i].length() == 0) continue; // No any new contributor
+ int index = Integer.valueOf(parsenew[i].trim());
+ User newser = UserDirectory.selectUser(index);
+
+ study.addContributor(newser);
+ }
+ } else
+ if (tosave == Save.cycle) {
+
+// Addition of a document validation cycle
+ DocumentType apply = Document.selectType(type);
+ ValidationCycle.Properties vprop = new ValidationCycle.Properties();
+ if (publisher > 0) {
+ User actor = UserDirectory.selectUser(publisher);
+ vprop.setActor(ValidationStep.PROMOTION, actor);
+ }
+ if (reviewer > 0) {
+ User actor = UserDirectory.selectUser(reviewer);
+ vprop.setActor(ValidationStep.REVIEW, actor);
+ }
+ if (approver > 0) {
+ User actor = UserDirectory.selectUser(approver);
+ vprop.setActor(ValidationStep.APPROVAL, actor);
+ }
+ study.setValidationCycle(apply, vprop);
+ }
+ transax.commit();
+
+ doInitialize(); // Re-initialization following the above edition
+ return SUCCESS;
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public User getAuthor () {
+// ------------------------
+ return mystudy.getStudyObject().getAuthor();
+ }
+ public List<User> getCandidates () {
+// ----------------------------------
+ return staff;
+ }
+ public String getCycle () {
+// -------------------------
+ return edicycle;
+ }
+ public List<User> getContributors () {
+// ------------------------------------
+ return member;
+ }
+ public ValidationFacade getDefaultValidation () {
+// -----------------------------------------------
+ return validefault;
+ }
+ public int getDocumentTypeIndex () {
+// ----------------------------------
+ return type;
+ }
+ public List<DocumentType> getOtherDocumentTypes () {
+// --------------------------------------------------
+ return other;
+ }
+ public String getStudyTitle () {
+// ------------------------------
+ return mystudy.getTitle();
+ }
+ public List<ValidationFacade> getValidations () {
+// -----------------------------------------------
+ return validation;
+ }
+ public List<Name> getValidationActors () {
+// ----------------------------------------
+ return validor;
+ }
+
+// ==============================================================================================================================
+// Setters
+// ==============================================================================================================================
+
+ public void setCandidates (String indices) {
+// ------------------------------------------
+ candidates = indices;
+ }
+ public void setCycle (String type) {
+// ----------------------------------
+ edicycle = type;
+ }
+ public void setMembers (String indices) {
+// ---------------------------------------
+ contributors = indices;
+ }
+ public void setDocumentType (String index) {
+// ------------------------------------------
+ type = Integer.valueOf(index);
+ }
+ public void setApprover (String index) {
+// --------------------------------------
+ approver = Integer.valueOf(index);
+ }
+ public void setPublisher (String index) {
+// ---------------------------------------
+ publisher = Integer.valueOf(index);
+ }
+ public void setReviewer (String index) {
+// --------------------------------------
+ reviewer = Integer.valueOf(index);
+ }
+ public void setTitle (String title) {
+// -----------------------------------
+ stitle = title;
+ }
+ public void setSaveTitle (String save) {
+// --------------------------------------
+ tosave = Save.title;
+ }
+ public void setSaveContributors (String save) {
+// ---------------------------------------------
+ tosave = Save.contributor;
+ }
+ public void setSaveCycle (String save) {
+// --------------------------------------
+ tosave = Save.cycle;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+
+import org.splat.kernel.Do;
+import org.splat.som.Database;
+
+
+public class UploadAction extends Action {
+
+ private File upload = null;
+ private String uploadMimeType = null;
+ private String uploadFileName = null;
+
+ private ToDo action; // Action to do
+ private String next = null; // Action to which the uploaded file is passed
+ private String index = null; // Depending on the next action, document index to which the action applies
+
+ private static final long serialVersionUID = 6003880772275115923L;
+
+ private enum ToDo { cancel, upload };
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ return SUCCESS;
+ }
+
+ public String doUpload () {
+// -------------------------
+ if (action == ToDo.cancel) return "cancel";
+ try {
+ File udir = Database.getDownloadDirectory(getConnectedUser());
+ String path = udir.getPath() + "/" + uploadFileName;
+ File file = new File(path);
+
+ if (!udir.exists()) udir.mkdir();
+ if (file.exists()) file.delete();
+ Do.copy(upload, file);
+ logger.info("Uploading \"" + uploadFileName + "\" " + uploadMimeType + " file.");
+ return next;
+ }
+ catch (OutOfMemoryError error) {
+ return "outofmemory";
+ }
+ catch (Exception error) {
+ logger.error("Reason: ", error);
+ return ERROR;
+ }
+ }
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getIndex () {
+// -------------------------
+ return index;
+ }
+ public String getFileName () {
+// ----------------------------
+ return uploadFileName;
+ }
+ public String getNextAction () {
+// ------------------------------
+ return next;
+ }
+
+ public void setCancel (boolean back) {
+// ------------------------------------
+ this.action = ToDo.cancel;
+ }
+ public void setDoIt (boolean upload) {
+// --------------------------------
+ this.action = ToDo.upload;
+ }
+ public void setIndex (String index) {
+// -----------------------------------
+ this.index = index;
+ }
+ public void setNextAction (String next) {
+// ---------------------------------------
+ this.next = next;
+ }
+ public void setUpload (File upload) {
+// -----------------------------------
+ this.upload = upload;
+ }
+ public void setUploadFileName (String name) {
+// -------------------------------------------
+ this.uploadFileName = name;
+ }
+ public void setUploadContentType (String mime) {
+// ----------------------------------------------
+ this.uploadMimeType = mime;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.splat.som.Document;
+import org.splat.som.DocumentType;
+import org.splat.som.ProgressState;
+import org.splat.som.Publication;
+import org.splat.som.Step;
+
+
+public abstract class UploadBaseNextAction extends Action {
+
+ protected OpenStudy mystudy = null;
+ protected String filename = null; // Uploaded file name
+ protected DocumentType deftype = null;
+ protected List<Document> defuses = null;
+ protected String docname = null;
+ protected ProgressState state = null;
+ protected String docuses = null;
+ protected ToDo action = null;
+
+ private static final long serialVersionUID = -6925961099244461039L;
+
+ protected enum ToDo { cancel, save };
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public DocumentType getDefaultDocumentType () {
+// ---------------------------------------------
+ return deftype;
+ }
+ public List<Document> getDefaultDocumentUses () {
+// -----------------------------------------------
+ return defuses;
+ }
+ public String getDocumentName () {
+// --------------------------------
+ return docname;
+ }
+ public String getDocumentState () {
+// ---------------------------------
+ return state.toString();
+ }
+ public String getFileName () {
+// ----------------------------
+ return filename;
+ }
+
+ public void setCancel (boolean cancel) {
+// --------------------------------------
+ this.action = ToDo.cancel;
+ }
+ public void setDocumentState (String state) {
+// -------------------------------------------
+ this.state = ProgressState.valueOf(state);
+ }
+ public void setFileName (String path) {
+// -------------------------------------
+ this.filename = path;
+ }
+ public void setUses (String list) {
+// ---------------------------------
+ this.docuses = list;
+ }
+ public void setSave (boolean save) {
+// ----------------------------------
+ this.action = ToDo.save;
+ }
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void setupDefaultUses (DocumentType type) {
+// -------------------------------------------------
+ Set<DocumentType> uses = type.getDefaultUses();
+
+ for (Iterator<DocumentType> i=uses.iterator(); i.hasNext();) {
+ DocumentType usetype = i.next();
+ List<Document> usedoc = mystudy.collectInvolvedDocuments(usetype);
+ if (usedoc.isEmpty()) setupDefaultUses(usetype);
+ else defuses.addAll(usedoc);
+ }
+ }
+
+ protected Publication getPublication (int index) {
+// ------------------------------------------------
+ List<Step> steps = mystudy.getInvolvedSteps();
+
+ for (Iterator<Step> i=steps.iterator(); i.hasNext(); ) {
+ List<Publication> published = i.next().getAllDocuments();
+ for (Iterator<Publication> j=published.iterator(); j.hasNext();) {
+ Publication found = j.next(); // In a given study step,
+ if (found.value().getIndex() == index) return found; // there is only one publication of a given document
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.util.ResourceBundle;
+
+import org.splat.kernel.Name;
+import org.splat.kernel.User;
+import org.splat.som.ValidationCycle;
+import org.splat.som.ValidationStep;
+
+
+public class ValidationFacade {
+
+ String myicon;
+ String myname;
+ Name mypublisher;
+ Name myreviewer;
+ Name myapprover;
+
+ protected static abstract class UserOption implements Name {
+// ----------------------------------------------------------
+ protected String name;
+ protected int index;
+
+ public int getIndex() {
+ return index;
+ }
+ public String toString () {
+ return name;
+ }
+ }
+ protected static class NotRequired extends UserOption {
+// -----------------------------------------------------
+ protected NotRequired () {
+ name = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale()).getString("label.skipped");
+ index = 0;
+ }
+ }
+ protected static class ByAuthor extends UserOption {
+// --------------------------------------------------
+ protected ByAuthor () {
+ name = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale()).getString("label.bytheauthor");
+ index = 0;
+ }
+ }
+ protected static class ByManager extends UserOption {
+// ---------------------------------------------------
+ protected ByManager (User manager) {
+ name = ResourceBundle.getBundle("labels", ApplicationSettings.getCurrentLocale()).getString("label.me");
+ index = manager.getIndex();
+ }
+ }
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public ValidationFacade (ValidationCycle cycle) {
+// -----------------------------------------------
+ myicon = "icon.empty.png";
+ if (cycle.isDefault()) {
+ myname = "default";
+ } else {
+ if (cycle.isAssigned()) myicon = "icon.done.png";
+ myname = cycle.getDocumentType().getName();
+ }
+ mypublisher = cycle.getActor(ValidationStep.PROMOTION);
+ myreviewer = cycle.getActor(ValidationStep.REVIEW);
+ myapprover = cycle.getActor(ValidationStep.APPROVAL);
+ if (mypublisher == null) {
+ mypublisher = new ByAuthor();
+ }
+ if (myreviewer == null || myapprover == null) {
+ Name skipped = new NotRequired();
+ if (myreviewer == null) myreviewer = skipped;
+ if (myapprover == null) myapprover = skipped;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getDocumentType () {
+// --------------------------------
+ return myname;
+ }
+ public int getApproverIndex () {
+// ------------------------------
+ return myapprover.getIndex();
+ }
+ public String getApproverName () {
+// --------------------------------
+ return myapprover.toString();
+ }
+ public String getIcon () {
+// ------------------------
+ return myicon;
+ }
+ public int getPublisherIndex () {
+// -------------------------------
+ return mypublisher.getIndex();
+ }
+ public String getPublisherName () {
+// ---------------------------------
+ return mypublisher.toString();
+ }
+ public int getReviewerIndex () {
+// ------------------------------
+ return myreviewer.getIndex();
+ }
+ public String getReviewerName () {
+// --------------------------------
+ return myreviewer.toString();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+import java.util.Vector;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.InvalidPropertyException;
+import org.splat.kernel.Relation;
+import org.splat.kernel.User;
+import org.splat.manox.Reader;
+import org.splat.manox.Toolbox;
+import org.splat.som.Database;
+import org.splat.som.Document;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Publication;
+import org.splat.som.Revision;
+import org.splat.som.Step;
+import org.splat.som.UsedByRelation;
+import org.splat.som.UsesRelation;
+
+
+public class VersionDocumentAction extends UploadBaseNextAction {
+
+ private String index = null; // Versioned document index
+ private List<Publication> usedby = null;
+ private String docusedby = null;
+ private String summary = null; // Summary of changes in the new version
+ private String docver = ""; // Version number extracted from the imported file, if exist
+ private String date = ""; // Date extracted from the imported file, if exist
+
+ private static final long serialVersionUID = -5702264003232132168L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ User user = getConnectedUser();
+ File updir = Database.getDownloadDirectory(user);
+ File upfile = new File(updir.getPath() + "/" + filename);
+
+ mystudy = getOpenStudy();
+
+ Publication tag = mystudy.getSelectedStep().getDocument(Integer.valueOf(index));
+ Document doc = tag.value();
+ deftype = doc.getType();
+ docname = doc.getTitle();
+ defuses = new Vector<Document>();
+ usedby = new Vector<Publication>();
+
+ Reader tool = Toolbox.getReader(upfile);
+ if (tool != null) {
+ String fileref = tool.extractProperty("reference");
+ String filever = tool.extractProperty("version");
+ if (fileref != null && !doc.getReference().equals(fileref)) {
+ setErrorCode("reference.mismatch");
+ return ERROR;
+ }
+ if (filever != null) try {
+ Revision.Format get = new Revision.Format(ProjectSettings.getRevisionPattern());
+ Revision newver = get.parse(filever);
+ Revision oldver = new Revision(doc.getVersion());
+ if (!newver.isGraterThan(oldver)) throw new InvalidPropertyException("version");
+ if ( newver.isMinor() ) state = ProgressState.inWORK;
+ else state = ProgressState.inDRAFT;
+ docver = newver.toString();
+ } catch (Exception e) {
+ setErrorCode("version.mismatch");
+ return ERROR;
+ }
+ summary = tool.extractProperty("history");
+ date = tool.extractProperty("date");
+ if (date != null) {
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat check = new SimpleDateFormat(locale.getString("date.format"));
+ try {
+ check.parse(date);
+ } catch (ParseException e) {
+ setErrorCode("format.date");
+ return ERROR;
+ }
+ } else date = "";
+ }
+ setupDefaultUses(deftype);
+// Add additional documents used by the current version
+ List<Relation> uses = doc.getRelations(UsesRelation.class);
+ for (Iterator<Relation> i=uses.iterator(); i.hasNext();) {
+ Document used = (Document)i.next().getTo();
+ if (!defuses.contains(used)) defuses.add(used);
+ }
+// Setup dependencies
+ List<Publication> relist = tag.getRelations(UsedByRelation.class);
+ for (Iterator<Publication> i=relist.iterator(); i.hasNext();) {
+ usedby.add(i.next());
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doVersion () {
+// -------------------------
+ if (action == ToDo.cancel) return "cancel";
+
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+// Getting user inputs
+ mystudy = getOpenStudy();
+ User user = getConnectedUser();
+ Step step = mystudy.getSelectedStep();
+ File updir = Database.getDownloadDirectory(user);
+ File upfile = new File(updir.getPath() + "/" + filename);
+
+// Versioning of the document
+ Document.Properties dprop = new Document.Properties();
+ Publication current = step.getDocument(Integer.valueOf(index));
+ Publication next;
+
+ if (docver.length() == 0) { // Importation of a foreign document
+ next = step.versionDocument(current, dprop.setAuthor(user).setDescription(summary));
+ updir = next.getSourceFile().asFile();
+ if (logger.isInfoEnabled()) logger.info("Moving \"" + upfile.getName() + "\" to \"" + updir.getPath() + "\".");
+ upfile.renameTo(updir);
+ try {
+ next.saveAs(state); // May throw FileNotFound if rename was not done
+ } catch (FileNotFoundException saverror) {
+ Thread.sleep(1000);
+ logger.info("Waiting for the file.");
+ upfile.renameTo(updir);
+ next.saveAs(state); // Forget it if throw again FileNotFound
+ }
+ } else {
+ if (date.length() > 0) {
+ ResourceBundle locale = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale());
+ SimpleDateFormat get = new SimpleDateFormat(locale.getString("date.format"));
+ dprop.setDate(get.parse(date));
+ }
+ next = step.versionDocument(current, dprop.setAuthor(user).setDescription(summary));
+ updir = next.getSourceFile().asFile();
+ if (logger.isInfoEnabled()) logger.info("Moving \"" + upfile.getName() + "\" to \"" + updir.getPath() + "\".");
+ upfile.renameTo(updir);
+ try {
+ next.saveAs(new Revision(docver));
+ } catch (FileNotFoundException saverror) {
+ Thread.sleep(1000);
+ logger.info("Waiting for the file.");
+ upfile.renameTo(updir);
+ next.saveAs(state);
+ }
+ }
+//TODO: Remove current document details from the contents of open study
+
+// Creation of uses relations
+ if (docuses != null) {
+ String[] list = docuses.split(",");
+ for (int i=0; i<list.length; i++) {
+ Integer index = Integer.valueOf(list[i].trim());
+ Publication used = getPublication(index);
+ next.addDependency(used);
+ }
+ }
+// Outdating impacted document
+ HashSet<Integer> compatible = new HashSet<Integer>();
+ if (docusedby != null) {
+ String[] list = docusedby.split(",");
+ for (int i=0; i<list.length; i++) compatible.add(Integer.valueOf(list[i].trim()));
+ }
+ List<Publication> relist = current.getRelations(UsedByRelation.class);
+ for (Iterator<Publication> i=relist.iterator(); i.hasNext();) {
+ Publication using = i.next();
+ if (!compatible.contains(using.getIndex())) using.outdate();
+ }
+// Update of the open study
+ mystudy.setSelection(mystudy.getSelection()); // Rebuilds the presentation
+//TODO: Look is an optimization is possible (for example by updating the presentation of versioned document)
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (FileNotFoundException error) {
+ logger.error("Reason:", error);
+ setErrorCode("import.file");
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ setErrorCode("internal");
+ }
+ if (transax != null && transax.isActive()) {
+// Second try-catch as the rollback could fail as well
+ try {
+ transax.rollback();
+ } catch (HibernateException backerror) {
+ logger.debug("Error rolling back transaction", backerror);
+ }
+ }
+ return ERROR;
+ }
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public String getDate () {
+// ------------------------
+ return date;
+ }
+ public List<Publication> getDependencies () {
+// -------------------------------------------
+ return usedby;
+ }
+ public String getDescription () {
+// -------------------------------
+ return summary;
+ }
+ public String getIndex () {
+// -------------------------
+ return index;
+ }
+ public String getVersion () {
+// ---------------------------
+ return docver;
+ }
+
+ public void setDate (String date) {
+// ---------------------------------
+ this.date = date;
+ }
+ public void setDefaultDescription (String summary) {
+// --------------------------------------------------
+ if (this.summary == null) this.summary = summary;
+ }
+ public void setDescription (String summary) {
+// -------------------------------------------
+ this.summary = summary;
+ }
+ public void setIndex (String index) {
+// -----------------------------------
+ this.index = index;
+ }
+ public void setUsedBy (String list) {
+// -----------------------------------
+ this.docusedby = list;
+ }
+ public void setVersion (String value) {
+// -------------------------------------
+ this.docver = value;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import java.util.List;
+import java.util.Map;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.simer.Action;
+import org.splat.som.Database;
+import org.splat.som.Study;
+
+
+public class DatabaseIndexingAction extends Action {
+
+ private List<ImportedStudy> newstudies;
+ private String indices;
+
+ private static final long serialVersionUID = 4194268823457749655L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+
+ newstudies = ImportedStudy.selectAll();
+ indices = "";
+
+ transax.commit();
+ return SUCCESS;
+ }
+
+ public String doIndexing () {
+// ---------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ String[] ridlist = indices.split(",");
+ @SuppressWarnings("unchecked")
+ Map<String, Object> filter = (Map<String, Object>)getSession().get("study.filter");
+
+ for (int i=0; i<ridlist.length; i++) {
+ int index = Integer.valueOf(ridlist[i].trim());
+ Study study = Database.selectStudy(index);
+ Database.indexStudy(study);
+ }
+ filter.put("owner", "all"); // Just in case of 1st study search
+
+ transax.commit();
+ return SUCCESS;
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public List<ImportedStudy> getNewStudies () {
+// -------------------------------------------
+ return newstudies;
+ }
+ public String getIndices () {
+// ---------------------------
+ return indices;
+ }
+
+ public void setIndices (String indices) {
+// ---------------------------------------
+ this.indices = indices;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.splat.kernel.User;
+import org.splat.kernel.UserDirectory;
+import org.splat.simer.UploadBaseNextAction;
+import org.splat.som.Database;
+
+
+public class ImportUserAction extends UploadBaseNextAction {
+
+ private List<User> users;
+ private Set<User> newsers;
+
+ private static final long serialVersionUID = 1516715800624817965L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doImport () {
+// -------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ User user = getConnectedUser(); // The database administrator
+ File updir = Database.getDownloadDirectory(user);
+ File upfile = new File(updir.getPath() + "/" + filename);
+
+ newsers = UserDirectory.importUsers(upfile);
+ users = UserDirectory.selectAllUsers();
+ for (Iterator<User> i=users.iterator(); i.hasNext(); ) {
+ User next = i.next();
+ if (!next.equals(user)) continue;
+ i.remove(); // Just for not showing the corresponding reserved username
+ break;
+ }
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+ return ERROR;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public List<User> getUsers () {
+// -----------------------------
+ return users;
+ }
+
+ public boolean isNew (User user) {
+// --------------------------------
+ return newsers.contains(user);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hibernate.Session;
+import org.hibernate.jdbc.Work;
+import org.splat.som.Database;
+import org.splat.som.Study;
+
+
+public class ImportedStudy {
+
+ private int rid;
+ private String sid;
+ private String title;
+
+ protected static class SelectStudies implements Work {
+// ----------------------------------------------------
+
+ private List<ImportedStudy> table = new ArrayList<ImportedStudy>();
+
+ public void execute (Connection connex) throws SQLException
+ {
+ Statement request = connex.createStatement();
+ String select = "SELECT rid,sid,title FROM study";
+ ResultSet result = request.executeQuery(select);
+ Study.Properties sprop = new Study.Properties();
+
+ while (result.next()) {
+ int rid = result.getInt("rid");
+ String sid = result.getString("sid");
+ String title = result.getString("title");
+ try {
+ sprop.clear();
+ if (Database.selectStudiesWhere(sprop.setReference(sid)).size() != 0) continue;
+ } catch (Exception error) {
+ continue;
+ }
+ table.add( new ImportedStudy(rid, sid, title) );
+ }
+ }
+ public List<ImportedStudy> getResult ()
+ {
+ return table;
+ }
+ }
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public ImportedStudy (int rid, String sid, String title) {
+// --------------------------------------------------------
+ this.rid = rid;
+ this.sid = sid;
+ this.title = title;
+ }
+
+// ==============================================================================================================================
+// Public member functions
+// ==============================================================================================================================
+
+ public int getIndex () {
+// ----------------------
+ return rid;
+ }
+ public String getReference () {
+// -----------------------------
+ return sid;
+ }
+ public String getTitle () {
+// -------------------------
+ return title;
+ }
+
+// ==============================================================================================================================
+// Public services
+// ==============================================================================================================================
+
+ public static List<ImportedStudy> selectAll () {
+// ----------------------------------------------
+ Session session = Database.getSession();
+ SelectStudies query = new SelectStudies();
+ session.doWork(query);
+
+ return query.getResult();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import org.splat.simer.Action;
+
+
+public class KnowledgeElementAction extends Action {
+
+ private static final long serialVersionUID = 2416672950671183384L;
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ return SUCCESS;
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Scenario;
+import org.splat.som.Study;
+
+
+public class ProjectElementFacade {
+
+ private int index; // For checking the equality between ProjectElementFacade objects
+ private Study my;
+ private String subtitle;
+ private String step;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public ProjectElementFacade (Study represented, ProjectSettings.Step at) {
+// ------------------------------------------------------------------------
+ index = represented.getIndex(); // The index of scenarios AND studies are unique
+ my = represented;
+ subtitle = "";
+ step = "0." + at.getNumber();
+ }
+ public ProjectElementFacade (Scenario represented, ProjectSettings.Step at) {
+// ---------------------------------------------------------------------------
+ index = represented.getIndex(); // The index of scenarios AND studies are unique
+ my = represented.getOwnerStudy();
+ subtitle = ", " + represented.getTitle();
+ step = String.valueOf(index) + "." + at.getNumber();
+ }
+
+// ==============================================================================================================================
+// Services for not duplicating Study facades into a Set
+// ==============================================================================================================================
+
+ public boolean equals (Object other) {
+// ------------------------------------
+ return (this.hashCode() == other.hashCode());
+ }
+ public int hashCode () {
+// ----------------------
+ return index;
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getAuthorName () {
+// ------------------------------
+ return my.getAuthor().getDisplayName();
+ }
+ public ProgressState getProgressState () {
+// ----------------------------------------
+ return my.getProgressState();
+ }
+ public String getReference () {
+// -----------------------------
+ return my.getReference();
+ }
+ public String getSelection () {
+// -----------------------------
+ return step;
+ }
+ public String getStudyIndex () {
+// ------------------------------
+ return String.valueOf(my.getIndex());
+ }
+ public String getTitle () {
+// -------------------------
+ return my.getTitle() + subtitle;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.Set;
+import java.util.Vector;
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+import org.splat.simer.Action;
+import org.splat.simer.ApplicationSettings;
+import org.splat.som.Database;
+import org.splat.som.KnowledgeElement;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.Proxy;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+import org.splat.som.Study;
+
+
+public class SimulationContextAction extends Action {
+
+ private List<SimulationContextFacade> tocheck; // Simulation contexts to be approved
+ private int selection; // Index of the selected simulation context presented in the approval form
+ private SimulationContext edition; // Corresponding simulation context object
+ private ProjectSettings.Step step; // Study step to which the selected simulation context is attached
+ private Set<ProjectElementFacade> owner; // Study scenarios indexed by this simulation context
+ private List<LocalizedContextTypes> existype; // Existing approved simulation context types ordered by localized names
+ private List<SimulationContextType> exisname; // Existing approved simulation context types ordered by internal codes
+ private List<SimulationContext> existing; // Existing simulation contexts of selected type
+
+ private static final long serialVersionUID = 7083323229359094699L;
+
+ private class ContextNameComparator implements Comparator<SimulationContextType> {
+// ---------------------------------------------------------------------------------
+ public int compare(SimulationContextType t1, SimulationContextType t2)
+ {
+ String name1 = t1.getName();
+ String name2 = t2.getName();
+
+ return name1.compareToIgnoreCase(name2);
+ }
+ }
+
+ public class LocalizedContextTypes {
+// ----------------------------------
+ private Locale locale;
+ private List<String> sortype; // Existing approved simulation context types ordered by localized names
+
+ public LocalizedContextTypes (List<SimulationContextType> types, Locale lang)
+ {
+ ResourceBundle bundle = ResourceBundle.getBundle("som", lang);
+ SimulationContextType[] tosort = types.toArray( new SimulationContextType[types.size()] );
+ String[] name = new String[types.size()];
+
+ for (int i=0; i<name.length; i++) name[i] = bundle.getString("type.context." + tosort[i].getName());
+ Arrays.sort(name);
+ sortype = Arrays.asList(name);
+ locale = lang;
+ }
+ public String getLocale ()
+ {
+ return locale.toString();
+ }
+ public List<String> getTypeNames ()
+ {
+ return sortype;
+ }
+ public boolean isCurrent ()
+ {
+ return (locale.equals(ApplicationSettings.getCurrentLocale()));
+ }
+ }
+
+// ==============================================================================================================================
+// Action methods
+// ==============================================================================================================================
+
+ public String doInitialize () {
+// -----------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ List<SimulationContext> context = Database.selectSimulationContextsWhere(cprop.setState(ProgressState.inCHECK));
+
+ tocheck = new Vector<SimulationContextFacade>(context.size());
+ for (Iterator<SimulationContext> i=context.iterator(); i.hasNext(); ) {
+ tocheck.add( new SimulationContextFacade(i.next()) );
+ }
+ selection = 0;
+ edition = null;
+ owner = null;
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR; // No need to roll-back the transaction as it is read-only
+ }
+ }
+
+ public String doSelect () {
+// -------------------------
+ Session connex = Database.getSession();
+ Transaction transax = connex.beginTransaction();
+ try {
+ SimulationContext.Properties cprop = new SimulationContext.Properties();
+ List<SimulationContext> context = Database.selectSimulationContextsWhere(cprop.setState(ProgressState.inCHECK));
+ List<SimulationContext> selected = new ArrayList<SimulationContext>(1);
+
+ tocheck = new Vector<SimulationContextFacade>(context.size());
+ for (Iterator<SimulationContext> i=context.iterator(); i.hasNext(); ) {
+ SimulationContext next = i.next();
+ if (next.getIndex() == selection) {
+ edition = next;
+ selected.add(edition);
+ }
+ tocheck.add( new SimulationContextFacade(next) );
+ }
+ KnowledgeElement.Properties kprop = new KnowledgeElement.Properties();
+ List<Proxy> kelm = Database.selectKnowledgeElementsWhere(kprop.setSimulationContexts(selected).setState(ProgressState.inWORK));
+
+ step = edition.getType().getAttachedStep();
+ owner = new HashSet<ProjectElementFacade>();
+ for (Iterator<Proxy> i=kelm.iterator(); i.hasNext(); ) {
+ KnowledgeElement next = Database.selectKnowledgeElement(i.next().getIndex());
+ ProjectElementFacade facade;
+ if (step.appliesTo(Study.class)) facade = new ProjectElementFacade(next.getOwnerScenario().getOwnerStudy(), step);
+ else facade = new ProjectElementFacade(next.getOwnerScenario(), step);
+ owner.add(facade);
+ }
+ SimulationContextType.Properties sprop = new SimulationContextType.Properties();
+ List<SimulationContextType> types = SimulationContext.selectTypesWhere(sprop.setState(ProgressState.APPROVED));
+ Locale[] support = ApplicationSettings.getSupportedLocales();
+
+// Sort localized type names
+ existype = new ArrayList<LocalizedContextTypes>(support.length);
+ for (int i=0; i<support.length; i++) {
+ existype.add( new LocalizedContextTypes(types, support[i]) );
+ }
+ SimulationContextType[] names = types.toArray( new SimulationContextType[types.size()] );
+
+ Arrays.sort(names, new ContextNameComparator() );
+ exisname = Arrays.asList(names);
+
+ existing = Database.selectSimulationContextsWhere(cprop.setType(edition.getType()).setState(ProgressState.APPROVED));
+
+ transax.commit();
+ return SUCCESS;
+ }
+ catch (Exception error) {
+ logger.error("Reason:", error);
+ return ERROR; // No need to roll-back the transaction as it is read-only
+ }
+ }
+
+// ==============================================================================================================================
+// Getters and setters
+// ==============================================================================================================================
+
+ public List<ProjectSettings.Step> getAllStudySteps () {
+// -----------------------------------------------------
+ return ProjectSettings.getAllSteps();
+ }
+ public ProjectSettings.Step getAttachedStep () {
+// ----------------------------------------------
+ return step;
+ }
+ public List<SimulationContextFacade> getContextsToBeApproved () {
+// ---------------------------------------------------------------
+ return tocheck;
+ }
+ public SimulationContext getEdited () {
+// -------------------------------------
+ return edition;
+ }
+ public List<SimulationContext> getExistingContexts () {
+// -----------------------------------------------------
+ return existing;
+ }
+ public List<SimulationContextType> getExistingNames () {
+// ------------------------------------------------------
+ return exisname;
+ }
+ public List<LocalizedContextTypes> getSupportedLocales () {
+// ---------------------------------------------------------
+ return existype;
+ }
+ public Set<ProjectElementFacade> getIndexedElements () {
+// ------------------------------------------------------
+ return owner;
+ }
+ public int getSelection () {
+// --------------------------
+ return selection;
+ }
+
+ public void setSelection (String index) {
+// ---------------------------------------
+ selection = Integer.valueOf(index);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.simer.admin;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import org.splat.simer.ApplicationSettings;
+import org.splat.som.ProgressState;
+import org.splat.som.ProjectSettings;
+import org.splat.som.SimulationContext;
+import org.splat.som.SimulationContextType;
+
+
+public class SimulationContextFacade {
+
+ private SimulationContext my;
+ private String name;
+ private int at;
+ private ProgressState state;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public SimulationContextFacade (SimulationContext represented) {
+// --------------------------------------------------------------
+ List<ProjectSettings.Step> steps = ProjectSettings.getAllSteps();
+ SimulationContextType mytype;
+
+ my = represented;
+ mytype = my.getType();
+ for (Iterator<ProjectSettings.Step> i=steps.iterator(); i.hasNext(); ) {
+ ProjectSettings.Step step = i.next();
+ if (!mytype.isAttachedTo(step)) continue;
+ at = step.getNumber(); // There is no direct service for getting the step number
+ break;
+ }
+ name = my.getType().getName();
+ if (mytype.isApproved()) {
+ state = ProgressState.inCHECK;
+ name = ResourceBundle.getBundle("som", ApplicationSettings.getCurrentLocale()).getString("type.context." + name);
+ } else {
+ state = ProgressState.inDRAFT;
+ }
+ }
+
+// ==============================================================================================================================
+// Getters
+// ==============================================================================================================================
+
+ public String getEditIcon () {
+// ----------------------------
+ StringBuffer result = new StringBuffer("icon.ed").append(state).append(".png");
+ return result.toString();
+ }
+ public String getIndex () {
+// -------------------------
+ return String.valueOf(my.getIndex());
+ }
+ public int getStepNumber () {
+// ---------------------------
+ return at;
+ }
+ public String getTypeName () {
+// ----------------------------
+ return name;
+ }
+ public String getValue () {
+// -------------------------
+ return my.getValue();
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+/**
+ * Abstract class implementing the base services of contextual menu such as popup-menus and tool-bars.
+ *
+ * @see Menu
+ * @author Daniel Brunier-Coulin
+ */
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Vector;
+
+
+public abstract class ContextualMenu {
+
+ protected int width;
+ protected int height;
+ protected HashMap<String,Object> context;
+ protected List<ContextualItem> items; // Instead of HashMap for being able to see ContextualMenu objects as Lists
+ protected HashMap<String,Integer> indices; // Indices of ContextualItem objects into items
+
+ private enum Side { Client, Server }; // Side of action execution
+ protected static class ContextualItem {
+// -------------------------------------
+ private String myname;
+ private ContextualMenu owner;
+ private Side execute;
+ protected int width = 0;
+ protected int height = 0;
+ protected String myurl = null;
+ protected String myicon = null;
+ protected String mylabel = null; // Either menu item name or button tooltip
+ protected String confirm = null; // Either menu item confirmation message or button argument
+
+ public String getAction () {
+ return myurl; // Null if not enabled
+ }
+ public int getHeight () {
+ return height;
+ }
+ public String getIcon () {
+ return myicon;
+ }
+ public int getWidth () {
+ return width;
+ }
+ public boolean isSeparator () {
+ return (mylabel == null && myicon == null);
+ }
+ public void setAction (String url) { // Enables the item
+ myurl = url;
+ if (url.endsWith(")")) execute = Side.Client; // JavaScript function
+ else execute = Side.Server; // URL
+ }
+ public Boolean isClientSide () {
+ if (myurl != null) return (execute == Side.Client);
+ return null;
+ }
+ public boolean isEnabled () {
+ return owner.isEnabled(myname); // Delegation to overridden function
+ }
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ protected ContextualMenu () {
+// ---------------------------
+ context = new HashMap<String,Object>();
+ items = new Vector<ContextualItem>();
+ indices = new HashMap<String,Integer>();
+ }
+ protected void addItem (String name, ContextualItem item) {
+// ---------------------------------------------------------
+ indices.put(name, items.size());
+ items.add(item);
+ item.myname = name; // Just for delegating isEnabled
+ item.owner = this;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public int getHeight () {
+// -----------------------
+ return height;
+ }
+
+ public int getWidth () {
+// ----------------------
+ return width;
+ }
+
+ public boolean isEmpty () {
+// -------------------------
+ return (items.size() == 0);
+ }
+
+ public boolean isEnabled (String name) {
+// --------------------------------------
+ return (items.get(indices.get(name)).getAction() != null);
+ }
+
+ public void resetContext (String name) {
+// --------------------------------------
+ this.context.remove(name);
+ }
+
+ public void setContext (String name, Object context) {
+// ----------------------------------------------------
+ this.context.put(name, context);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+import java.io.Serializable;
+
+
+public class Item implements Serializable {
+
+ private String mylabel;
+ private String myicon;
+ private String myurl;
+ private boolean selected = false;
+
+ private static final long serialVersionUID = -3505572710372809913L;
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public Item (String label) {
+// -------------------------
+ mylabel = label;
+ myicon = null;
+ myurl = null;
+ }
+ public Item (String label, String url) {
+// -------------------------------------
+ mylabel = label;
+ myicon = null;
+ myurl = url;
+ }
+ public Item (String label, String icon, String url) {
+// ---------------------------------------------------
+ mylabel = label;
+ myicon = icon;
+ myurl = url;
+ }
+ public Item action (String url) {
+// -------------------------------
+ myurl = url;
+ return this;
+ }
+ public Item icon (String icon) {
+// ------------------------------
+ myicon = icon;
+ return this;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public String getAction () {
+// --------------------------
+ return myurl; // Null if not enabled
+ }
+
+ public String getIcon () {
+// ------------------------
+ return myicon;
+ }
+
+ public String getLabel () {
+// -------------------------
+ return mylabel;
+ }
+
+ public boolean isEnabled () {
+// ---------------------------
+ return (myurl != null);
+ }
+
+ public boolean isSelected () {
+// ----------------------------
+ return selected;
+ }
+
+ protected void select () {
+// ------------------------
+ selected = true;
+ }
+
+ protected void unselect () {
+// --------------------------
+ selected = false;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+/**
+ * Base abstract class defining the minimal services for implementing menus.<br/>
+ * A menu is an ordered list of named menu-items. Each menu-item is made of:
+ * <ul>
+ * <li>A non localized label (a key into a locale file)</li>
+ * <li>Optionally, an icon (an image file name)</li>
+ * <li>A command to be executed when selecting this menu-item</li>
+ * </ul>
+ * On the contrary of PopupMenus, Menus are not contextual, that is, their items are always active, and can keep the user
+ * selection.<br/>
+ * After its creation, a menu is in Unselected state - the getSelection() method returns null. The user selection is then
+ * set (and changed) by the name of its corresponding menu-item, thus making getSelection() returning this name.<br/>
+ * <br/>
+ * The commands of menu-items are in an application-dependent format. They can be undefined, for example in a demonstration
+ * version of the application, making the corresponding menu-items disabled.<br/>
+ * <br/>
+ * Menus are visible by the application as Lists (from java.util) for allowing their display.
+ *
+ * @see MenuItem
+ * @see ContextualMenu
+ * @author Daniel Brunier-Coulin
+ */
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Vector;
+
+
+public abstract class Menu {
+
+ private String myname;
+ private String myscope;
+ protected Vector<MenuItem> menu; // For making the menu visible as a list of MenuItems
+ protected HashMap<String,Integer> indices; // Indices of MenuItem objects into this menu
+ protected HashMap<String,String> disabled; // Actions of disabled item
+ protected String selection = null;
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ protected Menu (String name) {
+// ----------------------------
+ myname = name;
+ myscope = "/";
+ menu = new Vector<MenuItem>();
+ indices = new HashMap<String,Integer>();
+ disabled = new HashMap<String,String>();
+ }
+ protected Menu (String name, String scope) {
+// ------------------------------------------
+ myname = name;
+ myscope = "/" + scope;
+ menu = new Vector<MenuItem>();
+ indices = new HashMap<String,Integer>();
+ disabled = new HashMap<String,String>();
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+/**
+ * Adds an item to this menu.
+ * @param name the name of the item added to this menu
+ * @param item the added item
+ */
+ public void addItem (String name, MenuItem item) {
+// ------------------------------------------------
+ indices.put(name, menu.size());
+ menu.add(item);
+ }
+/**
+ * Returns the list of items of this menu.
+ * @return the list of items of this menu.
+ */
+ public List<MenuItem> asList () {
+// -------------------------------
+ return menu;
+ }
+/**
+ * Disables the menu item of given name.
+ * @param name the name of the item
+ */
+ public void disables (String name) {
+// ----------------------------------
+ String action = disabled.get(name);
+ MenuItem item = menu.get(indices.get(name));
+
+ if (action != null) return; // Item already disabled
+ disabled.put(name, item.getAction()); // Saves the current action for latter enabling
+ item.action(null);
+ }
+/**
+ * Enables the menu item of given name, if previously disabled.
+ * @param name the name of the item
+ */
+ public void enables (String name) {
+// ---------------------------------
+ String action = disabled.get(name);
+ MenuItem item = menu.get(indices.get(name));
+
+ if (action == null) return; // Item not previously disabled
+ disabled.remove(name);
+ item.action(action);
+ }
+/**
+ * Returns the name of this menu.
+ * @return the name of this menu.
+ */
+ public String getName () {
+// ------------------------
+ return myname;
+ }
+/**
+ * Returns the namespace of this menu.
+ * @return the namespace of this menu.
+ */
+ public String getNamespace () {
+// -----------------------------
+ return myscope;
+ }
+/**
+ * Returns the currently selected item of this menu previously set by selects().
+ * @return the currently selected item of this menu.
+ */
+ public MenuItem getSelectedItem () {
+// ----------------------------------
+ return menu.get(indices.get(selection));
+ }
+/**
+ * Returns the name of the currently selected item of this menu previously set by selects().
+ * If no item selected, returns null.
+ * @return the name of the currently selected item of this menu.
+ */
+ public String getSelection () {
+// -----------------------------
+ return selection; // May be null
+ }
+/**
+ * Sets the given menu-item as selected.
+ * @param name the name of the selected menu-item.
+ */
+ public void selects (String name) {
+// ---------------------------------
+ Integer newdex = indices.get(name);
+
+ if (selection != null) menu.get(indices.get(selection)).unselect();
+ if (newdex == null) return;
+ menu.get(newdex).select();
+ selection = name;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+
+public class MenuItem extends Item {
+
+ private static final long serialVersionUID = 1002251657309138413L;
+
+ protected static class Group extends MenuItem {
+// ---------------------------------------------
+ private boolean open = false;
+ private static final long serialVersionUID = 8319750643667219000L;
+
+ protected Group (String label) { super(label); }
+ protected Group (String label, String icon, String url) { super(label, icon, url); }
+
+ public boolean isOpen () { return open; }
+ public void open () { open = true; }
+ }
+ protected static class SubItem extends MenuItem {
+// -----------------------------------------------
+ private static final long serialVersionUID = -4793172296421132566L;
+
+ protected SubItem (String label) { super(label); }
+ protected SubItem (String label, String icon, String url) { super(label, icon, url); }
+ }
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ public MenuItem (String label) {
+// ------------------------------
+ super(label);
+ }
+ public MenuItem (String label, String icon, String url) {
+// -------------------------------------------------------
+ super(label, url);
+ this.icon(icon);
+ }
+ public MenuItem action (String url) {
+// -----------------------------------
+ super.action(url);
+ return this;
+ }
+ public MenuItem icon (String icon) {
+// ----------------------------------
+ super.icon(icon);
+ return this;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public boolean isGroup () {
+// -------------------------
+ return (this instanceof Group);
+ }
+
+ public boolean isOpen () {
+// ------------------------
+ return false; // Redefined in the Group subclass
+ }
+
+ public boolean isSubItem () {
+// ---------------------------
+ return (this instanceof SubItem);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+
+public class PopupItem extends ContextualMenu.ContextualItem {
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ protected PopupItem () {
+// ----------------------
+// myicon = "image.hr.png";
+ }
+ public PopupItem (String label) {
+// -------------------------------
+ mylabel = label;
+ myicon = "image.hold.gif"; // Default icon
+ }
+// Optional attributes
+ public PopupItem action (String url) { // Enables the item
+// --------------------------------------
+ this.setAction(url);
+ return this;
+ }
+ public PopupItem confirmation (String message) {
+// ----------------------------------------------
+ confirm = message;
+ return this;
+ }
+ public PopupItem icon (String icon) {
+// -----------------------------------
+ myicon = icon;
+ return this;
+ }
+ public PopupItem rename (String label) {
+// --------------------------------------
+ mylabel = label;
+ return this;
+ }
+
+// ==============================================================================================================================
+// PopupItem specific getters
+// ==============================================================================================================================
+
+ public String getConfirmationMessage () {
+// ---------------------------------------
+ return confirm; // Null if does not need any confirmation
+ }
+ public String getLabel () {
+// ------------------------
+ return mylabel; // Null if this is a separator
+ }
+ public boolean needConfirmation () {
+// ----------------------------------
+ return (confirm != null);
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+import java.util.List;
+
+
+public class PopupMenu extends ContextualMenu {
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public PopupMenu () {
+// -------------------
+ width = 186; // Includes borders (2px) and shadow (4px)
+ height = 2; // Top and bottom border
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public void addItem (String name, PopupItem item) {
+// -------------------------------------------------
+ item.width = 180;
+ item.height = 22; // Height of image.selected.png background image
+ this.height += item.height;
+ super.addItem(name, item);
+ }
+
+ public void addSeparator () {
+// ---------------------------
+ PopupItem item = new PopupItem();
+ item.width = 180;
+ item.height = 8;
+ this.height += item.height;
+ super.addItem("", item);
+ }
+
+ @SuppressWarnings({"rawtypes","unchecked"})
+ public List<PopupItem> asList () {
+// --------------------------------
+ return (List)items;
+ }
+
+ public PopupItem item (String name) {
+// -----------------------------------
+ return (PopupItem)items.get(indices.get(name));
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+
+public class SimpleMenu extends Menu {
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public SimpleMenu (String name) {
+// -------------------------------
+ super(name);
+ }
+ public SimpleMenu (String name, String scope) {
+// ---------------------------------------------
+ super(name, scope);
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public void addItem (String name, String label, String icon, String url) {
+// ------------------------------------------------------------------------
+ this.addItem(name, new MenuItem(label,icon,url) );
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+import org.splat.wapp.MenuItem.Group;
+
+/**
+ * Abstract subclass implementing the base services of two levels menus.
+ * SlidMenus are supposed (but not necessarily) behaving as follows:
+ * <ul>
+ * <li>Only one first-level menu-item is open at a time</li>
+ * <li>When selecting a closed first-level item, the actual open one, if exist, is closed before opening the new selected one,
+ * making first-level items "sliding"</li>
+ * </ul>
+ * The SlidMenu is implemented as an ordered flat list of named menu-items of type first-level, so called Group,
+ * and second-level, or SubItem (these both latter are subclasses of MenuItem). SubItems must follow in the list the Group
+ * to which they belong. A first-level item can also be empty (not containing any SubItem), so simply called Item.<br/>
+ * <br/>
+ * As such, a SlidMenu is built by calling, in the appropriate order, addItem(), addGroup() and addSubItem(). As any menu,
+ * after its creation, a SlidMenu is in Unselected state. The user selection is then set (and changed) by the name of its
+ * corresponding menu-item through the selects() function.<br/>
+ * One additional function, clear(), allows concrete subclasses of this abstract class to empty the menu before
+ * rebuilding it following a user selection in the implementation of the overridden selects() function.
+ *
+ * @author Daniel Brunier-Coulin
+ */
+abstract public class SlidMenu extends Menu {
+
+// ==============================================================================================================================
+// Constructors
+// ==============================================================================================================================
+
+ public SlidMenu (String name) {
+// -----------------------------
+ super(name);
+ }
+ public SlidMenu (String name, String scope) {
+// -------------------------------------------
+ super(name, scope);
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public void addGroup (String name, String label, String icon, String url) {
+// -------------------------------------------------------------------------
+ this.addItem(name, new MenuItem.Group(label,icon,url) );
+ }
+
+ public void addItem (String name, String label, String icon, String url) {
+// ------------------------------------------------------------------------
+ this.addItem(name, new MenuItem(label,icon,url) );
+ }
+
+ public void addSubItem (String name, String label, String icon, String url) {
+// ---------------------------------------------------------------------------
+ MenuItem last = menu.lastElement();
+ if (last instanceof Group) ((Group)last).open();
+
+ this.addItem(name, new MenuItem.SubItem(label,icon,url) );
+ }
+
+// ==============================================================================================================================
+// Protected services
+// ==============================================================================================================================
+
+ protected void clear () {
+// -----------------------
+ menu.clear();
+ indices.clear();
+ selection = null;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Vector;
+
+
+public class TabBar implements Serializable {
+
+ protected Vector<Item> menu; // For making the menu visible as a list of MenuItems
+ protected HashMap<String,Integer> indices; // Indices of MenuItem objects into this menu
+ protected HashMap<String,String> disabled; // Actions of disabled item
+ protected String selection;
+
+ private static final long serialVersionUID = 1851786085512439549L;
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public TabBar () {
+// ----------------
+ menu = new Vector<Item>();
+ indices = new HashMap<String,Integer>();
+ disabled = new HashMap<String,String>();
+ selection = null;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+/**
+ * Adds an item to this tab-bar.
+ * @param name the name of the item added to this bar.
+ * @param item the added item
+ */
+ public void addItem (String name, String url) {
+// ---------------------------------------------
+ indices.put(name, menu.size());
+ menu.add( new Item(name, url) );
+ }
+
+/**
+ * Returns the list of items of this tab-bar.
+ * @return the list of items of this bar.
+ */
+ public List<Item> asList () {
+// ---------------------------
+ return menu;
+ }
+
+/**
+ * Disables the item of given name.
+ * @param name the name of the item.
+ */
+ public void disables (String name) {
+// ----------------------------------
+ String action = disabled.get(name);
+ Item item = menu.get(indices.get(name));
+
+ if (action != null) return; // Item already disabled
+ disabled.put(name, item.getAction()); // Saves the current action for latter enabling
+ item.action(null);
+ }
+
+/**
+ * Enables the item of given name, if previously disabled.
+ * @param name the name of the item.
+ */
+ public void enables (String name) {
+// ---------------------------------
+ String action = disabled.get(name);
+ Item item = menu.get(indices.get(name));
+
+ if (action == null) return; // Item not previously disabled
+ disabled.remove(name);
+ item.action(action);
+ }
+
+/**
+ * Returns the name of the currently selected item of this menu previously set by selects().
+ * If no item selected, returns null.
+ * @return the name of the currently selected item of this menu.
+ */
+ public String getSelection () {
+// -----------------------------
+ return selection; // May be null
+ }
+
+/**
+ * Sets the given menu-item as selected.
+ * @param name the name of the selected menu-item.
+ */
+ public void selects (String name) {
+// ---------------------------------
+ Integer newdex = indices.get(name);
+
+ if (selection != null) menu.get(indices.get(selection)).unselect();
+ if (newdex == null) return;
+ menu.get(newdex).select();
+ selection = name;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+import java.util.List;
+
+
+public class ToolBar extends ContextualMenu {
+
+// ==============================================================================================================================
+// Constructor
+// ==============================================================================================================================
+
+ public ToolBar (int size) {
+// -------------------------
+ width = 0;
+ height = size;
+ }
+
+// ==============================================================================================================================
+// Member functions
+// ==============================================================================================================================
+
+ public void addTool (String name, String icon, String command) {
+// --------------------------------------------------------------
+ addTool(name, new ToolButton(icon).action(command) );
+ }
+
+ public void addTool (String name, String icon, String command, String arg) {
+// --------------------------------------------------------------------------
+ addTool(name, new ToolButton(icon).action(command).argument(arg) );
+ }
+
+ public void addTool (String name, String icon, String tip, String command, String arg) {
+// --------------------------------------------------------------------------------------
+ addTool(name, new ToolButton(icon).tooltip(tip).action(command).argument(arg) );
+ }
+
+ public void addTool (String name, ToolButton item) {
+// --------------------------------------------------
+ item.width = this.height;
+ item.height = this.height;
+ this.width += item.width;
+ if (!this.isEmpty()) width += 6; // Gap between icons
+ super.addItem(name, item);
+ }
+
+ public void addSeparator () {
+// ---------------------------
+ width += 6;
+ super.addItem("", new ToolButton());
+ }
+
+ @SuppressWarnings({"rawtypes","unchecked"})
+ public List<ToolButton> asList () {
+// ---------------------------------
+ return (List)items;
+ }
+
+ public ToolButton item (String name) {
+// ------------------------------------
+ return (ToolButton)items.get(indices.get(name));
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.splat.wapp;
+
+
+public class ToolButton extends ContextualMenu.ContextualItem {
+
+// ==============================================================================================================================
+// Construction
+// ==============================================================================================================================
+
+ protected ToolButton () {
+// -----------------------
+// myicon = "image.hr.png";
+ }
+ public ToolButton (String icon) {
+// -------------------------------
+ myicon = icon;
+ }
+// Optional attributes
+ public ToolButton action (String url) { // Enables the item
+// -------------------------------------
+ this.setAction(url);
+ return this;
+ }
+ public ToolButton argument (String arg) { // In case of tool-bar button only
+// ---------------------------------------
+ confirm = arg;
+ return this;
+ }
+ public ToolButton tooltip (String name) {
+// -----------------------------------------
+ mylabel = name;
+ return this;
+ }
+
+// ==============================================================================================================================
+// ToolButton specific getters
+// ==============================================================================================================================
+
+ public String getArgument () {
+// ----------------------------
+ return confirm; // Null if does no argument
+ }
+ public String getTooltip () { // Null if this is a separator
+// ---------------------------
+ return mylabel;
+ }
+}
\ No newline at end of file
--- /dev/null
+schema.version = D-0.3
+
+wapp.version = D-0.5
+wapp.root = D:/users/rkv/SIMAN/Workspace/Siman/WebContent/
+wapp.login = conf/login.conf
+wapp.configuration = conf/som.xml
+wapp.customization = conf/my.xml
+wapp.website = http://www.salome-platform.org
+wapp.onlinehelp = http://docs.salome-platform.org/salome_6_3_1/gui/GUI_index.html
+wapp.context = repository
+
+locale.supported = fr,en
\ No newline at end of file
--- /dev/null
+schema.version = D-0.3
+
+wapp.version = D-0.5
+wapp.root = D:/users/rkv/SIMAN/Workspace/Siman/WebContent/
+wapp.login = conf/login.conf
+wapp.configuration = conf/som.xml
+wapp.customization = conf/my.xml
+wapp.website = http://www.salome-platform.org
+wapp.onlinehelp = http://docs.salome-platform.org/salome_6_3_1/gui/GUI_index.html
+wapp.context = repository
+
+locale.supported = fr,en
\ No newline at end of file
--- /dev/null
+name.module = Centre d''études
+
+size.format = #,##0 Ko
+date.format = dd/MM/yyyy
+dd/MM/yyyy = jj/mm/aaaa
+
+menu.step.1 = Spécifier l''étude
+menu.step.2 = Concevoir le scénario
+menu.step.3 = Créer la géométrie
+menu.step.4 = Générer le modèle d''analyse
+menu.step.5 = Entrer les conditions de calcul
+menu.step.6 = Effectuer le calcul
+menu.step.7 = Analyser les résultats
+menu.step.8 = Capitaliser ce cas d''étude
+menu.step.9 = Finaliser l''étude
+
+folder.step.1 = Spécification de l''étude
+folder.step.2 = Description du scénario
+folder.step.3 = Géométrie
+folder.step.4 = Modèle d''analyse
+folder.step.5 = Conditions de calcul
+folder.step.6 = Schéma de calcul
+folder.step.7 = Résultats
+folder.step.8 = Élements de connaissances
+folder.step.9 = Rapport final
+
+type.document.requirements = Cahier des charges
+type.document.specification = Document de spécification
+type.document.design = Document de conception
+type.document.geometry = Géométrie
+type.document.model = Modèle d''analyse
+type.document.loads = Conditions de calcul
+type.document.script = Script d''exécution
+type.document.log = Log d''exécution
+type.document.results = Résultats de calcul
+type.document.report = Rapport final
+type.document.memorandum = Note technique
+type.document.minutes = Compte rendu
+
+type.context.customer = Client
+type.context.product = Produit
+type.context.phase = Phase du produit
+type.context.need = Besoin client
+type.context.purpose = Finalité de l''étude
+type.context.physic = Type de physique
+type.context.object = Objet étudié
+type.context.part = Objet modélisé
+type.context.geometry = Type de géométrie
+type.context.model = Type de modèle
+type.context.element = Type d''éléments
+type.context.shape = Géométrie des éléments
+type.context.order = Degré des éléments
+type.context.analysis = Type d''analyse
+type.context.platform = Plate-forme logicielle
+type.context.module = Module de calcul
+type.context.component = Brique technologique
+
+type.knowledge.bestpractice = Bonne pratique
+type.knowledge.limitation = Limitation
+type.knowledge.inconsistency = Incohérence
+type.knowledge.metrics = Métrique
+type.knowledge.improvement = Amélioration
+
+history.creation = Document créé par
\ No newline at end of file
--- /dev/null
+name.module = Study Manager
+
+size.format = #,##0 Kb
+date.format = MM.dd.yyyy
+MM.dd.yyyy = mm.dd.yyyy
+
+menu.step.1 = Specify the study
+menu.step.2 = Design the scenario
+menu.step.3 = Create the geometry
+menu.step.4 = Generate the analysis model
+menu.step.5 = Enter the boundary conditions
+menu.step.6 = Execute the calculation
+menu.step.7 = Analyze the results
+menu.step.8 = Capitalize this use-case
+menu.step.9 = Finalize the study
+
+folder.step.1 = Specification of the study
+folder.step.2 = Description of the scenario
+folder.step.3 = Geometry
+folder.step.4 = Analysis model
+folder.step.5 = Boundary conditions
+folder.step.6 = Calculation scheme
+folder.step.7 = Calculation results
+folder.step.8 = Knowledge elements
+folder.step.9 = Final report
+
+type.document.requirements = Customer requirements
+type.document.specification = Specification document
+type.document.design = Design document
+type.document.geometry = Geometry
+type.document.model = Analysis model
+type.document.loads = Boundary conditions
+type.document.script = Execution script
+type.document.log = Execution log
+type.document.results = Calculation results
+type.document.report = Final report
+type.document.memorandum = Technical report
+type.document.minutes = Minute meeting
+
+type.context.customer = Customer
+type.context.product = Product
+type.context.phase = Product phase
+type.context.need = Customer needs
+type.context.purpose = Purpose of study
+type.context.physic = Physics
+type.context.object = Studied object
+
+type.context.part = Modeled object
+type.context.geometry = Geometry type
+type.context.model = Type of analysis model
+type.context.element = Element type
+type.context.shape = Geometry of elements
+type.context.order = Order of elements
+type.context.analysis = Analysis type
+type.context.platform = Software platform
+type.context.module = Solver
+type.context.component = Software component
+
+type.knowledge.bestpractice = Best practice
+type.knowledge.limitation = Limitation
+type.knowledge.inconsistency = Inconsistency
+type.knowledge.metrics = Metrics
+type.knowledge.improvement = Improvement
+
+history.creation = Document created by
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+</beans>
+
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts PUBLIC
+ "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+ "http://struts.apache.org/dtds/struts-2.3.dtd">
+
+
+<struts>
+ <constant name="struts.objectFactory" value="spring" />
+ <constant name="struts.enable.DynamicMethodInvocation" value="false" />
+ <constant name="struts.devMode" value="true" />
+ <constant name="struts.custom.i18n.resources" value="labels,som" />
+ <constant name="struts.i18n.encoding" value="ISO-8859-1" />
+
+ <package name="simer-default" namespace="/" extends="struts-default">
+ </package>
+
+ <package name="default" namespace="/" extends="simer-default">
+
+ <default-action-ref name="index" />
+
+ <action name="index" class="org.splat.simer.StartAction" method="initialize">
+ <result name="success">/welcome.jsp</result>
+ <result name="error">/error.jsp?error=initialization</result>
+ </action>
+ <action name="login" class="org.splat.simer.ConnectionAction" method="login">
+ <result name="none">/home.jsp</result>
+ <result name="open" type="redirectAction">select?menu=search</result>
+ <result name="study" type="redirectAction">study/step-study</result>
+ <result name="knowledge" type="redirectAction">study/step-knowledge</result>
+ <result name="input">/login.jsp</result>
+ <result name="error">/home.jsp?error=login</result>
+ </action>
+ <action name="logout" class="org.splat.simer.ConnectionAction" method="logout">
+ <result name="none">/home.jsp</result>
+ <result name="create">/home.jsp</result>
+ <result name="open" type="redirectAction">select?menu=search</result>
+ <result name="study" type="redirectAction">study/step-study</result>
+ <result name="knowledge" type="redirectAction">study/step-knowledge</result>
+ <result name="datadmin">/home.jsp</result>
+ <result name="sysadmin">/home.jsp</result>
+ </action>
+ <action name="select" class="org.splat.simer.MenuAction" method="selectItem">
+ <result name="new-empty" type="redirectAction">study/new-empty</result>
+ <result name="search-study" type="redirectAction">study/search-study</result>
+ <result name="search-knowledge" type="redirectAction">study/search-knowledge</result>
+ <result name="search-document" type="redirectAction">study/search-document</result>
+ <result name="prop-general" type="redirectAction">study/prop-study</result>
+ <result name="prop-scenario" type="redirectAction">study/prop-scenario</result>
+ <result name="admin-indexing" type="redirectAction">sadmin/indexing</result>
+ <result name="admin-importuser" type="redirectAction">sadmin/select-file?nextAction=importuser</result>
+ <result name="admin-scontext" type="redirectAction">sadmin/scontext</result>
+ <result name="admin-knowelm" type="redirectAction">sadmin/knowlelm</result>
+ <result name="none">/menu.jsp?menu=%{menu}</result>
+ </action>
+
+ </package>
+
+ <package name="study" namespace="/study" extends="simer-default">
+
+ <action name="notyetimplemented" class="org.splat.simer.NotYetImplementedAction" method="initialize">
+ <result name="success">/study/error.jsp?message=notyetimplemented</result>
+ </action>
+
+ <!-- Creation of a study
+ -->
+ <action name="new-empty" class="org.splat.simer.NewStudyAction" method="initialize">
+ <result name="success">/study/newStudy.jsp</result>
+ </action>
+ <action name="valid-new" class="org.splat.simer.NewStudyAction" method="create">
+ <result name="success" type="redirectAction">open-study?selection=0.1</result>
+ <result name="input">/study/newStudy.jsp</result>
+ <result name="error">/home.jsp?error=newstudy</result>
+ </action>
+
+ <!-- Search for studies, knowledge elements and documents
+ -->
+ <action name="search-study" class="org.splat.simer.SearchStudyAction" method="initialize">
+ <result name="success">/study/searchStudy.jsp</result>
+ <result name="error">/home.jsp</result>
+ </action>
+ <action name="refresh-study" class="org.splat.simer.SearchStudyAction" method="submitForm">
+ <result name="selectype">/study/searchStudy.jsp?action=setContext</result>
+ <result name="refresh">/study/searchStudy.jsp</result>
+ <result name="wait">/study/searchStudy.jsp</result>
+ <result name="error" type="redirectAction">search-study</result>
+ </action>
+
+ <action name="search-knowledge" class="org.splat.simer.SearchKnowledgeAction" method="initialize">
+ <result name="success">/study/searchKnowledge.jsp</result>
+ </action>
+ <action name="refresh-knowledge" class="org.splat.simer.SearchKnowledgeAction" method="submitForm">
+ <result name="selectype">/study/searchKnowledge.jsp?action=setContext</result>
+ <result name="refresh">/study/searchKnowledge.jsp</result>
+ <result name="wait">/study/searchKnowledge.jsp</result>
+ <result name="error" type="redirectAction">search-knowledge</result>
+ </action>
+
+ <action name="search-document" class="org.splat.simer.SearchDocumentAction" method="initialize">
+ <result name="success">/study/searchDocument.jsp</result>
+ </action>
+
+ <!-- Display of studies
+ -->
+ <action name="open-study" class="org.splat.simer.DisplayStudyStepAction" method="open">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="step-study" class="org.splat.simer.DisplayStudyStepAction" method="selectStep">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="document-study" class="org.splat.simer.DisplayStudyStepAction" method="selectDocument">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="knowledge-study" class="org.splat.simer.DisplayStudyStepAction" method="selectKnowledge">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="close-study" class="org.splat.simer.DisplayStudyStepAction" method="close">
+ <result name="success">/home.jsp</result>
+ </action>
+ <action name="prop-study" class="org.splat.simer.StudyPropertiesAction" method="initialize">
+ <result name="display">/study/displayStudyProperties.jsp</result>
+ <result name="edit">/study/editStudyProperties.jsp</result>
+ </action>
+
+ <!-- Display of knowledge elements
+ -->
+ <action name="open-knowledge" class="org.splat.simer.DisplayKnowledgeAction" method="open">
+ <result name="success">/study/displayKnowledge.jsp</result>
+ </action>
+ <action name="step-knowledge" class="org.splat.simer.DisplayKnowledgeAction" method="selectStep">
+ <result name="success">/study/displayKnowledge.jsp</result>
+ </action>
+ <action name="document-knowledge" class="org.splat.simer.DisplayKnowledgeAction" method="selectDocument">
+ <result name="success">/study/displayKnowledge.jsp</result>
+ </action>
+ <action name="knowledge-knowledge" class="org.splat.simer.DisplayKnowledgeAction" method="selectKnowledge">
+ <result name="success">/study/displayKnowledge.jsp</result>
+ </action>
+ <action name="close-knowledge" class="org.splat.simer.DisplayKnowledgeAction" method="close">
+ <result name="success">/home.jsp</result>
+ </action>
+
+ <!-- Edition of study
+ -->
+ <action name="edit-study" class="org.splat.simer.EditStudyAction" method="edition">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="add-scenario" class="org.splat.simer.NewScenarioAction" method="initialize">
+ <result name="success">/study/newScenario.jsp?init=focus</result>
+ </action>
+ <action name="edit-title" class="org.splat.simer.StudyPropertiesAction" method="editTitle">
+ <result name="success">/study/editStudyProperties.jsp?action=edititle</result>
+ </action>
+ <action name="edit-contributor" class="org.splat.simer.StudyPropertiesAction" method="editContributors">
+ <result name="success">/study/editStudyProperties.jsp?action=edibutor</result>
+ </action>
+ <action name="edit-cycle" class="org.splat.simer.StudyPropertiesAction" method="editCycle">
+ <result name="success">/study/editStudyProperties.jsp?action=edicycle</result>
+ </action>
+ <action name="select-step" class="org.splat.simer.NewScenarioAction" method="selectStep">
+ <result name="success">/study/newScenario.jsp</result>
+ </action>
+ <action name="valid-add" class="org.splat.simer.NewScenarioAction" method="create">
+ <result name="cancel" type="redirectAction">step-study</result>
+ <result name="success" type="redirectAction">step-study</result>
+ <result name="error">/study/displayStudyStep.jsp?error=addScenario</result>
+ </action>
+ <action name="valid-edit" class="org.splat.simer.StudyPropertiesAction" method="edition">
+ <result name="success">/study/editStudyProperties.jsp</result>
+ </action>
+ <action name="prop-scenario" class="org.splat.simer.EditScenarioPropertiesAction" method="initialize">
+ <result name="success">/study/editScenarioProperties.jsp</result>
+ </action>
+
+ <!-- Edition of scenario
+ -->
+ <action name="checkin-scenario" class="org.splat.simer.EditScenarioPropertiesAction" method="checkin">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+
+ <!-- Edition of simulation contexts
+ -->
+ <action name="add-context" class="org.splat.simer.EditSimulationContextAction" method="initialize">
+ <result name="create">/study/displayStudyStep.jsp?action=newContext</result>
+ <result name="select">/study/displayStudyStep.jsp?action=selectContext</result>
+ </action>
+ <action name="selectContext" class="org.splat.simer.EditSimulationContextAction" method="selectContext">
+ <result name="create">/study/displayStudyStep.jsp?action=newContext</result>
+ <result name="set">/study/displayStudyStep.jsp?action=setContext&index=%{contextType.index}</result>
+ </action>
+ <action name="newContext" class="org.splat.simer.EditSimulationContextAction" method="createContext">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ <result name="input">/study/displayStudyStep.jsp?action=newContext</result>
+ <result name="error">/study/displayStudyStep.jsp?error=addContext</result>
+ </action>
+ <action name="setContext" class="org.splat.simer.EditSimulationContextAction" method="setContext">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ <result name="input">/study/displayStudyStep.jsp?action=setContext&index=%{contextType.index}</result>
+ <result name="error">/study/displayStudyStep.jsp?error=addContext</result>
+ </action>
+ <action name="remove-context" class="org.splat.simer.EditSimulationContextAction" method="deleteContext">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ <result name="error">/study/displayStudyStep.jsp?error=removeContext</result>
+ </action>
+
+ <!-- Edition of documents
+ -->
+ <action name="select-file" class="org.splat.simer.UploadAction" method="initialize">
+ <result name="success">/study/upload.jsp</result>
+ </action>
+ <action name="upload" class="org.splat.simer.UploadAction" method="upload">
+ <result name="cancel" type="redirectAction">step-study</result>
+ <result name="import" type="redirectAction">import-document?fileName=%{fileName}</result>
+ <result name="version" type="redirectAction">version-document?index=%{index}&fileName=%{fileName}</result>
+ <result name="attach" type="redirectAction">attach-document?index=%{index}&fileName=%{fileName}</result>
+ <result name="outofmemory">/study/error.jsp?message=outofmemory</result>
+ </action>
+ <action name="import-document" class="org.splat.simer.ImportDocumentAction" method="initialize">
+ <result name="success">/study/importDocument.jsp</result>
+ <result name="error">/study/importError.jsp?message=%{errorCode}</result>
+ </action>
+ <action name="valid-import" class="org.splat.simer.ImportDocumentAction" method="import">
+ <result name="success" type="redirectAction">step-study</result>
+ <result name="cancel" type="redirectAction">step-study</result>
+ <result name="error">/study/importError.jsp?message=%{errorCode}&action=back</result>
+ </action>
+ <action name="version-document" class="org.splat.simer.VersionDocumentAction" method="initialize">
+ <result name="success">/study/versionDocument.jsp</result>
+ <result name="error">/study/importError.jsp?message=%{errorCode}</result>
+ </action>
+ <action name="valid-version" class="org.splat.simer.VersionDocumentAction" method="version">
+ <result name="success" type="redirectAction">step-study</result>
+ <result name="cancel" type="redirectAction">step-study</result>
+ <result name="error">/study/importError.jsp?message=%{errorCode}&action=back</result>
+ </action>
+ <action name="attach-document" class="org.splat.simer.EditDocumentAction" method="attach">
+ <result name="success">/study/displayStudyStep.jsp?action=display</result>
+ </action>
+ <action name="edit-document" class="org.splat.simer.EditDocumentAction" method="initialize">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="setDocument" class="org.splat.simer.EditDocumentAction" method="setDocument">
+ <result name="success">/study/displayStudyStep.jsp?action=display</result>
+ </action>
+ <action name="remove-document" class="org.splat.simer.EditDocumentAction" method="deleteDocument">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ <result name="error">/study/displayStudyStep.jsp?error=removeDocument</result>
+ </action>
+
+ <!-- Edition of knowledge elements
+ -->
+ <action name="add-knowledge" class="org.splat.simer.EditKnowledgeElementAction" method="initialize">
+ <result name="success">/study/displayStudyStep.jsp?action=addKnowledge&index=%{knowledgeType}</result>
+ </action>
+ <action name="edit-knowledge" class="org.splat.simer.EditKnowledgeElementAction" method="initialize">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ </action>
+ <action name="setKnowledge" class="org.splat.simer.EditKnowledgeElementAction" method="setKnowledge">
+ <result name="success">/study/displayStudyStep.jsp?action=display</result>
+ </action>
+ <action name="remove-knowledge" class="org.splat.simer.EditKnowledgeElementAction" method="deleteKnowledge">
+ <result name="success">/study/displayStudyStep.jsp</result>
+ <result name="error">/study/displayStudyStep.jsp?error=removeKnowledge</result>
+ </action>
+
+ </package>
+
+
+ <package name="sadmin" namespace="/sadmin" extends="simer-default">
+
+ <!-- Menus of database administration
+ -->
+ <action name="indexing" class="org.splat.simer.admin.DatabaseIndexingAction" method="initialize">
+ <result name="success">/sadmin/indexStudies.jsp</result>
+ </action>
+ <action name="valid-indexing" class="org.splat.simer.admin.DatabaseIndexingAction" method="indexing">
+ <result name="success" type="redirectAction">../study/search-study</result>
+ </action>
+ <action name="select-file" class="org.splat.simer.UploadAction" method="initialize">
+ <result name="success">/sadmin/upload.jsp</result>
+ </action>
+ <action name="upload" class="org.splat.simer.UploadAction" method="upload">
+ <result name="importuser" type="redirectAction">importuser?fileName=%{fileName}</result>
+ </action>
+ <action name="importuser" class="org.splat.simer.admin.ImportUserAction" method="import">
+ <result name="success">/sadmin/displayUser.jsp</result>
+ </action>
+
+ <!-- Menus of knowledge administration
+ -->
+ <action name="scontext" class="org.splat.simer.admin.SimulationContextAction" method="initialize">
+ <result name="success">/sadmin/approveSContext.jsp</result>
+ </action>
+ <action name="scontext-edit" class="org.splat.simer.admin.SimulationContextAction" method="select">
+ <result name="success">/sadmin/approveSContext.jsp</result>
+ </action>
+ <action name="knowelm" class="org.splat.simer.admin.KnowledgeElementAction" method="initialize">
+ <result name="success">/sadmin/approveKnowelm.jsp</result>
+ </action>
+ </package>
+
+ <package name="sgeom" namespace="/sgeom" extends="simer-default">
+
+ <action name="valid-save" class="org.splat.module.SaveDocumentAction" method="save">
+ <result name="success">/sgeom/index.jsp</result>
+ </action>
+ <action name="valid-update" class="org.splat.module.SaveDocumentAction" method="update">
+ <result name="success">/sgeom/index.jsp</result>
+ </action>
+ <action name="valid-version" class="org.splat.module.SaveDocumentAction" method="version">
+ <result name="success">/sgeom/index.jsp</result>
+ </action>
+
+ </package>
+
+
+ <package name="smesh" namespace="/smesh" extends="simer-default">
+
+ <action name="valid-save" class="org.splat.module.SaveDocumentAction" method="save">
+ <result name="success">/smesh/index.jsp</result>
+ </action>
+ <action name="valid-update" class="org.splat.module.SaveDocumentAction" method="update">
+ <result name="success">/smesh/index.jsp</result>
+ </action>
+ <action name="valid-version" class="org.splat.module.SaveDocumentAction" method="version">
+ <result name="success">/smesh/index.jsp</result>
+ </action>
+
+ </package>
+</struts>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ This configuration file was written by the eclipse-cs plugin configuration editor
+-->
+<!--
+ Checkstyle-Configuration: Hewis-Javadoc
+ Description:
+Configuration Checkstyle vérifiantuniquement les javadoc
+-->
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+<module name="Checker">
+ <property name="severity" value="warning"/>
+ <module name="TreeWalker">
+ <module name="JavadocMethod">
+ <property name="logLoadErrors" value="true"/>
+ <property name="suppressLoadErrors" value="true"/>
+ </module>
+ <module name="JavadocType"/>
+ <module name="JavadocVariable"/>
+ <module name="JavadocStyle">
+ <property name="checkEmptyJavadoc" value="true"/>
+ </module>
+ <module name="JavadocMethod">
+ <property name="logLoadErrors" value="true"/>
+ <property name="suppressLoadErrors" value="true"/>
+ </module>
+ </module>
+ <module name="PackageHtml"/>
+</module>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="Siman Formatter" version="11">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="140"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="false" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment">/**
+ * Get the ${bare_field_name}.
+ * @return the ${bare_field_name}
+ */</template><template autoinsert="false" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment">/**
+ * Set the ${bare_field_name}.
+ * @param ${param} the ${bare_field_name} to set
+ */</template><template autoinsert="true" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment">/**
+ * ${tags}
+ */</template><template autoinsert="false" context="filecomment_context" deleted="false" description="Comment for created Java files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.filecomment" name="filecomment">/*****************************************************************************
+ * Company EURIWARE
+ * Application SIMAN
+ * File $$Id$$
+ * Creation date ${date}
+ * @author $$Author$$
+ * @version $$Revision$$
+ *****************************************************************************/
+</template><template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name="typecomment">/**
+ * @author ${user}
+ *
+ * ${tags}
+ */</template><template autoinsert="true" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment">/**
+ *
+ */</template><template autoinsert="true" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment">/**
+ * ${tags}
+ */</template><template autoinsert="false" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment">/**
+ * {@inheritDoc}
+ * ${see_to_overridden}
+ */</template><template autoinsert="true" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment">/**
+ * ${tags}
+ * ${see_to_target}
+ */</template><template autoinsert="true" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">${filecomment}
+${package_declaration}
+
+${typecomment}
+${type_declaration}</template><template autoinsert="true" context="classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.classbody" name="classbody">
+</template><template autoinsert="true" context="interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name="interfacebody">
+</template><template autoinsert="true" context="enumbody_context" deleted="false" description="Code in new enum type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.enumbody" name="enumbody">
+</template><template autoinsert="true" context="annotationbody_context" deleted="false" description="Code in new annotation type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name="annotationbody">
+</template><template autoinsert="true" context="catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.catchblock" name="catchblock">// ${todo} Auto-generated catch block
+${exception_var}.printStackTrace();</template><template autoinsert="true" context="methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodbody" name="methodbody">// ${todo} Auto-generated method stub
+${body_statement}</template><template autoinsert="true" context="constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name="constructorbody">${body_statement}
+// ${todo} auto-generated constructor</template><template autoinsert="true" context="getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.setterbody" name="setterbody">${field} = ${param};</template></templates>
\ No newline at end of file