Search in sources :

Example 1 with RForm

use of com.cpjd.roblu.models.RForm in project Roblu by wdavies973.

the class UnpackTBAEvent method doInBackground.

protected Void doInBackground(Void... params) {
    /*
         * No teams were contained within the event, so exit, nothing here is relevant
         * to a TBA event that doesn't contain any team models
         */
    if (event.teams == null || event.teams.length == 0)
        return null;
    /*
         * Create an array of team models from the ones contained in the event
         */
    ArrayList<RTeam> teams = new ArrayList<>();
    for (int i = 0; i < event.teams.length; i++) {
        // i can be used as the ID because we are creating a fresh event, io.getNewTeamID is irrelevant
        teams.add(new RTeam(event.teams[i].nickname, (int) event.teams[i].team_number, i));
    }
    /*
         * Sort the matches in the event
         */
    Collections.sort(Arrays.asList(event.matches));
    /*
         * Add the matches to the respective team models
         */
    IO io = new IO(activityWeakReference.get());
    RForm form = io.loadForm(eventID);
    int result;
    for (RTeam t : teams) {
        t.verify(form);
        for (int j = 0; j < event.matches.length; j++) {
            result = event.matches[j].doesMatchContainTeam(t.getNumber());
            if (result > 0) {
                String name = "Match";
                // process the correct match name
                switch(event.matches[j].comp_level) {
                    case "qm":
                        name = "Quals " + event.matches[j].match_number;
                        break;
                    case "qf":
                        name = "Quarters " + event.matches[j].set_number + " Match " + event.matches[j].match_number;
                        break;
                    case "sf":
                        name = "Semis " + event.matches[j].set_number + " Match " + event.matches[j].match_number;
                        break;
                    case "f":
                        name = "Finals " + event.matches[j].match_number;
                }
                boolean isRed = result == com.cpjd.main.Constants.CONTAINS_TEAM_RED;
                // add the match to the team, make sure to multiple the Event model's matches times by 1000 (seconds to milliseconds, Roblu works with milliseconds!)
                RTab tab = new RTab(t.getNumber(), name, Utils.duplicateRMetricArray(form.getMatch()), isRed, event.matches[j].isOnWinningAlliance(t.getNumber()), event.matches[j].time * 1000);
                // set the match position, if possible
                tab.setAlliancePosition(event.matches[j].getTeamPosition(t.getNumber()));
                // Check for FieldData metrics
                if (tab.getMetrics() != null) {
                    for (RMetric metric : tab.getMetrics()) {
                        if (metric instanceof RFieldData) {
                            if (((RFieldData) metric).getData() == null)
                                ((RFieldData) metric).setData(new LinkedHashMap<String, ArrayList<RMetric>>());
                            for (int i = 0; i < event.matches[j].scorableItems.length; i++) {
                                Log.d("RBS", "Metric name: " + event.matches[j].scorableItems[i] + ", " + "Red value: " + event.matches[j].redValues[i] + ", Blue value: " + event.matches[j].blueValues[i]);
                                ArrayList<RMetric> metrics = new ArrayList<>();
                                try {
                                    metrics.add(new RCounter(0, "", 0, Double.parseDouble(event.matches[j].redValues[i])));
                                } catch (Exception e) {
                                    metrics.add(new RTextfield(0, "", (event.matches[j].redValues[i])));
                                }
                                try {
                                    metrics.add(new RCounter(0, "", 0, Double.parseDouble(event.matches[j].blueValues[i])));
                                } catch (Exception e) {
                                    metrics.add(new RTextfield(0, "", (event.matches[j].blueValues[i])));
                                }
                                if (event.matches[j].scorableItems[i] != null && metrics.size() > 0)
                                    ((RFieldData) metric).getData().put(event.matches[j].scorableItems[i], metrics);
                            }
                        }
                    }
                }
                t.addTab(tab);
            }
        }
        /*
             * This is where the merge decision comes into play
             */
        if (randomize) {
            t.setLastEdit(System.currentTimeMillis());
            Utils.randomizeTeamMetrics(t.getTabs());
        }
        io.saveTeam(eventID, t);
    }
    return null;
}
Also used : RTeam(com.cpjd.roblu.models.RTeam) RTab(com.cpjd.roblu.models.RTab) IO(com.cpjd.roblu.io.IO) RTextfield(com.cpjd.roblu.models.metrics.RTextfield) ArrayList(java.util.ArrayList) RFieldData(com.cpjd.roblu.models.metrics.RFieldData) RMetric(com.cpjd.roblu.models.metrics.RMetric) LinkedHashMap(java.util.LinkedHashMap) RForm(com.cpjd.roblu.models.RForm) RCounter(com.cpjd.roblu.models.metrics.RCounter)

