Package javax.jdo

Examples of javax.jdo.PersistenceManager


    pm.close();
    return;
  }

  public static String[] getScores() {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    Query query = pm.newQuery("SELECT FROM " + Player.class.getName() + " ORDER BY highscore DESC");
    @SuppressWarnings("unchecked")
    List<Player> attachedPlayers = (List<Player>)query.execute();
    List<Player> players = detachList(pm, attachedPlayers);
    if (players != null) { 
      String[] result = new String[players.size()];
      for (int i = 0 ; i < result.length ; i++) {
        Player player = players.get(i);
        if (player.getFacebookUser() != null && player.getFacebookUser().equals("true")) {
          String facebookPhotoElement = "<a href='http://facebook.com/" + player.getUserId() + "' target='_blank'><img src='http://graph.facebook.com/" + player.getUserId() + "/picture'" + "height='50' width='50'/></a>";
          result[i] = (i+1) + ") " + player.getNickname() + " : " + player.getHighscore() + "<br>" + facebookPhotoElement;
        }
        else {
          result[i] = (i+1) + ") " + player.getNickname() + " : " + player.getHighscore();
        }
      }
      pm.close();
      return result;
    }
    pm.close();
    return null;
  }
View Full Code Here


  public static Player verifyUsername(String name) {
   
    name = removeSpaces(name);
    Logger logger = Logger.getLogger(DatastoreHelper.class.getName());
   
    PersistenceManager pm = PMF.get().getPersistenceManager();
    Query query = pm.newQuery("SELECT FROM " + Player.class.getName() + " WHERE nickname == " + name);
   
    logger.fine("executing query :" + query.toString());
   
    @SuppressWarnings("unchecked")
    List<Player> attachedPlayers = (List<Player>)query.execute();
   
    if (attachedPlayers == null) {
      logger.fine("query returned null!");
      return null;
    }
   
    List<Player> players = detachList(pm, attachedPlayers);
    if (players.size() != 1) return null;
    pm.close();
    return players.get(0);
  }
