/* * Created by LuaView. * Copyright (c) 2017, Alibaba Group. All rights reserved. * * This source code is licensed under the MIT. * For the full copyright and license information,please view the LICENSE file in the root directory of this source tree. */ package com.taobao.luaview.scriptbundle; import com.taobao.luaview.scriptbundle.asynctask.SimpleTask1; import com.taobao.luaview.util.FileUtil; import java.util.HashMap; import java.util.Map; import java.util.Properties; /** * 脚本文件包,每一个加载的脚本包,加载成功后返回该bundle * * @author song * @date 15/11/10 */ public class ScriptBundle { //脚本网络地址 private String mUrl; //脚本本地地址 private String mBaseFilePath; //脚本文件 private HashMap<String, ScriptFile> mScriptFileMap; //是否是bytecode private boolean isBytecode; //config,TODO 可以根据脚本包里的配置来控制虚拟机的运行 private Properties mProps; public ScriptBundle() { mScriptFileMap = new HashMap<String, ScriptFile>(); } public ScriptBundle addScript(ScriptFile scriptFile) { if (mScriptFileMap != null) { mScriptFileMap.put(scriptFile.fileName, scriptFile); } return this; } public int size() { return mScriptFileMap != null ? mScriptFileMap.size() : 0; } public void setUrl(String url) { this.mUrl = url; } public void setBytecode(boolean isBytecode) { this.isBytecode = isBytecode; } public void setBaseFilePath(String mBaseFilePath) { this.mBaseFilePath = mBaseFilePath; } public String getBaseFilePath() { return mBaseFilePath; } public String getUrl() { return mUrl; } public boolean isBytecode() { return isBytecode; } public Map<String, ScriptFile> getScriptFileMap() { return mScriptFileMap; } public boolean containsKey(final String key) { return mScriptFileMap != null && mScriptFileMap.containsKey(key); } public ScriptFile getScriptFile(final String key) { return mScriptFileMap != null ? mScriptFileMap.get(key) : null; } public void saveToFile(final String path) { if (path != null) { if (mScriptFileMap != null) { new SimpleTask1<Object>() { @Override protected Object doInBackground(Object... params) { ScriptFile file = null; for (String key : mScriptFileMap.keySet()) { file = mScriptFileMap.get(key); if (file != null) { FileUtil.save(path + "/" + file.fileName, file.scriptData); } } return null; } }.executeInPool(); } } } }