/* * Copyright (C) 2010 Medo <smaxein@googlemail.com> * * This file is part of GmkSplitter. * GmkSplitter is free software and comes with ABSOLUTELY NO WARRANTY. * See LICENSE for details. */ package com.ganggarrison.gmdec; import org.lateralgm.file.GmFile; import org.lateralgm.resources.InstantiableResource; import org.lateralgm.resources.Resource; import org.lateralgm.util.PropertyMap; public class DeferredPropertyReferenceCreator<EnumType extends Enum<EnumType>> implements DeferredReferenceCreator { private PropertyMap<EnumType> propertyMap; private EnumType property; private Class refKind; private String refStr; public <T extends InstantiableResource<T, ?>> DeferredPropertyReferenceCreator(PropertyMap<EnumType> propertyMap, EnumType property, Class<T> refKind, String refStr) { this.propertyMap = propertyMap; this.property = property; this.refKind = refKind; this.refStr = refStr; } @Override public void createReferences(GmFile gmf) { if (refStr != null && !refStr.isEmpty()) { Resource<?, ?> res = gmf.resMap.getList(refKind).get(refStr); if (res != null) { propertyMap.put(property, res.reference); } else { System.err.println("Warning: Reference to unknown " + property + " " + refStr); } } } }