Package org.traccar.model

Examples of org.traccar.model.ExtendedInfoFormatter


            return null;
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        Integer index = 1;

        // Get device by IMEI
        String imei = parser.group(index++);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(imei).getId());
        } catch(Exception error) {
            Log.warning("Unknown device - " + imei);
            return null;
        }

        // Validity
        position.setValid(Integer.valueOf(parser.group(index++)) == 0);

        // Position info
        position.setSpeed(Double.valueOf(parser.group(index++)));
        position.setCourse(Double.valueOf(parser.group(index++)));
        position.setAltitude(Double.valueOf(parser.group(index++)));
        position.setLongitude(Double.valueOf(parser.group(index++)));
        position.setLatitude(Double.valueOf(parser.group(index++)));

        // Date
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.YEAR, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
        time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));

        // Time
        time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
        position.setTime(time.getTime());

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here


            return null;
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());
        int index = 1;

        // Device identifier
        String id = parser.group(index++);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(id).getId());
        } catch(Exception error) {
            Log.warning("Unknown device - " + id);
            return null;
        }

        // Time
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.YEAR, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
        time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
        position.setTime(time.getTime());

        // Position data
        position.setLongitude(Double.valueOf(parser.group(index++)));
        position.setLatitude(Double.valueOf(parser.group(index++)));
        position.setSpeed(Double.valueOf(parser.group(index++)) * 0.539957);
        position.setCourse(Double.valueOf(parser.group(index++)));
        position.setAltitude(Double.valueOf(parser.group(index++)));

        // Satellites
        int satellites = Integer.valueOf(parser.group(index++));
        position.setValid(satellites >= 3);
        extendedInfo.set("satellites", satellites);
       
        // Event
        extendedInfo.set("event", parser.group(index++));
       
        // Battery
        extendedInfo.set("battery", parser.group(index++));
       
        // Milage
        extendedInfo.set("milage", parser.group(index++));
       
        // Input
        extendedInfo.set("input", parser.group(index++));
       
        // ADC
        extendedInfo.set("adc1", parser.group(index++));
        extendedInfo.set("adc2", parser.group(index++));
       
        // Output
        extendedInfo.set("output", parser.group(index++));

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

                return null;
            }

            // Create new position
            Position position = new Position();
            ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());
            Integer index = 1;

            // Get device by IMEI
            String imei = parser.group(index++);
            if (imei != null) {
                try {
                    deviceId = getDataManager().getDeviceByImei(imei).getId();
                } catch(Exception error) {
                    Log.warning("Unknown device - " + imei);
                    return null;
                }
            }
            if (deviceId == null) {
                return null;
            }
            position.setDeviceId(deviceId);

            // User
            extendedInfo.set("user", parser.group(index++));

            // Validity
            position.setValid(Integer.valueOf(parser.group(index++)) > 0);

            // Password
            extendedInfo.set("password", parser.group(index++));

            // Event
            extendedInfo.set("event", parser.group(index++));

            // Packet number
            extendedInfo.set("packet", parser.group(index++));

            // GSM base station
            extendedInfo.set("gsm", parser.group(index++));

            // Longitude
            Double longitude = Double.valueOf(parser.group(index++));
            longitude += Double.valueOf(parser.group(index++)) / 60;
            if (parser.group(index++).compareTo("W") == 0) longitude = -longitude;
            position.setLongitude(longitude);

            // Latitude
            Double latitude = Double.valueOf(parser.group(index++));
            latitude += Double.valueOf(parser.group(index++)) / 60;
            if (parser.group(index++).compareTo("S") == 0) latitude = -latitude;
            position.setLatitude(latitude);

            // Altitude
            position.setAltitude(0.0);

            // Speed and Course
            position.setSpeed(Double.valueOf(parser.group(index++)));
            String course = parser.group(index++);
            if (course != null) {
                position.setCourse(Double.valueOf(course));
            } else {
                position.setCourse(0.0);
            }

            // Date
            Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
            time.clear();
            int day = Integer.valueOf(parser.group(index++));
            int month = Integer.valueOf(parser.group(index++));
            if (day == 0 && month == 0) {
                return null; // invalid date
            }
            time.set(Calendar.DAY_OF_MONTH, day);
            time.set(Calendar.MONTH, month - 1);
            time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));

            // Time
            time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
            position.setTime(time.getTime());

            position.setExtendedInfo(extendedInfo.toString());
            return position;
        }
       
        return null;
    }
