Package org.wso2.carbon.dataservices.ui.beans

Source Code of org.wso2.carbon.dataservices.ui.beans.Query

/*
* Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.wso2.carbon.dataservices.ui.beans;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.impl.llom.OMTextImpl;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamConstants;

import java.util.*;

public class Query extends DataServiceConfigurationElement {

  private String id;

  private Param[] params;

  private String sql;

  private String sparql;

  private String configToUse = "";

  private Result result;

  private ExcelQuery excel;

  private GSpreadQuery gSpread;

  private String inputEventTrigger;

  private String outputEventTrigger;

  private String scraperVariable;

  private boolean returnGeneratedKeys;
 
  private String keyColumns;

  private ArrayList<Property> properties = new ArrayList<Property>();
 
  private List<SQLDialect> sqlDialects = new ArrayList<SQLDialect>();

  public ArrayList<Property> getProperties() {
    return this.properties;
  }

  public void setProperties(ArrayList<Property> properties) {
    this.properties = properties;
  }

  public void addProperty(Property property) {
    addProperty(property.getName(), property.getValue());
  }

  public void addProperty(String name, Object value) {
    Property property = new Property(name, value);
    this.properties.add(property);
  }
 
  public void updateProperty(String name, String value) {
    Iterator<Property> propertyItr = properties.iterator();
    boolean updated = false;
    while (propertyItr.hasNext()) {
      Property property = propertyItr.next();
      if (property.getName().equals(name)) {
        if (value != null) {
          property.setValue(value);
        } else {
          property.setValue("");
        }
        updated = true;
        break;
      }
    }
    if (!updated) {
      this.addProperty(name, value);
    }
  }

  public Result getResult() {
    return result;
  }

  public void setResult(Result result) {
    this.result = result;
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public Param[] getParams() {
    return params;
  }

  public void setInputEventTrigger(String inputEventTrigger) {
    this.inputEventTrigger = inputEventTrigger;
  }

  public void setOutputEventTrigger(String outputEventTrigger) {
    this.outputEventTrigger = outputEventTrigger;
  }

  public String getInputEventTrigger() {
    return this.inputEventTrigger;
  }

  public String getOutputEventTrigger() {
    return this.outputEventTrigger;
  }

  public List<SQLDialect> getSqlDialects() {
    return sqlDialects;
  }

  public void setSqlDialects(List<SQLDialect> sqlDialects) {
    this.sqlDialects = sqlDialects;
  }
 
  public void addSqlDialects(String dialect, String value) {
    SQLDialect sqlDialect = new SQLDialect(dialect, value);
    this.sqlDialects.add(sqlDialect);
  }
 
  public SQLDialect removeSQLDialect(String dialect) {
    SQLDialect sqlDialect = new SQLDialect();
    for (int a = 0; a < sqlDialects.size(); a++) {
      sqlDialect = sqlDialects.get(a);
      if (sqlDialect.getDialect().equals(dialect)) {
        sqlDialect = sqlDialects.remove(a);
      }
    }
    return sqlDialect;
  }
 
  public SQLDialect updateSQLDialect(String edit, String dialect, String sql) {
    SQLDialect sqlDialect = new SQLDialect();
    for (int a = 0; a < sqlDialects.size(); a++) {
      sqlDialect = sqlDialects.get(a);
      if (sqlDialect.getDialect().equals(edit)) {
        sqlDialects.get(a).setDialect(dialect);
        sqlDialects.get(a).setSql(sql);
      }
    }
    return sqlDialect;
  }

  public boolean hasSQLDialects() {
    boolean hasSQLDialect = false;
    Iterator<SQLDialect> iterator = this.getSqlDialects().iterator();
    for (; iterator.hasNext();) {
      SQLDialect sqlDialect = iterator.next();
      if ((sqlDialect.getDialect() != null && sqlDialect.getDialect().trim().length() > 0)
          && ((sqlDialect.getSql() != null && sqlDialect.getSql().trim().length() > 0))) {
        hasSQLDialect = true;
        break;
      }
    }
    return hasSQLDialect;
  }
 
  public void setParams(Param[] paramsArray) {
    params = new Param[paramsArray.length];
    for (int a = 0; a < paramsArray.length; a++) {
      params[a] = paramsArray[a];
    }
  }

  public void addParam(Param newParam) {
    if (params != null) {
      Param[] newParams = new Param[params.length + 1];
      for (int a = 0; a < params.length; a++) {
        newParams[a] = params[a];
      }
      newParams[newParams.length - 1] = newParam;
      params = newParams;
    } else {
      Param[] newParams = new Param[1];
      newParams[0] = newParam;
      params = newParams;
      newParams[newParams.length - 1] = newParam;
    }
  }

  public void removeParam(Param removeParam) {
    if (params != null) {
      Param[] newParams = new Param[params.length - 1];
      ArrayList<Param> paramList = new ArrayList<Param>();
      Param param = new Param();
      paramList.add(param);
      paramList.remove(param);
      for (int a = 0; a < params.length - 1; a++) {
        newParams[a] = params[a];
      }
      if (newParams.length > 0) {
        newParams[newParams.length] = removeParam;
        params = newParams;
      }
    }
  }

  public Param getParam(String name) {
    if (params != null) {
      for (int a = 0; a < params.length; a++) {
        if (params[a].getName().equals(name)) {
          return params[a];
        }
      }
    }
    return null;
  }

  public Query() {
  }

  @SuppressWarnings("unchecked")
  private List<Validator> getValidators(Iterator<OMElement> valItr) {
    List<Validator> vals = new ArrayList<Validator>();
    OMElement valEl;
    String valElementName;
    Iterator<OMAttribute> attrItr;
    Map<String, String> propMap;
    OMAttribute attr;
    while (valItr.hasNext()) {
      valEl = valItr.next();
      valElementName = valEl.getLocalName();
      attrItr = valEl.getAllAttributes();
      propMap = new HashMap<String, String>();
      while (attrItr.hasNext()) {
        attr = attrItr.next();
        propMap.put(attr.getLocalName(), attr.getAttributeValue());
      }
      vals.add(new Validator(valElementName, propMap));
    }
    return vals;
  }

  @SuppressWarnings("unchecked")
  public Query(Iterator<OMElement> paramItr) {
    Param param;
    ArrayList<Param> paramList = new ArrayList<Param>();
    int ordinal = 0;
    while (paramItr.hasNext()) {
      ordinal++;
      OMElement paramElement = paramItr.next();

      // start: work-a-round to maintain backward compatibility
      String userSetOrdinalValue = paramElement.getAttributeValue(new QName("ordinal"));
      if (userSetOrdinalValue == null || userSetOrdinalValue.trim().length() == 0) {
        userSetOrdinalValue = String.valueOf(ordinal);
      }
      // end: work-a-round to maintain backward compatibility

      param = new Param(paramElement.getAttributeValue(new QName("name")),
          paramElement.getAttributeValue(new QName("sqlType")),
          paramElement.getAttributeValue(new QName("type")), userSetOrdinalValue,
          paramElement.getAttributeValue(new QName("defaultValue")),
          this.getValidators(paramElement.getChildren()));
      paramList.add(param);
    }
    try {
      Param[] params = new Param[paramList.size()];
      paramList.toArray(params);
      // Param[] params = (Param[])paramList.toArray();
      setParams(params);
    } catch (Exception e) {
      e.printStackTrace();
    }

  }

  public String getSql() {
    return sql;
  }

  public void setSql(String sql) {
    this.sql = sql;
  }

  public String getSparql() {
    return sparql;
  }

  public String getScraperVariable() {
    return scraperVariable;
  }

  public void setScraperVariable(String scraperVariable) {
    this.scraperVariable = scraperVariable;
  }

  public void setSparql(String sparql) {
    this.sparql = sparql;
  }

  public String getConfigToUse() {
    return configToUse;
  }

  public void setConfigToUse(String configToUse) {
    this.configToUse = configToUse;
  }

  public void setExcel(ExcelQuery excel) {
    this.excel = excel;
  }

  public ExcelQuery getExcel() {
    return excel;
  }

  public boolean isReturnGeneratedKeys() {
    return returnGeneratedKeys;
  }

  public void setReturnGeneratedKeys(boolean returnGeneratedKeys) {
    this.returnGeneratedKeys = returnGeneratedKeys;
  }
 
  public String getKeyColumns() {
    return keyColumns;
  }
 
  public void setKeyColumns(String keyColumns) {
    this.keyColumns = keyColumns;
  }

  public boolean hasProperties() {
    boolean hasProperty = false;
    Iterator<Property> iterator = this.getProperties().iterator();
    for (; iterator.hasNext();) {
      Property property = iterator.next();
      if (property.getValue() != null && !property.getValue().equals("")) {
        hasProperty = true;
        break;
      }
    }
    return hasProperty;
  }

  public OMElement buildXML() {
    OMFactory fac = OMAbstractFactory.getOMFactory();
    OMElement queryEl = fac.createOMElement("query", null);
    if (this.getId() != null) {
      queryEl.addAttribute("id", this.getId(), null);
    }
    if (this.getConfigToUse() != null) {
      queryEl.addAttribute("useConfig", this.getConfigToUse(), null);
    }
    if (this.getInputEventTrigger() != null && this.getInputEventTrigger().trim().length() > 0) {
      queryEl.addAttribute("input-event-trigger", this.getInputEventTrigger().trim(), null);
    }
    if (this.getInputEventTrigger() != null && this.getInputEventTrigger().trim().length() > 0) {
      queryEl.addAttribute("input-event-trigger", this.getInputEventTrigger().trim(), null);
    }
    if (this.isReturnGeneratedKeys() == true) {
      queryEl.addAttribute("returnGeneratedKeys", String.valueOf(this.isReturnGeneratedKeys()), null);
    }
    if (this.getKeyColumns() != null && this.getKeyColumns().trim().length() > 0) {
      queryEl.addAttribute("keyColumns", this.getKeyColumns().trim(), null);
    }
    if (this.getSql() != null) {
      OMElement sqlEl = fac.createOMElement("sql", null);
      sqlEl.setText(this.getSql().trim());
      queryEl.addChild(sqlEl);
    } else if (this.getSparql() != null) {
      OMElement sparqlEl = fac.createOMElement("sparql", null);
      OMTextImpl omText = (OMTextImpl) fac.createOMText(this.getSparql());
      omText.setType(XMLStreamConstants.CDATA);
      sparqlEl.addChild(omText)
      queryEl.addChild(sparqlEl);
    } else if (this.getExcel() != null) {
      queryEl.addChild(this.getExcel().buildXML());
    } else if (this.getScraperVariable() != null) {
      OMElement scraperEl = fac.createOMElement("scraperVariable", null);
      scraperEl.setText(this.getScraperVariable());
      queryEl.addChild(scraperEl);
    } else if (this.getGSpread() != null) {
      queryEl.addChild(this.getGSpread().buildXML());
    }
    if (hasProperties()) {
      OMElement propEl = fac.createOMElement("properties", null);
      Iterator<Property> iterator = this.getProperties().iterator();
      while (iterator.hasNext()) {
        Property property = iterator.next();
        if (property.getValue() != null && !property.getValue().equals("")) {
            propEl.addChild(property.buildXML());
        }
      }
      queryEl.addChild(propEl);
    }
    if (hasSQLDialects()) {
      Iterator<SQLDialect> iterator = this.getSqlDialects().iterator();
      while (iterator.hasNext()) {
        SQLDialect sqlDialect = iterator.next();
        queryEl.addChild(sqlDialect.buildXML());
      }
    }
    if (this.getResult() != null
        && (this.getResult().getAttributes().size() > 0
            || this.getResult().getElements().size() > 0 || this.getResult()
            .getCallQueryGroups().size() > 0)) {
      queryEl.addChild(this.getResult().buildXML());
    }
    if (this.getParams() != null) {
      for (int a = 0; a < this.getParams().length; a++) {
        Param param = this.getParams()[a];
        queryEl.addChild(param.buildXML());
      }
    }

    return queryEl;
  }

  public GSpreadQuery getGSpread() {
    return gSpread;
  }

  public void setGSpread(GSpreadQuery gSpread) {
    this.gSpread = gSpread;
  }

}
TOP

Related Classes of org.wso2.carbon.dataservices.ui.beans.Query

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.