diff options
| author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-03-27 18:10:56 -0500 | 
|---|---|---|
| committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-03-27 18:10:56 -0500 | 
| commit | 782cf0c76e09abab1c2e11288d610330f383e732 (patch) | |
| tree | f8cd3fa0dc799349a2b4746f5d31da89190b66ff /src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java | |
| parent | fe4135a68cfed92ef336eec663e9c42c2c97dcbc (diff) | |
| parent | 0f9a56ac310a1276dbf3b42859a2374828223879 (diff) | |
Merge branch 'feature-gradle' into develop
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; -		} -	}; -} | 
