Difference between revisions of "Teams Winter 2011/team2/lab2"
Line 116: | Line 116: | ||
*click on the ecl.... package and click okay | *click on the ecl.... package and click okay | ||
[[File:Mani2T2.png]] | [[File:Mani2T2.png]] | ||
+ | *Now close the manifest and save all changes | ||
+ | |||
+ | ==Creating and Setting the Provide Bundle== | ||
+ | *Follow the same steps for creating a new plug-in projects but instead supply the name "ecl.team2.lab2.weathersystem.provider" | ||
+ | *Remove all contents within the src->current package and add a class file called "ProviderActivator" | ||
+ | *Add a new package to the current project we're dealing with and name it "ecl.team2.lab2.weathersystem.provider.internal" and within it create a class called "SimpleWeatherSystem" | ||
+ | *Copy and paste the following code to their respective file | ||
+ | '''ProviderActivator''' | ||
+ | <pre> | ||
+ | package ecl.team2.lab2.weathersystem.provider; | ||
+ | |||
+ | import org.osgi.framework.BundleActivator; | ||
+ | import org.osgi.framework.BundleContext; | ||
+ | |||
+ | import ecl.team2.lab2.weather.WeatherSystem; | ||
+ | import ecl.team2.lab2.weathersystem.provider.internal.SimpleWeatherSystem; | ||
+ | |||
+ | public class ProviderActivator implements BundleActivator { | ||
+ | |||
+ | private static BundleContext context; | ||
+ | |||
+ | static BundleContext getContext() { | ||
+ | return context; | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * (non-Javadoc) | ||
+ | * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) | ||
+ | */ | ||
+ | public void start(BundleContext bundleContext) throws Exception { | ||
+ | ProviderActivator.context = bundleContext; | ||
+ | |||
+ | SimpleWeatherSystem sws = new SimpleWeatherSystem(); | ||
+ | context.registerService(WeatherSystem.class.getName(), sws, null); | ||
+ | System.out.println("Weather Station On !"); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | * (non-Javadoc) | ||
+ | * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) | ||
+ | */ | ||
+ | public void stop(BundleContext bundleContext) throws Exception { | ||
+ | ProviderActivator.context = null; | ||
+ | System.out.println("Weather Station Off !"); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | '''SimpleWeatherSystem''' | ||
+ | <pre> | ||
+ | package ecl.team2.lab2.weathersystem.provider.internal; | ||
+ | |||
+ | import ecl.team2.lab2.weather.WeatherSystem; | ||
+ | import ecl.team2.lab2.weather.Weather; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.Random; | ||
+ | |||
+ | |||
+ | public class SimpleWeatherSystem implements WeatherSystem { | ||
+ | ArrayList<Weather> weathers = new ArrayList<Weather>(); | ||
+ | public SimpleWeatherSystem(){ | ||
+ | ArrayList<String> cities = new ArrayList<String>(); | ||
+ | cities.add("Toronto"); | ||
+ | cities.add("New York"); | ||
+ | cities.add("Calgary"); | ||
+ | cities.add("Ottawa"); | ||
+ | cities.add("Vancouver"); | ||
+ | cities.add("Regina"); | ||
+ | cities.add("Winnipeg"); | ||
+ | cities.add("St. John"); | ||
+ | cities.add("Fredericton"); | ||
+ | cities.add("Halifax"); | ||
+ | cities.add("Quebec City"); | ||
+ | cities.add("Whitehorse"); | ||
+ | cities.add("Yellowknife"); | ||
+ | for(String c:cities){ | ||
+ | Random randomGenerator = new Random(); | ||
+ | float temp = randomGenerator.nextFloat()+35; | ||
+ | float rain = randomGenerator.nextFloat()+10; | ||
+ | float snow = randomGenerator.nextFloat()+10; | ||
+ | float windspeed = randomGenerator.nextFloat()+50; | ||
+ | char winddirection = '.'; | ||
+ | int r = randomGenerator.nextInt(4); | ||
+ | switch(r){ | ||
+ | case 0: | ||
+ | winddirection = 'E'; | ||
+ | break; | ||
+ | case 1: | ||
+ | winddirection = 'W'; | ||
+ | break; | ||
+ | case 2: | ||
+ | winddirection = 'N'; | ||
+ | break; | ||
+ | case 3: | ||
+ | winddirection = 'S'; | ||
+ | break; | ||
+ | |||
+ | } | ||
+ | |||
+ | Weather w = new Weather(c, temp, rain, snow, windspeed, winddirection); | ||
+ | this.weathers.add(w); | ||
+ | System.out.println(w.toString()); | ||
+ | } | ||
+ | } | ||
+ | public Weather getWeather(String city) throws Exception { | ||
+ | // TODO Auto-generated method stub | ||
+ | Weather found = null; | ||
+ | for(Weather w:this.weathers){ | ||
+ | city = city.toLowerCase(); | ||
+ | String wcity =w.getCity().toLowerCase(); | ||
+ | if(city.equals(wcity)){ | ||
+ | found = w; | ||
+ | return found; | ||
+ | } | ||
+ | } | ||
+ | return found; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </pre> | ||
+ | **Save and close both files and now open the manifest file | ||
+ | *Click on the dependencies tab then click on add in the "import packages" panel. | ||
+ | *In the search field, enter "ecl", then click on "ecl.team2.lab2.weather", and afterwords click okay | ||
+ | [[File:Manifest3T2.png]] | ||
+ | =INCOMPLETE, WILL FINISH BY TOMORROW= |
Revision as of 21:57, 17 February 2011
Contents
Tutorial
Prerequisites
- Download Eclipse Classic
Creating and Setting the Interface Bundle
- Run Eclipse
- Select/Enter your preferred workspace in the text box provided and click okay
- After Eclipse has completed loaded, create a plug-in by clicking on "File" on the menu bar then scroll to New->Project->Plug-in
- Enter the following information that is seen in the image below
- Click Next->Finish
- Now open the src folder, open the package inside, remove the activator file currently residing in it, and create a class called "Weather" and an interface called "WeatherSystem"
- Copy and paste the following code to their respective file
Weather
package ecl.team2.lab2.weather; public class Weather { private String city; private float tempInCelcius; private float rainInMM; private float snowInMM; private float windspeedInKM; private char windDirection; public Weather(String pcity, float ptemp, float prain, float psnow, float pwspeed, char pwdirection){ this.setCity(pcity); this.setTempInCelcius(ptemp); this.setRainInMM(prain); this.setSnowInMM(psnow); this.setWindspeedInKM(pwspeed); this.setWindDirection(pwdirection); } public void setWindDirection(char windDirection) { this.windDirection = windDirection; } public char getWindDirection() { return windDirection; } public void setWindspeedInKM(float windspeedInKM) { this.windspeedInKM = windspeedInKM; } public float getWindspeedInKM() { return windspeedInKM; } public void setSnowInMM(float snowInMM) { this.snowInMM = snowInMM; } public float getSnowInMM() { return snowInMM; } public void setRainInMM(float rainInMM) { this.rainInMM = rainInMM; } public float getRainInMM() { return rainInMM; } public void setTempInCelcius(float tempInCelcius) { this.tempInCelcius = tempInCelcius; } public float getTempInCelcius() { return tempInCelcius; } public void setCity(String city) { this.city = city; } public String getCity() { return city; } }
WeatherSystem
package ecl.team2.lab2.weather; public interface WeatherSystem { Weather getWeather(String city) throws Exception; }
- Save and close both files and now open the manifest file
- Click on the runtime tab then click on add in the "export packages" panel.
- click on the ecl.... package and click okay
- Now close the manifest and save all changes
Creating and Setting the Provide Bundle
- Follow the same steps for creating a new plug-in projects but instead supply the name "ecl.team2.lab2.weathersystem.provider"
- Remove all contents within the src->current package and add a class file called "ProviderActivator"
- Add a new package to the current project we're dealing with and name it "ecl.team2.lab2.weathersystem.provider.internal" and within it create a class called "SimpleWeatherSystem"
- Copy and paste the following code to their respective file
ProviderActivator
package ecl.team2.lab2.weathersystem.provider; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import ecl.team2.lab2.weather.WeatherSystem; import ecl.team2.lab2.weathersystem.provider.internal.SimpleWeatherSystem; public class ProviderActivator implements BundleActivator { private static BundleContext context; static BundleContext getContext() { return context; } /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ public void start(BundleContext bundleContext) throws Exception { ProviderActivator.context = bundleContext; SimpleWeatherSystem sws = new SimpleWeatherSystem(); context.registerService(WeatherSystem.class.getName(), sws, null); System.out.println("Weather Station On !"); } /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) */ public void stop(BundleContext bundleContext) throws Exception { ProviderActivator.context = null; System.out.println("Weather Station Off !"); } }
SimpleWeatherSystem
package ecl.team2.lab2.weathersystem.provider.internal; import ecl.team2.lab2.weather.WeatherSystem; import ecl.team2.lab2.weather.Weather; import java.util.ArrayList; import java.util.Random; public class SimpleWeatherSystem implements WeatherSystem { ArrayList<Weather> weathers = new ArrayList<Weather>(); public SimpleWeatherSystem(){ ArrayList<String> cities = new ArrayList<String>(); cities.add("Toronto"); cities.add("New York"); cities.add("Calgary"); cities.add("Ottawa"); cities.add("Vancouver"); cities.add("Regina"); cities.add("Winnipeg"); cities.add("St. John"); cities.add("Fredericton"); cities.add("Halifax"); cities.add("Quebec City"); cities.add("Whitehorse"); cities.add("Yellowknife"); for(String c:cities){ Random randomGenerator = new Random(); float temp = randomGenerator.nextFloat()+35; float rain = randomGenerator.nextFloat()+10; float snow = randomGenerator.nextFloat()+10; float windspeed = randomGenerator.nextFloat()+50; char winddirection = '.'; int r = randomGenerator.nextInt(4); switch(r){ case 0: winddirection = 'E'; break; case 1: winddirection = 'W'; break; case 2: winddirection = 'N'; break; case 3: winddirection = 'S'; break; } Weather w = new Weather(c, temp, rain, snow, windspeed, winddirection); this.weathers.add(w); System.out.println(w.toString()); } } public Weather getWeather(String city) throws Exception { // TODO Auto-generated method stub Weather found = null; for(Weather w:this.weathers){ city = city.toLowerCase(); String wcity =w.getCity().toLowerCase(); if(city.equals(wcity)){ found = w; return found; } } return found; } }
- Save and close both files and now open the manifest file
- Click on the dependencies tab then click on add in the "import packages" panel.
- In the search field, enter "ecl", then click on "ecl.team2.lab2.weather", and afterwords click okay