Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmisinco2013-04-24 15:23:18 +0000
committerRoberto E. Escobar2013-05-10 18:53:52 +0000
commit428d7e7b4e51f1764c13b320ae32e4e80787a664 (patch)
treec4d861148ee5f5872dc47ec56e03d2ad11938445 /plugins
parent7458c12b14ca792a4b2ac4a2b18339eaa95b9c8d (diff)
downloadorg.eclipse.osee-428d7e7b4e51f1764c13b320ae32e4e80787a664.tar.gz
org.eclipse.osee-428d7e7b4e51f1764c13b320ae32e4e80787a664.tar.xz
org.eclipse.osee-428d7e7b4e51f1764c13b320ae32e4e80787a664.zip
refactor[ats_D4VNX]: Change quick search sql to use with clause
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite_HSQLDB.launch69
-rw-r--r--plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/QueryStatisticsTest.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/SearchCriteriaTest.java14
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeKeywords.java (renamed from plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeKeyword.java)25
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CriteriaFactory.java13
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/QueryBuilderImpl.java6
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/LocalIdSearchCallable.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.db.test/OrcsDbTestSuite.launch2
-rw-r--r--plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QueryEngineImplTest.java105
-rw-r--r--plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlHandlerFactoryImplTest.java8
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/LoadSqlWriter.java64
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/ArtifactSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/AttributeSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/RelationSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QueryModuleFactory.java10
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlWriter.java71
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AllArtifactsSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactGuidSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactHridsSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactIdsSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactTypeSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeOtherSqlHandler.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTokenSqlHandler.java193
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTypeExistsSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelatedToSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelationTypeExistsSqlHandler.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AbstractQueryPostProcessor.java8
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AttributeQueryPostProcessor.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/DataPostProcessorFactoryImpl.java12
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/SimpleOrPostProcessor.java66
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/TokenQueryPostProcessor.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AbstractSqlWriter.java76
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AliasEntry.java21
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlAliasManager.java34
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlHandler.java5
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/TableEnum.java14
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/WithClause.java52
-rw-r--r--plugins/org.eclipse.osee.orcs.test/OrcsIntegrationTestSuite.launch2
-rw-r--r--plugins/org.eclipse.osee.orcs.test/src/org/eclipse/osee/orcs/api/OrcsQueryTest.java7
40 files changed, 578 insertions, 345 deletions
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite_HSQLDB.launch b/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite_HSQLDB.launch
new file mode 100644
index 00000000000..0dd81eaf343
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/AtsClient_Integration_TestSuite_HSQLDB.launch
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<setAttribute key="additional_plugins">
+<setEntry value="com.google.guava:10.0.1.v201203051515:default:true"/>
+<setEntry value="com.google.guava:12.0.0.v201212092141:default:true"/>
+<setEntry value="org.eclipse.core.runtime.compatibility:3.2.200.v20120521-2346:default:true"/>
+<setEntry value="org.eclipse.osee.ats.client.integration.tests:0.11.0.qualifier:default:true"/>
+<setEntry value="org.eclipse.osee.client.integration.tests:0.11.0.qualifier:default:false"/>
+<setEntry value="org.eclipse.osee.client.test.framework:0.11.0.qualifier:default:false"/>
+</setAttribute>
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="false"/>
+<booleanAttribute key="automaticValidate" value="true"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="false"/>
+<stringAttribute key="featureDefaultLocation" value="workspace"/>
+<stringAttribute key="featurePluginResolution" value="workspace"/>
+<booleanAttribute key="includeOptional" value="false"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace-atsTest"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/AtsClientIntegrationTestSuite.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osee.ats.client.integration.AtsClientIntegrationTestSuite"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -nosplash -console"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osee.ats.client.integration.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx1024M&#13;&#10;-XX:MaxPermSize=256m&#13;&#10;-Dosee.log.default=WARNING&#13;&#10;-Dequinox.ds.debug=true &#13;&#10;-Dosee.application.server=http://localhost:8089&#13;&#10;-DeventDebug=log&#13;&#10;-DeventSystem=new&#13;&#10;-Dosee.is.in.db.init=true"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.osee.framework.ui.product.osee"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<setAttribute key="selected_features">
+<setEntry value="org.eclipse.osee.ats.client.demo.feature:default"/>
+<setEntry value="org.eclipse.osee.ats.feature:default"/>
+<setEntry value="org.eclipse.osee.client.demo.feature:default"/>
+<setEntry value="org.eclipse.osee.client.feature:default"/>
+<setEntry value="org.eclipse.osee.core.feature:default"/>
+<setEntry value="org.eclipse.osee.core.plugin.feature:default"/>
+<setEntry value="org.eclipse.osee.core.runtime.feature:default"/>
+<setEntry value="org.eclipse.osee.core.ui.feature:default"/>
+<setEntry value="org.eclipse.osee.define.feature:default"/>
+<setEntry value="org.eclipse.osee.external.feature:default"/>
+<setEntry value="org.eclipse.osee.framework.feature:default"/>
+<setEntry value="org.eclipse.osee.framework.ui.feature:default"/>
+<setEntry value="org.eclipse.sdk:default"/>
+</setAttribute>
+<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.guava*10.0.1.v201203051515@default:default,com.google.guava*12.0.0.v201212092141@default:default,com.google.inject@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.lowagie.text@default:default,com.ning.async-http-client@default:default,de.itemis.xtext.antlr@default:default,javax.activation@default:default,javax.annotation@default:default,javax.el@default:default,javax.inject@default:default,javax.mail.glassfish@default:default,javax.servlet*2.5.0.v201103041518@default:default,javax.servlet*3.0.0.v201112011016@default:default,javax.servlet.jsp@default:default,javax.xml@default:default,org.antlr.generator@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.ant@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.cli@default:default,org.apache.commons.codec*1.3.0.v201101211617@default:default,org.apache.commons.codec*1.4.0.v201209201156@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging*1.0.4.v201101211617@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.net@default:default,org.apache.commons.pool@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.jasper.glassfish@default:default,org.apache.log4j@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene@default:default,org.apache.oro@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.birt.chart.engine@default:default,org.eclipse.birt.core@default:default,org.eclipse.birt.jetty.overlay@default:false,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.cvs@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.draw2d@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare.ui@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.mwe.core@default:default,org.eclipse.emf.mwe.utils@default:default,org.eclipse.emf.mwe2.language@default:default,org.eclipse.emf.mwe2.launch@default:default,org.eclipse.emf.mwe2.lib@default:default,org.eclipse.emf.mwe2.runtime@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.win32.win32.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.util@default:default,org.eclipse.gef@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.isv@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.m2e.maven.runtime@default:default,org.eclipse.nebula.widgets.calendarcombo@default:default,org.eclipse.nebula.widgets.xviewer@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.sdk@default:default,org.eclipse.search@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.cvs.core@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.team.svn.core@default:default,org.eclipse.team.svn.help@default:default,org.eclipse.team.svn.ui@default:default,org.eclipse.team.svn@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.trace@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.eclipse.xpand@default:default,org.eclipse.xtend.typesystem.emf@default:default,org.eclipse.xtend@default:default,org.eclipse.xtext.builder@default:default,org.eclipse.xtext.common.types.ui@default:default,org.eclipse.xtext.common.types@default:default,org.eclipse.xtext.ecore@default:default,org.eclipse.xtext.generator@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.ui.shared@default:default,org.eclipse.xtext.ui@default:default,org.eclipse.xtext.util@default:default,org.eclipse.xtext.xbase.lib@default:default,org.eclipse.xtext@default:default,org.eclipse.zest.core@default:default,org.eclipse.zest.layouts@default:default,org.hamcrest.core@default:default,org.jboss.netty@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default,org.junit4@default:default,org.mozilla.javascript@default:default,org.objectweb.asm@default:default,org.polarion.eclipse.team.svn.connector.svnkit17@default:default,org.polarion.eclipse.team.svn.connector@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api*1.6.4.v20120130-2120@default:default,org.slf4j.api*1.7.2.v20121108-1250@default:default,org.slf4j.jcl@default:default,org.w3c.css.sac@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
+<stringAttribute key="selected_workspace_plugins" value="com.sun.jersey.client.apache@default:default,com.sun.jersey@default:default,javax.ws.rs@default:default,jms.libraries@default:default,net.jini@default:default,org.eclipse.osee.ats.api@default:default,org.eclipse.osee.ats.client.demo@default:default,org.eclipse.osee.ats.client.integration.tests@default:default,org.eclipse.osee.ats.core.client.test@default:false,org.eclipse.osee.ats.core.client@default:default,org.eclipse.osee.ats.core.test@default:false,org.eclipse.osee.ats.core@default:default,org.eclipse.osee.ats.dsl.ui@default:default,org.eclipse.osee.ats.dsl@default:default,org.eclipse.osee.ats.help.ui.test@default:false,org.eclipse.osee.ats.help.ui@default:default,org.eclipse.osee.ats.impl.test@default:false,org.eclipse.osee.ats.impl@default:default,org.eclipse.osee.ats.mocks@default:default,org.eclipse.osee.ats.test@default:false,org.eclipse.osee.ats@default:default,org.eclipse.osee.client.demo@default:default,org.eclipse.osee.client.test.framework@default:default,org.eclipse.osee.coverage.help.ui.test@default:false,org.eclipse.osee.coverage.help.ui@default:default,org.eclipse.osee.coverage.test@default:false,org.eclipse.osee.coverage@default:default,org.eclipse.osee.define.test@default:false,org.eclipse.osee.define@default:default,org.eclipse.osee.framework.access.provider@default:default,org.eclipse.osee.framework.access.test@default:false,org.eclipse.osee.framework.access@default:default,org.eclipse.osee.framework.core.client@default:default,org.eclipse.osee.framework.core.dsl.integration.test@default:false,org.eclipse.osee.framework.core.dsl.integration@default:default,org.eclipse.osee.framework.core.dsl.ui.integration.test@default:false,org.eclipse.osee.framework.core.dsl.ui.integration@default:default,org.eclipse.osee.framework.core.dsl@default:default,org.eclipse.osee.framework.core.message.test@default:false,org.eclipse.osee.framework.core.message@default:default,org.eclipse.osee.framework.core.model.test@default:false,org.eclipse.osee.framework.core.model@default:default,org.eclipse.osee.framework.core.test@default:false,org.eclipse.osee.framework.core@default:default,org.eclipse.osee.framework.database.init@default:default,org.eclipse.osee.framework.database.test@default:false,org.eclipse.osee.framework.database@default:default,org.eclipse.osee.framework.help.ui.test@default:false,org.eclipse.osee.framework.help.ui@default:default,org.eclipse.osee.framework.jdk.core.test@default:false,org.eclipse.osee.framework.jdk.core@default:default,org.eclipse.osee.framework.jini@default:default,org.eclipse.osee.framework.lifecycle.test@default:false,org.eclipse.osee.framework.lifecycle@default:default,org.eclipse.osee.framework.logging.test@default:false,org.eclipse.osee.framework.logging@default:default,org.eclipse.osee.framework.messaging.event.res.test@default:false,org.eclipse.osee.framework.messaging.event.res@default:default,org.eclipse.osee.framework.messaging.test@default:false,org.eclipse.osee.framework.messaging@default:default,org.eclipse.osee.framework.plugin.core@default:default,org.eclipse.osee.framework.skynet.core.test@default:false,org.eclipse.osee.framework.skynet.core@default:default,org.eclipse.osee.framework.ui.plugin@default:default,org.eclipse.osee.framework.ui.product@default:default,org.eclipse.osee.framework.ui.skynet.test@default:false,org.eclipse.osee.framework.ui.skynet@default:default,org.eclipse.osee.framework.ui.swt@default:default,org.eclipse.osee.framework.ui.ws@default:default,org.eclipse.osee.hsqldb@default:default,org.eclipse.osee.logback.config@default:false,org.eclipse.osee.orcs.rest.client@default:default,org.eclipse.osee.orcs.rest.model@default:default,org.eclipse.osee.ote.define@default:default,org.eclipse.osee.ote.ui.define@default:default,org.eclipse.osee.support.test.util@default:default,org.hsqldb@default:default,org.jvnet.mimepull@default:default,org.mockito@default:default,org.objenesis@default:default"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="timestamp" value="1354263054730"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="true"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/QueryStatisticsTest.java b/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/QueryStatisticsTest.java
index 7b22261a6d4..32fabe73891 100644
--- a/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/QueryStatisticsTest.java
+++ b/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/QueryStatisticsTest.java
@@ -26,7 +26,7 @@ import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.orcs.core.ds.CriteriaSet;
import org.eclipse.osee.orcs.core.ds.QueryData;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.statistics.QueryStatistics;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -53,7 +53,7 @@ public class QueryStatisticsTest {
private static QueryData createQueryData(IOseeBranch branch, String value) {
QueryData queryData = new QueryData(new CriteriaSet(branch), new QueryOptions());
Collection<? extends IAttributeType> types = Collections.singleton(CoreAttributeTypes.Name);
- queryData.addCriteria(new CriteriaAttributeKeyword(types, null, value, TokenDelimiterMatch.ANY,
+ queryData.addCriteria(new CriteriaAttributeKeywords(types, null, value, TokenDelimiterMatch.ANY,
TokenOrderType.MATCH_ORDER, MatchTokenCountType.IGNORE_TOKEN_COUNT, CaseType.MATCH_CASE));
return queryData;
}
diff --git a/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/SearchCriteriaTest.java b/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/SearchCriteriaTest.java
index 857d00289c3..9ccc3792224 100644
--- a/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/SearchCriteriaTest.java
+++ b/plugins/org.eclipse.osee.orcs.core.test/src/org/eclipse/osee/orcs/core/internal/search/SearchCriteriaTest.java
@@ -20,14 +20,14 @@ import org.eclipse.osee.framework.core.exception.OseeArgumentException;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.model.cache.AttributeTypeCache;
import org.eclipse.osee.framework.core.model.type.AttributeType;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
/**
- * Test Case for {@link CriteriaAttributeKeyword}
+ * Test Case for {@link CriteriaAttributeKeywords}
*
* @author Megumi Telles
*/
@@ -51,8 +51,8 @@ public class SearchCriteriaTest {
when(cache.get(CoreAttributeTypes.Name)).thenReturn(type);
when(type.getName()).thenReturn("Name");
when(type.isTaggable()).thenReturn(true);
- CriteriaAttributeKeyword keyword =
- new CriteriaAttributeKeyword(Collections.singletonList(CoreAttributeTypes.Name), cache, "");
+ CriteriaAttributeKeywords keyword =
+ new CriteriaAttributeKeywords(Collections.singletonList(CoreAttributeTypes.Name), cache, "");
keyword.checkNotTaggable();
Assert.assertTrue("Attribute type is taggable", true);
}
@@ -62,8 +62,8 @@ public class SearchCriteriaTest {
when(cache.get(CoreAttributeTypes.Active)).thenReturn(type);
when(type.getName()).thenReturn("Active");
when(type.isTaggable()).thenReturn(false);
- CriteriaAttributeKeyword keyword =
- new CriteriaAttributeKeyword(Collections.singletonList(CoreAttributeTypes.Active), cache, "");
+ CriteriaAttributeKeywords keyword =
+ new CriteriaAttributeKeywords(Collections.singletonList(CoreAttributeTypes.Active), cache, "");
keyword.checkNotTaggable();
Assert.fail("checkNotTaggable should have thrown an exception on this attribute type");
@@ -76,7 +76,7 @@ public class SearchCriteriaTest {
when(cache.get(CoreAttributeTypes.FavoriteBranch)).thenReturn(type);
when(type.getName()).thenReturn("Favorite Branch");
when(type.isTaggable()).thenReturn(false);
- CriteriaAttributeKeyword keyword = new CriteriaAttributeKeyword(types, cache, "");
+ CriteriaAttributeKeywords keyword = new CriteriaAttributeKeywords(types, cache, "");
keyword.checkNotTaggable();
Assert.fail("checkNotTaggable should have thrown an exception on this attribute type");
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeKeyword.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeKeywords.java
index 6d48cd813ac..daeba06fdda 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeKeyword.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeKeywords.java
@@ -26,18 +26,18 @@ import org.eclipse.osee.orcs.core.ds.QueryOptions;
/**
* @author Roberto E. Escobar
*/
-public class CriteriaAttributeKeyword extends Criteria<QueryOptions> {
+public class CriteriaAttributeKeywords extends Criteria<QueryOptions> {
private final AttributeTypeCache attributeTypeCache;
private final Collection<? extends IAttributeType> attributeType;
- private final String value;
+ private final Collection<String> values;
private final QueryOption[] options;
- public CriteriaAttributeKeyword(Collection<? extends IAttributeType> attributeType, AttributeTypeCache attributeTypeCache, String value, QueryOption... options) {
+ public CriteriaAttributeKeywords(Collection<? extends IAttributeType> attributeType, AttributeTypeCache attributeTypeCache, Collection<String> values, QueryOption... options) {
super();
this.attributeTypeCache = attributeTypeCache;
this.attributeType = attributeType;
- this.value = value;
+ this.values = values;
this.options = options;
}
@@ -45,8 +45,8 @@ public class CriteriaAttributeKeyword extends Criteria<QueryOptions> {
return attributeType;
}
- public String getValue() {
- return value;
+ public Collection<String> getValues() {
+ return values;
}
public QueryOption[] getOptions() {
@@ -56,15 +56,22 @@ public class CriteriaAttributeKeyword extends Criteria<QueryOptions> {
@Override
public void checkValid(QueryOptions options) throws OseeCoreException {
super.checkValid(options);
- Conditions.checkNotNullOrEmpty(getValue(), "search value");
+ Conditions.checkNotNullOrEmpty(getValues(), "search value");
Conditions.checkNotNullOrEmpty(getTypes(), "attribute types");
+ checkMultipleValues();
checkNotTaggable();
}
@Override
public String toString() {
- return String.format("CriteriaAttributeKeyword [attributeType=%s, value=%s, options=%s]", attributeType, value,
- Collections.toString(",", Arrays.asList(options)));
+ return String.format("CriteriaAttributeKeyword [attributeType=%s, value=%s, options=%s]", attributeType,
+ Collections.toString(",", values), Collections.toString(",", Arrays.asList(options)));
+ }
+
+ private void checkMultipleValues() throws OseeCoreException {
+ if (getTypes().size() > 1 && getValues().size() > 1) {
+ throw new OseeArgumentException("Multiple values is not valid with multiple types");
+ }
}
public void checkNotTaggable() throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CriteriaFactory.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CriteriaFactory.java
index 1995d889553..58cf0930030 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CriteriaFactory.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CriteriaFactory.java
@@ -11,6 +11,7 @@
package org.eclipse.osee.orcs.core.internal.search;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedList;
import java.util.Set;
import org.eclipse.osee.framework.core.data.IArtifactType;
@@ -29,7 +30,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactGuids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactHrids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactIds;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactType;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeOther;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeTypeExists;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelatedTo;
@@ -69,12 +70,16 @@ public class CriteriaFactory {
}
public Criteria<QueryOptions> createAttributeCriteria(IAttributeType attributeType, Operator operator, Collection<String> values) throws OseeCoreException {
- return new CriteriaAttributeOther(attributeType, values, operator);
+ if (operator == Operator.EQUAL) {
+ return createAttributeCriteria(Collections.singleton(attributeType), values);
+ } else {
+ return new CriteriaAttributeOther(attributeType, values, operator);
+ }
}
- public Criteria<QueryOptions> createAttributeCriteria(Collection<? extends IAttributeType> attributeTypes, String value, QueryOption... options) throws OseeCoreException {
+ public Criteria<QueryOptions> createAttributeCriteria(Collection<? extends IAttributeType> attributeTypes, Collection<String> values, QueryOption... options) throws OseeCoreException {
Collection<? extends IAttributeType> toReturn = checkForAnyType(attributeTypes);
- return new CriteriaAttributeKeyword(toReturn, attributeTypeCache, value, options);
+ return new CriteriaAttributeKeywords(toReturn, attributeTypeCache, values, options);
}
public Criteria<QueryOptions> createArtifactTypeCriteria(Collection<? extends IArtifactType> artifactTypes) throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/QueryBuilderImpl.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/QueryBuilderImpl.java
index 1c53942bd5b..f5197d4fa2e 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/QueryBuilderImpl.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/QueryBuilderImpl.java
@@ -259,13 +259,15 @@ public class QueryBuilderImpl implements QueryBuilder {
@Override
public QueryBuilder and(IAttributeType attributeType, String value, QueryOption... options) throws OseeCoreException {
Criteria<QueryOptions> criteria =
- criteriaFactory.createAttributeCriteria(Collections.singleton(attributeType), value, options);
+ criteriaFactory.createAttributeCriteria(Collections.singleton(attributeType), Collections.singleton(value),
+ options);
return addAndCheck(getQueryData(), criteria);
}
@Override
public QueryBuilder and(Collection<? extends IAttributeType> attributeTypes, String value, QueryOption... options) throws OseeCoreException {
- Criteria<QueryOptions> criteria = criteriaFactory.createAttributeCriteria(attributeTypes, value, options);
+ Criteria<QueryOptions> criteria =
+ criteriaFactory.createAttributeCriteria(attributeTypes, Collections.singleton(value), options);
return addAndCheck(getQueryData(), criteria);
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/LocalIdSearchCallable.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/LocalIdSearchCallable.java
index 02b2108e26f..de626eb971a 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/LocalIdSearchCallable.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/LocalIdSearchCallable.java
@@ -30,7 +30,7 @@ import org.eclipse.osee.orcs.core.ds.QueryEngine;
import org.eclipse.osee.orcs.core.ds.QueryPostProcessor;
import org.eclipse.osee.orcs.core.ds.RelationData;
import org.eclipse.osee.orcs.core.ds.RelationDataHandler;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.core.internal.ArtifactLoader;
import org.eclipse.osee.orcs.core.internal.ArtifactLoaderFactory;
import org.eclipse.osee.orcs.core.internal.SessionContext;
@@ -66,7 +66,7 @@ public class LocalIdSearchCallable extends AbstractSearchCallable<ResultSet<HasL
checkForCancelled();
boolean requiresAttributeScan =
- queryData.hasCriteriaType(CriteriaAttributeKeyword.class) && !queryContext.getPostProcessors().isEmpty();
+ queryData.hasCriteriaType(CriteriaAttributeKeywords.class) && !queryContext.getPostProcessors().isEmpty();
List<HasLocalId> results = new ArrayList<HasLocalId>();
if (requiresAttributeScan) {
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java
index 9c67b83641e..afdf9e0cb16 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/callable/SearchCountCallable.java
@@ -18,7 +18,7 @@ import org.eclipse.osee.orcs.core.ds.QueryContext;
import org.eclipse.osee.orcs.core.ds.QueryData;
import org.eclipse.osee.orcs.core.ds.QueryEngine;
import org.eclipse.osee.orcs.core.ds.QueryPostProcessor;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.core.internal.ArtifactLoader;
import org.eclipse.osee.orcs.core.internal.ArtifactLoaderFactory;
import org.eclipse.osee.orcs.core.internal.SessionContext;
@@ -42,7 +42,7 @@ public class SearchCountCallable extends AbstractArtifactSearchCallable<Integer>
protected Integer innerCall() throws Exception {
int count = -1;
- if (queryData.hasCriteriaType(CriteriaAttributeKeyword.class)) {
+ if (queryData.hasCriteriaType(CriteriaAttributeKeywords.class)) {
queryContext = queryEngine.create(sessionContext.getSessionId(), queryData);
checkForCancelled();
diff --git a/plugins/org.eclipse.osee.orcs.db.test/OrcsDbTestSuite.launch b/plugins/org.eclipse.osee.orcs.db.test/OrcsDbTestSuite.launch
index 41addeb5288..b8265e29c59 100644
--- a/plugins/org.eclipse.osee.orcs.db.test/OrcsDbTestSuite.launch
+++ b/plugins/org.eclipse.osee.orcs.db.test/OrcsDbTestSuite.launch
@@ -32,7 +32,7 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.birt.report.engine.ReportEngineSDK"/>
<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.guava*10.0.1.v201203051515@default:default,com.google.inject@default:default,com.ibm.icu@default:default,javax.inject@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.commons.codec*1.3.0.v201101211617@default:default,org.apache.commons.codec*1.4.0.v201209201156@default:default,org.apache.commons.codec*1.7.0@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.pool@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.log4j@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.birt.jetty.overlay@default:false,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.team.core@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.util@default:default,org.eclipse.xtext@default:default,org.hamcrest.core@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default,org.slf4j.api*1.6.4.v20120130-2120@default:default,org.slf4j.api*1.7.2.v20121108-1250@default:default,org.slf4j.jcl@default:default"/>
+<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.guava*10.0.1.v201203051515@default:default,com.google.inject@default:default,com.ibm.icu@default:default,javax.inject@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.commons.codec*1.3.0.v201101211617@default:default,org.apache.commons.codec*1.4.0.v201209201156@default:default,org.apache.commons.codec*1.7.0@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.pool@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.apache.log4j@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.birt.jetty.overlay@default:false,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.team.core@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.util@default:default,org.eclipse.xtext@default:default,org.hamcrest.core@default:default,org.jsoup@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default,org.slf4j.api*1.6.4.v20120130-2120@default:default,org.slf4j.api*1.7.2.v20121108-1250@default:default,org.slf4j.jcl@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.osee.console.admin.test@default:false,org.eclipse.osee.console.admin@default:default,org.eclipse.osee.database.schema@default:default,org.eclipse.osee.event.osgi@default:default,org.eclipse.osee.event@default:default,org.eclipse.osee.executor.admin.test@default:false,org.eclipse.osee.executor.admin@default:default,org.eclipse.osee.framework.core.dsl.integration.test@default:false,org.eclipse.osee.framework.core.dsl.integration@default:default,org.eclipse.osee.framework.core.dsl@default:default,org.eclipse.osee.framework.core.model.test@default:false,org.eclipse.osee.framework.core.model@default:default,org.eclipse.osee.framework.core.test@default:false,org.eclipse.osee.framework.core@default:default,org.eclipse.osee.framework.database.test@default:false,org.eclipse.osee.framework.database@default:default,org.eclipse.osee.framework.jdk.core.test@default:false,org.eclipse.osee.framework.jdk.core@default:default,org.eclipse.osee.framework.logging.test@default:false,org.eclipse.osee.framework.logging@default:default,org.eclipse.osee.framework.resource.management.test@default:false,org.eclipse.osee.framework.resource.management@default:default,org.eclipse.osee.hsqldb@default:default,org.eclipse.osee.logback.config@default:false,org.eclipse.osee.logger.slf4j@default:default,org.eclipse.osee.logger@default:default,org.eclipse.osee.orcs.core.test@default:false,org.eclipse.osee.orcs.core@default:default,org.eclipse.osee.orcs.db.mock@default:default,org.eclipse.osee.orcs.db.test@default:false,org.eclipse.osee.orcs.db@default:default,org.eclipse.osee.orcs.test@default:false,org.eclipse.osee.orcs@default:default,org.hsqldb@default:default,org.mockito@default:default,org.objenesis@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="timestamp" value="1342550414716"/>
diff --git a/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QueryEngineImplTest.java b/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QueryEngineImplTest.java
index cb1f6cae387..2a4d5e11c3a 100644
--- a/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QueryEngineImplTest.java
+++ b/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QueryEngineImplTest.java
@@ -43,7 +43,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactGuids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactHrids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactIds;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactType;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeOther;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeTypeExists;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelatedTo;
@@ -77,7 +77,7 @@ public class QueryEngineImplTest {
private static final Criteria<?> REL_TYPE_EXISTS = new CriteriaRelationTypeExists(
CoreRelationTypes.Default_Hierarchical__Child);
- private static final Criteria<?> ATTRIBUTE_KEYWORD = new CriteriaAttributeKeyword(Arrays.asList(
+ private static final Criteria<?> ATTRIBUTE_KEYWORD = new CriteriaAttributeKeywords(Arrays.asList(
CoreAttributeTypes.Name, CoreAttributeTypes.WordTemplateContent), null, "hello1_two_three",
TokenDelimiterMatch.ANY, TokenOrderType.MATCH_ORDER, MatchTokenCountType.IGNORE_TOKEN_COUNT, CaseType.MATCH_CASE);
@@ -116,7 +116,7 @@ public class QueryEngineImplTest {
TaggingEngine taggingEngine = queryModule.createTaggingEngine(attributeTypeCache);
- DataPostProcessorFactory<CriteriaAttributeKeyword> postProcessorFactory =
+ DataPostProcessorFactory<CriteriaAttributeKeywords> postProcessorFactory =
queryModule.createAttributeKeywordPostProcessor(executorAdmin, taggingEngine);
SqlHandlerFactory handlerFactory =
queryModule.createHandlerFactory(identityService, cache, postProcessorFactory, taggingEngine.getTagProcessor());
@@ -421,23 +421,24 @@ public class QueryEngineImplTest {
@Test
public void testQueryAtttributeKeyword() throws OseeCoreException {
- String expected =
- "SELECT art1.art_id, txs1.branch_id\n" + //
- " FROM \n" + //
- "osee_search_tags tag1, osee_search_tags tag2, osee_search_tags tag3, osee_attribute att1, osee_join_id jid1, osee_txs txs1, osee_artifact art1, osee_txs txs2\n" + //
- " WHERE \n" + //
- "att1.attr_type_id = jid1.id AND jid1.query_id = ?\n" + //
- " AND \n" + //
- "tag1.coded_tag_id = ? AND tag2.coded_tag_id = ? AND tag3.coded_tag_id = ?\n" + //
- " AND \n" + //
- "tag1.gamma_id = tag2.gamma_id AND tag2.gamma_id = tag3.gamma_id\n" + //
- " AND \n" + //
- "art1.art_id = att1.art_id\n" + //
- " AND \n" + //
- "tag1.gamma_id = att1.gamma_id AND att1.gamma_id = txs1.gamma_id AND txs1.tx_current = 1 AND txs1.branch_id = ?\n" + //
- " AND \n" + //
- "art1.gamma_id = txs2.gamma_id AND txs2.tx_current = 1 AND txs2.branch_id = ?\n" + //
- " ORDER BY art1.art_id, txs1.branch_id";
+ String expected = "WITH gamma1 as ((SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?\n" + //
+ " INTERSECT \n" + //
+ "SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?\n" + //
+ " INTERSECT \n" + //
+ "SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?) ), \n" + //
+ "att1 as (SELECT art_id FROM osee_attribute att, osee_txs txs, osee_join_id jid1, " + //
+ "gamma1 WHERE att.gamma_id = gamma1.gamma_id AND att.gamma_id = txs.gamma_id AND " + //
+ "txs.tx_current = 1 AND txs.branch_id = ? AND att.attr_type_id = jid1.id AND jid1.query_id = ?)\n" + //
+ "SELECT art1.art_id, txs1.branch_id\n" + //
+ " FROM \n" + //
+ "osee_artifact art1, osee_txs txs1, att1\n" + //
+ " WHERE \n" + //
+ "art1.art_id = att1.art_id\n" + //
+ " AND \n" + //
+ "txs1.tx_current = 1 AND txs1.branch_id = ?\n" + //
+ " AND \n" + //
+ "txs1.gamma_id = art1.gamma_id\n" + //
+ " ORDER BY art1.art_id, txs1.branch_id";
queryData.addCriteria(ATTRIBUTE_KEYWORD);
@@ -451,39 +452,42 @@ public class QueryEngineImplTest {
Assert.assertEquals(1, joins.size());
Iterator<Object> iterator = parameters.iterator();
- Assert.assertEquals(joins.get(0).getQueryId(), iterator.next());
Assert.assertEquals(1520625L, iterator.next()); // Coded Hello
Assert.assertEquals(6106L, iterator.next()); // Coded two
Assert.assertEquals(981274L, iterator.next()); // Coded three
Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
+ Assert.assertEquals(joins.get(0).getQueryId(), iterator.next());
Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
}
@Test
public void testQueryAtttributeCombined() throws OseeCoreException {
- String expected =
- "SELECT art1.art_id, txs1.branch_id\n" + //
- " FROM \n" + //
- "osee_attribute att1, osee_txs txs1, osee_artifact art1, osee_txs txs2, osee_search_tags tag1, osee_search_tags tag2, osee_search_tags tag3, osee_attribute att2, osee_join_id jid1, osee_txs txs3\n" + //
- " WHERE \n" + //
- "att1.attr_type_id = ? AND att1.value = ?\n" + //
- " AND \n" + //
- "art1.art_id = att1.art_id AND att1.gamma_id = txs1.gamma_id AND txs1.tx_current = 1 AND txs1.branch_id = ?\n" + //
- " AND \n" + //
- "art1.gamma_id = txs2.gamma_id AND txs2.tx_current = 1 AND txs2.branch_id = ?\n" + //
- " AND \n" + //
- "att2.attr_type_id = jid1.id AND jid1.query_id = ?\n" + //
- " AND \n" + //
- "tag1.coded_tag_id = ? AND tag2.coded_tag_id = ? AND tag3.coded_tag_id = ?\n" + //
- " AND \n" + //
- "tag1.gamma_id = tag2.gamma_id AND tag2.gamma_id = tag3.gamma_id\n" + //
- " AND \n" + //
- "art1.art_id = att2.art_id\n" + //
- " AND \n" + //
- "tag1.gamma_id = att2.gamma_id AND att2.gamma_id = txs3.gamma_id AND txs3.tx_current = 1 AND txs3.branch_id = ?\n" + //
- " AND \n" + //
- "art1.art_type_id = ?\n" + //
- " ORDER BY art1.art_id, txs1.branch_id";
+ String expected = "WITH gamma1 as ((SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?\n" + //
+ " INTERSECT \n" + //
+ "SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?\n" + //
+ " INTERSECT \n" + //
+ "SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?) ), \n" + //
+ "att2 as (SELECT art_id FROM osee_attribute att, osee_txs txs, osee_join_id jid1, " + //
+ "gamma1 WHERE att.gamma_id = gamma1.gamma_id AND att.gamma_id = txs.gamma_id AND " + //
+ "txs.tx_current = 1 AND txs.branch_id = ? AND att.attr_type_id = jid1.id AND jid1.query_id = ?)\n" + //
+ "SELECT art1.art_id, txs1.branch_id\n" + //
+ " FROM \n" + //
+ "osee_attribute att1, osee_txs txs1, osee_artifact art1, osee_txs txs2, att2\n" + //
+ " WHERE \n" + //
+ "att1.attr_type_id = ? AND att1.value = ?\n" + //
+ " AND \n" + //
+ "art1.art_id = att1.art_id AND att1.gamma_id = txs1.gamma_id AND txs1.tx_current = 1 AND txs1.branch_id = ?\n" + //
+ " AND \n" + //
+ "art1.gamma_id = txs2.gamma_id AND txs2.tx_current = 1 AND txs2.branch_id = ?\n" + //
+ " AND \n" + //
+ "art1.art_id = att2.art_id\n" + //
+ " AND \n" + //
+ "txs1.tx_current = 1 AND txs1.branch_id = ?\n" + //
+ " AND \n" + //
+ "txs1.gamma_id = art1.gamma_id\n" + //
+ " AND \n" + //
+ "art1.art_type_id = ?\n" + //
+ " ORDER BY art1.art_id, txs1.branch_id";
queryData.addCriteria(ATTRIBUTE, ATTRIBUTE_KEYWORD, TYPES);
@@ -491,21 +495,22 @@ public class QueryEngineImplTest {
Assert.assertEquals(expected, context.getSql());
List<Object> parameters = context.getParameters();
- Assert.assertEquals(10, parameters.size());
+ Assert.assertEquals(11, parameters.size());
List<AbstractJoinQuery> joins = context.getJoins();
Assert.assertEquals(1, joins.size());
Iterator<Object> iterator = parameters.iterator();
+ Assert.assertEquals(1520625L, iterator.next()); // Coded Hello
+ Assert.assertEquals(6106L, iterator.next()); // Coded two
+ Assert.assertEquals(981274L, iterator.next()); // Coded three
+ Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
+ Assert.assertEquals(joins.get(0).getQueryId(), iterator.next());
Assert.assertEquals(CoreAttributeTypes.Name.getGuid().intValue(), iterator.next());
Assert.assertEquals("Hello", iterator.next());
Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
- Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
- Assert.assertEquals(joins.get(0).getQueryId(), iterator.next());
- Assert.assertEquals(1520625L, iterator.next()); // Coded Hello
- Assert.assertEquals(6106L, iterator.next()); // Coded two
- Assert.assertEquals(981274L, iterator.next()); // Coded three
+ Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
Assert.assertEquals(EXPECTED_BRANCH_ID, iterator.next());
Assert.assertEquals(CoreArtifactTypes.CodeUnit.getGuid().intValue(), iterator.next());
}
diff --git a/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlHandlerFactoryImplTest.java b/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlHandlerFactoryImplTest.java
index 025564df5cc..ab4664e3fef 100644
--- a/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlHandlerFactoryImplTest.java
+++ b/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlHandlerFactoryImplTest.java
@@ -30,7 +30,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactGuids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactHrids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactIds;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactType;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeOther;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeTypeExists;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelatedTo;
@@ -73,7 +73,7 @@ public class QuerySqlHandlerFactoryImplTest {
// @formatter:on
private SqlHandlerFactory factory;
- private DataPostProcessorFactory<CriteriaAttributeKeyword> postProcessorFactory;
+ private DataPostProcessorFactory<CriteriaAttributeKeywords> postProcessorFactory;
@Before
public void setUp() {
@@ -97,7 +97,7 @@ public class QuerySqlHandlerFactoryImplTest {
criteria.add(new CriteriaRelationTypeExists(null));
criteria.add(new CriteriaAttributeTypeExists(null));
criteria.add(new CriteriaAttributeOther(null, null, null));
- criteria.add(new CriteriaAttributeKeyword(null, null, null, null, null, null));
+ criteria.add(new CriteriaAttributeKeywords(null, null, null, null, null, null));
criteria.add(new CriteriaRelatedTo(null, null));
criteria.add(new CriteriaAllArtifacts());
@@ -118,7 +118,7 @@ public class QuerySqlHandlerFactoryImplTest {
assertSqlHandler(tokenHandler, AttributeTokenSqlHandler.class, SqlHandlerPriority.ATTRIBUTE_TOKENIZED_VALUE);
Assert.assertTrue(tokenHandler instanceof HasDataPostProcessorFactory);
Assert.assertEquals(postProcessorFactory,
- ((HasDataPostProcessorFactory<CriteriaAttributeKeyword>) tokenHandler).getDataPostProcessorFactory());
+ ((HasDataPostProcessorFactory<CriteriaAttributeKeywords>) tokenHandler).getDataPostProcessorFactory());
assertSqlHandler(iterator.next(), ArtifactTypeSqlHandler.class, SqlHandlerPriority.ARTIFACT_TYPE);
assertSqlHandler(iterator.next(), AttributeTypeExistsSqlHandler.class, SqlHandlerPriority.ATTRIBUTE_TYPE_EXISTS);
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/LoadSqlWriter.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/LoadSqlWriter.java
index 351340a2a1f..574ad1c2164 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/LoadSqlWriter.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/LoadSqlWriter.java
@@ -67,46 +67,48 @@ public class LoadSqlWriter extends AbstractSqlWriter<LoadOptions> {
}
@Override
- public void writeTxBranchFilter(String txsAlias) throws OseeCoreException {
+ public String getTxBranchFilter(String txsAlias) {
+ StringBuilder sb = new StringBuilder();
String artJoinAlias = getAliasManager().getFirstAlias(TableEnum.ARTIFACT_JOIN_TABLE);
- writeTxFilter(txsAlias, artJoinAlias);
- write(" AND ");
- write(txsAlias);
- write(".branch_id = ");
- write(artJoinAlias);
- write(".branch_id");
+ writeTxFilter(txsAlias, artJoinAlias, sb);
+ sb.append(" AND ");
+ sb.append(txsAlias);
+ sb.append(".branch_id = ");
+ sb.append(artJoinAlias);
+ sb.append(".branch_id");
+ return sb.toString();
}
- private void writeTxFilter(String txsAlias, String artJoinAlias) throws OseeCoreException {
+ private void writeTxFilter(String txsAlias, String artJoinAlias, StringBuilder sb) {
if (getOptions().isHistorical()) {
- write(txsAlias);
- write(".transaction_id <= ");
- write(artJoinAlias);
- write(".transaction_id");
+ sb.append(txsAlias);
+ sb.append(".transaction_id <= ");
+ sb.append(artJoinAlias);
+ sb.append(".transaction_id");
if (!getOptions().areDeletedIncluded()) {
- write(" AND ");
- write(txsAlias);
- write(".tx_current");
- write(" IN (");
- write(String.valueOf(TxChange.CURRENT.getValue()));
- write(", ");
- write(String.valueOf(TxChange.NOT_CURRENT.getValue()));
- write(")");
+ sb.append(" AND ");
+ sb.append(txsAlias);
+ sb.append(".tx_current");
+ sb.append(" IN (");
+ sb.append(String.valueOf(TxChange.CURRENT.getValue()));
+ sb.append(", ");
+ sb.append(String.valueOf(TxChange.NOT_CURRENT.getValue()));
+ sb.append(")");
}
} else {
- write(txsAlias);
- write(".tx_current");
+ sb.append(txsAlias);
+ sb.append(".tx_current");
if (getOptions().areDeletedIncluded()) {
- write(" IN (");
- write(String.valueOf(TxChange.CURRENT.getValue()));
- write(", ");
- write(String.valueOf(TxChange.DELETED.getValue()));
- write(", ");
- write(String.valueOf(TxChange.ARTIFACT_DELETED.getValue()));
- write(")");
+ sb.append(" IN (");
+ sb.append(String.valueOf(TxChange.CURRENT.getValue()));
+ sb.append(", ");
+ sb.append(String.valueOf(TxChange.DELETED.getValue()));
+ sb.append(", ");
+ sb.append(String.valueOf(TxChange.ARTIFACT_DELETED.getValue()));
+ sb.append(")");
} else {
- write(" = ");
- write(String.valueOf(TxChange.CURRENT.getValue()));
+ sb.append(" = ");
+ sb.append(String.valueOf(TxChange.CURRENT.getValue()));
}
}
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/ArtifactSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/ArtifactSqlHandler.java
index 22af72a42b3..7cbe652333e 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/ArtifactSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/ArtifactSqlHandler.java
@@ -65,7 +65,7 @@ public class ArtifactSqlHandler extends SqlHandler<CriteriaArtifact, LoadOptions
writer.write(txsAlias);
writer.write(".gamma_id");
writer.write("\n AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/AttributeSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/AttributeSqlHandler.java
index 4c350b6b258..8745ad2a3ef 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/AttributeSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/AttributeSqlHandler.java
@@ -130,7 +130,7 @@ public class AttributeSqlHandler extends SqlHandler<CriteriaAttribute, LoadOptio
writer.write(txsAlias);
writer.write(".gamma_id");
writer.write("\n AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/RelationSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/RelationSqlHandler.java
index 608feac38e7..95f8639c0b9 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/RelationSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/loader/handlers/RelationSqlHandler.java
@@ -129,7 +129,7 @@ public class RelationSqlHandler extends SqlHandler<CriteriaRelation, LoadOptions
writer.write(txsAlias);
writer.write(".gamma_id");
writer.write("\n AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QueryModuleFactory.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QueryModuleFactory.java
index 9e738133094..87dd6fa9fcd 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QueryModuleFactory.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QueryModuleFactory.java
@@ -29,7 +29,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactGuids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactHrids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactIds;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactType;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeOther;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeTypeExists;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelatedTo;
@@ -83,7 +83,7 @@ public class QueryModuleFactory {
public void create(ExecutorAdmin executorAdmin, IOseeDatabaseService dbService, IdentityService identityService, SqlProvider sqlProvider, IOseeCachingService cacheService, IResourceManager resourceManager) {
TaggingEngine taggingEngine = createTaggingEngine(cacheService.getAttributeTypeCache());
- DataPostProcessorFactory<CriteriaAttributeKeyword> postProcessor =
+ DataPostProcessorFactory<CriteriaAttributeKeywords> postProcessor =
createAttributeKeywordPostProcessor(executorAdmin, taggingEngine);
SqlHandlerFactory handlerFactory =
createHandlerFactory(identityService, cacheService, postProcessor, taggingEngine.getTagProcessor());
@@ -131,7 +131,7 @@ public class QueryModuleFactory {
return new QueryEngineIndexerImpl(logger, dbService, attributeTypeCache, indexConsumer);
}
- protected SqlHandlerFactory createHandlerFactory(IdentityService identityService, IOseeCachingService cacheService, DataPostProcessorFactory<CriteriaAttributeKeyword> postProcessorFactory, TagProcessor tagProcessor) {
+ protected SqlHandlerFactory createHandlerFactory(IdentityService identityService, IOseeCachingService cacheService, DataPostProcessorFactory<CriteriaAttributeKeywords> postProcessorFactory, TagProcessor tagProcessor) {
Map<Class<? extends Criteria<?>>, Class<? extends SqlHandler<?, ?>>> handleMap =
new HashMap<Class<? extends Criteria<?>>, Class<? extends SqlHandler<?, ?>>>();
@@ -147,7 +147,7 @@ public class QueryModuleFactory {
handleMap.put(CriteriaRelationTypeExists.class, RelationTypeExistsSqlHandler.class);
handleMap.put(CriteriaAttributeTypeExists.class, AttributeTypeExistsSqlHandler.class);
handleMap.put(CriteriaAttributeOther.class, AttributeOtherSqlHandler.class);
- handleMap.put(CriteriaAttributeKeyword.class, AttributeTokenSqlHandler.class);
+ handleMap.put(CriteriaAttributeKeywords.class, AttributeTokenSqlHandler.class);
handleMap.put(CriteriaAllArtifacts.class, AllArtifactsSqlHandler.class);
factoryMap.put(AttributeTokenSqlHandler.class, postProcessorFactory);
@@ -155,7 +155,7 @@ public class QueryModuleFactory {
return new SqlHandlerFactoryImpl(logger, identityService, cacheService, tagProcessor, handleMap, factoryMap);
}
- protected DataPostProcessorFactory<CriteriaAttributeKeyword> createAttributeKeywordPostProcessor(ExecutorAdmin executorAdmin, TaggingEngine taggingEngine) {
+ protected DataPostProcessorFactory<CriteriaAttributeKeywords> createAttributeKeywordPostProcessor(ExecutorAdmin executorAdmin, TaggingEngine taggingEngine) {
return new DataPostProcessorFactoryImpl(logger, taggingEngine, executorAdmin);
}
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlWriter.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlWriter.java
index fd3b88518cf..97b6de714db 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlWriter.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/QuerySqlWriter.java
@@ -14,13 +14,11 @@ import java.util.List;
import org.eclipse.osee.framework.core.enums.TxChange;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.database.IOseeDatabaseService;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.DataPostProcessor;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
import org.eclipse.osee.orcs.db.internal.SqlProvider;
import org.eclipse.osee.orcs.db.internal.sql.AbstractSqlWriter;
-import org.eclipse.osee.orcs.db.internal.sql.SqlAliasManager;
import org.eclipse.osee.orcs.db.internal.sql.SqlContext;
import org.eclipse.osee.orcs.db.internal.sql.SqlHandler;
import org.eclipse.osee.orcs.db.internal.sql.TableEnum;
@@ -84,60 +82,49 @@ public class QuerySqlWriter extends AbstractSqlWriter<QueryOptions> {
}
@Override
- public void writeTxBranchFilter(String txsAlias) throws OseeCoreException {
- writeTxFilter(txsAlias);
+ public String getTxBranchFilter(String txsAlias) {
+ StringBuilder sb = new StringBuilder();
+ writeTxFilter(txsAlias, sb);
if (branchId > 0) {
- write(" AND ");
- write(txsAlias);
- write(".branch_id = ?");
+ sb.append(" AND ");
+ sb.append(txsAlias);
+ sb.append(".branch_id = ?");
addParameter(branchId);
}
+ return sb.toString();
}
- private void writeTxFilter(String txsAlias) throws OseeCoreException {
+ private void writeTxFilter(String txsAlias, StringBuilder sb) {
if (getOptions().isHistorical()) {
- write(txsAlias);
- write(".transaction_id <= ?");
+ sb.append(txsAlias);
+ sb.append(".transaction_id <= ?");
addParameter(getOptions().getFromTransaction());
if (!getOptions().areDeletedIncluded()) {
- writeAndLn();
- write(txsAlias);
- write(".tx_current");
- write(" IN (");
- write(String.valueOf(TxChange.CURRENT.getValue()));
- write(", ");
- write(String.valueOf(TxChange.NOT_CURRENT.getValue()));
- write(")");
+ sb.append(AND_WITH_NEWLINES);
+ sb.append(txsAlias);
+ sb.append(".tx_current");
+ sb.append(" IN (");
+ sb.append(String.valueOf(TxChange.CURRENT.getValue()));
+ sb.append(", ");
+ sb.append(String.valueOf(TxChange.NOT_CURRENT.getValue()));
+ sb.append(")");
}
} else {
- write(txsAlias);
- write(".tx_current");
+ sb.append(txsAlias);
+ sb.append(".tx_current");
if (getOptions().areDeletedIncluded()) {
- write(" IN (");
- write(String.valueOf(TxChange.CURRENT.getValue()));
- write(", ");
- write(String.valueOf(TxChange.DELETED.getValue()));
- write(", ");
- write(String.valueOf(TxChange.ARTIFACT_DELETED.getValue()));
- write(")");
+ sb.append(" IN (");
+ sb.append(String.valueOf(TxChange.CURRENT.getValue()));
+ sb.append(", ");
+ sb.append(String.valueOf(TxChange.DELETED.getValue()));
+ sb.append(", ");
+ sb.append(String.valueOf(TxChange.ARTIFACT_DELETED.getValue()));
+ sb.append(")");
} else {
- write(" = ");
- write(String.valueOf(TxChange.CURRENT.getValue()));
+ sb.append(" = ");
+ sb.append(String.valueOf(TxChange.CURRENT.getValue()));
}
}
}
- @Override
- protected String getSqlHint() throws OseeCoreException {
- String hint = Strings.EMPTY_STRING;
- SqlAliasManager aliasManager = getAliasManager();
-
- boolean hintAllowed = aliasManager.getCount(TableEnum.SEARCH_TAGS_TABLE) <= 2;
-
- if (hintAllowed) {
- hint = super.getSqlHint();
- }
- return hint;
- }
-
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AllArtifactsSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AllArtifactsSqlHandler.java
index a3ae361ee9d..2e1f4bf80ea 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AllArtifactsSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AllArtifactsSqlHandler.java
@@ -52,7 +52,7 @@ public class AllArtifactsSqlHandler extends SqlHandler<CriteriaAllArtifacts, Que
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
modified = true;
}
return modified;
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactGuidSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactGuidSqlHandler.java
index 142fcdca762..1fa22d8f400 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactGuidSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactGuidSqlHandler.java
@@ -67,7 +67,7 @@ public class ArtifactGuidSqlHandler extends SqlHandler<CriteriaArtifactGuids, Qu
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactHridsSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactHridsSqlHandler.java
index deae5d90979..02b25fb9df9 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactHridsSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactHridsSqlHandler.java
@@ -67,7 +67,7 @@ public class ArtifactHridsSqlHandler extends SqlHandler<CriteriaArtifactHrids, Q
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactIdsSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactIdsSqlHandler.java
index 4e7f17bdf34..16a929af0f3 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactIdsSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactIdsSqlHandler.java
@@ -66,7 +66,7 @@ public class ArtifactIdsSqlHandler extends SqlHandler<CriteriaArtifactIds, Query
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactTypeSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactTypeSqlHandler.java
index 3ba0e9d9df2..3b208df5ba2 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactTypeSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/ArtifactTypeSqlHandler.java
@@ -127,7 +127,7 @@ public class ArtifactTypeSqlHandler extends SqlHandler<CriteriaArtifactType, Que
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
modified = true;
}
return modified;
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeOtherSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeOtherSqlHandler.java
index 1839db070fd..13f99467690 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeOtherSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeOtherSqlHandler.java
@@ -136,7 +136,7 @@ public class AttributeOtherSqlHandler extends SqlHandler<CriteriaAttributeOther,
writer.write(".gamma_id = ");
writer.write(txsAlias1);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias1);
+ writer.write(writer.getTxBranchFilter(txsAlias1));
if (txs2Alias2 != null && artAlias2 != null) {
writer.writeAndLn();
@@ -144,7 +144,7 @@ public class AttributeOtherSqlHandler extends SqlHandler<CriteriaAttributeOther,
writer.write(".gamma_id = ");
writer.write(txs2Alias2);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txs2Alias2);
+ writer.write(writer.getTxBranchFilter(txs2Alias2));
}
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTokenSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTokenSqlHandler.java
index 4b9354da082..f671c6cfc8b 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTokenSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTokenSqlHandler.java
@@ -19,10 +19,12 @@ import org.eclipse.osee.framework.core.data.IAttributeType;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.database.core.AbstractJoinQuery;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.orcs.core.ds.DataPostProcessor;
import org.eclipse.osee.orcs.core.ds.DataPostProcessorFactory;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.db.internal.search.tagger.HasTagProcessor;
import org.eclipse.osee.orcs.db.internal.search.tagger.TagCollector;
import org.eclipse.osee.orcs.db.internal.search.tagger.TagProcessor;
@@ -30,38 +32,36 @@ import org.eclipse.osee.orcs.db.internal.sql.AbstractSqlWriter;
import org.eclipse.osee.orcs.db.internal.sql.HasDataPostProcessorFactory;
import org.eclipse.osee.orcs.db.internal.sql.SqlHandler;
import org.eclipse.osee.orcs.db.internal.sql.TableEnum;
+import org.eclipse.osee.orcs.db.internal.sql.WithClause;
+import org.eclipse.osee.orcs.db.internal.sql.WithClause.WithAlias;
/**
* @author Roberto E. Escobar
*/
-public class AttributeTokenSqlHandler extends SqlHandler<CriteriaAttributeKeyword, QueryOptions> implements HasTagProcessor, HasDataPostProcessorFactory<CriteriaAttributeKeyword> {
+public class AttributeTokenSqlHandler extends SqlHandler<CriteriaAttributeKeywords, QueryOptions> implements HasTagProcessor, HasDataPostProcessorFactory<CriteriaAttributeKeywords> {
- private CriteriaAttributeKeyword criteria;
+ private CriteriaAttributeKeywords criteria;
private static final int MAX_TOKEN_SIZE = 20;
+ private String artAlias;
private String attrAlias;
- private String txsAlias1;
+ private String txsAlias;
private String jIdAlias;
- private List<Long> codedTags;
- private List<String> tagAliases;
-
- private String artAlias2;
- private String txs2Alias2;
private AbstractJoinQuery joinQuery;
private Collection<? extends IAttributeType> types;
- private DataPostProcessorFactory<CriteriaAttributeKeyword> factory;
+ private DataPostProcessorFactory<CriteriaAttributeKeywords> factory;
private TagProcessor tagProcessor;
@Override
- public void setDataPostProcessorFactory(DataPostProcessorFactory<CriteriaAttributeKeyword> factory) {
+ public void setDataPostProcessorFactory(DataPostProcessorFactory<CriteriaAttributeKeywords> factory) {
this.factory = factory;
}
@Override
- public DataPostProcessorFactory<CriteriaAttributeKeyword> getDataPostProcessorFactory() {
+ public DataPostProcessorFactory<CriteriaAttributeKeywords> getDataPostProcessorFactory() {
return factory;
}
@@ -76,135 +76,104 @@ public class AttributeTokenSqlHandler extends SqlHandler<CriteriaAttributeKeywor
}
@Override
- public void setData(CriteriaAttributeKeyword criteria) {
+ public void setData(CriteriaAttributeKeywords criteria) {
this.criteria = criteria;
}
@Override
- public void addTables(AbstractSqlWriter<QueryOptions> writer) throws OseeCoreException {
- types = criteria.getTypes();
+ public void addWithTables(AbstractSqlWriter<QueryOptions> writer) throws OseeCoreException {
+ List<String> values = new ArrayList<String>(criteria.getValues());
+ int valueCount = values.size();
+ int tagsCount = 0;
+
+ StringBuilder gammaSb = new StringBuilder();
+
+ for (int valueIdx = 0; valueIdx < valueCount; valueIdx++) {
+ List<Long> tags = new ArrayList<Long>();
+ String value = values.get(valueIdx);
+ tokenize(value, tags);
+ int tagsSize = tags.size();
+ gammaSb.append("(");
+ for (int tagIdx = 0; tagIdx < tagsSize; tagIdx++, tagsCount++) {
+ Long tag = tags.get(tagIdx);
+ gammaSb.append("SELECT gamma_id FROM osee_search_tags WHERE coded_tag_id = ?");
+ writer.addParameter(tag);
+ if (tagIdx + 1 < tagsSize) {
+ gammaSb.append("\n INTERSECT \n");
+ }
+ }
+ gammaSb.append(") ");
+ if (valueIdx + 1 < valueCount) {
+ gammaSb.append("\n UNION ALL \n");
+ }
+ }
- codedTags = new ArrayList<Long>();
- tokenize(criteria.getValue(), codedTags);
+ Conditions.checkExpressionFailOnTrue(tagsCount > MAX_TOKEN_SIZE, "Parsed tokens for [%s] is greater than [%d]",
+ Collections.toString(", ", criteria.getValues()), MAX_TOKEN_SIZE);
+
+ WithClause gammaWith = new WithClause(gammaSb.toString(), WithAlias.GAMMA);
+ String gammaAlias = writer.addWithClause(gammaWith);
+
+ StringBuilder attrSb = new StringBuilder();
+ attrSb.append("SELECT art_id FROM osee_attribute att, osee_txs txs, ");
+ attrSb.append(gammaAlias);
+ attrSb.append(" WHERE att.gamma_id = ");
+ attrSb.append(gammaAlias);
+ attrSb.append(".gamma_id AND att.gamma_id = txs.gamma_id AND ");
+ attrSb.append(writer.getTxBranchFilter("txs"));
+ if (criteria.getTypes().size() == 1) {
+ attrSb.append(" AND att.attr_type_id = ?");
+ int localId = toLocalId(criteria.getTypes().iterator().next());
+ writer.addParameter(localId);
+ }
- Conditions.checkExpressionFailOnTrue(codedTags.size() > MAX_TOKEN_SIZE,
- "Parsed tokens for [%s] is greater than [%d]", criteria.getValue(), MAX_TOKEN_SIZE);
+ WithClause attrWith = new WithClause(attrSb.toString(), WithAlias.ATTRIBUTE);
+ attrAlias = writer.addWithClause(attrWith);
+ writer.addTable(attrAlias);
+ }
+
+ @Override
+ public void addTables(AbstractSqlWriter<QueryOptions> writer) throws OseeCoreException {
+ types = criteria.getTypes();
- tagAliases = new ArrayList<String>();
- for (int index = 0; index < codedTags.size(); index++) {
- tagAliases.add(writer.addTable(TableEnum.SEARCH_TAGS_TABLE));
- }
- attrAlias = writer.addTable(TableEnum.ATTRIBUTE_TABLE);
if (types.size() > 1) {
- jIdAlias = writer.addTable(TableEnum.ID_JOIN_TABLE);
+ Set<Integer> typeIds = new HashSet<Integer>();
+ for (IAttributeType type : types) {
+ typeIds.add(toLocalId(type));
+ }
+ joinQuery = writer.writeIdJoin(typeIds);
}
List<String> aliases = writer.getAliases(TableEnum.ARTIFACT_TABLE);
List<String> txs = writer.getAliases(TableEnum.TXS_TABLE);
- txsAlias1 = writer.addTable(TableEnum.TXS_TABLE);
+ // txsAlias1 = writer.addTable(TableEnum.TXS_TABLE);
if (aliases.isEmpty()) {
- artAlias2 = writer.addTable(TableEnum.ARTIFACT_TABLE);
+ artAlias = writer.addTable(TableEnum.ARTIFACT_TABLE);
}
if (txs.isEmpty()) {
- txs2Alias2 = writer.addTable(TableEnum.TXS_TABLE);
+ txsAlias = writer.addTable(TableEnum.TXS_TABLE);
}
}
@Override
public boolean addPredicates(AbstractSqlWriter<QueryOptions> writer) throws OseeCoreException {
- if (types.size() > 1) {
- Set<Integer> typeIds = new HashSet<Integer>();
- for (IAttributeType type : types) {
- typeIds.add(toLocalId(type));
- }
- joinQuery = writer.writeIdJoin(typeIds);
- writer.write(attrAlias);
- writer.write(".attr_type_id = ");
- writer.write(jIdAlias);
- writer.write(".id");
- writer.write(" AND ");
- writer.write(jIdAlias);
- writer.write(".query_id = ?");
- writer.addParameter(joinQuery.getQueryId());
- } else {
- IAttributeType type = types.iterator().next();
- int localId = toLocalId(type);
- writer.write(attrAlias);
- writer.write(".attr_type_id = ?");
- writer.addParameter(localId);
- }
-
DataPostProcessor<?> processor = getDataPostProcessorFactory().createPostProcessor(criteria, writer.getOptions());
writer.addPostProcessor(processor);
- writer.writeAndLn();
-
- int size = tagAliases.size();
- for (int index = 0; index < size; index++) {
- String tagAlias = tagAliases.get(index);
- Long tag = codedTags.get(index);
-
- writer.write(tagAlias);
- writer.write(".coded_tag_id = ?");
- writer.addParameter(tag);
-
- if (index + 1 < size) {
- writer.write(" AND ");
- }
+ if (!Strings.isValid(artAlias)) {
+ artAlias = writer.getAliases(TableEnum.ARTIFACT_TABLE).iterator().next();
}
- if (size > 1) {
- writer.writeAndLn();
- for (int index = 1; index < size; index++) {
- String tagAlias1 = tagAliases.get(index - 1);
- String tagAlias2 = tagAliases.get(index);
-
- writer.write(tagAlias1);
- writer.write(".gamma_id = ");
- writer.write(tagAlias2);
- writer.write(".gamma_id");
- if (index + 1 < size) {
- writer.write(" AND ");
- }
- }
- }
-
- List<String> aliases = writer.getAliases(TableEnum.ARTIFACT_TABLE);
- if (!aliases.isEmpty()) {
- writer.writeAndLn();
- int aSize = aliases.size();
- for (int index = 0; index < aSize; index++) {
- String artAlias = aliases.get(index);
- writer.write(artAlias);
- writer.write(".art_id = ");
- writer.write(attrAlias);
- writer.write(".art_id");
- if (index + 1 < aSize) {
- writer.write(" AND ");
- }
- }
+ if (!Strings.isValid(txsAlias)) {
+ txsAlias = writer.getAliases(TableEnum.TXS_TABLE).iterator().next();
}
+ writer.write("%s.art_id = %s.art_id", artAlias, attrAlias);
writer.writeAndLn();
- writer.write(tagAliases.get(0));
- writer.write(".gamma_id = ");
- writer.write(attrAlias);
- writer.write(".gamma_id AND ");
- writer.write(attrAlias);
- writer.write(".gamma_id = ");
- writer.write(txsAlias1);
- writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias1);
-
- if (txs2Alias2 != null && artAlias2 != null) {
- writer.writeAndLn();
- writer.write(artAlias2);
- writer.write(".gamma_id = ");
- writer.write(txs2Alias2);
- writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txs2Alias2);
- }
+ writer.write(writer.getTxBranchFilter(txsAlias));
+ writer.writeAndLn();
+ writer.write("%s.gamma_id = %s.gamma_id", txsAlias, artAlias);
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTypeExistsSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTypeExistsSqlHandler.java
index 2c03422e165..5aa06965d75 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTypeExistsSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTypeExistsSqlHandler.java
@@ -101,7 +101,7 @@ public class AttributeTypeExistsSqlHandler extends SqlHandler<CriteriaAttributeT
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelatedToSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelatedToSqlHandler.java
index 8355bc83546..f5ecd21a643 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelatedToSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelatedToSqlHandler.java
@@ -104,7 +104,7 @@ public class RelatedToSqlHandler extends SqlHandler<CriteriaRelatedTo, QueryOpti
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelationTypeExistsSqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelationTypeExistsSqlHandler.java
index a2b76419444..28f10aada73 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelationTypeExistsSqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/RelationTypeExistsSqlHandler.java
@@ -81,7 +81,7 @@ public class RelationTypeExistsSqlHandler extends SqlHandler<CriteriaRelationTyp
writer.write(".gamma_id = ");
writer.write(txsAlias);
writer.write(".gamma_id AND ");
- writer.writeTxBranchFilter(txsAlias);
+ writer.write(writer.getTxBranchFilter(txsAlias));
return true;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AbstractQueryPostProcessor.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AbstractQueryPostProcessor.java
index 51d98ce6b32..2bf78222adf 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AbstractQueryPostProcessor.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AbstractQueryPostProcessor.java
@@ -29,7 +29,7 @@ import org.eclipse.osee.framework.jdk.core.type.MatchLocation;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
import org.eclipse.osee.orcs.core.ds.QueryPostProcessor;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.data.ArtifactReadable;
import org.eclipse.osee.orcs.data.AttributeReadable;
import org.eclipse.osee.orcs.db.internal.search.tagger.Tagger;
@@ -41,11 +41,11 @@ import org.eclipse.osee.orcs.search.Match;
public abstract class AbstractQueryPostProcessor extends QueryPostProcessor implements PartitionFactory<ArtifactReadable, Match<ArtifactReadable, AttributeReadable<?>>> {
private final QueryOptions options;
- private final CriteriaAttributeKeyword criteria;
+ private final CriteriaAttributeKeywords criteria;
private final ExecutorAdmin executorAdmin;
private List<Future<Collection<Match<ArtifactReadable, AttributeReadable<?>>>>> futures;
- protected AbstractQueryPostProcessor(Log logger, ExecutorAdmin executorAdmin, CriteriaAttributeKeyword criteria, QueryOptions options) {
+ protected AbstractQueryPostProcessor(Log logger, ExecutorAdmin executorAdmin, CriteriaAttributeKeywords criteria, QueryOptions options) {
super(logger);
this.executorAdmin = executorAdmin;
this.criteria = criteria;
@@ -57,7 +57,7 @@ public abstract class AbstractQueryPostProcessor extends QueryPostProcessor impl
}
protected String getQuery() {
- return criteria.getValue();
+ return criteria.getValues().iterator().next();
}
protected QueryOptions getOptions() {
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AttributeQueryPostProcessor.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AttributeQueryPostProcessor.java
index 727637b1a5e..e8bc503ef6d 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AttributeQueryPostProcessor.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AttributeQueryPostProcessor.java
@@ -14,7 +14,7 @@ import org.eclipse.osee.executor.admin.ExecutorAdmin;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.data.AttributeReadable;
import org.eclipse.osee.orcs.db.internal.search.tagger.Tagger;
import org.eclipse.osee.orcs.db.internal.search.tagger.TaggingEngine;
@@ -26,7 +26,7 @@ public class AttributeQueryPostProcessor extends AbstractQueryPostProcessor {
private final TaggingEngine engine;
- public AttributeQueryPostProcessor(Log logger, ExecutorAdmin executorAdmin, TaggingEngine engine, CriteriaAttributeKeyword criteria, QueryOptions options) {
+ public AttributeQueryPostProcessor(Log logger, ExecutorAdmin executorAdmin, TaggingEngine engine, CriteriaAttributeKeywords criteria, QueryOptions options) {
super(logger, executorAdmin, criteria, options);
this.engine = engine;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/DataPostProcessorFactoryImpl.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/DataPostProcessorFactoryImpl.java
index 3ad163bb0c5..98a6e936a60 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/DataPostProcessorFactoryImpl.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/DataPostProcessorFactoryImpl.java
@@ -15,13 +15,13 @@ import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.DataPostProcessor;
import org.eclipse.osee.orcs.core.ds.DataPostProcessorFactory;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.db.internal.search.tagger.TaggingEngine;
/**
* @author Roberto E. Escobar
*/
-public class DataPostProcessorFactoryImpl implements DataPostProcessorFactory<CriteriaAttributeKeyword> {
+public class DataPostProcessorFactoryImpl implements DataPostProcessorFactory<CriteriaAttributeKeywords> {
private final Log logger;
private final TaggingEngine taggingEngine;
@@ -35,10 +35,14 @@ public class DataPostProcessorFactoryImpl implements DataPostProcessorFactory<Cr
}
@Override
- public DataPostProcessor<?> createPostProcessor(CriteriaAttributeKeyword criteria, QueryOptions options) {
+ public DataPostProcessor<?> createPostProcessor(CriteriaAttributeKeywords criteria, QueryOptions options) {
DataPostProcessor<?> processor;
// if (criteria.getStringOp().isTokenized()) {
- processor = new TokenQueryPostProcessor(logger, executorAdmin, taggingEngine, criteria, options);
+ if (criteria.getValues().size() > 1) {
+ processor = new SimpleOrPostProcessor(logger, criteria, options.getIncludeDeleted());
+ } else {
+ processor = new TokenQueryPostProcessor(logger, executorAdmin, taggingEngine, criteria, options);
+ }
// } else {
// processor = new AttributeQueryPostProcessor(logger, executorAdmin, taggingEngine, criteria, options);
// }
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/SimpleOrPostProcessor.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/SimpleOrPostProcessor.java
new file mode 100644
index 00000000000..d5c8954f308
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/SimpleOrPostProcessor.java
@@ -0,0 +1,66 @@
+/*
+ * Created on Apr 24, 2013
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.orcs.db.internal.search.util;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import org.eclipse.osee.framework.core.data.IAttributeType;
+import org.eclipse.osee.framework.core.enums.DeletionFlag;
+import org.eclipse.osee.framework.jdk.core.type.MatchLocation;
+import org.eclipse.osee.logger.Log;
+import org.eclipse.osee.orcs.core.ds.QueryPostProcessor;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
+import org.eclipse.osee.orcs.data.ArtifactReadable;
+import org.eclipse.osee.orcs.data.AttributeReadable;
+import org.eclipse.osee.orcs.search.Match;
+
+public class SimpleOrPostProcessor extends QueryPostProcessor {
+
+ private final CriteriaAttributeKeywords criteria;
+ private final DeletionFlag deletionFlag;
+
+ protected SimpleOrPostProcessor(Log logger, CriteriaAttributeKeywords criteria, DeletionFlag deletionFlag) {
+ super(logger);
+ this.criteria = criteria;
+ this.deletionFlag = deletionFlag;
+ }
+
+ @Override
+ protected List<Match<ArtifactReadable, AttributeReadable<?>>> innerCall() throws Exception {
+ List<Match<ArtifactReadable, AttributeReadable<?>>> toReturn =
+ new LinkedList<Match<ArtifactReadable, AttributeReadable<?>>>();
+
+ Map<AttributeReadable<?>, List<MatchLocation>> matchedAttributes =
+ new LinkedHashMap<AttributeReadable<?>, List<MatchLocation>>();
+
+ IAttributeType type = criteria.getTypes().iterator().next();
+ List<ArtifactReadable> toProcess = getItemsToProcess();
+
+ for (ArtifactReadable toCheck : toProcess) {
+ List<AttributeReadable<Object>> attributes = toCheck.getAttributes(type, deletionFlag);
+
+ for (AttributeReadable<Object> attribute : attributes) {
+ String value = String.valueOf(attribute);
+
+ for (String toMatch : criteria.getValues()) {
+ if (value.equals(toMatch)) {
+ MatchLocation loc = new MatchLocation(1, value.length());
+ List<MatchLocation> list = matchedAttributes.get(attribute);
+ if (list == null) {
+ list = new LinkedList<MatchLocation>();
+ matchedAttributes.put(attribute, list);
+ }
+ list.add(loc);
+ }
+ }
+ }
+ toReturn.add(new ArtifactMatch(toCheck, matchedAttributes));
+ }
+ return toReturn;
+ }
+}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/TokenQueryPostProcessor.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/TokenQueryPostProcessor.java
index 32475a1957f..ebcde0df564 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/TokenQueryPostProcessor.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/TokenQueryPostProcessor.java
@@ -15,7 +15,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
-import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeyword;
+import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeKeywords;
import org.eclipse.osee.orcs.data.AttributeReadable;
import org.eclipse.osee.orcs.db.internal.search.tagger.Tagger;
import org.eclipse.osee.orcs.db.internal.search.tagger.TaggingEngine;
@@ -27,7 +27,7 @@ public class TokenQueryPostProcessor extends AbstractQueryPostProcessor {
private final TaggingEngine engine;
- public TokenQueryPostProcessor(Log logger, ExecutorAdmin executorAdmin, TaggingEngine engine, CriteriaAttributeKeyword criteria, QueryOptions options) {
+ public TokenQueryPostProcessor(Log logger, ExecutorAdmin executorAdmin, TaggingEngine engine, CriteriaAttributeKeywords criteria, QueryOptions options) {
super(logger, executorAdmin, criteria, options);
this.engine = engine;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AbstractSqlWriter.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AbstractSqlWriter.java
index 07129d829cb..d3a1ddebe81 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AbstractSqlWriter.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AbstractSqlWriter.java
@@ -21,6 +21,7 @@ import org.eclipse.osee.framework.database.core.AbstractJoinQuery;
import org.eclipse.osee.framework.database.core.CharJoinQuery;
import org.eclipse.osee.framework.database.core.IdJoinQuery;
import org.eclipse.osee.framework.database.core.JoinUtility;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.core.ds.DataPostProcessor;
import org.eclipse.osee.orcs.core.ds.Options;
@@ -31,10 +32,11 @@ import org.eclipse.osee.orcs.db.internal.SqlProvider;
*/
public abstract class AbstractSqlWriter<O extends Options> {
- private static final String AND_WITH_NEWLINES = "\n AND \n";
+ protected static final String AND_WITH_NEWLINES = "\n AND \n";
private final StringBuilder output = new StringBuilder();
private final List<String> tableEntries = new ArrayList<String>();
+ private final List<WithClause> withClauses = new ArrayList<WithClause>();
private final SqlAliasManager aliasManager = new SqlAliasManager();
private final Log logger;
@@ -42,8 +44,6 @@ public abstract class AbstractSqlWriter<O extends Options> {
private final SqlProvider sqlProvider;
private final SqlContext<O, ? extends DataPostProcessor<?>> context;
- private boolean isFirstTable = true;
-
public AbstractSqlWriter(Log logger, IOseeDatabaseService dbService, SqlProvider sqlProvider, SqlContext<O, ? extends DataPostProcessor<?>> context) {
this.logger = logger;
this.dbService = dbService;
@@ -60,7 +60,9 @@ public abstract class AbstractSqlWriter<O extends Options> {
output.delete(0, output.length());
computeTables(handlers);
+ computeWithClause(handlers);
+ writeWithClause();
writeSelect(handlers);
write("\n FROM \n");
writeTables();
@@ -75,6 +77,41 @@ public abstract class AbstractSqlWriter<O extends Options> {
}
}
+ private void writeWithClause() throws OseeCoreException {
+ if (Conditions.hasValues(withClauses)) {
+ write("WITH ");
+ int size = withClauses.size();
+ for (int i = 0; i < size; i++) {
+ WithClause clause = withClauses.get(i);
+ write(clause.getGeneratedAlias());
+ write(" as (");
+ write(clause.getEntry());
+ write(")");
+ if (i + 1 < size) {
+ write(", \n");
+ }
+ }
+ write("\n");
+ }
+ }
+
+ public String addWithClause(WithClause clause) {
+ String alias = getNextAlias(clause);
+ clause.setGeneratedAlias(alias);
+ withClauses.add(clause);
+ return alias;
+ }
+
+ protected void computeWithClause(List<SqlHandler<?, O>> handlers) throws OseeCoreException {
+ for (SqlHandler<?, O> handler : handlers) {
+ handler.addWithTables(this);
+ }
+ }
+
+ public String getNextAlias(AliasEntry table) {
+ return getAliasManager().getNextAlias(table);
+ }
+
protected SqlAliasManager getAliasManager() {
return aliasManager;
}
@@ -85,13 +122,17 @@ public abstract class AbstractSqlWriter<O extends Options> {
protected abstract void writeSelect(List<SqlHandler<?, O>> handlers) throws OseeCoreException;
- public abstract void writeTxBranchFilter(String txsAlias) throws OseeCoreException;
+ public abstract String getTxBranchFilter(String txsAlias) throws OseeCoreException;
protected abstract void writeGroupAndOrder() throws OseeCoreException;
protected void writeTables() throws OseeCoreException {
- for (String entry : tableEntries) {
- write(entry);
+ int size = tableEntries.size();
+ for (int i = 0; i < size; i++) {
+ write(tableEntries.get(i));
+ if (i + 1 < size) {
+ write(", ");
+ }
}
}
@@ -129,18 +170,13 @@ public abstract class AbstractSqlWriter<O extends Options> {
return getAliasManager().getAliases(table);
}
- public String addTable(TableEnum table) throws OseeCoreException {
+ public void addTable(String table) {
+ tableEntries.add(table);
+ }
+
+ public String addTable(AliasEntry table) {
String alias = getAliasManager().getNextAlias(table);
- StringBuilder builder = new StringBuilder();
- if (isFirstTable) {
- isFirstTable = false;
- } else {
- builder.append(", ");
- }
- builder.append(table.getName());
- builder.append(" ");
- builder.append(alias);
- tableEntries.add(builder.toString());
+ tableEntries.add(String.format("%s %s", table.getEntry(), alias));
return alias;
}
@@ -190,7 +226,11 @@ public abstract class AbstractSqlWriter<O extends Options> {
}
protected String getSqlHint() throws OseeCoreException {
- return sqlProvider.getSql(OseeSql.QUERY_BUILDER);
+ String hint = Strings.EMPTY_STRING;
+ if (!Conditions.hasValues(withClauses)) {
+ hint = sqlProvider.getSql(OseeSql.QUERY_BUILDER);
+ }
+ return hint;
}
@Override
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AliasEntry.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AliasEntry.java
new file mode 100644
index 00000000000..d67169e99ce
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/AliasEntry.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.orcs.db.internal.sql;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface AliasEntry {
+
+ String getAliasPrefix();
+
+ String getEntry();
+}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlAliasManager.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlAliasManager.java
index a21506b1a22..03e8d8815e6 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlAliasManager.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlAliasManager.java
@@ -15,50 +15,40 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.util.Conditions;
/**
* @author Roberto E. Escobar
*/
public class SqlAliasManager {
- private final HashMap<TableEnum, Alias> aliases = new HashMap<TableEnum, Alias>();
- private final Map<TableEnum, List<String>> usedAliases = new HashMap<TableEnum, List<String>>();
+ private final HashMap<String, Alias> aliases = new HashMap<String, Alias>();
+ private final Map<AliasEntry, List<String>> usedAliases = new HashMap<AliasEntry, List<String>>();
- public SqlAliasManager() {
- for (TableEnum table : TableEnum.values()) {
- aliases.put(table, new Alias(table.getAliasPrefix()));
- }
- }
-
- public boolean hasAlias(TableEnum table) {
+ public boolean hasAlias(AliasEntry table) {
return usedAliases.get(table) != null;
}
- public String getFirstAlias(TableEnum table) {
+ public String getFirstAlias(AliasEntry table) {
return getAliases(table).get(0);
}
- public List<String> getAliases(TableEnum table) {
+ public List<String> getAliases(AliasEntry table) {
List<String> values = usedAliases.get(table);
return values != null ? values : Collections.<String> emptyList();
}
- public int getCount(TableEnum table) {
- List<String> list = usedAliases.get(table);
- return list == null ? 0 : list.size();
- }
-
- public String getNextAlias(TableEnum table) throws OseeCoreException {
- Alias alias = aliases.get(table);
- Conditions.checkNotNull(alias, "alias", "Unable to find alias for [%s]", table);
+ public String getNextAlias(AliasEntry table) {
+ Alias alias = aliases.get(table.getAliasPrefix());
+ if (alias == null) {
+ alias = new Alias(table.getAliasPrefix());
+ aliases.put(table.getAliasPrefix(), alias);
+ }
String toReturn = alias.next();
putUsedAlias(table, toReturn);
return toReturn;
}
- private void putUsedAlias(TableEnum table, String alias) {
+ private void putUsedAlias(AliasEntry table, String alias) {
List<String> values = usedAliases.get(table);
if (values == null) {
values = new LinkedList<String>();
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlHandler.java
index 5cabcfb25bc..ed989784153 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/SqlHandler.java
@@ -66,6 +66,11 @@ public abstract class SqlHandler<T extends Criteria<?>, O extends Options> imple
public abstract boolean addPredicates(AbstractSqlWriter<O> writer) throws OseeCoreException;
@SuppressWarnings("unused")
+ public void addWithTables(AbstractSqlWriter<O> writer) throws OseeCoreException {
+ // Do Nothing
+ }
+
+ @SuppressWarnings("unused")
public void addSelect(AbstractSqlWriter<O> sqlWriter) throws OseeCoreException {
// Do Nothing
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/TableEnum.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/TableEnum.java
index fb91a545f90..b4f40bd600b 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/TableEnum.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/TableEnum.java
@@ -10,10 +10,11 @@
*******************************************************************************/
package org.eclipse.osee.orcs.db.internal.sql;
+
/**
* @author Roberto E. Escobar
*/
-public enum TableEnum {
+public enum TableEnum implements AliasEntry {
TXS_TABLE("osee_txs", "txs"),
ARTIFACT_TABLE("osee_artifact", "art"),
ATTRIBUTE_TABLE("osee_attribute", "att"),
@@ -23,8 +24,8 @@ public enum TableEnum {
SEARCH_TAGS_TABLE("osee_search_tags", "tag"),
ARTIFACT_JOIN_TABLE("osee_join_artifact", "jart");
- private String tableName;
- private String aliasPrefix;
+ private final String tableName;
+ private final String aliasPrefix;
private TableEnum(String tableName, String aliasPrefix) {
this.tableName = tableName;
@@ -35,7 +36,14 @@ public enum TableEnum {
return tableName;
}
+ @Override
public String getAliasPrefix() {
return aliasPrefix;
}
+
+ @Override
+ public String getEntry() {
+ return tableName;
+ }
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/WithClause.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/WithClause.java
new file mode 100644
index 00000000000..cf3feec9f08
--- /dev/null
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/sql/WithClause.java
@@ -0,0 +1,52 @@
+/*
+ * Created on Apr 24, 2013
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.orcs.db.internal.sql;
+
+public class WithClause implements AliasEntry {
+ public enum WithAlias {
+ GAMMA("gamma"),
+ ATTRIBUTE("att");
+
+ private final String value;
+
+ private WithAlias(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+ }
+
+ private final String withList;
+ private final String alias;
+ private String generatedAlias;
+
+ public WithClause(String withList, WithAlias alias) {
+ this.withList = withList;
+ this.alias = alias.toString();
+ }
+
+ @Override
+ public String getAliasPrefix() {
+ return alias;
+ }
+
+ @Override
+ public String getEntry() {
+ return withList;
+ }
+
+ public String getGeneratedAlias() {
+ return generatedAlias;
+ }
+
+ public void setGeneratedAlias(String generatedAlias) {
+ this.generatedAlias = generatedAlias;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.orcs.test/OrcsIntegrationTestSuite.launch b/plugins/org.eclipse.osee.orcs.test/OrcsIntegrationTestSuite.launch
index 6629f5b919d..fee0c435149 100644
--- a/plugins/org.eclipse.osee.orcs.test/OrcsIntegrationTestSuite.launch
+++ b/plugins/org.eclipse.osee.orcs.test/OrcsIntegrationTestSuite.launch
@@ -33,7 +33,7 @@
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="lba.ote.outfile.conversion.app.convert"/>
<booleanAttribute key="run_in_ui_thread" value="true"/>
-<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.guava*10.0.1.v201203051515@default:default,com.google.inject@default:default,javax.activation@default:default,javax.inject@default:default,javax.mail.glassfish@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.commons.codec*1.3.0.v201101211617@default:default,org.apache.commons.codec*1.4.0.v201209201156@default:default,org.apache.commons.codec*1.7.0@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging*1.0.4.v201101211617@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.pool@default:default,org.apache.log4j@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.birt.jetty.overlay@default:false,org.eclipse.core.contenttype@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.team.core@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.util@default:default,org.eclipse.xtext@default:default,org.hamcrest.core@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default,org.slf4j.api*1.6.4.v20120130-2120@default:default,org.slf4j.api*1.7.2.v20121108-1250@default:default,org.slf4j.jcl@default:default"/>
+<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.guava*10.0.1.v201203051515@default:default,com.google.inject@default:default,javax.activation@default:default,javax.inject@default:default,javax.mail.glassfish@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.commons.codec*1.3.0.v201101211617@default:default,org.apache.commons.codec*1.4.0.v201209201156@default:default,org.apache.commons.codec*1.7.0@default:default,org.apache.commons.dbcp@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging*1.0.4.v201101211617@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.pool@default:default,org.apache.log4j@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.birt.jetty.overlay@default:false,org.eclipse.core.contenttype@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.team.core@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.util@default:default,org.eclipse.xtext@default:default,org.hamcrest.core@default:default,org.jsoup@default:default,org.junit*4.10.0.v4_10_0_v20120426-0900@default:default,org.slf4j.api*1.6.4.v20120130-2120@default:default,org.slf4j.api*1.7.2.v20121108-1250@default:default,org.slf4j.jcl@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="org.eclipse.osee.console.admin.test@default:false,org.eclipse.osee.console.admin@default:default,org.eclipse.osee.database.schema@default:default,org.eclipse.osee.event.osgi@default:default,org.eclipse.osee.event@default:default,org.eclipse.osee.executor.admin.test@default:false,org.eclipse.osee.executor.admin@default:default,org.eclipse.osee.framework.core.dsl.integration.test@default:false,org.eclipse.osee.framework.core.dsl.integration@default:default,org.eclipse.osee.framework.core.dsl@default:default,org.eclipse.osee.framework.core.model.test@default:false,org.eclipse.osee.framework.core.model@default:default,org.eclipse.osee.framework.core.test@default:false,org.eclipse.osee.framework.core@default:default,org.eclipse.osee.framework.database.test@default:false,org.eclipse.osee.framework.database@default:default,org.eclipse.osee.framework.jdk.core.test@default:false,org.eclipse.osee.framework.jdk.core@default:default,org.eclipse.osee.framework.logging.test@default:false,org.eclipse.osee.framework.logging@default:default,org.eclipse.osee.framework.resource.management.test@default:false,org.eclipse.osee.framework.resource.management@default:default,org.eclipse.osee.hsqldb@default:default,org.eclipse.osee.logback.config@default:false,org.eclipse.osee.logger.slf4j@default:default,org.eclipse.osee.logger@default:default,org.eclipse.osee.orcs.core.test@default:false,org.eclipse.osee.orcs.core@default:default,org.eclipse.osee.orcs.db.mock@default:default,org.eclipse.osee.orcs.db.test@default:false,org.eclipse.osee.orcs.db@default:default,org.eclipse.osee.orcs.test@default:false,org.eclipse.osee.orcs@default:default,org.hsqldb@default:default,org.mockito@default:default,org.objenesis@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<stringAttribute key="timestamp" value="1342653904563"/>
diff --git a/plugins/org.eclipse.osee.orcs.test/src/org/eclipse/osee/orcs/api/OrcsQueryTest.java b/plugins/org.eclipse.osee.orcs.test/src/org/eclipse/osee/orcs/api/OrcsQueryTest.java
index c5051ebbba7..3c5cfb55b4f 100644
--- a/plugins/org.eclipse.osee.orcs.test/src/org/eclipse/osee/orcs/api/OrcsQueryTest.java
+++ b/plugins/org.eclipse.osee.orcs.test/src/org/eclipse/osee/orcs/api/OrcsQueryTest.java
@@ -23,6 +23,7 @@ import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
import org.eclipse.osee.framework.core.enums.CoreBranches;
import org.eclipse.osee.framework.core.enums.CoreRelationTypes;
+import org.eclipse.osee.framework.core.enums.MatchTokenCountType;
import org.eclipse.osee.framework.core.enums.Operator;
import org.eclipse.osee.framework.core.enums.TokenDelimiterMatch;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
@@ -188,7 +189,7 @@ public class OrcsQueryTest {
@Test
public void testQueryArtifactTypeAndNameValue() throws OseeCoreException {
QueryBuilder builder = factory.fromBranch(TestBranches.SAW_Bld_1);
- builder.and(CoreAttributeTypes.Name, Operator.EQUAL, "%Requirement%");
+ builder.and(CoreAttributeTypes.Name, "Requirements", MatchTokenCountType.IGNORE_TOKEN_COUNT);
Assert.assertEquals(7, builder.getCount());
List<ArtifactReadable> artifacts = builder.getResults().getList();
@@ -211,7 +212,7 @@ public class OrcsQueryTest {
//////////////////////
QueryBuilder builder1 = factory.fromBranch(TestBranches.SAW_Bld_1);
- builder1.and(CoreAttributeTypes.Name, Operator.EQUAL, "%Requirement%");
+ builder1.and(CoreAttributeTypes.Name, "Requirements", MatchTokenCountType.IGNORE_TOKEN_COUNT);
builder1.andIsOfType(CoreArtifactTypes.SubsystemRequirementMSWord);
Assert.assertEquals(1, builder1.getCount());
List<ArtifactReadable> subSystemReqs = builder1.getResults().getList();
@@ -221,7 +222,7 @@ public class OrcsQueryTest {
//////////////////////
QueryBuilder builder2 = factory.fromBranch(TestBranches.SAW_Bld_1);
- builder2.and(CoreAttributeTypes.Name, Operator.EQUAL, "%Requirement%");
+ builder2.and(CoreAttributeTypes.Name, "Requirements", MatchTokenCountType.IGNORE_TOKEN_COUNT);
builder2.includeTypeInheritance();
builder2.andIsOfType(CoreArtifactTypes.Requirement);
Assert.assertEquals(3, builder2.getCount());

Back to the top