/*
 * Copyright 2012 LinkedIn Corp.
 * 
 * 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 azkaban.sla;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import azkaban.sla.SLA.SlaSetting;

public class SlaOptions {

	public List<String> getSlaEmails() {
		return slaEmails;
	}
	public void setSlaEmails(List<String> slaEmails) {
		this.slaEmails = slaEmails;
	}
	public List<SlaSetting> getSettings() {
		return settings;
	}
	public void setSettings(List<SlaSetting> settings) {
		this.settings = settings;
	}
	private List<String> slaEmails;
	private List<SlaSetting> settings;
	public Object toObject() {
		Map<String, Object> obj = new HashMap<String, Object>();
		obj.put("slaEmails", slaEmails);
		List<Object> slaSettings = new ArrayList<Object>();
		for(SlaSetting s : settings) {
			slaSettings.add(s.toObject());
		}
		obj.put("settings", slaSettings);
		return obj;
	}
	@SuppressWarnings("unchecked")
	public static SlaOptions fromObject(Object object) {
		if(object != null) {
			SlaOptions slaOptions = new SlaOptions();
			Map<String, Object> obj = (HashMap<String, Object>) object;
			slaOptions.setSlaEmails((List<String>) obj.get("slaEmails"));
			List<SlaSetting> slaSets = new ArrayList<SlaSetting>();
			for(Object set: (List<Object>)obj.get("settings")) {
				slaSets.add(SlaSetting.fromObject(set));
			}
			slaOptions.setSettings(slaSets);
			return slaOptions;
		}
		return null;			
	}
}