Example 2 with RForm

use of com.cpjd.roblu.models.RForm in project Roblu by wdavies973.

the class EventDepacker method run.

@Override
public void run() {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
    StrictMode.setThreadPolicy(policy);
    Log.d("RBS", "Executing EventDepacker task...");
    ObjectMapper mapper = new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    RSettings settings = io.loadSettings();
    RSyncSettings cloudSettings = io.loadCloudSettings();
    cloudSettings.setTeamSyncID(0);
    cloudSettings.getCheckoutSyncIDs().clear();
    cloudSettings.setPurgeRequested(false);
    io.saveCloudSettings(cloudSettings);
    Request r = new Request(settings.getServerIP());
    CloudTeamRequest ctr = new CloudTeamRequest(r, settings.getCode());
    if (teamNumber != -1) {
        ctr.setCode("");
        ctr.setTeamNumber(teamNumber);
    }
    CloudCheckoutRequest ccr = new CloudCheckoutRequest(r, settings.getCode());
    if (teamNumber != -1) {
        ccr.setTeamCode("");
        ccr.setTeamNumber(teamNumber);
    }
    if (teamNumber == -1 && (settings.getCode() == null || settings.getCode().equals(""))) {
        if (listener != null)
            listener.errorOccurred("No team code found in settings. Unable to import event.");
        return;
    }
    // Ping
    if (!r.ping()) {
        if (listener != null)
            listener.errorOccurred("It appears as though the server is offline. Try again later.");
        return;
    }
    if (!ctr.isActive()) {
        if (listener != null)
            listener.errorOccurred("No event found on Roblu Cloud.");
        return;
    }
    /*
         * Download everything
         *
         */
    CloudTeam team = ctr.getTeam(-1);
    REvent event;
    try {
        // Create a new event
        event = new REvent(io.getNewEventID(), team.getActiveEventName());
        event.setKey(team.getTbaKey());
        // should be -1 if cloud is not enabled
        event.setReadOnlyTeamNumber(teamNumber);
        event.setID(io.getNewEventID());
        event.setCloudEnabled(true);
        io.saveEvent(event);
        settings.setTeamNumber((int) team.getNumber());
        settings.setRui(mapper.readValue(team.getUi(), RUI.class));
        io.saveSettings(settings);
        RForm form = mapper.readValue(team.getForm(), RForm.class);
        io.saveForm(event.getID(), form);
    } catch (Exception e) {
        Log.d("RBS", "Failed to download event");
        listener.errorOccurred("Failed to import Roblu Cloud event.");
        return;
    }
    /*
         * Un-package checkouts into a teams array
         */
    ArrayList<RCheckout> checkouts = new ArrayList<>();
    try {
        CloudCheckout[] pulledCheckouts = ccr.pullCheckouts(null, true);
        for (CloudCheckout s : pulledCheckouts) checkouts.add(mapper.readValue(s.getContent(), RCheckout.class));
    } catch (IOException e) {
        Log.d("RBS", "Failed to de-package checkouts.");
        listener.errorOccurred("Failed to import Roblu Cloud event.");
        return;
    }
    /*
         * Start sorting the checkouts into teams
         */
    ArrayList<RTeam> teams = new ArrayList<>();
    for (RCheckout checkout : checkouts) {
        // First, check if the team has already been created
        boolean found = false;
        for (RTeam t : teams) {
            if (t.getID() == checkout.getTeam().getID()) {
                // Add the checkout information to the team
                t.getTabs().addAll(checkout.getTeam().getTabs());
                found = true;
                break;
            }
            t.setLastEdit(checkout.getTime());
        }
        // If not found, create a new team
        if (!found) {
            RTeam newTeam = new RTeam(checkout.getTeam().getName(), checkout.getTeam().getNumber(), checkout.getTeam().getID());
            newTeam.setTabs(new ArrayList<RTab>());
            newTeam.getTabs().addAll(checkout.getTeam().getTabs());
            teams.add(newTeam);
        }
    }
    Log.d("RBS", "Created " + teams.size() + " teams");
    /*
         * Unpack images
         */
    for (RCheckout checkout : checkouts) {
        for (RTab tab : checkout.getTeam().getTabs()) {
            for (RMetric metric : tab.getMetrics()) {
                if (metric instanceof RGallery) {
                    for (int i = 0; ((RGallery) metric).getImages() != null && i < ((RGallery) metric).getImages().size(); i++) {
                        int picID = io.savePicture(event.getID(), ((RGallery) metric).getImages().get(i));
                        if (picID != -1) {
                            ((RGallery) metric).setPictureIDs(new ArrayList<Integer>());
                            ((RGallery) metric).getPictureIDs().add(picID);
                        }
                    }
                    if (((RGallery) metric).getImages() != null)
                        ((RGallery) metric).getImages().clear();
                }
            }
        }
    }
    /*
         * Save teams
         * -Teams don't need to be verified since the form has also been pulled from the server
         */
    for (RTeam t : teams) {
        Collections.sort(t.getTabs());
        io.saveTeam(event.getID(), t);
    }
    // Remove all the other synced events
    REvent[] events = io.loadEvents();
    for (int i = 0; events != null && i < events.length; i++) {
        events[i].setCloudEnabled(events[i].getID() == event.getID());
        io.saveEvent(events[i]);
    }
    /*
         * Add default sync ids
         */
    for (RCheckout checkout : checkouts) {
        cloudSettings.getCheckoutSyncIDs().put(checkout.getID(), 0L);
    }
    io.saveCloudSettings(cloudSettings);
    if (listener != null) {
        listener.success(event);
    }
}
Also used : RTab(com.cpjd.roblu.models.RTab) RGallery(com.cpjd.roblu.models.metrics.RGallery) ArrayList(java.util.ArrayList) RMetric(com.cpjd.roblu.models.metrics.RMetric) StrictMode(android.os.StrictMode) RForm(com.cpjd.roblu.models.RForm) CloudTeamRequest(com.cpjd.requests.CloudTeamRequest) REvent(com.cpjd.roblu.models.REvent) CloudTeam(com.cpjd.models.CloudTeam) RCheckout(com.cpjd.roblu.models.RCheckout) RSyncSettings(com.cpjd.roblu.models.RSyncSettings) CloudCheckout(com.cpjd.models.CloudCheckout) RSettings(com.cpjd.roblu.models.RSettings) ObjectMapper(org.codehaus.jackson.map.ObjectMapper) CloudCheckoutRequest(com.cpjd.requests.CloudCheckoutRequest) RTeam(com.cpjd.roblu.models.RTeam) RUI(com.cpjd.roblu.models.RUI) Request(com.cpjd.http.Request) CloudTeamRequest(com.cpjd.requests.CloudTeamRequest) CloudCheckoutRequest(com.cpjd.requests.CloudCheckoutRequest) IOException(java.io.IOException) IOException(java.io.IOException)

