⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gridparser.java

📁 网格agent平台(GAP ,Grid AgentsPlatform)开发包
💻 JAVA
字号:
/*
 ****************************************************************************************
 * Copyright ? Giovanni Novelli
 * All Rights Reserved.
 ****************************************************************************************
 *
 * License:      GPL - http://www.gnu.org/copyleft/gpl.html
 *
 * GridParser.java
 *
 * Created on 22 January 2008, 09.00 by Giovanni Novelli
 *
 * $Id$
 *
 */

package net.sf.gap.xml.parsing.impl;

import net.sf.gap.xml.parsing.Parser;
import net.sf.gap.xml.types.GridElementType;
import net.sf.gap.xml.types.GridType;
import net.sf.gap.xml.types.HardDiskListType;
import net.sf.gap.xml.types.HardDiskType;
import net.sf.gap.xml.types.MachineType;
import net.sf.gap.xml.types.StorageType;
import net.sf.gap.xml.types.TapeListType;
import net.sf.gap.xml.types.TapeType;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
 *
 * @author Giovanni Novelli
 */
public class GridParser extends Parser {
	public GridParser(Document document) {
		super(document);
	}

	public GridType getGrid() {
		GridType grid = new GridType();
		NodeList gridNodeList = this.getDocument().getElementsByTagName("grid");
		if (gridNodeList.getLength() > 0) {
			Element gridNodeListElement = (Element) gridNodeList.item(0);
			NodeList gridElements = gridNodeListElement
					.getElementsByTagName("gridElement");
			if (gridElements.getLength() > 0) {
				grid = new GridType();
				for (int ig = 0; ig < gridElements.getLength(); ig++) {
					Element geItem = (Element) gridElements.item(ig);
					GridElementType gridElementInstance = this
							.getGridElement(geItem);
					grid.addGridElement(gridElementInstance);
				}
			}
		}
		return grid;
	}

	private StorageType getStorage(Element storageElement) {
		Element rmElement = (Element) storageElement.getElementsByTagName("RM")
				.item(0);
		String rmName = rmElement.getAttribute("name");
		StorageType storage = new StorageType(rmName);
		NodeList hdItems = storageElement.getElementsByTagName("hdItem");
		HardDiskListType hdList = new HardDiskListType();
		for (int i = 0; i < hdItems.getLength(); i++) {
			Element hdItem = (Element) hdItems.item(i);
			String hdName = hdItem.getAttribute("name");
			Element capacityElement = (Element) hdItem.getElementsByTagName(
					"Capacity").item(0);
			double aCapacity = Double.parseDouble(capacityElement
					.getTextContent());
			Element latencyElement = (Element) hdItem.getElementsByTagName(
					"Latency").item(0);
			double aLatency = Double.parseDouble(latencyElement
					.getTextContent());
			Element askElement = (Element) hdItem.getElementsByTagName(
					"AvgSeekTime").item(0);
			double aAvgSeekTime = Double.parseDouble(askElement
					.getTextContent());
			Element mtrElement = (Element) hdItem.getElementsByTagName(
					"MaxTransferRate").item(0);
			double aMaxTransferRate = Double.parseDouble(mtrElement
					.getTextContent());
			HardDiskType hd = new HardDiskType(hdName, aCapacity, aLatency,
					aAvgSeekTime, aMaxTransferRate);
			hdList.addHardDisk(hd);
		}
		storage.setHardDiskList(hdList);
		NodeList tapeItems = storageElement.getElementsByTagName("tapeItem");
		if (tapeItems.getLength() > 0) {
			TapeListType tapeList = new TapeListType();
			for (int i = 0; i < hdItems.getLength(); i++) {
				Element tapeItem = (Element) tapeItems.item(i);
				String tapeName = tapeItem.getAttribute("name");
				Element capacityElement = (Element) tapeItem
						.getElementsByTagName("Capacity").item(0);
				double aCapacity = Double.parseDouble(capacityElement
						.getTextContent());
				Element atElement = (Element) tapeItem.getElementsByTagName(
						"AccessTime").item(0);
				double aAccessTime = Double.parseDouble(atElement
						.getTextContent());
				Element rtElement = (Element) tapeItem.getElementsByTagName(
						"RewindTime").item(0);
				double aRewindTime = Double.parseDouble(rtElement
						.getTextContent());
				Element mtrElement = (Element) tapeItem.getElementsByTagName(
						"MaxTransferRate").item(0);
				double aMaxTransferRate = Double.parseDouble(mtrElement
						.getTextContent());
				TapeType tape = new TapeType(tapeName, aCapacity, aAccessTime,
						aRewindTime, aMaxTransferRate);
				tapeList.addTape(tape);
			}
			storage.setTapeList(tapeList);
		}
		return storage;
	}

	private GridElementType getGridElement(Element geItem) {
		GridElementType gridElementInstance = new GridElementType();
		gridElementInstance.setName(geItem.getAttribute("name"));
                gridElementInstance.setRB(false);
		NodeList isRBListItems = geItem.getElementsByTagName("isRB");
		for (int i = 0; i < isRBListItems.getLength(); i++) {
        		Element isRBItem = (Element) isRBListItems.item(i);
                        gridElementInstance.setRB(true);
                        //gridElementInstance.setRB(Boolean.parseBoolean(isRBItem.getTextContent()));
                }
		NodeList machineListItems = geItem.getElementsByTagName("Machine");
		for (int i = 0; i < machineListItems.getLength(); i++) {
			Element machineItem = (Element) machineListItems.item(i);
			MachineType machine = new MachineType();
			NodeList rmListItems = machineItem.getElementsByTagName("repeatMachine");
                        int repeatMachine = 1;
			for (int j = 0; j < rmListItems.getLength(); j++) {
 			  Element rmItem = (Element) rmListItems.item(j);
                          repeatMachine = Integer.parseInt(rmItem.getTextContent());
                        }
			NodeList peListItems = machineItem.getElementsByTagName("PE");
			for (int j = 0; j < peListItems.getLength(); j++) {
				Element peItem = (Element) peListItems.item(j);
				Element mipsItem = (Element) peItem
						.getElementsByTagName("MIPS").item(0);
				int MIPS = Integer.parseInt(mipsItem.getTextContent());
        			NodeList countListItems = machineItem.getElementsByTagName("count");
                                int count = 1;
        			for (int jj = 0; jj < countListItems.getLength(); jj++) {
                                    Element countItem = (Element) countListItems.item(jj);
                                    count = Integer.parseInt(countItem.getTextContent());
                                    for (int k=0;k<count;k++) {
                                            machine.addPE(MIPS);
                                    }
                                }

			}
                        for (int k=0;k<repeatMachine;k++) {
        			gridElementInstance.addMachine(machine);
                        }
		}
		NodeList storageNodeList = geItem.getElementsByTagName("storage");
		if (storageNodeList.getLength() > 0) {
			Element storageElement = (Element) storageNodeList.item(0);
			StorageType storage = this.getStorage(storageElement);
			gridElementInstance.setStorage(storage);
		}
		Element linkItem = (Element) geItem.getElementsByTagName("link")
				.item(0);
		String linkName = linkItem.getTextContent();
		gridElementInstance.setLink(linkName);
		return gridElementInstance;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -