/* * Copyright (C) 2009. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 or * version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. */ package uk.me.parabola.imgfmt.app.mdr; /** * Holds details of a single street. * @author Steve Ratcliffe */ public class Mdr7Record extends RecordBase implements NamedRecord { private int labelOffset; private int stringOffset; private String name; private int index; private Mdr5Record city; // For searching on partial names private byte nameOffset; // offset into the name where matching should start private byte outNameOffset; // offset into the encoded output name private byte prefixOffset; // offset after 0x1e prefix private byte suffixOffset; // offset just before 0x1f suffix public int getLabelOffset() { return labelOffset; } public void setLabelOffset(int labelOffset) { this.labelOffset = labelOffset; } public int getStringOffset() { return stringOffset; } public void setStringOffset(int stringOffset) { this.stringOffset = stringOffset; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setIndex(int index) { this.index = index; } public int getIndex() { return index; } public void setCity(Mdr5Record city) { this.city = city; } public Mdr5Record getCity() { return city; } public int getNameOffset() { return nameOffset & 0xff; } public void setNameOffset(byte nameOffset) { this.nameOffset = nameOffset; } public byte getOutNameOffset() { return outNameOffset; } public void setOutNameOffset(byte outNameOffset) { this.outNameOffset = outNameOffset; } public void setPrefixOffset(byte prefixOffset) { this.prefixOffset = prefixOffset; } public void setSuffixOffset(byte suffixOffset) { this.suffixOffset = suffixOffset; } /** * Get the name starting at the given nameOffset. * * To avoid creating unnecessary objects, a check is made for an offset of zero * and the original name string is returned. * * @return A substring of name, starting at the nameOffset value. */ public String getPartialName() { if (nameOffset == 0 && prefixOffset == 0 && suffixOffset == 0) return name; else if ((suffixOffset & 0xff) > 0) return name.substring((nameOffset & 0xff) + (prefixOffset & 0xff), (suffixOffset & 0xff)); else return name.substring((nameOffset & 0xff) + (prefixOffset & 0xff)); } public String toString() { return name + " in " + city.getName(); } public String getInitialPart() { return name.substring(0, (nameOffset & 0xff)); } }