View Full Code Here

    }

    @Test
    public void testPersistEvent() {
     
      PersistenceManager pm = PMF.get().getPersistenceManager();
    Event e1 = new Event("Test event", DateUtils.getDate(2011, 1, 1), DateUtils.getDate(2011, 1, 10), true, RegisteredPricingStrategy.COCAMP);
    pm.makePersistent(e1);
   
    Event retrieved = (Event) pm.getObjectById(Event.class, e1.getKey() );
    assertEquals(e1, retrieved);
   
    Extent<Event> extent = pm.getExtent(Event.class, false);
    for(Event e : extent)
    {
      assertEquals("Test event", e.getName());
      assertEquals(ObjectState.PERSISTENT_NEW, JDOHelper.getObjectState(e));
    }
View Full Code Here

  private final TestClock afterEarlyBird = new TestClock(TestConstants.DATE_BEFORE_DEADLINE);
 
  @Override
  public void createStorageData() {
   
    PersistenceManager pm = PMF.get().getPersistenceManager();
    //Transaction tx = pm.currentTransaction();
    try {
      //tx.begin();
     
      CoreData.createCoreData();
     
      Clock testClock = new TestClock(TestConstants.DATE_BEFORE_EARLY_DEADLINE);
     
      // Events
      List<Event> events = new ArrayList<Event>();
      Event event1 = getTestEvent();
     
      events.add(event1);
       Event event2 = new Event("Other event", null, null, true, RegisteredPricingStrategy.COCAMP);
      events.add(event2);   
     
      events.add(new Event("Closed event", null, null, false, RegisteredPricingStrategy.COCAMP))
      pm.makePersistentAll(events);
     
      // Villages
      List<Village> villages = new ArrayList<Village>();
      Village village1 = new Village(TestConstants.VILLAGE1_NAME, event1);
      villages.add(village1);
      villages.add(new Village("Village 2", event1));
      villages.add(new Village("Empty village", event1));
      villages.add(new Village("Village on other event", events.get(1)));
      pm.makePersistentAll(villages);
     
      // Organisations
      List<Organisation> organisations = new ArrayList<Organisation>();
      Organisation orgWcf = new Organisation(TestConstants.ORG1_NAME, true);
      organisations.add(orgWcf);
     
      Organisation otherOrg = new Organisation("Unapproved organisation", false);
      organisations.add(otherOrg);
      pm.makePersistentAll(organisations);
     
      // Units
      List<Unit> units = new ArrayList<Unit>();
      Unit unit1 = new Unit(TestConstants.UNIT1_NAME, organisations.get(0), true);
      unit1.setVillageKey(village1.getKeyCheckNotNull());
     
      // FIXME: Note, all units are in all events for now...
     
      //unit1.addEventRegistration(event1);
      //unit1.addEventRegistration(event2); 
      units.add(unit1);
     
      Unit unit2 = new Unit(TestConstants.UNIT2_NAME, organisations.get(0), true);
     
      // FIXME: Note, all units are in all events for now...
      //unit2.addEventRegistration(event1);
      units.add(unit2);
     
      Unit unapprovedWcfUnit = new Unit("Unapproved unit for wcf", organisations.get(0), false);
      units.add(unapprovedWcfUnit);
      Unit otherOrgUnit = new Unit("Unapproved unit", organisations.get(1), false);
      units.add(otherOrgUnit);
      Unit otherOrgUnit2 = new Unit("Approved unit in other org", organisations.get(1), true);
      units.add(otherOrgUnit2);
      pm.makePersistentAll(units);
     
      // Bookings
      List<Booking> bookings = getBookings(event1, event2, unit1, unit2, unapprovedWcfUnit, otherOrgUnit2);
      pm.makePersistentAll(bookings);
     
     
      // Transactions
      List<Transaction> transactions = new ArrayList<Transaction>();
      transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Payment 1", "Comment 1", 23.32d));
      transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Payment 2", "", 12.00d));
      transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Payment 3", "", 130.00d));
     
      transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Adjustment, "Refund 1", "Refund test", -23.32d));
     
      transactions.add(new Transaction(unit2.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), testClock.getTime(), TransactionType.Payment, "Unit 2 payment", "", 70.00d));
     
      // after earlybird deadline
      transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), afterEarlyBird.getTime(), TransactionType.Payment, "Payment after earlybird", "", 10.00d));
      transactions.add(new Transaction(unit1.getKeyCheckNotNull(), event1.getKeyCheckNotNull(), afterEarlyBird.getTime(), TransactionType.Discount, "Discount for early payment", "", 5.00d));
      pm.makePersistentAll(transactions);
     
      // Users
      User user1 = new User(TestConstants.USER_ADMIN_EMAIL, "Global Admin 1", "password", Accesslevel.GLOBAL_ADMIN);
      user1.setOrganisationKey(orgWcf.getKeyCheckNotNull());
      user1.setUnitKey(unit1.getKeyCheckNotNull());
     
     
      User user2 = new User("orgadmin@example.com", "Org Admin 1", "password", Accesslevel.ORG_ADMIN);
      user2.setOrganisationKey(orgWcf.getKeyCheckNotNull());
      user2.setUnitKey(unit1.getKeyCheckNotNull());
     
      User user3 = new User("unitadmin@example.com", "Unit Admin 1", "password", Accesslevel.UNIT_ADMIN);
      user3.setOrganisationKey(orgWcf.getKeyCheckNotNull());
      user3.setUnitKey(unit1.getKeyCheckNotNull());
     
      User user4 = new User("unassigned@example.com", "Unassigned 1", "password", Accesslevel.UNIT_ADMIN);
      user4.setOrganisationKey(orgWcf.getKeyCheckNotNull());
      user4.setUnitKey(unit2.getKeyCheckNotNull());
      user4.setApproved(false);
     
      User user5 = new User("otherorg@example.com", "Other Org 1", "password", Accesslevel.ORG_ADMIN);
      user5.setOrganisationKey(otherOrg.getKeyCheckNotNull());
      user5.setUnitKey(otherOrgUnit2.getKeyCheckNotNull());
     
      pm.makePersistentAll(user1, user2, user3, user4, user5);
   
     
      // Application settings
      AppSetting defaultEventSetting = new AppSetting(AppSetting.DEFAULT_EVENT, event1.getWebKey());
      pm.makePersistent(defaultEventSetting);
     
      //tx.commit();
    } catch(Exception e) {
      //tx.rollback();
      throw new RuntimeException(e);
    } finally {
      pm.close();
    }
  }
