package com.ushahidi.android.app.views;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.content.Context;
import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.EditText;
import com.ushahidi.android.app.R;
import com.ushahidi.android.app.entities.Map;
import com.ushahidi.android.app.models.ListMapModel;
import com.ushahidi.android.app.util.ApiUtils;
public class AddMapView {
private EditText mMapName;
private EditText mMapDescription;
private EditText mMapUrl;
private int mMapId;
private ListMapModel mapModel;
private Context mContext;
/**
* Handles views for the add dialog box
*
* @param dialogViews
*/
public AddMapView(android.view.View dialogViews) {
mapModel = new ListMapModel();
mMapName = (EditText) dialogViews.findViewById(R.id.map_name);
mMapDescription = (EditText) dialogViews
.findViewById(R.id.map_description);
mMapUrl = (EditText) dialogViews.findViewById(R.id.map_url);
mContext = dialogViews.getContext();
mMapUrl.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (TextUtils.isEmpty(getMapUrl())) {
setMapUrl("http://");
}
return false;
}
});
}
// validate the fields
public void setMapName(String mapName) {
if (!TextUtils.isEmpty(mapName))
mMapName.setText(mapName);
}
public void setMapId(int mapId) {
mMapId = mapId;
}
public void setMapDescription(String mapDescription) {
mMapDescription.setText(mapDescription);
}
public void setMapUrl(String mapUrl) {
if (!TextUtils.isEmpty(mapUrl))
mMapUrl.setText(mapUrl);
}
public int getMapId() {
return mMapId;
}
public String getMapName() {
return mMapName.getText().toString();
}
public String getMapDescription() {
return mMapDescription.getText().toString();
}
public String getMapUrl() {
return mMapUrl.getText().toString();
}
/**
* Add map details to the database
*
* @return boolean
*/
public boolean addMapDetails() {
if ((ApiUtils.validateUshahidiInstance(getMapUrl()))
&& !(TextUtils.isEmpty(getMapName()))) {
Map map = new Map();
map.setMapId(0);
map.setCatId(0);
map.setActive("0");
map.setLat("0.0");
map.setLon("0.0");
map.setName(getMapName());
map.setDesc(getMapDescription());
map.setUrl(getMapUrl());
map.setDate((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"))
.format(new Date()));
if (TextUtils.isEmpty(getMapDescription())) {
map.setDesc(getMapName());
}
List<Map> maps = new ArrayList<Map>();
maps.add(map);
return mapModel.addMap(maps);
}
return false;
}
/**
* Update an existing map
*
* @return boolean
*/
public boolean updateMapDetails() {
if (!(TextUtils.isEmpty(getMapName()))) {
if (!TextUtils.isEmpty(getMapDescription()))
return mapModel.updateMap(getMapId(), getMapName(),
getMapDescription(), getMapUrl(), mContext);
else
// because map description wasn't set, use the map name as the
// description
return mapModel.updateMap(getMapId(), getMapName(),
getMapName(), getMapUrl(), mContext);
}
return false;
}
}