Example 3 with RForm

use of com.cpjd.roblu.models.RForm in project Roblu by wdavies973.

the class Service method loop.

/**
 * This is the main background service looper, this should perform any necessary
 * Roblu Cloud sync operations
 */
public void loop() {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
    StrictMode.setThreadPolicy(policy);
    if (!Utils.hasInternetConnection(getApplicationContext())) {
        Log.d("RBS", "No internet connection detected. Ending loop() early.");
        return;
    }
    /*
         * Create all the utilities we need for this loop
         */
    IO io = new IO(getApplicationContext());
    RSettings settings = io.loadSettings();
    RSyncSettings cloudSettings = io.loadCloudSettings();
    Request r = new Request(settings.getServerIP());
    ObjectMapper mapper = new ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    CloudTeamRequest teamRequest = new CloudTeamRequest(r, settings.getCode());
    CloudCheckoutRequest checkoutRequest = new CloudCheckoutRequest(r, settings.getCode());
    boolean result = r.ping();
    if (result)
        Utils.requestServerHealthRefresh(getApplicationContext(), "online");
    else
        Utils.requestServerHealthRefresh(getApplicationContext(), "offline");
    if (!result) {
        Log.d("RBS", "Roblu server is down. Unable to connect.");
        return;
    }
    // Load the active event
    REvent[] events = io.loadEvents();
    REvent activeEvent = null;
    for (int i = 0; events != null && events.length > 0 && i < events.length; i++) {
        if (events[i].isCloudEnabled()) {
            activeEvent = events[i];
            break;
        }
    }
    if (activeEvent != null && activeEvent.getReadOnlyTeamNumber() != -1) {
        teamRequest.setTeamNumber(activeEvent.getReadOnlyTeamNumber());
        teamRequest.setCode("");
        checkoutRequest.setTeamNumber(activeEvent.getReadOnlyTeamNumber());
        checkoutRequest.setTeamCode("");
    }
    /*
         * Check if a purge is requested
         */
    if (cloudSettings.isPurgeRequested() && checkoutRequest.purge()) {
        cloudSettings.setPurgeRequested(false);
        cloudSettings.setTeamSyncID(0);
        cloudSettings.getCheckoutSyncIDs().clear();
        Log.d("RBS", "Event successfully purged from Roblu Cloud.");
        io.saveCloudSettings(cloudSettings);
        Notify.notifyNoAction(getApplicationContext(), "Event purged", "Active event successfully removed from Roblu Cloud.");
        return;
    }
    if (activeEvent == null)
        return;
    // Create the sync helper
    SyncHelper syncHelper = new SyncHelper(getApplicationContext(), activeEvent, SyncHelper.MODES.NETWORK);
    RForm form = io.loadForm(activeEvent.getID());
    /*
         * Check to see if the form was modified and needs to be uploaded
         */
    if (form.isUploadRequired()) {
        try {
            teamRequest.pushForm(mapper.writeValueAsString(form));
            form.setUploadRequired(false);
            io.saveForm(activeEvent.getID(), form);
            Notify.notifyNoAction(getApplicationContext(), "Form uploaded", "Successfully uploaded RForm to the server.");
            Log.d("RBS-Service", "Successfully uploaded RForm to the server.");
        } catch (Exception e) {
            Log.d("RBS-Service", "Failed to complete an upload required request for RForm.");
        }
    }
    /*
         * Check to see if the UI model should be uploaded
         */
    if (settings.getRui().isUploadRequired()) {
        try {
            teamRequest.pushUI(mapper.writeValueAsString(settings.getRui()));
            settings.getRui().setUploadRequired(false);
            io.saveSettings(settings);
            Log.d("RBS-Service", "Successfully uploaded RUI to the server.");
        } catch (Exception e) {
            Log.d("RBS-Service", "Failed to complete an upload required request for RUI.");
        }
    }
    /*
         * Check for cloud team updates
         */
    try {
        CloudTeam t = teamRequest.getTeam(cloudSettings.getTeamSyncID());
        if (t != null) {
            /*
                 * If a different master app overwrites the cloud app with a different event, run this check to prevent conflicts
                 * from happening.
                 */
            if (t.getActiveEventName() != null && !t.getActiveEventName().equals("") && activeEvent.getName() != null && !t.getActiveEventName().equals(activeEvent.getName())) {
                activeEvent.setCloudEnabled(false);
                cloudSettings.getCheckoutSyncIDs().clear();
                io.saveCloudSettings(cloudSettings);
                io.saveEvent(activeEvent);
                return;
            }
            // Merge RForm
            form = mapper.readValue(t.getForm(), RForm.class);
            form.setUploadRequired(false);
            io.saveForm(activeEvent.getID(), form);
            // Merge RUI
            RUI rui = mapper.readValue(t.getUi(), RUI.class);
            rui.setUploadRequired(false);
            settings.setRui(rui);
            // make sure to refresh this
            settings = io.loadSettings();
            io.saveSettings(settings);
            // Update the sync ID
            cloudSettings.setTeamSyncID((int) t.getSyncID());
            io.saveCloudSettings(cloudSettings);
            Log.d("RBS-Service", "Successfully pulled team data from the server.");
        }
    } catch (Exception e) {
        Log.d("RBS-Service", "Failed to pull team data from the server: " + e.getMessage());
    }
    /*
         *
         * Alright, into the belly of the beast.
         * This code will check for completed checkouts on the server and merge them with the local repository.
         * Shall we begin?
         *
         */
    try {
        CloudCheckout[] checkouts = checkoutRequest.pullCompletedCheckouts(syncHelper.packSyncIDs(cloudSettings.getCheckoutSyncIDs()));
        syncHelper.unpackCheckouts(checkouts, cloudSettings);
        io.saveCloudSettings(cloudSettings);
    } catch (Exception e) {
        Log.d("RBS-Service", "An error occurred while fetching completed checkouts. " + e.getMessage());
    }
    /*
         * Next, uploading everything from /pending/
         */
    try {
        Log.d("RBS-Service", "Checking for any checkouts to upload...");
        ArrayList<RCheckout> checkouts = new ArrayList<>(Arrays.asList(io.loadPendingCheckouts()));
        boolean wasSuccess = checkoutRequest.pushCheckouts(syncHelper.packCheckouts(checkouts));
        if (wasSuccess) {
            for (RCheckout checkout : checkouts) {
                io.deletePendingCheckout(checkout.getID());
            }
            Notify.notifyNoAction(getApplicationContext(), "Uploaded new checkouts", "Uploaded " + checkouts.size() + " new checkout(s).");
        }
        Log.d("RBS-Service", "Uploaded " + checkouts.size() + " checkouts.");
    } catch (Exception e) {
        Log.d("RBS-Service", "An error occurred while attempting to push /pending/ checkouts: " + e.getMessage());
    }
    io.saveCloudSettings(cloudSettings);
    Log.d("RBS-Service", "Sleeping Roblu background service for 10 seconds...");
}
Also used : IO(com.cpjd.roblu.io.IO) RUI(com.cpjd.roblu.models.RUI) Request(com.cpjd.http.Request) CloudTeamRequest(com.cpjd.requests.CloudTeamRequest) CloudCheckoutRequest(com.cpjd.requests.CloudCheckoutRequest) ArrayList(java.util.ArrayList) StrictMode(android.os.StrictMode) RForm(com.cpjd.roblu.models.RForm) CloudTeamRequest(com.cpjd.requests.CloudTeamRequest) REvent(com.cpjd.roblu.models.REvent) SyncHelper(com.cpjd.roblu.sync.SyncHelper) CloudTeam(com.cpjd.models.CloudTeam) RCheckout(com.cpjd.roblu.models.RCheckout) RSyncSettings(com.cpjd.roblu.models.RSyncSettings) CloudCheckout(com.cpjd.models.CloudCheckout) RSettings(com.cpjd.roblu.models.RSettings) ObjectMapper(org.codehaus.jackson.map.ObjectMapper) CloudCheckoutRequest(com.cpjd.requests.CloudCheckoutRequest)

