package de.saxsys.android.projectiler.app.utils; import android.content.Context; import java.util.ArrayList; import java.util.Date; import java.util.List; import de.saxsys.android.projectiler.app.backend.Projectiler; import de.saxsys.android.projectiler.app.backend.UserDataStore; import de.saxsys.android.projectiler.app.generatedmodel.Comment; import de.saxsys.android.projectiler.app.generatedmodel.Track; import de.saxsys.projectiler.crawler.Booking; import de.saxsys.projectiler.crawler.ConnectionException; import de.saxsys.projectiler.crawler.CrawlingException; import de.saxsys.projectiler.crawler.InvalidCredentialsException; /** * Created by stefan.heinze on 19.05.2014. */ public class BusinessProcess { private static BusinessProcess INSTANCE; private UserDataStore dataStorage; private Projectiler projectiler; public static BusinessProcess getInstance(final Context context) { if (null == INSTANCE) { INSTANCE = new BusinessProcess(context); } return INSTANCE; } private BusinessProcess(final Context context) { projectiler = Projectiler.createDefaultProjectiler(context); dataStorage = UserDataStore.getInstance(context); } public String getUserName() { return projectiler.getUserName(); } public boolean isCheckedIn() { return projectiler.isCheckedIn(); } public Date checkin() { return projectiler.checkin(); } public Date checkout(final String projectName) throws CrawlingException, IllegalStateException { Date checkout = null; checkout = projectiler.checkout(projectName); return checkout; } public Date checkout(final String projectName, final Date startDate, final Date endDate) throws CrawlingException, IllegalStateException { Date checkout = null; checkout = projectiler.checkout(projectName, startDate, endDate); return checkout; } public List<String> getProjectNames(boolean loadFromServer) throws ConnectionException, CrawlingException { if(loadFromServer){ return loadProjectsFromServer(); }else{ List<String> projectNames = dataStorage.getProjectNames(); if(projectNames.size() == 0){ return loadProjectsFromServer(); }else{ return projectNames; } } } private List<String> loadProjectsFromServer() throws CrawlingException { List<String> projectNames = projectiler.getProjectNames(); dataStorage.savePorjectNames(projectNames); return projectNames; } public void saveCredentials(final String username, final String password, final boolean saveLogin) throws InvalidCredentialsException, ConnectionException, CrawlingException { projectiler.saveCredentials(username, password, saveLogin); } public void saveProjectName(final Context context, final String projectKey) { WidgetUtils.showProgressBarOnWidget(context, dataStorage); projectiler.saveProjectName(projectKey); WidgetUtils.hideProgressBarOnWidget(context, dataStorage); } public void resetStartTime() { dataStorage.setStartDate(null); } public String getStartDateAsString() { return dataStorage.getStartDateAsString(); } public Date getStartDate() { return dataStorage.getStartDate(); } public String getProjectName() { return dataStorage.getProjectName(); } public boolean getAutoLogin() { return dataStorage.getAutoLogin(); } public void setAutoLogin(boolean autoLogin) { dataStorage.setAutoLogin(autoLogin); } public void setWidgetLoading(boolean loading) { dataStorage.setWidgetLoading(loading); } public boolean isWidgetLoading() { return dataStorage.isWidgetLoading(); } public void logout(final Context context) { projectiler.logout(); WidgetUtils.refreshWidget(context); } public int getCurrentActiveProjectIndex(List<String> itemList) { return dataStorage.getCurrentActiveProjectIndex(itemList); } public void resetProject(final Context context, final boolean resetProjectName) { WidgetUtils.showProgressBarOnWidget(context, dataStorage); if(resetProjectName){ saveProjectName(context, ""); } resetStartTime(); WidgetUtils.hideProgressBarOnWidget(context, dataStorage); } public void showProgressBarOnWidget(Context context) { WidgetUtils.showProgressBarOnWidget(context, dataStorage); } public void hideProgressBarOnWidget(Context context) { WidgetUtils.hideProgressBarOnWidget(context, dataStorage); } public List<Booking> getCurrentBookings() throws CrawlingException { return projectiler.getDailyReports(); } public void checkoutAllTracks() throws CrawlingException { List<Track> tracks = dataStorage.getTracks(); for (Track track : tracks) { dataStorage.deleteTrack(track); projectiler.checkoutTrack(track); } } public void saveComment(String comment) { dataStorage.saveComment(comment); } public List<String> searchComments(String charSequence) { List<Comment> comments = dataStorage.searchComments(charSequence); List<String> ret = new ArrayList<String>(); for(Comment comment : comments){ ret.add(comment.getValue()); } return ret; } }