/*******************************************************************************
 * Copyright (c) 2016 Parasoft and University of Eindhoven.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Janusz Studzizba(Parasoft) - initial API and implementation
 *   Dariusz Oszczedlowski(Parasoft) - initial API and implementation
 *   Magdalena Gniewek(Parasoft) - initial API and implementation
 *   Michal Wlodarczyk(Parasoft) - initial API and implementation
 *   Alex Aroyo (UE) - Metrics reports implementation
 *******************************************************************************/
package org.eclipse.opencert.webapp.reports.containers;

public class ComplianceDetailsItem {
	private String name;
	private String description;
	private String level;
	
	public ComplianceDetailsItem(String name, String description, String level) {
		this.name = name;
		this.description = description;
		this.level = level;
	}

	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public String getDescription() {
		return description;
	}
	
	public void setDescription(String description) {
		this.description = description;
	}
	
	public String getLevel() {
		return level;
	}
	
	public void setLevel(String level) {
		this.level = level;
	}
}
