/*
* OneCMDB, an open source configuration management project.
* Copyright 2007, Lokomo Systems AB, and individual contributors
* as indicated by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.onecmdb.ui.gwt.toolkit.server;
import java.util.ArrayList;
import java.util.List;
import org.onecmdb.core.IRfcResult;
import org.onecmdb.core.internal.authorization.RBACSession;
import org.onecmdb.core.internal.authorization.Role;
import org.onecmdb.core.internal.model.QueryCriteria;
import org.onecmdb.core.utils.bean.AttributeBean;
import org.onecmdb.core.utils.bean.CiBean;
import org.onecmdb.core.utils.bean.ValueBean;
import org.onecmdb.core.utils.wsdl.RFCBean;
import org.onecmdb.core.utils.wsdl.TransactionBean;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_AttributeBean;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_CiBean;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_QueryCriteria;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_RBACSession;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_RFCBean;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_RfcResult;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_TransactionBean;
import org.onecmdb.ui.gwt.toolkit.client.model.onecmdb.GWT_ValueBean;
public class GWT_Translator {
// Convert between
public static CiBean convert(GWT_CiBean gwtBean) {
if (gwtBean == null) {
return(null);
}
CiBean bean = new CiBean();
// Using reflection???
// Noop not now...
// Internal states
bean.setAlias(gwtBean.getAlias());
bean.setId(gwtBean.getId());
bean.setDerivedFrom(gwtBean.getDerivedFrom());
bean.setDescription(gwtBean.getDescription());
bean.setDisplayName(gwtBean.getDisplayName());
bean.setDisplayNameExpression(gwtBean.getDisplayNameExpression());
bean.setTemplate(gwtBean.isTemplate());
bean.setGroup(gwtBean.getGroup());
// Attributes.
for (GWT_AttributeBean aBean : (List<GWT_AttributeBean>)gwtBean.getAttributes()) {
bean.addAttribute(convert(aBean));
}
// Values..
for (GWT_ValueBean vBean: (List<GWT_ValueBean>)gwtBean.getAttributeValues()) {
bean.addAttributeValue(convert(vBean));
}
return(bean);
}
private static ValueBean convert(GWT_ValueBean value) {
if (value == null) {
return(null);
}
ValueBean vBean = new ValueBean();
vBean.setAlias(value.getAlias());
vBean.setComplexValue(value.isComplexValue());
vBean.setId(value.getId());
vBean.setValueBean(convert(value.getValueBean()));
vBean.setValue(value.getValue());
return(vBean);
}
private static AttributeBean convert(GWT_AttributeBean attr) {
if (attr == null) {
return(null);
}
AttributeBean aBean = new AttributeBean();
aBean.setAlias(attr.getAlias());
aBean.setComplexType(attr.isComplexType());
aBean.setDerived(attr.isDerived());
aBean.setDescription(attr.getDescription());
aBean.setDisplayName(attr.getDisplayName());
aBean.setId(attr.getId());
aBean.setIdAsString(attr.getIdAsString());
aBean.setMaxOccurs(attr.getMaxOccurs());
aBean.setMinOccurs(attr.getMinOccurs());
aBean.setRefType(attr.getRefType());
aBean.setType(attr.getType());
return(aBean);
}
public static QueryCriteria convert(GWT_QueryCriteria gwtCrit) {
if (gwtCrit == null) {
return(null);
}
QueryCriteria crit = new QueryCriteria();
crit.setCiAlias(gwtCrit.getCiAlias());
crit.setCiId(gwtCrit.getCiId());
crit.setFirstResult(gwtCrit.getFirstResult());
crit.setMatchAttribute(gwtCrit.isMatchAttribute());
crit.setMatchAttributeInstances(gwtCrit.isMatchAttributeInstances());
crit.setMatchAttributeTemplates(gwtCrit.isMatchAttributeTemplates());
crit.setMatchCi(gwtCrit.isMatchCi());
crit.setMatchCiInstances(gwtCrit.isMatchCiInstances());
crit.setMatchCiTemplates(gwtCrit.isMatchCiTemplates());
crit.setMaxResult(gwtCrit.getMaxResult());
crit.setOffspringOfAlias(gwtCrit.getOffspringOfAlias());
crit.setOffspringOfId(gwtCrit.getOffspringOfId());
crit.setText(gwtCrit.getText());
crit.setTextMatchAlias(gwtCrit.isTextMatchAlias());
crit.setTextMatchDescription(gwtCrit.isTextMatchDescription());
crit.setTextMatchValue(gwtCrit.isTextMatchValue());
crit.setOffspringDepth(gwtCrit.getOffspringDepth());
crit.setMatchType(gwtCrit.getMatchType());
crit.setMatchCiPath(gwtCrit.getMatchCiPath());
crit.setOrderAscending(gwtCrit.isOrderAscending());
crit.setOrderAttAlias(gwtCrit.getOrderAttAlias());
crit.setOrderType(gwtCrit.getOrderType());
return(crit);
}
// Convert between
public static GWT_CiBean convert(CiBean gwtBean) {
if (gwtBean == null) {
return(null);
}
GWT_CiBean bean = new GWT_CiBean();
// Using reflection???
// Noop not now...
// Internal states
bean.setAlias(gwtBean.getAlias());
bean.setId(gwtBean.getId());
bean.setDerivedFrom(gwtBean.getDerivedFrom());
bean.setDescription(gwtBean.getDescription());
bean.setDisplayName(gwtBean.getDisplayName());
bean.setDisplayNameExpression(gwtBean.getDisplayNameExpression());
bean.setTemplate(gwtBean.isTemplate());
bean.setGroup(gwtBean.getGroup());
bean.setLastModified(gwtBean.getLastModified());
bean.setCreateDate(gwtBean.getCreateDate());
// Attributes.
for (AttributeBean aBean : gwtBean.getAttributes()) {
bean.addAttribute(convert(aBean));
}
// Values..
for (ValueBean vBean: gwtBean.getAttributeValues()) {
bean.addAttributeValue(convert(vBean));
}
return(bean);
}
private static GWT_ValueBean convert(ValueBean value) {
if (value == null) {
return(null);
}
GWT_ValueBean vBean = new GWT_ValueBean();
vBean.setAlias(value.getAlias());
vBean.setComplexValue(value.isComplexValue());
//vBean.setId(value.getId());
vBean.setIdAsString(value.getIdAsString());
vBean.setValueBean(convert(value.getValueBean()));
vBean.setValue(value.getValue());
vBean.setLastModified(value.getLastModified());
return(vBean);
}
public static GWT_AttributeBean convert(AttributeBean attr) {
if (attr == null) {
return(null);
}
GWT_AttributeBean aBean = new GWT_AttributeBean();
aBean.setAlias(attr.getAlias());
aBean.setComplexType(attr.isComplexType());
aBean.setDerived(attr.isDerived());
aBean.setDescription(attr.getDescription());
aBean.setDisplayName(attr.getDisplayName());
aBean.setId(attr.getId());
aBean.setMaxOccurs(attr.getMaxOccurs());
aBean.setMinOccurs(attr.getMinOccurs());
aBean.setRefType(attr.getRefType());
aBean.setType(attr.getType());
aBean.setLastModified(attr.getLastModified());
aBean.setCreateDate(attr.getCreateDate());
return(aBean);
}
public static GWT_QueryCriteria convert(QueryCriteria gwtCrit) {
GWT_QueryCriteria crit = new GWT_QueryCriteria();
crit.setCiAlias(gwtCrit.getCiAlias());
crit.setCiId(gwtCrit.getCiId());
crit.setFirstResult(gwtCrit.getFirstResult());
crit.setMatchAttribute(gwtCrit.isMatchAttribute());
crit.setMatchAttributeInstances(gwtCrit.isMatchAttributeInstances());
crit.setMatchAttributeTemplates(gwtCrit.isMatchAttributeTemplates());
crit.setMatchCi(gwtCrit.isMatchCi());
crit.setMatchCiInstances(gwtCrit.isMatchCiInstances());
crit.setMatchCiTemplates(gwtCrit.isMatchAttributeTemplates());
crit.setMaxResult(gwtCrit.getMaxResult());
crit.setOffspringOfAlias(gwtCrit.getOffspringOfAlias());
crit.setOffspringOfId(gwtCrit.getOffspringOfId());
crit.setText(gwtCrit.getText());
crit.setTextMatchAlias(gwtCrit.isTextMatchAlias());
crit.setTextMatchDescription(gwtCrit.isTextMatchDescription());
crit.setTextMatchValue(gwtCrit.isTextMatchValue());
crit.setOffspringDepth(gwtCrit.getOffspringDepth());
crit.setMatchType(gwtCrit.getMatchType());
crit.setMatchCiPath(gwtCrit.getMatchCiPath());
crit.setOrderAscending(gwtCrit.isOrderAscending());
crit.setOrderAttAlias(gwtCrit.getOrderAttAlias());
crit.setOrderType(gwtCrit.getOrderType());
return(crit);
}
public static GWT_CiBean[] convert(CiBean[] beans) {
if (beans == null) {
return(null);
}
GWT_CiBean gwtBeans[] = new GWT_CiBean[beans.length];
int index = 0;
for (CiBean bean: beans) {
gwtBeans[index++] = convert(bean);
}
return(gwtBeans);
}
public static CiBean[] convert(GWT_CiBean[] beans) {
if (beans == null) {
return(null);
}
CiBean gwtBeans[] = new CiBean[beans.length];
int index = 0;
for (GWT_CiBean bean: beans) {
gwtBeans[index++] = convert(bean);
}
return(gwtBeans);
}
public static GWT_RfcResult convert(IRfcResult from) {
GWT_RfcResult to = new GWT_RfcResult();
to.setRejectCause(from.getRejectCause());
to.setRejected(from.isRejected());
to.setTxId(from.getTxId());
return(to);
}
public GWT_RFCBean convert(RFCBean from) {
if (from == null) {
return(null);
}
GWT_RFCBean to = new GWT_RFCBean();
to.setId(from.getId());
to.setIssuer(from.getIssuer());
to.setSummary(from.getSummary());
to.setTargetCIId(from.getTargetCIId());
to.setTargetId(from.getTargetId());
to.setTransactionId(from.getTransactionId());
to.setTs(from.getTs());
return(to);
}
public GWT_TransactionBean convert(TransactionBean from) {
if (from == null) {
return(null);
}
GWT_TransactionBean to = new GWT_TransactionBean();
to.setBeginTs(from.getBeginTs());
to.setCiAdded(from.getCiAdded());
to.setCiDeleted(from.getCiDeleted());
to.setCiModified(from.getCiModified());
to.setEndedTs(from.getEndedTs());
to.setId(from.getId());
to.setInsertTs(from.getInsertTs());
to.setIssuer(from.getIssuer());
to.setName(from.getName());
to.setRejectCause(from.getRejectCause());
to.setStatus(from.getStatus());
return(to);
}
public static GWT_RBACSession convert(RBACSession rbac) {
GWT_RBACSession gwtRBAC = new GWT_RBACSession();
gwtRBAC.setWrite(rbac.canWrite());
List<String> roleNames = new ArrayList<String>();
for (Role r : rbac.getRoles()) {
roleNames.add(r.getName());
}
gwtRBAC.setRoles(roleNames);
for (String group : rbac.groupNames()) {
if (rbac.canRead(group)) {
gwtRBAC.addRead(group);
}
if (rbac.canWrite(group)) {
gwtRBAC.addWrite(group);
}
if (rbac.canCreate(group)) {
gwtRBAC.addCreate(group);
}
if (rbac.canDelete(group)) {
gwtRBAC.addDelete(group);
}
}
return(gwtRBAC);
}
}