/*******************************************************************************
 * Copyright 2014 Rafael Garcia Moreno.
 * 
 * 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 com.bladecoder.engineeditor.model;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.net.URL;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;

import org.apache.commons.io.FileUtils;
import org.xml.sax.SAXException;

import com.bladecoder.engine.assets.EngineAssetManager;
import com.bladecoder.engine.model.World;
import com.bladecoder.engineeditor.common.ElementUtils;

public class Chapter {
	private String modelPath;
	private String id;

	public Chapter(String modelPath) {
		this.modelPath = modelPath;
		
		if(!modelPath.endsWith("/"))
			this.modelPath = modelPath + "/";
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String toString() {
		return getId();
	}
	
	public void load(String id) throws IOException {
		setId(id);
		World.getInstance().loadChapter(id);
	}
	
	public void save() throws IOException {
		World.getInstance().saveModel(id);
	}
	
	public String[] getChapters() {
		
		String[] chapters = new File(modelPath).list(new FilenameFilter() {
			@Override
			public boolean accept(File arg0, String arg1) {
				if (!arg1.endsWith(EngineAssetManager.CHAPTER_EXT) &&
						!arg1.endsWith(".chapter"))
					return false;

				return true;
			}
		});
		
		for(int i = 0; i < chapters.length; i++) {
			if(chapters[i].endsWith(EngineAssetManager.CHAPTER_EXT))
				chapters[i] = chapters[i].substring(0, chapters[i].lastIndexOf(EngineAssetManager.CHAPTER_EXT));
			else
				chapters[i] = chapters[i].substring(0, chapters[i].lastIndexOf(".chapter"));
		}
		
		return chapters;
	}
	
	public String getInitChapter() {
		String init = World.getInstance().getInitChapter();
		
		if(init == null || init.isEmpty()) {
			init = getChapters()[0];
			
			World.getInstance().setInitChapter(init);
		}
		
		return init;
	}
	
	public String createChapter(String id) throws TransformerException, ParserConfigurationException, IOException {
		String checkedId = ElementUtils.getCheckedId(id, getChapters());
		
		URL inputUrl = getClass().getResource("/projectTmpl/android/assets/model/00.chapter.json");
		File dest = new File(modelPath + checkedId + EngineAssetManager.CHAPTER_EXT);
		FileUtils.copyURLToFile(inputUrl, dest);
		
		return checkedId;
	}
		
	public void renameChapter(String oldId, String newId) throws TransformerException, ParserConfigurationException, SAXException, IOException {
		File f = new File(modelPath + id + EngineAssetManager.CHAPTER_EXT);
		f.renameTo(new File(modelPath + newId + EngineAssetManager.CHAPTER_EXT));
		
		String i18nFilename = modelPath + id + ".properties";
		f = new File(i18nFilename);
		f.renameTo(new File(modelPath + newId + ".properties"));
	}
	
	public void deleteChapter(String id) throws TransformerException, ParserConfigurationException, SAXException, IOException {		
		File f = new File(modelPath + id + EngineAssetManager.CHAPTER_EXT);
		f.delete();

		String i18nFilename = modelPath + id + ".properties";
		f = new File(i18nFilename);
		f.delete();
	}
}

@@ -2895,16 +2895,8 @@
 mpl/
-android/
 asse

Fix bug creating chapter.