diff options
| author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-05-22 14:05:44 -0500 | 
|---|---|---|
| committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-05-22 14:05:44 -0500 | 
| commit | 8645325803f8580c823cc4c2cec2ad76906b52bb (patch) | |
| tree | fff893611dfd82aca4af5e677ab782045d5543d9 /src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java | |
| parent | 184b7cc697ffc2dcbd49cfb3d0fd7b14bdac8803 (diff) | |
| parent | 277500e27010839e03659870bc5890f1535aa8c8 (diff) | |
Merge branch 'develop' into feature-settings-tab
Diffstat (limited to 'src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java')
| -rw-r--r-- | src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java | 95 | 
1 files changed, 0 insertions, 95 deletions
| diff --git a/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java b/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java deleted file mode 100644 index bdc3a2e..0000000 --- a/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @since 2020-08-26 - */ -package org.unitConverter.converterGUI; - -import java.util.List; -import java.util.function.Predicate; - -import org.unitConverter.unit.SI; -import org.unitConverter.unit.UnitPrefix; - -/** - * A rule that specifies whether prefix repetition is allowed - * - * @since 2020-08-26 - */ -enum DefaultPrefixRepetitionRule implements Predicate<List<UnitPrefix>> { -	NO_REPETITION { -		@Override -		public boolean test(List<UnitPrefix> prefixes) { -			return prefixes.size() <= 1; -		} -	}, -	NO_RESTRICTION { -		@Override -		public boolean test(List<UnitPrefix> prefixes) { -			return true; -		} -	}, -	/** -	 * You are allowed to have any number of Yotta/Yocto followed by possibly one -	 * Kilo-Zetta/Milli-Zepto followed by possibly one Deca/Hecto. Same for -	 * reducing prefixes, don't mix magnifying and reducing. Non-metric -	 * (including binary) prefixes can't be repeated. -	 */ -	COMPLEX_REPETITION { -		@Override -		public boolean test(List<UnitPrefix> prefixes) { -			// determine whether we are magnifying or reducing -			final boolean magnifying; -			if (prefixes.isEmpty()) -				return true; -			else if (prefixes.get(0).getMultiplier() > 1) { -				magnifying = true; -			} else { -				magnifying = false; -			} -			 -			// if the first prefix is non-metric (including binary prefixes), -			// assume we are using non-metric prefixes -			// non-metric prefixes are allowed, but can't be repeated. -			if (!SI.DECIMAL_PREFIXES.contains(prefixes.get(0))) -				return NO_REPETITION.test(prefixes); -			 -			int part = 0; // 0=yotta/yoctos, 1=kilo-zetta/milli-zepto, -								// 2=deka,hecto,deci,centi -			 -			for (final UnitPrefix prefix : prefixes) { -				// check that the current prefix is metric and appropriately -				// magnifying/reducing -				if (!SI.DECIMAL_PREFIXES.contains(prefix)) -					return false; -				if (magnifying != prefix.getMultiplier() > 1) -					return false; -					 -				// check if the current prefix is correct -				// since part is set *after* this check, part designates the state -				// of the *previous* prefix -				switch (part) { -				case 0: -					// do nothing, any prefix is valid after a yotta -					break; -				case 1: -					// after a kilo-zetta, only deka/hecto are valid -					if (SI.THOUSAND_PREFIXES.contains(prefix)) -						return false; -					break; -				case 2: -					// deka/hecto must be the last prefix, so this is always invalid -					return false; -				} -				 -				// set part -				if (SI.YOTTA.equals(prefix) || SI.YOCTO.equals(prefix)) { -					part = 0; -				} else if (SI.THOUSAND_PREFIXES.contains(prefix)) { -					part = 1; -				} else { -					part = 2; -				} -			} -			return true; -		} -	}; -} | 
