void put(final URI uri, ArtifactData data) throws Exception { reporter.trace("put %s %s", uri, data); File tmp = createTempFile(repoDir, "mtp", ".whatever"); tmp.deleteOnExit(); try { copy(uri.toURL(), tmp); byte[] sha = SHA1.digest(tmp).digest(); reporter.trace("SHA %s %s", uri, Hex.toHexString(sha)); ArtifactData existing = get(sha); if (existing != null) { reporter.trace("existing"); xcopy(existing, data); return; } File meta = new File(repoDir, Hex.toHexString(sha) + ".json"); File file = new File(repoDir, Hex.toHexString(sha)); rename(tmp, file); reporter.trace("file %s", file); data.file = file.getAbsolutePath(); data.sha = sha; data.busy = false; CommandData cmddata = parseCommandData(data); if (cmddata.bsn != null) { data.name = cmddata.bsn + "-" + cmddata.version; } else data.name = Strings.display(cmddata.title, cmddata.bsn, cmddata.name, uri); codec.enc().to(meta).put(data); reporter.trace("TD = " + data); } finally { tmp.delete(); reporter.trace("puted %s %s", uri, data); } }
public static void testEncode(String input, String encoding) throws XcodeException { String inputdecoded = null; String output = null; String variant = null; if (input == null) { Debug.pass(""); return; } input = input.trim(); if (input.length() == 0 || input.charAt(0) == '#') { Debug.pass(input); return; } try { inputdecoded = new String(Hex.decodeChars(input)); output = Native.encode(inputdecoded, encoding); } catch (XcodeException x) { Debug.fail(input + " ERROR:" + x.getCode() + " " + x.getMessage()); return; } System.out.println(Hex.encode(output.toCharArray())); }
/** * Turn the shas into a readable form * * @param dependencies * @return * @throws Exception */ public List<?> toString(List<byte[]> dependencies) throws Exception { List<String> out = new ArrayList<String>(); for (byte[] dependency : dependencies) { ArtifactData data = get(dependency); if (data == null) out.add(Hex.toHexString(dependency)); else { out.add(Strings.display(data.name, Hex.toHexString(dependency))); } } return out; }
public ArtifactData getCandidateAsync(String arg) throws Exception { reporter.trace("coordinate %s", arg); if (isUrl(arg)) try { ArtifactData data = putAsync(new URI(arg)); data.local = true; return data; } catch (Exception e) { reporter.trace("hmm, not a valid url %s, will try the server", arg); } Coordinate c = new Coordinate(arg); if (c.isSha()) { ArtifactData r = get(c.getSha()); if (r != null) return r; } Revision revision = library.getRevisionByCoordinate(c); if (revision == null) return null; reporter.trace("revision %s", Hex.toHexString(revision._id)); ArtifactData ad = get(revision._id); if (ad != null) { reporter.trace("found in cache"); return ad; } URI url = revision.urls.iterator().next(); ArtifactData artifactData = putAsync(url); artifactData.coordinate = c; return artifactData; }
public static byte[] hexDecode(String s) { try { return Hex.decodeHex(s.toCharArray()); } catch (DecoderException e) { throw new ClientProblemException( "Hex content is not valid hex: " + e.getMessage() + ": " + s); } }
private void callObjectAtLocation(int x, int y) { for (Hex o : _hexes) { if (Math.sqrt((o.getX() - x) * (o.getX() - x) + (o.getY() - y) * (o.getY() - y)) < o.getRadius()) { o.clicked(x, y); return; } } }
public static void testDecode(String input, String[] encodings) throws XcodeException { byte[] inputarray = null; HashMap output = null; String variant = null; if (input == null) { Debug.pass(""); return; } input = input.trim(); if (input.length() == 0 || input.charAt(0) == '#') { Debug.pass(input); return; } try { inputarray = Hex.decodeBytes(input); if (encodings == null || encodings.length == 0) { output = Native.decode(inputarray); } else { output = Native.decode(inputarray, encodings); } } catch (XcodeException x) { Debug.fail(input + " ERROR:" + x.getCode() + " " + x.getMessage()); return; } System.out.println(input); Iterator i = output.keySet().iterator(); String encoding = null; while (i.hasNext()) { encoding = (String) i.next(); variant = (String) output.get(encoding); System.out.println(" " + encoding + " " + Hex.encode(variant.toCharArray())); } System.out.println(output.size()); }
public void read() throws IOException { int i; int count = 0; byte[] packet = new byte[30]; while ((i = in.read()) != -1) { if (count == 30) { System.out.println(); count = 0; listener.packetReceived(packet); } System.out.print(Hex.toHex(i) + " "); packet[count] = (byte) i; count++; } }
public ArtifactData get(byte[] sha) throws Exception { String name = Hex.toHexString(sha); File data = IO.getFile(repoDir, name + ".json"); reporter.trace("artifact data file %s", data); if (data.isFile()) { // Bin + metadata ArtifactData artifact = codec.dec().from(data).get(ArtifactData.class); artifact.file = IO.getFile(repoDir, name).getAbsolutePath(); return artifact; } File bin = IO.getFile(repoDir, name); if (bin.exists()) { // Only bin ArtifactData artifact = new ArtifactData(); artifact.file = bin.getAbsolutePath(); artifact.sha = sha; return artifact; } return null; }
@Override void encode(Encoder app, Object object, Map<Object, Type> visited) throws IOException, Exception { // Byte arrays should not be treated as arrays. We treat them // as hex strings if (object instanceof byte[]) { StringHandler.string(app, Hex.toHexString((byte[]) object)); return; } app.append("["); app.indent(); String del = ""; int l = Array.getLength(object); for (int i = 0; i < l; i++) { app.append(del); app.encode(Array.get(object, i), componentType, visited); del = ","; } app.undent(); app.append("]"); }
public static void assertHashEquals(String message, final byte[] left, final byte[] right) { String lstring = left == null ? "null" : Hex.bytesToHex(left); String rstring = right == null ? "null" : Hex.bytesToHex(right); assertEquals(message, lstring, rstring); }
public String what(String key, boolean oneliner) throws Exception { byte[] sha; Matcher m = SHA_P.matcher(key); if (m.matches()) { sha = Hex.toByteArray(key); } else { m = URL_P.matcher(key); if (m.matches()) { URL url = new URL(key); sha = SHA1.digest(url.openStream()).digest(); } else { File jarfile = new File(key); if (!jarfile.exists()) { reporter.error("File does not exist: %s", jarfile.getCanonicalPath()); } sha = SHA1.digest(jarfile).digest(); } } reporter.trace("sha %s", Hex.toHexString(sha)); Revision revision = library.getRevision(sha); if (revision == null) { return null; } StringBuilder sb = new StringBuilder(); Formatter f = new Formatter(sb); Justif justif = new Justif(120, 20, 70, 20, 75); DateFormat dateFormat = DateFormat.getDateInstance(); try { if (oneliner) { f.format("%20s %s%n", Hex.toHexString(revision._id), createCoord(revision)); } else { f.format("Artifact: %s%n", revision.artifactId); if (revision.organization != null && revision.organization.name != null) { f.format(" (%s)", revision.organization.name); } f.format("%n"); f.format("Coordinates\t0: %s%n", createCoord(revision)); f.format("Created\t0: %s%n", dateFormat.format(new Date(revision.created))); f.format("Size\t0: %d%n", revision.size); f.format("Sha\t0: %s%n", Hex.toHexString(revision._id)); f.format("URL\t0: %s%n", createJpmLink(revision)); f.format("%n"); f.format("%s%n", revision.description); f.format("%n"); f.format("Dependencies\t0:%n"); boolean flag = false; Iterable<RevisionRef> closure = library.getClosure(revision._id, true); for (RevisionRef dep : closure) { f.format( " - %s \t2- %s \t3- %s%n", dep.name, createCoord(dep), dateFormat.format(new Date(dep.created))); flag = true; } if (!flag) { f.format(" None%n"); } f.format("%n"); } f.flush(); justif.wrap(sb); return sb.toString(); } finally { f.close(); } }
private String createJpmLink(Revision rev) { return String.format( "http://jpm4j.org/#!/p/sha/%s//%s", Hex.toHexString(rev._id), rev.baseline); }
public MapPanel(ClientGameBoard gl) { super(); _dismiss = false; gameLogic = gl; gameLogic._mapPanel = this; _hexes = new ArrayList<Hex>(); vertexContents = new Hashtable<CoordPair, Pair>(); roadContents = new Hashtable<Pair, Integer>(); portContents = new Hashtable<Pair, BoardObject.type>(); diceImage = new BufferedImage(582, 98, BufferedImage.TYPE_INT_ARGB); Graphics2D g = diceImage.createGraphics(); g.drawImage(BoardObject.images.get(BoardObject.type.DICE), null, null); g.dispose(); rings = gameLogic.getNumRings(); hexleft = 100 - (int) (radius + (Math.floor(rings / 2) * radius + Math.floor((rings - 1) / 2) * radius * 2)); if (rings % 2 == 0) { hexleft -= radius / 2; } hextop = 300 - (int) (radius * 0.866 + (rings - 1) * 2 * (radius * 0.866)); double border = 0.4; HashMap<Pair, Pair> hexData = gameLogic.getHexInfo(); // call the gamelogic Pair currCoord = gameLogic.getStartPoint(); Pair topCoord = currCoord; int ring = 0; int currentDir = 5; int current = 0; int[][] directions = {{1, 1}, {0, 2}, {-1, 1}, {-1, -1}, {0, -2}, {1, -1}}; int[][] HexCoordDirections = {{2, 1}, {0, 2}, {-2, 1}, {-2, -1}, {0, -2}, {2, -1}}; Hex top = new Hex( 100, 300, radius, (BoardObject.type) (hexData.get(currCoord).getA()), (Integer) (hexData.get(currCoord).getB())); Hex curr = top; _hexes.add(top); while (true) { if (current == ring) { currentDir++; current = 0; } if (currentDir > 5) { currentDir = 0; current = 0; ring++; if (ring < rings) { topCoord = new Pair(currCoord.getA(), (Double) (currCoord.getB()) - 2); currCoord = topCoord; top = new Hex( curr.getX(), (curr.getY() - 2 * (Math.cos(Math.PI / 6) * (curr.getRadius() + border))), curr.getRadius(), (BoardObject.type) (hexData.get(currCoord).getA()), (Integer) (hexData.get(currCoord).getB())); curr = top; } else { break; } } currCoord.setA((Object) ((Double) (currCoord.getA()) + HexCoordDirections[currentDir][0])); currCoord.setB((Object) ((Double) (currCoord.getB()) + HexCoordDirections[currentDir][1])); curr = new Hex( (curr.getX() + directions[currentDir][0] * (curr.getRadius() + border) * 3 / 2), (curr.getY() + directions[currentDir][1] * (Math.cos(Math.PI / 6) * (curr.getRadius() + border))), curr.getRadius(), (BoardObject.type) (hexData.get(currCoord).getA()), (Integer) (hexData.get(currCoord).getB())); _hexes.add(curr); current++; } addMouseListener(this); addMouseMotionListener(this); }
public synchronized void paint(Graphics graphics) { Graphics2D g = (Graphics2D) graphics; Image water = Toolkit.getDefaultToolkit().getImage("catanui/water.jpg"); g.drawImage(water, 0, 0, this); for (Hex o : _hexes) { o.paint(g, _display_offset[0], _display_offset[1]); } g.translate(_display_offset[0] + 2, _display_offset[1] - 1); synchronized (portContents) { for (Pair c : portContents.keySet()) { int lowx = hexleft + (((CoordPair) c.getA()).getX() - (((CoordPair) c.getA()).getX() % 2)) / 2 * intervalSide[0] + (((CoordPair) c.getA()).getX() - (((CoordPair) c.getA()).getX() % 2)) / 2 * intervalSide[1] + (((CoordPair) c.getA()).getX() % 2) * intervalSide[0]; int lowy = hextop + ((CoordPair) c.getA()).getY() * intervalUp; int highx = hexleft + (((CoordPair) c.getB()).getX() - (((CoordPair) c.getB()).getX() % 2)) / 2 * intervalSide[0] + (((CoordPair) c.getB()).getX() - (((CoordPair) c.getB()).getX() % 2)) / 2 * intervalSide[1] + (((CoordPair) c.getB()).getX() % 2) * intervalSide[0]; int highy = hextop + ((CoordPair) c.getB()).getY() * intervalUp; int dx = highx - lowx; int dy = highy - lowy; double rad = Math.atan((1.0) * dy / dx); if (dx < 0) rad += Math.PI; g.translate(lowx, lowy); g.rotate(rad); g.drawImage( BoardObject.images.get(BoardObject.type2port.get(portContents.get(c))), 0, -75, null); g.rotate(-rad); g.translate((-1) * lowx, (-1) * lowy); } } g.translate((-1) * _display_offset[0], (-1) * _display_offset[1]); synchronized (roadContents) { for (Pair c : roadContents.keySet()) { Road r = new Road( hexleft + (((CoordPair) c.getA()).getX() - (((CoordPair) c.getA()).getX() % 2)) / 2 * intervalSide[0] + (((CoordPair) c.getA()).getX() - (((CoordPair) c.getA()).getX() % 2)) / 2 * intervalSide[1] + (((CoordPair) c.getA()).getX() % 2) * intervalSide[0], hextop + ((CoordPair) c.getA()).getY() * intervalUp); r.setX2( hexleft + (((CoordPair) c.getB()).getX() - (((CoordPair) c.getB()).getX() % 2)) / 2 * intervalSide[0] + (((CoordPair) c.getB()).getX() - (((CoordPair) c.getB()).getX() % 2)) / 2 * intervalSide[1] + (((CoordPair) c.getB()).getX() % 2) * intervalSide[0]); r.setY2(hextop + ((CoordPair) c.getB()).getY() * intervalUp); r.setColor(roadContents.get(c)); r.paint(g, _display_offset[0], _display_offset[1]); } } synchronized (vertexContents) { for (CoordPair c : vertexContents.keySet()) { int newx = hexleft + ((c._x - (c._x % 2)) / 2 * intervalSide[0] + (c._x - (c._x % 2)) / 2 * intervalSide[1] + (c._x % 2) * intervalSide[0]) - 20; int newy = hextop + c._y * intervalUp - 20; if ((BoardObject.type) (vertexContents.get(c).getA()) == BoardObject.type.SETTLEMENT) { Settlement s = new Settlement(newx, newy, (Integer) (vertexContents.get(c).getB())); s.paint(g, _display_offset[0], _display_offset[1]); } else if ((BoardObject.type) (vertexContents.get(c).getA()) == BoardObject.type.CITY) { City s = new City(newx, newy, (Integer) (vertexContents.get(c).getB())); s.paint(g, _display_offset[0], _display_offset[1]); } else System.out.println("neither -_-"); } } g.setColor(Color.GRAY); g.fill(new Rectangle(0, 0, 110, 60)); g.setColor(Color.LIGHT_GRAY); g.fill(new Rectangle(3, 3, 104, 56)); if (_dieRoll > 0) { BufferedImage r1img = diceImage.getSubimage((int) (Math.floor((twoDice[0] - 1) * 94.7)), 0, 94, 93); g.drawImage(r1img, 5, 7, 48, 47, null); BufferedImage r2img = diceImage.getSubimage((int) (Math.floor((twoDice[1] - 1) * 94.7)), 0, 94, 93); g.drawImage(r2img, 55, 7, 48, 47, null); } if (_up != null) _up.paint(g); if (!_gameOver.equals("") && !_dismiss) { _currAlpha += 0.007; } g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, _currAlpha)); g.setColor(Color.GRAY); g.fill(new Rectangle(-20, 0, 1020, 650)); g.setColor(Color.BLACK); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float) 1.0)); if (!_gameOver.equals("")) { if (_currAlpha >= 0.8) { if (_gameOver.equals(gameLogic._name)) { g.drawString("Congratulations, you won!", 350, 200); } else { g.drawString(_gameOver + " has won!", 350, 200); } _dismiss = true; } else repaint(); } }
private static String hexEncode(byte[] bytes) { return new String(Hex.encodeHex(bytes)); }