/webportal/src/main/java/org/ala/spatial/data/QueryUtil.java

http://alageospatialportal.googlecode.com/ · Java · 88 lines · 54 code · 8 blank · 26 comment · 25 complexity · aa41b1ae4e3b122fb81aee532778462b MD5 · raw file

  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package org.ala.spatial.data;
  6. import au.org.emii.portal.composer.MapComposer;
  7. import java.util.ArrayList;
  8. import java.util.Hashtable;
  9. import org.ala.spatial.util.SelectedArea;
  10. import org.ala.spatial.util.UserData;
  11. /**
  12. *
  13. * @author Adam
  14. */
  15. public class QueryUtil {
  16. /**
  17. * Get a new Query by an lsid or upload id.
  18. *
  19. * @param id
  20. * @param mc
  21. * @return
  22. */
  23. public static Query get(String id, MapComposer mc, boolean forMapping, boolean[] geospatialKosher) {
  24. Query q = null;
  25. //search within uploaded records
  26. if (mc != null) {
  27. Hashtable<String, UserData> htUserSpecies = (Hashtable) mc.getSession().getAttribute("userpoints");
  28. if (htUserSpecies != null) {
  29. UserData ud = htUserSpecies.get(id);
  30. if (ud != null) {
  31. q = ud.getQuery();
  32. }
  33. }
  34. }
  35. //treat as lsid
  36. if (q == null) {
  37. q = new BiocacheQuery(id, null, null, null, forMapping, geospatialKosher);
  38. }
  39. return q;
  40. }
  41. /**
  42. * Creates a new query based on the supplied field and values
  43. * @param field
  44. * @param value
  45. * @param mc
  46. * @param forMapping
  47. * @param geospatialKosher
  48. * @return
  49. */
  50. public static Query get(String field, String value, MapComposer mc, boolean forMapping, boolean[] geospatialKosher){
  51. return new BiocacheQuery(null, null, field+":\""+value+"\"", null, forMapping, geospatialKosher );
  52. }
  53. public static Query queryFromSelectedArea(Query baseQuery, SelectedArea sa, boolean forMapping, boolean[] geospatialKosher) {
  54. return queryFromSelectedArea(baseQuery, sa, null, forMapping, geospatialKosher);
  55. }
  56. public static Query queryFromSelectedArea(Query baseQuery, SelectedArea sa, String extraParams, boolean forMapping, boolean[] geospatialKosher) {
  57. if (sa == null) {
  58. return baseQuery.newWkt(null, forMapping);
  59. }
  60. Query q = null;
  61. if (sa.getMapLayer() != null && (baseQuery == null || !(baseQuery instanceof UploadQuery))) {
  62. if (sa.getMapLayer().getData("facets") != null) {
  63. ArrayList<Facet> facets = (ArrayList<Facet>) sa.getMapLayer().getData("facets");
  64. if (baseQuery == null) {
  65. q = new BiocacheQuery(null, null, extraParams, facets, forMapping, geospatialKosher);
  66. } else {
  67. q = baseQuery.newFacets(facets, forMapping);
  68. }
  69. }
  70. }
  71. if (q == null) {
  72. if (baseQuery == null) {
  73. q = new BiocacheQuery(null, sa.getWkt(), extraParams, null, false, geospatialKosher);
  74. } else {
  75. q = baseQuery.newWkt(sa.getWkt(), forMapping);
  76. }
  77. }
  78. return q;
  79. }
  80. }