diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d8c2dd1..c3b92d1 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,6 +26,10 @@ android:name=".gui.EditActivity" android:label="@string/title_activity_edit" > + + diff --git a/app/src/main/assets/www/about.html b/app/src/main/assets/www/about.html new file mode 100755 index 0000000..ffe517a --- /dev/null +++ b/app/src/main/assets/www/about.html @@ -0,0 +1,14 @@ + + +

About

+
+ This application was developed by Ziver Koc 2014 at Ericsson AB. +

+

Attributions:

+ + + \ No newline at end of file diff --git a/app/src/main/java/com/ericsson/uecontrol/core/UeBehaviour.java b/app/src/main/java/com/ericsson/uecontrol/core/UeBehaviour.java index 538a602..7660f82 100755 --- a/app/src/main/java/com/ericsson/uecontrol/core/UeBehaviour.java +++ b/app/src/main/java/com/ericsson/uecontrol/core/UeBehaviour.java @@ -17,7 +17,12 @@ public abstract class UeBehaviour { running = true; if(execListener != null) execListener.executionStarted(); - execute(); + try { + execute(); + } catch(Exception e){ + if(execListener != null) execListener.exception(e); + e.printStackTrace(); + } if(execListener != null) execListener.executionStopped(); } @@ -71,7 +76,7 @@ public abstract class UeBehaviour { /** * Executes the behaviour, will block until behaviour has run to completion. */ - protected abstract void execute(); + protected abstract void execute() throws Exception; /** * @return the short name of the behaviour @@ -94,6 +99,7 @@ public abstract class UeBehaviour { public void executionStarted(); public void progressChanged(float progress); public void executionStopped(); + public void exception(Exception e); } public static interface DataHandledListener { diff --git a/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSleep.java b/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSleep.java index 028bcc9..cde3f9e 100755 --- a/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSleep.java +++ b/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSleep.java @@ -22,14 +22,12 @@ public class UeBehaviourSleep extends UeBehaviour{ } @Override - protected void execute() { + protected void execute() throws InterruptedException { int elapsedTime = 0; while(elapsedTime < time){ super.setProgress((float)elapsedTime/time); if(super.stopExecution()) break; - try{ - Thread.sleep(SLEEP_PERIOD); - }catch(Exception e){e.printStackTrace();}; + Thread.sleep(SLEEP_PERIOD); elapsedTime += SLEEP_PERIOD; } } diff --git a/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSurfing.java b/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSurfing.java index be7d7c0..984e7bc 100755 --- a/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSurfing.java +++ b/app/src/main/java/com/ericsson/uecontrol/core/behaviour/UeBehaviourSurfing.java @@ -26,28 +26,26 @@ public class UeBehaviourSurfing extends UeBehaviour { } @Override - protected void execute() { - try { - URL url = new URL(strUrl); - if(url == null) return; + protected void execute() throws IOException { + if(!strUrl.startsWith("http://") && + !strUrl.startsWith("ftp://")) + strUrl = "http://"+strUrl; + URL url = new URL(strUrl); - byte[] data = new byte[100]; - URLConnection connection = url.openConnection(); - connection.setUseCaches(false); - connection.connect(); - InputStream in = connection.getInputStream(); + byte[] data = new byte[100]; + URLConnection connection = url.openConnection(); + connection.setUseCaches(false); + connection.connect(); + InputStream in = connection.getInputStream(); - long total = in.available(); - long progress = 0; - long read = 0; + long total = in.available(); + long progress = 0; + long read = 0; - while((read = in.read(data)) != -1 && !stopExecution()){ - progress += read; - super.setProgress((float)progress/total); - super.setHandledIncomingData(read); - } - } catch (IOException e) { - e.printStackTrace(); + while((read = in.read(data)) != -1 && !stopExecution()){ + progress += read; + super.setProgress((float)progress/total); + super.setHandledIncomingData(read); } } diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/AboutActivity.java b/app/src/main/java/com/ericsson/uecontrol/gui/AboutActivity.java new file mode 100755 index 0000000..4f3f34e --- /dev/null +++ b/app/src/main/java/com/ericsson/uecontrol/gui/AboutActivity.java @@ -0,0 +1,19 @@ +package com.ericsson.uecontrol.gui; + +import android.app.Activity; +import android.os.Bundle; +import android.webkit.WebView; + +/** + * Created by ezivkoc on 2014-07-28. + */ +public class AboutActivity extends Activity{ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + WebView view = new WebView(this); + view.loadUrl("file://assets/www/about.html"); + this.setContentView(view); + } +} diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/EditActivity.java b/app/src/main/java/com/ericsson/uecontrol/gui/EditActivity.java index 301041f..d72e9f1 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/EditActivity.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/EditActivity.java @@ -11,7 +11,7 @@ import android.widget.ListView; import com.ericsson.uecontrol.R; import com.ericsson.uecontrol.core.UeBehaviour; import com.ericsson.uecontrol.core.UeControlExecutor; -import com.ericsson.uecontrol.gui.fragments.ConfigureBehaviourDialog; +import com.ericsson.uecontrol.gui.fragments.ConfigureDialog; import com.ericsson.uecontrol.gui.fragments.SelectBehaviourDialog; import com.ericsson.uecontrol.gui.util.BehaviourListAdapter; import com.ericsson.uecontrol.gui.util.Configurator; @@ -87,7 +87,7 @@ public class EditActivity extends ListActivity implements AdapterView.OnItemClic final UeBehaviour behaviour = executor.getBehaviourList().get(i); Configurator confer = new Configurator(behaviour); - ConfigureBehaviourDialog dialog = new ConfigureBehaviourDialog(); + ConfigureDialog dialog = new ConfigureDialog(); dialog.setConfigurator(confer); dialog.show(getFragmentManager(), "behaviour_configurator"); } diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/fragments/BehaviourListFragment.java b/app/src/main/java/com/ericsson/uecontrol/gui/fragments/BehaviourListFragment.java index 4dc03c9..c0cd3f0 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/fragments/BehaviourListFragment.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/fragments/BehaviourListFragment.java @@ -5,7 +5,6 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.TextView; @@ -19,7 +18,7 @@ import java.util.ArrayList; /** * This fragment will show a read only list of defined UeBehaviours */ -public class BehaviourListFragment extends Fragment implements AbsListView.OnItemClickListener { +public class BehaviourListFragment extends Fragment { /** * The fragment's ListView/GridView. @@ -67,9 +66,6 @@ public class BehaviourListFragment extends Fragment implements AbsListView.OnIte listView = (AdapterView) view.findViewById(android.R.id.list); listView.setAdapter(adapter); - // Set OnItemClickListener so we can be notified on item clicks - //listView.setOnItemClickListener(this); - setEmptyText("No Behaviours Defined"); return view; @@ -83,11 +79,6 @@ public class BehaviourListFragment extends Fragment implements AbsListView.OnIte } - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - - } - /** * The default content for this Fragment has a TextView that is shown when * the list is empty. If you would like to change the text, call this method diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/fragments/ConfigureBehaviourDialog.java b/app/src/main/java/com/ericsson/uecontrol/gui/fragments/ConfigureDialog.java similarity index 70% rename from app/src/main/java/com/ericsson/uecontrol/gui/fragments/ConfigureBehaviourDialog.java rename to app/src/main/java/com/ericsson/uecontrol/gui/fragments/ConfigureDialog.java index 6854b19..bef497c 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/fragments/ConfigureBehaviourDialog.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/fragments/ConfigureDialog.java @@ -5,6 +5,7 @@ import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; +import android.text.InputType; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; @@ -13,14 +14,19 @@ import com.ericsson.uecontrol.R; import com.ericsson.uecontrol.gui.util.Configurator; import com.ericsson.uecontrol.gui.util.Configurator.ConfigurationParam; +import java.util.HashMap; + /** * Created by ezivkoc on 2014-07-24. */ -public class ConfigureBehaviourDialog extends DialogFragment { +public class ConfigureDialog extends DialogFragment { + private HashMap inputs; private Configurator confer; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { + inputs = new HashMap(); + // Create dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.configure_behaviour); @@ -30,25 +36,30 @@ public class ConfigureBehaviourDialog extends DialogFragment { root.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); + int padding = getResources().getDimensionPixelSize(R.dimen.standard_padding); + root.setPadding(padding, padding, padding, padding); for(ConfigurationParam confParam : confer.getConfiguration()){ LinearLayout layout = new LinearLayout(getActivity()); layout.setOrientation(LinearLayout.HORIZONTAL); layout.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT)); + LinearLayout.LayoutParams.MATCH_PARENT)); TextView label = new TextView(getActivity()); - label.setText("Test: "); + label.setText(confParam.getName()+": "); label.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); layout.addView(label); EditText input = new EditText(getActivity()); - label.setLayoutParams(new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - LinearLayout.LayoutParams.MATCH_PARENT)); + input.setLayoutParams(new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.WRAP_CONTENT)); + input.setText(confParam.getString(), TextView.BufferType.EDITABLE); + input.setInputType(InputType.TYPE_NULL); + inputs.put(confParam.getName(), input); layout.addView(input); root.addView(layout); @@ -57,12 +68,15 @@ public class ConfigureBehaviourDialog extends DialogFragment { builder.setPositiveButton(R.string.action_save, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - + for(ConfigurationParam confParam : confer.getConfiguration()){ + confParam.setString(inputs.get(confParam.getName()).getText().toString()); + } + confer.setConfiguration(); } }); builder.setNegativeButton(R.string.action_cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { - ConfigureBehaviourDialog.this.getDialog().cancel(); + ConfigureDialog.this.getDialog().cancel(); } }); diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/util/BehaviourListAdapter.java b/app/src/main/java/com/ericsson/uecontrol/gui/util/BehaviourListAdapter.java index 047e2ae..dee261d 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/util/BehaviourListAdapter.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/util/BehaviourListAdapter.java @@ -38,6 +38,7 @@ public class BehaviourListAdapter extends StableArrayAdapter{ ImageView draggable = (ImageView)vi.findViewById(R.id.draggable); TextView title = (TextView)vi.findViewById(R.id.title); TextView description = (TextView)vi.findViewById(R.id.description); + final ImageView warning = (ImageView) vi.findViewById(R.id.warning); final ProgressBar active = (ProgressBar)vi.findViewById(R.id.active); final ProgressBar progress = (ProgressBar) vi.findViewById(R.id.progress); @@ -56,6 +57,7 @@ public class BehaviourListAdapter extends StableArrayAdapter{ public void run() { active.setVisibility(View.VISIBLE); progress.setVisibility(View.VISIBLE); + warning.setVisibility(View.INVISIBLE); } }); } @@ -71,6 +73,13 @@ public class BehaviourListAdapter extends StableArrayAdapter{ } }); } + public void exception(Exception e){ + warning.post(new Runnable() { + public void run() { + warning.setVisibility(View.VISIBLE); + } + }); + } }); return vi; @@ -79,4 +88,5 @@ public class BehaviourListAdapter extends StableArrayAdapter{ public void setEditable(boolean b) { editable = b; } + } diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/util/Configurator.java b/app/src/main/java/com/ericsson/uecontrol/gui/util/Configurator.java index 09d7390..1d65e5e 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/util/Configurator.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/util/Configurator.java @@ -25,20 +25,6 @@ public class Configurator { STRING, INT } - public static class ConfigurationParam{ - protected Field field; - protected ConfigType type; - protected Object value; - - public ConfigType getType(){return type;} - - public int getInt (){return (Integer) value;} - public String setString(){return (String) value;} - - public void setInt (int v) {value = v;} - public void setString(String v){value = v;} - } - private Object obj; private ConfigurationParam[] params; @@ -52,30 +38,72 @@ public class Configurator { return params; } - protected static ConfigurationParam[] getConfiguration(Object obj){ + protected ConfigurationParam[] getConfiguration(Object obj){ Class c = obj.getClass(); ArrayList conf = new ArrayList(); Field[] all = c.getDeclaredFields(); for(Field f : all){ if(f.isAnnotationPresent(Configurable.class) && !Modifier.isStatic(f.getModifiers())) { - ConfigurationParam confParam = new ConfigurationParam(); - confParam.field = f; - conf.add(confParam); + try { + conf.add(new ConfigurationParam(f)); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } } } return conf.toArray(new ConfigurationParam[conf.size()]); } - protected static void setConfiguration(ConfigurationParam[] params, Object obj){ + public void setConfiguration(){ for(ConfigurationParam param : params){ try { - param.field.setAccessible(true); - param.field.set(obj, param.value); + param.set(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } + + + public class ConfigurationParam{ + protected Field field; + protected String name; + protected String niceName; + protected ConfigType type; + protected Object value; + + + protected ConfigurationParam(Field f) throws IllegalAccessException { + field = f; + field.setAccessible(true); + name = field.getName(); + niceName = field.getAnnotation(Configurable.class).value(); + value = field.get(obj); + + if (f.getType() == String.class) type = ConfigType.STRING; + else if(f.getType() == int.class) type = ConfigType.INT; + + } + + public String getName(){return name;} + public String getNiceName(){return niceName;} + public ConfigType getType(){return type;} + + public String getString(){return (String) value;} + + public void setString(String v){ + switch(type){ + case STRING: + value = v; break; + case INT: + value = Integer.parseInt(v); break; + } + } + + protected void set() throws IllegalAccessException { + field.set(obj, value); + } + } } diff --git a/app/src/main/java/com/ericsson/uecontrol/gui/util/DynamicListView.java b/app/src/main/java/com/ericsson/uecontrol/gui/util/DynamicListView.java index c326eb7..970df23 100755 --- a/app/src/main/java/com/ericsson/uecontrol/gui/util/DynamicListView.java +++ b/app/src/main/java/com/ericsson/uecontrol/gui/util/DynamicListView.java @@ -1,5 +1,7 @@ /* * Copyright (C) 2013 The Android Open Source Project + * https://android.googlesource.com/platform/development/+/master/samples/devbytes/animation/ListViewDraggingAnimation/src/com/example/android/listviewdragginganimation/DynamicListView.java + * Modified by Ziver Koc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -57,6 +59,7 @@ import android.widget.ListView; *

* When the hover cell is either above or below the bounds of the listview, this * listview also scrolls on its own so as to reveal additional content. + * */ public class DynamicListView extends ListView { private static final int INVALID_POINTER_ID = -1; diff --git a/app/src/main/res/drawable-hdpi/warning.png b/app/src/main/res/drawable-hdpi/warning.png new file mode 100755 index 0000000..839d6f0 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/warning.png differ diff --git a/app/src/main/res/layout/behaviour_list_item.xml b/app/src/main/res/layout/behaviour_list_item.xml index 6c1924e..be4c91a 100755 --- a/app/src/main/res/layout/behaviour_list_item.xml +++ b/app/src/main/res/layout/behaviour_list_item.xml @@ -44,7 +44,7 @@ android:layout_toEndOf="@+id/draggable"/> - + + + 240dp + + 10dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9e0e231..4c2aabc 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,8 +13,6 @@ Export Settings Execution Settings - Simulate - The execution will be simulated, no actual data will be transferred. Other Settings Edit Add @@ -22,4 +20,11 @@ Configure Behaviour Save Cancel + About + Logging + Enable logging of throughput and other attributes to a csv file + Log Path + Folder where log file will be stored + About + diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 1b27a3a..6ec1f14 100755 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -5,20 +5,27 @@ android:key="pref_key_storage_settings"> + - + + + + \ No newline at end of file