From a924ec71875291809d7f2e13c87dc1a231e87526 Mon Sep 17 00:00:00 2001
From: Dennis Kao <ulysseskao@gmail.com>
Date: Mon, 06 Jan 2014 17:54:57 +0800
Subject: [PATCH] add ConnectivityDirectionEnum

---
 xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ConnectivityDirectionEnum.java |  275 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 275 insertions(+), 0 deletions(-)

diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ConnectivityDirectionEnum.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ConnectivityDirectionEnum.java
new file mode 100644
index 0000000..9d64738
--- /dev/null
+++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/ConnectivityDirectionEnum.java
@@ -0,0 +1,275 @@
+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; }
+	 */
+}

--
Gitblit v0.0.0-SNAPSHOT