package utils.nexus;
import org.apache.commons.lang.ArrayUtils;
import org.apache.log4j.Logger;
public class Not_used_PositionsArray {
/*
private static final Logger logger = Logger.getLogger(Not_used_PositionsArray.class);
private int [] backend;
private Not_used_PositionsArray(int[] backend) {
this.backend = backend;
}
public int size() {
if(backend != null){
return backend.length;
}else{
return 0;
}
}
public int getPos(int pos) {
if(backend == null || backend.length == 0){
return (pos % 3) + 1;
}
else if(pos < backend.length){
return backend[pos];
}
else{
int lastVal = backend[backend.length - 1];
if(lastVal == 0){
return 0;
}
else{
return (pos % 3) + lastVal;
}
}
}
public PositionsArray getCopy() {
if(backend == null){
return new PositionsArray();
}
else{
int[] clonedBackend = backend = ArrayUtils.clone(this.backend);
return new PositionsArray(clonedBackend);
}
}
public int get(int x) {
return getPos(x);
}
public void set(int pos, int val) {
if(backend == null){
createNewBackend(pos + 1);
}
else if(pos >= backend.length){
resizeBackend(pos + 1);
}
backend[pos] = val;
}
private void createNewBackend(int length) {
backend = new int[length];
fillArrayWith123(backend);
}
private void fillArrayWith123(int[] array){
fillArrayWith123(array, 1);
}
private void fillArrayWith123(int[] array, int startVal){
for(int n = 0; n < array.length; n++){
int posVal = ((n + startVal - 1) % 3) + 1;
array[n] = posVal;
}
}
public void reverse() {
if(backend != null){
ArrayUtils.reverse(backend);
// turn posval 3 into 1 and 1 into 3
for(int n = 0; n < backend.length; n++){
if(backend[n] == 3){
backend[n] = 1;
}
else if(backend[n] == 1){
backend[n] = 3;
}
}
}
else{
// do nothing
}
}
public void append(PositionsArray otherPos) {
if(this.backend != null && otherPos.backend != null){
int newSize = backend.length + otherPos.backend.length;
int[] newPositions = new int[newSize];
System.arraycopy(backend, 0, newPositions, 0, backend.length);
System.arraycopy(otherPos.backend, 0, newPositions,backend.length, otherPos.backend.length);
this.backend = newPositions;
}
else{
// do nothing
}
}
public void remove(int pos) {
logger.info("remove" + pos);
if(backend == null){
// should not happen... do nothing
return;
//createNewBackend(pos + 1);
}
else if(pos > backend.length){
// do nothing
return;
// resizeBackend(pos + 1);
}
backend = ArrayUtils.remove(backend, pos);
}
public void insert(int pos) {
if(backend == null){
// should not happen... do nothing
return;
//createNewBackend(pos + 1);
}
else if(pos > backend.length){
// do nothing
return;
// resizeBackend(pos + 1);
}
backend = ArrayUtils.add(backend, pos, 0);
}
private boolean isBackendAnythingBut123(){
boolean isAnythingBut123 = false;
if(backend != null){
for(int n = 0; n < backend.length; n++){
int defaltVal = (n % 3) + 1;
if(backend[n] != defaltVal){
isAnythingBut123 = true;
break;
}
}
}
return isAnythingBut123;
}
public boolean isAnythingButDefault() {
boolean isAnythingButDefault = false;
if(backend == null){
isAnythingButDefault = false;
}else{
isAnythingButDefault = isBackendAnythingBut123();
}
return isAnythingButDefault;
}
public void resizeBackend(int len) {
if(backend == null){
createNewBackend(len);
}
if(backend.length > len){
backend = ArrayUtils.subarray(backend, 0, len);
}
if(backend.length < len){
int[] newVals = new int[len - backend.length];
int lastPos = getPos(backend.length - 1);
if(lastPos != 0){
logger.info("lastPos" + lastPos);
fillArrayWith123(newVals, lastPos + 1);
}
logger.info("newVals.length" + newVals.length);
logger.info("backend.length" + backend.length);
backend = ArrayUtils.addAll(backend, newVals);
}
}
*/
}