public boolean isValid() {
		Set<IGMVVegetable> requiredVegs = new HashSet<IGMVVegetable>();
		for (IGMVVegetable veg : this.vegetables) {
			if (veg.isRequiredItem()) {
				requiredVegs.add(veg);
			}
		}
		for (IGMVVegetable veg : requiredVegs) {
			if (veg.getActualVegetableQuantity() <= 0) {
				return false;
			}
		}
		
		double actualRowLength = 0;
		
		for(IGMVVegetable veg:this.vegetables) {
			for(IGMVVariety var: veg.getVarieties()) {
				actualRowLength += var.getActualRowLength();
			}
		}
		
		if (size.getTotalRowLength() != Math.round((actualRowLength * 100)/100)) {
			System.out.println("Total Row lenght " + size.getTotalRowLength()
					+ "actual allocated " + Math.round(actualRowLength * 100)/100);
			return false;
		}
		
		return true;
	}