HistoDbAttributeIdParser { public static HistoDbAttributeId parse(String txt) { try { return new HistoDbMetaAttributeId(HistoDbMetaAttributeType.valueOf(txt)); } catch (IllegalArgumentException e) { for (HistoDbAttr type : HistoDbAttr.values()) { if (txt.endsWith("_" + type.name())) { String terminalId = txt.substring(0, txt.length() - 1 - type.name().length()); String equipmentId; String side = null; int pos = terminalId.indexOf(HistoDbNetworkAttributeId.SIDE_SEPARATOR); if (pos == -1) { equipmentId = terminalId; } else { equipmentId = terminalId.substring(0, pos); side = terminalId.substring(pos + HistoDbNetworkAttributeId.SIDE_SEPARATOR.length()); } return new HistoDbNetworkAttributeId(equipmentId, side, type); } } throw new IllegalArgumentException("Invalid attribute id " + txt); } } private  HistoDbAttributeIdParser(); static HistoDbAttributeId parse(String txt);  }
@Test public void testParseMetaAttr() { HistoDbAttributeId attrId = HistoDbAttributeIdParser.parse("cimName"); assertTrue(attrId instanceof HistoDbMetaAttributeId); }
@Test public void testParseBranchAttr() { HistoDbAttributeId attrId = HistoDbAttributeIdParser.parse("LINE1__TO__SUB1_P"); assertTrue(attrId instanceof HistoDbNetworkAttributeId); assertEquals("LINE1", ((HistoDbNetworkAttributeId) attrId).getEquipmentId()); assertEquals("SUB1", ((HistoDbNetworkAttributeId) attrId).getSide()); assertEquals(HistoDbAttr.P, ((HistoDbNetworkAttributeId) attrId).getAttributeType()); }
@Test public void testParseGeneratorAttr() { HistoDbAttributeId attrId = HistoDbAttributeIdParser.parse("GEN1_V"); assertTrue(attrId instanceof HistoDbNetworkAttributeId); assertEquals("GEN1", ((HistoDbNetworkAttributeId) attrId).getEquipmentId()); assertNull(((HistoDbNetworkAttributeId) attrId).getSide()); assertEquals(HistoDbAttr.V, ((HistoDbNetworkAttributeId) attrId).getAttributeType()); }