Upgrade offline poi/bug editing
This commit is contained in:
parent
f1e1ef533f
commit
3d9cf54ec3
8 changed files with 107 additions and 184 deletions
|
@ -44,6 +44,13 @@ public class OSMSettings {
|
|||
// POI
|
||||
AMENITY("amenity"), //$NON-NLS-1$
|
||||
SHOP("shop"), //$NON-NLS-1$
|
||||
LANDUSE("landuse"), //$NON-NLS-1$
|
||||
OFFICE("office"), //$NON-NLS-1$
|
||||
EMERGENCY("emergency"), //$NON-NLS-1$
|
||||
MILITARY("military"), //$NON-NLS-1$
|
||||
ADMINISTRATIVE("administrative"), //$NON-NLS-1$
|
||||
MAN_MADE("man_made"), //$NON-NLS-1$
|
||||
BARRIER("barrier"), //$NON-NLS-1$
|
||||
LEISURE("leisure"), //$NON-NLS-1$
|
||||
TOURISM("tourism"), //$NON-NLS-1$
|
||||
SPORT("sport"), //$NON-NLS-1$
|
||||
|
|
|
@ -257,10 +257,9 @@ public class EditingPOIActivity implements DialogProvider {
|
|||
layout.setLayoutParams(tlParams);
|
||||
layout.setColumnStretchable(1, true);
|
||||
layout.setVisibility((layout.getVisibility() == View.VISIBLE) ? View.GONE : View.VISIBLE);
|
||||
|
||||
if (layout.getVisibility() == View.VISIBLE) {
|
||||
Button addTag = (Button) dlg.findViewById(R.id.addTag);
|
||||
addTag.setVisibility((layout.getVisibility() == View.VISIBLE) ? View.GONE : View.VISIBLE);
|
||||
addTag.setVisibility((layout.getVisibility() == View.VISIBLE) ? View.VISIBLE : View.GONE);
|
||||
if (layout.getVisibility() == View.VISIBLE) {
|
||||
addTag.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -269,38 +268,32 @@ public class EditingPOIActivity implements DialogProvider {
|
|||
tlp.leftMargin = 5;
|
||||
newTagRow.setLayoutParams(tlp);
|
||||
|
||||
final Button tag = new Button(ctx);
|
||||
final EditText value = new EditText(ctx);
|
||||
final AutoCompleteTextView tag = new AutoCompleteTextView(ctx);
|
||||
final AutoCompleteTextView value = new AutoCompleteTextView(ctx);
|
||||
final Button delete = new Button(ctx);
|
||||
|
||||
tag.setLayoutParams(tlp);
|
||||
tag.setText("<Tag>");
|
||||
tag.setHint("Tag");
|
||||
|
||||
final Set<String> tagKeys = new LinkedHashSet<String>();
|
||||
for (OSMTagKey t : OSMTagKey.values()) {
|
||||
if ((t != OSMTagKey.NAME) && (t != OSMTagKey.OPENING_HOURS) && (t != OSMTagKey.PHONE)
|
||||
&& (t != OSMTagKey.WEBSITE)) {
|
||||
tagKeys.add(t.getValue());
|
||||
}
|
||||
}
|
||||
ArrayAdapter<Object> adapter = new ArrayAdapter<Object>(ctx, R.layout.list_textview, tagKeys.toArray());
|
||||
tag.setAdapter(adapter);
|
||||
tag.setThreshold(1);
|
||||
tag.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// Comment: To exclude basic tags OSMTagKey.NAME, OSMTagKey.OPENING_HOURS, OSMTagKey.PHONE, OSMTagKey.WEBSITE;
|
||||
final OSMTagKey[] allValues = OSMTagKey.values();
|
||||
final OSMTagKey[] values = new OSMTagKey[allValues.length-4];
|
||||
int j = 0;
|
||||
for (int i = 0; i < allValues.length; i++) {
|
||||
if ( (allValues[i] != OSMTagKey.NAME) &&
|
||||
(allValues[i] != OSMTagKey.OPENING_HOURS) &&
|
||||
(allValues[i] != OSMTagKey.PHONE) &&
|
||||
(allValues[i] != OSMTagKey.WEBSITE) ) {
|
||||
values[j] = allValues[i];
|
||||
j++;
|
||||
}
|
||||
}
|
||||
final String[] vals = new String[values.length];
|
||||
for (int i=0; i<values.length; i++) {
|
||||
vals[i] = values[i].getValue();
|
||||
}
|
||||
Builder builder = new AlertDialog.Builder(ctx);
|
||||
builder.setItems(vals, new Dialog.OnClickListener() {
|
||||
final String[] tags = tagKeys.toArray(new String[tagKeys.size()]);
|
||||
builder.setItems(tags, new Dialog.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
tag.setText(vals[which]);
|
||||
tag.invalidate();
|
||||
tag.setText(tags[which]);
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -314,23 +307,26 @@ public class EditingPOIActivity implements DialogProvider {
|
|||
tlp.width = 80;
|
||||
value.setLayoutParams(tlp);
|
||||
value.setHint("Value");
|
||||
Set<String> subCategories = MapRenderingTypes.getDefault().getAmenityNameToType().keySet();
|
||||
ArrayAdapter<Object> valueAdapter = new ArrayAdapter<Object>(ctx, R.layout.list_textview, subCategories.toArray());
|
||||
value.setThreshold(1);
|
||||
value.setAdapter(valueAdapter);
|
||||
value.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
if ((newTagRow != null)
|
||||
&& (tag != null) && (value != null)
|
||||
&& (tag.getText() != null) && (value.getText() != null)
|
||||
&& (!tag.getText().equals("")) && (!value.getText().equals(""))) {
|
||||
System.out.println(tag.getText());
|
||||
if ((newTagRow != null) && (tag != null) && (value != null) && (tag.getText() != null)
|
||||
&& (value.getText() != null) && (!tag.getText().equals("")) && (!value.getText().equals(""))) {
|
||||
additionalTags.put(tag.getText().toString(), value.getText().toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {}
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
});
|
||||
tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
|
||||
tlp.gravity = Gravity.CENTER;
|
||||
|
|
|
@ -6,7 +6,6 @@ import java.util.LinkedHashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.osmand.LogUtil;
|
||||
import net.osmand.access.AccessibleToast;
|
||||
import net.osmand.osm.EntityInfo;
|
||||
import net.osmand.osm.Node;
|
||||
|
@ -97,7 +96,6 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
listAdapter.clear();
|
||||
List<OpenstreetmapPoint> l1 = dbpoi.getOpenstreetmapPoints();
|
||||
List<OsmbugsPoint> l2 = dbbug.getOsmbugsPoints();
|
||||
android.util.Log.d(LogUtil.TAG, "List " + (l1.size() + l2.size()) + " length");
|
||||
for (OpenstreetmapPoint p : l1) {
|
||||
listAdapter.addOsmPoint(p);
|
||||
}
|
||||
|
@ -122,9 +120,9 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
} else if(itemId == R.id.deletemod) {
|
||||
OsmPoint info = (OsmPoint) listAdapter.getChild(group, child);
|
||||
if (info.getGroup() == OsmPoint.Group.POI) {
|
||||
dbpoi.deleteAllPOIModifications(info.getId());
|
||||
dbpoi.deletePOI((OpenstreetmapPoint) info);
|
||||
} else if (info.getGroup() == OsmPoint.Group.BUG) {
|
||||
dbbug.deleteAllBugModifications(info.getId());
|
||||
dbbug.deleteAllBugModifications((OsmbugsPoint) info);
|
||||
}
|
||||
listAdapter.delete(info);
|
||||
return true;
|
||||
|
@ -216,7 +214,7 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
listAdapter.categoryIdChanged(point.getId(), n.getId());
|
||||
}
|
||||
remotepoi.updateNodeInIndexes(LocalOpenstreetmapActivity.this, p.getAction(), n, p.getEntity());
|
||||
dbpoi.deleteOpenstreetmap(p);
|
||||
dbpoi.deletePOI(p);
|
||||
publishProgress(p);
|
||||
uploaded++;
|
||||
}
|
||||
|
@ -224,14 +222,12 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
OsmbugsPoint p = (OsmbugsPoint) point;
|
||||
if (p.getAction() == OsmPoint.Action.CREATE) {
|
||||
remotebug.createNewBug(p.getLatitude(), p.getLongitude(), p.getText(), p.getAuthor());
|
||||
dbbug.deleteOsmbugs(p);
|
||||
} else if (p.getAction() == OsmPoint.Action.MODIFY) {
|
||||
remotebug.addingComment(p.getId(), p.getText(), p.getAuthor());
|
||||
dbbug.deleteOsmbugs(p);
|
||||
} else if (p.getAction() == OsmPoint.Action.DELETE) {
|
||||
remotebug.closingBug(p.getId());
|
||||
dbbug.deleteOsmbugs(p);
|
||||
}
|
||||
dbbug.deleteAllBugModifications(p);
|
||||
publishProgress(p);
|
||||
uploaded++;
|
||||
}
|
||||
|
@ -316,13 +312,6 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
|
||||
public void delete(OsmPoint i) {
|
||||
final AmenityIndexRepositoryOdb repo = getMyApplication().getResourceManager().getUpdatablePoiDb();
|
||||
android.util.Log.d(LogUtil.TAG, "Delete " + i);
|
||||
|
||||
if (i.getGroup() == OsmPoint.Group.POI) {
|
||||
dbpoi.deleteOpenstreetmap((OpenstreetmapPoint) i);
|
||||
} else if (i.getGroup() == OsmPoint.Group.BUG) {
|
||||
dbbug.deleteOsmbugs((OsmbugsPoint) i);
|
||||
}
|
||||
Long c = i.getId();
|
||||
if(c != null){
|
||||
List<OsmPoint> list = data.get(c);
|
||||
|
@ -412,9 +401,9 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
LayoutInflater inflater = getLayoutInflater();
|
||||
v = inflater.inflate(net.osmand.plus.R.layout.local_openstreetmap_list_item_category, parent, false);
|
||||
}
|
||||
adjustIndicator(groupPosition, isExpanded, v);
|
||||
StringBuilder t = new StringBuilder();
|
||||
t.append(" id:").append(group);
|
||||
TextView nameView = ((TextView) v.findViewById(R.id.local_openstreetmap_category_name));
|
||||
t.append(" [").append(getChildrenCount(groupPosition));
|
||||
if(getString(R.string.local_openstreetmap_items).length() > 0){
|
||||
t.append(" ").append(getString(R.string.local_openstreetmap_items));
|
||||
|
@ -423,8 +412,9 @@ public class LocalOpenstreetmapActivity extends OsmandExpandableListActivity {
|
|||
t.append(" ").append(getString(R.string.local_openstreetmap_items));
|
||||
}
|
||||
t.append("]");
|
||||
TextView nameView = ((TextView) v.findViewById(R.id.local_openstreetmap_category_name));
|
||||
nameView.setText(t.toString());
|
||||
adjustIndicator(groupPosition, isExpanded, v);
|
||||
|
||||
|
||||
return v;
|
||||
}
|
||||
|
|
|
@ -40,14 +40,14 @@ public class OpenstreetmapLocalUtil extends AbstractOpenstreetmapUtil {
|
|||
public Node commitNodeImpl(OsmPoint.Action action, Node n, EntityInfo info, String comment){
|
||||
Node newNode = n;
|
||||
if (n.getId() == -1) {
|
||||
newNode = new Node(n,--nextid); //generate local id for the created node
|
||||
newNode = new Node(n, --nextid); // generate local id for the created node
|
||||
}
|
||||
OpenstreetmapPoint p = new OpenstreetmapPoint();
|
||||
p.setEntity(newNode);
|
||||
p.setAction(action);
|
||||
p.setComment(comment);
|
||||
if (p.getAction() == OsmPoint.Action.DELETE && newNode.getId() < 0) { //if it is our local poi
|
||||
db.deleteAllPOIModifications(p.getId());
|
||||
db.deletePOI(p);
|
||||
} else {
|
||||
db.addOpenstreetmap(p);
|
||||
}
|
||||
|
|
|
@ -64,12 +64,6 @@ public class OpenstreetmapPoint extends OsmPoint implements Serializable {
|
|||
return Group.POI;
|
||||
}
|
||||
|
||||
public String getOpeninghours() {
|
||||
String ret = entity.getTag(OSMTagKey.OPENING_HOURS.getValue());
|
||||
if (ret == null)
|
||||
return "";
|
||||
return entity.getTag(ret);
|
||||
}
|
||||
|
||||
public Node getEntity() {
|
||||
return entity;
|
||||
|
|
|
@ -3,9 +3,12 @@ package net.osmand.plus.osmedit;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.ibm.icu.impl.locale.StringTokenIterator;
|
||||
import com.ibm.icu.util.StringTokenizer;
|
||||
|
||||
import net.osmand.osm.Node;
|
||||
import net.osmand.osm.OSMSettings.OSMTagKey;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
|
@ -13,29 +16,24 @@ import android.database.sqlite.SQLiteOpenHelper;
|
|||
|
||||
public class OpenstreetmapsDbHelper extends SQLiteOpenHelper {
|
||||
|
||||
private static final int DATABASE_VERSION = 1;
|
||||
private static final int DATABASE_VERSION = 2;
|
||||
public static final String OPENSTREETMAP_DB_NAME = "openstreetmap"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_TABLE_NAME = "openstreetmap"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_TABLE_NAME = "openstreetmaptable"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_ID = "id"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_NAME = "name"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_TYPE = "type"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_SUBTYPE = "subtype"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_LAT = "latitude"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_LON = "longitude"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_LAT= "lat"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_LON= "lon"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_TAGS = "tags"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_ACTION = "action"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_COMMENT = "comment"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_COL_OPENINGHOURS = "openinghours"; //$NON-NLS-1$
|
||||
private static final String OPENSTREETMAP_TABLE_CREATE = "CREATE TABLE " + OPENSTREETMAP_TABLE_NAME + " (" + //$NON-NLS-1$ //$NON-NLS-2$
|
||||
OPENSTREETMAP_COL_ID + " INTEGER, " + OPENSTREETMAP_COL_NAME + " TEXT, " + OPENSTREETMAP_COL_TYPE + " TEXT, " + OPENSTREETMAP_COL_SUBTYPE + " TEXT, " + //$NON-NLS-1$ //$NON-NLS-2$
|
||||
OPENSTREETMAP_COL_LAT + " double, " + OPENSTREETMAP_COL_LON + " double, " + //$NON-NLS-1$ //$NON-NLS-2$
|
||||
OPENSTREETMAP_COL_ACTION + " TEXT, " + OPENSTREETMAP_COL_COMMENT + " TEXT, " + OPENSTREETMAP_COL_OPENINGHOURS + " TEXT);"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
OPENSTREETMAP_COL_ID + " bigint,"+
|
||||
OPENSTREETMAP_COL_LAT + " double," + OPENSTREETMAP_COL_LON + " double," +
|
||||
OPENSTREETMAP_COL_TAGS + " VARCHAR(2048)," +
|
||||
OPENSTREETMAP_COL_ACTION + " TEXT, " + OPENSTREETMAP_COL_COMMENT + " TEXT);"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
private List<OpenstreetmapPoint> cachedOpenstreetmapPoints = new ArrayList<OpenstreetmapPoint>();
|
||||
// private final Context context;
|
||||
|
||||
public OpenstreetmapsDbHelper(Context context) {
|
||||
super(context, OPENSTREETMAP_DB_NAME, null, DATABASE_VERSION);
|
||||
// this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -45,94 +43,75 @@ public class OpenstreetmapsDbHelper extends SQLiteOpenHelper {
|
|||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||
if(newVersion == 2) {
|
||||
// db.execSQL("DROP TABLE " + OPENSTREETMAP_TABLE_NAME);
|
||||
db.execSQL(OPENSTREETMAP_TABLE_CREATE);
|
||||
}
|
||||
}
|
||||
|
||||
public List<OpenstreetmapPoint> getOpenstreetmapPoints() {
|
||||
checkOpenstreetmapPoints();
|
||||
return cachedOpenstreetmapPoints;
|
||||
return checkOpenstreetmapPoints();
|
||||
}
|
||||
|
||||
public boolean addOpenstreetmap(OpenstreetmapPoint p) {
|
||||
checkOpenstreetmapPoints();
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
if (db != null) {
|
||||
StringBuilder tags = new StringBuilder();
|
||||
Iterator<Entry<String, String>> eit = p.getEntity().getTags().entrySet().iterator();
|
||||
while(eit.hasNext()) {
|
||||
Entry<String, String> e = eit.next();
|
||||
tags.append(e.getKey()).append("$$$").append(e.getValue());
|
||||
if(eit.hasNext()) {
|
||||
tags.append("$$$");
|
||||
}
|
||||
}
|
||||
db.execSQL("INSERT INTO " + OPENSTREETMAP_TABLE_NAME +
|
||||
" (" + OPENSTREETMAP_COL_ID + ", " + OPENSTREETMAP_COL_NAME + ", " + OPENSTREETMAP_COL_TYPE + ", " + OPENSTREETMAP_COL_SUBTYPE + ", " + OPENSTREETMAP_COL_LAT + "," + OPENSTREETMAP_COL_LON + "," + OPENSTREETMAP_COL_ACTION + "," + OPENSTREETMAP_COL_COMMENT + "," + OPENSTREETMAP_COL_OPENINGHOURS + ")" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[] { p.getId(), p.getName(), p.getType(), p.getSubtype(), p.getLatitude(), p.getLongitude(), OsmPoint.stringAction.get(p.getAction()), p.getComment(), p.getOpeninghours() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
cachedOpenstreetmapPoints.add(p);
|
||||
p.setStored(true);
|
||||
" (" + OPENSTREETMAP_COL_ID + ", " + OPENSTREETMAP_COL_LAT + ", " + OPENSTREETMAP_COL_LON + ", " + OPENSTREETMAP_COL_TAGS + ", " + OPENSTREETMAP_COL_ACTION + "," + OPENSTREETMAP_COL_COMMENT + ")" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?)",
|
||||
new Object[] { p.getId(),p.getLatitude(), p.getLongitude(), tags.toString() , OsmPoint.stringAction.get(p.getAction()), p.getComment(), }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean deleteOpenstreetmap(OpenstreetmapPoint p) {
|
||||
public boolean deletePOI(OpenstreetmapPoint p) {
|
||||
checkOpenstreetmapPoints();
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
if (db != null) {
|
||||
db.execSQL("DELETE FROM " + OPENSTREETMAP_TABLE_NAME +
|
||||
" WHERE " + OPENSTREETMAP_COL_ID + " = ? AND " +
|
||||
OPENSTREETMAP_COL_NAME + " = ? AND " +
|
||||
OPENSTREETMAP_COL_TYPE + " = ? AND " +
|
||||
OPENSTREETMAP_COL_SUBTYPE + " = ? AND " +
|
||||
OPENSTREETMAP_COL_LAT + " = ? AND " +
|
||||
OPENSTREETMAP_COL_LON + " = ? AND " +
|
||||
OPENSTREETMAP_COL_ACTION + " = ? AND " +
|
||||
OPENSTREETMAP_COL_COMMENT + " = ? AND " +
|
||||
OPENSTREETMAP_COL_OPENINGHOURS + " = ?",
|
||||
new Object[] { p.getId(), p.getName(), p.getType(), p.getSubtype(), p.getLatitude(), p.getLongitude(), OsmPoint.stringAction.get(p.getAction()), p.getComment(), p.getOpeninghours() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
cachedOpenstreetmapPoints.remove(p);
|
||||
p.setStored(false);
|
||||
" WHERE " + OPENSTREETMAP_COL_ID + " = ?", new Object[] { p.getId() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean deleteAllPOIModifications(long id) {
|
||||
checkOpenstreetmapPoints();
|
||||
private List<OpenstreetmapPoint> checkOpenstreetmapPoints(){
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
List<OpenstreetmapPoint> cachedOpenstreetmapPoints = new ArrayList<OpenstreetmapPoint>();
|
||||
if (db != null) {
|
||||
db.execSQL("DELETE FROM " + OPENSTREETMAP_TABLE_NAME +
|
||||
" WHERE " + OPENSTREETMAP_COL_ID + " = ?", new Object[] { id }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
//remove all associated actions with that POI
|
||||
for (Iterator<OpenstreetmapPoint> it = cachedOpenstreetmapPoints.iterator(); it.hasNext();) {
|
||||
if (it.next().getId() == id) {
|
||||
it.remove();
|
||||
}
|
||||
};
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void checkOpenstreetmapPoints(){
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
if (db != null) {
|
||||
Cursor query = db.rawQuery("SELECT " + OPENSTREETMAP_COL_ID + ", " + OPENSTREETMAP_COL_NAME + ", " + OPENSTREETMAP_COL_TYPE + ", " + OPENSTREETMAP_COL_SUBTYPE + ", " + OPENSTREETMAP_COL_LAT + "," + OPENSTREETMAP_COL_LON + "," + OPENSTREETMAP_COL_ACTION + "," + OPENSTREETMAP_COL_COMMENT + "," + OPENSTREETMAP_COL_OPENINGHOURS + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||
Cursor query = db.rawQuery("SELECT " + OPENSTREETMAP_COL_ID + ", " + OPENSTREETMAP_COL_LAT + "," + OPENSTREETMAP_COL_LON + "," + OPENSTREETMAP_COL_ACTION + "," + OPENSTREETMAP_COL_COMMENT + "," + OPENSTREETMAP_COL_TAGS+ " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||
OPENSTREETMAP_TABLE_NAME, null);
|
||||
cachedOpenstreetmapPoints.clear();
|
||||
if (query.moveToFirst()) {
|
||||
do {
|
||||
String name = query.getString(1);
|
||||
OpenstreetmapPoint p = new OpenstreetmapPoint();
|
||||
Node entity = new Node(query.getDouble(4),
|
||||
query.getDouble(5),
|
||||
Node entity = new Node(query.getDouble(1),
|
||||
query.getDouble(2),
|
||||
query.getLong(0));
|
||||
|
||||
entity.putTag(query.getString(2), query.getString(3));
|
||||
entity.putTag(OSMTagKey.NAME.getValue(), name);
|
||||
String openingHours = query.getString(8);
|
||||
if (openingHours != null && openingHours.length() > 0)
|
||||
entity.putTag(OSMTagKey.OPENING_HOURS.getValue(), openingHours);
|
||||
String tags = query.getString(5);
|
||||
String[] split = tags.split("\\$\\$\\$");
|
||||
for(int i=0; i<split.length - 1; i+= 2){
|
||||
entity.putTag(split[i].trim(), split[i+1].trim());
|
||||
}
|
||||
p.setEntity(entity);
|
||||
p.setStored(true);
|
||||
p.setAction(query.getString(6));
|
||||
p.setComment(query.getString(7));
|
||||
p.setAction(query.getString(3));
|
||||
p.setComment(query.getString(4));
|
||||
cachedOpenstreetmapPoints.add(p);
|
||||
} while (query.moveToNext());
|
||||
}
|
||||
query.close();
|
||||
}
|
||||
return cachedOpenstreetmapPoints;
|
||||
}
|
||||
|
||||
public long getMinID() {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package net.osmand.plus.osmedit;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.Context;
|
||||
|
@ -25,12 +24,8 @@ public class OsmBugsDbHelper extends SQLiteOpenHelper {
|
|||
OSMBUGS_COL_LAT + " double, " + OSMBUGS_COL_LON + " double, " + //$NON-NLS-1$ //$NON-NLS-2$
|
||||
OSMBUGS_COL_ACTION + " TEXT, " + OSMBUGS_COL_AUTHOR + " TEXT);"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
private List<OsmbugsPoint> cachedOsmbugsPoints = new ArrayList<OsmbugsPoint>();
|
||||
// private final Context context;
|
||||
|
||||
public OsmBugsDbHelper(Context context) {
|
||||
super(context, OSMBUGS_DB_NAME, null, DATABASE_VERSION);
|
||||
// this.context = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -43,66 +38,39 @@ public class OsmBugsDbHelper extends SQLiteOpenHelper {
|
|||
}
|
||||
|
||||
public List<OsmbugsPoint> getOsmbugsPoints() {
|
||||
checkOsmbugsPoints();
|
||||
return cachedOsmbugsPoints;
|
||||
return checkOsmbugsPoints();
|
||||
}
|
||||
|
||||
public boolean addOsmbugs(OsmbugsPoint p) {
|
||||
checkOsmbugsPoints();
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
if (db != null) {
|
||||
db.execSQL("INSERT INTO " + OSMBUGS_TABLE_NAME +
|
||||
" (" + OSMBUGS_COL_ID + ", " + OSMBUGS_COL_TEXT + ", " + OSMBUGS_COL_LAT + "," + OSMBUGS_COL_LON + "," + OSMBUGS_COL_ACTION + "," + OSMBUGS_COL_AUTHOR + ")" +
|
||||
" VALUES (?, ?, ?, ?, ?, ?)", new Object[] { p.getId(), p.getText(), p.getLatitude(), p.getLongitude(), OsmPoint.stringAction.get(p.getAction()), p.getAuthor() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
cachedOsmbugsPoints.add(p);
|
||||
p.setStored(true);
|
||||
db.execSQL(
|
||||
"INSERT INTO " + OSMBUGS_TABLE_NAME + " (" + OSMBUGS_COL_ID + ", " + OSMBUGS_COL_TEXT + ", " + OSMBUGS_COL_LAT + ","
|
||||
+ OSMBUGS_COL_LON + "," + OSMBUGS_COL_ACTION + "," + OSMBUGS_COL_AUTHOR + ")" + " VALUES (?, ?, ?, ?, ?, ?)", new Object[] { p.getId(), p.getText(), p.getLatitude(), p.getLongitude(), OsmPoint.stringAction.get(p.getAction()), p.getAuthor() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean deleteOsmbugs(OsmbugsPoint p) {
|
||||
public boolean deleteAllBugModifications(OsmbugsPoint p) {
|
||||
checkOsmbugsPoints();
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
if (db != null) {
|
||||
db.execSQL("DELETE FROM " + OSMBUGS_TABLE_NAME +
|
||||
" WHERE " + OSMBUGS_COL_ID + " = ? AND " +
|
||||
OSMBUGS_COL_TEXT + " = ? AND " +
|
||||
OSMBUGS_COL_LAT + " = ? AND " +
|
||||
OSMBUGS_COL_LON + " = ? AND " +
|
||||
OSMBUGS_COL_ACTION + " = ? AND " +
|
||||
OSMBUGS_COL_AUTHOR + " = ?",
|
||||
new Object[] { p.getId(), p.getText(), p.getLatitude(), p.getLongitude(), OsmPoint.stringAction.get(p.getAction()), p.getAuthor() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
cachedOsmbugsPoints.remove(p);
|
||||
p.setStored(false);
|
||||
" WHERE " + OSMBUGS_COL_ID + " = ?", new Object[] { p.getId() }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean deleteAllBugModifications(long id) {
|
||||
checkOsmbugsPoints();
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
if (db != null) {
|
||||
db.execSQL("DELETE FROM " + OSMBUGS_TABLE_NAME +
|
||||
" WHERE " + OSMBUGS_COL_ID + " = ?", new Object[] { id }); //$NON-NLS-1$ //$NON-NLS-2$
|
||||
//remove all associated actions with that Bug
|
||||
for (Iterator<OsmbugsPoint> it = cachedOsmbugsPoints.iterator(); it.hasNext();) {
|
||||
if (it.next().getId() == id) {
|
||||
it.remove();
|
||||
}
|
||||
};
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void checkOsmbugsPoints(){
|
||||
private List<OsmbugsPoint> checkOsmbugsPoints(){
|
||||
SQLiteDatabase db = getWritableDatabase();
|
||||
List<OsmbugsPoint> cachedOsmbugsPoints = new ArrayList<OsmbugsPoint>();
|
||||
if (db != null) {
|
||||
Cursor query = db.rawQuery("SELECT " + OSMBUGS_COL_ID + ", " + OSMBUGS_COL_TEXT + ", " + OSMBUGS_COL_LAT + "," + OSMBUGS_COL_LON + "," + OSMBUGS_COL_ACTION + "," + OSMBUGS_COL_AUTHOR + " FROM " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
|
||||
OSMBUGS_TABLE_NAME, null);
|
||||
cachedOsmbugsPoints.clear();
|
||||
|
||||
if (query.moveToFirst()) {
|
||||
do {
|
||||
OsmbugsPoint p = new OsmbugsPoint();
|
||||
|
@ -113,12 +81,12 @@ public class OsmBugsDbHelper extends SQLiteOpenHelper {
|
|||
p.setLongitude(query.getDouble(3));
|
||||
p.setAction(query.getString(4));
|
||||
p.setAuthor(query.getString(5));
|
||||
p.setStored(true);
|
||||
cachedOsmbugsPoints.add(p);
|
||||
} while (query.moveToNext());
|
||||
}
|
||||
query.close();
|
||||
}
|
||||
return cachedOsmbugsPoints;
|
||||
}
|
||||
|
||||
public long getMinID() {
|
||||
|
|
|
@ -4,10 +4,6 @@ import java.util.HashMap;
|
|||
import java.util.Map;
|
||||
|
||||
public abstract class OsmPoint {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 729654300829771469L;
|
||||
|
||||
public static enum Group {BUG, POI};
|
||||
|
||||
|
@ -26,7 +22,6 @@ public abstract class OsmPoint {
|
|||
};
|
||||
|
||||
private Action action;
|
||||
private boolean stored = false;
|
||||
|
||||
public OsmPoint(){
|
||||
}
|
||||
|
@ -45,9 +40,6 @@ public abstract class OsmPoint {
|
|||
return action;
|
||||
}
|
||||
|
||||
public boolean isStored() {
|
||||
return stored;
|
||||
}
|
||||
|
||||
public void setAction(String action) {
|
||||
this.action = actionString.get(action);
|
||||
|
@ -57,9 +49,6 @@ public abstract class OsmPoint {
|
|||
this.action = action;
|
||||
}
|
||||
|
||||
public void setStored(boolean stored) {
|
||||
this.stored = stored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
|
Loading…
Reference in a new issue