View Full Code Here

            return null;
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        Integer index = 1;

        // Get device by IMEI
        String imei = parser.group(index++);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(imei).getId());
        } catch(Exception error) {
            Log.warning("Unknown device - " + imei);
            return null;
        }

        // Command
        extendedInfo.set("command", parser.group(index++));

        // Validity
        position.setValid(parser.group(index++).compareTo("A") == 0 ? true : false);
       
        // Date
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.YEAR, 2000 + Integer.parseInt(parser.group(index++), 16));
        time.set(Calendar.MONTH, Integer.parseInt(parser.group(index++), 16) - 1);
        time.set(Calendar.DAY_OF_MONTH, Integer.parseInt(parser.group(index++), 16));
        time.set(Calendar.HOUR_OF_DAY, Integer.parseInt(parser.group(index++), 16));
        time.set(Calendar.MINUTE, Integer.parseInt(parser.group(index++), 16));
        time.set(Calendar.SECOND, Integer.parseInt(parser.group(index++), 16));
        position.setTime(time.getTime());

        // Location
        int hemisphere = parser.group(index++).equals("8") ? -1 : 1;
        position.setLatitude(
                hemisphere * Integer.parseInt(parser.group(index++), 16) / 600000.0);

        hemisphere = parser.group(index++).equals("8") ? -1 : 1;
        position.setLongitude(
                hemisphere * Integer.parseInt(parser.group(index++), 16) / 600000.0);
       
        position.setSpeed(Integer.parseInt(parser.group(index++), 16) / 100.0);
        position.setCourse(Integer.parseInt(parser.group(index++), 16) / 100.0);

        // Status
        extendedInfo.set("status", parser.group(index++));

        // Signal
        extendedInfo.set("signal", parser.group(index++));

        // Power
        extendedInfo.set("power", Double.valueOf(parser.group(index++)));

        // Oil
        extendedInfo.set("oil", Integer.parseInt(parser.group(index++), 16));

        // Milage
        extendedInfo.set("milage", Integer.parseInt(parser.group(index++), 16));
       
        // Altitude
        String altitude = parser.group(index++);
        if (altitude != null) {
            position.setAltitude(Double.valueOf(altitude));
        } else {
            position.setAltitude(0.0);
        }

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

            return null;
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        Integer index = 1;

        // Get device by IMEI
        String imei = parser.group(index++);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(imei).getId());
        } catch(Exception error) {
            Log.warning("Unknown device - " + imei);
            return null;
        }

        // Validity
        position.setValid(Integer.valueOf(parser.group(index++)) < 20);

        // Speed
        String speed = parser.group(index++);
        if (speed != null) {
            position.setSpeed(Double.valueOf(speed));
        } else {
            position.setSpeed(0.0);
        }

        // Course
        String course = parser.group(index++);
        if (speed != null) {
            position.setCourse(Double.valueOf(course));
        } else {
            position.setCourse(0.0);
        }

        // Altitude
        String altitude = parser.group(index++);
        if (speed != null) {
            position.setAltitude(Double.valueOf(altitude));
        } else {
            position.setAltitude(0.0);
        }

        // Coordinates
        position.setLongitude(Double.valueOf(parser.group(index++)));
        position.setLatitude(Double.valueOf(parser.group(index++)));

        // Date
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.YEAR, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
        time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));

        // Time
        time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
        position.setTime(time.getTime());

        // Cell information
        extendedInfo.set("mcc", parser.group(index++));
        extendedInfo.set("mnc", parser.group(index++));
        extendedInfo.set("lac", parser.group(index++));
        extendedInfo.set("cell", parser.group(index++));

        // Battery
        String battery = parser.group(index++);
        if (battery != null) {
            extendedInfo.set("battery", Integer.valueOf(battery));
        }

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

            params = decoder.getParameters();
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        // Identification
        String id = params.get(params.containsKey("id") ? "id" : "deviceid").get(0);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(id).getId());
        } catch(Exception error) {
            Log.warning("Unknown device - " + id);
            return null;
        }

        // Decode position
        position.setValid(true);
        if (params.containsKey("timestamp")) {
            try {
                position.setTime(new Date(Long.valueOf(params.get("timestamp").get(0)) * 1000));
            } catch (NumberFormatException error) {
                DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                position.setTime(dateFormat.parse(params.get("timestamp").get(0)));
            }
        } else {
            position.setTime(new Date());
        }
        position.setLatitude(Double.valueOf(params.get("lat").get(0)));
        position.setLongitude(Double.valueOf(params.get("lon").get(0)));

        // Optional parameters
        if (params.containsKey("speed")) {
            position.setSpeed(Double.valueOf(params.get("speed").get(0)));
        } else {
            position.setSpeed(0.0);
        }
        if (params.containsKey("bearing")) {
            position.setCourse(Double.valueOf(params.get("bearing").get(0)));
        } else if (params.containsKey("heading")) {
            position.setCourse(Double.valueOf(params.get("heading").get(0)));
        } else {
            position.setCourse(0.0);
        }
        if (params.containsKey("altitude")) {
            position.setAltitude(Double.valueOf(params.get("altitude").get(0)));
        } else {
            position.setAltitude(0.0);
        }
        if (params.containsKey("hdop")) {
            extendedInfo.set("hdop", params.get("hdop").get(0));
        }
        if (params.containsKey("vacc")) {
            extendedInfo.set("vacc", params.get("vacc").get(0));
        }
        if (params.containsKey("hacc")) {
            extendedInfo.set("hacc", params.get("hacc").get(0));
        }
        if (params.containsKey("batt")) {
            extendedInfo.set("battery", params.get("batt").get(0));
        }

        position.setExtendedInfo(extendedInfo.toString());
       
        // Send response
        if (channel != null) {
            HttpResponse response = new DefaultHttpResponse(
                    HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
View Full Code Here

        sendReply(channel, deviceId, packetNumber);

        // Parse location
        if (type == MSG_CLIENT_STATUS) {
            Position position = new Position();
            ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());
           
            // Device identifier
            try {
                position.setDeviceId(getDataManager().getDeviceByImei(String.valueOf(deviceId)).getId());
            } catch(Exception error) {
                Log.warning("Unknown device - " + deviceId);
                return null;
            }
           
            buf.readUnsignedByte(); // hardware version
            buf.readUnsignedByte(); // software version
            buf.readUnsignedByte(); // protocol version

            // Status
            extendedInfo.set("status", buf.getUnsignedByte(buf.readerIndex()) & 0x0f);
           
            int operator = (buf.readUnsignedByte() & 0xf0) << 4;
            operator += buf.readUnsignedByte();
           
            buf.readUnsignedByte(); // reason data
            buf.readUnsignedByte(); // reason
            buf.readUnsignedByte(); // mode
            buf.readUnsignedInt(); // IO
           
            operator <<= 8;
            operator += buf.readUnsignedByte();
            extendedInfo.set("operator", operator);
           
            buf.readUnsignedInt(); // ADC
            buf.readUnsignedMedium(); // milage
            buf.skipBytes(6); // multi-purpose data
           
            buf.readUnsignedShort(); // gps fix
            buf.readUnsignedByte(); // location status
            buf.readUnsignedByte(); // mode 1
            buf.readUnsignedByte(); // mode 2

            position.setValid(buf.readUnsignedByte() >= 3); // satellites

            // Location data
            position.setLongitude(buf.readInt() / Math.PI * 180 / 100000000);
            position.setLatitude(buf.readInt() / Math.PI * 180 / 100000000.0);
            position.setAltitude(buf.readInt() * 0.01);
            position.setSpeed(buf.readInt() * 0.01 * 1.943844);
            position.setCourse(buf.readUnsignedShort() / Math.PI * 180.0 / 1000.0);
           
            // Time
            Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
            time.clear();
            time.set(Calendar.SECOND, buf.readUnsignedByte());
            time.set(Calendar.MINUTE, buf.readUnsignedByte());
            time.set(Calendar.HOUR_OF_DAY, buf.readUnsignedByte());
            time.set(Calendar.DAY_OF_MONTH, buf.readUnsignedByte());
            time.set(Calendar.MONTH, buf.readUnsignedByte() - 1);
            time.set(Calendar.YEAR, buf.readUnsignedShort());
            position.setTime(time.getTime());

            position.setExtendedInfo(extendedInfo.toString());
            return position;
        }

        return null;
    }
