Android Open Source - Rhybudd View Zenoss Event Fragment






From Project

Back to project page Rhybudd.

License

The source code is released under:

GNU General Public License

If you think the Android project Rhybudd listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 - Gareth Llewellyn
 */*w w  w.j ava 2 s  .  c om*/
 * This file is part of Rhybudd - http://blog.NetworksAreMadeOfString.co.uk/Rhybudd/
 *
 * This program is free software: you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License
 * for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>
 */
package net.networksaremadeofstring.rhybudd;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.text.Html;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.view.*;
import android.widget.*;
import com.bugsense.trace.BugSenseHandler;
import org.json.JSONArray;
import org.json.JSONObject;


public class ViewZenossEventFragment extends Fragment
{
    JSONObject EventObject = null;
    JSONObject EventDetails = null;
    private SharedPreferences settings = null;
    Handler firstLoadHandler, addLogMessageHandler;
    ProgressDialog dialog, addMessageProgressDialog;
    Thread dataPreload, addLogMessageThread;
    Dialog addMessageDialog;
    String[] LogEntries;
    ZenossAPI API;

    TextView Title;
    TextView Component;
    TextView EventClass;
    TextView Summary;
    TextView FirstTime;
    TextView LastTime;
    LinearLayout logList;
    ImageView ackIcon;
    ImageView img;
    TextView EventCount;
    TextView agent;
    ProgressBar progressbar;
    Boolean isAcknowledged = false;
    private Callbacks mCallbacks = sDummyCallbacks;

    public ViewZenossEventFragment()
    {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.view_zenoss_event, container, false);

        Title = (TextView) rootView.findViewById(R.id.EventTitle);
        Component = (TextView) rootView.findViewById(R.id.Componant);
        EventClass = (TextView) rootView.findViewById(R.id.EventClass);
        Summary = (TextView) rootView.findViewById(R.id.Summary);
        FirstTime = (TextView) rootView.findViewById(R.id.FirstTime);
        LastTime = (TextView) rootView.findViewById(R.id.LastTime);
        ackIcon = (ImageView) rootView.findViewById(R.id.ackIcon);
        img = (ImageView) rootView.findViewById(R.id.summaryImage);
        EventCount = (TextView) rootView.findViewById(R.id.EventCount);
        agent = (TextView) rootView.findViewById(R.id.Agent);
        logList = (LinearLayout) rootView.findViewById(R.id.LogList);
        progressbar = (ProgressBar) rootView.findViewById(R.id.progressBar);

        Typeface Titles = Typeface.create("sans-serif-light", Typeface.NORMAL);
        Typeface Subtitles = Typeface.create("sans-serif", Typeface.BOLD);

        Title.setTypeface(Titles);