Example 4 with RForm

use of com.cpjd.roblu.models.RForm in project Roblu by wdavies973.

the class ManualScheduleImporter method run.

@Override
public void run() {
    RForm form = io.loadForm(eventID);
    RTeam[] teams = io.loadTeams(eventID);
    // Load the schedule
    ArrayList<String> lines = new ArrayList<>();
    try {
        InputStream fis = context.getContentResolver().openInputStream(uri);
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        String line;
        while ((line = br.readLine()) != null) {
            Log.d("RBS", "Line: " + line);
            lines.add(line);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        listener.error("File was not found on the system.");
        return;
    } catch (IOException e) {
        e.printStackTrace();
        listener.error("File contains syntax errors. Please double check it for accurate syntax.");
        return;
    }
    if (lines.size() == 0) {
        listener.error("File contains no readable data. Please double check syntax.");
        return;
    }
    for (int i = 0; i < lines.size(); i++) {
        try {
            String[] tokens = lines.get(i).split(",");
            RTeam team = new RTeam(tokens[0], Integer.parseInt(tokens[1]), io.getNewTeamID(eventID));
            /*
                 * Only add the team if it hasn't been found already
                 */
            if (teams != null) {
                for (RTeam local : teams) {
                    // Compare name and number, since IDs will be different
                    if (local.getName().equalsIgnoreCase(team.getName()) && local.getNumber() == team.getNumber()) {
                        team = local;
                        break;
                    }
                }
            }
            // Verify the team against the form
            team.verify(form);
            // The team has been added (or found locally), start processing matches
            for (int j = 2; j < tokens.length; j++) {
                // use j = 2 to ignore name and number
                String name = expandMatchName(tokens[j]);
                boolean isRedAlliance = name.contains("R");
                name = name.replaceAll("B", "").replaceAll("R", "");
                RTab tab = new RTab(team.getNumber(), name, form.getMatch(), isRedAlliance, false, 0);
                // Search for it
                if (team.getTabs() != null) {
                    boolean found = false;
                    for (RTab local : team.getTabs()) {
                        if (local.getTitle().equalsIgnoreCase(tab.getTitle())) {
                            tab = local;
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        team.addTab(tab);
                        Collections.sort(team.getTabs());
                    }
                }
            }
            io.saveTeam(eventID, team);
        } catch (Exception e) {
            listener.error("A syntax error occurred one line #" + (i + 1) + ". Please double check syntax.");
            return;
        }
    }
    listener.success();
}
Also used : RTeam(com.cpjd.roblu.models.RTeam) InputStreamReader(java.io.InputStreamReader) RTab(com.cpjd.roblu.models.RTab) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) RForm(com.cpjd.roblu.models.RForm) BufferedReader(java.io.BufferedReader)

Example 5 with RForm

use of com.cpjd.roblu.models.RForm in project Roblu by wdavies973.

the class Utils method getMatchTitlesWithinEvent.

/**
 * Returns the match titles within an REvent
 * @return a String[] containing ALL match titles within an REvent, may be null
 */
public static String[] getMatchTitlesWithinEvent(Context context, int eventID) {
    RTeam[] local = new IO(context).loadTeams(eventID);
    // no teams found
    if (local == null || local.length == 0)
        return null;
    ArrayList<RTab> tabs = new ArrayList<>();
    RForm form = new IO(context).loadForm(eventID);
    for (RTeam team : local) {
        team.verify(form);
        // check if the match already exists
        if (team.getTabs() == null || team.getTabs().size() == 0)
            continue;
        for (RTab tab : team.getTabs()) {
            if (tab.getTitle().equalsIgnoreCase("pit") || tab.getTitle().equalsIgnoreCase("predictions"))
                continue;
            boolean found = false;
            for (RTab temp : tabs) {
                if (temp.getTitle().equalsIgnoreCase(tab.getTitle())) {
                    found = true;
                    break;
                }
            }
            if (!found)
                tabs.add(tab);
        }
    }
    if (tabs.size() == 0)
        return null;
    Collections.sort(tabs);
    // Convert to String[]
    String[] values = new String[tabs.size()];
    for (int i = 0; i < tabs.size(); i++) {
        values[i] = tabs.get(i).getTitle();
    }
    return values;
}
Also used : RForm(com.cpjd.roblu.models.RForm) RTeam(com.cpjd.roblu.models.RTeam) RTab(com.cpjd.roblu.models.RTab) IO(com.cpjd.roblu.io.IO) ArrayList(java.util.ArrayList) Point(android.graphics.Point)

Aggregations

RForm (com.cpjd.roblu.models.RForm)18 IO (com.cpjd.roblu.io.IO)10 RTeam (com.cpjd.roblu.models.RTeam)9 ArrayList (java.util.ArrayList)9 RMetric (com.cpjd.roblu.models.metrics.RMetric)7 RTab (com.cpjd.roblu.models.RTab)6 RGallery (com.cpjd.roblu.models.metrics.RGallery)4 RTextfield (com.cpjd.roblu.models.metrics.RTextfield)4 UIHandler (com.cpjd.roblu.ui.UIHandler)4 StrictMode (android.os.StrictMode)3 Toolbar (android.support.v7.widget.Toolbar)3 Request (com.cpjd.http.Request)3 CloudCheckoutRequest (com.cpjd.requests.CloudCheckoutRequest)3 RCheckout (com.cpjd.roblu.models.RCheckout)3 REvent (com.cpjd.roblu.models.REvent)3 RSettings (com.cpjd.roblu.models.RSettings)3 RSyncSettings (com.cpjd.roblu.models.RSyncSettings)3 RUI (com.cpjd.roblu.models.RUI)3 IOException (java.io.IOException)3 CloudCheckout (com.cpjd.models.CloudCheckout)2