View Full Code Here

  @SuppressWarnings("rawtypes")
  public String execute(){
   
    SecurityModel.checkIsDevMode();
   
    PersistenceManager pm = PMF.get().getPersistenceManager();
   
    // Wipe out old data
    Class[] classesToDelete = new Class[]{
        Event.class, Organisation.class, Unit.class, Village.class, Booking.class
    };
   
    for(Class clazz: classesToDelete)
    {
      Query query = pm.newQuery(clazz);
        query.deletePersistentAll();
    }
   
 
    // Insert new data
View Full Code Here

  }
 
  @Test
  public void testFixtureCreatesData()
  {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    Collection<Event> events = (Collection<Event>) pm.newQuery(Event.class).execute();
    events = pm.detachCopyAll(events);
    pm.close();
   
    List<String> expectedEvents = Arrays.asList("Test event 1", "Other event", "Closed event");
   
    List<String> foundEvents = new ArrayList<String>(2);
   
View Full Code Here

   
   
    List<CommunityAccount> listCommunityAccount = new ArrayList<CommunityAccount>();
    AllCommunityAccount myAllCommunityAccount = new AllCommunityAccount ();
    myAllCommunityAccount.setListCommunityAccount(listCommunityAccount);
    PersistenceManager pm =null;
    pm = PMF.get().getPersistenceManager();
    List<String> listIdUser = new ArrayList<String>();
   
    try {
      ///Recuperation de l'encyclop�die des tanks ( n�cessaire pour connaitre le level de chaque char )  (pour calcul average level)
      //=======================
      if (tankEncyclopedia == null) {
        String urlServer = urlServerEU +"/2.0/encyclopedia/tanks/?application_id=" + applicationIdEU ;
        URL url = new URL(urlServer);
       
        HttpURLConnection conn2 = (HttpURLConnection)url.openConnection();
        conn2.setReadTimeout(20000);
        conn2.setConnectTimeout(20000);
        conn2.getInputStream();
        BufferedReader readerUser = new BufferedReader(new InputStreamReader(conn2.getInputStream()));

        String lineUser = "";
        String AllLinesUser = "";

        while ((lineUser = readerUser.readLine()) != null) {
          AllLinesUser = AllLinesUser + lineUser;
        }
        readerUser.close();

        Gson gsonUser = new Gson();
        tankEncyclopedia = gsonUser.fromJson(AllLinesUser, TankEncyclopedia.class);
      }
     
      //contr�le --------
      if (tankEncyclopedia == null) {
        log.severe("tankEncyclopedia is null" );
       
      }
      else {
        log.warning("tankEncyclopedia is good" );
        if (tankEncyclopedia.getData() ==null ) {
          log.severe("tankEncyclopedia data is null" );
        }
        else {
           Set<Entry<String, DataTankEncyclopedia>>  set = tankEncyclopedia.getData().entrySet();
         
          if (tankEncyclopedia.getData().get("6417") == null ){
            log.severe("tankEncyclopedia data get tank id 6417 is null" );
          }
        }
           
      }
      //-----------
     
      ///
     
      URL urlClan = null ;
      // recup des membres du clan NVS
      urlClan = null ;
      if(lieu.equalsIgnoreCase("boulot")){ //on passe par 1 proxy
        urlClan = new URL("https://pedro-proxy.appspot.com/api.worldoftanks.eu/2.0/clan/info/?application_id=d0a293dc77667c9328783d489c8cef73&clan_id="+idClan);       
      }
      else {
        //500006074
        urlClan = new URL("http://api.worldoftanks.eu/2.0/clan/info/?application_id=d0a293dc77667c9328783d489c8cef73&clan_id="+idClan);
      }
     
      HttpURLConnection conn = (HttpURLConnection)urlClan.openConnection();
      conn.setReadTimeout(60000);
      conn.setConnectTimeout(60000);
      conn.getInputStream();
      BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
     
      String line = "";
      String AllLines = "";
 
      while ((line = reader.readLine()) != null) {
        AllLines = AllLines + line;
      }
      reader.close();
      Gson gson = new Gson();
      DaoCommunityClan2 daoCommunityClan = gson.fromJson(AllLines, DaoCommunityClan2.class);
      daoCommunityClan.setIdClan(idClan);
      daoCommunityClan.setDateCommunityClan(date);
      //persist clan ?
     
      CommunityClan communityClan = TransformDtoObject.TransformCommunityDaoCommunityClanToCommunityClan(daoCommunityClan);
      if (communityClan != null) {
 
        DataCommunityClan myDataCommunityClan = communityClan.getData();
        List<DataCommunityClanMembers> listClanMembers = myDataCommunityClan.getMembers();
 
        for (DataCommunityClanMembers dataClanMember : listClanMembers) {
          for (DataCommunityMembers member : dataClanMember.getMembers()) {
            log.warning("membermember " + member.getAccount_name() + " " + member.getAccount_id() );
            String idUser = member.getAccount_id();
            //log.warning("treatUser " + treatUser);
            listIdUser.add(idUser);
          }

        }//for (DataCommunityClanMembers
      } else {
 
        log.severe("Erreur de parse");
      }
      ////
      String AllIdUser ="";
      for(String idUser :listIdUser) {
        AllIdUser = AllIdUser + "," + idUser;
      }
     
      URL url = null ;
     
      String urlServer = urlServerEU +"/2.0/account/ratings/?application_id=" + applicationIdEU + "&account_id=";
      //http://api.worldoftanks.ru/2.0/account/ratings/?application_id=171745d21f7f98fd8878771da1000a31&account_id=461
     
      if(lieu.equalsIgnoreCase("boulot")){ //on passe par 1 proxy
        url = new URL("https://pedro-proxy.appspot.com/"+urlServer.replaceAll("http://", "") + AllIdUser);
      }
      else {
        url = new URL(urlServer + AllIdUser);
      }
     
      HttpURLConnection conn2 = (HttpURLConnection)url.openConnection();
      conn2.setReadTimeout(20000);
      conn2.setConnectTimeout(20000);
      conn2.getInputStream();
      BufferedReader readerUser = new BufferedReader(new InputStreamReader(conn2.getInputStream()));

      //BufferedReader readerUser = new BufferedReader(new InputStreamReader(url.openStream()));
      String lineUser = "";
      ;
      String AllLinesUser = "";

      while ((lineUser = readerUser.readLine()) != null) {
        AllLinesUser = AllLinesUser + lineUser;
      }
      log.warning(url + " --> " + AllLinesUser.substring(0, 400));
     
      readerUser.close();
      Gson gsonUser = new Gson();
      PlayerRatings playerRatings = gsonUser.fromJson(AllLinesUser, PlayerRatings.class);
      //Transform playerRatings en communityAccount (pour utiliser des types compatibles avec la s�rialisation (pas de MAP !!))
      List<CommunityAccount> listCommunityAccount1 =  TransformDtoObject.TransformPlayerRatingsToListCommunityAccount(playerRatings);
     
      log.warning("TransformPlayerRatingsToListCommunityAccount done ");
      ////////////////////
      //recup des stats de batailles par tank et par joueur (pour calcul average level) -- strong44  -- gexman47
      //"http://api.worldoftanks.eu/2.0/account/tanks/?application_id=d0a293dc77667c9328783d489c8cef73&account_id=506486576,506763437";
      urlServer = urlServerEU +"/2.0/account/tanks/?application_id=" + applicationIdEU + "&account_id=";
      if(lieu.equalsIgnoreCase("boulot")){ //on passe par 1 proxy
        url = new URL("https://pedro-proxy.appspot.com/"+urlServer.replaceAll("http://", "") + AllIdUser);
      }
      else {
        url = new URL(urlServer + AllIdUser);
      }
      //
      conn2 = (HttpURLConnection)url.openConnection();
      conn2.setReadTimeout(20000);
      conn2.setConnectTimeout(20000);
      conn2.getInputStream();
      readerUser = new BufferedReader(new InputStreamReader(conn2.getInputStream()));
      lineUser = "";
      AllLinesUser = "";
      while ((lineUser = readerUser.readLine()) != null) {
        AllLinesUser = AllLinesUser + lineUser;
      }
      log.warning(url + " --> " + AllLinesUser.substring(0, 400));
     
     
      readerUser.close();
      gsonUser = new Gson();
      PlayerTankRatings playerTankRatings = gsonUser.fromJson(AllLinesUser, PlayerTankRatings.class);
     
      //pb mapDataPlayerTankRatings is null !!!!!!
      Map<String,List<DataPlayerTankRatings>> mapDataPlayerTankRatings = playerTankRatings.getData();
     
      if(mapDataPlayerTankRatings != null )
        log.warning("playerTankRatings.getData() done mapDataPlayerTankRatings is good");
      else
        log.warning("playerTankRatings.getData() done  mapDataPlayerTankRatings is null !!!");
     
      /////////////////////
      for(CommunityAccount communityAccount : listCommunityAccount1) {
       
          //Transform playerRatings en communityAccount (pour utiliser des types compatibles avec la s�rialisation (pas de MAP !!))
          //communityAccount =  TransformDtoObject.TransformPlayerRatingsToCommunityAccount(playerRatings);
         
          //make some calculation of stats
          //calcul average level
          log.warning("communityAccount.getIdUser() " + communityAccount.getIdUser());
          List<DataPlayerTankRatings> listPlayerTanksRatings = mapDataPlayerTankRatings.get(communityAccount.getIdUser());
         
          //calcul du tier moyen
          Double nbBattles = 0.0;
          Double levelByBattles = 0.0 ;
          Double averageLevelTank =0.0;
         
          for (DataPlayerTankRatings dataPlayerTankRatings : listPlayerTanksRatings) {
            int tankId= dataPlayerTankRatings.getTank_id() ;
            int battles = dataPlayerTankRatings.getStatistics().getAll().getBattles();
            //int wins = dataPlayerTankRatings.getStatistics().getAll().getWins();
            //
            //log.warning("tankId :" + tankId );
            if (tankEncyclopedia.getData().get(String.valueOf(tankId)) == null )
              log.severe ("tankEncyclopedia.getData().get(tankId) is null ");
            else {
              int levelTank = tankEncyclopedia.getData().get(String.valueOf(tankId)).getLevel();
              //
              nbBattles = nbBattles + battles;
              levelByBattles =levelByBattles + levelTank * battles;
            }
          }//for
          averageLevelTank = levelByBattles/nbBattles;
          DataCommunityAccountRatings myDataCommunityAccountRatings = communityAccount.getData();
         
          //average level tank
          myDataCommunityAccountRatings.setAverageLevel(averageLevelTank);
          //
         
          //int battles = myDataCommunityAccountStats.getBattles();
          //log.warning("userId :" + communityAccount.getIdUser() + " battles : " + battles);

          if (true){
            //pm = PMF.get().getPersistenceManager();
                try {
                  //must transform before persist the objet clan
                  pm.currentTransaction().begin();
                  DaoCommunityAccount2 daoCommunityAccount = TransformDtoObject.TransformCommunityAccountToDaoCommunityAccount(communityAccount);
                 
                  //pour eviter trop de donn�es en base 60 write OP
                  //daoCommunityAccount.getData().setAchievements(null);
                  daoCommunityAccount.setDateCommunityAccount(date);
                  //
                  pm.makePersistent(daoCommunityAccount);
                  pm.currentTransaction().commit();
                  //log.warning("vehicules daoCommunityAccount " + daoCommunityAccount.getData().statsVehicules.get(0).getName() + ":"+  daoCommunityAccount.getData().statsVehicules.get(0).getBattle_count() + ":"+  daoCommunityAccount.getData().statsVehicules.get(0).getWin_count());
                  listUsersPersisted.add(communityAccount.getIdUser());
                 
                }
              catch(Exception e){
                log.log(Level.SEVERE, "Exception while saving daoCommunityAccount", e);
                  pm.currentTransaction().rollback();
                }
                finally {
                    //pm.close();
                }
          }
      }
//            }//for (DataCommunityClanMembers

    } catch (MalformedURLException e) {
      // ...
      log.throwing("Persist stats", "", e);
      log.severe("MalformedURLException " + e.getLocalizedMessage());
      e.printStackTrace();
    } catch (IOException e) {
      // ...
      log.throwing("Persist stats", "", e);
      log.severe("IOException " + e.getLocalizedMessage());
      e.printStackTrace();
    } catch (Exception e) {
        // ...
      log.throwing("Persist stats", "", e);
      log.severe("Exception " + e.getLocalizedMessage());
       StackTraceElement[] stack = e.getStackTrace();
       for (StackTraceElement st : stack) {
         log.severe(st.getMethodName()+":"+st.getLineNumber());
        
        
       }
      
      //e.printStackTrace();
    }
    finally {
      if (pm != null)
        pm.close();
    }
 
    return listUsersPersisted;
 
  }
