diff --git a/bin/AndProject.apk b/bin/AndProject.apk index 7de68f2..59ca3a9 100644 Binary files a/bin/AndProject.apk and b/bin/AndProject.apk differ diff --git a/bin/classes.dex b/bin/classes.dex index 840f136..c0861ba 100644 Binary files a/bin/classes.dex and b/bin/classes.dex differ diff --git a/bin/classes/bonsai/app/AndroidProjectActivity.class b/bin/classes/bonsai/app/AndroidProjectActivity.class index e05f009..80677b8 100644 Binary files a/bin/classes/bonsai/app/AndroidProjectActivity.class and b/bin/classes/bonsai/app/AndroidProjectActivity.class differ diff --git a/bin/classes/bonsai/app/BonsaiActivity$1.class b/bin/classes/bonsai/app/BonsaiActivity$1.class new file mode 100644 index 0000000..93deb90 Binary files /dev/null and b/bin/classes/bonsai/app/BonsaiActivity$1.class differ diff --git a/bin/classes/bonsai/app/BonsaiActivity.class b/bin/classes/bonsai/app/BonsaiActivity.class index 6c10701..fd6bd93 100644 Binary files a/bin/classes/bonsai/app/BonsaiActivity.class and b/bin/classes/bonsai/app/BonsaiActivity.class differ diff --git a/bin/classes/bonsai/app/EditBonsaiActivity$1.class b/bin/classes/bonsai/app/EditBonsaiActivity$1.class index 79a53f2..fd33a98 100644 Binary files a/bin/classes/bonsai/app/EditBonsaiActivity$1.class and b/bin/classes/bonsai/app/EditBonsaiActivity$1.class differ diff --git a/bin/classes/bonsai/app/EditBonsaiActivity$2.class b/bin/classes/bonsai/app/EditBonsaiActivity$2.class index 17c39f3..88d770a 100644 Binary files a/bin/classes/bonsai/app/EditBonsaiActivity$2.class and b/bin/classes/bonsai/app/EditBonsaiActivity$2.class differ diff --git a/bin/classes/bonsai/app/EditBonsaiActivity$3.class b/bin/classes/bonsai/app/EditBonsaiActivity$3.class index 5320ac7..2a60c35 100644 Binary files a/bin/classes/bonsai/app/EditBonsaiActivity$3.class and b/bin/classes/bonsai/app/EditBonsaiActivity$3.class differ diff --git a/bin/classes/bonsai/app/EditBonsaiActivity$4.class b/bin/classes/bonsai/app/EditBonsaiActivity$4.class index 1a1bda0..6efcba7 100644 Binary files a/bin/classes/bonsai/app/EditBonsaiActivity$4.class and b/bin/classes/bonsai/app/EditBonsaiActivity$4.class differ diff --git a/bin/classes/bonsai/app/EditBonsaiActivity$5.class b/bin/classes/bonsai/app/EditBonsaiActivity$5.class index 6743b68..9104f68 100644 Binary files a/bin/classes/bonsai/app/EditBonsaiActivity$5.class and b/bin/classes/bonsai/app/EditBonsaiActivity$5.class differ diff --git a/bin/classes/bonsai/app/EditBonsaiActivity.class b/bin/classes/bonsai/app/EditBonsaiActivity.class index ce63f7e..c7d549d 100644 Binary files a/bin/classes/bonsai/app/EditBonsaiActivity.class and b/bin/classes/bonsai/app/EditBonsaiActivity.class differ diff --git a/bin/classes/bonsai/app/MoreActivity.class b/bin/classes/bonsai/app/MoreActivity.class index 5ea3cf4..443aeb8 100644 Binary files a/bin/classes/bonsai/app/MoreActivity.class and b/bin/classes/bonsai/app/MoreActivity.class differ diff --git a/bin/classes/bonsai/app/R$drawable.class b/bin/classes/bonsai/app/R$drawable.class index 5d3c1ba..204062c 100644 Binary files a/bin/classes/bonsai/app/R$drawable.class and b/bin/classes/bonsai/app/R$drawable.class differ diff --git a/bin/classes/bonsai/app/R$id.class b/bin/classes/bonsai/app/R$id.class index 0327e9b..81d43a3 100644 Binary files a/bin/classes/bonsai/app/R$id.class and b/bin/classes/bonsai/app/R$id.class differ diff --git a/bin/classes/bonsai/app/R$layout.class b/bin/classes/bonsai/app/R$layout.class index 67ef741..66ed048 100644 Binary files a/bin/classes/bonsai/app/R$layout.class and b/bin/classes/bonsai/app/R$layout.class differ diff --git a/bin/classes/bonsai/app/R$string.class b/bin/classes/bonsai/app/R$string.class index 267662e..e1a19ac 100644 Binary files a/bin/classes/bonsai/app/R$string.class and b/bin/classes/bonsai/app/R$string.class differ diff --git a/bin/classes/bonsai/app/SelectBonsaiActivity.class b/bin/classes/bonsai/app/SelectBonsaiActivity.class index e9682a2..bf2bf85 100644 Binary files a/bin/classes/bonsai/app/SelectBonsaiActivity.class and b/bin/classes/bonsai/app/SelectBonsaiActivity.class differ diff --git a/bin/classes/bonsai/app/StartActivity.class b/bin/classes/bonsai/app/StartActivity.class index dbf7708..761c759 100644 Binary files a/bin/classes/bonsai/app/StartActivity.class and b/bin/classes/bonsai/app/StartActivity.class differ diff --git a/bin/classes/bonsai/app/TaskActivity.class b/bin/classes/bonsai/app/TaskActivity.class index 010e286..0b5dfde 100644 Binary files a/bin/classes/bonsai/app/TaskActivity.class and b/bin/classes/bonsai/app/TaskActivity.class differ diff --git a/bin/classes/bonsai/app/weather/Weather.class b/bin/classes/bonsai/app/weather/Weather.class new file mode 100644 index 0000000..fe4b9b5 Binary files /dev/null and b/bin/classes/bonsai/app/weather/Weather.class differ diff --git a/bin/classes/bonsai/app/weather/XmlHandler.class b/bin/classes/bonsai/app/weather/XmlHandler.class new file mode 100644 index 0000000..d889157 Binary files /dev/null and b/bin/classes/bonsai/app/weather/XmlHandler.class differ diff --git a/bin/classes/bonsai/app/weather/XmlParserSax.class b/bin/classes/bonsai/app/weather/XmlParserSax.class new file mode 100644 index 0000000..542c896 Binary files /dev/null and b/bin/classes/bonsai/app/weather/XmlParserSax.class differ diff --git a/bin/resources.ap_ b/bin/resources.ap_ index 6285786..14192ca 100644 Binary files a/bin/resources.ap_ and b/bin/resources.ap_ differ diff --git a/gen/bonsai/app/R.java b/gen/bonsai/app/R.java index f9b36c9..ce2a3aa 100644 --- a/gen/bonsai/app/R.java +++ b/gen/bonsai/app/R.java @@ -15,43 +15,60 @@ public static final class array { public static final class attr { } public static final class drawable { - public static final int escaledlogo=0x7f020000; - public static final int ic_launcher=0x7f020001; - public static final int ic_tab_bonsai=0x7f020002; - public static final int ic_tab_calendar=0x7f020003; - public static final int ic_tab_more=0x7f020004; - public static final int ic_tab_selectbonsai=0x7f020005; + public static final int chance_of_rain=0x7f020000; + public static final int chance_of_snow=0x7f020001; + public static final int chance_of_storm=0x7f020002; + public static final int cloudy=0x7f020003; + public static final int dust=0x7f020004; + public static final int escaledlogo=0x7f020005; + public static final int fog=0x7f020006; + public static final int haze=0x7f020007; + public static final int ic_launcher=0x7f020008; + public static final int ic_tab_bonsai=0x7f020009; + public static final int ic_tab_calendar=0x7f02000a; + public static final int ic_tab_more=0x7f02000b; + public static final int ic_tab_selectbonsai=0x7f02000c; + public static final int icy=0x7f02000d; + public static final int mist=0x7f02000e; + public static final int mostly_sunny=0x7f02000f; + public static final int sleet=0x7f020010; + public static final int smoke=0x7f020011; + public static final int snow=0x7f020012; + public static final int storm=0x7f020013; + public static final int sunny=0x7f020014; + public static final int thunderstorm=0x7f020015; } public static final class id { public static final int ImageView01=0x7f06000d; public static final int bonsaiImage=0x7f060002; public static final int bonsairowtext=0x7f060018; - public static final int btnCountry=0x7f060024; - public static final int btnPostCode=0x7f060022; - public static final int button1=0x7f06001e; - public static final int button2=0x7f06001f; - public static final int cancelButton=0x7f06002b; - public static final int donatebutton=0x7f060029; - public static final int editAge=0x7f06001b; - public static final int editCountry=0x7f060023; - public static final int editHeight=0x7f06001c; - public static final int editName=0x7f060019; - public static final int editPostCode=0x7f060021; - public static final int familySpinner=0x7f06001a; + public static final int btnCountry=0x7f060027; + public static final int btnPostCode=0x7f060025; + public static final int button1=0x7f060021; + public static final int button2=0x7f060022; + public static final int cancelButton=0x7f06001b; + public static final int donatebutton=0x7f06002c; + public static final int editAge=0x7f06001e; + public static final int editCountry=0x7f060026; + public static final int editHeight=0x7f06001f; + public static final int editName=0x7f06001c; + public static final int editPostCode=0x7f060024; + public static final int familySpinner=0x7f06001d; public static final int footer=0x7f060013; - public static final int imageButton1=0x7f060026; + public static final int imageButton1=0x7f060029; public static final int imageButton2=0x7f060017; - public static final int imageButton3=0x7f060027; - public static final int imageView1=0x7f060008; + public static final int imageButton3=0x7f06002a; + public static final int imageView1=0x7f06002d; public static final int imageView2=0x7f06000a; public static final int imageView4=0x7f060010; + public static final int imageWeather=0x7f060008; public static final int linearLayout1=0x7f060001; - public static final int photoURLtext=0x7f06001d; + public static final int photoURLtext=0x7f060020; public static final int podeButton=0x7f060015; - public static final int relativeLayout1=0x7f060025; - public static final int saveButton=0x7f06002a; + public static final int relativeLayout1=0x7f060028; + public static final int saveButton=0x7f06001a; public static final int scrollView1=0x7f060000; - public static final int spinner1=0x7f060020; + public static final int spinner1=0x7f060023; public static final int tableRow1=0x7f060009; public static final int tableRow2=0x7f06000c; public static final int tableRow3=0x7f06000f; @@ -60,24 +77,27 @@ public static final class id { public static final int textPrune=0x7f060011; public static final int textTemperature=0x7f060012; public static final int textTransplant=0x7f06000e; - public static final int textView1=0x7f060007; - public static final int textView2=0x7f060028; + public static final int textView1=0x7f060019; + public static final int textView2=0x7f06002b; public static final int textView3=0x7f060006; public static final int textWater=0x7f06000b; public static final int textYears=0x7f060005; + public static final int textweather=0x7f060007; public static final int transplantButton=0x7f060016; public static final int waterButton=0x7f060014; } public static final class layout { public static final int bonsai=0x7f030000; public static final int bonsai_row=0x7f030001; - public static final int editbonsai=0x7f030002; - public static final int main=0x7f030003; - public static final int more=0x7f030004; - public static final int selectbonsai=0x7f030005; - public static final int start=0x7f030006; - public static final int task=0x7f030007; - public static final int task_row=0x7f030008; + public static final int calendar=0x7f030002; + public static final int editbonsai=0x7f030003; + public static final int gallery=0x7f030004; + public static final int main=0x7f030005; + public static final int more=0x7f030006; + public static final int selectbonsai=0x7f030007; + public static final int start=0x7f030008; + public static final int task=0x7f030009; + public static final int task_row=0x7f03000a; } public static final class string { public static final int app_name=0x7f040000; diff --git a/res/drawable/chance_of_rain.gif b/res/drawable/chance_of_rain.gif new file mode 100644 index 0000000..008825d Binary files /dev/null and b/res/drawable/chance_of_rain.gif differ diff --git a/res/drawable/chance_of_snow.gif b/res/drawable/chance_of_snow.gif new file mode 100644 index 0000000..f15b561 Binary files /dev/null and b/res/drawable/chance_of_snow.gif differ diff --git a/res/drawable/chance_of_storm.gif b/res/drawable/chance_of_storm.gif new file mode 100644 index 0000000..9aade2f Binary files /dev/null and b/res/drawable/chance_of_storm.gif differ diff --git a/res/drawable/cloudy.gif b/res/drawable/cloudy.gif new file mode 100644 index 0000000..242dce7 Binary files /dev/null and b/res/drawable/cloudy.gif differ diff --git a/res/drawable/dust.gif b/res/drawable/dust.gif new file mode 100644 index 0000000..b810ac8 Binary files /dev/null and b/res/drawable/dust.gif differ diff --git a/res/drawable/fog.gif b/res/drawable/fog.gif new file mode 100644 index 0000000..edffc14 Binary files /dev/null and b/res/drawable/fog.gif differ diff --git a/res/drawable/haze.gif b/res/drawable/haze.gif new file mode 100644 index 0000000..4a8654b Binary files /dev/null and b/res/drawable/haze.gif differ diff --git a/res/drawable/icy.gif b/res/drawable/icy.gif new file mode 100644 index 0000000..967c7b9 Binary files /dev/null and b/res/drawable/icy.gif differ diff --git a/res/drawable/mist.gif b/res/drawable/mist.gif new file mode 100644 index 0000000..a9747f9 Binary files /dev/null and b/res/drawable/mist.gif differ diff --git a/res/drawable/mostly_sunny.gif b/res/drawable/mostly_sunny.gif new file mode 100644 index 0000000..9da7a84 Binary files /dev/null and b/res/drawable/mostly_sunny.gif differ diff --git a/res/drawable/sleet.gif b/res/drawable/sleet.gif new file mode 100644 index 0000000..3525643 Binary files /dev/null and b/res/drawable/sleet.gif differ diff --git a/res/drawable/smoke.gif b/res/drawable/smoke.gif new file mode 100644 index 0000000..edffc14 Binary files /dev/null and b/res/drawable/smoke.gif differ diff --git a/res/drawable/snow.gif b/res/drawable/snow.gif new file mode 100644 index 0000000..3525643 Binary files /dev/null and b/res/drawable/snow.gif differ diff --git a/res/drawable/storm.gif b/res/drawable/storm.gif new file mode 100644 index 0000000..99af28d Binary files /dev/null and b/res/drawable/storm.gif differ diff --git a/res/drawable/sunny.gif b/res/drawable/sunny.gif new file mode 100644 index 0000000..3c305d9 Binary files /dev/null and b/res/drawable/sunny.gif differ diff --git a/res/drawable/thunderstorm.gif b/res/drawable/thunderstorm.gif new file mode 100644 index 0000000..84a727d Binary files /dev/null and b/res/drawable/thunderstorm.gif differ diff --git a/res/layout/bonsai.xml b/res/layout/bonsai.xml index 45ecd7f..9ccd4b9 100644 --- a/res/layout/bonsai.xml +++ b/res/layout/bonsai.xml @@ -82,18 +82,18 @@ diff --git a/src/bonsai/app/BonsaiActivity.java b/src/bonsai/app/BonsaiActivity.java index 5000700..bc78dcd 100644 --- a/src/bonsai/app/BonsaiActivity.java +++ b/src/bonsai/app/BonsaiActivity.java @@ -2,8 +2,13 @@ import java.util.Date; +import java.util.List; + +import bonsai.app.weather.Weather; +import bonsai.app.weather.XmlParserSax; import android.app.Activity; +import android.app.ProgressDialog; import android.content.Intent; import android.database.Cursor; import android.net.Uri; @@ -29,7 +34,16 @@ public class BonsaiActivity extends Activity { private TextView textTransplant; private TextView textPrune; private TextView textTemperature; + private TextView textWeather; + private ImageView weatherIcon; + //variables necesarias para ser asignadas en la hebra de checkWeather + private ProgressDialog dialog; + private Weather w; + private String location; + + // + private double temperature; /** Called when the activity is first created. */ @Override @@ -46,11 +60,14 @@ public void onCreate(Bundle savedInstanceState) { textTransplant = (TextView)findViewById(R.id.textTransplant); textPrune = (TextView)findViewById(R.id.textPrune); textTemperature = (TextView)findViewById(R.id.textTemperature); + textWeather =(TextView)findViewById(R.id.textweather); + weatherIcon = (ImageView)findViewById(R.id.imageWeather); bonsaidb = new BonsaiDbUtil(this); // Construinos el DDBBAdapter bonsaidb.open(); familydb = new FamilyDbUtil(this); // Construinos el DDBBAdapter familydb.open(); + checkWeather(); /* try { @@ -92,10 +109,14 @@ public void onResume() { } else photo.setImageResource(R.drawable.ic_launcher); long date = new Date().getTime() / (1000*60*60); age.setText("" + ((date - bonsai.getLong(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_AGE)))/(365*24))); + checkWeather(); checkWater(); checkTransplant(); checkPode(); - checkWeather(); + + + + } catch (Exception e) { @@ -143,7 +164,6 @@ private void checkWater() { long lastwatered; long waterfrec; int height = 30; - int temperature = 20; long hoursTime = (new Date().getTime())/(1000*60*60); @@ -236,7 +256,7 @@ private void checkPode() { // LOGICA DE TRANSPLANTE if(lastpode == 0) textPrune.setText("No info about " + name + " prunes.\nMaybe never pruned."); - else if(age < 2) { // Los bonsais con menos de dos a–os se suelen defoliar al 50% cada 2 meses, aprox + else if(age < 2) { // Los bonsais con menos de dos a�os se suelen defoliar al 50% cada 2 meses, aprox if(hoursTime - lastpode > 60 * 24) textPrune.setText("Defoliate your bonsai 50%"); else textPrune.setText("Your bonsai prune is not necessary"); } @@ -250,6 +270,92 @@ else if(age < 2) { // Los bonsais con menos de dos a } private void checkWeather() { + Cursor bonsai; + String situation; + dialog = ProgressDialog.show(this, "", "Data obtaining…", true); + + Thread thread = new Thread() { + @Override + public void run() { + try{ + Cursor bonsai = bonsaidb.fetchBonsai(AndroidProjectActivity.bonsaiactual); + startManagingCursor(bonsai); + location = bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_LOCALIZATION)); + XmlParserSax saxparser = new XmlParserSax("http://www.google.com/ig/api?weather="+location); + List weather = saxparser.parse(); + w=weather.get(0); + + }catch(Exception e){ + Toast tx; + System.out.println(e.toString()); + tx = Toast.makeText(getApplicationContext(), "Conexion is not aviable", Toast.LENGTH_LONG); + tx.show(); + } + dialog.dismiss(); + } + + + }; + thread.start(); + try{ + bonsai = bonsaidb.fetchBonsai(AndroidProjectActivity.bonsaiactual); + startManagingCursor(bonsai); + situation= bonsai.getString(bonsai.getColumnIndexOrThrow(BonsaiDbUtil.KEY_SITUATION)); + System.out.println("la situación es "+situation); + textWeather.setText(Double.toString(w.getTempMedia())+"ºC"); + temperature=w.getTempMedia(); + String s=w.getIcon(); + s=s.replaceAll("/ig/images/weather/", ""); + s=s.replaceAll(".gif", ""); + System.out.println("El nombre del icono que me queda es "+s); + if(s.equals("chance_of_rain")){ + weatherIcon.setImageResource(R.drawable.chance_of_rain); + } + if(s.equals("chance_of_snow")) + weatherIcon.setImageResource(R.drawable.chance_of_snow); + if(s.equals("chance_of_storm")) + weatherIcon.setImageResource(R.drawable.chance_of_storm); + if(s.equals("cloudly")) + weatherIcon.setImageResource(R.drawable.cloudy); + if(s.equals("dust")) + weatherIcon.setImageResource(R.drawable.dust); + if(s.equals("fog")) + weatherIcon.setImageResource(R.drawable.fog); + if(s.equals("haze")) + weatherIcon.setImageResource(R.drawable.haze); + if(s.equals("icy")){ + weatherIcon.setImageResource(R.drawable.icy); + if(situation.equals("Exterior")) + textTemperature.setText("Your Bonsai is frozen, please put it indoor");} + if(s.equals("mist")) + weatherIcon.setImageResource(R.drawable.mist); + if(s.equals("mostly_sunny")){ + weatherIcon.setImageResource(R.drawable.mostly_sunny); + if(situation.equals("Interior")) + textTemperature.setText("Your Bonsai would like to have some sunbathing today");} + if(s.equals("smoke")) + weatherIcon.setImageResource(R.drawable.smoke); + if(s.equals("snow")){ + weatherIcon.setImageResource(R.drawable.snow); + if(situation.equals("Exterior")) + textTemperature.setText("Your Bonsai looks like snowman");} + if(s.equals("storm")){ + weatherIcon.setImageResource(R.drawable.storm); + if(situation.equals("Exterior")) + textTemperature.setText("Your Bonsai is scare of thunderstorm");} + if(s.equals("sunny")){ + weatherIcon.setImageResource(R.drawable.sunny); + if(situation.equals("Interior")) + textTemperature.setText("Your Bonsai would like to " + + "have some sunbathing today");} + if(s.equals("thunderstorm")){ + weatherIcon.setImageResource(R.drawable.thunderstorm); + if(situation.equals("Exterior")) + textTemperature.setText("Your Bonsai is scare of thunderstorm");} + }catch(Exception e){ + System.out.println("Salta una excepción de el segundo try del tiempo"); + + } } diff --git a/src/bonsai/app/EditBonsaiActivity.java b/src/bonsai/app/EditBonsaiActivity.java index 22c831e..1bd7a91 100644 --- a/src/bonsai/app/EditBonsaiActivity.java +++ b/src/bonsai/app/EditBonsaiActivity.java @@ -40,6 +40,7 @@ public class EditBonsaiActivity extends Activity { private Spinner editSituation; private EditText editpostCode; private EditText editCountry; + private String name; private String family; @@ -87,7 +88,7 @@ public void onCreate(Bundle savedInstanceState) { editpostCode=(EditText)findViewById(R.id.editPostCode); editCountry=(EditText)findViewById(R.id.editCountry); - + createCancelAlert(); createDeleteAlert(); @@ -125,6 +126,9 @@ public void onCreate(Bundle savedInstanceState) { photoURLtext.setText("..." + photo.substring((photo.length() - 18), photo.length())); } + + + } catch (Exception e) { Toast.makeText(this, "None bonsai created: " + e.toString(), Toast.LENGTH_LONG).show(); @@ -283,7 +287,7 @@ public void goMakeCountry(View v) { Location loc = comenzarLocalizacion(); if(loc == null) { - Toast.makeText(this, "Incapaz de obtener localizacion", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Incapaz de obtener localizacion, turn on 3g please", Toast.LENGTH_SHORT).show(); return; } Geocoder myloc = new Geocoder(this,Locale.getDefault()); @@ -295,7 +299,7 @@ public void goMakeCountry(View v) { editCountry.setText(ad.getCountryCode()); } catch (IOException e) { // TODO Auto-generated catch block - Toast.makeText(this, "Error trying to get country " + e.toString(), Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Error trying to get country, turn on 3g please " + e.toString(), Toast.LENGTH_SHORT).show(); } } @@ -304,7 +308,7 @@ public void goMakePostCode(View v){ Location loc = comenzarLocalizacion(); if(loc == null) { - Toast.makeText(this, "Cannot get info about localization.", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Cannot get info about localization, turn on 3g please", Toast.LENGTH_SHORT).show(); return; } @@ -317,7 +321,7 @@ public void goMakePostCode(View v){ editpostCode.setText(ad.getPostalCode()); } catch (Exception e) { // TODO Auto-generated catch block - Toast.makeText(this, "Error trying to get location " + e.toString(), Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Error trying to get location, turn on 3g please " + e.toString(), Toast.LENGTH_SHORT).show(); } } diff --git a/src/bonsai/app/weather/Weather.java b/src/bonsai/app/weather/Weather.java new file mode 100644 index 0000000..fdac95d --- /dev/null +++ b/src/bonsai/app/weather/Weather.java @@ -0,0 +1,39 @@ +package bonsai.app.weather; + +public class Weather { + + private int tempMax; + private int tempMin; + private double tempMediaC; + private String icon; + public int getTempMax() { + return tempMax; + } + public void setTempMax(int tempMax) { + this.tempMax = tempMax; + + } + public int getTempMin() { + return tempMin; + } + public void setTempMin(int tempMin) { + this.tempMin = tempMin; + } + public double getTempMedia() { + int tempMedia=(tempMax+tempMin)/2; + tempMediaC=5*tempMedia/9; + return tempMediaC; + + } + public String getIcon() { + return icon; + } + public void setIcon(String icon) { + this.icon = icon; + } + + + + + +} diff --git a/src/bonsai/app/weather/XmlHandler.java b/src/bonsai/app/weather/XmlHandler.java new file mode 100644 index 0000000..91a0569 --- /dev/null +++ b/src/bonsai/app/weather/XmlHandler.java @@ -0,0 +1,50 @@ +package bonsai.app.weather; + +import java.util.ArrayList; +import java.util.List; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + + +public class XmlHandler extends DefaultHandler { + int n=0; + private List weathers= new ArrayList(); + private Weather weatherActual; + + public List getweather(){ + return weathers; + } + + // Asigno a cada dia de la semana la temperatura máxima y mínima + // en grados Fahrenheit!!! + public void startElement (String uri, String name, String qName, Attributes atts) { + if (qName.compareTo("day_of_week") == 0) { + String day = atts.getValue(0); + System.out.println("Day: " + day); + weatherActual= new Weather();//inicializao el weather + } + if(qName.compareToIgnoreCase("low") == 0) { + int low = Integer.parseInt(atts.getValue(0)); + System.out.println("Low: " + low); + weatherActual.setTempMin(low); + } + if(qName.compareToIgnoreCase("high") == 0) { + int high = Integer.parseInt(atts.getValue(0)); + System.out.println("High: " + high); + weatherActual.setTempMin(high); + } + if(qName.compareToIgnoreCase("icon") == 0) { + if(n>0){ + String icon = atts.getValue(0); + System.out.println("icon " + icon); + weatherActual.setIcon(icon); + weathers.add(weatherActual); + } + n++; + } + } + } + + diff --git a/src/bonsai/app/weather/XmlParserSax.java b/src/bonsai/app/weather/XmlParserSax.java new file mode 100644 index 0000000..68a84a1 --- /dev/null +++ b/src/bonsai/app/weather/XmlParserSax.java @@ -0,0 +1,57 @@ +package bonsai.app.weather; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +import java.net.URL; +import javax.xml.parsers.SAXParser; +import java.net.MalformedURLException; +import javax.xml.parsers.SAXParserFactory; + +public class XmlParserSax +{ + private URL rssUrl; + public XmlParserSax(String url) + { + try + { + this.rssUrl = new URL(url); + } + catch (MalformedURLException e) + { + throw new RuntimeException(e); + } + } + + public List parse() + { + SAXParserFactory factory = SAXParserFactory.newInstance(); + + try + { + SAXParser parser = factory.newSAXParser(); + XmlHandler handler = new XmlHandler(); + parser.parse(this.getInputStream(), handler); + return handler.getweather(); + } + catch (Exception e) + { + throw new RuntimeException(e); + } + } + + private InputStream getInputStream() + { + try + { + System.out.println(rssUrl.openConnection().getInputStream()); + return rssUrl.openConnection().getInputStream(); + + } + catch (IOException e) + { + throw new RuntimeException(e); + } + } +} \ No newline at end of file