/*******************************************************************************
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* 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 hr.fer.zemris.vhdllab.service.extractor.schema;
import hr.fer.zemris.vhdllab.applets.editor.schema2.interfaces.ISchemaComponentCollection;
import hr.fer.zemris.vhdllab.applets.editor.schema2.interfaces.ISchemaInfo;
import hr.fer.zemris.vhdllab.applets.editor.schema2.misc.PlacedComponent;
import hr.fer.zemris.vhdllab.applets.editor.schema2.model.SchemaInfo2VHDL;
import hr.fer.zemris.vhdllab.applets.editor.schema2.model.serialization.SchemaDeserializer;
import hr.fer.zemris.vhdllab.service.ci.CircuitInterface;
import hr.fer.zemris.vhdllab.service.exception.CircuitInterfaceExtractionException;
import hr.fer.zemris.vhdllab.service.exception.DependencyExtractionException;
import hr.fer.zemris.vhdllab.service.exception.VhdlGenerationException;
import hr.fer.zemris.vhdllab.service.extractor.AbstractMetadataExtractor;
import hr.fer.zemris.vhdllab.service.result.Result;
import java.io.StringReader;
import java.util.HashSet;
import java.util.Set;
public class SchemaMetadataExtractor extends AbstractMetadataExtractor {
@Override
protected CircuitInterface doExtractCircuitInterface(String data)
throws CircuitInterfaceExtractionException {
SchemaDeserializer sd = new SchemaDeserializer();
ISchemaInfo info = sd.deserializeSchema(new StringReader(data));
return info.getEntity().getCircuitInterface(info);
}
@Override
protected Set<String> doExtractDependencies(String data)
throws DependencyExtractionException {
Set<String> retlist = new HashSet<String>();
SchemaDeserializer sd = new SchemaDeserializer();
ISchemaInfo info = sd.deserializeSchema(new StringReader(data));
ISchemaComponentCollection components = info.getComponents();
for (PlacedComponent placed : components) {
String filename = placed.comp.getCodeFileName();
if (filename == null || filename.trim().equals(""))
continue;
retlist.add(filename);
}
return retlist;
}
@Override
protected Result doGenerateVhdl(String data) throws VhdlGenerationException {
SchemaDeserializer sd = new SchemaDeserializer();
ISchemaInfo info = sd.deserializeSchema(new StringReader(data));
SchemaInfo2VHDL vhdlgen = new SchemaInfo2VHDL();
return vhdlgen.generateVHDL(info);
}
}