/**
*
*/
package org.goko.core.gcode.rs274ngcv3;
import org.goko.core.common.exception.GkException;
import org.goko.core.gcode.element.GCodeProviderReference;
import org.goko.core.gcode.element.IGCodeProvider;
import org.goko.core.gcode.service.IGCodeProviderRepository;
import org.goko.core.log.GkLog;
/**
* Delegates the retrieval of the GCode provider from a repo and an id
* @author Psyko
* @date 26 juin 2016
*/
public class RS274GCodeReference extends GCodeProviderReference{
private static final GkLog LOG = GkLog.getLogger(RS274GCodeReference.class);
/** The repo where the provider can be found */
private IGCodeProviderRepository gcodeProviderRepository;
/** The id of the provider */
private Integer idGCodeProvider;
/**
* @param rs274Service
* @param idGCodeProvider
*/
public RS274GCodeReference(IGCodeProviderRepository gcodeProviderRepository, Integer idGCodeProvider) {
super();
this.gcodeProviderRepository = gcodeProviderRepository;
this.idGCodeProvider = idGCodeProvider;
}
protected IGCodeProvider get(){
try {
return gcodeProviderRepository.internalGetGCodeProvider(idGCodeProvider);
} catch (GkException e) {
LOG.error(e);
}
return null;
}
/** (inheritDoc)
* @see org.goko.core.gcode.element.GCodeProviderReference#isValid()
*/
@Override
public boolean isValid() {
try {
return gcodeProviderRepository.findGCodeProvider(idGCodeProvider) != null;
} catch (GkException e) {
LOG.error(e);
}
return false;
}
/** (inheritDoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((gcodeProviderRepository == null) ? 0 : gcodeProviderRepository.hashCode());
result = prime * result + ((idGCodeProvider == null) ? 0 : idGCodeProvider.hashCode());
return result;
}
/** (inheritDoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RS274GCodeReference other = (RS274GCodeReference) obj;
if (gcodeProviderRepository == null) {
if (other.gcodeProviderRepository != null)
return false;
} else if (!gcodeProviderRepository.equals(other.gcodeProviderRepository))
return false;
if (idGCodeProvider == null) {
if (other.idGCodeProvider != null)
return false;
} else if (!idGCodeProvider.equals(other.idGCodeProvider))
return false;
return true;
}
/** (inheritDoc)
* @see org.goko.core.gcode.element.IGCodeProvider#lock()
*/
@Override
public void lock() {
try {
gcodeProviderRepository.lockGCodeProvider(idGCodeProvider);
} catch (GkException e) {
LOG.error(e);
}
}
/** (inheritDoc)
* @see org.goko.core.gcode.element.IGCodeProvider#unlock()
*/
@Override
public void unlock() {
try {
gcodeProviderRepository.unlockGCodeProvider(idGCodeProvider);
} catch (GkException e) {
LOG.error(e);
}
}
/**
* @return the idGCodeProvider
*/
public Integer getIdGCodeProvider() {
return idGCodeProvider;
}
/**
* @param idGCodeProvider the idGCodeProvider to set
*/
public void setIdGCodeProvider(Integer idGCodeProvider) {
this.idGCodeProvider = idGCodeProvider;
}
}