]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/views/QueryArtifactsForm.java
Clarify SLC project structure.
[gpl/argeo-slc.git] / cms / org.argeo.slc.client.ui.dist / src / org / argeo / slc / client / ui / dist / views / QueryArtifactsForm.java
diff --git a/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/views/QueryArtifactsForm.java b/cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/views/QueryArtifactsForm.java
new file mode 100644 (file)
index 0000000..9ce41d4
--- /dev/null
@@ -0,0 +1,156 @@
+package org.argeo.slc.client.ui.dist.views;
+
+import org.argeo.slc.SlcException;
+import org.argeo.slc.SlcNames;
+import org.argeo.slc.client.ui.dist.DistPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+/** Query SLC Repo to get some artifacts given some predefined parameters */
+public class QueryArtifactsForm extends AbstractQueryArtifactsView implements
+               SlcNames {
+       // private static final Log log = LogFactory.getLog(QueryArtifactsForm.class);
+       public static final String ID = DistPlugin.PLUGIN_ID + ".queryArtifactsForm";
+
+       // widgets
+       private Button executeBtn;
+       private Text groupId;
+       private Text artifactId;
+       private Text version;
+       private SashForm sashForm;
+
+       private Composite top, bottom;
+
+       @Override
+       public void createPartControl(Composite parent) {
+
+               sashForm = new SashForm(parent, SWT.VERTICAL);
+               sashForm.setSashWidth(4);
+               // Enable the different parts to fill the whole page when the tab is
+               // maximized
+               sashForm.setLayout(new FillLayout());
+
+               top = new Composite(sashForm, SWT.NONE);
+               top.setLayout(new GridLayout(1, false));
+
+               bottom = new Composite(sashForm, SWT.NONE);
+               bottom.setLayout(new GridLayout(1, false));
+
+               sashForm.setWeights(new int[] { 25, 75 });
+
+               createQueryForm(top);
+               createResultPart(bottom);
+       }
+
+       public void createQueryForm(Composite parent) {
+               Label lbl;
+               GridData gd;
+
+               GridLayout gl = new GridLayout(2, false);
+               gl.marginTop = 5;
+               parent.setLayout(gl);
+
+               // lbl = new Label(parent, SWT.SINGLE);
+               // lbl.setText("Query by coordinates");
+               // gd = new GridData();
+               // gd.horizontalSpan = 2;
+               // lbl.setLayoutData(gd);
+
+               // Group ID
+               lbl = new Label(parent, SWT.SINGLE);
+               lbl.setText("Group ID");
+               groupId = new Text(parent, SWT.SINGLE | SWT.BORDER);
+               gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.grabExcessHorizontalSpace = true;
+               groupId.setLayoutData(gd);
+
+               // Artifact ID
+               lbl = new Label(parent, SWT.SINGLE);
+               lbl.setText("Artifact ID");
+               artifactId = new Text(parent, SWT.SINGLE | SWT.BORDER);
+               gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.grabExcessHorizontalSpace = true;
+               artifactId.setLayoutData(gd);
+
+               // Version
+               lbl = new Label(parent, SWT.SINGLE);
+               lbl.setText("Version");
+               version = new Text(parent, SWT.SINGLE | SWT.BORDER);
+               gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.grabExcessHorizontalSpace = true;
+               version.setLayoutData(gd);
+
+               executeBtn = new Button(parent, SWT.PUSH);
+               executeBtn.setText("Search");
+               gd = new GridData();
+               gd.horizontalSpan = 2;
+               executeBtn.setLayoutData(gd);
+
+               Listener executeListener = new Listener() {
+                       private static final long serialVersionUID = 7161585477628774129L;
+
+                       public void handleEvent(Event event) {
+                               refreshQuery();
+                       }
+               };
+               executeBtn.addListener(SWT.Selection, executeListener);
+       }
+
+       public void refreshQuery() {
+               String queryStr = generateSelectStatement() + generateFromStatement()
+                               + generateWhereStatement();
+               executeQuery(queryStr);
+               bottom.layout();
+               sashForm.layout();
+       }
+
+       private String generateWhereStatement() {
+               try {
+                       boolean hasFirstClause = false;
+                       StringBuffer sb = new StringBuffer(" where ");
+
+                       if (groupId.getText() != null
+                                       && !groupId.getText().trim().equals("")) {
+                               sb.append("[" + SLC_GROUP_ID + "] like '"
+                                               + groupId.getText().replace('*', '%') + "'");
+                               hasFirstClause = true;
+                       }
+
+                       if (artifactId.getText() != null
+                                       && !artifactId.getText().trim().equals("")) {
+                               if (hasFirstClause)
+                                       sb.append(" AND ");
+                               sb.append("[" + SLC_ARTIFACT_ID + "] like '"
+                                               + artifactId.getText().replace('*', '%') + "'");
+                               hasFirstClause = true;
+                       }
+
+                       if (version.getText() != null
+                                       && !version.getText().trim().equals("")) {
+                               if (hasFirstClause)
+                                       sb.append(" AND ");
+                               sb.append("[" + SLC_ARTIFACT_VERSION + "] like '"
+                                               + version.getText().replace('*', '%') + "'");
+                       }
+
+                       return sb.toString();
+               } catch (Exception e) {
+                       throw new SlcException(
+                                       "Cannot generate where statement to get artifacts", e);
+               }
+       }
+
+       @Override
+       public void setFocus() {
+               executeBtn.setFocus();
+       }
+}
\ No newline at end of file