SH: Line colors for Kiel buses.

This commit is contained in:
Johan von Forstner 2015-07-02 22:21:56 +02:00 committed by Andreas Schildbach
parent 17960fc74e
commit 7588431354
2 changed files with 82 additions and 5 deletions

View file

@ -648,6 +648,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
final String delayReason = XmlPullUtil.optAttr(pp, "delayReason", null); final String delayReason = XmlPullUtil.optAttr(pp, "delayReason", null);
// TODO is_reachable // TODO is_reachable
// TODO disableTrainInfo // TODO disableTrainInfo
// TODO lineFG/lineBG (ZVV)
final String administration = normalizeLineAdministration(XmlPullUtil.optAttr(pp, "administration", null));
if (!"cancel".equals(eDelay)) if (!"cancel".equals(eDelay))
{ {
@ -725,13 +727,17 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
// could check for type consistency here // could check for type consistency here
final Set<Attr> attrs = prodLine.attrs; final Set<Attr> attrs = prodLine.attrs;
if (attrs != null) if (attrs != null)
line = newLine(product, prodLine.label, null, attrs.toArray(new Line.Attr[0])); line = newLine(administration, product, prodLine.label, null, attrs.toArray(new Line.Attr[0]));
else else
line = newLine(product, prodLine.label, null); line = newLine(administration, product, prodLine.label, null);
} }
else else
{ {
line = prodLine; final Set<Attr> attrs = prodLine.attrs;
if (attrs != null)
line = newLine(administration, prodLine.product, prodLine.label, null, attrs.toArray(new Line.Attr[0]));
else
line = newLine(administration, prodLine.product, prodLine.label, null);
} }
final int[] capacity; final int[] capacity;
@ -3077,6 +3083,20 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
return lineName; return lineName;
} }
private static final Pattern P_NORMALIZE_LINE_ADMINISTRATION = Pattern.compile("([^_]*)_*");
private final String normalizeLineAdministration(final String administration)
{
if (administration == null)
return null;
final Matcher m = P_NORMALIZE_LINE_ADMINISTRATION.matcher(administration);
if (m.find())
return m.group(1);
else
return administration;
}
private static final Pattern P_CATEGORY_FROM_NAME = Pattern.compile("([A-Za-zßÄÅäáàâåéèêíìîÖöóòôÜüúùûØ]+).*"); private static final Pattern P_CATEGORY_FROM_NAME = Pattern.compile("([A-Za-zßÄÅäáàâåéèêíìîÖöóòôÜüúùûØ]+).*");
protected final String categoryFromName(final String lineName) protected final String categoryFromName(final String lineName)
@ -3178,17 +3198,22 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
} }
protected Line newLine(final Product product, final String normalizedName, final String comment, final Line.Attr... attrs) protected Line newLine(final Product product, final String normalizedName, final String comment, final Line.Attr... attrs)
{
return newLine(null, product, normalizedName, comment, attrs);
}
protected Line newLine(final String network, final Product product, final String normalizedName, final String comment, final Line.Attr... attrs)
{ {
if (attrs.length == 0) if (attrs.length == 0)
{ {
return new Line(null, null, product, normalizedName, lineStyle(null, product, normalizedName), comment); return new Line(null, network, product, normalizedName, lineStyle(network, product, normalizedName), comment);
} }
else else
{ {
final Set<Line.Attr> attrSet = new HashSet<Line.Attr>(); final Set<Line.Attr> attrSet = new HashSet<Line.Attr>();
for (final Line.Attr attr : attrs) for (final Line.Attr attr : attrs)
attrSet.add(attr); attrSet.add(attr);
return new Line(null, null, product, normalizedName, lineStyle(null, product, normalizedName), attrSet, comment); return new Line(null, network, product, normalizedName, lineStyle(network, product, normalizedName), attrSet, comment);
} }
} }
} }

View file

