Package games.stendhal.tools.playerUpdate

Source Code of games.stendhal.tools.playerUpdate.UpdatePlayerEntities

/* $Id: UpdatePlayerEntities.java,v 1.13 2010/09/19 01:28:57 nhnb Exp $ */
/***************************************************************************
*                   (C) Copyright 2003-2010 - Stendhal                    *
***************************************************************************
***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************/
package games.stendhal.tools.playerUpdate;

import games.stendhal.server.core.engine.StendhalRPWorld;
import games.stendhal.server.core.engine.db.CharacterIterator;
import games.stendhal.server.entity.player.Player;
import games.stendhal.server.entity.player.UpdateConverter;

import java.io.IOException;
import java.sql.SQLException;
import java.util.Iterator;

import marauroa.common.game.RPObject;
import marauroa.server.db.DBTransaction;
import marauroa.server.db.TransactionPool;
import marauroa.server.game.db.CharacterDAO;
import marauroa.server.game.db.DAORegister;
import marauroa.server.game.db.DatabaseFactory;

import org.apache.log4j.Logger;

/**
* Loads all Players from the database, performs update operations and saves afterwards.
* @author madmetzger
*/
public class UpdatePlayerEntities {
  private static Logger logger = Logger.getLogger(UpdatePlayerEntities.class);

    /**
     * Inits all RPClasses, has to be called before doing update. Split off due to testing issues.
     */
  public void initRPClasses() {
    StendhalRPWorld.get();
  }
   
  private void loadAndUpdatePlayers(DBTransaction transaction) throws SQLException, IOException {
      final Iterator<RPObject> i = new CharacterIterator(transaction, true);
      while (i.hasNext()) {
        final RPObject next = i.next();
        System.out.println(next);
        final Player p = createPlayerFromRPO(next);
        savePlayer(transaction, p);
      }
    }

  Player createPlayerFromRPO(final RPObject next) {
    UpdateConverter.updatePlayerRPObject(next);
    final Player p = (Player) new Player(next);
    UpdateConverter.updateQuests(p);
    return p;
  }

  void savePlayer(DBTransaction transaction, final Player player) throws SQLException, IOException {
    DAORegister.get().get(CharacterDAO.class).storeCharacter(transaction, player.getName(), player.getName(), player);
  }
   
    private void doUpdate() {
    DBTransaction transaction = TransactionPool.get().beginWork();
    try {
      this.loadAndUpdatePlayers(transaction);
      TransactionPool.get().commit(transaction);
    } catch (Exception e) {
      logger.error(e, e);
      TransactionPool.get().rollback(transaction);
    }
  }
   
  public static void main(final String[] args) {
    new DatabaseFactory().initializeDatabase()
    UpdatePlayerEntities updatePlayerEntities = new UpdatePlayerEntities();
        updatePlayerEntities.initRPClasses();
    updatePlayerEntities.doUpdate();
    }

}

        
TOP

Related Classes of games.stendhal.tools.playerUpdate.UpdatePlayerEntities

TOP
Copyright © 2018 www.massapi.com. 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.