Commit 57db748f authored by Stephan Korsholm's avatar Stephan Korsholm
Browse files

#254: Drive-by abstraction

parent 91606211
Showing with 16 additions and 32 deletions
+16 -32
......@@ -3,7 +3,7 @@ package org.seamcat.model.systems.imt2020;
import org.seamcat.model.geometry.Point2D;
public interface IMT2020BaseStation {
void initializeLink(IMT2020Link link);
void initializeLink(IMT2020Link<? extends IMT2020UpOrDownLinkBaseStation> link);
boolean initialConnect();
......
......@@ -90,7 +90,7 @@ public abstract class IMT2020Link<BaseStationType extends IMT2020UpOrDownLinkBas
return basestation;
}
public void setBaseStation(BaseStationType basestation) {
this.basestation = basestation;
public void setBaseStation(IMT2020UpOrDownLinkBaseStation basestation) {
this.basestation = (BaseStationType) basestation;
}
}
......@@ -18,7 +18,7 @@ public abstract class IMT2020UpOrDownLinkBaseStation implements IMT2020BaseStati
protected boolean referenceCell;
protected double sectorOffset;
protected int subCarriersInUse;
private SeamcatRandom random;
private final SeamcatRandom random;
// Constructor to initialize all fields
public IMT2020UpOrDownLinkBaseStation(AntennaProperties antennaProperties, double antennaTilt, double aziOffset,
......@@ -38,8 +38,6 @@ public abstract class IMT2020UpOrDownLinkBaseStation implements IMT2020BaseStati
random = RandomAccessor.getRandom();
}
public IMT2020UpOrDownLinkBaseStation() {}
protected int getRandomInt(int size) {
return random.nextInt(size);
}
......@@ -80,6 +78,7 @@ public abstract class IMT2020UpOrDownLinkBaseStation implements IMT2020BaseStati
return elevOffset;
}
@Override
public Point2D getPosition() {
return position;
}
......@@ -92,9 +91,13 @@ public abstract class IMT2020UpOrDownLinkBaseStation implements IMT2020BaseStati
return antennaProperties;
}
public abstract void initializeLink(IMT2020Link link);
public abstract boolean initialConnect();
@Override
public void initializeLink(IMT2020Link<? extends IMT2020UpOrDownLinkBaseStation> link) {
link.setBaseStation(this);
}
public abstract boolean isWrapAround();
@Override
public boolean isWrapAround() {
return false;
}
}
......@@ -13,7 +13,7 @@ public class WrapAroundBaseStation implements IMT2020BaseStation {
}
@Override
public void initializeLink(IMT2020Link link) {
public void initializeLink(IMT2020Link<? extends IMT2020UpOrDownLinkBaseStation> link) {
link.setWrapAround(true);
link.setBaseStation(corresponding);
}
......
......@@ -5,7 +5,6 @@ import java.util.List;
import org.seamcat.model.RadioSystem;
import org.seamcat.model.geometry.Point2D;
import org.seamcat.model.mathematics.Mathematics;
import org.seamcat.model.systems.imt2020.IMT2020Link;
import org.seamcat.model.systems.imt2020.IMT2020UpOrDownLinkBaseStation;
public class IMT2020DownLinkBaseStation extends IMT2020UpOrDownLinkBaseStation {
......@@ -44,6 +43,7 @@ public class IMT2020DownLinkBaseStation extends IMT2020UpOrDownLinkBaseStation {
* load factor of the network to simulate
*
*/
@Override
public boolean initialConnect() {
int sum = getSubCarriersInUse();
......@@ -118,17 +118,7 @@ public class IMT2020DownLinkBaseStation extends IMT2020UpOrDownLinkBaseStation {
+ (numberOfSubCarrierPerMobile * resourceBlockBandwidth) / 2 * (linkIndex * 2 + 1);
}
@Override
public void initializeLink(IMT2020Link link) {
link.setBaseStation(this);
}
public void setActiveLinks(List<IMT2020DownLink> activeLinks) {
this.activeLinks = activeLinks;
}
@Override
public boolean isWrapAround() {
return false;
}
}
......@@ -46,6 +46,7 @@ public class IMT2020UpLinkBaseStation extends IMT2020UpOrDownLinkBaseStation {
*
* @return if it is under loaded (no more in the candidate list) but still not loaded as wanted
*/
@Override
public boolean initialConnect() {
int sum = getSubCarriersInUse();
int limit = settings.getNumberOfResourceBlocksPrBS();
......@@ -182,17 +183,7 @@ public class IMT2020UpLinkBaseStation extends IMT2020UpOrDownLinkBaseStation {
return sum_Watt;
}
@Override
public void initializeLink(IMT2020Link link) {
link.setBaseStation(this);
}
public void setActiveLinks(List<IMT2020UpLink> activeLinks) {
this.activeLinks = activeLinks;
}
@Override
public boolean isWrapAround() {
return false;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment