/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap;
import java.util.Properties;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.osgi.util.NLS;
import org.teiid.designer.core.ModelerCore;
import org.teiid.designer.modelgenerator.wsdl.model.Operation;
import org.teiid.designer.modelgenerator.wsdl.ui.Messages;
import org.teiid.designer.query.IProcedureService;
import org.teiid.designer.query.IQueryService;
import org.teiid.designer.query.proc.wsdl.IWsdlResponseInfo;
/**
* @since 8.0
*/
public class ResponseInfo extends ProcedureInfo implements IWsdlResponseInfo {
public ResponseInfo(Operation operation, ProcedureGenerator generator) {
super(operation, ProcedureType.RESPONSE, generator);
setProcedureName(getDefaultProcedureName());
}
@Override
public String getDefaultProcedureName() {
return getOperation().getName() + "_response";//$NON-NLS-1$
}
@Override
public IStatus validate() {
MultiStatus status = new MultiStatus(ProcedureGenerator.PLUGIN_ID, 0, null, null);
// Go through objects and look for problems
if (getProcedureName() == null) {
status.add(new Status(IStatus.ERROR, ProcedureGenerator.PLUGIN_ID,
NLS.bind(Messages.Error_Operation_0_ResponseProcedureNameCannotBeNullOrEmpty,
getOperation().getName())));
}
IStatus nameStatus = getGenerator().getNameStatus(getProcedureName());
if (nameStatus.getSeverity() > IStatus.INFO) {
status.merge(nameStatus);
}
if( getBodyColumnInfoList().length == 0 ) {
status.add(new Status(IStatus.ERROR, ProcedureGenerator.PLUGIN_ID,
NLS.bind(Messages.Error_NoColumnsDefinedForResponseProcedureForOperation_0,
getOperation().getName(), getOperation().getName())));
}
// Look at all element xpaths
for( ColumnInfo info : getBodyColumnInfoList() ) {
if( info.getStatus().getSeverity() > IStatus.INFO) {
return info.getStatus();
}
}
setChanged(false);
return status;
}
@Override
public String getSqlStringTemplate() {
return getSqlString(new Properties());
}
@Override
public String getSqlString(Properties properties) {
IQueryService queryService = ModelerCore.getTeiidQueryService();
IProcedureService procedureService = queryService.getProcedureService();
return procedureService.getSQLStatement(this, properties);
}
}