        try
        {
            if(getActivity().getIntent().hasExtra("EventCount"))
            {
                EventCount.setText("Count: " + Integer.toString(getActivity().getIntent().getIntExtra("EventCount",0)));
            }
            else if(getArguments().getInt("EventCount",0) != 0)
            {
                EventCount.setText("Count: " + Integer.toString(getArguments().getInt("EventCount",0)));
            }
            else
            {
                EventCount.setText("Count: 0");
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        try
        {
            if(getActivity().getIntent().hasExtra("EventTitle"))
            {
                Title.setText(getActivity().getIntent().getStringExtra("EventTitle"));
            }
            else if(!getArguments().getString("EventTitle").equals(""))
            {
                Title.setText(getArguments().getString("EventTitle"));
            }
            else
            {
                Title.setText(getActivity().getString(R.string.eventDetailsTitlePlaceholder));
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

        ackIcon.setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View view)
            {
                progressbar.setVisibility(View.VISIBLE);

                ((Thread) new Thread(){
                    public void run()
                    {
                        if (settings.getBoolean(ZenossAPI.PREFERENCE_IS_ZAAS, false))
                        {
                            API = new ZenossAPIZaas();
                        }
                        else
                        {
                            API = new ZenossAPICore();
                        }

                        ZenossCredentials credentials = null;

                        try
                        {
                            credentials=  new ZenossCredentials(getActivity());
                        }
                        catch (Exception e)
                        {
                            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragmentUpdate", "credentials", e);
                            credentials = null;
                        }

                        try
                        {
                            API.Login(credentials);
                            JSONObject ackJSON = API.AcknowledgeEvent(getArguments().getString("EventID"));

                            if(ackJSON.getJSONObject("result").getBoolean("success"))
                            {
                                getActivity().runOnUiThread(new Runnable()
                                {
                                    @Override
                                    public void run()
                                    {
                                        progressbar.setVisibility(View.INVISIBLE);
                                        ackIcon.setImageResource(R.drawable.ic_acknowledged);
                                        mCallbacks.onItemAcknowledged(getArguments().getInt("position"));
                                    }
                                });

                                RhybuddDataSource datasource = null;
                                try
                                {
                                    datasource = new RhybuddDataSource(getActivity());
                                    datasource.open();
                                    datasource.ackEvent(getArguments().getString("EventID"));
                                }
                                catch(Exception e)
                                {
                                    e.printStackTrace();
                                    BugSenseHandler.sendExceptionMessage("ViewZenossEventFragmentUpdate", "DBUpdate", e);
                                }
                                finally
                                {
                                    if(null != datasource)
                                        datasource.close();
                                }
                            }
                            else
                            {
                                Toast.makeText(getActivity(),"Unable to acknowledge alert",Toast.LENGTH_SHORT).show();
                            }
                        }
                        catch(Exception e)
                        {
                            getActivity().runOnUiThread(new Runnable() {
                                @Override
                                public void run()
                                {
                                    Toast.makeText(getActivity(),"Unable to acknowledge alert",Toast.LENGTH_SHORT).show();
                                }
                            });

                            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "outer try", e);
                        }
                    }
                }).start();
            }
        });
        return rootView;
    }

    @Override
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater)
    {
        inflater.inflate(R.menu.view_event, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

    public interface Callbacks
    {
        public void onItemAcknowledged(int position);
    }

    private static Callbacks sDummyCallbacks = new Callbacks()
    {
        public void onItemAcknowledged(int position)
        {
        }
    };

    @Override
    public void onAttach(Activity activity)
    {
        super.onAttach(activity);

        // Activities containing this fragment must implement its callbacks.
        if (!(activity instanceof Callbacks))
        {
            throw new IllegalStateException("Activity must implement fragment's callbacks.");
        }
        //Log.e("onAttach", "Attached");
        mCallbacks = (Callbacks) activity;
    }

    @Override
    public void onDetach()
    {
        super.onDetach();
        // Reset the active callbacks interface to the dummy implementation.
        mCallbacks = sDummyCallbacks;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case android.R.id.home:
            {
                getActivity().finish();
                return true;
            }

            case R.id.AddLog:
            {
                try
                {
                    addMessageDialog = new Dialog(getActivity());
                    addMessageDialog.setContentView(R.layout.add_message);
                    addMessageDialog.setTitle("Add Message to Event Log");
                    ((Button) addMessageDialog.findViewById(R.id.SaveButton)).setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            AddLogMessage(((EditText) addMessageDialog.findViewById(R.id.LogMessage)).getText().toString());
                            addMessageDialog.dismiss();
                        }
                    });

                    addMessageDialog.show();
                    return true;
                }
                catch (Exception e)
                {
                    BugSenseHandler.sendExceptionMessage("ViewZenossEventFragmentUpdate", "AddLog", e);
                    return false;
                }
            }

            case R.id.escalate:
            {
                try
                {
                    Intent intent = new Intent(android.content.Intent.ACTION_SEND);
                    intent.setType("text/plain");
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

                    // Add data to the intent, the receiving app will decide what to do with it.
                    intent.putExtra(Intent.EXTRA_SUBJECT, "Escalation of Zenoss Event on " + Title.getText());
                    String EventDetails = Summary.getText() + "\r\r\n" +
                            LastTime.getText() + "\r\r\n" +
                            "Count: " + EventCount.getText();

                    intent.putExtra(Intent.EXTRA_TEXT, EventDetails);

                    startActivity(Intent.createChooser(intent, "How would you like to escalate this event?"));
                    return true;
                }
                catch (Exception e)
                {
                    BugSenseHandler.sendExceptionMessage("ViewZenossEventFragmentUpdate", "escalate", e);
                    return false;
                }
            }

            default:
            {
                return false;
            }
        }
    }

    /*@Override
    public void onPause()
    {
        super.onPause();
    }*/

    @Override
    public void onSaveInstanceState(Bundle outState)
    {
        super.onSaveInstanceState(outState);

        try
        {
            outState.putString("Title",Title.getText().toString());
            outState.putString("Component",Component.getText().toString());
            outState.putString("EventClass",EventClass.getText().toString());
            outState.putString("Summary",Summary.getText().toString());
            outState.putString("FirstTime",FirstTime.getText().toString());
            outState.putString("LastTime",LastTime.getText().toString());
            outState.putString("EventCount",EventCount.getText().toString());
            outState.putString("agent",agent.getText().toString());
        }
        catch (Exception e)
        {
            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragmentUpdate", "onSaveInstanceState", e);
        }

        outState.putStringArray("LogEntries",LogEntries);

        try
        {
            if (isAcknowledged)
            {
                outState.putBoolean("eventStateAcknowledged",true);
            }
            else
            {
                outState.putBoolean("eventStateAcknowledged",false);
            }
        }
        catch(Exception e)
        {
            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "onsaveinstance", e);
        }

        try
        {
            if( img.getDrawable() instanceof android.graphics.drawable.BitmapDrawable )
            {
                outState.putParcelable("img",((BitmapDrawable) img.getDrawable()).getBitmap());
            }
        }
        catch (ClassCastException cce)
        {
            //Don't care
        }
        catch(Exception e)
        {
            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "onsaveinstance", e);
        }
    }

    @Override
    public void onActivityCreated(Bundle bundle)
    {
        if(null != bundle)
        {
            //Log.e("Saving","Found a bundle!!!!");

            if(bundle.containsKey("eventStateAcknowledged") && bundle.getBoolean("eventStateAcknowledged"))
            {
                ackIcon.setImageResource(R.drawable.ic_acknowledged);
                isAcknowledged = true;
            }

            if(bundle.containsKey("Title"))
                Title.setText(bundle.getString("Title"));

            if(bundle.containsKey("Component"))
                Component.setText(bundle.getString("Component"));

            if(bundle.containsKey("EventClass"))
                EventClass.setText(bundle.getString("EventClass"));

            if(bundle.containsKey("Summary"))
                Summary.setText(Html.fromHtml(bundle.getString("Summary"), null, null));

            if(bundle.containsKey("FirstTime"))
                FirstTime.setText(bundle.getString("FirstTime"));

            if(bundle.containsKey("LastTime"))
                LastTime.setText(bundle.getString("LastTime"));

            if(bundle.containsKey("EventCount"))
                EventCount.setText(bundle.getString("EventCount"));

            if(bundle.containsKey("agent"))
                agent.setText(bundle.getString("agent"));

            if(bundle.containsKey("LogEntries"))
            {
                try
                {
                    String[] LogEntries = bundle.getStringArray("LogEntries");
                    int LogEntryCount = LogEntries.length;

                    for (int i = 0; i < LogEntryCount; i++)
                    {
                        TextView newLog = new TextView(getActivity());
                        newLog.setText(Html.fromHtml(LogEntries[i]));
                        newLog.setPadding(0, 6, 0, 6);
                        logList.addView(newLog);
                    }
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "oncreate bundle", e);
                }
            }

            if(bundle.containsKey("img"))
            {
                try
                {
                    img.setImageBitmap((Bitmap) bundle.getParcelable("img"));
                    img.invalidate();
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                    BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "oncreate bundle image", e);
                }
            }

            progressbar.setVisibility(View.INVISIBLE);
        }
        else
        {
            //Log.e("Saving","Didn't find any data so getting it");
            preLoadData();
        }

        super.onActivityCreated(bundle);
    }

    @Override
    public void onResume()
    {
        super.onResume();

        //Log.e("Saving","Resuming");
    }

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        BugSenseHandler.initAndStartSession(getActivity(), "44a76a8c");

        settings = PreferenceManager.getDefaultSharedPreferences(getActivity());

        firstLoadHandler = new Handler()
        {
            public void handleMessage(Message msg)
            {
                //dialog.dismiss();
                try
                {
                    if (EventObject.has("result") && EventObject.getJSONObject("result").getBoolean("success") == true)
                    {
                        EventDetails = EventObject.getJSONObject("result").getJSONArray("event").getJSONObject(0);

                        try
                        {
                            //Log.e("Ack",EventDetails.getString("eventState"));
                            if (EventDetails.getString("eventState").equals("Acknowledged") ||EventDetails.getString("eventState").equals("1") )
                            {
                                ackIcon.setImageResource(R.drawable.ic_acknowledged);
                                isAcknowledged = true;
                            }
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "loadhandler ack image", e);
                        }

                        //Log.e("EventDetails", EventDetails.toString(3));

                        try {
                            Title.setText(EventDetails.getString("device_title"));
                        } catch (Exception e) {
                            Title.setText("Unknown Device - Event Details");
                        }

                        try {
                            Component.setText(EventDetails.getString("component"));
                        } catch (Exception e) {
                            Component.setText("Unknown Component");
                        }

                        try
                        {
                            if(!EventDetails.getString("eventClassKey").equals(""))
                            {
                                EventClass.setText(EventDetails.getString("eventClassKey"));
                            }
                            else
                            {
                                EventClass.setText("Unknown Event Class");
                            }
                        }
                        catch (Exception e)
                        {
                            EventClass.setText("Unknown Event Class");
                        }

                        try
                        {
                            //ImageView img = (ImageView) findViewById(R.id.summaryImage);

                            URLImageParser p = new URLImageParser(img, getActivity(),Summary);

                            String summaryText = EventDetails.getString("message");
                            Spanned htmlSpan = Html.fromHtml(summaryText, p, null);

                            //Log.e("summary",summaryText);
                            summaryText = summaryText.replaceAll("<img\\s*src=('|\")([^'>]+)'\\s*/>","");
                            //Log.e("summary2",summaryText);

                            Summary.setText(Html.fromHtml(summaryText, null, null));

                            //Log.i("Summary", EventDetails.getString("message"));

                            try
                            {
                                Summary.setMovementMethod(LinkMovementMethod.getInstance());
                            }
                            catch (Exception e)
                            {
                                e.printStackTrace();
                                BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "set Summary MovementMethod", e);
                                //Worth a shot
                            }
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                            Summary.setText("No Summary available");
                        }

                        try {
                            FirstTime.setText(EventDetails.getString("firstTime"));
                        } catch (Exception e) {
                            FirstTime.setText("No Start Date Provided");
                        }

                        try {
                            LastTime.setText(EventDetails.getString("stateChange"));
                        } catch (Exception e) {
                            LastTime.setText("No Recent Date Provided");
                        }

                        try {
                            EventCount.setText("Count: " + EventDetails.getString("count"));
                        } catch (Exception e) {
                            EventCount.setText("Count: ??");
                        }

                        try
                        {
                            agent.setText(EventDetails.getString("agent"));
                        }
                        catch (Exception e)
                        {
                            agent.setText("unknown");
                        }

                        try
                        {
                            JSONArray Log = EventDetails.getJSONArray("log");

                            int LogEntryCount = Log.length();

                            if (LogEntryCount == 0)
                            {
                                TextView newLog = new TextView(getActivity());
                                newLog.setText("No log entries could be found");
                                LogEntries = new String[1];
                                LogEntries[0] = "No log entries could be found";
                                logList.addView(newLog);
                            }
                            else
                            {
                                LogEntries = new String[LogEntryCount];


                                for (int i = 0; i < LogEntryCount; i++)
                                {
                                    LogEntries[i] = "<strong>" + Log.getJSONArray(i).getString(0) + "</strong> wrote " + Log.getJSONArray(i).getString(2) + "\n<br/><strong>At:</strong> " + Log.getJSONArray(i).getString(1);

                                    TextView newLog = new TextView(getActivity());
                                    newLog.setText(Html.fromHtml(LogEntries[i]));
                                    newLog.setPadding(0, 6, 0, 6);

                                    logList.addView(newLog);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            TextView newLog = new TextView(getActivity());
                            newLog.setText("No log entries could be found");
                            newLog.setPadding(0, 6, 0, 6);
                            logList.addView(newLog);
                        }

                        progressbar.setVisibility(View.INVISIBLE);
                    }
                    else
                    {
                        //Log.e("EventObject",EventObject.toString(3));
                        String errMsg = ".";
                        if(EventObject.has("type") && EventObject.getString("type").equals("exception") && EventObject.has("message"))
                            errMsg = ":\n" + EventObject.getString("message");

                        Toast.makeText(getActivity(), "There was an error refreshing the Event details from Zenoss" + errMsg, Toast.LENGTH_LONG).show();
                    }
                }
                catch (Exception e)
                {
                    try
                    {
                        Toast.makeText(getActivity(), "An error was encountered parsing the JSON. An error report has been sent.", Toast.LENGTH_LONG).show();
                    }
                    catch(Exception e2)
                    {
                        e.printStackTrace();
                        e2.printStackTrace();
                    }

                    BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "uncaught exception within firstload", e);
                }
            }
        };
    }

    private void preLoadData()
    {
        /*dialog = new ProgressDialog(getActivity());
        dialog.setTitle("Contacting Zenoss");
        dialog.setMessage("Please wait:\nLoading Event details....");
        dialog.show();*/

        dataPreload = new Thread()
        {
            public void run()
            {
                try
                {
                    if (settings.getBoolean(ZenossAPI.PREFERENCE_IS_ZAAS, false))
                    {
                        API = new ZenossAPIZaas();
                    }
                    else
                    {
                        API = new ZenossAPICore();
                    }

                    ZenossCredentials credentials = new ZenossCredentials(getActivity());
                    API.Login(credentials);
                    EventObject = API.GetEvent(getArguments().getString("EventID"));
                }
                catch (Exception e)
                {
                    firstLoadHandler.sendEmptyMessage(0);
                    BugSenseHandler.sendExceptionMessage("ViewZenossEvent", "DataPreloadThread", e);
                }
                finally
                {
                    firstLoadHandler.sendEmptyMessage(1);
                }
            }
        };

        dataPreload.start();
    }

    private void AddLogMessage(final String Message)
    {
        try
        {
            addMessageProgressDialog = new ProgressDialog(getActivity());
            addMessageProgressDialog.setTitle("Contacting Zenoss");
            addMessageProgressDialog.setMessage("Please wait:\nProcessing Event Log Updates");
            addMessageProgressDialog.show();
        }
        catch (Exception e)
        {
            BugSenseHandler.sendExceptionMessage("ViewZenossEventFragment", "AddLogMessage Dialog", e);
        }

        addLogMessageHandler = new Handler() {
            public void handleMessage(Message msg) {
                addMessageProgressDialog.dismiss();

                if (msg.what == 1)
                {
                    try
                    {
                        String[] tmp = LogEntries.clone();
                        final int NewArrlength = tmp.length + 1;
                        LogEntries = new String[NewArrlength];

                        LogEntries[0] = "<strong>" + settings.getString("userName", "") + "</strong> wrote " + Message + "\n<br/><strong>At:</strong> Just now";

            for (int i = 1; i < NewArrlength; ++i) //
            {
              LogEntries[i] = tmp[(i -1)];
            }

                        TextView newLog = new TextView(getActivity());
                        newLog.setText(Html.fromHtml(LogEntries[0]));
                        newLog.setPadding(0, 6, 0, 6);

                        logList.addView(newLog);
                    }
                    catch (Exception e)
                    {
                        BugSenseHandler.sendExceptionMessage("ViewZenossEvent", "AddMessageProgressHandler", e);
                        try
                        {
                            Toast.makeText(getActivity(), "The log message was successfully sent to Zenoss but an error occured when updating the UI", Toast.LENGTH_LONG).show();
                        }
                        catch (Exception e1)
                        {
                            BugSenseHandler.sendExceptionMessage("ViewZenossEvent", "AddMessageProgressHandler Toast", e1);
                        }
                    }
                }
                else
                {
                    try
                    {
                        Toast.makeText(getActivity(), "An error was encountered adding your message to the log", Toast.LENGTH_LONG).show();
                    }
                    catch (Exception e)
                    {
                        BugSenseHandler.sendExceptionMessage("ViewZenossEvent", "AddMessageProgressHandler", e);
                    }
                }

            }
        };

        addLogMessageThread = new Thread() {
            public void run()
            {
                Boolean Success = false;

                try
                {
                    if (API == null)
                    {
                        if (settings.getBoolean(ZenossAPI.PREFERENCE_IS_ZAAS, false))
                        {
                            API = new ZenossAPIZaas();
                        }
                        else
                        {
                            API = new ZenossAPICore();
                        }

                        ZenossCredentials credentials = new ZenossCredentials(getActivity());
                        API.Login(credentials);
                    }

                    Success = API.AddEventLog(getArguments().getString("EventID"), Message);
                }
                catch (Exception e)
                {
                    BugSenseHandler.sendExceptionMessage("ViewZenossEvent", "AddLogMessageThread", e);
                    addLogMessageHandler.sendEmptyMessage(0);
                }

                if (Success)
                {
                    addLogMessageHandler.sendEmptyMessage(1);
                }
                else
                {
                    addLogMessageHandler.sendEmptyMessage(0);
                }
            }
        };

        addLogMessageThread.start();
    }
}