@ -18,12 +18,15 @@
package de.schildbach.pte; package de.schildbach.pte;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import com.google.common.base.Charsets; import com.google.common.base.Charsets;
import de.schildbach.pte.dto.NearbyLocationsResult; import de.schildbach.pte.dto.NearbyLocationsResult;
import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.Product;
import de.schildbach.pte.dto.Style;
/** /**
* @author Andreas Schildbach * @author Andreas Schildbach
@ -40,6 +43,7 @@ public class ShProvider extends AbstractHafasProvider
setJsonGetStopsEncoding(Charsets.UTF_8); setJsonGetStopsEncoding(Charsets.UTF_8);
setJsonNearbyLocationsEncoding(Charsets.UTF_8); setJsonNearbyLocationsEncoding(Charsets.UTF_8);
setStyles(STYLES);
} }
private static final String[] PLACES = { "Hamburg", "Kiel", "Lübeck", "Flensburg", "Neumünster" }; private static final String[] PLACES = { "Hamburg", "Kiel", "Lübeck", "Flensburg", "Neumünster" };
@ -83,4 +87,52 @@ public class ShProvider extends AbstractHafasProvider
uri.append("&input=").append(normalizeStationId(id)); uri.append("&input=").append(normalizeStationId(id));
return htmlNearbyStations(uri.toString()); return htmlNearbyStations(uri.toString());
} }
protected static final Map<String, Style> STYLES = new HashMap<String, Style>();
static
{
// Busse Kiel
putKielBusStyle("1", new Style(Style.parseColor("#7288af"), Style.WHITE));
putKielBusStyle("2", new Style(Style.parseColor("#50bbb4"), Style.WHITE));
putKielBusStyle("5", new Style(Style.parseColor("#f39222"), Style.WHITE));
putKielBusStyle("6", new Style(Style.parseColor("#aec436"), Style.WHITE));
putKielBusStyle("8", new Style(Style.parseColor("#bcb261"), Style.WHITE));
putKielBusStyle("9", new Style(Style.parseColor("#c99c7d"), Style.WHITE));
putKielBusStyle("11", new Style(Style.parseColor("#f9b000"), Style.WHITE));
putKielBusStyle("22", new Style(Style.parseColor("#8ea48a"), Style.WHITE));
putKielBusStyle("31", new Style(Style.parseColor("#009ee3"), Style.WHITE));
putKielBusStyle("32", new Style(Style.parseColor("#009ee3"), Style.WHITE));
putKielBusStyle("33", new Style(Style.parseColor("#009ee3"), Style.WHITE));
putKielBusStyle("34", new Style(Style.parseColor("#009ee3"), Style.WHITE));
putKielBusStyle("41", new Style(Style.parseColor("#8ba5d6"), Style.WHITE));
putKielBusStyle("42", new Style(Style.parseColor("#8ba5d6"), Style.WHITE));
putKielBusStyle("50", new Style(Style.parseColor("#00a138"), Style.WHITE));
putKielBusStyle("51", new Style(Style.parseColor("#00a138"), Style.WHITE));
putKielBusStyle("52", new Style(Style.parseColor("#00a138"), Style.WHITE));
putKielBusStyle("60S", new Style(Style.parseColor("#92b4af"), Style.WHITE));
putKielBusStyle("60", new Style(Style.parseColor("#92b4af"), Style.WHITE));
putKielBusStyle("61", new Style(Style.parseColor("#9d1380"), Style.WHITE));
putKielBusStyle("62", new Style(Style.parseColor("#9d1380"), Style.WHITE));
putKielBusStyle("71", new Style(Style.parseColor("#777e6f"), Style.WHITE));
putKielBusStyle("72", new Style(Style.parseColor("#777e6f"), Style.WHITE));
putKielBusStyle("81", new Style(Style.parseColor("#00836e"), Style.WHITE));
putKielBusStyle("91", new Style(Style.parseColor("#947e62"), Style.WHITE));
putKielBusStyle("92", new Style(Style.parseColor("#947e62"), Style.WHITE));
putKielBusStyle("100", new Style(Style.parseColor("#d40a11"), Style.WHITE));
putKielBusStyle("101", new Style(Style.parseColor("#d40a11"), Style.WHITE));
putKielBusStyle("300", new Style(Style.parseColor("#cf94c2"), Style.WHITE));
putKielBusStyle("501", new Style(Style.parseColor("#0f3f93"), Style.WHITE));
putKielBusStyle("502", new Style(Style.parseColor("#0f3f93"), Style.WHITE));
putKielBusStyle("503", new Style(Style.parseColor("#0f3f93"), Style.WHITE));
putKielBusStyle("503S", new Style(Style.parseColor("#0f3f93"), Style.WHITE));
putKielBusStyle("512", new Style(Style.parseColor("#0f3f93"), Style.WHITE));
putKielBusStyle("512S", new Style(Style.parseColor("#0f3f93"), Style.WHITE));
}
private static void putKielBusStyle(final String name, final Style style)
{
STYLES.put("AK|B" + name, style);
STYLES.put("KIEL|B" + name, style);
}
} }