@@ -558,7 +558,9 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
558
558
tagKeys .addAll (aTags .keySet ());
559
559
}
560
560
}
561
- if (selectedOsmStop !=null ) tagKeys .addAll (selectedOsmStop .keySet ());
561
+ if (selectedOsmStop != null && !selectedOsmStop .getStopID ().equals ("New" )) {
562
+ tagKeys .addAll (selectedOsmStop .keySet ());
563
+ }
562
564
563
565
// set new size to the table
564
566
stopTableModel = new TagReportTableModel (tagKeys .size ()+2 );
@@ -573,13 +575,16 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
573
575
Stop finalSt = finalStops .get (selectedNewStop .getStopID ());
574
576
ArrayList <Boolean > finalCB = finalCheckboxes .get (selectedNewStop .getStopID ());
575
577
576
- if (selectedOsmStop != null ) {
578
+ if (selectedOsmStop != null && ! selectedOsmStop . getStopID (). equals ( "New" ) ) {
577
579
stopTableModel .setRowValueAt (new Object [] {"lat" , agencyStop .getLat (), finalCB .get (0 ), selectedOsmStop .getLat (), finalCB .get (1 ), finalSt .getLat ()}, 0 );
578
580
stopTableModel .setRowValueAt (new Object [] {"lon" , agencyStop .getLon (), finalCB .get (2 ), selectedOsmStop .getLon (), finalCB .get (3 ), finalSt .getLon ()}, 1 );
579
581
} else {
580
582
stopTableModel .setRowValueAt (new Object [] {"lat" , agencyStop .getLat (), finalCB .get (0 ), "" ,finalCB .get (1 ), finalSt .getLat ()}, 0 );
581
583
stopTableModel .setRowValueAt (new Object [] {"lon" , agencyStop .getLon (), finalCB .get (2 ), "" , finalCB .get (3 ), finalSt .getLon ()}, 1 );
582
584
}
585
+
586
+ //tableIndex in index+2 because of lat and lon
587
+ int tableIndex = 2 ;
583
588
for (int i =0 ; i <tkeys .size (); i ++){
584
589
String k = tkeys .get (i );
585
590
boolean osmCB = false , gtfsCB = false ;
@@ -590,7 +595,9 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
590
595
newValue = selectedNewStop .getTag (k );
591
596
gtfsValue = (String )aTags .get (k );
592
597
}
593
- if (selectedOsmStop !=null ) osmValue = selectedOsmStop .getTag (k );
598
+ if (selectedOsmStop != null && !selectedOsmStop .getStopID ().equals ("New" )) {
599
+ osmValue = selectedOsmStop .getTag (k );
600
+ }
594
601
//don't wipe extra tags for UPLOAD_CONFLICT, use GTFS values for missing tags for MODIFY;
595
602
if (!(osmValue == null || osmValue .isEmpty ()) &&
596
603
(gtfsValue == null || gtfsValue .isEmpty ()))
@@ -603,10 +610,11 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
603
610
gtfsCB = true ;
604
611
newValue = gtfsValue ;
605
612
}
606
- //add tag to table, index+2 because of lat and lon
607
- if (finalStopsAccepted .containsKey (selectedNewStop .getStopID ()) && selectedOsmStop !=null
608
- && finalStopsAccepted .get (selectedNewStop .getStopID ()).getOsmId ().equals (selectedOsmStop .getOsmId ())) {
609
- stopTableModel .setRowValueAt (new Object []{k , gtfsValue , finalCB .get ((i + 2 ) * 2 ), osmValue , finalCB .get ((i + 2 ) * 2 + 1 ), finalSt .getTag (k )}, i + 2 );
613
+ // add tag to table
614
+ if (finalStopsAccepted .containsKey (selectedNewStop .getStopID ())
615
+ && selectedOsmStop != null
616
+ && finalStopsAccepted .get (selectedNewStop .getStopID ()).getOsmId () != null && finalStopsAccepted .get (selectedNewStop .getStopID ()).getOsmId ().equals (selectedOsmStop .getOsmId ())) {
617
+ stopTableModel .setRowValueAt (new Object []{k , gtfsValue , finalCB .get ((tableIndex ) * 2 ), osmValue , finalCB .get ((tableIndex ) * 2 + 1 ), finalSt .getTag (k )}, tableIndex );
610
618
// if(selectedOsmStop!=null) osmValue = (String)selectedOsmStop.getTag(k);
611
619
//
612
620
// /* default to GTFS checked
@@ -626,17 +634,18 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
626
634
// }
627
635
// //add tag to table, index+2 because of lat and lon
628
636
// if(selectedNewStop.getReportCategory().equals("UPLOAD_CONFLICT")) {
629
- // stopTableModel.setRowValueAt(new Object[] {k, gtfsValue, gtfsCheckValue, osmValue, osmCheckValue, newValue}, i+2 );
637
+ // stopTableModel.setRowValueAt(new Object[] {k, gtfsValue, gtfsCheckValue, osmValue, osmCheckValue, newValue}, tableIndex );
630
638
//>>>>>>> 1a58b026a52d1271696dac9c53450d65f773cf06
631
639
} else {
632
- stopTableModel .setRowValueAt (new Object []{k , gtfsValue , gtfsCB , osmValue , osmCB , newValue }, i + 2 );
640
+ stopTableModel .setRowValueAt (new Object []{k , gtfsValue , gtfsCB , osmValue , osmCB , newValue }, tableIndex );
633
641
}
634
642
/*
635
643
if(selectedNewStop.getReportCategory().equals("UPLOAD_CONFLICT")) {
636
- stopTableModel.setRowValueAt(new Object[] {k, gtfsValue, true, osmValue, false, newValue}, i+2 );
644
+ stopTableModel.setRowValueAt(new Object[] {k, gtfsValue, true, osmValue, false, newValue}, tableIndex );
637
645
} else {
638
- stopTableModel.setRowValueAt(new Object[] {k, gtfsValue, finalCB.get((i+2 )*2), osmValue, finalCB.get((i+2 )*2+1), finalSt.getTag(k)}, i+2 );
646
+ stopTableModel.setRowValueAt(new Object[] {k, gtfsValue, finalCB.get((tableIndex )*2), osmValue, finalCB.get((tableIndex )*2+1), finalSt.getTag(k)}, tableIndex );
639
647
}*/
648
+ tableIndex ++;
640
649
}
641
650
642
651
//set the column width with checkbox to minimum size
@@ -661,10 +670,10 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
661
670
dataTable .getModel ().addTableModelListener (this );
662
671
663
672
if (selectedNewStop .getReportCategory ().equals ("UPLOAD_NO_CONFLICT" ) && !finalStopsAccepted .containsKey (selectedNewStop .getStopID ()))
664
- updateButtonTableStop ("Accept" , true , "Add" , true );
673
+ updateButtonTableStop ("Accept" , true , "Add" , true );
665
674
else
666
675
updateButtonTableStop ("Accept" , true , "Save Change" , false );
667
- if (selectedOsmStop != null && usedOSMstops .containsKey (selectedOsmStop .getOsmId () )
676
+ if (selectedOsmStop != null && ! selectedOsmStop . getStopID (). equals ( "New" ) && usedOSMstops .containsKey (selectedOsmStop .getOsmId ())
668
677
&& !usedOSMstops .get (selectedOsmStop .getOsmId ()).getStopID ().equals (agencyStop ))
669
678
// && !finalStopsAccepted.get(selectedNewStop.getStopID()).getOsmId().equals(selectedOsmStop.getOsmId())) // TODO allow changing osm matches
670
679
updateButtonTableStop ("Already Matched" , false , "Already Matched" , false );
@@ -673,7 +682,7 @@ private void updateStopTable(Stop selectedNewStop, Stop selectedOsmStop){
673
682
// set last edited information
674
683
String lastEditedUser = "N/A" ;
675
684
String lastEditedDate = "N/A" ;
676
- if (selectedOsmStop != null ) {
685
+ if (selectedOsmStop != null && ! selectedOsmStop . getStopID (). equals ( "New" ) && usedOSMstops . containsKey ( selectedOsmStop . getOsmId ()) ) {
677
686
if (selectedOsmStop .getLastEditedOsmUser ()!=null && !selectedOsmStop .getLastEditedOsmUser ().equals ("" ))
678
687
lastEditedUser = selectedOsmStop .getLastEditedOsmUser ();
679
688
if (selectedOsmStop .getLastEditedOsmDate ()!=null && !selectedOsmStop .getLastEditedOsmDate ().equals ("" ))
@@ -721,7 +730,13 @@ private void updateBusStop(Stop st){
721
730
tableStopButton.setVisible(true);
722
731
}
723
732
*/
724
- osmStops = new Stop [osmEquiv .size ()];
733
+ if (st .getReportCategory ().equals ("UPLOAD_CONFLICT" )) {
734
+ // Add an entry that can be selected to create a new stop instead of using an existing OSM stop
735
+ osmStops = new Stop [osmEquiv .size () + 1 ];
736
+ } else {
737
+ osmStops = new Stop [osmEquiv .size ()];
738
+ }
739
+
725
740
for (int i =0 ; i <osmEquiv .size (); i ++){
726
741
osmStops [i ] = osmEquiv .get (i );
727
742
tempStopsGeo .add (new GeoPosition (Double .parseDouble (osmStops [i ].getLat ()), Double .parseDouble (osmStops [i ].getLon ())));
@@ -739,6 +754,9 @@ private void updateBusStop(Stop st){
739
754
} else {
740
755
updateStopTable (st , null );
741
756
}
757
+ if (st .getReportCategory ().equals ("UPLOAD_CONFLICT" )) {
758
+ osmStops [osmStops .length - 1 ] = new Stop ("New" , "" , "" , "" , "" ); // Set a null stop, which will be interpreted as "create a new stop, don't use an existing one"
759
+ }
742
760
} else {
743
761
updateStopTable (st , null );
744
762
}
@@ -902,7 +920,7 @@ public void paint(Graphics2D g, JXMapViewer map, int w, int h) {
902
920
903
921
private void addSelectedStopsOverlay (Stop gtfsStop , Stop osmStop ){
904
922
boolean isOverlapped =false ;
905
- if (gtfsStop != null && osmStop != null ) {
923
+ if (gtfsStop != null && osmStop != null && ! osmStop . getStopID (). equals ( "New" )) {
906
924
if (OsmDistance .distVincenty (gtfsStop .getLat (), gtfsStop .getLon (), osmStop .getLat (), osmStop .getLon ())<10 ){
907
925
isOverlapped =true ;
908
926
}
@@ -937,7 +955,7 @@ public void paint(Graphics2D g, JXMapViewer map, int w, int h) {
937
955
selectedGtfsOverlayPainter = null;
938
956
}*/
939
957
940
- if (osmStop != null ) {
958
+ if (osmStop != null && ! osmStop . getStopID (). equals ( "New" )) {
941
959
final Stop tempStop = new Stop (osmStop );
942
960
selectedOsmOverlayPainter = new Painter <JXMapViewer >() {
943
961
public void paint (Graphics2D g , JXMapViewer map , int w , int h ) {
@@ -1259,12 +1277,13 @@ private void generateStopsToUpload(Hashtable<String, Stop> stops){
1259
1277
for (int i =0 ; i <stopIds .size (); i ++){
1260
1278
Stop s = stops .get (stopIds .get (i ));
1261
1279
String category = s .getReportCategory ();
1262
- if (category .equals ("UPLOAD_NO_CONFLICT" )){
1280
+ if (s .getOsmId () == null ) {
1281
+ upload .add (s );
1282
+ } else if (category .equals ("UPLOAD_NO_CONFLICT" )) {
1263
1283
upload .add (s );
1264
1284
}
1265
1285
else if (category .equals ("UPLOAD_CONFLICT" ) && acceptedOnlyCheckbox .isSelected ()){
1266
1286
modify .add (s );
1267
-
1268
1287
}
1269
1288
else if (category .equals ("UPLOAD_CONFLICT" )){
1270
1289
// upload the new stop
@@ -2650,7 +2669,7 @@ private void tableStopButtonActionPerformed(java.awt.event.ActionEvent evt) {//G
2650
2669
2651
2670
// Save to final Stops
2652
2671
Stop st = saveAcceptedDataToFinalStops (selectedGtfs );
2653
- if (selectedOSMStop != null ) {
2672
+ if (selectedOSMStop != null && ! selectedOSMStop . getStopID (). equals ( "New" ) ) {
2654
2673
st .setOsmId (selectedOSMStop .getOsmId ());
2655
2674
usedOSMstops .put (selectedOSMStop .getOsmId (),st ); //TODO do this properly
2656
2675
//broken
@@ -2665,7 +2684,8 @@ private void tableStopButtonActionPerformed(java.awt.event.ActionEvent evt) {//G
2665
2684
if (tableStopButtonText .contains ("Accept" ) || tableStopButtonText .contains ("Add" ))
2666
2685
{
2667
2686
if ( !selectedGtfsStop .getReportCategory ().equals ("MODIFY" )
2668
- && !selectedGtfsStop .getReportCategory ().equals ("UPLOAD_NO_CONFLICT" ) )
2687
+ && !selectedGtfsStop .getReportCategory ().equals ("UPLOAD_NO_CONFLICT" )
2688
+ && selectedOSMStop != null && !selectedOSMStop .getStopID ().equals ("New" ))
2669
2689
{
2670
2690
2671
2691
selectedGtfsStop .setOsmId (selectedOSMStop .getOsmId ());
@@ -2698,7 +2718,7 @@ private void tableStopButtonActionPerformed(java.awt.event.ActionEvent evt) {//G
2698
2718
Stop st = saveAcceptedDataToFinalStops (selectedGtfs );
2699
2719
Stop selectedOsmStop = (Stop ) osmStopsComboBox .getSelectedItem ();
2700
2720
// set osmId and version number
2701
- if (selectedOsmStop != null ) {
2721
+ if (selectedOsmStop != null && ! selectedOsmStop . getStopID (). equals ( "New" ) ) {
2702
2722
if (st .getOsmId () == null ) {
2703
2723
st .setOsmId (selectedOsmStop .getOsmId ());
2704
2724
}
@@ -2744,7 +2764,7 @@ private void tableStopButtonActionPerformed(java.awt.event.ActionEvent evt) {//G
2744
2764
if(selectedNewStop.getReportCategory().equals("UPLOAD_NO_CONFLICT") && !finalStopsAccepted.containsKey(selectedNewStop.getStopID()))
2745
2765
updateButtonTableStop("Accept", true, "Add", true);
2746
2766
} else */ if (selectedNewStop .getReportCategory ().equals ("UPLOAD_NO_CONFLICT" ) && !finalStopsAccepted .containsKey (selectedNewStop .getStopID ()))
2747
- updateButtonTableStop ("Accept" , true , "Add" , true );
2767
+ updateButtonTableStop ("Accept" , true , "Add" , true );
2748
2768
else
2749
2769
{
2750
2770
updateButtonTableStop ("Accept" , true , "Save Change" , false );
0 commit comments