blob: 851bff1005ff6f1000c874f7ddf49ea73b889f9d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.ode.bpel.memdao;
import org.apache.ode.bpel.dao.CorrelationSetDAO;
import org.apache.ode.bpel.dao.PartnerLinkDAO;
import org.apache.ode.bpel.dao.ScopeDAO;
import org.apache.ode.bpel.dao.ScopeStateEnum;
import org.apache.ode.bpel.dao.XmlDataDAO;
import org.apache.ode.bpel.evt.BpelEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* A very simple, in-memory implementation of the {@link ScopeDAO} interface.
*/
class ScopeDaoImpl extends DaoBaseImpl implements ScopeDAO {
private String _type;
private ScopeStateEnum _state;
private Map<String, XmlDataDAO> _variables = new HashMap<String, XmlDataDAO>();
private Map<String, CorrelationSetDAO> _correlations = new HashMap<String, CorrelationSetDAO>();
private Map<Integer, PartnerLinkDAO> _eprs = new HashMap<Integer, PartnerLinkDAO>();
private ProcessInstanceDaoImpl _processInstance;
private org.apache.ode.bpel.dao.ScopeDAO _parent;
private Long _instanceId;
private int _scopeModelId;
/**
* Constructor.
* @param owner process instance owner
* @param parent scope parent
* @param type scope type (name)
* @param scopeModelId
*/
public ScopeDaoImpl(ProcessInstanceDaoImpl owner, ScopeDAO parent, String type, int scopeModelId) {
_processInstance = owner;
_parent = parent;
_type = type;
_instanceId = IdGen.newScopeId();
_scopeModelId = scopeModelId;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getCorrelationSet(java.lang.String)
*/
public CorrelationSetDAO getCorrelationSet(String corrSetName) {
CorrelationSetDAO corr = _correlations.get(corrSetName);
if (corr == null) {
corr = new CorrelationSetDaoImpl(corrSetName, this);
_correlations.put(corrSetName, corr);
}
return corr;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getParentScope()
*/
public org.apache.ode.bpel.dao.ScopeDAO getParentScope() {
return _parent;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getProcessInstance()
*/
public org.apache.ode.bpel.dao.ProcessInstanceDAO getProcessInstance() {
return _processInstance;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#setState(org.apache.ode.bpel.dao.ScopeStateEnum)
*/
public void setState(org.apache.ode.bpel.dao.ScopeStateEnum state) {
_state = state;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getState()
*/
public org.apache.ode.bpel.dao.ScopeStateEnum getState() {
return _state;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getName()
*/
public String getName() {
return _type;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getVariable(java.lang.String)
*/
public XmlDataDAO getVariable(String varName) {
XmlDataDAO v = _variables.get(varName);
if (v == null) {
v = new XmlDataDaoImpl(this,varName);
_variables.put(varName, v);
}
return v;
}
public Collection<CorrelationSetDAO> getCorrelationSets() {
return _correlations.values();
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getScopeInstanceId()
*/
public Long getScopeInstanceId() {
return _instanceId;
}
/**
* @see org.apache.ode.bpel.dao.ScopeDAO#getModelId()
*/
public int getModelId() {
return _scopeModelId;
}
public Collection<ScopeDAO> getChildScopes() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException();
}
public Collection<XmlDataDAO> getVariables() {
return _variables.values();
}
public List<BpelEvent> listEvents() {
// TODO: provide a better implementation.
return new ArrayList<BpelEvent>();
}
public PartnerLinkDAO createPartnerLink(int plinkModelId, String pLinkName, String myRole, String partnerRole) {
PartnerLinkDAOImpl eprImpl = new PartnerLinkDAOImpl();
eprImpl.setPartnerLinkModelId(plinkModelId);
eprImpl.setPartnerLinkName(pLinkName);
eprImpl.setMyRoleName(myRole);
eprImpl.setPartnerRoleName(partnerRole);
_eprs.put(plinkModelId, eprImpl);
return eprImpl;
}
public PartnerLinkDAO getPartnerLink(int modelId) {
return _eprs.get(modelId);
}
public Collection<PartnerLinkDAO> getPartnerLinks() {
return _eprs.values();
}
}