001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.cocoon.forms.samples.dreamteam;
018:
019: import java.util.ArrayList;
020: import java.util.Hashtable;
021: import java.util.Iterator;
022: import java.util.List;
023:
024: import org.w3c.dom.Document;
025: import org.w3c.dom.Element;
026: import org.w3c.dom.Node;
027: import org.w3c.dom.NodeList;
028:
029: /**
030: * Manager
031: */
032: public class Manager {
033: private static Manager manager = new Manager();
034: private List allPersons = null;
035: private Team dreamTeam = null;
036:
037: private Manager() {
038: super ();
039: }
040:
041: public static Manager getManager() {
042: if (manager == null) {
043: manager = new Manager();
044: }
045: return manager;
046: }
047:
048: public Hashtable getAllPersonsByPosition() {
049: Hashtable list = new Hashtable();
050: Team team = null;
051: TeamMember teamMember = null;
052: String position = null;
053: for (int i = 0; i < allPersons.size(); i++) {
054: teamMember = (TeamMember) allPersons.get(i);
055: position = teamMember.getPosition();
056: if (list.containsKey(position)) {
057: team = (Team) list.get(position);
058: } else {
059: team = new Team();
060: list.put(position, team);
061: }
062: team.addMember(teamMember);
063: }
064: return list;
065:
066: }
067:
068: public TeamMember getPerson(String memberID) {
069: TeamMember member = null;
070: if (allPersons == null) {
071: return null;
072: }
073: for (Iterator iter = allPersons.iterator(); iter.hasNext();) {
074: member = (TeamMember) iter.next();
075: if (member.getMemberId().equals(memberID)) {
076: return member;
077: }
078: }
079: return null;
080: }
081:
082: public void buildDreamTeam(Team dreamlist) {
083: if (dreamTeam != null) {
084: dreamTeam.getTeam().clear();
085: }
086: dreamTeam = new Team();
087: TeamMember listMember = null;
088: TeamMember dreamMember = null;
089: for (Iterator iter = dreamlist.getTeam().iterator(); iter
090: .hasNext();) {
091: listMember = (TeamMember) iter.next();
092: dreamMember = getPerson(listMember.getMemberId());
093: dreamTeam.addMember(dreamMember);
094: }
095: }
096:
097: public Team getDreamTeam() {
098: if (dreamTeam == null) {
099: dreamTeam = new Team();
100: dreamTeam.setTeam(allPersons);
101: }
102: return dreamTeam;
103: }
104:
105: public void readPlayers(Document doc) {
106: NodeList players = doc.getElementsByTagName("player");
107: Node player = null;
108: int size = players.getLength();
109: for (int i = 0; i < size; i++) {
110: player = players.item(i);
111: addPlayer((Element) player);
112: }
113: }
114:
115: private void addPlayer(Element player) {
116: // convert the XML node to a TeamMember
117: if (allPersons == null) {
118: allPersons = new ArrayList();
119: }
120: TeamMember member = null;
121: member = new TeamMember();
122: member.setMemberId("" + (allPersons.size() + 1));
123: member.setName(getElementValue(player, "name"));
124: member.setPosition(getElementValue(player, "position"));
125: member.setCountry(getElementValue(player, "country"));
126: // System.out.println(member.toString());
127: allPersons.add(member);
128: }
129:
130: private String getElementValue(Element element, String tag) {
131: String result = null;
132: NodeList nodes = element.getElementsByTagName(tag);
133: result = nodes.item(0).getFirstChild().getNodeValue();
134: // System.out.println("element: " + tag + "=" + result);
135: return result;
136: }
137:
138: }
|