Author: chathura
Date: Thu Dec 13 10:01:11 2007
New Revision: 11097
Log:
Implemented the improved advanced search mechanism for the UI back end.
Removed:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/utils/QueryManager.java
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AdvancedSearchAction.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/utils/AdvancedResourceQuery.java
trunk/registry/modules/webapps/src/main/webapp/admin/advanced-search.jsp
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
Thu Dec 13 10:01:11 2007
@@ -783,6 +783,10 @@
advancedSearchAction.setResourcePath(request.getParameter("resourcePath"));
advancedSearchAction.setAuthorName(request.getParameter("author"));
advancedSearchAction.setUpdaterName(request.getParameter("updater"));
+
advancedSearchAction.setCreatedAfter(request.getParameter("createdAfter"));
+
advancedSearchAction.setCreatedBefore(request.getParameter("createdBefore"));
+
advancedSearchAction.setUpdatedAfter(request.getParameter("updatedAfter"));
+
advancedSearchAction.setUpdatedBefore(request.getParameter("updatedBefore"));
advancedSearchAction.setTags(request.getParameter("tags"));
advancedSearchAction.setCommentWords(request.getParameter("commentWords"));
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AdvancedSearchAction.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AdvancedSearchAction.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AdvancedSearchAction.java
Thu Dec 13 10:01:11 2007
@@ -19,19 +19,20 @@
import org.wso2.registry.*;
import org.wso2.registry.web.actions.utils.ResourceData;
import org.wso2.registry.web.actions.utils.AdvancedResourceQuery;
-import org.wso2.registry.secure.SecureRegistry;
-import org.wso2.registry.secure.RegistryUserManager;
import org.wso2.registry.secure.AuthorizationFailedException;
import javax.servlet.http.HttpServletRequest;
-import java.util.List;
-import java.util.ArrayList;
+import java.util.*;
public class AdvancedSearchAction extends AbstractRegistryAction {
private String resourcePath;
private String authorName;
private String updaterName;
+ private String createdAfter;
+ private String createdBefore;
+ private String updatedAfter;
+ private String updatedBefore;
private String tags;
private String commentWords;
private String content;
@@ -48,9 +49,13 @@
if (resultType.equals("Resources")) {
AdvancedResourceQuery query = new AdvancedResourceQuery();
- query.setResourcePath(resourcePath);
+ query.setResourceName(resourcePath);
query.setAuthorName(authorName);
query.setUpdaterName(updaterName);
+ query.setCreatedAfter(computeDate(createdAfter));
+ query.setCreatedBefore(computeDate(createdBefore));
+ query.setUpdatedAfter(computeDate(updatedAfter));
+ query.setUpdatedBefore(computeDate(updatedBefore));
query.setCommentWords(commentWords);
query.setTags(tags);
@@ -235,6 +240,38 @@
this.updaterName = updaterName;
}
+ public String getCreatedAfter() {
+ return createdAfter;
+ }
+
+ public void setCreatedAfter(String createdAfter) {
+ this.createdAfter = createdAfter;
+ }
+
+ public String getCreatedBefore() {
+ return createdBefore;
+ }
+
+ public void setCreatedBefore(String createdBefore) {
+ this.createdBefore = createdBefore;
+ }
+
+ public String getUpdatedAfter() {
+ return updatedAfter;
+ }
+
+ public void setUpdatedAfter(String updatedAfter) {
+ this.updatedAfter = updatedAfter;
+ }
+
+ public String getUpdatedBefore() {
+ return updatedBefore;
+ }
+
+ public void setUpdatedBefore(String updatedBefore) {
+ this.updatedBefore = updatedBefore;
+ }
+
public String getTags() {
return tags;
}
@@ -274,4 +311,48 @@
public void setResourceDataList(List resourceDataList) {
this.resourceDataList = resourceDataList;
}
+
+ /**
+ * Converts given strings to Dates
+ *
+ * @param dateString Allowed formats
+ * year/month/day:hour/minute/second
+ * year/month/day
+ *
+ * @return Date corresponding to the given string date
+ */
+ private Date computeDate(String dateString) {
+
+ if (dateString == null || dateString.length() == 0) {
+ return null;
+ }
+
+ if (dateString.indexOf(":") > 0) {
+ String[] dateTime = dateString.split(":");
+ if (dateTime.length == 2) {
+ String[] dateParts = dateTime[0].split("/");
+ String[] timeParts = dateTime[1].split("/");
+ Calendar calendar = new GregorianCalendar(
+ Integer.parseInt(dateParts[0]),
+ Integer.parseInt(dateParts[1]) - 1, // month value is
zero based
+ Integer.parseInt(dateParts[2]),
+ Integer.parseInt(timeParts[0]),
+ Integer.parseInt(timeParts[1]),
+ Integer.parseInt(timeParts[2]));
+
+ return calendar.getTime();
+ }
+ } else {
+
+ String[] dateParts = dateString.split("/");
+ Calendar calendar = new GregorianCalendar(
+ Integer.parseInt(dateParts[0]),
+ Integer.parseInt(dateParts[1]),
+ Integer.parseInt(dateParts[2]));
+
+ return calendar.getTime();
+ }
+
+ return null;
+ }
}
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/utils/AdvancedResourceQuery.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/utils/AdvancedResourceQuery.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/utils/AdvancedResourceQuery.java
Thu Dec 13 10:01:11 2007
@@ -22,10 +22,10 @@
import org.wso2.registry.RegistryConstants;
import org.wso2.registry.secure.SecureRegistry;
-import java.util.Map;
-import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
+import java.util.Date;
+import java.sql.Timestamp;
/**
* Represents an advanced query on normal resources. Handles all details of
defining, executing and
@@ -37,9 +37,13 @@
* List of parameters for the query. NOTE THAT THIS LIST SHOULD ALWAYS BE
PROCESSED IN THE ORDER
* THEY ARE LISTED BELOW.
*/
- private String resourcePath;
+ private String resourceName;
private String authorName;
private String updaterName;
+ private Date createdAfter;
+ private Date createdBefore;
+ private Date updatedAfter;
+ private Date updatedBefore;
private String commentWords;
private String tag1;
private String tag2;
@@ -60,8 +64,8 @@
}
List params = new ArrayList();
- if (resourcePath != null && resourcePath.length() > 0) {
- params.add(resourcePath);
+ if (resourceName != null && resourceName.length() > 0) {
+ params.add("%/" + resourceName);
}
if (authorName != null && authorName.length() > 0) {
@@ -72,6 +76,22 @@
params.add(updaterName);
}
+ if (createdAfter != null) {
+ params.add(new Timestamp(createdAfter.getTime()));
+ }
+
+ if (createdBefore != null) {
+ params.add(new Timestamp(createdBefore.getTime()));
+ }
+
+ if (updatedAfter != null) {
+ params.add(new Timestamp(updatedAfter.getTime()));
+ }
+
+ if (updatedBefore != null) {
+ params.add(new Timestamp(updatedBefore.getTime()));
+ }
+
if (commentWords != null && commentWords.length() > 0) {
params.add("%" + commentWords + "%");
}
@@ -92,12 +112,12 @@
return resultCollection;
}
- public String getResourcePath() {
- return resourcePath;
+ public String getResourceName() {
+ return resourceName;
}
- public void setResourcePath(String resourcePath) {
- this.resourcePath = resourcePath;
+ public void setResourceName(String resourceName) {
+ this.resourceName = resourceName;
}
public String getAuthorName() {
@@ -116,6 +136,38 @@
this.updaterName = updaterName;
}
+ public Date getCreatedAfter() {
+ return createdAfter;
+ }
+
+ public void setCreatedAfter(Date createdAfter) {
+ this.createdAfter = createdAfter;
+ }
+
+ public Date getCreatedBefore() {
+ return createdBefore;
+ }
+
+ public void setCreatedBefore(Date createdBefore) {
+ this.createdBefore = createdBefore;
+ }
+
+ public Date getUpdatedAfter() {
+ return updatedAfter;
+ }
+
+ public void setUpdatedAfter(Date updatedAfter) {
+ this.updatedAfter = updatedAfter;
+ }
+
+ public Date getUpdatedBefore() {
+ return updatedBefore;
+ }
+
+ public void setUpdatedBefore(Date updatedBefore) {
+ this.updatedBefore = updatedBefore;
+ }
+
public String getTags() {
return tags;
}
@@ -167,7 +219,7 @@
StringBuffer buf = new StringBuffer("/queries/advanced");
- if (resourcePath != null && resourcePath.length() > 0) {
+ if (resourceName != null && resourceName.length() > 0) {
buf.append("1");
} else {
buf.append("0");
@@ -185,6 +237,30 @@
buf.append("0");
}
+ if (createdAfter != null) {
+ buf.append("1");
+ } else {
+ buf.append("0");
+ }
+
+ if (createdBefore != null) {
+ buf.append("1");
+ } else {
+ buf.append("0");
+ }
+
+ if (updatedAfter != null) {
+ buf.append("1");
+ } else {
+ buf.append("0");
+ }
+
+ if (updatedBefore != null) {
+ buf.append("1");
+ } else {
+ buf.append("0");
+ }
+
if (commentWords != null && commentWords.length() > 0) {
buf.append("1");
} else {
@@ -220,8 +296,8 @@
boolean queryStarted = false;
String pathQuery = "";
- if (resourcePath != null && resourcePath.length() != 0) {
- pathQuery = " WHERE R.PATH=?";
+ if (resourceName != null && resourceName.length() != 0) {
+ pathQuery = " WHERE R.PATH LIKE ?";
queryStarted = true;
}
@@ -237,13 +313,79 @@
//String sql = "SELECT A.AID FROM ARTIFACTS A, VERSIONS V, TAGS T,
COMMENTS C WHERE A.AID=V.AID AND V.VN IN (SELECT MAX(V2.VN) FROM VERSIONS V2
WHERE A.AID=V2.AID) AND A.AID=T.AID AND A.AID=C.AID AND A.PATH='c1200/r4'";
String fromVersions = "";
- String versionQuery = "";
+ String updaterNameQuery = "";
if (updaterName != null && updaterName.length() != 0) {
fromVersions = ", VERSIONS V";
if (queryStarted) {
- versionQuery = " AND V.AID=R.AID AND V.VN IN (SELECT
MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.AUTHOR=?";
+ updaterNameQuery = " AND V.AID=R.AID AND V.VN IN (SELECT
MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.AUTHOR=?";
+ } else {
+ updaterNameQuery = " WHERE V.AID=R.AID AND V.VN IN (SELECT
MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.AUTHOR=?";
+ }
+ }
+
+ String createdAfterQuery = "";
+ if (createdAfter != null) {
+ if (queryStarted) {
+ createdAfterQuery = " AND R.CREATED_TIME>?";
+ } else {
+ createdAfterQuery = " WHERE R.CREATED_TIME>?";
+ queryStarted = true;
+ }
+ }
+
+ String createdBeforeQuery = "";
+ if (createdBefore != null) {
+ if (queryStarted) {
+ createdBeforeQuery = " AND R.CREATED_TIME<?";
} else {
- versionQuery = " WHERE V.AID=R.AID AND V.VN IN (SELECT
MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.AUTHOR=?";
+ createdBeforeQuery = " WHERE R.CREATED_TIME<?";
+ queryStarted = true;
+ }
+ }
+
+ String updatedAfterQuery = "";
+ if (updatedAfter != null) {
+ if (fromVersions.equals("")) {
+ fromVersions = ", VERSIONS V";
+
+ if (queryStarted) {
+ updatedAfterQuery = " AND V.AID=R.AID AND V.VN IN (SELECT
MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.UPDATED_TIME>?";
+ } else {
+ updatedAfterQuery = " WHERE V.AID=R.AID AND V.VN IN
(SELECT MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.UPDATED_TIME>?";
+ queryStarted = true;
+ }
+
+ } else {
+
+ if (queryStarted) {
+ updatedAfterQuery = " AND V.UPDATED_TIME>?";
+ } else {
+ updatedAfterQuery = " WHERE V.UPDATED_TIME>?";
+ queryStarted = true;
+ }
+ }
+ }
+
+ String updatedBeforeQuery = "";
+ if (updatedBefore != null) {
+ if (fromVersions.equals("")) {
+ fromVersions = ", VERSIONS V";
+
+ if (queryStarted) {
+ updatedBeforeQuery = " AND V.AID=R.AID AND V.VN IN (SELECT
MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.UPDATED_TIME<?";
+ } else {
+ updatedBeforeQuery = " WHERE V.AID=R.AID AND V.VN IN
(SELECT MAX(V2.VN) FROM VERSIONS V2 WHERE R.AID=V2.AID) AND V.UPDATED_TIME<?";
+ queryStarted = true;
+ }
+
+ } else {
+
+ if (queryStarted) {
+ updatedBeforeQuery = " AND V.UPDATED_TIME<?";
+ } else {
+ updatedBeforeQuery = " WHERE V.UPDATED_TIME<?";
+ queryStarted = true;
+ }
}
}
@@ -282,7 +424,7 @@
}
}
- String sql = "SELECT R.PATH FROM ARTIFACTS R" + fromVersions +
fromComments + fromTags + pathQuery + authorQuery + versionQuery +
commentsQuery + tagsQuery;
+ String sql = "SELECT R.PATH FROM ARTIFACTS R" + fromVersions +
fromComments + fromTags + pathQuery + authorQuery + updaterNameQuery +
createdAfterQuery + createdBeforeQuery + updatedAfterQuery + updatedBeforeQuery
+ commentsQuery + tagsQuery;
return sql;
}
Modified:
trunk/registry/modules/webapps/src/main/webapp/admin/advanced-search.jsp
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/advanced-search.jsp
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/advanced-search.jsp
Thu Dec 13 10:01:11 2007
@@ -61,15 +61,23 @@
</td>
</tr>
- <tr>
+ <tr>
<td>Date</td>
<td>
- <div
style="width:200px;">Only find results updated</div>
- From:
<input type="text" name="fromDate" value="" id="#_fromDate"
style="width:100px;"/>
+ <div
style="width:200px;">Only find resource created</div>
+ From:
<input type="text" name="createdAfter" value="" id="#_cfromDate"
style="width:100px;"/>
- To:
<input type="text" name="toDate" value="" id="#_toDate" style="width:100px;"/>
+ To:
<input type="text" name="createdBefore" value="" id="#_ctoDate"
style="width:100px;"/>
+ </td>
+
+ </tr>
+ <tr>
+ <td>Date</td>
+ <td>
+ <div
style="width:200px;">Only find resources updated</div>
+ From:
<input type="text" name="updatedAfter" value="" id="#_ufromDate"
style="width:100px;"/>
-
+ To:
<input type="text" name="updatedBefore" value="" id="#_utoDate"
style="width:100px;"/>
</td>
</tr>
_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev