Java tutorial
/******************************************************************************* * Copyright 2014 Tobias Welther * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package de.tobiyas.racesandclasses.chat.channels.container; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; import com.avaje.ebean.validation.NotEmpty; import com.avaje.ebean.validation.NotNull; import de.tobiyas.racesandclasses.util.chat.ChannelLevel; @Entity @Table(name = "_channel_settings") public class ChannelSaveContainer { @Id @NotEmpty private String channelName; @NotNull private String channelPassword; @NotNull private String channelAdmin; @Embedded private ChannelLevel channelLevel; @NotNull private String participants; @NotNull private String bannedMap; @NotNull private String mutedMap; //Channel Formatter @NotEmpty private String prefix; @NotEmpty private String suffix; @NotEmpty private String channelColor; @NotEmpty private String channelFormat; public String getChannelName() { return channelName; } public void setChannelName(String channelName) { this.channelName = channelName; } public String getChannelPassword() { return channelPassword; } public void setChannelPassword(String channelPassword) { this.channelPassword = channelPassword; } public String getChannelAdmin() { return channelAdmin; } public void setChannelAdmin(String channelAdmin) { this.channelAdmin = channelAdmin; } public ChannelLevel getChannelLevel() { return channelLevel; } public void setChannelLevel(ChannelLevel channelLevel) { this.channelLevel = channelLevel; } public String getParticipants() { return participants; } /** * Use {@link #generateParitipants()} for a parsed list. * * @param participants */ @Deprecated public void setParticipants(String participants) { this.participants = participants; } /** * Use {@link #generateBannedMap()} for a parsed Map. */ @Deprecated public String getBannedMap() { return bannedMap; } /** * Use {@link #saveBannedMap()} to save. * * @param bannedMap to save */ @Deprecated public void setBannedMap(String bannedMap) { this.bannedMap = bannedMap; } /** * Use {@link #generateMutedMap()} for a parsed Map. */ @Deprecated public String getMutedMap() { return mutedMap; } /** * Use {@link #saveBannedMap()} to save. * * @param mutedMap */ @Deprecated public void setMutedMap(String mutedMap) { this.mutedMap = mutedMap; } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public String getSuffix() { return suffix; } public void setSuffix(String suffix) { this.suffix = suffix; } public String getChannelColor() { return channelColor; } public void setChannelColor(String channelColor) { this.channelColor = channelColor; } public String getChannelFormat() { return channelFormat; } public void setChannelFormat(String channelFormat) { this.channelFormat = channelFormat; } /** * Generates the List of Participants from the value saved in the DB. * * @return */ public List<String> generateParitipants() { try { List<String> participants = new LinkedList<String>(); JSONArray tempObject = (JSONArray) new JSONParser().parse(this.participants); //early out for error in reading. if (tempObject == null || tempObject.size() == 0) return participants; for (int i = 0; i < tempObject.size(); i++) { participants.add(tempObject.get(i).toString()); } return participants; } catch (ParseException e) { e.printStackTrace(); return new LinkedList<String>(); } } @SuppressWarnings("unchecked") public void saveParticipants(List<String> participants) { JSONArray tempObject = new JSONArray(); for (String playerName : participants) { tempObject.add(playerName); } this.participants = tempObject.toJSONString(); } public void saveBannedMap(Map<String, Integer> banned) { this.bannedMap = parseMapToString(banned); } public Map<String, Integer> generateBannedMap() { return parseStringToMap(this.bannedMap); } public void saveMutedMap(Map<String, Integer> banned) { this.mutedMap = parseMapToString(banned); } public Map<String, Integer> generateMutedMap() { return parseStringToMap(this.mutedMap); } @SuppressWarnings("unchecked") private String parseMapToString(Map<String, Integer> map) { JSONObject tempObject = new JSONObject(); for (Entry<String, Integer> player : map.entrySet()) { tempObject.put(player.getKey(), player.getValue()); } return tempObject.toJSONString(); } @SuppressWarnings("unchecked") private Map<String, Integer> parseStringToMap(String parseable) { try { Map<String, Integer> bannedmap = new HashMap<String, Integer>(); JSONObject tempObject = (JSONObject) new JSONParser().parse(parseable); //early out for error in reading. if (tempObject == null || tempObject.size() == 0) return bannedmap; Set<String> entrySet = tempObject.entrySet(); for (String entry : entrySet) { int value = (Integer) tempObject.get(entry); bannedmap.put(entry, value); } return bannedmap; } catch (ParseException e) { e.printStackTrace(); return new HashMap<String, Integer>(); } } }