/******************************************************************************* * 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.applets.editor.schema2.interfaces; import hr.fer.zemris.vhdllab.applets.editor.schema2.enums.EParamTypes; import hr.fer.zemris.vhdllab.applets.editor.schema2.exceptions.InvalidParameterValueException; import hr.fer.zemris.vhdllab.applets.editor.schema2.misc.Time; /** * Definira izgled parametra za * za zice i/ili sklopove unutar * schematica. * IParameterCollection * vraca objekte koji implementiraju * ovo sucelje. * * @author Axel * */ public interface IParameter { /** * Za odredivanje tipa parametra. * * @return * Vraca vrijednost iz navedene * enumeracije koja odreduje tip * parametra. */ EParamTypes getType(); /** * Stvara kopiju ovog parametra. * Koristi se kod kopiranja komponenti. * */ IParameter copyCtor(); /** * Dohvaca ime parametra. * */ String getName(); /** * Za dobivanje vrijednosti * parametra. * * @return * Vraca vrijednost vezanu uz * parametar. * Po potrebi je Object moguce * castati u potrebni tip. */ Object getValue(); /** * Sam obavlja cast ako je * tog tipa i vraca vrijednost. * * @throws ClassCastException * Ako vrijednost nije tog navedenog * tipa, nece se parsirati ili convertati * vec ce se baciti exception. */ Integer getValueAsInteger() throws ClassCastException; /** * Sam obavlja cast ako je * tog tipa i vraca vrijednost. * * @throws ClassCastException * Ako vrijednost nije tog navedenog * tipa, nece se parsirati ili convertati * vec ce se baciti exception. */ String getValueAsString() throws ClassCastException; /** * Sam obavlja cast ako je * tog tipa i vraca vrijednost. * * @throws ClassCastException * Ako vrijednost nije tog navedenog * tipa, nece se parsirati ili convertati * vec ce se baciti exception. */ Double getValueAsDouble() throws ClassCastException; /** * Sam obavlja cast ako je * tog tipa i vraca vrijednost. * * @throws ClassCastException * Ako vrijednost nije tog navedenog * tipa, nece se parsirati ili convertati * vec ce se baciti exception. */ Boolean getValueAsBoolean() throws ClassCastException; /** * Sam obavlja cast ako je * tog tipa i vraca vrijednost. * * @throws ClassCastException * Ako vrijednost nije tog navedenog * tipa, nece se parsirati ili convertati * vec ce se baciti exception. */ Time getValueAsTime() throws ClassCastException; /** * Postavlja vrijednost parametra. * * @param value * Vrijednost na koju parametar * treba postaviti. * @throws InvalidParameterValueException * Navedenu iznimku u slucaju da proslijedena * vrijednost nije tipa kojeg je sam parametar. * Npr. nedozvoljeno je proslijediti String, * ako getType() vraca EParameterTypes.INTEGER. * */ void setValue(Object value) throws InvalidParameterValueException; /** * Odreduje da li je moguce isparsirati vrijednost * parametra na temelju proslijedenog stringa, * umjesto objekta. * * @return * Vraca true ako je vrijednost parametra * moguce postavljati proslijedivanjem * stringa. */ boolean isParsable(); /** * Ako isParsable() vraca true onda je * ovom metodom moguce postaviti vrijednost * parametra proslijedivanjem stringa. * * * @param stringValue * String vrijednost parametra koja se * sama isparsira ako je to moguce. * @throws InvalidParameterValueException * Navedenu iznimku ako isParsable() vraca false, * ili ako nije moguce isparsirati tu vrijednost * (npr. 0.14e12dcvszdfs nije moguce isparsirati * ako je vrijednost cjelobrojnog tipa) ili ako * je vrijednost moguce isparsirati ali IParameterConstraint * ne dozvoljava navedenu vrijednost. * */ void setAsString(String stringValue) throws InvalidParameterValueException; /** * Odgovara na pitanje da li je konkretna * vrijednost parsabilna. * Primjer, za cjelobrojni integer je '5' * parsabilno, ali '153sdag4' nije. * * @param stringValue * @return * Uvijek vraca false ako isParsable() vraca false. */ boolean checkStringValue(String stringValue); /** * Odgovara na pitanje da li je parametar * genericki. * Ako je parametar generickog tipa, tad ce * se njegova vrijednost koristiti u * GENERIC MAP dijelu instanciranja komponente * kojoj on pripada. * */ boolean isGeneric(); /** * Vraca string koji se koristi u GENERIC MAP * dijelu instanciranja komponente u VHDL * kodu. * */ String getVHDLGenericEntry(); /** * Sluzi za odredivanje eventualnih ogranicenja * na vrijednosti parametra. * * @return * Vraca objekt navedenog tipa na temelju kojeg * je moguce odrediti ogranicenja. * Ako ogranicenja nema NECE vratiti null, vec * IParameterConstraint koji dozvoljava sve vrijednosti. * * @see IParameterConstraint * */ IParameterConstraint getConstraint(); /** * Vraca event pridruzen ovom parametru. * */ IParameterEvent getParameterEvent(); /** * Pridruzuje event parametru. */ void setParameterEvent(IParameterEvent event); /** * Postavlja event parametru putem njegovog * Java identifikatora. * * @param string */ void setParameterEvent(String eventName); /** * Vraca puno ime klase pohranjenog objekta. * Koristi se kod serijalizacije. * */ String getValueClassName(); }