Extract string strip helpers

This commit is contained in:
Anton Tananaev
2026-07-10 20:22:32 -07:00
parent fb676b0bdb
commit 8d082fbbcb
5 changed files with 18 additions and 5 deletions

View File

@@ -36,4 +36,12 @@ public final class StringUtil {
return value.substring(start);
}
public static String stripTrailing(char c, String value) {
int end = value.length();
while (end > 1 && value.charAt(end - 1) == c) {
end--;
}
return value.substring(0, end);
}
}

View File

@@ -24,6 +24,7 @@ import org.traccar.session.DeviceSession;
import org.traccar.NetworkMessage;
import org.traccar.Protocol;
import org.traccar.helper.BitUtil;
import org.traccar.helper.StringUtil;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.Position;
@@ -166,7 +167,8 @@ public class CalAmpProtocolDecoder extends BaseProtocolDecoder {
int content = buf.readUnsignedByte();
if (BitUtil.check(content, 0)) {
String id = ByteBufUtil.hexDump(buf.readSlice(buf.readUnsignedByte())).replace("f", "");
String id = StringUtil.stripTrailing(
'f', ByteBufUtil.hexDump(buf.readSlice(buf.readUnsignedByte())));
getDeviceSession(channel, remoteAddress, id);
}

View File

@@ -30,6 +30,7 @@ import org.traccar.helper.Checksum;
import org.traccar.helper.DateBuilder;
import org.traccar.helper.Parser;
import org.traccar.helper.PatternBuilder;
import org.traccar.helper.StringUtil;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.CellTower;
import org.traccar.model.Network;
@@ -1226,7 +1227,8 @@ public class Gt06ProtocolDecoder extends BaseProtocolDecoder {
buf.skipBytes(8); // imei
buf.skipBytes(8); // imsi
position.set(Position.KEY_ICCID, ByteBufUtil.hexDump(buf.readSlice(10)).replaceAll("f", ""));
position.set(Position.KEY_ICCID, StringUtil.stripTrailing(
'f', ByteBufUtil.hexDump(buf.readSlice(10))));
return position;
} else if (subType == 0x0b) {

View File

@@ -29,6 +29,7 @@ import org.traccar.helper.BitUtil;
import org.traccar.helper.DateBuilder;
import org.traccar.helper.Parser;
import org.traccar.helper.PatternBuilder;
import org.traccar.helper.StringUtil;
import org.traccar.helper.UnitsConverter;
import org.traccar.model.CellTower;
import org.traccar.model.Network;
@@ -122,7 +123,7 @@ public class Jt600ProtocolDecoder extends BaseProtocolDecoder {
buf.readByte(); // header
String id = String.valueOf(Long.parseLong(ByteBufUtil.hexDump(buf.readSlice(5))));
String id = StringUtil.stripLeading('0', ByteBufUtil.hexDump(buf.readSlice(5)));
DeviceSession deviceSession = getDeviceSession(channel, remoteAddress, id);
if (deviceSession == null) {
return null;

View File

@@ -1124,8 +1124,8 @@ public class Jt808ProtocolDecoder extends BaseProtocolDecoder {
}
break;
case 0x00B2:
position.set(Position.KEY_ICCID, ByteBufUtil.hexDump(
buf.readSlice(10)).replaceAll("f", ""));
position.set(Position.KEY_ICCID, StringUtil.stripTrailing(
'f', ByteBufUtil.hexDump(buf.readSlice(10))));
break;
case 0x00B9:
buf.readUnsignedByte(); // count