public String getActionForFragment(String fragment) { int fragmentVal = validateAndConvertFragment(fragment); for (Segment segment : segments) { if (segment.valueWithinLimits(fragmentVal)) { return segment.getAction(); } } throw new RuntimeException( "Failed to find action string for valid fragment value \"" + fragment + "\"; this should never happen"); }
public String putFragment(String fragment) { int fragmentVal = validateAndConvertFragment(fragment); for (Segment segment : this.segments) { if (segment.valueWithinLimits(fragmentVal)) { if (!segment.hasMetadataKey(Segment.SIGNIFICANT_BITS_IN_LAST_FRAGMENT_KEY)) { String sigBitsKey = keyGenerator.next(); // Log.d(TAG, "Setting sig-bit metadata key for \"" + segment.getAction() + "\" to \"" + // sigBitsKey + "\""); segment.setMetadataKey(Segment.SIGNIFICANT_BITS_IN_LAST_FRAGMENT_KEY, sigBitsKey); String segmentNumberKey = keyGenerator.next(); // Log.d(TAG, "Setting segment number metadata key for \"" + segment.getAction() + "\" to // \"" + segmentNumberKey + "\""); segment.setMetadataKey(Segment.SEGMENT_NUMBER_KEY, segmentNumberKey); String segmentCountKey = keyGenerator.next(); // Log.d(TAG, "Setting segment count metadata key for \"" + segment.getAction() + "\" to // \"" + segmentCountKey + "\""); segment.setMetadataKey(Segment.MESSAGE_SEGMENT_COUNT_KEY, segmentCountKey); } String key = keyGenerator.next(); // TODO: Remove the duplication between these segment.addFragment(key, fragment); fragmentKeyMap.put(key, fragment); // Update the number of significant bits in the last fragment (i.e. the one that was just // added) int sigBitsInFragment = fragment.length(); // Log.d(TAG, "Setting significant bits for \"" + segment.getAction() + "\" to " + // sigBitsInFragment); String sigBitsMetadataFragmentBitstring = Integer.toBinaryString(sigBitsInFragment); segment.setMetadataValue( Segment.SIGNIFICANT_BITS_IN_LAST_FRAGMENT_KEY, sigBitsMetadataFragmentBitstring); return key; } } return null; // This should never happen }