Salome HOME
SIMAN Eclipse workspace first version
authorrkv <rkv@opencascade.com>
Mon, 24 Sep 2012 10:16:24 +0000 (10:16 +0000)
committerrkv <rkv@opencascade.com>
Mon, 24 Sep 2012 10:16:24 +0000 (10:16 +0000)
580 files changed:
Workspace/.metadata/.lock [new file with mode: 0644]
Workspace/.metadata/.log [new file with mode: 0644]
Workspace/.metadata/version.ini [new file with mode: 0644]
Workspace/Converter/.checkstyle [new file with mode: 0644]
Workspace/Converter/.classpath [new file with mode: 0644]
Workspace/Converter/.externalToolBuilders/Ant_Converter_Builder.launch [new file with mode: 0644]
Workspace/Converter/.pmd [new file with mode: 0644]
Workspace/Converter/.project [new file with mode: 0644]
Workspace/Converter/.ruleset [new file with mode: 0644]
Workspace/Converter/build.properties [new file with mode: 0644]
Workspace/Converter/build.xml [new file with mode: 0644]
Workspace/Converter/siman-pmd.ruleset [new file with mode: 0644]
Workspace/Converter/src/Launcher.java [new file with mode: 0644]
Workspace/Converter/src/jar-in-jar-loader.zip [new file with mode: 0644]
Workspace/Converter/src/log4j.properties [new file with mode: 0644]
Workspace/SPlat/.checkstyle [new file with mode: 0644]
Workspace/SPlat/.classpath [new file with mode: 0644]
Workspace/SPlat/.externalToolBuilders/Ant_Splat_Builder.launch [new file with mode: 0644]
Workspace/SPlat/.pmd [new file with mode: 0644]
Workspace/SPlat/.project [new file with mode: 0644]
Workspace/SPlat/.ruleset [new file with mode: 0644]
Workspace/SPlat/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
Workspace/SPlat/.settings/org.eclipse.wst.common.component [new file with mode: 0644]
Workspace/SPlat/.settings/org.eclipse.wst.common.project.facet.core.xml [new file with mode: 0644]
Workspace/SPlat/build.properties [new file with mode: 0644]
Workspace/SPlat/build.xml [new file with mode: 0644]
Workspace/SPlat/lib/activation.jar [new file with mode: 0644]
Workspace/SPlat/lib/antlr-2.7.6.jar [new file with mode: 0644]
Workspace/SPlat/lib/commons-collections-3.1.jar [new file with mode: 0644]
Workspace/SPlat/lib/dom4j-1.6.1.jar [new file with mode: 0644]
Workspace/SPlat/lib/hibernate-3.5.jar [new file with mode: 0644]
Workspace/SPlat/lib/javassist-3.11.0.GA.jar [new file with mode: 0644]
Workspace/SPlat/lib/jta-1.1.jar [new file with mode: 0644]
Workspace/SPlat/lib/log4j-1.2.15.jar [new file with mode: 0644]
Workspace/SPlat/lib/lucene-core-2.9.2.jar [new file with mode: 0644]
Workspace/SPlat/lib/lucene-queries-2.9.2.jar [new file with mode: 0644]
Workspace/SPlat/lib/mailapi.jar [new file with mode: 0644]
Workspace/SPlat/lib/mysql-connector-java-5.1.5-bin.jar [new file with mode: 0644]
Workspace/SPlat/lib/poi-3.7-20101029.jar [new file with mode: 0644]
Workspace/SPlat/lib/poi-ooxml-3.7-20101029.jar [new file with mode: 0644]
Workspace/SPlat/lib/poi-ooxml-schemas-3.7-20101029.jar [new file with mode: 0644]
Workspace/SPlat/lib/poi-scratchpad-3.7-20101029.jar [new file with mode: 0644]
Workspace/SPlat/lib/pop3.jar [new file with mode: 0644]
Workspace/SPlat/lib/slf4j-api-1.6.1.jar [new file with mode: 0644]
Workspace/SPlat/lib/slf4j-log4j12-1.6.1.jar [new file with mode: 0644]
Workspace/SPlat/lib/smtp.jar [new file with mode: 0644]
Workspace/SPlat/lib/xmlpublic.jar [new file with mode: 0644]
Workspace/SPlat/siman-pmd.ruleset [new file with mode: 0644]
Workspace/SPlat/src/META-INF/MANIFEST.MF [new file with mode: 0644]
Workspace/SPlat/src/Test.java [new file with mode: 0644]
Workspace/SPlat/src/cast3m.som.xml [new file with mode: 0644]
Workspace/SPlat/src/hibernate.cfg.xml [new file with mode: 0644]
Workspace/SPlat/src/log4j.properties [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Any.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Any.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Attribute.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Attribute.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Database.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Do.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/DuplicatePropertyException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Entity.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Entity.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/GenericEnumType.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/IDGenerator.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/IDPool.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/IDPool.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/InvalidPropertyException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/MismatchException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/MissedPropertyException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/MultiplyDefinedException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Name.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/NotApplicableException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/ObjectProperties.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Persistent.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Persistent.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/RealmLoginModule.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Relation.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Relation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Role.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Text.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/Text.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/TextAttribute.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/TextAttribute.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/User.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/User.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/UserDirectory.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/XDOM.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/kernel/XMLException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/Reader.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/Toolbox.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/TypeMismatchException.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/WordDOCXDocument.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/WordXMLDocument.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/Writer.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/manox/XMLDocument.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ActorRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ApplicationRights.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Attributes.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/CommentAttribute.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ContributorRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ConvertsRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Database.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/DescriptionAttribute.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Document.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Document.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/DocumentRights.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/DocumentType.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Entity.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/File.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/File.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/IDBuilder.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/IDBuilder.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Index.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/KnowledgeElement.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/KnowledgeElement.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/KnowledgeElementType.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Profile.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ProgressState.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ProjectElement.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ProjectElement.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ProjectSettings.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Proxy.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Publication.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Publication.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Relations.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Revision.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Scenario.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Scenario.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/SimulationContext.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/SimulationContext.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/SimulationContextType.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/StampRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Step.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/StepRights.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Study.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Study.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/StudyRights.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Timestamp.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Timestamp.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/UsedByRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/UsesRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ValidationCycle.hbm.xml [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ValidationCycle.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ValidationCycleRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/ValidationStep.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/VersionsRelation.java [new file with mode: 0644]
Workspace/SPlat/src/org/splat/som/Visibility.java [new file with mode: 0644]
Workspace/SPlat/src/som.properties [new file with mode: 0644]
Workspace/SPlat/src/som.xml [new file with mode: 0644]
Workspace/SPlat/src/som_en.properties [new file with mode: 0644]
Workspace/SPlat/src/study.xml [new file with mode: 0644]
Workspace/SPlat/src/users.xml [new file with mode: 0644]
Workspace/Servers/.pmd [new file with mode: 0644]
Workspace/Servers/.project [new file with mode: 0644]
Workspace/Servers/.settings/org.eclipse.wst.server.core.prefs [new file with mode: 0644]
Workspace/Servers/Tomcat v6.0 Server at localhost-config/catalina.policy [new file with mode: 0644]
Workspace/Servers/Tomcat v6.0 Server at localhost-config/catalina.properties [new file with mode: 0644]
Workspace/Servers/Tomcat v6.0 Server at localhost-config/server.xml [new file with mode: 0644]
Workspace/Servers/Tomcat v6.0 Server at localhost-config/tomcat-users.xml [new file with mode: 0644]
Workspace/Servers/Tomcat v6.0 Server at localhost-config/web.xml [new file with mode: 0644]
Workspace/Siman-Common/.checkstyle [new file with mode: 0644]
Workspace/Siman-Common/.classpath [new file with mode: 0644]
Workspace/Siman-Common/.externalToolBuilders/Ant_Siman_Common_Builder.launch [new file with mode: 0644]
Workspace/Siman-Common/.pmd [new file with mode: 0644]
Workspace/Siman-Common/.project [new file with mode: 0644]
Workspace/Siman-Common/.ruleset [new file with mode: 0644]
Workspace/Siman-Common/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
Workspace/Siman-Common/.settings/org.eclipse.wst.common.component [new file with mode: 0644]
Workspace/Siman-Common/.settings/org.eclipse.wst.common.project.facet.core.xml [new file with mode: 0644]
Workspace/Siman-Common/.springBeans [new file with mode: 0644]
Workspace/Siman-Common/build.properties [new file with mode: 0644]
Workspace/Siman-Common/build.xml [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.aop-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.asm-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.aspects-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.beans-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.context-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.context.support-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.core-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.expression-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.instrument-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.instrument.tomcat-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.jdbc-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.jms-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.orm-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.oxm-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.test-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.transaction-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.web-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.web.portlet-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.web.servlet-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/lib/org.springframework.web.struts-3.1.2.RELEASE.jar [new file with mode: 0644]
Workspace/Siman-Common/siman-pmd.ruleset [new file with mode: 0644]
Workspace/Siman-Common/src/META-INF/MANIFEST.MF [new file with mode: 0644]
Workspace/Siman-Common/src/spring/globalContext.xml [new file with mode: 0644]
Workspace/Siman/.checkstyle [new file with mode: 0644]
Workspace/Siman/.classpath [new file with mode: 0644]
Workspace/Siman/.externalToolBuilders/Ant_Siman_Dev_Config_Builder.launch [new file with mode: 0644]
Workspace/Siman/.externalToolBuilders/Ant_Siman_War_Builder.launch [new file with mode: 0644]
Workspace/Siman/.pmd [new file with mode: 0644]
Workspace/Siman/.project [new file with mode: 0644]
Workspace/Siman/.ruleset [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.jdt.apt.core.prefs [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.jst.common.project.facet.core.prefs [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.ltk.core.refactoring.prefs [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.wst.common.component [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.wst.common.project.facet.core.xml [new file with mode: 0644]
Workspace/Siman/.settings/org.eclipse.wst.validation.prefs [new file with mode: 0644]
Workspace/Siman/WebContent/META-INF/MANIFEST.MF [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/activemq-core-5.5.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/commons-fileupload-1.2.2.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/commons-io-2.0.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/commons-lang3-3.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-api-1.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/commons-validator-1.3.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/freemarker-2.3.19.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/geronimo-j2ee-management_1.1_spec-1.0.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/javax.jms.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/ognl-3.0.5.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/struts2-core-2.3.4.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/struts2-spring-plugin-2.3.4.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/struts2-tiles-plugin-2.3.4.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/tiles-api-2.0.6.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/tiles-core-2.0.6.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/tiles-jsp-2.0.6.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/lib/xwork-core-2.3.4.1.jar [new file with mode: 0644]
Workspace/Siman/WebContent/WEB-INF/web.xml [new file with mode: 0644]
Workspace/Siman/WebContent/conf/download.xml [new file with mode: 0644]
Workspace/Siman/WebContent/conf/login.conf [new file with mode: 0644]
Workspace/Siman/WebContent/conf/my.xml [new file with mode: 0644]
Workspace/Siman/WebContent/conf/repository.xml [new file with mode: 0644]
Workspace/Siman/WebContent/conf/som.xml [new file with mode: 0644]
Workspace/Siman/WebContent/dtd/struts-2.0.dtd [new file with mode: 0644]
Workspace/Siman/WebContent/error.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/home.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jap/launcherkeystore [new file with mode: 0644]
Workspace/Siman/WebContent/jap/splat-launcher.jar [new file with mode: 0644]
Workspace/Siman/WebContent/jap/splat-signedlauncher.jar [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/checkin.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/editContents.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/editContext.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/editKnowledge.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/knowledgeProperties.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/menubar.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/menuitem.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/menupopup.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/newDocument.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/readComment.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/readContents.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/readContext.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/readDescription.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/readKnowledge.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/searchForm.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/searchtabs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/studyProperties.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/titlebar.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jsp/toolbar.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/jvs/action.js [new file with mode: 0644]
Workspace/Siman/WebContent/jvs/popup.js [new file with mode: 0644]
Workspace/Siman/WebContent/jvs/search.js [new file with mode: 0644]
Workspace/Siman/WebContent/login.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/menu.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/plugin/converter.jar [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/blank.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/bar.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/bgcolor.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/blackdot.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/bold.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/centre.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/code.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/copy.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/cut.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/design.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/hr.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/hyperlink.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/image.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/indent.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/insert_table.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/italic.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/justifyfull.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/left_just.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/list.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/numbered_list.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/outdent.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/paste.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/pastetext.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/pasteword.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/preview.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/print.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/redo.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/replace.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/right_just.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/save.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/selectall.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/special_char.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/spellcheck.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/strikethrough.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/subscript.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/superscript.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/textcolor.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/underline.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/undo.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/unformat.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/images/word_count.gif [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/insert_char.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/insert_img.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/insert_link.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/insert_table.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/cz.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/de.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/dk.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/en.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/es.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/fr.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/he-windows-1255.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/he.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/it.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/nl.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/no.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/pl.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/pt.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/ru.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/sk.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/sv.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/lang/zh-cn.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/palette.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/paste_text.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/paste_word.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/replace.htm [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/richtext.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/richtext_compressed.js [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/rte.css [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/rte_ui.png [new file with mode: 0644]
Workspace/Siman/WebContent/rtef/xhtml.js [new file with mode: 0644]
Workspace/Siman/WebContent/sadmin/approveKnowelm.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sadmin/approveSContext.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sadmin/displayUser.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sadmin/indexStudies.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sadmin/upload.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sgeom/index.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sgeom/saveAs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sgeom/updateAs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sgeom/versionAs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/sgeom/window.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/default.css [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.APPROVED.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.checked.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.delete.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.export.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.idea.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.new.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.refresh.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.scenario.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.state.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/disabled.study.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/forbidden.inCHECK.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/forbidden.inDRAFT.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/forbidden.inWORK.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.3dxml.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.APPROVED.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.END.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.EXTERN.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.TEMPLATE.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.add.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.addhot.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.any.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.back.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.base.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.books.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.checked.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.checkedout.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.checkout.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.close.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.delete.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.doc.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.docx.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.done.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.download.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.ed.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.edAPPROVED.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.edEXTERN.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.edinCHECK.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.edinDRAFT.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.edinWORK.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.edit.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.empty.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.help.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.hold.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.idea.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.inCHECK.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.inDRAFT.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.inWORK.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.minus.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.mpp.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.new.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.occ.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.open.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.part.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.pdf.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.plus.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.ppt.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.property.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.pulldown.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.refresh.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.relation.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.search.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.sldasm.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.sldprt.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.sortdown.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.sortup.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.study.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.undo.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.upload.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/icon.xls.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.accept.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.attach.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.background.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.banner.jpg [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.bottom.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.box.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.brcorner.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.copy.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.delete.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.demote.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.dirclosed.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.diropen.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.disablighted.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.dotedvline.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.downarrow.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.empty.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.export.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.group.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.help.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.hide.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.highlighted.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.hline.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.hold.gif [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.hr.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.idea.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.index.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.invalidate.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.modified.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.publish.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.replace.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.review.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.right.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.rightarrow.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.section.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.selected.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.share.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.stamp.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.study.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.title.jpg [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.title.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.trcorner.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.uparrow.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.user.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.version.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.vline.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.vseparator.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.white.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/image.zoom.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/logo-SIMER.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/logo.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.any.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.mgeom.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.property.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.scenario.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.sgeom.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.sldworks.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.smesh.png [new file with mode: 0644]
Workspace/Siman/WebContent/skin/tool.winword.png [new file with mode: 0644]
Workspace/Siman/WebContent/smesh/index.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/smesh/saveAs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/smesh/updateAs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/smesh/versionAs.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/smesh/window.png [new file with mode: 0644]
Workspace/Siman/WebContent/study/displayKnowledge.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/displayStudyProperties.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/displayStudyStep.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/editScenarioProperties.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/editStudyProperties.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/error.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/importDocument.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/importError.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/newScenario.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/newStudy.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/searchKnowledge.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/searchStudy.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/upload.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/study/versionDocument.jsp [new file with mode: 0644]
Workspace/Siman/WebContent/welcome.jsp [new file with mode: 0644]
Workspace/Siman/build.properties [new file with mode: 0644]
Workspace/Siman/build.xml [new file with mode: 0644]
Workspace/Siman/conf/debug.properties [new file with mode: 0644]
Workspace/Siman/conf/generated/release/hibernate.cfg.xml [new file with mode: 0644]
Workspace/Siman/conf/generated/release/log4j.xml [new file with mode: 0644]
Workspace/Siman/conf/release.properties [new file with mode: 0644]
Workspace/Siman/conf/templates/hibernate.cfg.xml [new file with mode: 0644]
Workspace/Siman/conf/templates/log4j.xml [new file with mode: 0644]
Workspace/Siman/siman-pmd.ruleset [new file with mode: 0644]
Workspace/Siman/src/Test.java [new file with mode: 0644]
Workspace/Siman/src/hibernate.cfg.xml [new file with mode: 0644]
Workspace/Siman/src/jndi.properties [new file with mode: 0644]
Workspace/Siman/src/labels.properties [new file with mode: 0644]
Workspace/Siman/src/labels_en.properties [new file with mode: 0644]
Workspace/Siman/src/log4j.xml [new file with mode: 0644]
Workspace/Siman/src/org/splat/launcher/FileTransfer.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/launcher/ToolButton.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/launcher/ToolbarApplet.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/launcher/WindowsRegistry.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/module/SaveDocumentAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/Action.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/ApplicationSettings.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/ConnectionAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/Converter.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/DisplayBaseAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/DisplayKnowledgeAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/DisplayStudyStepAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/DocumentFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/EditDocumentAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/EditScenarioPropertiesAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/EditSimulationContextAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/EditStudyAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/FileFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/HistoryFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/KnowledgeElementFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/MenuAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/NewScenarioAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/NewScenarioMenu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/NewStudyAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/NotYetImplementedAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/OpenKnowledge.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/OpenObject.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/OpenStudy.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/OpenStudyServices.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/SearchBaseAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/SearchDocumentAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/SearchKnowledgeAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/SearchStudyAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/SimulationContextFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/StampFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/StartAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/StudyMenu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/StudyPropertiesAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/UploadAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/UploadBaseNextAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/ValidationFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/VersionDocumentAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/DatabaseIndexingAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/ImportUserAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/ImportedStudy.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/KnowledgeElementAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/ProjectElementFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/SimulationContextAction.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/simer/admin/SimulationContextFacade.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/ContextualMenu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/Item.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/Menu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/MenuItem.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/PopupItem.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/PopupMenu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/SimpleMenu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/SlidMenu.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/TabBar.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/ToolBar.java [new file with mode: 0644]
Workspace/Siman/src/org/splat/wapp/ToolButton.java [new file with mode: 0644]
Workspace/Siman/src/siman.properties [new file with mode: 0644]
Workspace/Siman/src/simer.properties [new file with mode: 0644]
Workspace/Siman/src/som.properties [new file with mode: 0644]
Workspace/Siman/src/som_en.properties [new file with mode: 0644]
Workspace/Siman/src/spring/applicationContext.xml [new file with mode: 0644]
Workspace/Siman/src/struts.xml [new file with mode: 0644]
Workspace/checkstyle-siman-javadoc.xml [new file with mode: 0644]
Workspace/codeFormatter.xml [new file with mode: 0644]
Workspace/codetemplates.xml [new file with mode: 0644]

diff --git a/Workspace/.metadata/.lock b/Workspace/.metadata/.lock
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Workspace/.metadata/.log b/Workspace/.metadata/.log
new file mode 100644 (file)
index 0000000..4444dc7
--- /dev/null
@@ -0,0 +1,6047 @@
+!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
diff --git a/Workspace/.metadata/version.ini b/Workspace/.metadata/version.ini
new file mode 100644 (file)
index 0000000..c51ff74
--- /dev/null
@@ -0,0 +1 @@
+org.eclipse.core.runtime=1
\ No newline at end of file
diff --git a/Workspace/Converter/.checkstyle b/Workspace/Converter/.checkstyle
new file mode 100644 (file)
index 0000000..c606f32
--- /dev/null
@@ -0,0 +1,6 @@
+<?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>
diff --git a/Workspace/Converter/.classpath b/Workspace/Converter/.classpath
new file mode 100644 (file)
index 0000000..1e07109
--- /dev/null
@@ -0,0 +1,9 @@
+<?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>
diff --git a/Workspace/Converter/.externalToolBuilders/Ant_Converter_Builder.launch b/Workspace/Converter/.externalToolBuilders/Ant_Converter_Builder.launch
new file mode 100644 (file)
index 0000000..7fe7793
--- /dev/null
@@ -0,0 +1,22 @@
+<?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:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Converter/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<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>
diff --git a/Workspace/Converter/.pmd b/Workspace/Converter/.pmd
new file mode 100644 (file)
index 0000000..05d8fd4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+    <useProjectRuleSet>true</useProjectRuleSet>
+    <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+    <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
diff --git a/Workspace/Converter/.project b/Workspace/Converter/.project
new file mode 100644 (file)
index 0000000..5fc1506
--- /dev/null
@@ -0,0 +1,40 @@
+<?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>&lt;project&gt;/.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>
diff --git a/Workspace/Converter/.ruleset b/Workspace/Converter/.ruleset
new file mode 100644 (file)
index 0000000..93ce6b6
--- /dev/null
@@ -0,0 +1,239 @@
+<?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>
diff --git a/Workspace/Converter/build.properties b/Workspace/Converter/build.properties
new file mode 100644 (file)
index 0000000..0ccd896
--- /dev/null
@@ -0,0 +1,2 @@
+converter.src.dir=src
+converter.dist.dir=dist
diff --git a/Workspace/Converter/build.xml b/Workspace/Converter/build.xml
new file mode 100644 (file)
index 0000000..e40903e
--- /dev/null
@@ -0,0 +1,59 @@
+<?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>
diff --git a/Workspace/Converter/siman-pmd.ruleset b/Workspace/Converter/siman-pmd.ruleset
new file mode 100644 (file)
index 0000000..534af48
--- /dev/null
@@ -0,0 +1,774 @@
+<?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>
diff --git a/Workspace/Converter/src/Launcher.java b/Workspace/Converter/src/Launcher.java
new file mode 100644 (file)
index 0000000..9bb42a2
--- /dev/null
@@ -0,0 +1,85 @@
+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
diff --git a/Workspace/Converter/src/jar-in-jar-loader.zip b/Workspace/Converter/src/jar-in-jar-loader.zip
new file mode 100644 (file)
index 0000000..6ee1217
Binary files /dev/null and b/Workspace/Converter/src/jar-in-jar-loader.zip differ
diff --git a/Workspace/Converter/src/log4j.properties b/Workspace/Converter/src/log4j.properties
new file mode 100644 (file)
index 0000000..04b87dc
--- /dev/null
@@ -0,0 +1,40 @@
+### 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
diff --git a/Workspace/SPlat/.checkstyle b/Workspace/SPlat/.checkstyle
new file mode 100644 (file)
index 0000000..c606f32
--- /dev/null
@@ -0,0 +1,6 @@
+<?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>
diff --git a/Workspace/SPlat/.classpath b/Workspace/SPlat/.classpath
new file mode 100644 (file)
index 0000000..759096a
--- /dev/null
@@ -0,0 +1,28 @@
+<?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>
diff --git a/Workspace/SPlat/.externalToolBuilders/Ant_Splat_Builder.launch b/Workspace/SPlat/.externalToolBuilders/Ant_Splat_Builder.launch
new file mode 100644 (file)
index 0000000..13db16d
--- /dev/null
@@ -0,0 +1,22 @@
+<?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:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/SPlat/bin&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/SPlat/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<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>
diff --git a/Workspace/SPlat/.pmd b/Workspace/SPlat/.pmd
new file mode 100644 (file)
index 0000000..05d8fd4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+    <useProjectRuleSet>true</useProjectRuleSet>
+    <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+    <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
diff --git a/Workspace/SPlat/.project b/Workspace/SPlat/.project
new file mode 100644 (file)
index 0000000..01d2e08
--- /dev/null
@@ -0,0 +1,52 @@
+<?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>&lt;project&gt;/.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>
diff --git a/Workspace/SPlat/.ruleset b/Workspace/SPlat/.ruleset
new file mode 100644 (file)
index 0000000..93ce6b6
--- /dev/null
@@ -0,0 +1,239 @@
+<?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>
diff --git a/Workspace/SPlat/.settings/org.eclipse.jdt.core.prefs b/Workspace/SPlat/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..dd0be79
--- /dev/null
@@ -0,0 +1,7 @@
+#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
diff --git a/Workspace/SPlat/.settings/org.eclipse.wst.common.component b/Workspace/SPlat/.settings/org.eclipse.wst.common.component
new file mode 100644 (file)
index 0000000..9aec20c
--- /dev/null
@@ -0,0 +1,6 @@
+<?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>
diff --git a/Workspace/SPlat/.settings/org.eclipse.wst.common.project.facet.core.xml b/Workspace/SPlat/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644 (file)
index 0000000..d0e0b2d
--- /dev/null
@@ -0,0 +1,7 @@
+<?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>
diff --git a/Workspace/SPlat/build.properties b/Workspace/SPlat/build.properties
new file mode 100644 (file)
index 0000000..98398a6
--- /dev/null
@@ -0,0 +1,16 @@
+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
+
diff --git a/Workspace/SPlat/build.xml b/Workspace/SPlat/build.xml
new file mode 100644 (file)
index 0000000..4b34aca
--- /dev/null
@@ -0,0 +1,161 @@
+<?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
diff --git a/Workspace/SPlat/lib/activation.jar b/Workspace/SPlat/lib/activation.jar
new file mode 100644 (file)
index 0000000..29a59a9
Binary files /dev/null and b/Workspace/SPlat/lib/activation.jar differ
diff --git a/Workspace/SPlat/lib/antlr-2.7.6.jar b/Workspace/SPlat/lib/antlr-2.7.6.jar
new file mode 100644 (file)
index 0000000..3702b64
Binary files /dev/null and b/Workspace/SPlat/lib/antlr-2.7.6.jar differ
diff --git a/Workspace/SPlat/lib/commons-collections-3.1.jar b/Workspace/SPlat/lib/commons-collections-3.1.jar
new file mode 100644 (file)
index 0000000..41e230f
Binary files /dev/null and b/Workspace/SPlat/lib/commons-collections-3.1.jar differ
diff --git a/Workspace/SPlat/lib/dom4j-1.6.1.jar b/Workspace/SPlat/lib/dom4j-1.6.1.jar
new file mode 100644 (file)
index 0000000..c8c4dbb
Binary files /dev/null and b/Workspace/SPlat/lib/dom4j-1.6.1.jar differ
diff --git a/Workspace/SPlat/lib/hibernate-3.5.jar b/Workspace/SPlat/lib/hibernate-3.5.jar
new file mode 100644 (file)
index 0000000..c84d3e6
Binary files /dev/null and b/Workspace/SPlat/lib/hibernate-3.5.jar differ
diff --git a/Workspace/SPlat/lib/javassist-3.11.0.GA.jar b/Workspace/SPlat/lib/javassist-3.11.0.GA.jar
new file mode 100644 (file)
index 0000000..b3bfeeb
Binary files /dev/null and b/Workspace/SPlat/lib/javassist-3.11.0.GA.jar differ
diff --git a/Workspace/SPlat/lib/jta-1.1.jar b/Workspace/SPlat/lib/jta-1.1.jar
new file mode 100644 (file)
index 0000000..6d225b7
Binary files /dev/null and b/Workspace/SPlat/lib/jta-1.1.jar differ
diff --git a/Workspace/SPlat/lib/log4j-1.2.15.jar b/Workspace/SPlat/lib/log4j-1.2.15.jar
new file mode 100644 (file)
index 0000000..c930a6a
Binary files /dev/null and b/Workspace/SPlat/lib/log4j-1.2.15.jar differ
diff --git a/Workspace/SPlat/lib/lucene-core-2.9.2.jar b/Workspace/SPlat/lib/lucene-core-2.9.2.jar
new file mode 100644 (file)
index 0000000..a845094
Binary files /dev/null and b/Workspace/SPlat/lib/lucene-core-2.9.2.jar differ
diff --git a/Workspace/SPlat/lib/lucene-queries-2.9.2.jar b/Workspace/SPlat/lib/lucene-queries-2.9.2.jar
new file mode 100644 (file)
index 0000000..f747534
Binary files /dev/null and b/Workspace/SPlat/lib/lucene-queries-2.9.2.jar differ
diff --git a/Workspace/SPlat/lib/mailapi.jar b/Workspace/SPlat/lib/mailapi.jar
new file mode 100644 (file)
index 0000000..06fc475
Binary files /dev/null and b/Workspace/SPlat/lib/mailapi.jar differ
diff --git a/Workspace/SPlat/lib/mysql-connector-java-5.1.5-bin.jar b/Workspace/SPlat/lib/mysql-connector-java-5.1.5-bin.jar
new file mode 100644 (file)
index 0000000..e9d2529
Binary files /dev/null and b/Workspace/SPlat/lib/mysql-connector-java-5.1.5-bin.jar differ
diff --git a/Workspace/SPlat/lib/poi-3.7-20101029.jar b/Workspace/SPlat/lib/poi-3.7-20101029.jar
new file mode 100644 (file)
index 0000000..a08d953
Binary files /dev/null and b/Workspace/SPlat/lib/poi-3.7-20101029.jar differ
diff --git a/Workspace/SPlat/lib/poi-ooxml-3.7-20101029.jar b/Workspace/SPlat/lib/poi-ooxml-3.7-20101029.jar
new file mode 100644 (file)
index 0000000..5f36eb4
Binary files /dev/null and b/Workspace/SPlat/lib/poi-ooxml-3.7-20101029.jar differ
diff --git a/Workspace/SPlat/lib/poi-ooxml-schemas-3.7-20101029.jar b/Workspace/SPlat/lib/poi-ooxml-schemas-3.7-20101029.jar
new file mode 100644 (file)
index 0000000..82282b5
Binary files /dev/null and b/Workspace/SPlat/lib/poi-ooxml-schemas-3.7-20101029.jar differ
diff --git a/Workspace/SPlat/lib/poi-scratchpad-3.7-20101029.jar b/Workspace/SPlat/lib/poi-scratchpad-3.7-20101029.jar
new file mode 100644 (file)
index 0000000..6fd02d4
Binary files /dev/null and b/Workspace/SPlat/lib/poi-scratchpad-3.7-20101029.jar differ
diff --git a/Workspace/SPlat/lib/pop3.jar b/Workspace/SPlat/lib/pop3.jar
new file mode 100644 (file)
index 0000000..7ad2d33
Binary files /dev/null and b/Workspace/SPlat/lib/pop3.jar differ
diff --git a/Workspace/SPlat/lib/slf4j-api-1.6.1.jar b/Workspace/SPlat/lib/slf4j-api-1.6.1.jar
new file mode 100644 (file)
index 0000000..42e0ad0
Binary files /dev/null and b/Workspace/SPlat/lib/slf4j-api-1.6.1.jar differ
diff --git a/Workspace/SPlat/lib/slf4j-log4j12-1.6.1.jar b/Workspace/SPlat/lib/slf4j-log4j12-1.6.1.jar
new file mode 100644 (file)
index 0000000..873d119
Binary files /dev/null and b/Workspace/SPlat/lib/slf4j-log4j12-1.6.1.jar differ
diff --git a/Workspace/SPlat/lib/smtp.jar b/Workspace/SPlat/lib/smtp.jar
new file mode 100644 (file)
index 0000000..3d906d5
Binary files /dev/null and b/Workspace/SPlat/lib/smtp.jar differ
diff --git a/Workspace/SPlat/lib/xmlpublic.jar b/Workspace/SPlat/lib/xmlpublic.jar
new file mode 100644 (file)
index 0000000..f717954
Binary files /dev/null and b/Workspace/SPlat/lib/xmlpublic.jar differ
diff --git a/Workspace/SPlat/siman-pmd.ruleset b/Workspace/SPlat/siman-pmd.ruleset
new file mode 100644 (file)
index 0000000..534af48
--- /dev/null
@@ -0,0 +1,774 @@
+<?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>
diff --git a/Workspace/SPlat/src/META-INF/MANIFEST.MF b/Workspace/SPlat/src/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..254272e
--- /dev/null
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
diff --git a/Workspace/SPlat/src/Test.java b/Workspace/SPlat/src/Test.java
new file mode 100644 (file)
index 0000000..05b962b
--- /dev/null
@@ -0,0 +1,835 @@
+
+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
diff --git a/Workspace/SPlat/src/cast3m.som.xml b/Workspace/SPlat/src/cast3m.som.xml
new file mode 100644 (file)
index 0000000..931fa36
--- /dev/null
@@ -0,0 +1,92 @@
+<?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
diff --git a/Workspace/SPlat/src/hibernate.cfg.xml b/Workspace/SPlat/src/hibernate.cfg.xml
new file mode 100644 (file)
index 0000000..b873f56
--- /dev/null
@@ -0,0 +1,55 @@
+<?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
diff --git a/Workspace/SPlat/src/log4j.properties b/Workspace/SPlat/src/log4j.properties
new file mode 100644 (file)
index 0000000..12678cc
--- /dev/null
@@ -0,0 +1,41 @@
+### 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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Any.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/Any.hbm.xml
new file mode 100644 (file)
index 0000000..6c32c8f
--- /dev/null
@@ -0,0 +1,29 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Any.java b/Workspace/SPlat/src/org/splat/kernel/Any.java
new file mode 100644 (file)
index 0000000..84ba87c
--- /dev/null
@@ -0,0 +1,92 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Attribute.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/Attribute.hbm.xml
new file mode 100644 (file)
index 0000000..2a25e08
--- /dev/null
@@ -0,0 +1,26 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Attribute.java b/Workspace/SPlat/src/org/splat/kernel/Attribute.java
new file mode 100644 (file)
index 0000000..2b14ad0
--- /dev/null
@@ -0,0 +1,35 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Database.java b/Workspace/SPlat/src/org/splat/kernel/Database.java
new file mode 100644 (file)
index 0000000..88ef38f
--- /dev/null
@@ -0,0 +1,151 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Do.java b/Workspace/SPlat/src/org/splat/kernel/Do.java
new file mode 100644 (file)
index 0000000..a929540
--- /dev/null
@@ -0,0 +1,132 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/DuplicatePropertyException.java b/Workspace/SPlat/src/org/splat/kernel/DuplicatePropertyException.java
new file mode 100644 (file)
index 0000000..22392b0
--- /dev/null
@@ -0,0 +1,15 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Entity.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/Entity.hbm.xml
new file mode 100644 (file)
index 0000000..4b63419
--- /dev/null
@@ -0,0 +1,35 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Entity.java b/Workspace/SPlat/src/org/splat/kernel/Entity.java
new file mode 100644 (file)
index 0000000..76acc28
--- /dev/null
@@ -0,0 +1,104 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/GenericEnumType.java b/Workspace/SPlat/src/org/splat/kernel/GenericEnumType.java
new file mode 100644 (file)
index 0000000..365a39d
--- /dev/null
@@ -0,0 +1,121 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/IDGenerator.java b/Workspace/SPlat/src/org/splat/kernel/IDGenerator.java
new file mode 100644 (file)
index 0000000..e5dd545
--- /dev/null
@@ -0,0 +1,24 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/IDPool.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/IDPool.hbm.xml
new file mode 100644 (file)
index 0000000..1c2cdd4
--- /dev/null
@@ -0,0 +1,23 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/IDPool.java b/Workspace/SPlat/src/org/splat/kernel/IDPool.java
new file mode 100644 (file)
index 0000000..6e6b0af
--- /dev/null
@@ -0,0 +1,115 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/InvalidPropertyException.java b/Workspace/SPlat/src/org/splat/kernel/InvalidPropertyException.java
new file mode 100644 (file)
index 0000000..92eb71e
--- /dev/null
@@ -0,0 +1,15 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/MismatchException.java b/Workspace/SPlat/src/org/splat/kernel/MismatchException.java
new file mode 100644 (file)
index 0000000..c066532
--- /dev/null
@@ -0,0 +1,17 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/MissedPropertyException.java b/Workspace/SPlat/src/org/splat/kernel/MissedPropertyException.java
new file mode 100644 (file)
index 0000000..c038200
--- /dev/null
@@ -0,0 +1,15 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/MultiplyDefinedException.java b/Workspace/SPlat/src/org/splat/kernel/MultiplyDefinedException.java
new file mode 100644 (file)
index 0000000..d7aa75a
--- /dev/null
@@ -0,0 +1,17 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Name.java b/Workspace/SPlat/src/org/splat/kernel/Name.java
new file mode 100644 (file)
index 0000000..f5d444b
--- /dev/null
@@ -0,0 +1,15 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/NotApplicableException.java b/Workspace/SPlat/src/org/splat/kernel/NotApplicableException.java
new file mode 100644 (file)
index 0000000..ba5ea87
--- /dev/null
@@ -0,0 +1,15 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/ObjectProperties.java b/Workspace/SPlat/src/org/splat/kernel/ObjectProperties.java
new file mode 100644 (file)
index 0000000..5f4c15a
--- /dev/null
@@ -0,0 +1,32 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Persistent.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/Persistent.hbm.xml
new file mode 100644 (file)
index 0000000..019827e
--- /dev/null
@@ -0,0 +1,23 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Persistent.java b/Workspace/SPlat/src/org/splat/kernel/Persistent.java
new file mode 100644 (file)
index 0000000..454bb0d
--- /dev/null
@@ -0,0 +1,127 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/RealmLoginModule.java b/Workspace/SPlat/src/org/splat/kernel/RealmLoginModule.java
new file mode 100644 (file)
index 0000000..fcc0b28
--- /dev/null
@@ -0,0 +1,134 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Relation.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/Relation.hbm.xml
new file mode 100644 (file)
index 0000000..48012c6
--- /dev/null
@@ -0,0 +1,32 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Relation.java b/Workspace/SPlat/src/org/splat/kernel/Relation.java
new file mode 100644 (file)
index 0000000..a4c017b
--- /dev/null
@@ -0,0 +1,114 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Role.java b/Workspace/SPlat/src/org/splat/kernel/Role.java
new file mode 100644 (file)
index 0000000..a6c3ba1
--- /dev/null
@@ -0,0 +1,71 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Text.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/Text.hbm.xml
new file mode 100644 (file)
index 0000000..cebf35d
--- /dev/null
@@ -0,0 +1,22 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/Text.java b/Workspace/SPlat/src/org/splat/kernel/Text.java
new file mode 100644 (file)
index 0000000..9e55031
--- /dev/null
@@ -0,0 +1,43 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/TextAttribute.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/TextAttribute.hbm.xml
new file mode 100644 (file)
index 0000000..7089eb5
--- /dev/null
@@ -0,0 +1,17 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/TextAttribute.java b/Workspace/SPlat/src/org/splat/kernel/TextAttribute.java
new file mode 100644 (file)
index 0000000..1e2c93f
--- /dev/null
@@ -0,0 +1,45 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/User.hbm.xml b/Workspace/SPlat/src/org/splat/kernel/User.hbm.xml
new file mode 100644 (file)
index 0000000..885767e
--- /dev/null
@@ -0,0 +1,40 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/kernel/User.java b/Workspace/SPlat/src/org/splat/kernel/User.java
new file mode 100644 (file)
index 0000000..1ec7e46
--- /dev/null
@@ -0,0 +1,233 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/UserDirectory.java b/Workspace/SPlat/src/org/splat/kernel/UserDirectory.java
new file mode 100644 (file)
index 0000000..d46adb9
--- /dev/null
@@ -0,0 +1,201 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/XDOM.java b/Workspace/SPlat/src/org/splat/kernel/XDOM.java
new file mode 100644 (file)
index 0000000..3f9c6e8
--- /dev/null
@@ -0,0 +1,106 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/kernel/XMLException.java b/Workspace/SPlat/src/org/splat/kernel/XMLException.java
new file mode 100644 (file)
index 0000000..dc7cbb1
--- /dev/null
@@ -0,0 +1,17 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/manox/Reader.java b/Workspace/SPlat/src/org/splat/manox/Reader.java
new file mode 100644 (file)
index 0000000..1eec645
--- /dev/null
@@ -0,0 +1,8 @@
+package org.splat.manox;
+
+
+public interface Reader {
+
+    public  String extractProperty (String name);
+    public  String extractText ();
+}
\ No newline at end of file
diff --git a/Workspace/SPlat/src/org/splat/manox/Toolbox.java b/Workspace/SPlat/src/org/splat/manox/Toolbox.java
new file mode 100644 (file)
index 0000000..20954bf
--- /dev/null
@@ -0,0 +1,44 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/manox/TypeMismatchException.java b/Workspace/SPlat/src/org/splat/manox/TypeMismatchException.java
new file mode 100644 (file)
index 0000000..55d1650
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/manox/WordDOCXDocument.java b/Workspace/SPlat/src/org/splat/manox/WordDOCXDocument.java
new file mode 100644 (file)
index 0000000..e1e3ede
--- /dev/null
@@ -0,0 +1,59 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/manox/WordXMLDocument.java b/Workspace/SPlat/src/org/splat/manox/WordXMLDocument.java
new file mode 100644 (file)
index 0000000..8b6a295
--- /dev/null
@@ -0,0 +1,170 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/manox/Writer.java b/Workspace/SPlat/src/org/splat/manox/Writer.java
new file mode 100644 (file)
index 0000000..afa62d8
--- /dev/null
@@ -0,0 +1,8 @@
+package org.splat.manox;
+
+
+public interface Writer {
+
+    public  String  updateProperty (String name, String value);
+    public  boolean save ();
+}
\ No newline at end of file
diff --git a/Workspace/SPlat/src/org/splat/manox/XMLDocument.java b/Workspace/SPlat/src/org/splat/manox/XMLDocument.java
new file mode 100644 (file)
index 0000000..ab94d20
--- /dev/null
@@ -0,0 +1,130 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ActorRelation.java b/Workspace/SPlat/src/org/splat/som/ActorRelation.java
new file mode 100644 (file)
index 0000000..72fed4f
--- /dev/null
@@ -0,0 +1,52 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ApplicationRights.java b/Workspace/SPlat/src/org/splat/som/ApplicationRights.java
new file mode 100644 (file)
index 0000000..2bde8cd
--- /dev/null
@@ -0,0 +1,90 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Attributes.hbm.xml b/Workspace/SPlat/src/org/splat/som/Attributes.hbm.xml
new file mode 100644 (file)
index 0000000..c1eb9e0
--- /dev/null
@@ -0,0 +1,24 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/CommentAttribute.java b/Workspace/SPlat/src/org/splat/som/CommentAttribute.java
new file mode 100644 (file)
index 0000000..ff8636d
--- /dev/null
@@ -0,0 +1,33 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ContributorRelation.java b/Workspace/SPlat/src/org/splat/som/ContributorRelation.java
new file mode 100644 (file)
index 0000000..2f3f3dd
--- /dev/null
@@ -0,0 +1,25 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ConvertsRelation.java b/Workspace/SPlat/src/org/splat/som/ConvertsRelation.java
new file mode 100644 (file)
index 0000000..5d77c75
--- /dev/null
@@ -0,0 +1,70 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Database.java b/Workspace/SPlat/src/org/splat/som/Database.java
new file mode 100644 (file)
index 0000000..4cca8a2
--- /dev/null
@@ -0,0 +1,712 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/DescriptionAttribute.java b/Workspace/SPlat/src/org/splat/som/DescriptionAttribute.java
new file mode 100644 (file)
index 0000000..906ccf1
--- /dev/null
@@ -0,0 +1,53 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Document.hbm.xml b/Workspace/SPlat/src/org/splat/som/Document.hbm.xml
new file mode 100644 (file)
index 0000000..f42acac
--- /dev/null
@@ -0,0 +1,80 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/Document.java b/Workspace/SPlat/src/org/splat/som/Document.java
new file mode 100644 (file)
index 0000000..8275cb4
--- /dev/null
@@ -0,0 +1,776 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/DocumentRights.java b/Workspace/SPlat/src/org/splat/som/DocumentRights.java
new file mode 100644 (file)
index 0000000..4eb9845
--- /dev/null
@@ -0,0 +1,370 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/DocumentType.java b/Workspace/SPlat/src/org/splat/som/DocumentType.java
new file mode 100644 (file)
index 0000000..2e0f169
--- /dev/null
@@ -0,0 +1,199 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Entity.java b/Workspace/SPlat/src/org/splat/som/Entity.java
new file mode 100644 (file)
index 0000000..16b87ce
--- /dev/null
@@ -0,0 +1,53 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/File.hbm.xml b/Workspace/SPlat/src/org/splat/som/File.hbm.xml
new file mode 100644 (file)
index 0000000..86371b2
--- /dev/null
@@ -0,0 +1,32 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/File.java b/Workspace/SPlat/src/org/splat/som/File.java
new file mode 100644 (file)
index 0000000..1a1d37d
--- /dev/null
@@ -0,0 +1,109 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/IDBuilder.hbm.xml b/Workspace/SPlat/src/org/splat/som/IDBuilder.hbm.xml
new file mode 100644 (file)
index 0000000..90520be
--- /dev/null
@@ -0,0 +1,22 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/IDBuilder.java b/Workspace/SPlat/src/org/splat/som/IDBuilder.java
new file mode 100644 (file)
index 0000000..5bc18f9
--- /dev/null
@@ -0,0 +1,90 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Index.java b/Workspace/SPlat/src/org/splat/som/Index.java
new file mode 100644 (file)
index 0000000..2f5194b
--- /dev/null
@@ -0,0 +1,274 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/KnowledgeElement.hbm.xml b/Workspace/SPlat/src/org/splat/som/KnowledgeElement.hbm.xml
new file mode 100644 (file)
index 0000000..fbd7abe
--- /dev/null
@@ -0,0 +1,54 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/KnowledgeElement.java b/Workspace/SPlat/src/org/splat/som/KnowledgeElement.java
new file mode 100644 (file)
index 0000000..2df8aad
--- /dev/null
@@ -0,0 +1,378 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/KnowledgeElementType.java b/Workspace/SPlat/src/org/splat/som/KnowledgeElementType.java
new file mode 100644 (file)
index 0000000..0b181cd
--- /dev/null
@@ -0,0 +1,90 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Profile.java b/Workspace/SPlat/src/org/splat/som/Profile.java
new file mode 100644 (file)
index 0000000..98663fa
--- /dev/null
@@ -0,0 +1,14 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ProgressState.java b/Workspace/SPlat/src/org/splat/som/ProgressState.java
new file mode 100644 (file)
index 0000000..338f14c
--- /dev/null
@@ -0,0 +1,13 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ProjectElement.hbm.xml b/Workspace/SPlat/src/org/splat/som/ProjectElement.hbm.xml
new file mode 100644 (file)
index 0000000..3f04647
--- /dev/null
@@ -0,0 +1,46 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/ProjectElement.java b/Workspace/SPlat/src/org/splat/som/ProjectElement.java
new file mode 100644 (file)
index 0000000..ad56870
--- /dev/null
@@ -0,0 +1,199 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ProjectSettings.java b/Workspace/SPlat/src/org/splat/som/ProjectSettings.java
new file mode 100644 (file)
index 0000000..7bd1d8f
--- /dev/null
@@ -0,0 +1,485 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Proxy.java b/Workspace/SPlat/src/org/splat/som/Proxy.java
new file mode 100644 (file)
index 0000000..c316ede
--- /dev/null
@@ -0,0 +1,48 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Publication.hbm.xml b/Workspace/SPlat/src/org/splat/som/Publication.hbm.xml
new file mode 100644 (file)
index 0000000..cba98a2
--- /dev/null
@@ -0,0 +1,32 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/Publication.java b/Workspace/SPlat/src/org/splat/som/Publication.java
new file mode 100644 (file)
index 0000000..d7969ee
--- /dev/null
@@ -0,0 +1,506 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Relations.hbm.xml b/Workspace/SPlat/src/org/splat/som/Relations.hbm.xml
new file mode 100644 (file)
index 0000000..ad4b6ea
--- /dev/null
@@ -0,0 +1,55 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/Revision.java b/Workspace/SPlat/src/org/splat/som/Revision.java
new file mode 100644 (file)
index 0000000..ea06e7f
--- /dev/null
@@ -0,0 +1,211 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Scenario.hbm.xml b/Workspace/SPlat/src/org/splat/som/Scenario.hbm.xml
new file mode 100644 (file)
index 0000000..d2cf503
--- /dev/null
@@ -0,0 +1,30 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/Scenario.java b/Workspace/SPlat/src/org/splat/som/Scenario.java
new file mode 100644 (file)
index 0000000..845fb6d
--- /dev/null
@@ -0,0 +1,381 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/SimulationContext.hbm.xml b/Workspace/SPlat/src/org/splat/som/SimulationContext.hbm.xml
new file mode 100644 (file)
index 0000000..71936c6
--- /dev/null
@@ -0,0 +1,48 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/SimulationContext.java b/Workspace/SPlat/src/org/splat/som/SimulationContext.java
new file mode 100644 (file)
index 0000000..03c159e
--- /dev/null
@@ -0,0 +1,241 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/SimulationContextType.java b/Workspace/SPlat/src/org/splat/som/SimulationContextType.java
new file mode 100644 (file)
index 0000000..c56392f
--- /dev/null
@@ -0,0 +1,110 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/StampRelation.java b/Workspace/SPlat/src/org/splat/som/StampRelation.java
new file mode 100644 (file)
index 0000000..3ff6c12
--- /dev/null
@@ -0,0 +1,48 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Step.java b/Workspace/SPlat/src/org/splat/som/Step.java
new file mode 100644 (file)
index 0000000..e22975e
--- /dev/null
@@ -0,0 +1,396 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/StepRights.java b/Workspace/SPlat/src/org/splat/som/StepRights.java
new file mode 100644 (file)
index 0000000..af15d5c
--- /dev/null
@@ -0,0 +1,109 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Study.hbm.xml b/Workspace/SPlat/src/org/splat/som/Study.hbm.xml
new file mode 100644 (file)
index 0000000..db71ba0
--- /dev/null
@@ -0,0 +1,48 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/Study.java b/Workspace/SPlat/src/org/splat/som/Study.java
new file mode 100644 (file)
index 0000000..ec5430a
--- /dev/null
@@ -0,0 +1,672 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/StudyRights.java b/Workspace/SPlat/src/org/splat/som/StudyRights.java
new file mode 100644 (file)
index 0000000..4b23afc
--- /dev/null
@@ -0,0 +1,101 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Timestamp.hbm.xml b/Workspace/SPlat/src/org/splat/som/Timestamp.hbm.xml
new file mode 100644 (file)
index 0000000..ea90b78
--- /dev/null
@@ -0,0 +1,42 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/Timestamp.java b/Workspace/SPlat/src/org/splat/som/Timestamp.java
new file mode 100644 (file)
index 0000000..6884a4b
--- /dev/null
@@ -0,0 +1,88 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/UsedByRelation.java b/Workspace/SPlat/src/org/splat/som/UsedByRelation.java
new file mode 100644 (file)
index 0000000..a498bdf
--- /dev/null
@@ -0,0 +1,58 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/UsesRelation.java b/Workspace/SPlat/src/org/splat/som/UsesRelation.java
new file mode 100644 (file)
index 0000000..0c815c3
--- /dev/null
@@ -0,0 +1,59 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ValidationCycle.hbm.xml b/Workspace/SPlat/src/org/splat/som/ValidationCycle.hbm.xml
new file mode 100644 (file)
index 0000000..eaa8978
--- /dev/null
@@ -0,0 +1,40 @@
+<?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
diff --git a/Workspace/SPlat/src/org/splat/som/ValidationCycle.java b/Workspace/SPlat/src/org/splat/som/ValidationCycle.java
new file mode 100644 (file)
index 0000000..42a569c
--- /dev/null
@@ -0,0 +1,279 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ValidationCycleRelation.java b/Workspace/SPlat/src/org/splat/som/ValidationCycleRelation.java
new file mode 100644 (file)
index 0000000..dea6b5e
--- /dev/null
@@ -0,0 +1,54 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/ValidationStep.java b/Workspace/SPlat/src/org/splat/som/ValidationStep.java
new file mode 100644 (file)
index 0000000..95bfdee
--- /dev/null
@@ -0,0 +1,11 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/VersionsRelation.java b/Workspace/SPlat/src/org/splat/som/VersionsRelation.java
new file mode 100644 (file)
index 0000000..d65cee2
--- /dev/null
@@ -0,0 +1,70 @@
+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
diff --git a/Workspace/SPlat/src/org/splat/som/Visibility.java b/Workspace/SPlat/src/org/splat/som/Visibility.java
new file mode 100644 (file)
index 0000000..e66d85c
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/Workspace/SPlat/src/som.properties b/Workspace/SPlat/src/som.properties
new file mode 100644 (file)
index 0000000..11e83af
--- /dev/null
@@ -0,0 +1,64 @@
+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
diff --git a/Workspace/SPlat/src/som.xml b/Workspace/SPlat/src/som.xml
new file mode 100644 (file)
index 0000000..438643c
--- /dev/null
@@ -0,0 +1,245 @@
+<?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
diff --git a/Workspace/SPlat/src/som_en.properties b/Workspace/SPlat/src/som_en.properties
new file mode 100644 (file)
index 0000000..8a16f83
--- /dev/null
@@ -0,0 +1,65 @@
+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
diff --git a/Workspace/SPlat/src/study.xml b/Workspace/SPlat/src/study.xml
new file mode 100644 (file)
index 0000000..59d62c0
--- /dev/null
@@ -0,0 +1,39 @@
+<?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
diff --git a/Workspace/SPlat/src/users.xml b/Workspace/SPlat/src/users.xml
new file mode 100644 (file)
index 0000000..2993dc8
--- /dev/null
@@ -0,0 +1,62 @@
+<?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
diff --git a/Workspace/Servers/.pmd b/Workspace/Servers/.pmd
new file mode 100644 (file)
index 0000000..a91fce3
--- /dev/null
@@ -0,0 +1,960 @@
+<?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>
diff --git a/Workspace/Servers/.project b/Workspace/Servers/.project
new file mode 100644 (file)
index 0000000..0fa764d
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>Servers</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+       </buildSpec>
+       <natures>
+       </natures>
+</projectDescription>
diff --git a/Workspace/Servers/.settings/org.eclipse.wst.server.core.prefs b/Workspace/Servers/.settings/org.eclipse.wst.server.core.prefs
new file mode 100644 (file)
index 0000000..2cc9bee
--- /dev/null
@@ -0,0 +1,3 @@
+#Wed Sep 12 17:57:21 MSD 2012
+org.eclipse.wst.server.core.isServerProject=true
+eclipse.preferences.version=1
diff --git a/Workspace/Servers/Tomcat v6.0 Server at localhost-config/catalina.policy b/Workspace/Servers/Tomcat v6.0 Server at localhost-config/catalina.policy
new file mode 100644 (file)
index 0000000..8bca476
--- /dev/null
@@ -0,0 +1,222 @@
+// 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";
+// };
+
diff --git a/Workspace/Servers/Tomcat v6.0 Server at localhost-config/catalina.properties b/Workspace/Servers/Tomcat v6.0 Server at localhost-config/catalina.properties
new file mode 100644 (file)
index 0000000..dc2db35
--- /dev/null
@@ -0,0 +1,81 @@
+# 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
diff --git a/Workspace/Servers/Tomcat v6.0 Server at localhost-config/server.xml b/Workspace/Servers/Tomcat v6.0 Server at localhost-config/server.xml
new file mode 100644 (file)
index 0000000..50b798d
--- /dev/null
@@ -0,0 +1,137 @@
+<?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
diff --git a/Workspace/Servers/Tomcat v6.0 Server at localhost-config/tomcat-users.xml b/Workspace/Servers/Tomcat v6.0 Server at localhost-config/tomcat-users.xml
new file mode 100644 (file)
index 0000000..2a456d8
--- /dev/null
@@ -0,0 +1,37 @@
+<?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
diff --git a/Workspace/Servers/Tomcat v6.0 Server at localhost-config/web.xml b/Workspace/Servers/Tomcat v6.0 Server at localhost-config/web.xml
new file mode 100644 (file)
index 0000000..18995a9
--- /dev/null
@@ -0,0 +1,1226 @@
+<?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
diff --git a/Workspace/Siman-Common/.checkstyle b/Workspace/Siman-Common/.checkstyle
new file mode 100644 (file)
index 0000000..c606f32
--- /dev/null
@@ -0,0 +1,6 @@
+<?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>
diff --git a/Workspace/Siman-Common/.classpath b/Workspace/Siman-Common/.classpath
new file mode 100644 (file)
index 0000000..705eabe
--- /dev/null
@@ -0,0 +1,31 @@
+<?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>
diff --git a/Workspace/Siman-Common/.externalToolBuilders/Ant_Siman_Common_Builder.launch b/Workspace/Siman-Common/.externalToolBuilders/Ant_Siman_Common_Builder.launch
new file mode 100644 (file)
index 0000000..8a058ba
--- /dev/null
@@ -0,0 +1,22 @@
+<?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:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/SPlat/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman-Common/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<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>
diff --git a/Workspace/Siman-Common/.pmd b/Workspace/Siman-Common/.pmd
new file mode 100644 (file)
index 0000000..05d8fd4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+    <useProjectRuleSet>true</useProjectRuleSet>
+    <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+    <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
diff --git a/Workspace/Siman-Common/.project b/Workspace/Siman-Common/.project
new file mode 100644 (file)
index 0000000..775fb4d
--- /dev/null
@@ -0,0 +1,59 @@
+<?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>&lt;project&gt;/.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>
diff --git a/Workspace/Siman-Common/.ruleset b/Workspace/Siman-Common/.ruleset
new file mode 100644 (file)
index 0000000..93ce6b6
--- /dev/null
@@ -0,0 +1,239 @@
+<?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>
diff --git a/Workspace/Siman-Common/.settings/org.eclipse.jdt.core.prefs b/Workspace/Siman-Common/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..9e4698a
--- /dev/null
@@ -0,0 +1,7 @@
+#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
diff --git a/Workspace/Siman-Common/.settings/org.eclipse.wst.common.component b/Workspace/Siman-Common/.settings/org.eclipse.wst.common.component
new file mode 100644 (file)
index 0000000..702dc81
--- /dev/null
@@ -0,0 +1,6 @@
+<?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>
diff --git a/Workspace/Siman-Common/.settings/org.eclipse.wst.common.project.facet.core.xml b/Workspace/Siman-Common/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644 (file)
index 0000000..d0e0b2d
--- /dev/null
@@ -0,0 +1,7 @@
+<?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>
diff --git a/Workspace/Siman-Common/.springBeans b/Workspace/Siman-Common/.springBeans
new file mode 100644 (file)
index 0000000..2ef260c
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+       <configExtensions>
+               <configExtension>xml</configExtension>
+       </configExtensions>
+       <configs>
+               <config>src/spring/globalContext.xml</config>
+       </configs>
+       <configSets>
+       </configSets>
+</beansProjectDescription>
diff --git a/Workspace/Siman-Common/build.properties b/Workspace/Siman-Common/build.properties
new file mode 100644 (file)
index 0000000..be45f31
--- /dev/null
@@ -0,0 +1,6 @@
+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
diff --git a/Workspace/Siman-Common/build.xml b/Workspace/Siman-Common/build.xml
new file mode 100644 (file)
index 0000000..b28c036
--- /dev/null
@@ -0,0 +1,78 @@
+<?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>
diff --git a/Workspace/Siman-Common/lib/org.springframework.aop-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.aop-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..1df4517
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.aop-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.asm-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.asm-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..e313098
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.asm-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.aspects-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.aspects-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..85b494c
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.aspects-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.beans-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.beans-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..ef7d47c
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.beans-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.context-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.context-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..e0d069e
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.context-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.context.support-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.context.support-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..f0db48c
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.context.support-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.core-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.core-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..8d054dd
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.core-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.expression-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.expression-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..508a36f
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.expression-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.instrument-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.instrument-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..dff07d6
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.instrument-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.instrument.tomcat-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.instrument.tomcat-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..252e723
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.instrument.tomcat-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.jdbc-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.jdbc-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..339c541
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.jdbc-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.jms-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.jms-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..864f452
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.jms-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.orm-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.orm-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..f405b89
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.orm-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.oxm-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.oxm-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..aca1d2e
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.oxm-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.test-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.test-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..da33e99
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.test-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.transaction-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.transaction-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..dec05a0
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.transaction-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.web-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.web-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..837a7b4
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.web-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.web.portlet-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.web.portlet-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..9e00b44
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.web.portlet-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.web.servlet-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.web.servlet-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..320ab43
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.web.servlet-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/lib/org.springframework.web.struts-3.1.2.RELEASE.jar b/Workspace/Siman-Common/lib/org.springframework.web.struts-3.1.2.RELEASE.jar
new file mode 100644 (file)
index 0000000..836f4cb
Binary files /dev/null and b/Workspace/Siman-Common/lib/org.springframework.web.struts-3.1.2.RELEASE.jar differ
diff --git a/Workspace/Siman-Common/siman-pmd.ruleset b/Workspace/Siman-Common/siman-pmd.ruleset
new file mode 100644 (file)
index 0000000..534af48
--- /dev/null
@@ -0,0 +1,774 @@
+<?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>
diff --git a/Workspace/Siman-Common/src/META-INF/MANIFEST.MF b/Workspace/Siman-Common/src/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..254272e
--- /dev/null
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+
diff --git a/Workspace/Siman-Common/src/spring/globalContext.xml b/Workspace/Siman-Common/src/spring/globalContext.xml
new file mode 100644 (file)
index 0000000..f291fd4
--- /dev/null
@@ -0,0 +1,11 @@
+<?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>
diff --git a/Workspace/Siman/.checkstyle b/Workspace/Siman/.checkstyle
new file mode 100644 (file)
index 0000000..c606f32
--- /dev/null
@@ -0,0 +1,6 @@
+<?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>
diff --git a/Workspace/Siman/.classpath b/Workspace/Siman/.classpath
new file mode 100644 (file)
index 0000000..b3bcaa1
--- /dev/null
@@ -0,0 +1,17 @@
+<?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>
diff --git a/Workspace/Siman/.externalToolBuilders/Ant_Siman_Dev_Config_Builder.launch b/Workspace/Siman/.externalToolBuilders/Ant_Siman_Dev_Config_Builder.launch
new file mode 100644 (file)
index 0000000..e8fb2f2
--- /dev/null
@@ -0,0 +1,25 @@
+<?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:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/simer.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/hibernate.cfg.xml&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/struts.xml&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/labels.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/som_en.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/Test.java&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/spring&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/labels_en.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/jndi.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/som.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/log4j.xml&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/src/siman.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<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:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;workingSet&quot; name=&quot;workingSet&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/conf/debug.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/conf/templates&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<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>
diff --git a/Workspace/Siman/.externalToolBuilders/Ant_Siman_War_Builder.launch b/Workspace/Siman/.externalToolBuilders/Ant_Siman_War_Builder.launch
new file mode 100644 (file)
index 0000000..89b28ea
--- /dev/null
@@ -0,0 +1,21 @@
+<?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:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfigurationWorkingSet editPageId=&quot;org.eclipse.ui.resourceWorkingSetPage&quot; factoryID=&quot;org.eclipse.ui.internal.WorkingSetFactory&quot; label=&quot;working set&quot; name=&quot;working set&quot;&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/SPlat/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/Test.class&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/hibernate.cfg.xml&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/jndi.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/labels.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/labels_en.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/log4j.xml&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/siman.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/simer.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/som.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/som_en.properties&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/spring&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/build/classes/struts.xml&quot; type=&quot;1&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/conf/generated&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;item factoryID=&quot;org.eclipse.ui.internal.model.ResourceFactory&quot; path=&quot;/Siman-Common/dist&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/launchConfigurationWorkingSet&gt;}"/>
+<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>
diff --git a/Workspace/Siman/.pmd b/Workspace/Siman/.pmd
new file mode 100644 (file)
index 0000000..05d8fd4
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd>
+    <useProjectRuleSet>true</useProjectRuleSet>
+    <ruleSetFile>siman-pmd.ruleset</ruleSetFile>
+    <includeDerivedFiles>false</includeDerivedFiles>
+</pmd>
diff --git a/Workspace/Siman/.project b/Workspace/Siman/.project
new file mode 100644 (file)
index 0000000..60a040c
--- /dev/null
@@ -0,0 +1,64 @@
+<?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>&lt;project&gt;/.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>&lt;project&gt;/.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>
diff --git a/Workspace/Siman/.ruleset b/Workspace/Siman/.ruleset
new file mode 100644 (file)
index 0000000..d9cce2c
--- /dev/null
@@ -0,0 +1,235 @@
+<?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>
diff --git a/Workspace/Siman/.settings/org.eclipse.jdt.apt.core.prefs b/Workspace/Siman/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644 (file)
index 0000000..743a614
--- /dev/null
@@ -0,0 +1,4 @@
+#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
diff --git a/Workspace/Siman/.settings/org.eclipse.jdt.core.prefs b/Workspace/Siman/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..6eaba40
--- /dev/null
@@ -0,0 +1,8 @@
+#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
diff --git a/Workspace/Siman/.settings/org.eclipse.jst.common.project.facet.core.prefs b/Workspace/Siman/.settings/org.eclipse.jst.common.project.facet.core.prefs
new file mode 100644 (file)
index 0000000..358b769
--- /dev/null
@@ -0,0 +1,4 @@
+#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
diff --git a/Workspace/Siman/.settings/org.eclipse.ltk.core.refactoring.prefs b/Workspace/Siman/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644 (file)
index 0000000..981fe80
--- /dev/null
@@ -0,0 +1,3 @@
+#Thu Sep 20 12:53:11 MSD 2012
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/Workspace/Siman/.settings/org.eclipse.wst.common.component b/Workspace/Siman/.settings/org.eclipse.wst.common.component
new file mode 100644 (file)
index 0000000..849ba45
--- /dev/null
@@ -0,0 +1,145 @@
+<?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>
diff --git a/Workspace/Siman/.settings/org.eclipse.wst.common.project.facet.core.xml b/Workspace/Siman/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644 (file)
index 0000000..c0a8123
--- /dev/null
@@ -0,0 +1,9 @@
+<?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>
diff --git a/Workspace/Siman/.settings/org.eclipse.wst.validation.prefs b/Workspace/Siman/.settings/org.eclipse.wst.validation.prefs
new file mode 100644 (file)
index 0000000..0963748
--- /dev/null
@@ -0,0 +1,6 @@
+#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
diff --git a/Workspace/Siman/WebContent/META-INF/MANIFEST.MF b/Workspace/Siman/WebContent/META-INF/MANIFEST.MF
new file mode 100644 (file)
index 0000000..59499bc
--- /dev/null
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/activemq-core-5.5.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/activemq-core-5.5.1.jar
new file mode 100644 (file)
index 0000000..7ea9077
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/activemq-core-5.5.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/commons-fileupload-1.2.2.jar b/Workspace/Siman/WebContent/WEB-INF/lib/commons-fileupload-1.2.2.jar
new file mode 100644 (file)
index 0000000..131f192
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/commons-fileupload-1.2.2.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/commons-io-2.0.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/commons-io-2.0.1.jar
new file mode 100644 (file)
index 0000000..5b64b7d
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/commons-io-2.0.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/commons-lang3-3.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/commons-lang3-3.1.jar
new file mode 100644 (file)
index 0000000..a85e539
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/commons-lang3-3.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar
new file mode 100644 (file)
index 0000000..1deef14
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-1.1.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-api-1.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-api-1.1.jar
new file mode 100644 (file)
index 0000000..d1abcbb
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/commons-logging-api-1.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/commons-validator-1.3.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/commons-validator-1.3.1.jar
new file mode 100644 (file)
index 0000000..55b12b1
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/commons-validator-1.3.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/freemarker-2.3.19.jar b/Workspace/Siman/WebContent/WEB-INF/lib/freemarker-2.3.19.jar
new file mode 100644 (file)
index 0000000..b13671d
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/freemarker-2.3.19.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/geronimo-j2ee-management_1.1_spec-1.0.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/geronimo-j2ee-management_1.1_spec-1.0.1.jar
new file mode 100644 (file)
index 0000000..0701ae0
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/geronimo-j2ee-management_1.1_spec-1.0.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/javax.jms.jar b/Workspace/Siman/WebContent/WEB-INF/lib/javax.jms.jar
new file mode 100644 (file)
index 0000000..64a26bc
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/javax.jms.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/ognl-3.0.5.jar b/Workspace/Siman/WebContent/WEB-INF/lib/ognl-3.0.5.jar
new file mode 100644 (file)
index 0000000..cd6dbaa
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/ognl-3.0.5.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/struts2-core-2.3.4.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/struts2-core-2.3.4.1.jar
new file mode 100644 (file)
index 0000000..36f6088
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/struts2-core-2.3.4.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/struts2-spring-plugin-2.3.4.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/struts2-spring-plugin-2.3.4.1.jar
new file mode 100644 (file)
index 0000000..5114499
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/struts2-spring-plugin-2.3.4.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/struts2-tiles-plugin-2.3.4.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/struts2-tiles-plugin-2.3.4.1.jar
new file mode 100644 (file)
index 0000000..43693bb
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/struts2-tiles-plugin-2.3.4.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/tiles-api-2.0.6.jar b/Workspace/Siman/WebContent/WEB-INF/lib/tiles-api-2.0.6.jar
new file mode 100644 (file)
index 0000000..76721f6
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/tiles-api-2.0.6.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/tiles-core-2.0.6.jar b/Workspace/Siman/WebContent/WEB-INF/lib/tiles-core-2.0.6.jar
new file mode 100644 (file)
index 0000000..8fff43c
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/tiles-core-2.0.6.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/tiles-jsp-2.0.6.jar b/Workspace/Siman/WebContent/WEB-INF/lib/tiles-jsp-2.0.6.jar
new file mode 100644 (file)
index 0000000..ff4f246
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/tiles-jsp-2.0.6.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/lib/xwork-core-2.3.4.1.jar b/Workspace/Siman/WebContent/WEB-INF/lib/xwork-core-2.3.4.1.jar
new file mode 100644 (file)
index 0000000..a78b1db
Binary files /dev/null and b/Workspace/Siman/WebContent/WEB-INF/lib/xwork-core-2.3.4.1.jar differ
diff --git a/Workspace/Siman/WebContent/WEB-INF/web.xml b/Workspace/Siman/WebContent/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..88912fb
--- /dev/null
@@ -0,0 +1,44 @@
+<?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>
diff --git a/Workspace/Siman/WebContent/conf/download.xml b/Workspace/Siman/WebContent/conf/download.xml
new file mode 100644 (file)
index 0000000..4767d46
--- /dev/null
@@ -0,0 +1 @@
+<Context path="/download" docBase="REPOSITORY_HOME/downloads" crossContext="true" reloadable="true" />
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/conf/login.conf b/Workspace/Siman/WebContent/conf/login.conf
new file mode 100644 (file)
index 0000000..e11cfc5
--- /dev/null
@@ -0,0 +1,3 @@
+Simer {
+  org.splat.kernel.RealmLoginModule required debug=true;
+};
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/conf/my.xml b/Workspace/Siman/WebContent/conf/my.xml
new file mode 100644 (file)
index 0000000..6697d17
--- /dev/null
@@ -0,0 +1,55 @@
+<?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
diff --git a/Workspace/Siman/WebContent/conf/repository.xml b/Workspace/Siman/WebContent/conf/repository.xml
new file mode 100644 (file)
index 0000000..30aeb7c
--- /dev/null
@@ -0,0 +1 @@
+<Context path="/repository" docBase="REPOSITORY_HOME/vault" crossContext="true" reloadable="true" />
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/conf/som.xml b/Workspace/Siman/WebContent/conf/som.xml
new file mode 100644 (file)
index 0000000..dc649cb
--- /dev/null
@@ -0,0 +1,197 @@
+<?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
diff --git a/Workspace/Siman/WebContent/dtd/struts-2.0.dtd b/Workspace/Siman/WebContent/dtd/struts-2.0.dtd
new file mode 100644 (file)
index 0000000..7400cc6
--- /dev/null
@@ -0,0 +1,140 @@
+<?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 -->
+
diff --git a/Workspace/Siman/WebContent/error.jsp b/Workspace/Siman/WebContent/error.jsp
new file mode 100644 (file)
index 0000000..2b048c1
--- /dev/null
@@ -0,0 +1,22 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/home.jsp b/Workspace/Siman/WebContent/home.jsp
new file mode 100644 (file)
index 0000000..a845242
--- /dev/null
@@ -0,0 +1,40 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/jap/launcherkeystore b/Workspace/Siman/WebContent/jap/launcherkeystore
new file mode 100644 (file)
index 0000000..cf0ad9d
Binary files /dev/null and b/Workspace/Siman/WebContent/jap/launcherkeystore differ
diff --git a/Workspace/Siman/WebContent/jap/splat-launcher.jar b/Workspace/Siman/WebContent/jap/splat-launcher.jar
new file mode 100644 (file)
index 0000000..84a57b4
Binary files /dev/null and b/Workspace/Siman/WebContent/jap/splat-launcher.jar differ
diff --git a/Workspace/Siman/WebContent/jap/splat-signedlauncher.jar b/Workspace/Siman/WebContent/jap/splat-signedlauncher.jar
new file mode 100644 (file)
index 0000000..13bf335
Binary files /dev/null and b/Workspace/Siman/WebContent/jap/splat-signedlauncher.jar differ
diff --git a/Workspace/Siman/WebContent/jsp/checkin.jsp b/Workspace/Siman/WebContent/jsp/checkin.jsp
new file mode 100644 (file)
index 0000000..0a1baa3
--- /dev/null
@@ -0,0 +1,18 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/jsp/editContents.jsp b/Workspace/Siman/WebContent/jsp/editContents.jsp
new file mode 100644 (file)
index 0000000..6929ece
--- /dev/null
@@ -0,0 +1,177 @@
+<%@ 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>&nbsp;<s:text name="label.version"/>&nbsp;</td>
+    <td width=80 align=right><s:text name="label.size"/>&nbsp;&nbsp;&nbsp;</td>
+    <td width=75 align=left>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;<s:property value="version"/>&nbsp;</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"/>&nbsp;&nbsp;</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>&nbsp;<s:property value="title"/></td>
+            <td align=center><s:property value="version"/></td>
+            <td align=right><s:property value="size"/>&nbsp;&nbsp;</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>&nbsp;
+              <s:property value="format"/>&nbsp;<s:property value="description"/>
+            </td>
+            <td align=center></td>
+            <td align=right><s:property value="size"/>&nbsp;&nbsp;</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"/>&nbsp;&nbsp;</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
diff --git a/Workspace/Siman/WebContent/jsp/editContext.jsp b/Workspace/Siman/WebContent/jsp/editContext.jsp
new file mode 100644 (file)
index 0000000..983161d
--- /dev/null
@@ -0,0 +1,149 @@
+<%@ 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}"/>:&nbsp;</b></s:if>
+        <s:else><b><s:property value="%{typeName}"/>:&nbsp;</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">&nbsp;<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="&nbsp;<s:text name="label.contypes.valid"/>"></s:if>
+                <s:else><optgroup label="&nbsp;<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()}">&nbsp;<s:text name="type.context.%{name}"/></s:if>
+                <s:else>&nbsp;<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}"/>:&nbsp;</b></s:if>
+        <s:else><b><s:property value="%{typeName}"/>:&nbsp;</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"/>">&nbsp;:&nbsp;</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}"/>:&nbsp;</b></s:if>
+        <s:else><b><s:property value="%{contextName}"/>:&nbsp;</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">&nbsp;<s:text name="menu.newcontext"/></option>
+            <optgroup label="&nbsp;<s:text name="label.contexts"/>">
+              <s:iterator value="simulationContextValues">
+                <option value="<s:property value="index"/>">&nbsp;<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
diff --git a/Workspace/Siman/WebContent/jsp/editKnowledge.jsp b/Workspace/Siman/WebContent/jsp/editKnowledge.jsp
new file mode 100644 (file)
index 0000000..bceee0a
--- /dev/null
@@ -0,0 +1,132 @@
+<%@ 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>&nbsp;</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
diff --git a/Workspace/Siman/WebContent/jsp/knowledgeProperties.jsp b/Workspace/Siman/WebContent/jsp/knowledgeProperties.jsp
new file mode 100644 (file)
index 0000000..ef8f961
--- /dev/null
@@ -0,0 +1,37 @@
+<%@ 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">&nbsp;&nbsp;<s:text name="title.properties"/>&nbsp;&nbsp;</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>&nbsp;<s:text name="label.reference"/>:&nbsp;</td>
+        <td><%=entity.getReference()%></td>
+      </tr>
+      <tr>
+        <td>&nbsp;<s:text name="label.author"/>:&nbsp;</td>
+        <td><%=entity.getAuthorName()%></td>
+      </tr>
+      <tr>
+        <td>&nbsp;<s:text name="label.created"/>:&nbsp;</td>
+        <td><%=entity.getDate()%></td>
+      </tr>
+      <tr height=2><td></td></tr>
+    </table>
+  </div>
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/jsp/menubar.jsp b/Workspace/Siman/WebContent/jsp/menubar.jsp
new file mode 100644 (file)
index 0000000..cf7129b
--- /dev/null
@@ -0,0 +1,134 @@
+<%@ 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>|&nbsp;&nbsp;<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
diff --git a/Workspace/Siman/WebContent/jsp/menuitem.jsp b/Workspace/Siman/WebContent/jsp/menuitem.jsp
new file mode 100644 (file)
index 0000000..528ebd3
--- /dev/null
@@ -0,0 +1,93 @@
+<%@ 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">&nbsp;&nbsp;<s:text name="title.%{#menuname}"/>&nbsp;&nbsp;</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"/>">&nbsp;<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>&nbsp;<s:a href="%{#item}" cssClass="item"><s:text name="%{#menulabel}"/></s:a></td>
+<%      } else {
+%>          <td>&nbsp;<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
diff --git a/Workspace/Siman/WebContent/jsp/menupopup.jsp b/Workspace/Siman/WebContent/jsp/menupopup.jsp
new file mode 100644 (file)
index 0000000..0cb6e71
--- /dev/null
@@ -0,0 +1,83 @@
+<%@ 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;"/>&nbsp;</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
diff --git a/Workspace/Siman/WebContent/jsp/newDocument.jsp b/Workspace/Siman/WebContent/jsp/newDocument.jsp
new file mode 100644 (file)
index 0000000..aa15212
--- /dev/null
@@ -0,0 +1,27 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/jsp/readComment.jsp b/Workspace/Siman/WebContent/jsp/readComment.jsp
new file mode 100644 (file)
index 0000000..69345cd
--- /dev/null
@@ -0,0 +1,14 @@
+<%@ 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>&nbsp;</td>
+    </s:if>
+  </tr>
+</table>
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/jsp/readContents.jsp b/Workspace/Siman/WebContent/jsp/readContents.jsp
new file mode 100644 (file)
index 0000000..c8c4d47
--- /dev/null
@@ -0,0 +1,137 @@
+<%@ 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>&nbsp;<s:text name="label.version"/>&nbsp;</td>
+    <td width=80 align=right><s:text name="label.size"/>&nbsp;&nbsp;&nbsp;</td>
+    <td width=75 align=left>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;<s:property value="version"/>&nbsp;</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"/>&nbsp;&nbsp;</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>&nbsp;<s:property value="title"/></td>
+            <td align=center><s:property value="version"/></td>
+            <td align=right><s:property value="size"/>&nbsp;&nbsp;</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>&nbsp;
+              <s:property value="format"/>&nbsp;<s:property value="description"/>
+            </td>
+            <td align=center></td>
+            <td align=right><s:property value="size"/>&nbsp;&nbsp;</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"/>&nbsp;&nbsp;</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
diff --git a/Workspace/Siman/WebContent/jsp/readContext.jsp b/Workspace/Siman/WebContent/jsp/readContext.jsp
new file mode 100644 (file)
index 0000000..fc3ac60
--- /dev/null
@@ -0,0 +1,45 @@
+<%@ 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}"/>:&nbsp;</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
diff --git a/Workspace/Siman/WebContent/jsp/readDescription.jsp b/Workspace/Siman/WebContent/jsp/readDescription.jsp
new file mode 100644 (file)
index 0000000..a3d98e4
--- /dev/null
@@ -0,0 +1,27 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/jsp/readKnowledge.jsp b/Workspace/Siman/WebContent/jsp/readKnowledge.jsp
new file mode 100644 (file)
index 0000000..e8ac5ae
--- /dev/null
@@ -0,0 +1,128 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/jsp/searchForm.jsp b/Workspace/Siman/WebContent/jsp/searchForm.jsp
new file mode 100644 (file)
index 0000000..c75c17a
--- /dev/null
@@ -0,0 +1,141 @@
+<%@ 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%>&nbsp;&nbsp;<s:text name="field.among"/></td>
+              <td width=20%>&nbsp;&nbsp;<s:text name="field.state"/></td>
+              <td width=60%>&nbsp;&nbsp;<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/>&nbsp;
+                  </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"/>')">&nbsp;</td>
+                      <td>
+                        <s:if test="%{type.isApproved()}"><s:text name="type.context.%{type.name}"/>:&nbsp;</s:if>
+                        <s:else><s:property value="%{type.name}"/>:&nbsp;</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()" />&nbsp;
+                      </td>
+                      <td>
+                        <s:if test="%{selectedContextType.isApproved()}"><s:text name="type.context.%{selectedContextType.name}"/>:&nbsp;</s:if>
+                        <s:else><s:property value="%{selectedContextType.name}"/>:&nbsp;</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"/>">&nbsp;<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()}">&nbsp;<s:text name="type.context.%{name}" /></s:if>
+                              <s:else>&nbsp;<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"/>&nbsp;:&nbsp;<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>
diff --git a/Workspace/Siman/WebContent/jsp/searchtabs.jsp b/Workspace/Siman/WebContent/jsp/searchtabs.jsp
new file mode 100644 (file)
index 0000000..2db07ab
--- /dev/null
@@ -0,0 +1,29 @@
+<%@ 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">&nbsp;&nbsp;&nbsp;<s:text name="title.%{label}"/>&nbsp;&nbsp;&nbsp;</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'">&nbsp;&nbsp;&nbsp;<s:a href="%{#area}" cssClass="item"><s:text name="title.%{label}"/></s:a>&nbsp;&nbsp;&nbsp;</span>
+            </s:if>
+            <s:else>
+              <span id="tab-disabled">&nbsp;&nbsp;&nbsp;<s:text name="title.%{label}"/>&nbsp;&nbsp;&nbsp;</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
diff --git a/Workspace/Siman/WebContent/jsp/studyProperties.jsp b/Workspace/Siman/WebContent/jsp/studyProperties.jsp
new file mode 100644 (file)
index 0000000..851c68c
--- /dev/null
@@ -0,0 +1,45 @@
+<%@ 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">&nbsp;&nbsp;<s:text name="title.properties"/>&nbsp;&nbsp;</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>&nbsp;<s:text name="label.reference"/>:&nbsp;</td>
+        <td><%=entity.getReference()%></td>
+      </tr>
+      <tr>
+        <td>&nbsp;<s:text name="label.version"/>:&nbsp;</td>
+        <td><%=entity.getVersion()%></td>
+      </tr>
+      <tr>
+        <td>&nbsp;<s:text name="label.resp"/>:&nbsp;</td>
+        <td><%=entity.getAuthorName()%></td>
+      </tr>
+      <tr>
+        <td>&nbsp;<s:text name="label.created"/>:&nbsp;</td>
+        <td><%=entity.getDate()%></td>
+      </tr>
+      <tr>
+        <td>&nbsp;<s:text name="label.modified"/>:&nbsp;</td>
+        <td><%=entity.getLastModificationDate()%></td>
+      </tr>
+      <tr height=2><td></td></tr>
+    </table>
+  </div>
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/jsp/titlebar.jsp b/Workspace/Siman/WebContent/jsp/titlebar.jsp
new file mode 100644 (file)
index 0000000..bd5ed5e
--- /dev/null
@@ -0,0 +1,65 @@
+<%@ 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()%>:&nbsp;</b><%=entity.getTitle()%>&nbsp;&nbsp;
+      </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
diff --git a/Workspace/Siman/WebContent/jsp/toolbar.jsp b/Workspace/Siman/WebContent/jsp/toolbar.jsp
new file mode 100644 (file)
index 0000000..f1b2164
--- /dev/null
@@ -0,0 +1,86 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/jvs/action.js b/Workspace/Siman/WebContent/jvs/action.js
new file mode 100644 (file)
index 0000000..9c55f43
--- /dev/null
@@ -0,0 +1,30 @@
+    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("&amp;", "&");                     // Due to string conversion in menupopup JSP
+      }
+    }
\ No newline at end of file
diff --git a/Workspace/Siman/WebContent/jvs/popup.js b/Workspace/Siman/WebContent/jvs/popup.js
new file mode 100644 (file)
index 0000000..b36fda3
--- /dev/null
@@ -0,0 +1,108 @@
+//
+//  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
diff --git a/Workspace/Siman/WebContent/jvs/search.js b/Workspace/Siman/WebContent/jvs/search.js
new file mode 100644 (file)
index 0000000..b1f41d0
--- /dev/null
@@ -0,0 +1,78 @@
+    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
diff --git a/Workspace/Siman/WebContent/login.jsp b/Workspace/Siman/WebContent/login.jsp
new file mode 100644 (file)
index 0000000..6eff90d
--- /dev/null
@@ -0,0 +1,57 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/menu.jsp b/Workspace/Siman/WebContent/menu.jsp
new file mode 100644 (file)
index 0000000..4b90ed5
--- /dev/null
@@ -0,0 +1,44 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/plugin/converter.jar b/Workspace/Siman/WebContent/plugin/converter.jar
new file mode 100644 (file)
index 0000000..410a321
Binary files /dev/null and b/Workspace/Siman/WebContent/plugin/converter.jar differ
diff --git a/Workspace/Siman/WebContent/rtef/blank.htm b/Workspace/Siman/WebContent/rtef/blank.htm
new file mode 100644 (file)
index 0000000..e96338b
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+       <title></title>
+</head>
+
+<body>
+
+</body>
+</html>
diff --git a/Workspace/Siman/WebContent/rtef/images/bar.gif b/Workspace/Siman/WebContent/rtef/images/bar.gif
new file mode 100644 (file)
index 0000000..95b9b70
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/bar.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/bgcolor.gif b/Workspace/Siman/WebContent/rtef/images/bgcolor.gif
new file mode 100644 (file)
index 0000000..4179659
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/bgcolor.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/blackdot.gif b/Workspace/Siman/WebContent/rtef/images/blackdot.gif
new file mode 100644 (file)
index 0000000..e5e721f
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/blackdot.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/bold.gif b/Workspace/Siman/WebContent/rtef/images/bold.gif
new file mode 100644 (file)
index 0000000..affc536
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/bold.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/centre.gif b/Workspace/Siman/WebContent/rtef/images/centre.gif
new file mode 100644 (file)
index 0000000..21a1702
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/centre.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/code.gif b/Workspace/Siman/WebContent/rtef/images/code.gif
new file mode 100644 (file)
index 0000000..f25231d
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/code.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/copy.gif b/Workspace/Siman/WebContent/rtef/images/copy.gif
new file mode 100644 (file)
index 0000000..9f5da32
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/copy.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/cut.gif b/Workspace/Siman/WebContent/rtef/images/cut.gif
new file mode 100644 (file)
index 0000000..58f1b2a
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/cut.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/design.gif b/Workspace/Siman/WebContent/rtef/images/design.gif
new file mode 100644 (file)
index 0000000..3fe3cfc
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/design.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/hr.gif b/Workspace/Siman/WebContent/rtef/images/hr.gif
new file mode 100644 (file)
index 0000000..2267969
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/hr.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/hyperlink.gif b/Workspace/Siman/WebContent/rtef/images/hyperlink.gif
new file mode 100644 (file)
index 0000000..4901a23
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/hyperlink.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/image.gif b/Workspace/Siman/WebContent/rtef/images/image.gif
new file mode 100644 (file)
index 0000000..eb886f1
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/image.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/indent.gif b/Workspace/Siman/WebContent/rtef/images/indent.gif
new file mode 100644 (file)
index 0000000..a3e90a4
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/indent.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/insert_table.gif b/Workspace/Siman/WebContent/rtef/images/insert_table.gif
new file mode 100644 (file)
index 0000000..6d57ad2
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/insert_table.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/italic.gif b/Workspace/Siman/WebContent/rtef/images/italic.gif
new file mode 100644 (file)
index 0000000..9aef436
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/italic.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/justifyfull.gif b/Workspace/Siman/WebContent/rtef/images/justifyfull.gif
new file mode 100644 (file)
index 0000000..7b86e51
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/justifyfull.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/left_just.gif b/Workspace/Siman/WebContent/rtef/images/left_just.gif
new file mode 100644 (file)
index 0000000..c44789a
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/left_just.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/list.gif b/Workspace/Siman/WebContent/rtef/images/list.gif
new file mode 100644 (file)
index 0000000..2e28fba
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/list.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/numbered_list.gif b/Workspace/Siman/WebContent/rtef/images/numbered_list.gif
new file mode 100644 (file)
index 0000000..18910b4
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/numbered_list.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/outdent.gif b/Workspace/Siman/WebContent/rtef/images/outdent.gif
new file mode 100644 (file)
index 0000000..adc6e15
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/outdent.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/paste.gif b/Workspace/Siman/WebContent/rtef/images/paste.gif
new file mode 100644 (file)
index 0000000..187e4eb
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/paste.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/pastetext.gif b/Workspace/Siman/WebContent/rtef/images/pastetext.gif
new file mode 100644 (file)
index 0000000..289c2d8
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/pastetext.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/pasteword.gif b/Workspace/Siman/WebContent/rtef/images/pasteword.gif
new file mode 100644 (file)
index 0000000..338ece4
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/pasteword.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/preview.gif b/Workspace/Siman/WebContent/rtef/images/preview.gif
new file mode 100644 (file)
index 0000000..574388d
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/preview.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/print.gif b/Workspace/Siman/WebContent/rtef/images/print.gif
new file mode 100644 (file)
index 0000000..5809e94
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/print.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/redo.gif b/Workspace/Siman/WebContent/rtef/images/redo.gif
new file mode 100644 (file)
index 0000000..127e1a3
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/redo.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/replace.gif b/Workspace/Siman/WebContent/rtef/images/replace.gif
new file mode 100644 (file)
index 0000000..ac78f96
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/replace.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/right_just.gif b/Workspace/Siman/WebContent/rtef/images/right_just.gif
new file mode 100644 (file)
index 0000000..4742b3f
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/right_just.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/save.gif b/Workspace/Siman/WebContent/rtef/images/save.gif
new file mode 100644 (file)
index 0000000..d22f521
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/save.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/selectall.gif b/Workspace/Siman/WebContent/rtef/images/selectall.gif
new file mode 100644 (file)
index 0000000..aa958a7
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/selectall.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/special_char.gif b/Workspace/Siman/WebContent/rtef/images/special_char.gif
new file mode 100644 (file)
index 0000000..c353929
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/special_char.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/spellcheck.gif b/Workspace/Siman/WebContent/rtef/images/spellcheck.gif
new file mode 100644 (file)
index 0000000..7321ec1
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/spellcheck.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/strikethrough.gif b/Workspace/Siman/WebContent/rtef/images/strikethrough.gif
new file mode 100644 (file)
index 0000000..de6301f
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/strikethrough.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/subscript.gif b/Workspace/Siman/WebContent/rtef/images/subscript.gif
new file mode 100644 (file)
index 0000000..b088ab9
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/subscript.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/superscript.gif b/Workspace/Siman/WebContent/rtef/images/superscript.gif
new file mode 100644 (file)
index 0000000..a160f3b
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/superscript.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/textcolor.gif b/Workspace/Siman/WebContent/rtef/images/textcolor.gif
new file mode 100644 (file)
index 0000000..decede4
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/textcolor.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/underline.gif b/Workspace/Siman/WebContent/rtef/images/underline.gif
new file mode 100644 (file)
index 0000000..b73c54f
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/underline.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/undo.gif b/Workspace/Siman/WebContent/rtef/images/undo.gif
new file mode 100644 (file)
index 0000000..cb27b6b
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/undo.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/unformat.gif b/Workspace/Siman/WebContent/rtef/images/unformat.gif
new file mode 100644 (file)
index 0000000..6e41eef
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/unformat.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/images/word_count.gif b/Workspace/Siman/WebContent/rtef/images/word_count.gif
new file mode 100644 (file)
index 0000000..8a55dd6
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/images/word_count.gif differ
diff --git a/Workspace/Siman/WebContent/rtef/insert_char.htm b/Workspace/Siman/WebContent/rtef/insert_char.htm
new file mode 100644 (file)
index 0000000..edaae58
--- /dev/null
@@ -0,0 +1,97 @@
+<!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="&cent;"></td><td id="&euro;"></td><td id="&pound;"></td>
+<td id="&curren;"></td><td id="&yen;"></td><td id="&copy;"></td>
+<td id="&reg;"></td><td id="&trade;"></td><td id="&divide;"></td>
+<td id="&times;"></td><td id="&plusmn;"></td><td id="&frac14;"></td>
+<td id="&frac12;"></td><td id="&frac34;"></td><td id="&deg;"></td>
+<td id="&sup1;"></td><td id="&sup2;"></td><td id="&sup3;"></td>
+<td id="&micro;"></td><td id="&laquo;"></td>
+</tr><tr>
+<td id="&raquo;"></td><td id="&quot;"></td><td id="&lsquo;"></td>
+<td id="&rsquo;"></td><td id="&lsaquo;"></td><td id="&rsaquo;"></td>
+<td id="&sbquo;"></td><td id="&bdquo;"></td><td id="&ldquo;"></td>
+<td id="&rdquo;"></td><td id="&iexcl;"></td><td id="&brvbar;"></td>
+<td id="&sect;"></td><td id="&not;"></td><td id="&macr;"></td>
+<td id="&para;"></td><td id="&middot;"></td><td id="&cedil;"></td>
+<td id="&iquest;"></td><td id="&fnof;"></td>
+</tr><tr>
+<td id="&mdash;"></td><td id="&ndash;"></td><td id="&bull;"></td>
+<td id="&hellip;"></td><td id="&permil;"></td><td id="&ordf;"></td>
+<td id="&ordm;"></td><td id="&szlig;"></td><td id="&dagger;"></td>
+<td id="&Dagger;"></td><td id="&eth;"></td><td id="&ETH;"></td>
+<td id="&oslash;"></td><td id="&Oslash;"></td><td id="&thorn;"></td>
+<td id="&THORN;"></td><td id="&oelig;"></td><td id="&OElig;"></td>
+<td id="&scaron;"></td><td id="&Scaron;"></td>
+</tr><tr>
+<td id="&acute;"></td><td id="&circ;"></td><td id="&tilde;"></td>
+<td id="&uml;"></td><td id="&agrave;"></td><td id="&aacute;"></td>
+<td id="&acirc;"></td><td id="&atilde;"></td><td id="&auml;"></td>
+<td id="&aring;"></td><td id="&aelig;"></td><td id="&Agrave;"></td>
+<td id="&Aacute;"></td><td id="&Acirc;"></td><td id="&Atilde;"></td>
+<td id="&Auml;"></td><td id="&Aring;"></td><td id="&AElig;"></td>
+<td id="&ccedil;"></td><td id="&Ccedil;"></td>
+</tr><tr>
+<td id="&egrave;"></td><td id="&eacute;"></td><td id="&ecirc;"></td>
+<td id="&euml;"></td><td id="&Egrave;"></td><td id="&Eacute;"></td>
+<td id="&Ecirc;"></td><td id="&Euml;"></td><td id="&igrave;"></td>
+<td id="&iacute;"></td><td id="&icirc;"></td><td id="&iuml;"></td>
+<td id="&Igrave;"></td><td id="&Iacute;"></td><td id="&Icirc;"></td>
+<td id="&Iuml;"></td><td id="&ntilde;"></td><td id="&Ntilde;"></td>
+<td id="&ograve;"></td><td id="&oacute;"></td>
+</tr><tr>
+<td id="&ocirc;"></td><td id="&otilde;"></td><td id="&ouml;"></td>
+<td id="&Ograve;"></td><td id="&Oacute;"></td><td id="&Ocirc;"></td>
+<td id="&Otilde;"></td><td id="&Ouml;"></td><td id="&ugrave;"></td>
+<td id="&uacute;"></td><td id="&ucirc;"></td><td id="&uuml;"></td>
+<td id="&Ugrave;"></td><td id="&Uacute;"></td><td id="&Ucirc;"></td>
+<td id="&Uuml;"></td><td id="&yacute;"></td><td id="&yuml;"></td>
+<td id="&Yacute;"></td><td id="&Yuml;"></td>
+</tr></table></body></html>
diff --git a/Workspace/Siman/WebContent/rtef/insert_img.htm b/Workspace/Siman/WebContent/rtef/insert_img.htm
new file mode 100644 (file)
index 0000000..4c47e0d
--- /dev/null
@@ -0,0 +1,71 @@
+<!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>
diff --git a/Workspace/Siman/WebContent/rtef/insert_link.htm b/Workspace/Siman/WebContent/rtef/insert_link.htm
new file mode 100644 (file)
index 0000000..a66b7ab
--- /dev/null
@@ -0,0 +1,208 @@
+<!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>
diff --git a/Workspace/Siman/WebContent/rtef/insert_table.htm b/Workspace/Siman/WebContent/rtef/insert_table.htm
new file mode 100644 (file)
index 0000000..a8cf431
--- /dev/null
@@ -0,0 +1,66 @@
+<!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>&nbsp;</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>:&nbsp;</td>
+<td><input name="rows" type="text" id="rows" value="2" size="4"></td>
+<td align="left" valign=middle nowrap>&nbsp;<script>document.write(window.opener.lblTableColumns);</script>:&nbsp;<input name="columns" type="text" id="columns" value="2" size="4"></td>
+</tr><tr>
+<td align="right"><script>document.write(window.opener.lblTableWidth);</script>:&nbsp;</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>:&nbsp;</td>
+<td><input name="border" type="text" id="border" value="1" size="4"></td>
+<td align="left">&nbsp;<script>document.write(window.opener.lblTablePx);</script></td></tr><tr>
+<td align="right"><script>document.write(window.opener.lblTablePadding);</script>:&nbsp;</td>
+<td><input name="padding" type="text" id="padding" value="4" size="4"></td>
+<td valign=middle nowrap>&nbsp;<script>document.write(window.opener.lblTableSpacing);</script>:&nbsp;<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>
diff --git a/Workspace/Siman/WebContent/rtef/lang/cz.js b/Workspace/Siman/WebContent/rtef/lang/cz.js
new file mode 100644 (file)
index 0000000..5008cf1
--- /dev/null
@@ -0,0 +1,138 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/de.js b/Workspace/Siman/WebContent/rtef/lang/de.js
new file mode 100644 (file)
index 0000000..05e00fc
--- /dev/null
@@ -0,0 +1,137 @@
+// 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&auml;hlen";
+var lblSpellCheck = "Rechtschreibung";
+var lblCut = "Ausschneiden";
+var lblCopy = "Kopieren";
+var lblPaste = "Einf&uuml;gen";
+var lblPasteText       = "Paste as Plain Text";
+var lblPasteWord       = "Paste From Word";
+var lblUndo = "R&uuml;ckg&auml;ngig";
+var lblRedo = "Wiederherstellen";
+var lblHR = "horizontale Trennlinie";
+var lblInsertChar = "Sonderzeichen einf&uuml;gen";
+var lblBold = "Fett";
+var lblItalic = "Kursiv";
+var lblUnderline = "Unterstrichen";
+var lblStrikeThrough = "Durchgestrichen";
+var lblSuperscript = "Hochgestellt";
+var lblSubscript = "Tiefgestellt";
+var lblAlgnLeft = "Linksb&uuml;ndig";
+var lblAlgnCenter = "Zentriert";
+var lblAlgnRight = "Rechtsb&uuml;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&uuml;gen";
+var lblAddImage = "Bild einf&uuml;gen";
+var lblInsertTable = "Tabelle einf&uuml;gen";
+var lblWordCount       = "Word Count";
+var lblUnformat        = "Unformat";
+
+// Dropdowns
+// Format Dropdown
+var lblFormat = "<option value=\"\" selected>Format</option>";
+lblFormat += "<option value=\"<h1>\">&Uuml;berschrift 1</option>";
+lblFormat += "<option value=\"<h2>\">&Uuml;berschrift 2</option>";
+lblFormat += "<option value=\"<h3>\">&Uuml;berschrift 3</option>";
+lblFormat += "<option value=\"<h4>\">&Uuml;berschrift 4</option>";
+lblFormat += "<option value=\"<h5>\">&Uuml;berschrift 5</option>";
+lblFormat += "<option value=\"<h6>\">&Uuml;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&ouml;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 &ouml;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&ouml;nnen, ben&ouml;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&uuml;tzt.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/dk.js b/Workspace/Siman/WebContent/rtef/lang/dk.js
new file mode 100644 (file)
index 0000000..7f95aa7
--- /dev/null
@@ -0,0 +1,138 @@
+// 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&aelig;t fra normal tekst";
+var lblPasteWord = "Inds&aelig;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&aelig;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&aelig;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&oslash;jreklik og v&aelig;lg \"Inds&aelig;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&oslash;jreklik og v&aelig;lg \"Inds&aelig;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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/en.js b/Workspace/Siman/WebContent/rtef/lang/en.js
new file mode 100644 (file)
index 0000000..8b3b5c7
--- /dev/null
@@ -0,0 +1,139 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/es.js b/Workspace/Siman/WebContent/rtef/lang/es.js
new file mode 100644 (file)
index 0000000..668a4e6
--- /dev/null
@@ -0,0 +1,138 @@
+// 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&iacute;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&oacute;n Horizontal"; 
+var lblInsertChar          = "Insertar Caracteres Especiales"; 
+var lblBold                   = "Negrita"; 
+var lblItalic                = "It&aacute;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&oacute;n Completa"; 
+var lblOL                      = "Lista Ordenada"; 
+var lblUL                      = "Lista Desordenada"; 
+var lblOutdent             = "Quitar Indentaci&oacute;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&aacute;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&aacute;rrafo</option>"; 
+lblFormat                    += "<option value=\"<address>\">Direcci&oacute;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&ntilde;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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/fr.js b/Workspace/Siman/WebContent/rtef/lang/fr.js
new file mode 100644 (file)
index 0000000..711f4ce
--- /dev/null
@@ -0,0 +1,140 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/he-windows-1255.js b/Workspace/Siman/WebContent/rtef/lang/he-windows-1255.js
new file mode 100644 (file)
index 0000000..c50928f
--- /dev/null
@@ -0,0 +1,140 @@
+// 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.';
+
diff --git a/Workspace/Siman/WebContent/rtef/lang/he.js b/Workspace/Siman/WebContent/rtef/lang/he.js
new file mode 100644 (file)
index 0000000..0880681
--- /dev/null
@@ -0,0 +1,140 @@
+// 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.';
+
diff --git a/Workspace/Siman/WebContent/rtef/lang/it.js b/Workspace/Siman/WebContent/rtef/lang/it.js
new file mode 100644 (file)
index 0000000..b4ff6ed
--- /dev/null
@@ -0,0 +1,139 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/nl.js b/Workspace/Siman/WebContent/rtef/lang/nl.js
new file mode 100644 (file)
index 0000000..b4373b8
--- /dev/null
@@ -0,0 +1,138 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/no.js b/Workspace/Siman/WebContent/rtef/lang/no.js
new file mode 100644 (file)
index 0000000..cf6b46f
--- /dev/null
@@ -0,0 +1,138 @@
+// 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&oslash;yrejustert";
+var lblJustifyFull       = "Blokkjustert";
+var lblOL                      = "Numrert Liste";
+var lblUL                      = "Punktliste";
+var lblOutdent             = "Reduser Innrykk";
+var lblIndent                = "&Oslash;k innrykk";
+var lblTextColor          = "Tekstfarge";
+var lblBgColor             = "Bakgrunnsfarge";
+var lblSearch                = "S&oslash;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&oslash;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&aring;ndsvisning av innhold.";
+var lblSearchConfirm     =  "S&oslash;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          = "&Aring;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&aring; 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&oslash;tter ikke alle funksjoner.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/pl.js b/Workspace/Siman/WebContent/rtef/lang/pl.js
new file mode 100644 (file)
index 0000000..d927ecf
--- /dev/null
@@ -0,0 +1,138 @@
+// 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.'; 
diff --git a/Workspace/Siman/WebContent/rtef/lang/pt.js b/Workspace/Siman/WebContent/rtef/lang/pt.js
new file mode 100644 (file)
index 0000000..3a66a23
--- /dev/null
@@ -0,0 +1,138 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/ru.js b/Workspace/Siman/WebContent/rtef/lang/ru.js
new file mode 100644 (file)
index 0000000..5a4454e
--- /dev/null
@@ -0,0 +1,139 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/sk.js b/Workspace/Siman/WebContent/rtef/lang/sk.js
new file mode 100644 (file)
index 0000000..b8f1920
--- /dev/null
@@ -0,0 +1,138 @@
+// 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.";
diff --git a/Workspace/Siman/WebContent/rtef/lang/sv.js b/Workspace/Siman/WebContent/rtef/lang/sv.js
new file mode 100644 (file)
index 0000000..1735bd3
--- /dev/null
@@ -0,0 +1,146 @@
+// 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.';
diff --git a/Workspace/Siman/WebContent/rtef/lang/zh-cn.js b/Workspace/Siman/WebContent/rtef/lang/zh-cn.js
new file mode 100644 (file)
index 0000000..c14f259
--- /dev/null
@@ -0,0 +1,138 @@
+// 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编码.';
diff --git a/Workspace/Siman/WebContent/rtef/palette.htm b/Workspace/Siman/WebContent/rtef/palette.htm
new file mode 100644 (file)
index 0000000..7f8ae3b
--- /dev/null
@@ -0,0 +1,129 @@
+<!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>
diff --git a/Workspace/Siman/WebContent/rtef/paste_text.htm b/Workspace/Siman/WebContent/rtef/paste_text.htm
new file mode 100644 (file)
index 0000000..a9cd048
--- /dev/null
@@ -0,0 +1,57 @@
+<!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, "&amp;"); 
+   html = html.replace(/</g, "&lt;"); 
+   html = html.replace(/>/g, "&gt;");
+   html = html.replace(/\n/g,"</p><p>"); 
+   html = html.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); 
+   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();"/>&nbsp;
+<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>
diff --git a/Workspace/Siman/WebContent/rtef/paste_word.htm b/Workspace/Siman/WebContent/rtef/paste_word.htm
new file mode 100644 (file)
index 0000000..8871322
--- /dev/null
@@ -0,0 +1,100 @@
+<!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,"&nbsp;<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*&nbsp;\s*<\/SPAN>/gi,'&nbsp;'); 
+   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)>&nbsp;<\/\1>/g,'&nbsp;'); 
+   // 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();"/>&nbsp;
+<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> 
diff --git a/Workspace/Siman/WebContent/rtef/replace.htm b/Workspace/Siman/WebContent/rtef/replace.htm
new file mode 100644 (file)
index 0000000..626c8f9
--- /dev/null
@@ -0,0 +1,68 @@
+<!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>:&nbsp;</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>:&nbsp;</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>&nbsp;</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>
diff --git a/Workspace/Siman/WebContent/rtef/richtext.js b/Workspace/Siman/WebContent/rtef/richtext.js
new file mode 100644 (file)
index 0000000..ce19f6b
--- /dev/null
@@ -0,0 +1,1319 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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("'"), "&#39;",
+       //convert all types of double quotes
+       new RegExp(String.fromCharCode(147),'g'), "\"",
+       new RegExp(String.fromCharCode(148),'g'), "\"",
+       new RegExp("\""), "&#34;",              //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,'\'','&apos;');
+       // 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>&nbsp;</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("&nbsp;", " ")) == "" &&
+               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("&cent;","&euro;","&pound;","&curren;","&yen;","&copy;","&reg;","&trade;","&divide;","&times;","&plusmn;","&frac14;","&frac12;","&frac34;","&deg;","&sup1;","&sup2;","&sup3;","&micro;","&laquo;","&raquo;","&lsquo;","&rsquo;","&lsaquo;","&rsaquo;","&sbquo;","&bdquo;","&ldquo;","&rdquo;","&iexcl;","&brvbar;","&sect;","&not;","&macr;","&para;","&middot;","&cedil;","&iquest;","&fnof;","&mdash;","&ndash;","&bull;","&hellip;","&permil;","&ordf;","&ordm;","&szlig;","&dagger;","&Dagger;","&eth;","&ETH;","&oslash;","&Oslash;","&thorn;","&THORN;","&oelig;","&OElig;","&scaron;","&Scaron;","&acute;","&circ;","&tilde;","&uml;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&ccedil;","&Ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&igrave;","&iacute;","&icirc;","&iuml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ntilde;","&Ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&ugrave;","&uacute;","&ucirc;","&uuml;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&yacute;","&yuml;","&Yacute;","&Yuml;"); 
+   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(/&nbsp;/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,'&apos;','\'');
+}
+
+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,'\'','&apos;');
+}
+
+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,'&apos;','\'');
+       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);
+               }
+       }
+}
diff --git a/Workspace/Siman/WebContent/rtef/richtext_compressed.js b/Workspace/Siman/WebContent/rtef/richtext_compressed.js
new file mode 100644 (file)
index 0000000..58ac92c
--- /dev/null
@@ -0,0 +1,4 @@
+
+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("'"),"&#39;",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,'\'','&apos;');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>&nbsp;</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("&nbsp;"," "))==""&&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("&cent;","&euro;","&pound;","&curren;","&yen;","&copy;","&reg;","&trade;","&divide;","&times;","&plusmn;","&frac14;","&frac12;","&frac34;","&deg;","&sup1;","&sup2;","&sup3;","&micro;","&laquo;","&raquo;","&lsquo;","&rsquo;","&lsaquo;","&rsaquo;","&sbquo;","&bdquo;","&ldquo;","&rdquo;","&iexcl;","&brvbar;","&sect;","&not;","&macr;","&para;","&middot;","&cedil;","&iquest;","&fnof;","&mdash;","&ndash;","&bull;","&hellip;","&permil;","&ordf;","&ordm;","&szlig;","&dagger;","&Dagger;","&eth;","&ETH;","&oslash;","&Oslash;","&thorn;","&THORN;","&oelig;","&OElig;","&scaron;","&Scaron;","&acute;","&circ;","&tilde;","&uml;","&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&ccedil;","&Ccedil;","&egrave;","&eacute;","&ecirc;","&euml;","&Egrave;","&Eacute;","&Ecirc;","&Euml;","&igrave;","&iacute;","&icirc;","&iuml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;","&ntilde;","&Ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&ugrave;","&uacute;","&ucirc;","&uuml;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&yacute;","&yuml;","&Yacute;","&Yuml;");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(/&nbsp;/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,'&apos;','\'');};function autoBRoff(rte){var oRTE=document.forms[0].elements[rte];oRTE.value=replaceIt(oRTE.value,'\n','<br />');oRTE.value=replaceIt(oRTE.value,'\'','&apos;');};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,'&apos;','\'');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);}}};
+
+
diff --git a/Workspace/Siman/WebContent/rtef/rte.css b/Workspace/Siman/WebContent/rtef/rte.css
new file mode 100644 (file)
index 0000000..dd5acd8
--- /dev/null
@@ -0,0 +1,11 @@
+@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
diff --git a/Workspace/Siman/WebContent/rtef/rte_ui.png b/Workspace/Siman/WebContent/rtef/rte_ui.png
new file mode 100644 (file)
index 0000000..866710e
Binary files /dev/null and b/Workspace/Siman/WebContent/rtef/rte_ui.png differ
diff --git a/Workspace/Siman/WebContent/rtef/xhtml.js b/Workspace/Siman/WebContent/rtef/xhtml.js
new file mode 100644 (file)
index 0000000..250984a
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+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+='&lt;';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'&amp;'}if(c=='<'){return'&lt;'}if(c=='>'){return'&gt;'}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
diff --git a/Workspace/Siman/WebContent/sadmin/approveKnowelm.jsp b/Workspace/Siman/WebContent/sadmin/approveKnowelm.jsp
new file mode 100644 (file)
index 0000000..1cb6729
--- /dev/null
@@ -0,0 +1,38 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/sadmin/approveSContext.jsp b/Workspace/Siman/WebContent/sadmin/approveSContext.jsp
new file mode 100644 (file)
index 0000000..f74d7e7
--- /dev/null
@@ -0,0 +1,266 @@
+<%@ 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>&nbsp;<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"/>:&nbsp;</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>&nbsp;<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"/>&nbsp;<s:text name="label.lang.%{locale}"/>:&nbsp;</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>&nbsp;<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"/>:&nbsp;</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>&nbsp;<s:text name="menu.step.%{number}"/></option>
+                  </s:if><s:else>
+                    <option>&nbsp;<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}"/>:&nbsp;</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"/>">&nbsp;<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
diff --git a/Workspace/Siman/WebContent/sadmin/displayUser.jsp b/Workspace/Siman/WebContent/sadmin/displayUser.jsp
new file mode 100644 (file)
index 0000000..a1197f9
--- /dev/null
@@ -0,0 +1,72 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/sadmin/indexStudies.jsp b/Workspace/Siman/WebContent/sadmin/indexStudies.jsp
new file mode 100644 (file)
index 0000000..0d0078a
--- /dev/null
@@ -0,0 +1,78 @@
+<%@ 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="&nbsp;&nbsp;<s:text name="button.index"/>&nbsp;&nbsp;"/></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
diff --git a/Workspace/Siman/WebContent/sadmin/upload.jsp b/Workspace/Siman/WebContent/sadmin/upload.jsp
new file mode 100644 (file)
index 0000000..1d757d5
--- /dev/null
@@ -0,0 +1,71 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/sgeom/index.jsp b/Workspace/Siman/WebContent/sgeom/index.jsp
new file mode 100644 (file)
index 0000000..ccb4844
--- /dev/null
@@ -0,0 +1,135 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/sgeom/saveAs.jsp b/Workspace/Siman/WebContent/sgeom/saveAs.jsp
new file mode 100644 (file)
index 0000000..7496a7e
--- /dev/null
@@ -0,0 +1,58 @@
+<%@ 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"/>:&nbsp;</td>
+        <td><input type="text" name="name"   size="33" value="Géométrie1"></td>
+      </tr>
+      <tr>
+        <td align=right>Format du document:&nbsp;</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()">&nbsp;
+          <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
diff --git a/Workspace/Siman/WebContent/sgeom/updateAs.jsp b/Workspace/Siman/WebContent/sgeom/updateAs.jsp
new file mode 100644 (file)
index 0000000..2cbed87
--- /dev/null
@@ -0,0 +1,79 @@
+<%@ 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"/>&nbsp;<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()">&nbsp;</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
diff --git a/Workspace/Siman/WebContent/sgeom/versionAs.jsp b/Workspace/Siman/WebContent/sgeom/versionAs.jsp
new file mode 100644 (file)
index 0000000..ef09032
--- /dev/null
@@ -0,0 +1,61 @@
+<%@ 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()">&nbsp;</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
diff --git a/Workspace/Siman/WebContent/sgeom/window.png b/Workspace/Siman/WebContent/sgeom/window.png
new file mode 100644 (file)
index 0000000..04f6a0b
Binary files /dev/null and b/Workspace/Siman/WebContent/sgeom/window.png differ
diff --git a/Workspace/Siman/WebContent/skin/default.css b/Workspace/Siman/WebContent/skin/default.css
new file mode 100644 (file)
index 0000000..8226fd9
--- /dev/null
@@ -0,0 +1,280 @@
+@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
diff --git a/Workspace/Siman/WebContent/skin/disabled.APPROVED.png b/Workspace/Siman/WebContent/skin/disabled.APPROVED.png
new file mode 100644 (file)
index 0000000..717c69c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.APPROVED.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.checked.png b/Workspace/Siman/WebContent/skin/disabled.checked.png
new file mode 100644 (file)
index 0000000..2a9a31e
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.checked.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.delete.png b/Workspace/Siman/WebContent/skin/disabled.delete.png
new file mode 100644 (file)
index 0000000..3eff028
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.delete.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.export.png b/Workspace/Siman/WebContent/skin/disabled.export.png
new file mode 100644 (file)
index 0000000..78b51ba
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.export.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.idea.png b/Workspace/Siman/WebContent/skin/disabled.idea.png
new file mode 100644 (file)
index 0000000..b074b1f
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.idea.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.new.png b/Workspace/Siman/WebContent/skin/disabled.new.png
new file mode 100644 (file)
index 0000000..8bba1c3
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.new.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.refresh.png b/Workspace/Siman/WebContent/skin/disabled.refresh.png
new file mode 100644 (file)
index 0000000..a90bfc1
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.refresh.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.scenario.png b/Workspace/Siman/WebContent/skin/disabled.scenario.png
new file mode 100644 (file)
index 0000000..af6581b
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.scenario.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.state.png b/Workspace/Siman/WebContent/skin/disabled.state.png
new file mode 100644 (file)
index 0000000..a2dad93
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.state.png differ
diff --git a/Workspace/Siman/WebContent/skin/disabled.study.png b/Workspace/Siman/WebContent/skin/disabled.study.png
new file mode 100644 (file)
index 0000000..d63258a
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/disabled.study.png differ
diff --git a/Workspace/Siman/WebContent/skin/forbidden.inCHECK.png b/Workspace/Siman/WebContent/skin/forbidden.inCHECK.png
new file mode 100644 (file)
index 0000000..6ef5907
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/forbidden.inCHECK.png differ
diff --git a/Workspace/Siman/WebContent/skin/forbidden.inDRAFT.png b/Workspace/Siman/WebContent/skin/forbidden.inDRAFT.png
new file mode 100644 (file)
index 0000000..c5a578d
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/forbidden.inDRAFT.png differ
diff --git a/Workspace/Siman/WebContent/skin/forbidden.inWORK.png b/Workspace/Siman/WebContent/skin/forbidden.inWORK.png
new file mode 100644 (file)
index 0000000..d48668f
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/forbidden.inWORK.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.3dxml.png b/Workspace/Siman/WebContent/skin/icon.3dxml.png
new file mode 100644 (file)
index 0000000..c65837c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.3dxml.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.APPROVED.png b/Workspace/Siman/WebContent/skin/icon.APPROVED.png
new file mode 100644 (file)
index 0000000..b124186
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.APPROVED.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.END.png b/Workspace/Siman/WebContent/skin/icon.END.png
new file mode 100644 (file)
index 0000000..2a812bd
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.END.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.EXTERN.png b/Workspace/Siman/WebContent/skin/icon.EXTERN.png
new file mode 100644 (file)
index 0000000..2a812bd
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.EXTERN.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.TEMPLATE.png b/Workspace/Siman/WebContent/skin/icon.TEMPLATE.png
new file mode 100644 (file)
index 0000000..8939527
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.TEMPLATE.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.add.png b/Workspace/Siman/WebContent/skin/icon.add.png
new file mode 100644 (file)
index 0000000..002fd03
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.add.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.addhot.png b/Workspace/Siman/WebContent/skin/icon.addhot.png
new file mode 100644 (file)
index 0000000..ef3ce1b
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.addhot.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.any.png b/Workspace/Siman/WebContent/skin/icon.any.png
new file mode 100644 (file)
index 0000000..5326d2a
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.any.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.back.png b/Workspace/Siman/WebContent/skin/icon.back.png
new file mode 100644 (file)
index 0000000..a0cd653
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.back.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.base.png b/Workspace/Siman/WebContent/skin/icon.base.png
new file mode 100644 (file)
index 0000000..ec4f930
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.base.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.books.png b/Workspace/Siman/WebContent/skin/icon.books.png
new file mode 100644 (file)
index 0000000..e2cd163
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.books.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.checked.png b/Workspace/Siman/WebContent/skin/icon.checked.png
new file mode 100644 (file)
index 0000000..7ccb0f2
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.checked.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.checkedout.png b/Workspace/Siman/WebContent/skin/icon.checkedout.png
new file mode 100644 (file)
index 0000000..30c91ca
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.checkedout.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.checkout.png b/Workspace/Siman/WebContent/skin/icon.checkout.png
new file mode 100644 (file)
index 0000000..ab62471
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.checkout.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.close.png b/Workspace/Siman/WebContent/skin/icon.close.png
new file mode 100644 (file)
index 0000000..97c4af7
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.close.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.delete.png b/Workspace/Siman/WebContent/skin/icon.delete.png
new file mode 100644 (file)
index 0000000..5af7c81
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.delete.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.doc.png b/Workspace/Siman/WebContent/skin/icon.doc.png
new file mode 100644 (file)
index 0000000..7f16827
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.doc.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.docx.png b/Workspace/Siman/WebContent/skin/icon.docx.png
new file mode 100644 (file)
index 0000000..c61837d
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.docx.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.done.png b/Workspace/Siman/WebContent/skin/icon.done.png
new file mode 100644 (file)
index 0000000..709ac78
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.done.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.download.png b/Workspace/Siman/WebContent/skin/icon.download.png
new file mode 100644 (file)
index 0000000..9f350f8
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.download.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.ed.png b/Workspace/Siman/WebContent/skin/icon.ed.png
new file mode 100644 (file)
index 0000000..0d57f90
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.ed.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.edAPPROVED.png b/Workspace/Siman/WebContent/skin/icon.edAPPROVED.png
new file mode 100644 (file)
index 0000000..b124186
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.edAPPROVED.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.edEXTERN.png b/Workspace/Siman/WebContent/skin/icon.edEXTERN.png
new file mode 100644 (file)
index 0000000..f71d985
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.edEXTERN.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.edinCHECK.png b/Workspace/Siman/WebContent/skin/icon.edinCHECK.png
new file mode 100644 (file)
index 0000000..6cd2411
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.edinCHECK.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.edinDRAFT.png b/Workspace/Siman/WebContent/skin/icon.edinDRAFT.png
new file mode 100644 (file)
index 0000000..ba2d901
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.edinDRAFT.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.edinWORK.png b/Workspace/Siman/WebContent/skin/icon.edinWORK.png
new file mode 100644 (file)
index 0000000..42613ae
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.edinWORK.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.edit.png b/Workspace/Siman/WebContent/skin/icon.edit.png
new file mode 100644 (file)
index 0000000..e530cac
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.edit.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.empty.png b/Workspace/Siman/WebContent/skin/icon.empty.png
new file mode 100644 (file)
index 0000000..76bf597
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.empty.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.help.png b/Workspace/Siman/WebContent/skin/icon.help.png
new file mode 100644 (file)
index 0000000..5082df6
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.help.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.hold.png b/Workspace/Siman/WebContent/skin/icon.hold.png
new file mode 100644 (file)
index 0000000..50d81f8
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.hold.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.idea.png b/Workspace/Siman/WebContent/skin/icon.idea.png
new file mode 100644 (file)
index 0000000..a357de7
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.idea.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.inCHECK.png b/Workspace/Siman/WebContent/skin/icon.inCHECK.png
new file mode 100644 (file)
index 0000000..9d368b6
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.inCHECK.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.inDRAFT.png b/Workspace/Siman/WebContent/skin/icon.inDRAFT.png
new file mode 100644 (file)
index 0000000..1f4ae9c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.inDRAFT.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.inWORK.png b/Workspace/Siman/WebContent/skin/icon.inWORK.png
new file mode 100644 (file)
index 0000000..5333bce
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.inWORK.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.minus.png b/Workspace/Siman/WebContent/skin/icon.minus.png
new file mode 100644 (file)
index 0000000..02aa180
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.minus.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.mpp.png b/Workspace/Siman/WebContent/skin/icon.mpp.png
new file mode 100644 (file)
index 0000000..fb74c6c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.mpp.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.new.png b/Workspace/Siman/WebContent/skin/icon.new.png
new file mode 100644 (file)
index 0000000..1f77aee
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.new.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.occ.png b/Workspace/Siman/WebContent/skin/icon.occ.png
new file mode 100644 (file)
index 0000000..58b12f4
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.occ.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.open.png b/Workspace/Siman/WebContent/skin/icon.open.png
new file mode 100644 (file)
index 0000000..08fa620
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.open.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.part.png b/Workspace/Siman/WebContent/skin/icon.part.png
new file mode 100644 (file)
index 0000000..4109ecf
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.part.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.pdf.png b/Workspace/Siman/WebContent/skin/icon.pdf.png
new file mode 100644 (file)
index 0000000..5ab76ff
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.pdf.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.plus.png b/Workspace/Siman/WebContent/skin/icon.plus.png
new file mode 100644 (file)
index 0000000..ab49977
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.plus.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.ppt.png b/Workspace/Siman/WebContent/skin/icon.ppt.png
new file mode 100644 (file)
index 0000000..eb167c7
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.ppt.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.property.png b/Workspace/Siman/WebContent/skin/icon.property.png
new file mode 100644 (file)
index 0000000..7331063
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.property.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.pulldown.png b/Workspace/Siman/WebContent/skin/icon.pulldown.png
new file mode 100644 (file)
index 0000000..991dacd
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.pulldown.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.refresh.png b/Workspace/Siman/WebContent/skin/icon.refresh.png
new file mode 100644 (file)
index 0000000..a90bfc1
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.refresh.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.relation.png b/Workspace/Siman/WebContent/skin/icon.relation.png
new file mode 100644 (file)
index 0000000..fb22d81
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.relation.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.search.png b/Workspace/Siman/WebContent/skin/icon.search.png
new file mode 100644 (file)
index 0000000..9a419fc
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.search.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.sldasm.png b/Workspace/Siman/WebContent/skin/icon.sldasm.png
new file mode 100644 (file)
index 0000000..75bab7d
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.sldasm.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.sldprt.png b/Workspace/Siman/WebContent/skin/icon.sldprt.png
new file mode 100644 (file)
index 0000000..75bab7d
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.sldprt.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.sortdown.png b/Workspace/Siman/WebContent/skin/icon.sortdown.png
new file mode 100644 (file)
index 0000000..18ed671
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.sortdown.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.sortup.png b/Workspace/Siman/WebContent/skin/icon.sortup.png
new file mode 100644 (file)
index 0000000..bfb81e0
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.sortup.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.study.png b/Workspace/Siman/WebContent/skin/icon.study.png
new file mode 100644 (file)
index 0000000..ae095c2
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.study.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.undo.png b/Workspace/Siman/WebContent/skin/icon.undo.png
new file mode 100644 (file)
index 0000000..da90fa8
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.undo.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.upload.png b/Workspace/Siman/WebContent/skin/icon.upload.png
new file mode 100644 (file)
index 0000000..56c5aad
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.upload.png differ
diff --git a/Workspace/Siman/WebContent/skin/icon.xls.png b/Workspace/Siman/WebContent/skin/icon.xls.png
new file mode 100644 (file)
index 0000000..785da11
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/icon.xls.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.accept.png b/Workspace/Siman/WebContent/skin/image.accept.png
new file mode 100644 (file)
index 0000000..b221994
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.accept.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.attach.png b/Workspace/Siman/WebContent/skin/image.attach.png
new file mode 100644 (file)
index 0000000..1c6991c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.attach.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.background.png b/Workspace/Siman/WebContent/skin/image.background.png
new file mode 100644 (file)
index 0000000..c84fb0e
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.background.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.banner.jpg b/Workspace/Siman/WebContent/skin/image.banner.jpg
new file mode 100644 (file)
index 0000000..5491c6e
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.banner.jpg differ
diff --git a/Workspace/Siman/WebContent/skin/image.bottom.png b/Workspace/Siman/WebContent/skin/image.bottom.png
new file mode 100644 (file)
index 0000000..7a8d7c9
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.bottom.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.box.png b/Workspace/Siman/WebContent/skin/image.box.png
new file mode 100644 (file)
index 0000000..94db99d
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.box.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.brcorner.png b/Workspace/Siman/WebContent/skin/image.brcorner.png
new file mode 100644 (file)
index 0000000..2935239
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.brcorner.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.copy.png b/Workspace/Siman/WebContent/skin/image.copy.png
new file mode 100644 (file)
index 0000000..263adde
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.copy.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.delete.png b/Workspace/Siman/WebContent/skin/image.delete.png
new file mode 100644 (file)
index 0000000..227a4c6
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.delete.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.demote.png b/Workspace/Siman/WebContent/skin/image.demote.png
new file mode 100644 (file)
index 0000000..d3477dc
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.demote.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.dirclosed.png b/Workspace/Siman/WebContent/skin/image.dirclosed.png
new file mode 100644 (file)
index 0000000..858a145
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.dirclosed.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.diropen.png b/Workspace/Siman/WebContent/skin/image.diropen.png
new file mode 100644 (file)
index 0000000..8f79c5c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.diropen.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.disablighted.png b/Workspace/Siman/WebContent/skin/image.disablighted.png
new file mode 100644 (file)
index 0000000..b4c2d6c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.disablighted.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.dotedvline.png b/Workspace/Siman/WebContent/skin/image.dotedvline.png
new file mode 100644 (file)
index 0000000..6ac2e37
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.dotedvline.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.downarrow.png b/Workspace/Siman/WebContent/skin/image.downarrow.png
new file mode 100644 (file)
index 0000000..7b7490e
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.downarrow.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.empty.png b/Workspace/Siman/WebContent/skin/image.empty.png
new file mode 100644 (file)
index 0000000..56d097b
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.empty.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.export.png b/Workspace/Siman/WebContent/skin/image.export.png
new file mode 100644 (file)
index 0000000..44b0e3b
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.export.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.group.png b/Workspace/Siman/WebContent/skin/image.group.png
new file mode 100644 (file)
index 0000000..def1f67
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.group.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.help.png b/Workspace/Siman/WebContent/skin/image.help.png
new file mode 100644 (file)
index 0000000..2aec211
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.help.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.hide.png b/Workspace/Siman/WebContent/skin/image.hide.png
new file mode 100644 (file)
index 0000000..d94875e
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.hide.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.highlighted.png b/Workspace/Siman/WebContent/skin/image.highlighted.png
new file mode 100644 (file)
index 0000000..e461e5f
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.highlighted.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.hline.png b/Workspace/Siman/WebContent/skin/image.hline.png
new file mode 100644 (file)
index 0000000..37b8020
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.hline.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.hold.gif b/Workspace/Siman/WebContent/skin/image.hold.gif
new file mode 100644 (file)
index 0000000..d794434
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.hold.gif differ
diff --git a/Workspace/Siman/WebContent/skin/image.hr.png b/Workspace/Siman/WebContent/skin/image.hr.png
new file mode 100644 (file)
index 0000000..e2bd35d
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.hr.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.idea.png b/Workspace/Siman/WebContent/skin/image.idea.png
new file mode 100644 (file)
index 0000000..266b178
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.idea.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.index.png b/Workspace/Siman/WebContent/skin/image.index.png
new file mode 100644 (file)
index 0000000..76d3ace
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.index.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.invalidate.png b/Workspace/Siman/WebContent/skin/image.invalidate.png
new file mode 100644 (file)
index 0000000..84ac733
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.invalidate.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.modified.png b/Workspace/Siman/WebContent/skin/image.modified.png
new file mode 100644 (file)
index 0000000..4c490cc
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.modified.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.publish.png b/Workspace/Siman/WebContent/skin/image.publish.png
new file mode 100644 (file)
index 0000000..e1a6998
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.publish.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.replace.png b/Workspace/Siman/WebContent/skin/image.replace.png
new file mode 100644 (file)
index 0000000..9465c10
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.replace.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.review.png b/Workspace/Siman/WebContent/skin/image.review.png
new file mode 100644 (file)
index 0000000..a8d7a65
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.review.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.right.png b/Workspace/Siman/WebContent/skin/image.right.png
new file mode 100644 (file)
index 0000000..c26cc3c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.right.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.rightarrow.png b/Workspace/Siman/WebContent/skin/image.rightarrow.png
new file mode 100644 (file)
index 0000000..037b296
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.rightarrow.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.section.png b/Workspace/Siman/WebContent/skin/image.section.png
new file mode 100644 (file)
index 0000000..c86f416
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.section.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.selected.png b/Workspace/Siman/WebContent/skin/image.selected.png
new file mode 100644 (file)
index 0000000..ba95ed9
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.selected.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.share.png b/Workspace/Siman/WebContent/skin/image.share.png
new file mode 100644 (file)
index 0000000..547dad1
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.share.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.stamp.png b/Workspace/Siman/WebContent/skin/image.stamp.png
new file mode 100644 (file)
index 0000000..d1c1264
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.stamp.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.study.png b/Workspace/Siman/WebContent/skin/image.study.png
new file mode 100644 (file)
index 0000000..b0a5b51
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.study.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.title.jpg b/Workspace/Siman/WebContent/skin/image.title.jpg
new file mode 100644 (file)
index 0000000..9cb3e57
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.title.jpg differ
diff --git a/Workspace/Siman/WebContent/skin/image.title.png b/Workspace/Siman/WebContent/skin/image.title.png
new file mode 100644 (file)
index 0000000..598bdde
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.title.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.trcorner.png b/Workspace/Siman/WebContent/skin/image.trcorner.png
new file mode 100644 (file)
index 0000000..a5e5e51
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.trcorner.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.uparrow.png b/Workspace/Siman/WebContent/skin/image.uparrow.png
new file mode 100644 (file)
index 0000000..de99915
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.uparrow.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.user.png b/Workspace/Siman/WebContent/skin/image.user.png
new file mode 100644 (file)
index 0000000..f17b94c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.user.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.version.png b/Workspace/Siman/WebContent/skin/image.version.png
new file mode 100644 (file)
index 0000000..f2be45a
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.version.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.vline.png b/Workspace/Siman/WebContent/skin/image.vline.png
new file mode 100644 (file)
index 0000000..4cea9d8
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.vline.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.vseparator.png b/Workspace/Siman/WebContent/skin/image.vseparator.png
new file mode 100644 (file)
index 0000000..3454ec6
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.vseparator.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.white.png b/Workspace/Siman/WebContent/skin/image.white.png
new file mode 100644 (file)
index 0000000..3a79368
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.white.png differ
diff --git a/Workspace/Siman/WebContent/skin/image.zoom.png b/Workspace/Siman/WebContent/skin/image.zoom.png
new file mode 100644 (file)
index 0000000..71d3881
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/image.zoom.png differ
diff --git a/Workspace/Siman/WebContent/skin/logo-SIMER.png b/Workspace/Siman/WebContent/skin/logo-SIMER.png
new file mode 100644 (file)
index 0000000..b89303b
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/logo-SIMER.png differ
diff --git a/Workspace/Siman/WebContent/skin/logo.png b/Workspace/Siman/WebContent/skin/logo.png
new file mode 100644 (file)
index 0000000..9941490
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/logo.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.any.png b/Workspace/Siman/WebContent/skin/tool.any.png
new file mode 100644 (file)
index 0000000..8b079df
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.any.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.mgeom.png b/Workspace/Siman/WebContent/skin/tool.mgeom.png
new file mode 100644 (file)
index 0000000..4f733b1
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.mgeom.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.property.png b/Workspace/Siman/WebContent/skin/tool.property.png
new file mode 100644 (file)
index 0000000..ec0747c
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.property.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.scenario.png b/Workspace/Siman/WebContent/skin/tool.scenario.png
new file mode 100644 (file)
index 0000000..6ba50d6
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.scenario.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.sgeom.png b/Workspace/Siman/WebContent/skin/tool.sgeom.png
new file mode 100644 (file)
index 0000000..28286bc
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.sgeom.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.sldworks.png b/Workspace/Siman/WebContent/skin/tool.sldworks.png
new file mode 100644 (file)
index 0000000..f70c275
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.sldworks.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.smesh.png b/Workspace/Siman/WebContent/skin/tool.smesh.png
new file mode 100644 (file)
index 0000000..420ef5a
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.smesh.png differ
diff --git a/Workspace/Siman/WebContent/skin/tool.winword.png b/Workspace/Siman/WebContent/skin/tool.winword.png
new file mode 100644 (file)
index 0000000..152cc78
Binary files /dev/null and b/Workspace/Siman/WebContent/skin/tool.winword.png differ
diff --git a/Workspace/Siman/WebContent/smesh/index.jsp b/Workspace/Siman/WebContent/smesh/index.jsp
new file mode 100644 (file)
index 0000000..113b6da
--- /dev/null
@@ -0,0 +1,135 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/smesh/saveAs.jsp b/Workspace/Siman/WebContent/smesh/saveAs.jsp
new file mode 100644 (file)
index 0000000..d92fef2
--- /dev/null
@@ -0,0 +1,58 @@
+<%@ 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"/>:&nbsp;</td>
+        <td><input type="text" name="name"   size="33" value="Maillage1"></td>
+      </tr>
+      <tr>
+        <td align=right>Format du document:&nbsp;</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()">&nbsp;
+          <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
diff --git a/Workspace/Siman/WebContent/smesh/updateAs.jsp b/Workspace/Siman/WebContent/smesh/updateAs.jsp
new file mode 100644 (file)
index 0000000..2cbed87
--- /dev/null
@@ -0,0 +1,79 @@
+<%@ 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"/>&nbsp;<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()">&nbsp;</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
diff --git a/Workspace/Siman/WebContent/smesh/versionAs.jsp b/Workspace/Siman/WebContent/smesh/versionAs.jsp
new file mode 100644 (file)
index 0000000..ef09032
--- /dev/null
@@ -0,0 +1,61 @@
+<%@ 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()">&nbsp;</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
diff --git a/Workspace/Siman/WebContent/smesh/window.png b/Workspace/Siman/WebContent/smesh/window.png
new file mode 100644 (file)
index 0000000..f0382fc
Binary files /dev/null and b/Workspace/Siman/WebContent/smesh/window.png differ
diff --git a/Workspace/Siman/WebContent/study/displayKnowledge.jsp b/Workspace/Siman/WebContent/study/displayKnowledge.jsp
new file mode 100644 (file)
index 0000000..c13b63a
--- /dev/null
@@ -0,0 +1,120 @@
+<%@ 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">&nbsp;&nbsp;<s:text name="title.description"/>&nbsp;&nbsp;</span>
+      </div>
+      <div id="tab-context">
+          <span id="tab-front">&nbsp;&nbsp;<s:text name="title.context"/>&nbsp;&nbsp;</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
diff --git a/Workspace/Siman/WebContent/study/displayStudyProperties.jsp b/Workspace/Siman/WebContent/study/displayStudyProperties.jsp
new file mode 100644 (file)
index 0000000..bfedb34
--- /dev/null
@@ -0,0 +1,139 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/study/displayStudyStep.jsp b/Workspace/Siman/WebContent/study/displayStudyStep.jsp
new file mode 100644 (file)
index 0000000..20830b5
--- /dev/null
@@ -0,0 +1,250 @@
+<%@ 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>&nbsp;"),    "<p>",              // For removing &nbsp; of the 1st paragraph
+      new RegExp("&nbsp;</p>"),   "</p>",             // For removing &nbsp; of the 1st paragraph
+      
+      new RegExp("&eacute;",'g'), "é",
+      new RegExp("&egrave;",'g'), "è",
+      new RegExp("&ecirc;",'g'),  "ê",
+      new RegExp("&euml;",'g'),   "ë",
+      new RegExp("&agrave;",'g'), "à",
+      new RegExp("&acirc;",'g'),  "â",
+      new RegExp("&icirc;",'g'),  "î",
+      new RegExp("&iuml;",'g'),   "ï",
+      new RegExp("&ocirc;",'g'),  "ô",
+      new RegExp("&ugrave;",'g'), "ù",
+      new RegExp("&ucirc;",'g'),  "û",
+      new RegExp("&uuml;",'g'),   "ü",
+      
+      new RegExp("&ccedil;",'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">&nbsp;&nbsp;<s:text name="title.description"/>&nbsp;&nbsp;</span>
+      </div>
+      <div id="tab-context">
+          <span id="tab-front">&nbsp;&nbsp;<s:text name="title.context"/>&nbsp;&nbsp;</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
diff --git a/Workspace/Siman/WebContent/study/editScenarioProperties.jsp b/Workspace/Siman/WebContent/study/editScenarioProperties.jsp
new file mode 100644 (file)
index 0000000..8701182
--- /dev/null
@@ -0,0 +1,117 @@
+<%@ 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>&nbsp;<s:text name="label.or"/>&nbsp;</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"/>*:&nbsp;</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
diff --git a/Workspace/Siman/WebContent/study/editStudyProperties.jsp b/Workspace/Siman/WebContent/study/editStudyProperties.jsp
new file mode 100644 (file)
index 0000000..ba42447
--- /dev/null
@@ -0,0 +1,321 @@
+<%@ 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() + "\" />&nbsp;");
+              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">&nbsp;<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">-&nbsp;<s:text name="label.skipped"/>&nbsp;-</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">-&nbsp;<s:text name="label.skipped"/>&nbsp;-</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
diff --git a/Workspace/Siman/WebContent/study/error.jsp b/Workspace/Siman/WebContent/study/error.jsp
new file mode 100644 (file)
index 0000000..94b325f
--- /dev/null
@@ -0,0 +1,81 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/study/importDocument.jsp b/Workspace/Siman/WebContent/study/importDocument.jsp
new file mode 100644 (file)
index 0000000..9a65fd0
--- /dev/null
@@ -0,0 +1,161 @@
+<%@ 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"/>&nbsp;&nbsp;</td>
+              <td align=left>&nbsp;<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">&nbsp;<s:text name="menu.newdoctype"/></option>
+                  <optgroup label="&nbsp;<s:text name="label.doctypes"/>">
+                    <s:iterator value="documentTypes">
+                      <s:if test="%{index == #type}">
+                        <option selected value="<s:property value="index"/>">&nbsp;<s:text name="type.document.%{name}"/></option>
+                      </s:if><s:else>
+                        <option value="<s:property value="index"/>">&nbsp;<s:text name="type.document.%{name}"/></option>
+                      </s:else>
+                    </s:iterator>
+                  </optgroup>
+                </select>&nbsp;
+              </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"/>"/>&nbsp;
+              </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
diff --git a/Workspace/Siman/WebContent/study/importError.jsp b/Workspace/Siman/WebContent/study/importError.jsp
new file mode 100644 (file)
index 0000000..587f1c5
--- /dev/null
@@ -0,0 +1,97 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/study/newScenario.jsp b/Workspace/Siman/WebContent/study/newScenario.jsp
new file mode 100644 (file)
index 0000000..f41f54c
--- /dev/null
@@ -0,0 +1,118 @@
+<%@ 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"/>*:&nbsp;</td>
+              <td>
+                <input type=text size="25" name=title value="<s:property value="title"/>">
+              </td>
+            </tr>
+            <tr>
+              <td><s:text name="field.scenario"/>*:&nbsp;</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>&nbsp;</td>
+            </tr>
+            <tr>
+              <td></td>
+              <td><i><s:text name="message.info.bastep"/></i></td>
+            </tr>
+            <tr>
+              <td><s:text name="field.activity"/>&nbsp;:&nbsp;</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
diff --git a/Workspace/Siman/WebContent/study/newStudy.jsp b/Workspace/Siman/WebContent/study/newStudy.jsp
new file mode 100644 (file)
index 0000000..ff166d2
--- /dev/null
@@ -0,0 +1,123 @@
+<%@ 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>
+              &nbsp;<s:text name="field.studytitle"/>*:&nbsp;
+            </td>
+            <td colspan=2>
+              <input type=text size="60" name=title value="<s:property value="title"/>">
+            </td>
+          </tr>
+
+          <tr>
+            <td>
+              &nbsp;<s:text name="field.product"/>*:&nbsp;
+            </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">&nbsp;<s:text name="menu.newproduct"/></option>
+                  <optgroup label="&nbsp;<s:text name="label.products"/>">
+                    <s:iterator value="projectContextValues">
+                      <option value="<s:property value="index"/>">&nbsp;<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
diff --git a/Workspace/Siman/WebContent/study/searchKnowledge.jsp b/Workspace/Siman/WebContent/study/searchKnowledge.jsp
new file mode 100644 (file)
index 0000000..b93a981
--- /dev/null
@@ -0,0 +1,250 @@
+<%@ 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%>&nbsp;&nbsp;<s:text name="field.among"/></td>
+              <td width=60%>&nbsp;&nbsp;<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>&nbsp;<s:text name="type.knowledge.%{name}" /></option>
+                    </s:if><s:else>
+                      <option value="<s:property value="index"/>">&nbsp;<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"/>')">&nbsp;</td>
+                      <td>
+                        <s:if test="%{type.isApproved()}"><s:text name="type.context.%{type.name}"/>:&nbsp;</s:if>
+                        <s:else><s:property value="%{type.name}"/>:&nbsp;</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()" />&nbsp;
+                      </td>
+                      <td>
+                        <s:if test="%{selectedContextType.isApproved()}"><s:text name="type.context.%{selectedContextType.name}"/>:&nbsp;</s:if>
+                        <s:else><s:property value="%{selectedContextType.name}"/>:&nbsp;</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"/>">&nbsp;<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="&nbsp;<s:text name="folder.step.%{#snum}"/>">
+                            </s:if>
+                              <option value="<s:property value="index"/>">
+                                <s:if test="%{isApproved()}">&nbsp;<s:text name="type.context.%{name}" /></s:if>
+                                <s:else>&nbsp;<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"/>&nbsp;:&nbsp;<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
diff --git a/Workspace/Siman/WebContent/study/searchStudy.jsp b/Workspace/Siman/WebContent/study/searchStudy.jsp
new file mode 100644 (file)
index 0000000..faf4796
--- /dev/null
@@ -0,0 +1,253 @@
+<%@ 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%>&nbsp;&nbsp;<s:text name="field.among"/></td>
+              <td width=60%>&nbsp;&nbsp;<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"/>')">&nbsp;</td>
+                      <td>
+                        <s:if test="%{type.isApproved()}"><s:text name="type.context.%{type.name}"/>:&nbsp;</s:if>
+                        <s:else><s:property value="%{type.name}"/>:&nbsp;</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()" />&nbsp;
+                      </td>
+                      <td>
+                        <s:if test="%{selectedContextType.isApproved()}"><s:text name="type.context.%{selectedContextType.name}"/>:&nbsp;</s:if>
+                        <s:else><s:property value="%{selectedContextType.name}"/>:&nbsp;</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"/>">&nbsp;<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()}">&nbsp;<s:text name="type.context.%{name}" /></s:if>
+                              <s:else>&nbsp;<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"/>&nbsp;:&nbsp;<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
diff --git a/Workspace/Siman/WebContent/study/upload.jsp b/Workspace/Siman/WebContent/study/upload.jsp
new file mode 100644 (file)
index 0000000..c931f85
--- /dev/null
@@ -0,0 +1,79 @@
+<%@ 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
diff --git a/Workspace/Siman/WebContent/study/versionDocument.jsp b/Workspace/Siman/WebContent/study/versionDocument.jsp
new file mode 100644 (file)
index 0000000..d62cb4c
--- /dev/null
@@ -0,0 +1,162 @@
+<%@ 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"/>&nbsp;&nbsp;</td>
+              <td align=left>&nbsp;<s:text name="field.documentitle"/></td>
+            </tr>
+            <tr>
+              <td align=right>
+                <select name="documentType" disabled="disabled">
+                  <option selected value="<s:property value="defaultDocumentType.index"/>">&nbsp;<s:text name="type.document.%{defaultDocumentType.name}"/></option>
+                </select>&nbsp;
+              </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"/>"/>&nbsp;
+              </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
diff --git a/Workspace/Siman/WebContent/welcome.jsp b/Workspace/Siman/WebContent/welcome.jsp
new file mode 100644 (file)
index 0000000..cebdeec
--- /dev/null
@@ -0,0 +1,28 @@
+<%@ 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
diff --git a/Workspace/Siman/build.properties b/Workspace/Siman/build.properties
new file mode 100644 (file)
index 0000000..b68ae65
--- /dev/null
@@ -0,0 +1,9 @@
+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
diff --git a/Workspace/Siman/build.xml b/Workspace/Siman/build.xml
new file mode 100644 (file)
index 0000000..e7a377e
--- /dev/null
@@ -0,0 +1,102 @@
+<?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>
diff --git a/Workspace/Siman/conf/debug.properties b/Workspace/Siman/conf/debug.properties
new file mode 100644 (file)
index 0000000..67cb930
--- /dev/null
@@ -0,0 +1,23 @@
+# 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@.
+
+
+
+
+
diff --git a/Workspace/Siman/conf/generated/release/hibernate.cfg.xml b/Workspace/Siman/conf/generated/release/hibernate.cfg.xml
new file mode 100644 (file)
index 0000000..9131035
--- /dev/null
@@ -0,0 +1,58 @@
+<?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
diff --git a/Workspace/Siman/conf/generated/release/log4j.xml b/Workspace/Siman/conf/generated/release/log4j.xml
new file mode 100644 (file)
index 0000000..c05c007
--- /dev/null
@@ -0,0 +1,57 @@
+<?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
diff --git a/Workspace/Siman/conf/release.properties b/Workspace/Siman/conf/release.properties
new file mode 100644 (file)
index 0000000..4d70fed
--- /dev/null
@@ -0,0 +1,18 @@
+# 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=--------------------------------
diff --git a/Workspace/Siman/conf/templates/hibernate.cfg.xml b/Workspace/Siman/conf/templates/hibernate.cfg.xml
new file mode 100644 (file)
index 0000000..53788fd
--- /dev/null
@@ -0,0 +1,58 @@
+<?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
diff --git a/Workspace/Siman/conf/templates/log4j.xml b/Workspace/Siman/conf/templates/log4j.xml
new file mode 100644 (file)
index 0000000..ae1320e
--- /dev/null
@@ -0,0 +1,57 @@
+<?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
diff --git a/Workspace/Siman/siman-pmd.ruleset b/Workspace/Siman/siman-pmd.ruleset
new file mode 100644 (file)
index 0000000..534af48
--- /dev/null
@@ -0,0 +1,774 @@
+<?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>
diff --git a/Workspace/Siman/src/Test.java b/Workspace/Siman/src/Test.java
new file mode 100644 (file)
index 0000000..06502a2
--- /dev/null
@@ -0,0 +1,34 @@
+
+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
diff --git a/Workspace/Siman/src/hibernate.cfg.xml b/Workspace/Siman/src/hibernate.cfg.xml
new file mode 100644 (file)
index 0000000..200b7e4
--- /dev/null
@@ -0,0 +1,58 @@
+<?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
diff --git a/Workspace/Siman/src/jndi.properties b/Workspace/Siman/src/jndi.properties
new file mode 100644 (file)
index 0000000..69937f4
--- /dev/null
@@ -0,0 +1,4 @@
+java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
+
+# Connector
+java.naming.provider.url    = ftp://localhost:61616
diff --git a/Workspace/Siman/src/labels.properties b/Workspace/Siman/src/labels.properties
new file mode 100644 (file)
index 0000000..bfcbd68
--- /dev/null
@@ -0,0 +1,305 @@
+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&#146;étude ?
+message.promote.document  = Voulez-vous promouvoir ce document ?
+message.promote.knowledge = Voulez-vous avancer l&#146;é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&#146;état de ce document ?
+message.demote.knowledge  = Voulez-vous reculer l&#146;état de cette connaissance ?
+message.delete.study      = Voulez-vous placer l&#146;é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&#146;historique de l&#146;étude ?
+message.purge.document    = Voulez-vous supprimer l&#146;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
diff --git a/Workspace/Siman/src/labels_en.properties b/Workspace/Siman/src/labels_en.properties
new file mode 100644 (file)
index 0000000..d9c57b4
--- /dev/null
@@ -0,0 +1,305 @@
+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
diff --git a/Workspace/Siman/src/log4j.xml b/Workspace/Siman/src/log4j.xml
new file mode 100644 (file)
index 0000000..f26671d
--- /dev/null
@@ -0,0 +1,57 @@
+<?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
diff --git a/Workspace/Siman/src/org/splat/launcher/FileTransfer.java b/Workspace/Siman/src/org/splat/launcher/FileTransfer.java
new file mode 100644 (file)
index 0000000..c653bfb
--- /dev/null
@@ -0,0 +1,53 @@
+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
diff --git a/Workspace/Siman/src/org/splat/launcher/ToolButton.java b/Workspace/Siman/src/org/splat/launcher/ToolButton.java
new file mode 100644 (file)
index 0000000..e464386
--- /dev/null
@@ -0,0 +1,66 @@
+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
diff --git a/Workspace/Siman/src/org/splat/launcher/ToolbarApplet.java b/Workspace/Siman/src/org/splat/launcher/ToolbarApplet.java
new file mode 100644 (file)
index 0000000..063de39
--- /dev/null
@@ -0,0 +1,119 @@
+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
diff --git a/Workspace/Siman/src/org/splat/launcher/WindowsRegistry.java b/Workspace/Siman/src/org/splat/launcher/WindowsRegistry.java
new file mode 100644 (file)
index 0000000..c9c9e15
--- /dev/null
@@ -0,0 +1,74 @@
+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
diff --git a/Workspace/Siman/src/org/splat/module/SaveDocumentAction.java b/Workspace/Siman/src/org/splat/module/SaveDocumentAction.java
new file mode 100644 (file)
index 0000000..7d04e46
--- /dev/null
@@ -0,0 +1,266 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/Action.java b/Workspace/Siman/src/org/splat/simer/Action.java
new file mode 100644 (file)
index 0000000..8c7fc18
--- /dev/null
@@ -0,0 +1,147 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/ApplicationSettings.java b/Workspace/Siman/src/org/splat/simer/ApplicationSettings.java
new file mode 100644 (file)
index 0000000..da27a57
--- /dev/null
@@ -0,0 +1,727 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/ConnectionAction.java b/Workspace/Siman/src/org/splat/simer/ConnectionAction.java
new file mode 100644 (file)
index 0000000..fee1e70
--- /dev/null
@@ -0,0 +1,154 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/Converter.java b/Workspace/Siman/src/org/splat/simer/Converter.java
new file mode 100644 (file)
index 0000000..91048c0
--- /dev/null
@@ -0,0 +1,99 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/DisplayBaseAction.java b/Workspace/Siman/src/org/splat/simer/DisplayBaseAction.java
new file mode 100644 (file)
index 0000000..4985f7b
--- /dev/null
@@ -0,0 +1,41 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/DisplayKnowledgeAction.java b/Workspace/Siman/src/org/splat/simer/DisplayKnowledgeAction.java
new file mode 100644 (file)
index 0000000..6b44dd0
--- /dev/null
@@ -0,0 +1,117 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/DisplayStudyStepAction.java b/Workspace/Siman/src/org/splat/simer/DisplayStudyStepAction.java
new file mode 100644 (file)
index 0000000..1e96c24
--- /dev/null
@@ -0,0 +1,164 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/DocumentFacade.java b/Workspace/Siman/src/org/splat/simer/DocumentFacade.java
new file mode 100644 (file)
index 0000000..28f0b2c
--- /dev/null
@@ -0,0 +1,327 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/EditDocumentAction.java b/Workspace/Siman/src/org/splat/simer/EditDocumentAction.java
new file mode 100644 (file)
index 0000000..d2e9c32
--- /dev/null
@@ -0,0 +1,178 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java b/Workspace/Siman/src/org/splat/simer/EditKnowledgeElementAction.java
new file mode 100644 (file)
index 0000000..8806911
--- /dev/null
@@ -0,0 +1,146 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/EditScenarioPropertiesAction.java b/Workspace/Siman/src/org/splat/simer/EditScenarioPropertiesAction.java
new file mode 100644 (file)
index 0000000..390c3a9
--- /dev/null
@@ -0,0 +1,94 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/EditSimulationContextAction.java b/Workspace/Siman/src/org/splat/simer/EditSimulationContextAction.java
new file mode 100644 (file)
index 0000000..8e30011
--- /dev/null
@@ -0,0 +1,259 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/EditStudyAction.java b/Workspace/Siman/src/org/splat/simer/EditStudyAction.java
new file mode 100644 (file)
index 0000000..0280138
--- /dev/null
@@ -0,0 +1,51 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/FileFacade.java b/Workspace/Siman/src/org/splat/simer/FileFacade.java
new file mode 100644 (file)
index 0000000..41daac8
--- /dev/null
@@ -0,0 +1,65 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/HistoryFacade.java b/Workspace/Siman/src/org/splat/simer/HistoryFacade.java
new file mode 100644 (file)
index 0000000..fe920cc
--- /dev/null
@@ -0,0 +1,19 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java b/Workspace/Siman/src/org/splat/simer/ImportDocumentAction.java
new file mode 100644 (file)
index 0000000..e792383
--- /dev/null
@@ -0,0 +1,282 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/KnowledgeElementFacade.java b/Workspace/Siman/src/org/splat/simer/KnowledgeElementFacade.java
new file mode 100644 (file)
index 0000000..1b72325
--- /dev/null
@@ -0,0 +1,130 @@
+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("'", "&#145").replaceAll("\"", "&#34");
+    }
+    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
diff --git a/Workspace/Siman/src/org/splat/simer/MenuAction.java b/Workspace/Siman/src/org/splat/simer/MenuAction.java
new file mode 100644 (file)
index 0000000..951a837
--- /dev/null
@@ -0,0 +1,52 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/NewScenarioAction.java b/Workspace/Siman/src/org/splat/simer/NewScenarioAction.java
new file mode 100644 (file)
index 0000000..c873e60
--- /dev/null
@@ -0,0 +1,178 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/NewScenarioMenu.java b/Workspace/Siman/src/org/splat/simer/NewScenarioMenu.java
new file mode 100644 (file)
index 0000000..1577846
--- /dev/null
@@ -0,0 +1,136 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/NewStudyAction.java b/Workspace/Siman/src/org/splat/simer/NewStudyAction.java
new file mode 100644 (file)
index 0000000..ca76f5e
--- /dev/null
@@ -0,0 +1,136 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/NotYetImplementedAction.java b/Workspace/Siman/src/org/splat/simer/NotYetImplementedAction.java
new file mode 100644 (file)
index 0000000..091fb79
--- /dev/null
@@ -0,0 +1,16 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/OpenKnowledge.java b/Workspace/Siman/src/org/splat/simer/OpenKnowledge.java
new file mode 100644 (file)
index 0000000..c454f7f
--- /dev/null
@@ -0,0 +1,158 @@
+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("&nbsp\"").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
diff --git a/Workspace/Siman/src/org/splat/simer/OpenObject.java b/Workspace/Siman/src/org/splat/simer/OpenObject.java
new file mode 100644 (file)
index 0000000..06b75ea
--- /dev/null
@@ -0,0 +1,265 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/OpenStudy.java b/Workspace/Siman/src/org/splat/simer/OpenStudy.java
new file mode 100644 (file)
index 0000000..d869148
--- /dev/null
@@ -0,0 +1,405 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/OpenStudyServices.java b/Workspace/Siman/src/org/splat/simer/OpenStudyServices.java
new file mode 100644 (file)
index 0000000..b21cd24
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/SearchBaseAction.java b/Workspace/Siman/src/org/splat/simer/SearchBaseAction.java
new file mode 100644 (file)
index 0000000..af545e9
--- /dev/null
@@ -0,0 +1,236 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/SearchDocumentAction.java b/Workspace/Siman/src/org/splat/simer/SearchDocumentAction.java
new file mode 100644 (file)
index 0000000..df2cbda
--- /dev/null
@@ -0,0 +1,16 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/SearchKnowledgeAction.java b/Workspace/Siman/src/org/splat/simer/SearchKnowledgeAction.java
new file mode 100644 (file)
index 0000000..b426e31
--- /dev/null
@@ -0,0 +1,214 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/SearchStudyAction.java b/Workspace/Siman/src/org/splat/simer/SearchStudyAction.java
new file mode 100644 (file)
index 0000000..68bf1de
--- /dev/null
@@ -0,0 +1,218 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/SimulationContextFacade.java b/Workspace/Siman/src/org/splat/simer/SimulationContextFacade.java
new file mode 100644 (file)
index 0000000..d0b1d9a
--- /dev/null
@@ -0,0 +1,92 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/StampFacade.java b/Workspace/Siman/src/org/splat/simer/StampFacade.java
new file mode 100644 (file)
index 0000000..fe347fa
--- /dev/null
@@ -0,0 +1,76 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/StartAction.java b/Workspace/Siman/src/org/splat/simer/StartAction.java
new file mode 100644 (file)
index 0000000..89133a5
--- /dev/null
@@ -0,0 +1,77 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/StudyMenu.java b/Workspace/Siman/src/org/splat/simer/StudyMenu.java
new file mode 100644 (file)
index 0000000..5490106
--- /dev/null
@@ -0,0 +1,202 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/StudyPropertiesAction.java b/Workspace/Siman/src/org/splat/simer/StudyPropertiesAction.java
new file mode 100644 (file)
index 0000000..3a86b9f
--- /dev/null
@@ -0,0 +1,356 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/UploadAction.java b/Workspace/Siman/src/org/splat/simer/UploadAction.java
new file mode 100644 (file)
index 0000000..18a5864
--- /dev/null
@@ -0,0 +1,99 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/UploadBaseNextAction.java b/Workspace/Siman/src/org/splat/simer/UploadBaseNextAction.java
new file mode 100644 (file)
index 0000000..53b2eb2
--- /dev/null
@@ -0,0 +1,103 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/ValidationFacade.java b/Workspace/Siman/src/org/splat/simer/ValidationFacade.java
new file mode 100644 (file)
index 0000000..c207b3c
--- /dev/null
@@ -0,0 +1,115 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/VersionDocumentAction.java b/Workspace/Siman/src/org/splat/simer/VersionDocumentAction.java
new file mode 100644 (file)
index 0000000..1454d80
--- /dev/null
@@ -0,0 +1,260 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/DatabaseIndexingAction.java b/Workspace/Siman/src/org/splat/simer/admin/DatabaseIndexingAction.java
new file mode 100644 (file)
index 0000000..c4297cd
--- /dev/null
@@ -0,0 +1,72 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/ImportUserAction.java b/Workspace/Siman/src/org/splat/simer/admin/ImportUserAction.java
new file mode 100644 (file)
index 0000000..d11620e
--- /dev/null
@@ -0,0 +1,65 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/ImportedStudy.java b/Workspace/Siman/src/org/splat/simer/admin/ImportedStudy.java
new file mode 100644 (file)
index 0000000..e53b2d7
--- /dev/null
@@ -0,0 +1,93 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/KnowledgeElementAction.java b/Workspace/Siman/src/org/splat/simer/admin/KnowledgeElementAction.java
new file mode 100644 (file)
index 0000000..01707dc
--- /dev/null
@@ -0,0 +1,23 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/ProjectElementFacade.java b/Workspace/Siman/src/org/splat/simer/admin/ProjectElementFacade.java
new file mode 100644 (file)
index 0000000..cd16947
--- /dev/null
@@ -0,0 +1,76 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/SimulationContextAction.java b/Workspace/Siman/src/org/splat/simer/admin/SimulationContextAction.java
new file mode 100644 (file)
index 0000000..9725ecc
--- /dev/null
@@ -0,0 +1,212 @@
+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
diff --git a/Workspace/Siman/src/org/splat/simer/admin/SimulationContextFacade.java b/Workspace/Siman/src/org/splat/simer/admin/SimulationContextFacade.java
new file mode 100644 (file)
index 0000000..80bb7b0
--- /dev/null
@@ -0,0 +1,72 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/ContextualMenu.java b/Workspace/Siman/src/org/splat/wapp/ContextualMenu.java
new file mode 100644 (file)
index 0000000..bd67eff
--- /dev/null
@@ -0,0 +1,115 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/Item.java b/Workspace/Siman/src/org/splat/wapp/Item.java
new file mode 100644 (file)
index 0000000..929f399
--- /dev/null
@@ -0,0 +1,86 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/Menu.java b/Workspace/Siman/src/org/splat/wapp/Menu.java
new file mode 100644 (file)
index 0000000..7c36f35
--- /dev/null
@@ -0,0 +1,153 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/MenuItem.java b/Workspace/Siman/src/org/splat/wapp/MenuItem.java
new file mode 100644 (file)
index 0000000..0a78e87
--- /dev/null
@@ -0,0 +1,69 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/PopupItem.java b/Workspace/Siman/src/org/splat/wapp/PopupItem.java
new file mode 100644 (file)
index 0000000..e4312dd
--- /dev/null
@@ -0,0 +1,57 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/PopupMenu.java b/Workspace/Siman/src/org/splat/wapp/PopupMenu.java
new file mode 100644 (file)
index 0000000..32a080c
--- /dev/null
@@ -0,0 +1,49 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/SimpleMenu.java b/Workspace/Siman/src/org/splat/wapp/SimpleMenu.java
new file mode 100644 (file)
index 0000000..5866d3e
--- /dev/null
@@ -0,0 +1,27 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/SlidMenu.java b/Workspace/Siman/src/org/splat/wapp/SlidMenu.java
new file mode 100644 (file)
index 0000000..b60738b
--- /dev/null
@@ -0,0 +1,72 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/TabBar.java b/Workspace/Siman/src/org/splat/wapp/TabBar.java
new file mode 100644 (file)
index 0000000..b362d4e
--- /dev/null
@@ -0,0 +1,104 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/ToolBar.java b/Workspace/Siman/src/org/splat/wapp/ToolBar.java
new file mode 100644 (file)
index 0000000..f9f7c2f
--- /dev/null
@@ -0,0 +1,62 @@
+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
diff --git a/Workspace/Siman/src/org/splat/wapp/ToolButton.java b/Workspace/Siman/src/org/splat/wapp/ToolButton.java
new file mode 100644 (file)
index 0000000..d70be8f
--- /dev/null
@@ -0,0 +1,47 @@
+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
diff --git a/Workspace/Siman/src/siman.properties b/Workspace/Siman/src/siman.properties
new file mode 100644 (file)
index 0000000..8e1a432
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/Workspace/Siman/src/simer.properties b/Workspace/Siman/src/simer.properties
new file mode 100644 (file)
index 0000000..8e1a432
--- /dev/null
@@ -0,0 +1,12 @@
+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
diff --git a/Workspace/Siman/src/som.properties b/Workspace/Siman/src/som.properties
new file mode 100644 (file)
index 0000000..11e83af
--- /dev/null
@@ -0,0 +1,64 @@
+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
diff --git a/Workspace/Siman/src/som_en.properties b/Workspace/Siman/src/som_en.properties
new file mode 100644 (file)
index 0000000..8a16f83
--- /dev/null
@@ -0,0 +1,65 @@
+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
diff --git a/Workspace/Siman/src/spring/applicationContext.xml b/Workspace/Siman/src/spring/applicationContext.xml
new file mode 100644 (file)
index 0000000..d92fc4c
--- /dev/null
@@ -0,0 +1,7 @@
+<?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
diff --git a/Workspace/Siman/src/struts.xml b/Workspace/Siman/src/struts.xml
new file mode 100644 (file)
index 0000000..210cdb0
--- /dev/null
@@ -0,0 +1,329 @@
+<?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&amp;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&amp;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}&amp;fileName=%{fileName}</result>
+            <result name="attach"  type="redirectAction">attach-document?index=%{index}&amp;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}&amp;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}&amp;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&amp;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
diff --git a/Workspace/checkstyle-siman-javadoc.xml b/Workspace/checkstyle-siman-javadoc.xml
new file mode 100644 (file)
index 0000000..a5bc2de
--- /dev/null
@@ -0,0 +1,29 @@
+<?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>
diff --git a/Workspace/codeFormatter.xml b/Workspace/codeFormatter.xml
new file mode 100644 (file)
index 0000000..db81b76
--- /dev/null
@@ -0,0 +1,264 @@
+<?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>
diff --git a/Workspace/codetemplates.xml b/Workspace/codetemplates.xml
new file mode 100644 (file)
index 0000000..4b2324e
--- /dev/null
@@ -0,0 +1,42 @@
+<?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