View Full Code Here

            return null;
        }

        // Create new position
        Position position = new Position();
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());

        Integer index = 1;

        // Device identification
        String id = parser.group(index++);
        String imei = parser.group(index++);
        try {
            position.setDeviceId(getDataManager().getDeviceByImei(id).getId());
        } catch(Exception error) {
            if (imei != null) {
                try {
                    position.setDeviceId(getDataManager().getDeviceByImei(imei).getId());
                } catch(Exception error2) {
                    Log.warning("Unknown device - " + id);
                    return null;
                }
            } else {
                Log.warning("Unknown device - " + id);
                return null;
            }
        }
       
        // Date
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
        time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));
        time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
        position.setTime(time.getTime());

        // Latitude
        Double latitude = Double.valueOf(parser.group(index++));
        latitude += Double.valueOf(parser.group(index++)) / 600000;
        if (parser.group(index++).compareTo("S") == 0) latitude = -latitude;
        position.setLatitude(latitude);

        // Longitude
        Double longitude = Double.valueOf(parser.group(index++));
        longitude += Double.valueOf(parser.group(index++)) / 600000;
        if (parser.group(index++).compareTo("W") == 0) longitude = -longitude;
        position.setLongitude(longitude);

        // Speed
        position.setSpeed(Double.valueOf(parser.group(index++)) * 0.539957);

        // Course
        position.setCourse(Double.valueOf(parser.group(index++)));

        // Altitude
        String altitude = parser.group(index++);
        if (altitude != null) {
            position.setAltitude(Double.valueOf(altitude));
        } else {
            position.setAltitude(0.0);
        }

        // Additional data
        extendedInfo.set("satellites", parser.group(index++));
        extendedInfo.set("milage", parser.group(index++));
        extendedInfo.set("ignition", parser.group(index++));
        extendedInfo.set("input1", parser.group(index++));
        extendedInfo.set("input2", parser.group(index++));
        extendedInfo.set("immobilizer", parser.group(index++));
        extendedInfo.set("power", parser.group(index++));
        extendedInfo.set("gsm", parser.group(index++));

        // Validity
        position.setValid(parser.group(index++).compareTo("A") == 0);

        // RFID
        extendedInfo.set("rfid", parser.group(index++));

        // Extended info
        position.setExtendedInfo(extendedInfo.toString());

        return position;
    }
