/******************************************************************************* * Copyright (c) 2010 Martin Schnabel <mb0@mb0.org>. * 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 ******************************************************************************/ package org.axdt.asdoc.parser; import org.apache.log4j.Logger; import org.axdt.asdoc.model.AsdocRoot; import org.axdt.asdoc.model.AsdocType; import org.axdt.asdoc.model.ParseLevel; import org.eclipse.emf.ecore.resource.Resource; public abstract class AsdocParser { protected Logger logger = Logger.getLogger(getClass()); public AsdocRoot parseDoc(AsdocRoot root, ParseLevel level) throws Exception { boolean modified = false; if (ParseLevel.PACKAGE_VALUE <= level.getValue() && !root.isPackageContentParsed()) { logger.info("Parsing package list"); modified = parsePackageLevel(root) || modified; } if (ParseLevel.TYPE_VALUE <= level.getValue() && !root.isTypeContentParsed()) { logger.info("Parsing type list"); modified = parseTypeLevel(root) || modified; } if (ParseLevel.GLOBAL_VALUE <= level.getValue() && root.isGlobalContentAvailable() && !root.isGlobalContentParsed()) { logger.info("Parsing type list"); modified = parseGlobalLevel(root) || modified; } if (ParseLevel.MEMBER_VALUE <= level.getValue() && !root.isMemberContentParsed()) { logger.info("Parsing type members"); modified = parseMemberLevel(root) || modified; } if (modified) { Resource eResource = root.eResource(); if (eResource != null) eResource.setModified(true); } return root; } public abstract boolean parsePackageLevel(AsdocRoot root) throws Exception; public abstract boolean parseTypeLevel(AsdocRoot root) throws Exception; public abstract boolean parseGlobalLevel(AsdocRoot root) throws Exception; public abstract boolean parseMemberLevel(AsdocRoot root) throws Exception; public abstract boolean parseMemberLevel(AsdocType asdocType) throws Exception; }