Package com.madgnome.jira.plugins.jirachievements.utils.initializers

Source Code of com.madgnome.jira.plugins.jirachievements.utils.initializers.AchievementsInitializer

package com.madgnome.jira.plugins.jirachievements.utils.initializers;

import com.madgnome.jira.plugins.jirachievements.data.ao.Achievement;
import com.madgnome.jira.plugins.jirachievements.data.ao.Category;
import com.madgnome.jira.plugins.jirachievements.data.ao.Difficulty;
import com.madgnome.jira.plugins.jirachievements.data.bean.AchievementBean;
import com.madgnome.jira.plugins.jirachievements.data.services.IAchievementDaoService;
import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.util.EnumMorpher;
import net.sf.json.util.JSONUtils;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;

public class AchievementsInitializer implements ITableInitializer
{
  private final static Logger logger = LoggerFactory.getLogger(AchievementsInitializer.class);
  private final IAchievementDaoService achievementDaoService;

  public AchievementsInitializer(IAchievementDaoService achievementDaoService)
  {
    this.achievementDaoService = achievementDaoService;
  }

  @Override
  public void initialize()
  {
    String achievementsString = loadAchievementsFile();
    AchievementBean[] achievements = parseAchievementsJSon(achievementsString);

    for (AchievementBean achievement : achievements)
    {
      createAchievement(achievement);
    }
  }

  private String loadAchievementsFile()
  {
    InputStream inputStream = getClass().getResourceAsStream("/data/achievements.json");

    StringWriter writer = new StringWriter();
    try
    {
      IOUtils.copy(inputStream, writer, "UTF-8");
    } catch (IOException e)
    {
      logger.error("Couldn't read the achievements file", e);
    }

    return writer.toString();
  }

  private AchievementBean[] parseAchievementsJSon(String json)
  {
    JSONUtils.getMorpherRegistry().registerMorpher( new EnumMorpher( Category.class ) );
    JSONUtils.getMorpherRegistry().registerMorpher( new EnumMorpher( Difficulty.class ) );
    JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
    JsonConfig jsonConfig = new JsonConfig();
    jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY );
    jsonConfig.setRootClass(AchievementBean.class);

    return (AchievementBean[]) JSONSerializer.toJava( jsonArray, jsonConfig );
  }

  private void createAchievement(AchievementBean achievementBean)
  {
    Achievement achievement = achievementDaoService.get(achievementBean.getRef());
    if (achievement == null)
    {
      achievement = achievementDaoService.create(achievementBean.getRef());
      achievement.setRef(achievementBean.getRef());
      achievement.setName(achievementBean.getName());
      achievement.setCatchPhrase(achievementBean.getCatchPhrase());
      achievement.setDescription(achievementBean.getDescription());
      achievement.setDifficulty(achievementBean.getDifficulty());
      achievement.setCategory(achievementBean.getCategory());
      achievement.setHidden(achievementBean.isHidden());
      achievement.save();
    }
  }
}
TOP

Related Classes of com.madgnome.jira.plugins.jirachievements.utils.initializers.AchievementsInitializer

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.