...
- One should have done the plugin setup. For steps please refer how to write a plugin for OpenSpecimen?
- To customize the Print token implementation, write a class that extends AbstractLabelTmplToken and implements LabelTmplToken
The following example describes how to implement LabelTmplToken.
Code Block public class SpecimenCollectionContainerPrintToken extends AbstractLabelTmplToken implements LabelTmplToken { @Override public String getName() { return "specimen_collection_container"; } @Override public String getReplacement(Object object) { Specimen specimen = (Specimen)object; while (specimen.getParentSpecimen() != null) { specimen = specimen.getParentSpecimen(); } return specimen.getCollectionEvent().getContainer(); } }
The next step will be to register this new token with the com.krishagni.catissueplus.core.common.domain.DefaultLabelTmplTokenRegistrar, so that OpenSpecimen can use this for printing. To register the new token, one needs to write a java class in the plugin like below:
Code Block public class PluginInitializer implements InitializingBean { private LabelTmplTokenRegistrar specimenPrintLabelTokensRegistrar; public void setSpecimenPrintLabelTokensRegistrar(LabelTmplTokenRegistrar specimenPrintLabelTokensRegistrar) { this.specimenPrintLabelTokensRegistrar = specimenPrintLabelTokensRegistrar; } @Override public void afterPropertiesSet() throws Exception { specimenPrintLabelTokensRegistrar.register(new SpecimenCollectionContainerPrintToken()); } }
After adding this plugin initializer class you also need to define this bean in the spring context file located at PLUGIN_HOME/src/main/resources/pluginContext.xml. Following example describes how to define this bean:
Code Block <bean id="pluginInitializer" class="com.krishagni.openspecimen.plugin.init.PluginInitializer"> <property name="specimenPrintLabelTokensRegistrar" ref="specimenPrintLabelTokensRegistrar"/> </bean>