Java Source Code List

net.networksaremadeofstring.rhybudd.AddDeviceActivity.java
net.networksaremadeofstring.rhybudd.AddDeviceFragment.java
net.networksaremadeofstring.rhybudd.AuthenticatorService.java
net.networksaremadeofstring.rhybudd.Authenticator.java
net.networksaremadeofstring.rhybudd.CoreSettingsFragment.java
net.networksaremadeofstring.rhybudd.DeviceListWelcomeFragment.java
net.networksaremadeofstring.rhybudd.DeviceList.java
net.networksaremadeofstring.rhybudd.DiagnosticActivity.java
net.networksaremadeofstring.rhybudd.EventsListWelcomeFragment.java
net.networksaremadeofstring.rhybudd.FirstRunSettings.java
net.networksaremadeofstring.rhybudd.GCMIntentService.java
net.networksaremadeofstring.rhybudd.ManageDatabase.java
net.networksaremadeofstring.rhybudd.ManageUpdate.java
net.networksaremadeofstring.rhybudd.MassAcknowledgeReceiver.java
net.networksaremadeofstring.rhybudd.Notifications.java
net.networksaremadeofstring.rhybudd.PushConfigActivity.java
net.networksaremadeofstring.rhybudd.PushSettingsFragment.java
net.networksaremadeofstring.rhybudd.RhybuddBackupAgent.java
net.networksaremadeofstring.rhybudd.RhybuddDataSource.java
net.networksaremadeofstring.rhybudd.RhybuddDock.java
net.networksaremadeofstring.rhybudd.RhybuddDream.java
net.networksaremadeofstring.rhybudd.RhybuddHandlers.java
net.networksaremadeofstring.rhybudd.RhybuddHome.java
net.networksaremadeofstring.rhybudd.RhybuddOpenHelper.java
net.networksaremadeofstring.rhybudd.Search.java
net.networksaremadeofstring.rhybudd.SettingsFragment.java
net.networksaremadeofstring.rhybudd.StubProvider.java
net.networksaremadeofstring.rhybudd.SwipeDismissListViewTouchListener.java
net.networksaremadeofstring.rhybudd.SwipeDismissTouchListener.java
net.networksaremadeofstring.rhybudd.SyncAdapter.java
net.networksaremadeofstring.rhybudd.SyncService.java
net.networksaremadeofstring.rhybudd.TrustAllManager.java
net.networksaremadeofstring.rhybudd.TrustAllSSLSocketFactory.java
net.networksaremadeofstring.rhybudd.URLDrawable.java
net.networksaremadeofstring.rhybudd.URLImageParser.java
net.networksaremadeofstring.rhybudd.ViewEventFragment.java
net.networksaremadeofstring.rhybudd.ViewZenossDeviceActivity.java
net.networksaremadeofstring.rhybudd.ViewZenossDeviceFragment.java
net.networksaremadeofstring.rhybudd.ViewZenossDeviceListActivity.java
net.networksaremadeofstring.rhybudd.ViewZenossDeviceListFragment.java
net.networksaremadeofstring.rhybudd.ViewZenossDevice.java
net.networksaremadeofstring.rhybudd.ViewZenossEventActivity.java
net.networksaremadeofstring.rhybudd.ViewZenossEventFragment.java
net.networksaremadeofstring.rhybudd.ViewZenossEvent.java
net.networksaremadeofstring.rhybudd.ViewZenossEventsListActivity.java
net.networksaremadeofstring.rhybudd.ViewZenossEventsListFragment.java
net.networksaremadeofstring.rhybudd.ViewZenossGroupsActivity.java
net.networksaremadeofstring.rhybudd.ViewZenossGroupsFragment.java
net.networksaremadeofstring.rhybudd.WriteNFCActivity.java
net.networksaremadeofstring.rhybudd.ZaasSettingsFragment.java
net.networksaremadeofstring.rhybudd.ZenPack.java
net.networksaremadeofstring.rhybudd.ZenossAPICore.java
net.networksaremadeofstring.rhybudd.ZenossAPIZaas.java
net.networksaremadeofstring.rhybudd.ZenossAPI.java
net.networksaremadeofstring.rhybudd.ZenossAPIv2.java
net.networksaremadeofstring.rhybudd.ZenossCredentials.java
net.networksaremadeofstring.rhybudd.ZenossDeviceAdaptor.java
net.networksaremadeofstring.rhybudd.ZenossDevice.java
net.networksaremadeofstring.rhybudd.ZenossEvent.java
net.networksaremadeofstring.rhybudd.ZenossEventsAdaptor.java
net.networksaremadeofstring.rhybudd.ZenossGCMBroadcastReceiver.java
net.networksaremadeofstring.rhybudd.ZenossGroupsGridAdapter.java
net.networksaremadeofstring.rhybudd.ZenossPoller.java
net.networksaremadeofstring.rhybudd.ZenossSearchAdaptor.java
net.networksaremadeofstring.rhybudd.ZenossWidgetGraph.java
net.networksaremadeofstring.rhybudd.ZenossWidget.java