package de.saxsys.android.projectiler.app.backend; import android.content.Context; import android.content.SharedPreferences; import android.text.TextUtils; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.logging.Logger; import de.saxsys.android.projectiler.app.db.DataProvider; import de.saxsys.android.projectiler.app.generatedmodel.Comment; import de.saxsys.android.projectiler.app.generatedmodel.Track; public class UserDataStore implements Serializable { private static final Logger LOGGER = Logger.getLogger(UserDataStore.class.getSimpleName()); private static final long serialVersionUID = -8326125819925449250L; private static final String USER_NAME = "user_name"; private static final String PASSWORD = "password"; private static final String PROJECT_NAME = "project_name"; private static final String AUTO_LOGIN = "auto_login"; private static final String START_DATE = "start_date"; private static final String WIDGET_LOADING = "widget_loading"; private static final String COMMENT = "comment"; private static final String PROJECT_NAMES = "project_names"; private static UserDataStore INSTANCE; private DataProvider dataProvider; private Context context; public static UserDataStore getInstance(final Context context) { if (null == INSTANCE) { INSTANCE = new UserDataStore(context); } return INSTANCE; } private UserDataStore(final Context context) { dataProvider = new DataProvider(context); this.context = context; } public void setUserName(final String name) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(USER_NAME, name); editor.commit(); } public void setStartDate(final Date date) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); if(date == null){ editor.putString(START_DATE, null); }else{ editor.putString(START_DATE, DateUtil.formatShort(date)); } editor.commit(); } public String getUserName() { final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getString(USER_NAME, ""); } public Date getStartDate() { final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return DateUtil.formatShort(mySharedPreferences.getString(START_DATE, "")); } public String getStartDateAsString() { final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getString(START_DATE, ""); } public String getPassword() { final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getString(PASSWORD, ""); } public void setPassword(final String password) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(PASSWORD, password); editor.commit(); } public String getProjectName() { final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getString(PROJECT_NAME, ""); } public void setProjectName(final String projectName) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(PROJECT_NAME, projectName); editor.commit(); } public void setAutoLogin(final boolean autoLogin){ final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(AUTO_LOGIN, autoLogin); editor.commit(); } public boolean getAutoLogin(){ final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getBoolean(AUTO_LOGIN, false); } /* * Helper */ public void setCredentials(final String userName, final String password) { this.setUserName(userName); this.setPassword(password); } public int getCurrentActiveProjectIndex(final List<String> items){ int ret = -1; if(getStartDate() == null){ return -1; } String selectedProject = getProjectName(); for(int i = 0; i < items.size(); i++){ if(items.get(i).equals(selectedProject)){ return i; } } return ret; } public void clearStartDate() { setStartDate(null); } public boolean isCheckedIn() { return null != getStartDate(); } private SharedPreferences getDefaultSharedPreferences() { return context.getSharedPreferences("projectiler", Context.MODE_PRIVATE); } public void setWidgetLoading(boolean loading) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putBoolean(WIDGET_LOADING, loading); editor.commit(); } public boolean isWidgetLoading(){ final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getBoolean(WIDGET_LOADING, false); } public void saveComment(String comment) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(COMMENT, comment); editor.commit(); } public void deleteComment(){ persistComment(); final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(COMMENT, ""); editor.commit(); } public String getComment() { final SharedPreferences mySharedPreferences = getDefaultSharedPreferences(); return mySharedPreferences.getString(COMMENT, ""); } public void saveTrack(Track track) { dataProvider.saveTrack(track); } public List<Track> getTracks() { return dataProvider.getTracks(); } public void deleteTrack(Track track) { dataProvider.deleteTrack(track); } public void persistComment(){ if(!getComment().equals("")){ Comment comment = new Comment(); comment.setTimestamp(new Date()); comment.setValue(getComment()); dataProvider.saveComment(comment); } } public List<Comment> searchComments(String charSequence) { return dataProvider.searchComments(charSequence); } public List<String> getProjectNames() { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); String[] mylist = TextUtils.split(sharedPreferences.getString(PROJECT_NAMES, ""), "‚‗‚"); ArrayList<String> gottenlist = new ArrayList<String>(Arrays.asList(mylist)); return gottenlist; } public void savePorjectNames(List<String> projectNames) { final SharedPreferences sharedPreferences = getDefaultSharedPreferences(); String[] projectNamesStringArray = projectNames.toArray(new String[projectNames.size()]); final SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(PROJECT_NAMES, TextUtils.join("‚‗‚", projectNamesStringArray)); editor.commit(); } }