Android Open Source - Rhybudd Zenoss Widget Graph






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  ww.ja va 2s  .c  o m*/
 * 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 java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.widget.RemoteViews;

public class ZenossWidgetGraph extends AppWidgetProvider
{
  int CritCount = 0, ErrCount = 0, WarnCount = 0;
  ZenossAPIv2 API = null;
  private SharedPreferences settings = null;
  JSONObject EventsObject = null;
  JSONArray Events = null;
  private int EventCount = 0;
  Thread dataPreload;
  volatile Handler handler = null;
  int HighestCount = 0;
  List<ZenossEvent> tempZenossEvents = new ArrayList<ZenossEvent>();
  Context wContext;

  public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, final int[] appWidgetIds) 
    {
        if(settings == null)
      settings = PreferenceManager.getDefaultSharedPreferences(context);


        wContext= context;
        
        Refresh();
        
        handler = new Handler() 
      {
        public void handleMessage(Message msg) 
        {
          if(msg.what == 1)
          {
            Bundle Values = msg.getData();
            
            final int N = appWidgetIds.length;
              RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.zenoss_widget_graph);
          //Intent intent = new Intent(context, rhestr.class);
              //PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
              
          //Log.i("GraphWidget","Drawing Graph!");
          for (int i=0; i<N; i++) 
              {
            int appWidgetId = appWidgetIds[i];
            views.setImageViewBitmap(R.id.graphCanvas, RenderBarGraph(Values.getInt("CritCount"),Values.getInt("ErrCount"),Values.getInt("WarnCount")));
            appWidgetManager.updateAppWidget(appWidgetId, views);
              }
          }
        }
      };
    }
  
  private void Refresh()
    {
      CritCount = 0;
      ErrCount = 0;
      WarnCount = 0;
      
      ((Thread) new Thread() 
    {  
      public void run() 
      {
        try
        {
          //tempZenossEvents = rhybuddCache.GetRhybuddEvents();
                    RhybuddDataSource datasource = new RhybuddDataSource(wContext);
                    datasource.open();
                    tempZenossEvents = datasource.GetRhybuddEvents();
                    datasource.close();
        }
        catch(Exception e)
        {
          e.printStackTrace();
          //tempZenossEvents.clear();
          tempZenossEvents = null;
        }

        if(null != tempZenossEvents)
        {
          //Log.i("CountWidget","Found DB Data!");
          handler.sendEmptyMessage(1);
        }
        /*else
        {
          //Log.i("CountWidget","No DB data found, querying API directly");
          //handler.sendEmptyMessage(2);
          try
          {
            if(API == null)
            {
              if(settings.getBoolean("httpBasicAuth", false))
              {
                API = new ZenossAPIv2(settings.getString("userName", ""), settings.getString("passWord", ""), settings.getString("URL", ""),settings.getString("BAUser", ""), settings.getString("BAPassword", ""));
              }
              else
              {
                API = new ZenossAPIv2(settings.getString("userName", ""), settings.getString("passWord", ""), settings.getString("URL", ""));
              }
            }
            
            try 
            {
              if(API != null)
              {
                tempZenossEvents = API.GetRhybuddEvents(true,
                    true,
                    true,
                    false,
                    false,
                    true,
                    null,
                    null);
              }
              else
              {
                tempZenossEvents = null;
                handler.sendEmptyMessage(999);
              }
            }
            catch(Exception e)
            {
              handler.sendEmptyMessage(999);
            }
          }
          catch(Exception e)
          {
            e.printStackTrace();
          }
        }*/
        
        if(tempZenossEvents != null)
        {
          EventCount = tempZenossEvents.size();
          
          for(int i = 0; i < EventCount; i++)
            {
              if(tempZenossEvents.get(i).getSeverity().equals("5"))
                CritCount++;
              
              if(tempZenossEvents.get(i).getSeverity().equals("4"))
                ErrCount++;
              
              if(tempZenossEvents.get(i).getSeverity().equals("3"))
                WarnCount++;
            }
          tempZenossEvents = null;
          API = null;
        }
        
        //No matter what send an update
        //handler.sendEmptyMessage(0);
        Message Msg = new Message();
        Bundle data = new Bundle();
        data.putInt("CritCount", CritCount);
        data.putInt("ErrCount", ErrCount);
        data.putInt("WarnCount", WarnCount);
        Msg.setData(data);
        Msg.what = 1;
        handler.sendMessage(Msg);
      }
    }).start();
    }

  
  private Bitmap RenderBarGraph(int CritCount, int ErrCount, int WarnCount)
  {
    
    //Log.i("Counts", Integer.toString(CritCount) + " / " + Integer.toString(ErrCount) + " / " + Integer.toString(WarnCount));
    Bitmap emptyBmap = Bitmap.createBitmap(290,150, Config.ARGB_8888); 
        
    int width =  emptyBmap.getWidth();
    int height = emptyBmap.getHeight();
    Bitmap charty = Bitmap.createBitmap(width , height , Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(charty);
    //final int color = 0xff0B0B61; 
    final Paint paint = new Paint();

    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.WHITE ); 
    
    //y
    canvas.drawLine(25,0,25,289, paint);
    //x
    canvas.drawLine(25,149,289,149, paint);

    paint.setAntiAlias(true);
    int Max = 0;
    
    if ( CritCount > ErrCount && CritCount > WarnCount )
           Max = CritCount;
      else if ( ErrCount > CritCount && ErrCount > WarnCount )
          Max = ErrCount;
      else if ( WarnCount > CritCount && WarnCount > ErrCount )
          Max = WarnCount;
      else   
          Max = CritCount;
    
    if(Max > 0)
      canvas.drawText(Integer.toString(Max),  0, 10 , paint );
    
    if(Max > 1)
      canvas.drawText(Integer.toString(Max / 2),  0, 75 , paint );

    canvas.drawText("0",  0, 148 , paint);
    
    double divisor = 148 / (double)Max;

    paint.setAlpha(128);
    
    Rect rect = new Rect(32, (int)(148 - (divisor * CritCount)), 64, 148);  
    paint.setColor(Color.argb(200, 208, 0, 0)); //red
    
    if(CritCount > 0)
      canvas.drawRect(new RectF(rect), paint);
    
    rect = new Rect(128, (int)(148 - (divisor * ErrCount)), 160, 148);  
    paint.setColor(Color.argb(200,255, 102, 0));//orange
    
    if(ErrCount > 0)
      canvas.drawRect(new RectF(rect), paint);
    
    rect = new Rect(224, (int)(148 - (divisor * WarnCount)), 256, 148);  
    paint.setColor(Color.argb(200, 255, 224, 57) ); //yellow
    if(WarnCount > 0)
      canvas.drawRect(new RectF(rect), paint);
    

    //Return
    ByteArrayOutputStream out =  new ByteArrayOutputStream();
    charty.compress(CompressFormat.PNG, 50, out);
    
    return BitmapFactory.decodeByteArray(out.toByteArray(), 0, out.size());
  }
  
  @SuppressWarnings("unused")
  private Bitmap RenderLineGraph()
  {
    Bitmap emptyBmap = Bitmap.createBitmap(290,150, Config.ARGB_8888); 
        
    int width =  emptyBmap.getWidth();
    int height = emptyBmap.getHeight();
    Bitmap charty = Bitmap.createBitmap(width , height , Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(charty);
    final int color = 0xff0B0B61; 
    final Paint paint = new Paint();

    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.WHITE ); 
    
    //if(warningEvents > )
    canvas.drawText("100",  0, 10 , paint );
    
    //y
    canvas.drawLine(25,0,25,289, paint);
    //x
    canvas.drawLine(25,149,289,149, paint);
    
    int CritArray[] = { 5, 4, 6, 10, 10, 6, 4, 4};
    int curX = 25;
    
    int divisor = 148 / 10;
    paint.setColor(Color.RED);
    int curY = 148 - (CritArray[0] * divisor);
    
    for (int a : CritArray) 
    {
      canvas.drawLine(curX,curY,curX + 32, (148 - (a * divisor)), paint);
      curX += 32;
      curY = 148 - (a * divisor);
        }
    
    int ErrArray[] = { 1, 2, 2, 2, 4, 2, 1, 0};
    curX = 25;
    
    paint.setColor(Color.rgb(255, 102, 0));
    curY = 148 - (ErrArray[0] * divisor);
    
    for (int a : ErrArray) 
    {
      canvas.drawLine(curX,curY,curX + 32, (148 - (a * divisor)), paint);
      curX += 32;
      curY = 148 - (a * divisor);
        }
    
    int WarnArray[] = { 0, 2, 4, 8, 10, 4, 2, 2};
    curX = 25;
    
    paint.setColor(Color.YELLOW);
    curY = 148 - (WarnArray[0] * divisor);
    
    Path myPath = new Path();
      
      
      
    for (int a : WarnArray) 
    {
      canvas.drawLine(curX,curY,curX + 32, (148 - (a * divisor)), paint);
      curX += 32;
      curY = 148 - (a * divisor);
        }

    ByteArrayOutputStream out =  new ByteArrayOutputStream();
    charty.compress(CompressFormat.PNG, 50, out);
    
    return BitmapFactory.decodeByteArray(out.toByteArray(), 0, out.size());
  }
}




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