package com.ximple.eofms.util;
|
|
/**
|
*
|
* TODO Purpose of
|
* <p>
|
*
|
* </p>
|
* @author Ulysses
|
* @since 1.1.0
|
*/
|
public enum ConnectivityDirectionEnum {
|
Noneflow((short) 0),
|
|
ForwardflowON((short) 0x01),
|
|
BackflowON((short) 0x02),
|
|
ForwardflowOFF((short) 0x03),
|
|
BackflowOFF((short) 0x04),
|
|
ForwardFixflowON((short) 0x05),
|
|
ForwardFixflowOFF((short) 0x06),
|
|
BackFixflowON((short) 0x07),
|
|
BackFixflowOFF((short) 0x08),
|
|
Breakflow((short) 0x62),
|
|
Nondeterminate((short) 0x63),
|
|
PhaseAON((short) 0x64), // 100
|
|
PhaseBON((short) 0xC8), // 200
|
|
PhaseCON((short) 0x190); // 400
|
|
private final short value;
|
|
ConnectivityDirectionEnum(short value) {
|
this.value = value;
|
}
|
|
public short getValue() {
|
return this.value;
|
}
|
|
public static ConnectivityDirectionEnum convertShort(short val) {
|
if (val == 0)
|
return Noneflow;
|
if (val == 0x1)
|
return ForwardflowON;
|
if (val == 0x2)
|
return BackflowON;
|
if (val == 0x3)
|
return ForwardflowOFF;
|
if (val == 0x4)
|
return BackflowOFF;
|
if (val == 0x5)
|
return ForwardFixflowON;
|
if (val == 0x6)
|
return ForwardFixflowOFF;
|
if (val == 0x7)
|
return BackFixflowON;
|
if (val == 0x8)
|
return BackFixflowOFF;
|
if (val == 0x62)
|
return Breakflow;
|
return Nondeterminate;
|
}
|
|
public static boolean isOn(short val) {
|
short dir = (short) (val & 0x00ff);
|
switch (dir) {
|
case 0x0:
|
case 0x1:
|
case 0x2:
|
case 0x5:
|
case 0x7:
|
return true;
|
}
|
|
return false;
|
}
|
|
public static boolean isOff(short val) {
|
return (!isOn(val));
|
}
|
|
public static boolean isForward(short val) {
|
short dir = (short) (val & 0x00ff);
|
switch (dir) {
|
case 0x1:
|
case 0x3:
|
case 0x5:
|
case 0x6:
|
return true;
|
}
|
|
return false;
|
}
|
|
public static boolean isBackward(short val) {
|
short dir = (short) (val & 0x00ff);
|
switch (dir) {
|
case 0x2:
|
case 0x4:
|
case 0x7:
|
case 0x8:
|
return true;
|
}
|
|
return false;
|
}
|
|
public static boolean isFixDirection(short val) {
|
short dir = (short) (val & 0x00ff);
|
switch (dir) {
|
case 0x5:
|
case 0x6:
|
case 0x7:
|
case 0x8:
|
return true;
|
}
|
|
return false;
|
}
|
|
public static boolean isNondeterminate(short val) {
|
short dir = (short) (val & 0x00ff);
|
return (dir == 0x63);
|
}
|
|
public static short getWeight(short val) {
|
short weight = (short) (val & 0xff00);
|
return (short) (weight >>> 8);
|
}
|
|
@Override
|
public String toString() {
|
boolean isA = (this.value & PhaseAON.getValue()) != 0;
|
boolean isB = (this.value & PhaseBON.getValue()) != 0;
|
boolean isC = (this.value & PhaseCON.getValue()) != 0;
|
String phase = "" + (isA ? "A" : "") + (isB ? "B" : "") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
|
+ (isC ? "C" : ""); //$NON-NLS-1$ //$NON-NLS-2$
|
if (phase.length() != 0)
|
phase = "[" + phase + "]"; //$NON-NLS-1$ //$NON-NLS-2$
|
|
if (value == 0)
|
return "Noneflow" + phase; //$NON-NLS-1$
|
if (value == 0x1)
|
return "ForwardflowON" + phase; //$NON-NLS-1$
|
if (value == 0x2)
|
return "BackflowON" + phase; //$NON-NLS-1$
|
if (value == 0x3)
|
return "ForwardflowOFF" + phase; //$NON-NLS-1$
|
if (value == 0x4)
|
return "BackflowOFF" + phase; //$NON-NLS-1$
|
if (value == 0x5)
|
return "ForwardFixflowON" + phase; //$NON-NLS-1$
|
if (value == 0x6)
|
return "ForwardFixflowOFF" + phase; //$NON-NLS-1$
|
if (value == 0x7)
|
return "BackFixflowON" + phase; //$NON-NLS-1$
|
if (value == 0x8)
|
return "BackFixflowOFF" + phase; //$NON-NLS-1$
|
if (value == 0x62)
|
return "Breakflow" + phase; //$NON-NLS-1$
|
return "Nondeterminate"; //$NON-NLS-1$
|
}
|
|
/*
|
*
|
* enum DirectionType { Noneflow = 0, ForwardflowON = 0x01, BackflowON =
|
* 0x02, ForwardflowOFF = 0x03, BackflowOFF = 0x04, ForwardFixflowON = 0x05,
|
* ForwardFixflowOFF = 0x06, BackFixflowON = 0x07, BackFixflowOFF = 0x08,
|
* Breakflow = 0x62, Nondeterminate = 0x63, PhaseAON = 0x64, // 100 PhaseBON
|
* = 0xC8, // 200 PhaseCON = 0x190 // 400 };
|
*
|
* enum OperationType { OFF = 0, ON = 0x01, NSTATUS = 0x10 };
|
*
|
*
|
* enum tagNetworkEdgeFlowType { FLOWUNKNOWN = 0x0000, // "???w" FLOWFORWARD
|
* = 0x0001, // "???V" FLOWBACKWARD = 0x0002, // "�Xf?V" FLOWTWOWAY =
|
* 0x0003, // "???V" FLOWBREAK = 0x00F0, // "???_" FLOWUNDELEGATED = 0x00FF,
|
* // "?L�PN?q"
|
*
|
* FLOWWT_1 = 0x0100, // A FLOWWT_2 = 0x0200, // B FLOWWT_3 = 0x0400, // C
|
* FLOWWT_4 = 0x0800, // ?-Unused
|
*
|
* FLOWON = 0x1000, // "On" FLOWOFF = 0x0000, // "Off"
|
*
|
* FLOWFIX = 0x2000, // Fix Dir
|
*
|
* FLOWONMASK = 0xF000, FLOWWTMASK = 0x0F00, FLOWWAYMASK = 0x00FF };
|
*
|
* enum tagNetworkEdgeOStatusType { OPSTATUS_OFF = 0x0000, OPSTATUS_ON =
|
* 0x0001, BOUNDSTATUS = 0x0010, OPSTATUSMASK = 0x000F };
|
*
|
* enum tagPhaseMask { PhaseUnknown = 0x0, PhaseA = 0x1, PhaseB = 0x2,
|
* PhaseC = 0x4, PhaseN = 0x8 };
|
*
|
* BYTE CNetworkSnapshot::marshalDIRFromDirection(short wFlag) { // BYTE
|
* bRet = 0xFF; bool bON; bool bFix; if ((wFlag & CNetworkEdge::FLOWONMASK)
|
* == CNetworkEdge::FLOWON) bON = true; else bON = false; if ((wFlag &
|
* CNetworkEdge::FLOWONMASK) == CNetworkEdge::FLOWFIX) bFix = true; else
|
* bFix = false;
|
*
|
* switch (wFlag & CNetworkEdge::FLOWWAYMASK) { case
|
* CNetworkEdge::FLOWFORWARD: if (bFix) if (bON) return
|
* CFacility::ForwardFixflowON ; else return CFacility::ForwardFixflowOFF;
|
* else if (bON) return CFacility::ForwardflowON; else return
|
* CFacility::ForwardflowOFF;
|
*
|
* case CNetworkEdge::FLOWBACKWARD: if (bFix) if (bON) return
|
* CFacility::BackFixflowON; else return CFacility::BackFixflowOFF; else if
|
* (bON) return CFacility::BackflowON; else return CFacility::BackflowOFF;
|
*
|
* case CNetworkEdge::FLOWUNKNOWN: case CNetworkEdge::FLOWTWOWAY: return
|
* CFacility::Noneflow;
|
*
|
* case CNetworkEdge::FLOWBREAK: return CFacility::Breakflow;
|
*
|
* case CNetworkEdge::FLOWUNDELEGATED: return CFacility::Nondeterminate;
|
*
|
* default: break; }
|
*
|
* return 0xFF; }
|
*
|
* short CNetworkSnapshot::marshalDirectionFromDIR(WORD bFlag) { short wRet
|
* = CNetworkEdge::FLOWUNDELEGATED; switch (bFlag) { case
|
* CFacility::Noneflow: wRet = CNetworkEdge::FLOWUNKNOWN; break; case
|
* CFacility::ForwardflowON: wRet = CNetworkEdge::FLOWFORWARD |
|
* CNetworkEdge::FLOWON; break; case CFacility::BackflowON: wRet =
|
* CNetworkEdge::FLOWBACKWARD | CNetworkEdge::FLOWON; break; case
|
* CFacility::ForwardflowOFF: wRet = CNetworkEdge::FLOWFORWARD; break; case
|
* CFacility::BackflowOFF: wRet = CNetworkEdge::FLOWBACKWARD; break; case
|
* CFacility::ForwardFixflowON: wRet = CNetworkEdge::FLOWFORWARD |
|
* CNetworkEdge::FLOWON | CNetworkEdge::FLOWFIX; break; case
|
* CFacility::ForwardFixflowOFF: wRet = CNetworkEdge::FLOWFORWARD |
|
* CNetworkEdge::FLOWFIX; break; case CFacility::BackFixflowON: wRet =
|
* CNetworkEdge::FLOWBACKWARD | CNetworkEdge::FLOWON |
|
* CNetworkEdge::FLOWFIX; break; case CFacility::BackFixflowOFF: wRet =
|
* CNetworkEdge::FLOWBACKWARD | CNetworkEdge::FLOWFIX; break; case
|
* CFacility::Breakflow: wRet = CNetworkEdge::FLOWBREAK; break; case
|
* CFacility::Nondeterminate: wRet = CNetworkEdge::FLOWUNDELEGATED; break;
|
* default: break; } return wRet; }
|
*
|
* short CNetworkSnapshot::marshalPhaseToMask(short wPhase) { short
|
* wMaskValue = 0;
|
*
|
* if (wPhase == 1) { wMaskValue |= CNetworkEdge::PhaseA |
|
* CNetworkEdge::PhaseB | CNetworkEdge::PhaseC; return wMaskValue; }
|
*
|
* if (wPhase > 16) { wMaskValue = CNetworkEdge::PhaseN; wPhase -= 16; }
|
*
|
* if (wPhase > 10) { wMaskValue |= CNetworkEdge::PhaseA |
|
* CNetworkEdge::PhaseB | CNetworkEdge::PhaseC; return wMaskValue; }
|
*
|
* switch (wPhase) { case 5: // AB case 6: // BA wMaskValue |=
|
* CNetworkEdge::PhaseA | CNetworkEdge::PhaseB; break; case 7: // BC case 8:
|
* // CB wMaskValue |= CNetworkEdge::PhaseB | CNetworkEdge::PhaseC; break;
|
* case 9: // CA case 10: // AC wMaskValue |= CNetworkEdge::PhaseA |
|
* CNetworkEdge::PhaseC; break; case 2: // A wMaskValue |=
|
* CNetworkEdge::PhaseA; break; case 3: // B wMaskValue |=
|
* CNetworkEdge::PhaseB; break; case 4: // C wMaskValue |=
|
* CNetworkEdge::PhaseC; break; default: wMaskValue |=
|
* CNetworkEdge::PhaseUnknown; break; }
|
*
|
* return wMaskValue; }
|
*/
|
}
|