java unit_Java Unit类代码示例

import org.vast.unit.Unit; //导入依赖的package包/类

/**

* Checks that source and destination components can be connected.

* This validates compatibility of units and structure of aggregates.

* @param src

* @param dest

* @return Warning message or null if no warning

* @throws SMLException

*/

public static String check(DataComponent src, DataComponent dest) throws SMLException

{

if (src == null || dest == null)

return null;

//System.out.println("Checking connection of " + src.getName() + " to " + dest.getName());

DataIterator it1 = new DataIterator(src);

DataIterator it2 = new DataIterator(dest);

StringBuffer msg = new StringBuffer();

while (it1.hasNext())

{

if (!it2.hasNext())

throw new SMLException("Structures of source and destination are not compatible");

DataComponent c1 = it1.next();

DataComponent c2 = it2.next();

//System.out.println("Checking sub component " + c1.getName());

// test that aggregates are the same

if (!c1.getClass().isInstance(c2) || c1.getComponentCount() != c2.getComponentCount())

throw new SMLException("Components '" + c1.getName() + "' and '" + c2.getName() + "' are not compatible");

// check that scalars are compatible

if (c1 instanceof HasUom && c2 instanceof HasUom)

{

Unit uom1 = ((HasUom)c1).getUom().getValue();

Unit uom2 = ((HasUom)c2).getUom().getValue();

if (uom1 != null && uom2 != null)

{

if (!uom1.isCompatible(uom2))

throw new SMLException("Unit of component '" + c1.getName() + "' is not compatible with unit of '" + c2.getName() + "'");

}

if (((DataValue)c1).getDataType() != ((DataValue)c2).getDataType())

msg.append("Data types of source and destination component are different. Conversion may lead to loss of precision");

}

}

if (msg.length() == 0)

return null;

else

return msg.toString();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值