Difference between revisions of "Teams Winter 2011/team2/lab2"

From CDOT Wiki
Jump to: navigation, search
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

Tutorial

Prerequisites

Creating and Setting the Interface Bundle

  • Run Eclipse
  • Select/Enter your preferred workspace in the text box provided and click okay

Workspace2T2.png

  • 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

PluginT2.png

  • 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

ManiT2.png

  • Click on the runtime tab then click on add in the "export packages" panel.
  • click on the ecl.... package and click okay

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

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

Manifest3T2.png

INCOMPLETE, WILL FINISH BY TOMORROW