View Full Code Here

        }

        // Create new position
        Position position = new Position();
        position.setDeviceId(deviceId);
        ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());
        index = 1;

        // Time
        Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
        time.clear();
        time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
        time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));

        // Validity
        position.setValid(parser.group(index++).compareTo("A") == 0 ? true : false);

        // Latitude
        Double latitude = Double.valueOf(parser.group(index++));
        latitude += Double.valueOf(parser.group(index++)) / 60;
        if (parser.group(index++).compareTo("S") == 0) latitude = -latitude;
        position.setLatitude(latitude);

        // Longitude
        Double longitude = Double.valueOf(parser.group(index++));
        longitude += Double.valueOf(parser.group(index++)) / 60;
        if (parser.group(index++).compareTo("W") == 0) longitude = -longitude;
        position.setLongitude(longitude);

        // Altitude
        position.setAltitude(0.0);

        // Speed
        position.setSpeed(Double.valueOf(parser.group(index++)));

        // Date
        time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));
        time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
        time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
        position.setTime(time.getTime());

        // Course
        position.setCourse(Double.valueOf(parser.group(index++)));
       
        // State
        extendedInfo.set("state", parser.group(index++));

        // Milage
        extendedInfo.set("milage", Integer.valueOf(parser.group(index++)));

        position.setExtendedInfo(extendedInfo.toString());
        return position;
    }
View Full Code Here

                return null;
            }

            // Create new position
            Position position = new Position();
            ExtendedInfoFormatter extendedInfo = new ExtendedInfoFormatter(getProtocol());
            position.setDeviceId(deviceId);

            Integer index = 1;

            // Time
            Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
            time.clear();
            time.set(Calendar.HOUR_OF_DAY, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MINUTE, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.SECOND, Integer.valueOf(parser.group(index++)));
            index += 1; // Skip milliseconds

            // Validity
            position.setValid(parser.group(index++).compareTo("A") == 0);

            // Latitude
            Double latitude = Double.valueOf(parser.group(index++));
            latitude += Double.valueOf(parser.group(index++)) / 60;
            if (parser.group(index++).compareTo("S") == 0) latitude = -latitude;
            position.setLatitude(latitude);

            // Longitude
            Double longitude = Double.valueOf(parser.group(index++));
            longitude += Double.valueOf(parser.group(index++)) / 60;
            if (parser.group(index++).compareTo("W") == 0) longitude = -longitude;
            position.setLongitude(longitude);

            // Speed
            String speed = parser.group(index++);
            if (speed != null) {
                position.setSpeed(Double.valueOf(speed));
            } else {
                position.setSpeed(0.0);
            }

            // Course
            String course = parser.group(index++);
            if (course != null) {
                position.setCourse(Double.valueOf(course));
            } else {
                position.setCourse(0.0);
            }

            // Date
            time.set(Calendar.DAY_OF_MONTH, Integer.valueOf(parser.group(index++)));
            time.set(Calendar.MONTH, Integer.valueOf(parser.group(index++)) - 1);
            time.set(Calendar.YEAR, 2000 + Integer.valueOf(parser.group(index++)));
            position.setTime(time.getTime());

            // Altitude
            position.setAltitude(0.0);

            position.setExtendedInfo(extendedInfo.toString());
            return position;
        }

        return null;
    }
View Full Code Here

TOP

Related Classes of org.traccar.model.ExtendedInfoFormatter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.