Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmisinco2011-10-25 19:41:48 +0000
committerRoberto E. Escobar2011-10-25 19:41:48 +0000
commitb6703308972661be790b5e8d574aca1214e05368 (patch)
tree40a9e7afd40eed06c2b688c90bb1daa44d8d86d1 /plugins
parent1cf87e13eff5fe9a7b9c9dcc69d403b511adab99 (diff)
downloadorg.eclipse.osee-b6703308972661be790b5e8d574aca1214e05368.tar.gz
org.eclipse.osee-b6703308972661be790b5e8d574aca1214e05368.tar.xz
org.eclipse.osee-b6703308972661be790b5e8d574aca1214e05368.zip
feature[ats_18K4T]: Integration of ORCS and UI
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.ats.presenter.test/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterTest.java15
-rw-r--r--plugins/org.eclipse.osee.ats.presenter/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.osee.ats.presenter/OSGI-INF/ats.presenter.factory.xml1
-rw-r--r--plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsPresenterFactoryImpl.java8
-rw-r--r--plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterImpl.java49
-rw-r--r--plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/components/AtsSearchHeaderImpl.java1
-rw-r--r--plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/search/AtsSearchResultsView.java3
-rw-r--r--plugins/org.eclipse.osee.display.presenter.mocks/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockDisplayOptionsComponent.java29
-rw-r--r--plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockLogger.java85
-rw-r--r--plugins/org.eclipse.osee.display.presenter.test/src/org/eclipse/osee/display/presenter/internal/SearchPresenterTest.java35
-rw-r--r--plugins/org.eclipse.osee.display.presenter/META-INF/MANIFEST.MF4
-rw-r--r--plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactProviderImpl.java122
-rw-r--r--plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactSanitizer.java129
-rw-r--r--plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/SearchPresenterImpl.java40
-rw-r--r--plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/Utility.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeOther.java6
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java2
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsObjectLoader.java8
-rw-r--r--plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/search/CriteriaFactory.java27
-rw-r--r--plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/SqlBuilderTest.java4
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/handlers/AttributeTokenSqlHandler.java25
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/tagger/TaggingEngine.java26
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/AbstractQueryPostProcessor.java12
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/util/TokenQueryPostProcessor.java8
25 files changed, 453 insertions, 190 deletions
diff --git a/plugins/org.eclipse.osee.ats.presenter.test/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterTest.java b/plugins/org.eclipse.osee.ats.presenter.test/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterTest.java
index 6f07d70cc7f..fe50911914e 100644
--- a/plugins/org.eclipse.osee.ats.presenter.test/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterTest.java
+++ b/plugins/org.eclipse.osee.ats.presenter.test/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterTest.java
@@ -20,6 +20,8 @@ import org.eclipse.osee.ats.mocks.MockAtsArtifactProvider;
import org.eclipse.osee.ats.mocks.MockAtsSearchHeaderComponent;
import org.eclipse.osee.display.api.data.ViewId;
import org.eclipse.osee.display.presenter.Utility;
+import org.eclipse.osee.display.presenter.mocks.MockDisplayOptionsComponent;
+import org.eclipse.osee.display.presenter.mocks.MockLogger;
import org.eclipse.osee.display.presenter.mocks.MockSearchNavigator;
import org.eclipse.osee.display.presenter.mocks.MockSearchResultsListComponent;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
@@ -30,7 +32,6 @@ import org.eclipse.osee.orcs.mock.MockArtifact;
import org.eclipse.osee.orcs.mock.MockAttribute;
import org.eclipse.osee.orcs.mock.MockMatch;
import org.eclipse.osee.orcs.search.Match;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -42,7 +43,7 @@ public class AtsSearchPresenterTest {
public void testSelectProgram() {
MockAtsArtifactProvider provider = new MockAtsArtifactProvider();
AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters> presenter =
- new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(provider);
+ new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(provider, new MockLogger());
MockAtsSearchHeaderComponent comp = new MockAtsSearchHeaderComponent();
ViewId program = new ViewId("prg1Guid_18H74Zqo3gA", "program1");
presenter.selectProgram(program, comp);
@@ -50,10 +51,9 @@ public class AtsSearchPresenterTest {
}
@Test
- @Ignore
public void testSelectSearch() throws UnsupportedEncodingException {
AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters> presenter =
- new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(null);
+ new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(null, new MockLogger());
MockSearchNavigator navigator = new MockSearchNavigator();
String programGuid = "prg1Guid_18H74Zqo3gA";
String buildGuid = "buildGuid1_d74Zqo3gA";
@@ -63,13 +63,14 @@ public class AtsSearchPresenterTest {
presenter.selectSearch("", params, navigator);
String url = navigator.getResultsUrl();
String expected =
- "/search=phrase&verbose=false&program=" + Utility.encode(programGuid) + "&nameOnly=true&build=" + Utility.encode(buildGuid);
+ "/search=phrase&program=" + Utility.encode(programGuid) + "&nameOnly=true&build=" + Utility.encode(buildGuid);
Assert.assertEquals(expected, url);
}
@Test
public void testInitSearchResults() throws UnsupportedEncodingException {
MockAtsArtifactProvider provider = new MockAtsArtifactProvider();
+ MockDisplayOptionsComponent optionsComp = new MockDisplayOptionsComponent();
List<Match<ReadableArtifact, ReadableAttribute<?>>> resultList =
new ArrayList<Match<ReadableArtifact, ReadableAttribute<?>>>();
MockArtifact art = new MockArtifact("guid1", "matchArt");
@@ -78,7 +79,7 @@ public class AtsSearchPresenterTest {
resultList.add(match);
provider.setResultList(resultList);
AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters> presenter =
- new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(provider);
+ new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(provider, new MockLogger());
MockAtsSearchHeaderComponent headerComp = new MockAtsSearchHeaderComponent();
MockSearchResultsListComponent resultsComponent = new MockSearchResultsListComponent();
presenter.initSearchResults(null, headerComp, resultsComponent, null);
@@ -88,7 +89,7 @@ public class AtsSearchPresenterTest {
String buildGuid = GUID.create();
String url =
"/program=" + Utility.encode(programGuid) + "&build=" + Utility.encode(buildGuid) + "&nameOnly=true&search=phrase&verbose=false";
- presenter.initSearchResults(url, headerComp, resultsComponent, null);
+ presenter.initSearchResults(url, headerComp, resultsComponent, optionsComp);
Assert.assertEquals(1, resultsComponent.getSearchResults().size());
}
}
diff --git a/plugins/org.eclipse.osee.ats.presenter/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.presenter/META-INF/MANIFEST.MF
index aa0a594a94b..2745d40ca0d 100644
--- a/plugins/org.eclipse.osee.ats.presenter/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.ats.presenter/META-INF/MANIFEST.MF
@@ -20,6 +20,7 @@ Import-Package: org.eclipse.core.runtime;version="3.4.0",
org.eclipse.osee.framework.core.exception,
org.eclipse.osee.framework.core.model.type,
org.eclipse.osee.framework.jdk.core.util,
+ org.eclipse.osee.logger,
org.eclipse.osee.orcs,
org.eclipse.osee.orcs.data,
org.eclipse.osee.orcs.search
diff --git a/plugins/org.eclipse.osee.ats.presenter/OSGI-INF/ats.presenter.factory.xml b/plugins/org.eclipse.osee.ats.presenter/OSGI-INF/ats.presenter.factory.xml
index fb4759cf2b4..3e39da2c88d 100644
--- a/plugins/org.eclipse.osee.ats.presenter/OSGI-INF/ats.presenter.factory.xml
+++ b/plugins/org.eclipse.osee.ats.presenter/OSGI-INF/ats.presenter.factory.xml
@@ -5,4 +5,5 @@
<provide interface="org.eclipse.osee.ats.api.search.AtsPresenterFactory"/>
</service>
<reference bind="setOrcsApi" cardinality="1..1" interface="org.eclipse.osee.orcs.OrcsApi" name="OrcsApi" policy="static"/>
+ <reference bind="setLogger" cardinality="1..1" interface="org.eclipse.osee.logger.Log" name="Log" policy="static"/>
</scr:component>
diff --git a/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsPresenterFactoryImpl.java b/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsPresenterFactoryImpl.java
index bf7b3e176ce..b7c018f1019 100644
--- a/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsPresenterFactoryImpl.java
+++ b/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsPresenterFactoryImpl.java
@@ -15,6 +15,7 @@ import org.eclipse.osee.ats.api.data.AtsSearchParameters;
import org.eclipse.osee.ats.api.search.AtsArtifactProvider;
import org.eclipse.osee.ats.api.search.AtsPresenterFactory;
import org.eclipse.osee.ats.api.search.AtsSearchPresenter;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.OrcsApi;
/**
@@ -23,16 +24,21 @@ import org.eclipse.osee.orcs.OrcsApi;
public class AtsPresenterFactoryImpl<T extends AtsSearchHeaderComponent, K extends AtsSearchParameters> implements AtsPresenterFactory<AtsSearchHeaderComponent, AtsSearchParameters> {
private OrcsApi orcsApi;
+ private Log logger;
public void setOrcsApi(OrcsApi orcsApi) {
this.orcsApi = orcsApi;
}
+ public void setLogger(Log logger) {
+ this.logger = logger;
+ }
+
@Override
public AtsSearchPresenter<AtsSearchHeaderComponent, AtsSearchParameters> createInstance() {
AtsArtifactProvider provider = new AtsArtifactProviderImpl(orcsApi, null);
AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters> instance =
- new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(provider);
+ new AtsSearchPresenterImpl<AtsSearchHeaderComponent, AtsSearchParameters>(provider, logger);
return instance;
}
diff --git a/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterImpl.java b/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterImpl.java
index 1e4b0b67de7..0bdf31ee4a8 100644
--- a/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterImpl.java
+++ b/plugins/org.eclipse.osee.ats.presenter/src/org/eclipse/osee/ats/presenter/internal/AtsSearchPresenterImpl.java
@@ -29,7 +29,9 @@ import org.eclipse.osee.display.api.search.SearchNavigator;
import org.eclipse.osee.display.presenter.SearchPresenterImpl;
import org.eclipse.osee.display.presenter.Utility;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.data.ReadableArtifact;
/**
@@ -39,8 +41,8 @@ public class AtsSearchPresenterImpl<T extends AtsSearchHeaderComponent, K extend
private final AtsArtifactProvider atsArtifactProvider;
- public AtsSearchPresenterImpl(AtsArtifactProvider artifactProvider) {
- super(artifactProvider);
+ public AtsSearchPresenterImpl(AtsArtifactProvider artifactProvider, Log logger) {
+ super(artifactProvider, logger);
atsArtifactProvider = artifactProvider;
}
@@ -56,7 +58,8 @@ public class AtsSearchPresenterImpl<T extends AtsSearchHeaderComponent, K extend
try {
programs = getPrograms();
} catch (Exception ex) {
- setErrorMessage(headerComponent, ex.getMessage());
+ logger.error(ex, "Error in addProgramsToSearchHeader");
+ setErrorMessage(headerComponent, Lib.exceptionToString(ex));
return;
}
for (ViewId program : programs) {
@@ -83,8 +86,8 @@ public class AtsSearchPresenterImpl<T extends AtsSearchHeaderComponent, K extend
try {
branchGuid = atsArtifactProvider.getBaselineBranchGuid(params.getBuild().getGuid());
} catch (Exception ex) {
- setErrorMessage(searchHeaderComponent,
- String.format("Cannot resolve branch id from build id: [%s]", params.getBuild().getGuid()));
+ logger.error(ex, "Error in initSearchResults");
+ setErrorMessage(searchHeaderComponent, Lib.exceptionToString(ex));
return;
}
@@ -97,14 +100,17 @@ public class AtsSearchPresenterImpl<T extends AtsSearchHeaderComponent, K extend
public void selectProgram(ViewId program, T headerComponent) {
headerComponent.clearBuilds();
Collection<ViewId> builds = null;
- try {
- builds = getBuilds(program);
- } catch (Exception ex) {
- setErrorMessage(headerComponent, ex.getMessage());
- return;
- }
- for (ViewId build : builds) {
- headerComponent.addBuild(build);
+ if (program != null) {
+ try {
+ builds = getBuilds(program);
+ } catch (Exception ex) {
+ logger.error(ex, "Error in selectProgram");
+ setErrorMessage(headerComponent, Lib.exceptionToString(ex));
+ return;
+ }
+ for (ViewId build : builds) {
+ headerComponent.addBuild(build);
+ }
}
}
@@ -142,6 +148,7 @@ public class AtsSearchPresenterImpl<T extends AtsSearchHeaderComponent, K extend
try {
return "/" + getParametersAsEncodedUrl(params);
} catch (UnsupportedEncodingException ex) {
+ logger.error(ex, "Error in encode");
return "";
}
}
@@ -149,12 +156,22 @@ public class AtsSearchPresenterImpl<T extends AtsSearchHeaderComponent, K extend
protected AtsSearchParameters decodeIt(String url) {
Map<String, String> data = Utility.decode(url);
- ViewId program = new ViewId(data.get("program"), "");
- ViewId build = new ViewId(data.get("build"), "");
+ ViewId program = null, build = null;
+
+ if (data.containsKey("program")) {
+ program = new ViewId(data.get("program"), "");
+ }
+
+ if (data.containsKey("build")) {
+ build = new ViewId(data.get("build"), "");
+ }
String nValue = data.get("nameOnly");
boolean nameOnly = nValue == null ? false : nValue.equalsIgnoreCase("true");
- String searchPhrase = data.get("search");
+ String searchPhrase = "";
+ if (data.containsKey("search")) {
+ searchPhrase = data.get("search");
+ }
// String vValue = data.get("verbose");
// boolean verbose = vValue == null ? false : vValue.equalsIgnoreCase("true");
diff --git a/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/components/AtsSearchHeaderImpl.java b/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/components/AtsSearchHeaderImpl.java
index 8b003772fd4..30ac69e0b52 100644
--- a/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/components/AtsSearchHeaderImpl.java
+++ b/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/components/AtsSearchHeaderImpl.java
@@ -273,6 +273,7 @@ public class AtsSearchHeaderImpl extends OseeSearchHeaderComponent implements At
@Override
public void setErrorMessage(String message) {
+ System.out.println(message);
Application app = this.getApplication();
if (app != null) {
Window mainWindow = app.getMainWindow();
diff --git a/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/search/AtsSearchResultsView.java b/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/search/AtsSearchResultsView.java
index c7c6b0af852..9a70f970fae 100644
--- a/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/search/AtsSearchResultsView.java
+++ b/plugins/org.eclipse.osee.ats.view.web/src/org/eclipse/osee/ats/view/web/search/AtsSearchResultsView.java
@@ -35,6 +35,7 @@ public class AtsSearchResultsView extends OseeSearchResultsView {
@Override
protected void callInit(String url) {
- searchPresenter.initSearchResults(url, searchHeader, searchResultsListComponent, null);
+ searchPresenter.initSearchResults(url, searchHeader, searchResultsListComponent,
+ searchResultsListComponent.getDisplayOptionsComponent());
}
}
diff --git a/plugins/org.eclipse.osee.display.presenter.mocks/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.display.presenter.mocks/META-INF/MANIFEST.MF
index e9230bcb03c..87aa9473625 100644
--- a/plugins/org.eclipse.osee.display.presenter.mocks/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.display.presenter.mocks/META-INF/MANIFEST.MF
@@ -14,6 +14,7 @@ Import-Package: org.eclipse.core.runtime;version="3.4.0",
org.eclipse.osee.framework.core.exception,
org.eclipse.osee.framework.core.model.type,
org.eclipse.osee.framework.jdk.core.type,
+ org.eclipse.osee.logger,
org.eclipse.osee.orcs.data,
org.eclipse.osee.orcs.mock,
org.eclipse.osee.orcs.search
diff --git a/plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockDisplayOptionsComponent.java b/plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockDisplayOptionsComponent.java
new file mode 100644
index 00000000000..14d0ac09e1a
--- /dev/null
+++ b/plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockDisplayOptionsComponent.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.display.presenter.mocks;
+
+import org.eclipse.osee.display.api.components.DisplayOptionsComponent;
+import org.eclipse.osee.display.api.data.DisplayOptions;
+
+/**
+ * @author John Misinco
+ */
+public class MockDisplayOptionsComponent implements DisplayOptionsComponent {
+
+ @Override
+ public void clearAll() {
+ }
+
+ @Override
+ public void setDisplayOptions(DisplayOptions options) {
+ }
+
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockLogger.java b/plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockLogger.java
new file mode 100644
index 00000000000..c8d3c661579
--- /dev/null
+++ b/plugins/org.eclipse.osee.display.presenter.mocks/src/org/eclipse/osee/display/presenter/mocks/MockLogger.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.display.presenter.mocks;
+
+import org.eclipse.osee.logger.Log;
+
+/**
+ * @author John Misinco
+ */
+public class MockLogger implements Log {
+
+ @Override
+ public boolean isTraceEnabled() {
+ return false;
+ }
+
+ @Override
+ public void trace(String format, Object... args) {
+ }
+
+ @Override
+ public void trace(Throwable th, String format, Object... args) {
+ }
+
+ @Override
+ public boolean isDebugEnabled() {
+ return false;
+ }
+
+ @Override
+ public void debug(String format, Object... args) {
+ }
+
+ @Override
+ public void debug(Throwable th, String format, Object... args) {
+ }
+
+ @Override
+ public boolean isInfoEnabled() {
+ return false;
+ }
+
+ @Override
+ public void info(String format, Object... args) {
+ }
+
+ @Override
+ public void info(Throwable th, String format, Object... args) {
+ }
+
+ @Override
+ public boolean isWarnEnabled() {
+ return false;
+ }
+
+ @Override
+ public void warn(String format, Object... args) {
+ }
+
+ @Override
+ public void warn(Throwable th, String format, Object... args) {
+ }
+
+ @Override
+ public boolean isErrorEnabled() {
+ return false;
+ }
+
+ @Override
+ public void error(String format, Object... args) {
+ }
+
+ @Override
+ public void error(Throwable th, String format, Object... args) {
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.display.presenter.test/src/org/eclipse/osee/display/presenter/internal/SearchPresenterTest.java b/plugins/org.eclipse.osee.display.presenter.test/src/org/eclipse/osee/display/presenter/internal/SearchPresenterTest.java
index 34c75c0f313..1ca3d25efd9 100644
--- a/plugins/org.eclipse.osee.display.presenter.test/src/org/eclipse/osee/display/presenter/internal/SearchPresenterTest.java
+++ b/plugins/org.eclipse.osee.display.presenter.test/src/org/eclipse/osee/display/presenter/internal/SearchPresenterTest.java
@@ -25,6 +25,8 @@ import org.eclipse.osee.display.presenter.Utility;
import org.eclipse.osee.display.presenter.mocks.MockArtifactHeaderComponent;
import org.eclipse.osee.display.presenter.mocks.MockArtifactProvider;
import org.eclipse.osee.display.presenter.mocks.MockAttributeComponent;
+import org.eclipse.osee.display.presenter.mocks.MockDisplayOptionsComponent;
+import org.eclipse.osee.display.presenter.mocks.MockLogger;
import org.eclipse.osee.display.presenter.mocks.MockRelationComponent;
import org.eclipse.osee.display.presenter.mocks.MockSearchHeaderComponent;
import org.eclipse.osee.display.presenter.mocks.MockSearchNavigator;
@@ -46,7 +48,6 @@ import org.eclipse.osee.orcs.mock.MockArtifact;
import org.eclipse.osee.orcs.mock.MockAttribute;
import org.eclipse.osee.orcs.mock.MockMatch;
import org.eclipse.osee.orcs.search.Match;
-import org.junit.Ignore;
import org.junit.Test;
/**
@@ -68,14 +69,15 @@ public class SearchPresenterTest {
@Test
public void testInitSearchResults() throws UnsupportedEncodingException {
MockArtifactProvider provider = new MockArtifactProvider();
+ MockDisplayOptionsComponent optionsComp = new MockDisplayOptionsComponent();
provider.setResultList(getSearchResults());
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
MockSearchHeaderComponent searchHeaderComp = new MockSearchHeaderComponent();
MockSearchResultsListComponent searchResultsComp = new MockSearchResultsListComponent();
String url =
"/branch=" + Utility.encode(GUID.create()) + "&nameOnly=true&search=" + Utility.encode("this is a test");
- presenter.initSearchResults(url, searchHeaderComp, searchResultsComp, null);
+ presenter.initSearchResults(url, searchHeaderComp, searchResultsComp, optionsComp);
List<MockSearchResultComponent> searchResults = searchResultsComp.getSearchResults();
Assert.assertEquals(1, searchResults.size());
}
@@ -83,19 +85,20 @@ public class SearchPresenterTest {
@Test
public void testInitSearchResultsErrors() throws UnsupportedEncodingException {
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null, new MockLogger());
MockSearchHeaderComponent searchHeaderComp = new MockSearchHeaderComponent();
+ MockDisplayOptionsComponent optionsComp = new MockDisplayOptionsComponent();
MockSearchResultsListComponent searchResultsComp = new MockSearchResultsListComponent();
String url = "badUrl";
presenter.initSearchResults(url, searchHeaderComp, searchResultsComp, null);
Assert.assertNotNull(searchResultsComp.getErrorMessage());
ExceptionArtifactProvider provider = new ExceptionArtifactProvider();
- presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
+ presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
searchHeaderComp = new MockSearchHeaderComponent();
searchResultsComp = new MockSearchResultsListComponent();
url = "/branch=" + Utility.encode(GUID.create()) + "&nameOnly=true&search=" + Utility.encode("this is a test");
- presenter.initSearchResults(url, searchHeaderComp, searchResultsComp, null);
+ presenter.initSearchResults(url, searchHeaderComp, searchResultsComp, optionsComp);
Assert.assertNotNull(searchResultsComp.getErrorMessage());
}
@@ -103,7 +106,7 @@ public class SearchPresenterTest {
public void testSelectArtifact() throws UnsupportedEncodingException {
MockSearchNavigator navigator = new MockSearchNavigator();
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null, new MockLogger());
String branchGuid = GUID.create();
String artGuid = GUID.create();
ViewArtifact artifact = new ViewArtifact(artGuid, "name", "type", null, new ViewId(branchGuid, "branchName"));
@@ -113,12 +116,12 @@ public class SearchPresenterTest {
}
@Test
- @Ignore
public void testInitArtifactPage() throws UnsupportedEncodingException {
MockArtifactProvider provider = new MockArtifactProvider();
+ MockDisplayOptionsComponent optionsComp = new MockDisplayOptionsComponent();
provider.setResultList(getSearchResults());
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
String artGuid = GUID.create();
MockArtifact testArt = new MockArtifact(artGuid, "name");
MockArtifact parentArt = new MockArtifact(GUID.create(), "parent");
@@ -141,8 +144,8 @@ public class SearchPresenterTest {
Assert.assertEquals(1, attrComp.getAttributes().keySet().size());
provider = new MockArtifactProvider();
- presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
- presenter.initArtifactPage(url, searchHeaderComp, artHeaderComp, relComp, attrComp, null);
+ presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
+ presenter.initArtifactPage(url, searchHeaderComp, artHeaderComp, relComp, attrComp, optionsComp);
Assert.assertNotNull(artHeaderComp.getErrorMessage());
}
@@ -150,7 +153,7 @@ public class SearchPresenterTest {
public void testInitArtifactPageErrors() throws UnsupportedEncodingException {
String url = "badUrl";
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null, new MockLogger());
MockSearchHeaderComponent searchHeaderComp = new MockSearchHeaderComponent();
MockArtifactHeaderComponent artHeaderComp = new MockArtifactHeaderComponent();
MockRelationComponent relComp = new MockRelationComponent();
@@ -160,7 +163,7 @@ public class SearchPresenterTest {
url = "/branch=" + Utility.encode(GUID.create()) + "&artifact=" + Utility.encode(GUID.create());
ExceptionArtifactProvider provider = new ExceptionArtifactProvider();
- presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
+ presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
searchHeaderComp = new MockSearchHeaderComponent();
artHeaderComp = new MockArtifactHeaderComponent();
relComp = new MockRelationComponent();
@@ -176,7 +179,7 @@ public class SearchPresenterTest {
provider.setResultList(getSearchResults());
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
String artGuid = GUID.create();
String artGuidA = GUID.create();
String artGuidB = GUID.create();
@@ -222,7 +225,7 @@ public class SearchPresenterTest {
@Test
public void testSelectRelationTypeErrors() {
SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters> presenter =
- new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null);
+ new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(null, new MockLogger());
MockRelationComponent relComp = new MockRelationComponent();
ViewId relation = new ViewId("0", "Name");
presenter.selectRelationType(null, relation, relComp);
@@ -236,7 +239,7 @@ public class SearchPresenterTest {
ExceptionArtifactProvider provider = new ExceptionArtifactProvider();
relComp = new MockRelationComponent();
- presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider);
+ presenter = new SearchPresenterImpl<SearchHeaderComponent, ViewSearchParameters>(provider, new MockLogger());
presenter.selectRelationType(artifact, relation, relComp);
Assert.assertNotNull(relComp.getErrorMessage());
}
diff --git a/plugins/org.eclipse.osee.display.presenter/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.display.presenter/META-INF/MANIFEST.MF
index 5f4c19db7fc..e8cca7f05a8 100644
--- a/plugins/org.eclipse.osee.display.presenter/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.display.presenter/META-INF/MANIFEST.MF
@@ -5,7 +5,8 @@ Bundle-SymbolicName: org.eclipse.osee.display.presenter
Bundle-Version: 0.9.9.qualifier
Bundle-Vendor: Eclipse Open System Engineering Environment
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.core.runtime,
+Import-Package: com.google.common.collect,
+ org.eclipse.core.runtime,
org.eclipse.osee.display.api.components,
org.eclipse.osee.display.api.data,
org.eclipse.osee.display.api.search,
@@ -16,6 +17,7 @@ Import-Package: org.eclipse.core.runtime,
org.eclipse.osee.framework.core.model.type,
org.eclipse.osee.framework.jdk.core.type,
org.eclipse.osee.framework.jdk.core.util,
+ org.eclipse.osee.logger,
org.eclipse.osee.orcs,
org.eclipse.osee.orcs.data,
org.eclipse.osee.orcs.search
diff --git a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactProviderImpl.java b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactProviderImpl.java
index d585240b3c7..b185ea4500c 100644
--- a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactProviderImpl.java
+++ b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactProviderImpl.java
@@ -10,17 +10,13 @@
*******************************************************************************/
package org.eclipse.osee.display.presenter;
-import java.util.ArrayList;
import java.util.Collection;
+import java.util.Date;
import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeUnit;
import org.eclipse.osee.display.api.search.ArtifactProvider;
import org.eclipse.osee.framework.core.data.IArtifactToken;
import org.eclipse.osee.framework.core.data.IAttributeType;
@@ -40,6 +36,7 @@ import org.eclipse.osee.orcs.search.Match;
import org.eclipse.osee.orcs.search.QueryBuilder;
import org.eclipse.osee.orcs.search.QueryFactory;
import org.eclipse.osee.orcs.search.StringOperator;
+import com.google.common.collect.MapMaker;
/**
* @author John Misinco
@@ -47,25 +44,17 @@ import org.eclipse.osee.orcs.search.StringOperator;
public class ArtifactProviderImpl implements ArtifactProvider {
private final OrcsApi oseeApi;
-
private final ApplicationContext context;
-
private final Graph graph;
-
- protected static final List<String> notAllowed = new ArrayList<String>();
- static {
- notAllowed.add("Technical Approaches");
- notAllowed.add("Technical Performance Parameters");
- notAllowed.add("Recent Imports");
- notAllowed.add("Test");
- notAllowed.add("Interface Requirements");
- notAllowed.add("Test Procedures");
- }
+ private final ConcurrentMap<ReadableArtifact, ReadableArtifact> parentCache;
+ private final ArtifactSanitizer sanitizer;
public ArtifactProviderImpl(OrcsApi oseeApi, ApplicationContext context) {
this.oseeApi = oseeApi;
this.context = context;
this.graph = oseeApi.getGraph(context);
+ this.parentCache = new MapMaker().initialCapacity(500).expiration(30, TimeUnit.MINUTES).makeMap();
+ sanitizer = new ArtifactSanitizer(this);
}
protected QueryFactory getFactory() {
@@ -74,17 +63,18 @@ public class ArtifactProviderImpl implements ArtifactProvider {
@Override
public ReadableArtifact getArtifactByArtifactToken(IOseeBranch branch, IArtifactToken token) throws OseeCoreException {
- return sanitizeResult(getArtifactByGuid(branch, token.getGuid()));
+ return getArtifactByGuid(branch, token.getGuid());
}
@Override
public ReadableArtifact getArtifactByGuid(IOseeBranch branch, String guid) throws OseeCoreException {
- return sanitizeResult(getFactory().fromBranch(branch).andGuidsOrHrids(guid).getResults().getOneOrNull());
+ return sanitizer.sanitizeArtifact(getFactory().fromBranch(branch).andGuidsOrHrids(guid).getResults().getOneOrNull());
}
@Override
public List<Match<ReadableArtifact, ReadableAttribute<?>>> getSearchResults(IOseeBranch branch, boolean nameOnly, String searchPhrase) throws OseeCoreException {
List<Match<ReadableArtifact, ReadableAttribute<?>>> filtered;
+ System.out.println("begin getSearchResults: " + new Date().toString());
IAttributeType type = nameOnly ? CoreAttributeTypes.Name : QueryBuilder.ANY_ATTRIBUTE_TYPE;
@@ -92,74 +82,35 @@ public class ArtifactProviderImpl implements ArtifactProvider {
builder.and(type, StringOperator.TOKENIZED_ANY_ORDER, CaseType.IGNORE_CASE, searchPhrase);
List<Match<ReadableArtifact, ReadableAttribute<?>>> results = builder.getMatches().getList();
- filtered = sanitizeSearchResults(results);
+ System.out.println("end1 getSearchResults: " + new Date().toString());
+ filtered = sanitizer.sanitizeSearchResults(results);
+ System.out.println("end2 getSearchResults: " + new Date().toString());
return filtered;
}
- private List<Match<ReadableArtifact, ReadableAttribute<?>>> sanitizeSearchResults(List<Match<ReadableArtifact, ReadableAttribute<?>>> toSanitize) {
- int numProcessors = Runtime.getRuntime().availableProcessors();
- int partitionSize = toSanitize.size() / numProcessors;
- int remainder = toSanitize.size() % numProcessors;
- ExecutorService executor = Executors.newFixedThreadPool(numProcessors);
- int startIndex = 0;
- int endIndex = 0;
- List<ResultsCallable> workers = new LinkedList<ResultsCallable>();
- List<Match<ReadableArtifact, ReadableAttribute<?>>> toReturn =
- new LinkedList<Match<ReadableArtifact, ReadableAttribute<?>>>();
-
- for (int i = 0; i < numProcessors; i++) {
- startIndex = endIndex;
- endIndex = startIndex + partitionSize;
- if (i == 0) {
- endIndex += remainder;
- }
- ResultsCallable worker = new ResultsCallable(toSanitize.subList(startIndex, endIndex));
- workers.add(worker);
- }
-
- try {
- for (Future<List<Match<ReadableArtifact, ReadableAttribute<?>>>> future : executor.invokeAll(workers)) {
- toReturn.addAll(future.get());
- }
- } catch (Exception ex) {
- //
- }
-
- return toReturn;
-
- }
-
- private ReadableArtifact sanitizeResult(ReadableArtifact result) throws OseeCoreException {
- boolean allowed = true;
- ReadableArtifact current = result;
- while (current != null) {
- if (notAllowed.contains(current.getName())) {
- allowed = false;
- break;
- }
- current = graph.getParent(current);
- }
- if (allowed) {
- return result;
- } else {
- return null;
- }
- }
-
@Override
public List<ReadableArtifact> getRelatedArtifacts(ReadableArtifact art, IRelationTypeSide relationTypeSide) throws OseeCoreException {
- return graph.getRelatedArtifacts(art, relationTypeSide);
+ return sanitizer.sanitizeArtifacts(graph.getRelatedArtifacts(art, relationTypeSide));
}
@Override
public ReadableArtifact getRelatedArtifact(ReadableArtifact art, IRelationTypeSide relationTypeSide) throws OseeCoreException {
- return graph.getRelatedArtifact(art, relationTypeSide);
+ return sanitizer.sanitizeArtifact(graph.getRelatedArtifact(art, relationTypeSide));
}
@Override
public ReadableArtifact getParent(ReadableArtifact art) throws OseeCoreException {
- return getRelatedArtifact(art, CoreRelationTypes.Default_Hierarchical__Parent);
+ ReadableArtifact parent = null;
+ if (parentCache.containsKey(art)) {
+ parent = parentCache.get(art);
+ } else {
+ parent = getRelatedArtifact(art, CoreRelationTypes.Default_Hierarchical__Parent);
+ if (parent != null) {
+ parentCache.put(art, parent);
+ }
+ }
+ return sanitizer.sanitizeArtifact(parent);
}
@Override
@@ -172,25 +123,4 @@ public class ArtifactProviderImpl implements ArtifactProvider {
return toReturn;
}
- private class ResultsCallable implements Callable<List<Match<ReadableArtifact, ReadableAttribute<?>>>> {
-
- List<Match<ReadableArtifact, ReadableAttribute<?>>> toSanitize;
-
- public ResultsCallable(List<Match<ReadableArtifact, ReadableAttribute<?>>> toSanitize) {
- this.toSanitize = toSanitize;
- }
-
- @Override
- public List<Match<ReadableArtifact, ReadableAttribute<?>>> call() throws Exception {
- Iterator<Match<ReadableArtifact, ReadableAttribute<?>>> it = toSanitize.iterator();
- while (it.hasNext()) {
- Match<ReadableArtifact, ReadableAttribute<?>> match = it.next();
- ReadableArtifact matchedArtifact = match.getItem();
- if (sanitizeResult(matchedArtifact) == null) {
- it.remove();
- }
- }
- return toSanitize;
- }
- }
}
diff --git a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactSanitizer.java b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactSanitizer.java
new file mode 100644
index 00000000000..a6bcbfbd94b
--- /dev/null
+++ b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/ArtifactSanitizer.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2011 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.display.presenter;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import org.eclipse.osee.display.api.search.ArtifactProvider;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.orcs.data.ReadableArtifact;
+import org.eclipse.osee.orcs.data.ReadableAttribute;
+import org.eclipse.osee.orcs.search.Match;
+
+/**
+ * @author John Misinco
+ */
+public class ArtifactSanitizer {
+
+ protected final ArtifactProvider provider;
+
+ public ArtifactSanitizer(ArtifactProvider provider) {
+ this.provider = provider;
+ }
+
+ protected static final List<String> notAllowed = new ArrayList<String>();
+ static {
+ notAllowed.add("Technical Approaches");
+ notAllowed.add("Technical Performance Parameters");
+ notAllowed.add("Recent Imports");
+ notAllowed.add("Test");
+ notAllowed.add("Interface Requirements");
+ notAllowed.add("Test Procedures");
+ }
+
+ public List<Match<ReadableArtifact, ReadableAttribute<?>>> sanitizeSearchResults(List<Match<ReadableArtifact, ReadableAttribute<?>>> toSanitize) {
+ int numProcessors = Runtime.getRuntime().availableProcessors();
+ int partitionSize = toSanitize.size() / numProcessors;
+ int remainder = toSanitize.size() % numProcessors;
+ ExecutorService executor = Executors.newFixedThreadPool(numProcessors);
+ int startIndex = 0;
+ int endIndex = 0;
+ List<ResultsCallable> workers = new LinkedList<ResultsCallable>();
+ List<Match<ReadableArtifact, ReadableAttribute<?>>> toReturn =
+ new LinkedList<Match<ReadableArtifact, ReadableAttribute<?>>>();
+
+ for (int i = 0; i < numProcessors; i++) {
+ startIndex = endIndex;
+ endIndex = startIndex + partitionSize;
+ if (i == 0) {
+ endIndex += remainder;
+ }
+ ResultsCallable worker = new ResultsCallable(toSanitize.subList(startIndex, endIndex));
+ workers.add(worker);
+ }
+
+ try {
+ for (Future<List<Match<ReadableArtifact, ReadableAttribute<?>>>> future : executor.invokeAll(workers)) {
+ toReturn.addAll(future.get());
+ }
+ } catch (Exception ex) {
+ //
+ }
+
+ return toReturn;
+
+ }
+
+ public ReadableArtifact sanitizeArtifact(ReadableArtifact result) throws OseeCoreException {
+ boolean allowed = true;
+ ReadableArtifact current = result;
+ while (current != null) {
+ if (notAllowed.contains(current.getName())) {
+ allowed = false;
+ break;
+ }
+ current = provider.getParent(current);
+ }
+ if (allowed) {
+ return result;
+ } else {
+ return null;
+ }
+ }
+
+ public List<ReadableArtifact> sanitizeArtifacts(List<ReadableArtifact> arts) throws OseeCoreException {
+ Iterator<ReadableArtifact> it = arts.iterator();
+ while (it.hasNext()) {
+ if (sanitizeArtifact(it.next()) == null) {
+ it.remove();
+ }
+ }
+ return arts;
+ }
+
+ private class ResultsCallable implements Callable<List<Match<ReadableArtifact, ReadableAttribute<?>>>> {
+
+ List<Match<ReadableArtifact, ReadableAttribute<?>>> toSanitize;
+
+ public ResultsCallable(List<Match<ReadableArtifact, ReadableAttribute<?>>> toSanitize) {
+ this.toSanitize = toSanitize;
+ }
+
+ @Override
+ public List<Match<ReadableArtifact, ReadableAttribute<?>>> call() throws Exception {
+ Iterator<Match<ReadableArtifact, ReadableAttribute<?>>> it = toSanitize.iterator();
+ while (it.hasNext()) {
+ Match<ReadableArtifact, ReadableAttribute<?>> match = it.next();
+ ReadableArtifact matchedArtifact = match.getItem();
+ if (sanitizeArtifact(matchedArtifact) == null) {
+ it.remove();
+ }
+ }
+ return toSanitize;
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/SearchPresenterImpl.java b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/SearchPresenterImpl.java
index ef985012f0b..83b35720bb2 100644
--- a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/SearchPresenterImpl.java
+++ b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/SearchPresenterImpl.java
@@ -44,6 +44,7 @@ import org.eclipse.osee.framework.core.model.type.RelationType;
import org.eclipse.osee.framework.jdk.core.type.MatchLocation;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.data.ReadableArtifact;
import org.eclipse.osee.orcs.data.ReadableAttribute;
import org.eclipse.osee.orcs.search.Match;
@@ -57,9 +58,11 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
private final static String SIDE_A_KEY = "sideAName";
private final static String SIDE_B_KEY = "sideBName";
+ protected final Log logger;
- public SearchPresenterImpl(ArtifactProvider artifactProvider) {
+ public SearchPresenterImpl(ArtifactProvider artifactProvider, Log logger) {
this.artifactProvider = artifactProvider;
+ this.logger = logger;
}
@Override
@@ -76,7 +79,7 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
return;
}
- // options.setDisplayOptions(new DisplayOptions(params.isVerbose()));
+ options.setDisplayOptions(new DisplayOptions(params.isVerbose()));
List<Match<ReadableArtifact, ReadableAttribute<?>>> searchResults = null;
try {
@@ -91,6 +94,7 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
try {
processSearchResults(searchResults, searchResultsComp, params);
} catch (Exception ex) {
+ logger.error(ex, "Error in processSearchResults");
setErrorMessage(searchResultsComp, Lib.exceptionToString(ex));
return;
}
@@ -127,7 +131,7 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
value = getParametersAsEncodedUrl(params);
oseeNavigator.navigateArtifactPage("/" + value);
} catch (UnsupportedEncodingException ex) {
- // setErrorMessage(artifact, Lib.exceptionToString(ex));
+ logger.error(ex, "Error in selectArtifact");
}
}
@@ -151,8 +155,9 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
ReadableArtifact displayArt = null;
try {
displayArt = artifactProvider.getArtifactByGuid(TokenFactory.createBranch(branch, ""), art);
- } catch (Exception e) {
- setErrorMessage(artHeaderComp, String.format("Error while loading artifact[%s] from branch:[%s]", art, branch));
+ } catch (Exception ex) {
+ logger.error(ex, "Error in initArtifactPage");
+ setErrorMessage(artHeaderComp, Lib.exceptionToString(ex));
return;
}
if (displayArt == null) {
@@ -163,8 +168,9 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
ViewArtifact artifact = null;
try {
artifact = convertToViewArtifact(displayArt, true);
- } catch (Exception e) {
- setErrorMessage(artHeaderComp, String.format("Error while converting [%s] from branch:[%s]", art, branch));
+ } catch (Exception ex) {
+ logger.error(ex, "Error in initArtifactPage");
+ setErrorMessage(artHeaderComp, Lib.exceptionToString(ex));
return;
}
@@ -175,8 +181,9 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
Collection<RelationType> relationTypes = null;
try {
relationTypes = artifactProvider.getValidRelationTypes(displayArt);
- } catch (Exception e) {
- setErrorMessage(relComp, String.format("Error loading relation types for: [%s]", displayArt.getName()));
+ } catch (Exception ex) {
+ logger.error(ex, "Error in initArtifactPage");
+ setErrorMessage(relComp, Lib.exceptionToString(ex));
return;
}
for (RelationType relTypeSide : relationTypes) {
@@ -191,7 +198,8 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
try {
attributeTypes = displayArt.getAttributeTypes();
} catch (Exception ex) {
- setErrorMessage(attrComp, String.format("Error loading attributes for: [%s]", displayArt.getName()));
+ logger.error(ex, "Error in initArtifactPage");
+ setErrorMessage(attrComp, Lib.exceptionToString(ex));
return;
}
for (IAttributeType attrType : attributeTypes) {
@@ -202,7 +210,8 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
attrComp.addAttribute(attrType.getName(), value.getDisplayableString());
}
} catch (Exception ex) {
- setErrorMessage(attrComp, String.format("Error loading attributes for: [%s]", displayArt.getName()));
+ logger.error(ex, "Error in initArtifactPage");
+ setErrorMessage(attrComp, Lib.exceptionToString(ex));
return;
}
}
@@ -231,8 +240,8 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
artifactProvider.getRelatedArtifacts(sourceArt,
TokenFactory.createRelationTypeSide(RelationSide.SIDE_B, type.getGuid(), type.getName()));
} catch (Exception ex) {
- setErrorMessage(relationComponent,
- String.format("Error loading relations for artifact[%s]", artifact.getGuid()));
+ logger.error(ex, "Error in selectRelationType");
+ setErrorMessage(relationComponent, Lib.exceptionToString(ex));
return;
}
@@ -258,8 +267,8 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
relationComponent.addRightRelated(id);
}
} catch (Exception ex) {
- setErrorMessage(relationComponent,
- String.format("Error adding artifact[%s] to relation relation component", artifact.getGuid()));
+ logger.error(ex, "Error in selectRelationType");
+ setErrorMessage(relationComponent, Lib.exceptionToString(ex));
return;
}
}
@@ -393,6 +402,7 @@ public class SearchPresenterImpl<T extends SearchHeaderComponent, K extends View
@Override
public void selectSearch(String url, K params, SearchNavigator navigator) {
+ //do nothing for now
}
}
diff --git a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/Utility.java b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/Utility.java
index 8cde81925f5..d69f1b4e831 100644
--- a/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/Utility.java
+++ b/plugins/org.eclipse.osee.display.presenter/src/org/eclipse/osee/display/presenter/Utility.java
@@ -102,7 +102,7 @@ public final class Utility {
url.append(encode(entry.getKey()));
url.append("=");
url.append(encode(entry.getValue()));
- url.append("?");
+ url.append("&");
} catch (UnsupportedEncodingException ex) {
//
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeOther.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeOther.java
index a165cae8efd..d111305b6ce 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeOther.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/ds/criteria/CriteriaAttributeOther.java
@@ -14,9 +14,11 @@ import java.util.Collection;
import org.eclipse.osee.framework.core.data.IAttributeType;
import org.eclipse.osee.framework.core.exception.OseeArgumentException;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.orcs.core.ds.Criteria;
import org.eclipse.osee.orcs.core.ds.QueryOptions;
import org.eclipse.osee.orcs.search.Operator;
+import org.eclipse.osee.orcs.search.QueryBuilder;
/**
* @author Roberto E. Escobar
@@ -49,6 +51,10 @@ public class CriteriaAttributeOther extends Criteria {
@Override
public void checkValid(QueryOptions options) throws OseeCoreException {
super.checkValid(options);
+ Conditions.checkNotNull(getAttributeType(), "attributeType");
+ Conditions.checkExpressionFailOnTrue(getAttributeType().equals(QueryBuilder.ANY_ATTRIBUTE_TYPE),
+ "Any attribute type is not allowed");
+
Operator operator = getOperator();
for (String value : getValues()) {
if (value != null && value.contains("%") && operator.isGreaterThanOrLessThan()) {
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java
index 63eb8a103e5..7e24711b800 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsApiImpl.java
@@ -84,7 +84,7 @@ public class OrcsApiImpl implements OrcsApi {
new OrcsObjectLoader(logger, dataLoader, artifactFactory, attributeFactory,
dataStoreTypeCache.getArtifactTypeCache(), cacheService.getBranchCache());
- criteriaFctry = new CriteriaFactory();
+ criteriaFctry = new CriteriaFactory(getDataStoreTypeCache().getAttributeTypeCache());
queryExecutor = new QueryExecutor(executorAdmin, queryEngine, objectLoader);
}
diff --git a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsObjectLoader.java b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsObjectLoader.java
index 49e05e6ddc5..08171a3531a 100644
--- a/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsObjectLoader.java
+++ b/plugins/org.eclipse.osee.orcs.core/src/org/eclipse/osee/orcs/core/internal/OrcsObjectLoader.java
@@ -11,9 +11,9 @@
package org.eclipse.osee.orcs.core.internal;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.model.cache.ArtifactTypeCache;
import org.eclipse.osee.framework.core.model.cache.BranchCache;
@@ -80,10 +80,8 @@ public class OrcsObjectLoader {
private static class ArtifactCollectorImpl implements ArtifactCollector, RelationRowHandlerFactory, AttributeRowHandlerFactory {
- private final Map<Integer, RelationContainer> relationContainers =
- new ConcurrentHashMap<Integer, RelationContainer>();;
- private final Map<Integer, AttributeContainer> attributeContainers =
- new ConcurrentHashMap<Integer, AttributeContainer>();
+ private final Map<Integer, RelationContainer> relationContainers = new HashMap<Integer, RelationContainer>();;
+ private final Map<Integer, AttributeContainer> attributeContainers = new HashMap<Integer, AttributeContainer>();
private final List<ReadableArtifact> artifacts;
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 0b2c17679d5..5c731e636d3 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,11 +11,14 @@
package org.eclipse.osee.orcs.core.internal.search;
import java.util.Collection;
+import java.util.LinkedList;
import java.util.Set;
import org.eclipse.osee.framework.core.data.IArtifactType;
import org.eclipse.osee.framework.core.data.IAttributeType;
import org.eclipse.osee.framework.core.data.IRelationTypeSide;
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;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactGuids;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaArtifactHrids;
@@ -27,6 +30,7 @@ import org.eclipse.osee.orcs.core.ds.criteria.CriteriaAttributeTypeExists;
import org.eclipse.osee.orcs.core.ds.criteria.CriteriaRelationTypeExists;
import org.eclipse.osee.orcs.search.CaseType;
import org.eclipse.osee.orcs.search.Operator;
+import org.eclipse.osee.orcs.search.QueryBuilder;
import org.eclipse.osee.orcs.search.StringOperator;
/**
@@ -35,6 +39,24 @@ import org.eclipse.osee.orcs.search.StringOperator;
@SuppressWarnings("unused")
public class CriteriaFactory {
+ private final AttributeTypeCache attributeTypeCache;
+
+ public CriteriaFactory(AttributeTypeCache attributeTypeCache) {
+ this.attributeTypeCache = attributeTypeCache;
+ }
+
+ private Collection<? extends IAttributeType> checkForAnyType(Collection<? extends IAttributeType> attributeTypes) throws OseeCoreException {
+ Collection<? extends IAttributeType> toReturn;
+ if (attributeTypes.contains(QueryBuilder.ANY_ATTRIBUTE_TYPE)) {
+ Collection<AttributeType> temp = new LinkedList<AttributeType>();
+ temp.addAll(attributeTypeCache.getAll());
+ toReturn = temp;
+ } else {
+ toReturn = attributeTypes;
+ }
+ return toReturn;
+ }
+
public Criteria createExistsCriteria(Collection<? extends IAttributeType> attributeTypes) throws OseeCoreException {
return new CriteriaAttributeTypeExists(attributeTypes);
}
@@ -47,8 +69,9 @@ public class CriteriaFactory {
return new CriteriaAttributeOther(attributeType, values, operator);
}
- public Criteria createAttributeCriteria(Collection<? extends IAttributeType> attributeType, StringOperator operator, CaseType match, String value) throws OseeCoreException {
- return new CriteriaAttributeKeyword(attributeType, value, operator, match);
+ public Criteria createAttributeCriteria(Collection<? extends IAttributeType> attributeTypes, StringOperator operator, CaseType match, String value) throws OseeCoreException {
+ Collection<? extends IAttributeType> toReturn = checkForAnyType(attributeTypes);
+ return new CriteriaAttributeKeyword(toReturn, value, operator, match);
}
public Criteria createArtifactTypeCriteria(Collection<? extends IArtifactType> artifactTypes) throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/SqlBuilderTest.java b/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/SqlBuilderTest.java
index 420a27d7f35..96c59482cc3 100644
--- a/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/SqlBuilderTest.java
+++ b/plugins/org.eclipse.osee.orcs.db.test/src/org/eclipse/osee/orcs/db/internal/search/SqlBuilderTest.java
@@ -377,7 +377,7 @@ public class SqlBuilderTest {
Assert.assertEquals(
"SELECT art1.art_id, txs1.branch_id\n" + //
" FROM \n" + //
- "osee_search_tags tag1, osee_search_tags tag2, osee_search_tags tag3, osee_join_id jid1, osee_attribute att1, osee_txs txs1, osee_artifact art1, osee_txs txs2\n" + //
+ "osee_join_id jid1, osee_attribute att1, osee_txs txs1, osee_search_tags tag1, osee_search_tags tag2, osee_search_tags tag3, osee_artifact art1, osee_txs txs2\n" + //
" WHERE \n" + //
"att1.attr_type_id = jid1.id AND jid1.query_id = ?\n" + //
" AND \n" + //
@@ -421,7 +421,7 @@ public class SqlBuilderTest {
Assert.assertEquals(
"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_join_id jid1, osee_attribute att2, osee_txs txs3\n" + //
+ "osee_attribute att1, osee_txs txs1, osee_artifact art1, osee_txs txs2, osee_join_id jid1, osee_attribute att2, osee_txs txs3, osee_search_tags tag1, osee_search_tags tag2, osee_search_tags tag3\n" + //
" WHERE \n" + //
"att1.attr_type_id = ? AND att1.value = ?\n" + //
" AND \n" + //
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 3abfcdb6a6b..fb04ff85dfb 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
@@ -30,7 +30,6 @@ import org.eclipse.osee.orcs.db.internal.search.tagger.TagProcessor;
import org.eclipse.osee.orcs.db.internal.search.util.AbstractQueryPostProcessor;
import org.eclipse.osee.orcs.db.internal.search.util.AttributeQueryPostProcessor;
import org.eclipse.osee.orcs.db.internal.search.util.TokenQueryPostProcessor;
-import org.eclipse.osee.orcs.search.QueryBuilder;
import org.eclipse.osee.orcs.search.StringOperator;
/**
@@ -60,12 +59,18 @@ public class AttributeTokenSqlHandler extends SqlHandler {
@Override
public void addTables(SqlWriter writer) throws OseeCoreException {
- if (criteria.getTypes().contains(QueryBuilder.ANY_ATTRIBUTE_TYPE)) {
- types = getTypeCaches().getAttributeTypeCache().getAll();
- } else {
- types = criteria.getTypes();
+ types = criteria.getTypes();
+
+ if (types.size() > 1) {
+ jIdAlias = writer.writeTable(TableEnum.ID_JOIN_TABLE);
}
+ List<String> aliases = writer.getAliases(TableEnum.ARTIFACT_TABLE);
+ List<String> txs = writer.getAliases(TableEnum.TXS_TABLE);
+
+ attrAlias = writer.writeTable(TableEnum.ATTRIBUTE_TABLE);
+ txsAlias1 = writer.writeTable(TableEnum.TXS_TABLE);
+
StringOperator operator = criteria.getStringOp();
if (requiresTokenizing(operator)) {
codedTags = new ArrayList<Long>();
@@ -77,16 +82,6 @@ public class AttributeTokenSqlHandler extends SqlHandler {
}
}
- if (types.size() > 1) {
- jIdAlias = writer.writeTable(TableEnum.ID_JOIN_TABLE);
- }
-
- List<String> aliases = writer.getAliases(TableEnum.ARTIFACT_TABLE);
- List<String> txs = writer.getAliases(TableEnum.TXS_TABLE);
-
- attrAlias = writer.writeTable(TableEnum.ATTRIBUTE_TABLE);
- txsAlias1 = writer.writeTable(TableEnum.TXS_TABLE);
-
if (aliases.isEmpty()) {
artAlias2 = writer.writeTable(TableEnum.ARTIFACT_TABLE);
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/tagger/TaggingEngine.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/tagger/TaggingEngine.java
index 7d49f26afa1..f00ec8395fa 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/tagger/TaggingEngine.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/tagger/TaggingEngine.java
@@ -20,6 +20,7 @@ import org.eclipse.osee.framework.core.model.type.AttributeType;
import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.jdk.core.type.MatchLocation;
import org.eclipse.osee.framework.jdk.core.util.Lib;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.orcs.data.ReadableAttribute;
import org.eclipse.osee.orcs.db.internal.search.util.WordOrderMatcher;
import org.eclipse.osee.orcs.search.CaseType;
@@ -48,19 +49,34 @@ public class TaggingEngine {
return getTagger("DefaultAttributeTaggerProvider");
}
+ private String normalize(String alias) {
+ String key = alias;
+ if (Strings.isValid(key) && key.contains(".")) {
+ key = Lib.getExtension(key);
+ }
+ return key;
+ }
+
+ public String getTaggerId(Identity<Long> identity) throws OseeCoreException {
+ AttributeType attributeType = attributeTypeCache.get(identity);
+ Conditions.checkNotNull(attributeType, "attributeType", "Unable to find attribute type with identity [%s]",
+ identity);
+ String taggerId = attributeType.getTaggerId();
+ return normalize(taggerId);
+ }
+
public Tagger getTagger(Identity<Long> identity) throws OseeCoreException {
AttributeType attributeType = attributeTypeCache.get(identity);
Conditions.checkNotNull(attributeType, "attributeType", "Unable to find attribute type with identity [%s]",
identity);
String taggerId = attributeType.getTaggerId();
+ Conditions.checkNotNull(taggerId, "taggerId", "Attribute type [%s] has no tagger defined",
+ attributeType.getName());
return getTagger(taggerId);
}
- private Tagger getTagger(String alias) throws OseeCoreException {
- String key = alias;
- if (key.contains(".")) {
- key = Lib.getExtension(key);
- }
+ public Tagger getTagger(String alias) throws OseeCoreException {
+ String key = normalize(alias);
Tagger tagger = taggers.get(key);
Conditions.checkNotNull(tagger, "tagger", "Unable to find tagger for [%s]", alias);
return tagger;
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 485429c7f20..3b786aed182 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
@@ -76,12 +76,14 @@ public abstract class AbstractQueryPostProcessor implements QueryPostProcessor {
try {
if (getTypes().contains(attribute.getAttributeType())) {
Tagger tagger = getTagger(attribute);
- List<MatchLocation> locations = tagger.find(attribute, getQuery(), getCaseType(), true);
- if (!locations.isEmpty()) {
- if (matchedAttributes == null) {
- matchedAttributes = new HashMap<ReadableAttribute<?>, List<MatchLocation>>();
+ if (tagger != null) {
+ List<MatchLocation> locations = tagger.find(attribute, getQuery(), getCaseType(), true);
+ if (!locations.isEmpty()) {
+ if (matchedAttributes == null) {
+ matchedAttributes = new HashMap<ReadableAttribute<?>, List<MatchLocation>>();
+ }
+ matchedAttributes.put(attribute, locations);
}
- matchedAttributes.put(attribute, locations);
}
}
} catch (Exception ex) {
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 3b431d4dc90..85afd08acc6 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
@@ -11,6 +11,7 @@
package org.eclipse.osee.orcs.db.internal.search.util;
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.data.ReadableAttribute;
import org.eclipse.osee.orcs.db.internal.search.tagger.Tagger;
@@ -30,6 +31,11 @@ public class TokenQueryPostProcessor extends AbstractQueryPostProcessor {
@Override
protected Tagger getTagger(ReadableAttribute<?> attribute) throws OseeCoreException {
- return engine.getTagger(attribute.getAttributeType());
+ String taggerId = engine.getTaggerId(attribute.getAttributeType());
+ Tagger toReturn = null;
+ if (Strings.isValid(taggerId)) {
+ toReturn = engine.getTagger(taggerId);
+ }
+ return toReturn;
}
}

Back to the top