You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by ju...@apache.org on 2002/05/08 10:24:20 UTC
cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/util PropertyHelper.java
juergen 02/05/08 01:24:20
Modified: src/webdav/server/org/apache/slide/webdav/util
PropertyHelper.java
Log:
Reuse query document in methods computeCheckoutSet() and computeWorkspaceCheckoutSet().
(ralf)
Revision Changes Path
1.18 +122 -51 jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java
Index: PropertyHelper.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- PropertyHelper.java 30 Apr 2002 12:39:40 -0000 1.17
+++ PropertyHelper.java 8 May 2002 08:24:20 -0000 1.18
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java,v 1.17 2002/04/30 12:39:40 pnever Exp $
- * $Revision: 1.17 $
- * $Date: 2002/04/30 12:39:40 $
+ * $Header: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/PropertyHelper.java,v 1.18 2002/05/08 08:24:20 juergen Exp $
+ * $Revision: 1.18 $
+ * $Date: 2002/05/08 08:24:20 $
*
* ====================================================================
*
@@ -108,6 +108,33 @@
public class PropertyHelper extends AbstractWebdavHelper implements DeltavConstants {
+
+ /**
+ * The Element returned by {@link #getCheckoutSetQueryElement
+ * getCheckoutSetQueryElement()}.
+ */
+ protected Element checkoutSetQueryElement = null;
+
+ /**
+ * The <literal> Element used in the basic search query returned by
+ * {@link #getCheckoutSetQueryElement getCheckoutSetQueryElement()}.
+ */
+ protected Element checkoutSetQueryLiteralElement = null;
+
+ /**
+ * The Element returned by {@link #getWorkspaceCheckoutSetQueryElement
+ * getWorkspaceCheckoutSetQueryElement()}.
+ */
+ protected Element workspaceCheckoutSetQueryElement = null;
+
+ /**
+ * The <href> Element used in the basic search query returned by
+ * {@link #getWorkspaceCheckoutSetQueryElement getWorkspaceCheckoutSetQueryElement()}.
+ */
+ protected Element workspaceCheckoutSetQueryHrefElement = null;
+
+
+
/**
* Factory method.
*/
@@ -877,17 +904,58 @@
ResourceKind resourceKind = AbstractResourceKind.determineResourceKind(nsaToken, revisionDescriptors, revisionDescriptor);
if (resourceKind instanceof Version) {
- Element basicSearch = new Element(DaslConstants.E_BASICSEARCH, davNamespace);
+ String resourcePath = VersioningHelper.getUri(nsaToken,
+ sToken,
+ nsaToken.getContentHelper(),
+ revisionDescriptors,
+ revisionDescriptor);
+ Element basicSearch = getCheckoutSetQueryElement(resourcePath);
+
+ String grammarNamespace = basicSearch.getNamespaceURI();
+ Search searchHelper = nsaToken.getSearchHelper();
+ SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
+ basicSearch,
+ sToken,
+ Integer.MAX_VALUE);
+ SearchQueryResult queryResult = searchHelper.search(sToken, searchQuery);
+ Iterator queryResultIterator = queryResult.iterator();
+ RequestedResource requestedResource = null;
+ Element href = null;
+ while (queryResultIterator.hasNext()) {
+ requestedResource = (RequestedResource)queryResultIterator.next();
+ href = new Element(E_HREF, defNamespace);
+ href.setText(getAbsoluteURL(serverURL, contextPath, requestedResource.getInternalHref()));
+ xmlValue.add(href);
+ }
+ }
+
+ return xmlValue;
+ }
+
+ /**
+ * Returns the query document used to search all resources that have
+ * a <checked-out> property with a <href> value containing
+ * the URI that identifies the given resource.
+ *
+ * @param resourcePath the Uri to search for.
+ *
+ * @return the query document.
+ */
+ private Element getCheckoutSetQueryElement(String resourcePath) throws SlideException {
+
+ if (checkoutSetQueryElement == null) {
+
+ checkoutSetQueryElement = new Element(DaslConstants.E_BASICSEARCH, davNamespace);
Element select = new Element(DaslConstants.E_SELECT, davNamespace);
- basicSearch.addContent(select);
+ checkoutSetQueryElement.addContent(select);
Element prop = new Element(E_PROP, davNamespace);
select.addContent(prop);
Element checkedOut = new Element(P_CHECKED_OUT, davNamespace);
prop.addContent(checkedOut);
Element from = new Element(DaslConstants.E_FROM, davNamespace);
- basicSearch.addContent(from);
+ checkoutSetQueryElement.addContent(from);
Element scope = new Element(DaslConstants.E_SCOPE, davNamespace);
from.addContent(scope);
Element href = new Element(E_HREF, davNamespace);
@@ -895,32 +963,16 @@
href.setText("/");
Element where = new Element(DaslConstants.E_WHERE, davNamespace);
- basicSearch.addContent(where);
+ checkoutSetQueryElement.addContent(where);
Element propcontains = new Element(DaslConstants.E_PROPCONTAINS, slideNamespace);
where.addContent(propcontains);
propcontains.addContent((Element)prop.clone());
- Element literal = new Element(DaslConstants.E_LITERAL, davNamespace);
- propcontains.addContent(literal);
- literal.setText(VersioningHelper.getUri(nsaToken, sToken, nsaToken.getContentHelper(), revisionDescriptors, revisionDescriptor));
-
- String grammarNamespace = basicSearch.getNamespaceURI();
- Search searchHelper = nsaToken.getSearchHelper();
- SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
- basicSearch,
- sToken,
- Integer.MAX_VALUE);
- SearchQueryResult queryResult = searchHelper.search(sToken, searchQuery);
- Iterator queryResultIterator = queryResult.iterator();
- RequestedResource requestedResource = null;
- while (queryResultIterator.hasNext()) {
- requestedResource = (RequestedResource)queryResultIterator.next();
- href = new Element(E_HREF, defNamespace);
- href.setText(getAbsoluteURL(serverURL, contextPath, requestedResource.getInternalHref()));
- xmlValue.add(href);
- }
+ checkoutSetQueryLiteralElement = new Element(DaslConstants.E_LITERAL, davNamespace);
+ propcontains.addContent(checkoutSetQueryLiteralElement);
}
+ checkoutSetQueryLiteralElement.setText(resourcePath);
- return xmlValue;
+ return checkoutSetQueryElement;
}
/**
@@ -949,48 +1001,67 @@
ResourceKind resourceKind = AbstractResourceKind.determineResourceKind(nsaToken, revisionDescriptors, revisionDescriptor);
if (resourceKind instanceof Workspace) {
- Element basicSearch = new Element(DaslConstants.E_BASICSEARCH, davNamespace);
+ Element basicSearch = getWorkspaceCheckoutSetQueryElement(revisionDescriptors.getUri());
+ String grammarNamespace = basicSearch.getNamespaceURI();
+ Search searchHelper = nsaToken.getSearchHelper();
+ SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
+ basicSearch,
+ sToken,
+ Integer.MAX_VALUE);
+ SearchQueryResult queryResult = searchHelper.search(sToken, searchQuery);
+ Iterator queryResultIterator = queryResult.iterator();
+ RequestedResource requestedResource = null;
+ Element hrefElement = null;
+ while (queryResultIterator.hasNext()) {
+ requestedResource = (RequestedResource)queryResultIterator.next();
+ hrefElement = new Element(E_HREF, defNamespace);
+ hrefElement.setText(getAbsoluteURL(serverURL, contextPath, requestedResource.getInternalHref()));
+ xmlValue.add(hrefElement);
+ }
+ }
+
+ return xmlValue;
+ }
+
+ /**
+ * Returns the query document used to search all resources that have
+ * a <checked-out> property within the given <code>scopePath</code>.
+ *
+ * @param scopePath the Uri of the scope to search in.
+ *
+ * @return the query document.
+ */
+ private Element getWorkspaceCheckoutSetQueryElement(String scopePath) {
+
+ if (workspaceCheckoutSetQueryElement == null) {
+
+ workspaceCheckoutSetQueryElement = new Element(DaslConstants.E_BASICSEARCH, davNamespace);
Element select = new Element(DaslConstants.E_SELECT, davNamespace);
- basicSearch.addContent(select);
+ workspaceCheckoutSetQueryElement.addContent(select);
Element prop = new Element(E_PROP, davNamespace);
select.addContent(prop);
Element checkedOut = new Element(P_CHECKED_OUT, davNamespace);
prop.addContent(checkedOut);
Element from = new Element(DaslConstants.E_FROM, davNamespace);
- basicSearch.addContent(from);
+ workspaceCheckoutSetQueryElement.addContent(from);
Element scope = new Element(DaslConstants.E_SCOPE, davNamespace);
from.addContent(scope);
- Element href = new Element(E_HREF, davNamespace);
- scope.addContent(href);
- href.setText(revisionDescriptors.getUri());
+ workspaceCheckoutSetQueryHrefElement = new Element(E_HREF, davNamespace);
+ scope.addContent(workspaceCheckoutSetQueryHrefElement);
Element where = new Element(DaslConstants.E_WHERE, davNamespace);
- basicSearch.addContent(where);
+ workspaceCheckoutSetQueryElement.addContent(where);
Element isdefined = new Element(DaslConstants.E_ISDEFINED, davNamespace);
where.addContent(isdefined);
isdefined.addContent((Element)prop.clone());
+ }
+ workspaceCheckoutSetQueryHrefElement.setText(scopePath);
- String grammarNamespace = basicSearch.getNamespaceURI();
- Search searchHelper = nsaToken.getSearchHelper();
- SearchQuery searchQuery = searchHelper.createSearchQuery(grammarNamespace,
- basicSearch,
- sToken,
- Integer.MAX_VALUE);
- SearchQueryResult queryResult = searchHelper.search(sToken, searchQuery);
- Iterator queryResultIterator = queryResult.iterator();
- RequestedResource requestedResource = null;
- while (queryResultIterator.hasNext()) {
- requestedResource = (RequestedResource)queryResultIterator.next();
- href = new Element(E_HREF, defNamespace);
- href.setText(getAbsoluteURL(serverURL, contextPath, requestedResource.getInternalHref()));
- xmlValue.add(href);
- }
+ return workspaceCheckoutSetQueryElement;
}
- return xmlValue;
- }
/**
* Returns the concatenation of <code>serverURL</code>, <code>contextPath</code>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>