// Path: src/main/java/model/Knight.java
// public interface Knight {
//     String getName();
// 
//     void setWeapon(KnightWeapon knightWeapon);
// 
//     KnightWeapon getWeapon();
// 
//     Knight cloneKnight() throws CloneNotSupportedException;
// 
//     Integer getDamage();
// 
//     void readQuest(String questDetails);
// 
//     Double getArmor();
// 
//     void reduceArmor(Double reduceValue);
// 
// }
// 
// Path: src/main/java/model/KnightWeapon.java
// public enum KnightWeapon {
//     SWORD(10), DOUBLE_SWORD(19), FAITH(1);
//     
//     /**
//      * Damage this weapon can do
//      */
//     private Integer damage;
// 
//     private KnightWeapon(Integer damage) {
// 	this.damage = damage;
//     }
// 
//     public Integer getDamage() {
// 	return damage;
//     }
// }


import java.util.ArrayList;
import java.util.List;
import model.Knight;
import model.KnightWeapon;
package structural.composit;



/**
 * 
 * @author prvoslav
 *
 * Class that holds the list of knights and allows calculations and actions on all of the knights
 * 
 */
public class KnightArmy implements Knight, Cloneable {

    private List<Knight> knights = new ArrayList<Knight>();
    private String armyName = null;

    public void addKnight(Knight knight) {
	knights.add(knight);
    }

    public String getName() {
	return armyName;
    }

    public void setName(String name) {
	this.armyName = name;
    }

// Path: src/main/java/model/Knight.java
// public interface Knight {
//     String getName();
// 
//     void setWeapon(KnightWeapon knightWeapon);
// 
//     KnightWeapon getWeapon();
// 
//     Knight cloneKnight() throws CloneNotSupportedException;
// 
//     Integer getDamage();
// 
//     void readQuest(String questDetails);
// 
//     Double getArmor();
// 
//     void reduceArmor(Double reduceValue);
// 
// }
// 
// Path: src/main/java/model/KnightWeapon.java
// public enum KnightWeapon {
//     SWORD(10), DOUBLE_SWORD(19), FAITH(1);
//     
//     /**
//      * Damage this weapon can do
//      */
//     private Integer damage;
// 
//     private KnightWeapon(Integer damage) {
// 	this.damage = damage;
//     }
// 
//     public Integer getDamage() {
// 	return damage;
//     }
// }


// Path: src/main/java/structural/composit/KnightArmy.java
import java.util.ArrayList;
import java.util.List;
import model.Knight;
import model.KnightWeapon;

package structural.composit;



/**
 * 
 * @author prvoslav
 *
 * Class that holds the list of knights and allows calculations and actions on all of the knights
 * 
 */
public class KnightArmy implements Knight, Cloneable {

    private List<Knight> knights = new ArrayList<Knight>();
    private String armyName = null;

    public void addKnight(Knight knight) {
	knights.add(knight);
    }

    public String getName() {
	return armyName;
    }

    public void setName(String name) {
	this.armyName = name;
    }

    public void setWeapon(KnightWeapon knightWeapon) {