New file |
| | |
| | | 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; } |
| | | */ |
| | | } |