+++ /dev/null
-package org.argeo.slc.client.ui.dist.views;
-
-import org.argeo.slc.SlcException;
-import org.argeo.slc.SlcNames;
-import org.argeo.slc.SlcTypes;
-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 QueryBundlesForm extends AbstractQueryArtifactsView implements
- SlcNames, SlcTypes {
- // private static final Log log = LogFactory.getLog(QueryBundlesForm.class);
- public static final String ID = DistPlugin.PLUGIN_ID + ".queryBundlesForm";
-
- // widgets
- private Button executeBtn;
- private Text symbolicName;
- private Text importedPackage;
- private Text exportedPackage;
- 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);
-
- // Bundle Name
- lbl = new Label(parent, SWT.SINGLE);
- lbl.setText("Symbolic name");
- symbolicName = new Text(parent, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- symbolicName.setLayoutData(gd);
-
- // imported package
- lbl = new Label(parent, SWT.SINGLE);
- lbl.setText("Imported package");
- importedPackage = new Text(parent, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- importedPackage.setLayoutData(gd);
-
- // exported package
- lbl = new Label(parent, SWT.SINGLE);
- lbl.setText("Exported package");
- exportedPackage = new Text(parent, SWT.SINGLE | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- exportedPackage.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 = 6267263421349073712L;
-
- public void handleEvent(Event event) {
- refreshQuery();
- }
- };
- executeBtn.addListener(SWT.Selection, executeListener);
- }
-
- public void refreshQuery() {
- String queryStr = generateStatement();
- executeQuery(queryStr);
- bottom.layout();
- sashForm.layout();
- }
-
- private String generateStatement() {
- try {
- // shortcuts
- boolean hasFirstClause = false;
- boolean ipClause = importedPackage.getText() != null
- && !importedPackage.getText().trim().equals("");
- boolean epClause = exportedPackage.getText() != null
- && !exportedPackage.getText().trim().equals("");
-
- StringBuffer sb = new StringBuffer();
- // Select
- sb.append("select " + SBA + ".*, " + SAVB + ".* ");
- sb.append(" from " + SAVB);
-
- // join
- sb.append(" inner join ");
- sb.append(SBA);
- sb.append(" on isdescendantnode(" + SBA + ", " + SAVB + ") ");
- if (ipClause) {
- sb.append(" inner join ");
- sb.append(SIP);
- sb.append(" on isdescendantnode(" + SIP + ", " + SBA + ") ");
- }
-
- if (epClause) {
- sb.append(" inner join ");
- sb.append(SEP);
- sb.append(" on isdescendantnode(" + SEP + ", " + SBA + ") ");
- }
-
- // where
- sb.append(" where ");
- if (symbolicName.getText() != null
- && !symbolicName.getText().trim().equals("")) {
- sb.append(SBA + ".[" + SLC_SYMBOLIC_NAME + "] like '"
- + symbolicName.getText().replace('*', '%') + "'");
- hasFirstClause = true;
- }
-
- if (ipClause) {
- if (hasFirstClause)
- sb.append(" AND ");
- sb.append(SIP + ".[" + SLC_NAME + "] like '"
- + importedPackage.getText().replace('*', '%') + "'");
- hasFirstClause = true;
- }
-
- if (epClause) {
- if (hasFirstClause)
- sb.append(" AND ");
- sb.append(SEP + ".[" + SLC_NAME + "] like '"
- + exportedPackage.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