View Full Code Here

    sum.setKingScore(con.getKingScore());
    sum.setSolderScore(con.getSolderScore());
    sum.setScholarScore(con.getScholarScore());
    sum.setCraftsmanScore(con.getCraftsmanScore());
    PersistenceManagerFactory pmf = PMF.get();
    PersistenceManager pm = pmf.getPersistenceManager();
    try{
      pm.makePersistent(sum);
      //log.info("Result:" +sum.toString());
    }finally{
      pm.close();
    }
  }
View Full Code Here

    }
  }

  public Count getCount(WorkoutContext con){
    PersistenceManagerFactory pmf = PMF.get();
    PersistenceManager pm = null;
    try{
      pm = pmf.getPersistenceManager();
      Transaction tx = pm.currentTransaction();
      Count c = null;
      try{
        tx.begin();
        try{
          c = pm.getObjectById(Count.class, ViewConstants.PRIMARYKEY_ID);
        }catch(Exception e){
          log.log(Level.INFO, "Count 取得中例外", e);
          c = new Count();
        }
        c.setTotal(c.getTotal() + 1);
        if(con.getKingOrSolderScore()>con.getScholarOrCraftsmanScore()){
          c.setKingOrSolder(c.getKingOrSolder() + 1);
          if(con.getKingScore()>con.getSolderScore()){
            c.setKing(c.getKing() + 1);
          }else if(con.getKingScore()<con.getSolderScore()){
            c.setSolder(c.getSolder() + 1);
          }
         
        }else if(con.getKingOrSolderScore()<con.getScholarOrCraftsmanScore()){
          c.setScholarOrCraftsman(c.getScholarOrCraftsman() + 1);
          if(con.getScholarScore()>con.getCraftsmanScore()){
            c.setScholar(c.getScholar() + 1);
          }else if(con.getScholarScore()<con.getCraftsmanScore()){
            c.setCraftsman(c.getCraftsman() + 1);
          }
        }
        pm.makePersistent(c);
       
        tx.commit();
        log.info("Count:" + c.toString());
        return c;
      }finally{
        if(tx.isActive()) tx.rollback();
      }
    }finally{
      if(pm!=null) pm.close();
    }
  }
View Full Code Here

    }
  }
 
  public Count getCount(){
    PersistenceManagerFactory pmf = PMF.get();
    PersistenceManager pm = null;
    try{
      pm = pmf.getPersistenceManager();
      Transaction tx = pm.currentTransaction();
      Count c = null;
      try{
        tx.begin();
        try{
          c = pm.getObjectById(Count.class, ViewConstants.PRIMARYKEY_ID);
        }catch(Exception e){
          log.log(Level.INFO, "Count 取得中例外", e);
          c = new Count();
        }
        tx.commit();
        log.info("Count:" + c.toString());
        return c;
      }finally{
        if(tx.isActive()) tx.rollback();
      }
    }finally{
      if(pm!=null) pm.close();
    }
  }
View Full Code Here

TOP

Related Classes of javax.jdo.PersistenceManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.