All wood Blade Choice?

says Spin and more spin.
says Spin and more spin.
Well-Known Member
Super Moderator
Dec 2010
16,172
17,746
54,897
Read 11 reviews
How about lacquer?What does that do?Doesnt that form a seal on blades?,and it is also what Yasaka uses on their blades.

Yep lacquer is an organic substance. Polyurethane is not. But they both can be used to seal or finish wood surfaces.
 
This user has no status.
I was looking for a new Stiga blade and I was bored. With the following code you can rip the info fresh from the Stiga site, ;-)

package ripper;


import java.net.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.*;


public class Main {

static List<Specs> specs = new ArrayList<Specs>();

static Map<String, Integer> weights = new HashMap<String, Integer>();

static void fillWeights() {
weights.put("infinity vps v", 85);
weights.put("titanium 5.4", 85);
weights.put("allround classic", 80);
weights.put("offensive classic wrb", 80);
weights.put("clipper wood wrb", 95);
weights.put("offensive classic carbon", 80);
weights.put("allround classic carbon", 85);
weights.put("sense 7.6", 90);
weights.put("rosewood xo", 85);
weights.put("defensive wood nct", 75);
weights.put("offensive wood nct", 85);
weights.put("allround wood nct", 80);
weights.put("hybrid wood nct", 95);
weights.put("intensity nct", 85);
weights.put("intensity carbon", 85);
weights.put("allround evolution", 80);
weights.put("energy wrb", 80);
weights.put("allround cr",80);
weights.put("hypertech cr 35/45", 80);
weights.put("offensive cr", 80);
weights.put("clipper cr", 95);
weights.put("titanium 5.4 wrb", 80);
weights.put("carbo 7.6 wrb", 95);
weights.put("optimum seven", 85);
weights.put("optimum sync", 85);
weights.put("optimum plus", 85);
weights.put("carbo oversize", 95);
weights.put("clipper wood", 90);
weights.put("offensive classic", 85);
weights.put("allround classic wrb", 75);
weights.put("clipper cc", 90);
weights.put("cc7 nct", 90);
weights.put("cc5 nct", 85);
weights.put("ebenholz nct vii", 95);
weights.put("ebenholz nct v", 90);
weights.put("rosewood nct vii", 90);
weights.put("rosewood nct v", 85);
weights.put("maplewood nct vii", 95);
weights.put("maplewood nct v", 85);
weights.put("j.m.s control", 85);

}

static void setWeights() {
for(Specs specs : Main.specs) {
if(weights.get(specs.getName()) != null)
specs.setWeight(weights.get(specs.getName()));
}
}


public static void main(String[] args) throws Exception {
fillWeights();
String baseUrl = "http://stigatabletennis.com/en/products/";
int counter = 0;
for(String bladeName : new String[]{
"infinity vps v",
"titanium 5.4",
"allround classic",
"offensive classic wrb",
"clipper wood wrb",
"offensive classic carbon",
"allround classic carbon",
"sense 7.6",
"rosewood xo",
"defensive wood nct",
"offensive wood nct",
"allround wood nct",
"hybrid wood nct",
"intensity nct",
"intensity carbon",
"allround evolution",
"energy wrb",
"allround cr",
"hypertech cr 35/45",
"offensive cr",
"clipper cr",
"titanium 5.4 wrb",
"carbo 7.6 wrb",
//"optimum seven",
"optimum sync",
"optimum plus",
"carbo oversize",
"clipper wood",
"offensive classic",
"allround classic wrb",
"clipper cc",
"cc7 nct",
"cc5 nct",
"ebenholz nct vii",
"ebenholz nct v",
"rosewood nct vii",
"rosewood nct v",
//"maplewood nct vii",
//"maplewood nct v",
"j.m.s control"
}) {
if(!"".equals(bladeName)) {
System.out.print(++counter + " ");
process(new URL(baseUrl + bladeName.replace(" ", "-").replace("/", "")), bladeName);
}
}
setWeights();
System.out.println(" ");
System.out.println(" ");

print();
}

static void process(URL url, String bladeName) throws Exception {
StringBuilder html = new StringBuilder();
BufferedReader in = null;
try {
in = new BufferedReader(
new InputStreamReader(url.openStream()));
} catch (IOException e) {
e.printStackTrace();
}


String inputLine = null;
try {
inputLine = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
while (inputLine != null) {
html.append(inputLine);
try {
inputLine = in.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
process(html.toString(), bladeName);
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}

static String cleanUp(String s) {
return s.replace("<div id=\"product_specs\">", " ")
.replace("<b>", " ")
.replace("</b>", " ")
.replace("<br>", " ")
.replace(" </div>", " ")
.replace("<B>", " ")
.trim();
}

static String[] extractParts(String s) {
return s.split("\\s+");
}

static String extractInterestingPart(String html) {
String s = "";
String start = "<div id=\"product_specs\">";
String end = "</div>";
int indexOfStart = html.indexOf(start);
int endIndex = indexOfStart + 1;
while(!s.endsWith(end)) {
s = html.substring(indexOfStart, endIndex);
endIndex++;
}
return s;
}

static Specs getSpecs(String bladeName, String[] parts) {
Specs specs = new Specs(bladeName);
for(int i = 0; i < parts.length - 1; i++) {
if(parts.startsWith("CONTROL"))
specs.setControl(parts[i + 1]);
else if(parts.startsWith("SPEED"))
specs.setSpeed(parts[i + 1]);
else if(parts.startsWith("VENEER"))
specs.setVeneer(parts[i + 1]);
else if(parts.startsWith("ELASTICITY")) {
if(parts[i + 2].startsWith("TYPE"))
specs.setElasticity(parts[i + 1]);
else
specs.setElasticity(parts[i + 1] + " " + parts[i + 2]);
}
else if(parts.startsWith("TYPE"))
specs.setType(parts[i + 1]);
}
return specs;
}

static void test(
String bladeName,
String interestingPart,
String cleanedUpString,
String[] parts,
Specs specs) throws Exception {
if(!specs.test()) {
System.out.println("! parse failed:");
System.out.println("bladename: >" + bladeName + "<");
System.out.println("interestingPart: >" + interestingPart + "<");
System.out.println("cleanedUpString: >" + cleanedUpString + "<");
System.out.println("specs: >" + specs + "<");
for(String part : parts) {
System.out.println("part: >" + part + "<");
}
throw new Exception();
}
}

static void process(String html, String bladeName) throws Exception {
String interestingPart = extractInterestingPart(html);
String cleanedUpString = cleanUp(interestingPart);
String[] parts = extractParts(cleanedUpString);
Specs specs_o = getSpecs(bladeName, parts);
test(bladeName, interestingPart, cleanedUpString, parts, specs_o);
specs.add(specs_o);
}

static void print() {
List<Specs> filtered = new ArrayList<Specs>();

for(Specs specs : Main.specs) {
/*if(

specs.getWeight() <= 85 &&
/*(specs.getType().equals("OFF") || specs.getType().equals("OFF-") || specs.getType().equals("ALL+") || specs.getType().equals("AR+")) &&
(!specs.getElasticity().equals("STIFF") && !specs.getElasticity().equals("NEARLY STIFF")) &&
specs.getVeneer().equals("5"))*/
filtered.add(specs);
}

Collections.sort(filtered, comparator_speed);

for(Specs specs : filtered) {
System.out.println(specs);
}
}

static Comparator<Specs> comparator_speed = new Comparator<Specs>() {
@Override
public int compare(Specs o1, Specs o2) {
return o2.getSpeed_i() - o1.getSpeed_i();
}
};

static Comparator<Specs> comparator_control = new Comparator<Specs>() {
@Override
public int compare(Specs o1, Specs o2) {
return o2.getControl_i() - o1.getControl_i();
}
};


}


class Specs {

private String control;
private String speed;
private String veneer;
private String elasticity;
private String type;
private String name;
private int weight;

public Specs() { }


public Specs(String name) {
this.name = name;
}


public Specs(String control, String speed, String veneer, String elasticity, String type) {
this.control = control;
this.speed = speed;
this.veneer = veneer;
this.elasticity = elasticity;
this.type = type;
}


public void setName(String name) {
this.name = name;
}


public String getControl() {
return control;
}

public void setControl(String control) {
this.control = control;
}

public String getSpeed() {
return speed;
}

public void setSpeed(String speed) {
this.speed = speed;
}

public String getVeneer() {
return veneer;
}

public void setVeneer(String veneer) {
this.veneer = veneer;
}

public String getElasticity() {
return elasticity;
}

public void setElasticity(String elasticity) {
this.elasticity = elasticity;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getName() {
return name;
}

public boolean test() {
return
this.name != null &&
this.control != null &&
this.speed != null &&
this.veneer != null &&
this.elasticity != null &&
this.type != null;
}

@Override
public String toString() {
return "name: " + this.name + " | control: " + this.control + " | speed: " + this.speed + " | veneer: " + this.veneer + " | elasticity: " + this.elasticity + " | type: " + this.type + " | weight: " + this.weight;
}

public int getSpeed_i() {
return Integer.parseInt(this.speed);
}

public int getControl_i() {
return Integer.parseInt(this.control);
}


public int getWeight() {
return weight;
}


public void setWeight(int weight) {
this.weight = weight;
}


}



how can i run this code?
 
This user has no status.
This user has no status.
Member
Sep 2011
66
3
70
Anyone out there heard any reports about an Andro cs v off+, have been looking for a wood blade but there are far too many choices .Can't decide,but quite like the look and sound of this one.Any info would be appreciated.

many thanks

bb
 
Top