/*
* Copyright 2001-2008 Geert Bevin (gbevin[remove] at uwyn dot com)
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: DataLinkDeclaration.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.engine;
class DataLinkDeclaration
{
private String mSrcOutput = null;
private String mSrcOutbean = null;
private String mDestId = null;
private boolean mSnapback = false;
private String mDestInput = null;
private String mDestInbean = null;
private FlowLinkBuilder mFlowLinkBuilder = null;
DataLinkDeclaration(String srcOutput, String srcOutbean, String destId, boolean snapback, String destInput, String destInbean, FlowLinkBuilder flowlink)
{
if (srcOutput != null && 0 == srcOutput.length()) srcOutput = null;
if (srcOutbean != null && 0 == srcOutbean.length()) srcOutbean = null;
if (destId != null && 0 == destId.length()) destId = null;
if (destInput != null && 0 == destInput.length()) destInput = null;
if (destInbean != null && 0 == destInbean.length()) destInbean = null;
assert srcOutput != null || srcOutbean != null;
assert (srcOutput != null && srcOutput.length() > 0) || (srcOutbean != null && srcOutbean.length() > 0);
assert destId != null || snapback;
assert null == destId || !snapback;
assert destInput != null || destInbean != null;
assert (destInput != null && destInput.length() > 0) || (destInbean != null && destInbean.length() > 0);
mSrcOutput = srcOutput;
mSrcOutbean = srcOutbean;
mDestId = destId;
mSnapback = snapback;
mDestInput = destInput;
mDestInbean = destInbean;
mFlowLinkBuilder = flowlink;
}
String getSrcOutput()
{
return mSrcOutput;
}
String getSrcOutbean()
{
return mSrcOutbean;
}
String getDestId()
{
return mDestId;
}
void makeAbsoluteDestId(SiteBuilder builder)
{
if (mDestId != null)
{
mDestId = builder.makeAbsoluteElementId(mDestId);
mDestId = Site.getCanonicalId(mDestId);
}
}
String getDestInput()
{
return mDestInput;
}
String getDestInbean()
{
return mDestInbean;
}
boolean transfersBean()
{
return !(mSrcOutput != null && mDestInput != null);
}
boolean isSnapback()
{
return mSnapback;
}
FlowLink getFlowLink()
{
if (null == mFlowLinkBuilder)
{
return null;
}
return mFlowLinkBuilder.getFlowLinkDeclaration().getFlowLink();
}
FlowLinkDeclaration getFlowLinkDeclaration()
{
if (null == mFlowLinkBuilder)
{
return null;
}
return mFlowLinkBuilder.getFlowLinkDeclaration();
}
public int hashCode()
{
int srcoutput = 1;
int srcoutbean = 1;
int destid = 1;
int snapback = 1;
int destinput = 1;
int destinbean = 1;
int flowlink = 1;
if (mSrcOutput != null)
{
srcoutput = mSrcOutput.hashCode();
}
if (mSrcOutbean != null)
{
srcoutbean = mSrcOutbean.hashCode();
}
if (mDestId != null)
{
destid = mDestId.hashCode();
}
if (mSnapback)
{
snapback = 2;
}
if (mDestInput != null)
{
destinput = mDestInput.hashCode();
}
if (mDestInbean != null)
{
destinbean = mDestInbean.hashCode();
}
if (mFlowLinkBuilder != null)
{
flowlink = mFlowLinkBuilder.hashCode();
}
return srcoutput*srcoutbean*destid*snapback*destinput*destinbean*flowlink;
}
public boolean equals(Object other)
{
if (this == other)
{
return true;
}
if (null == other)
{
return false;
}
if (!(other instanceof DataLinkDeclaration))
{
return false;
}
DataLinkDeclaration other_datalink = (DataLinkDeclaration)other;
if (other_datalink.getSrcOutput() != null || getSrcOutput() != null)
{
if (null == other_datalink.getSrcOutput() || null == getSrcOutput())
{
return false;
}
else if (!other_datalink.getSrcOutput().equals(getSrcOutput()))
{
return false;
}
}
if (other_datalink.getSrcOutbean() != null || getSrcOutbean() != null)
{
if (null == other_datalink.getSrcOutbean() || null == getSrcOutbean())
{
return false;
}
else if (!other_datalink.getSrcOutbean().equals(getSrcOutbean()))
{
return false;
}
}
if (!other_datalink.getDestId().equals(getDestId()))
{
return false;
}
if (other_datalink.isSnapback() != isSnapback())
{
return false;
}
if (other_datalink.getDestInput() != null || getDestInput() != null)
{
if (null == other_datalink.getDestInput() || null == getDestInput())
{
return false;
}
else if (!other_datalink.getDestInput().equals(getDestInput()))
{
return false;
}
}
if (other_datalink.getDestInbean() != null || getDestInbean() != null)
{
if (null == other_datalink.getDestInbean() || null == getDestInbean())
{
return false;
}
else if (!other_datalink.getDestInbean().equals(getDestInbean()))
{
return false;
}
}
if (other_datalink.getFlowLink() != null || getFlowLink() != null)
{
if (null == other_datalink.getFlowLink() && getFlowLink() != null)
{
return false;
}
if (other_datalink.getFlowLink() != null && null == getFlowLink())
{
return false;
}
if (!other_datalink.getFlowLink().equals(getFlowLink()))
{
return false;
}
}
return true;
}
}