Websocket works!
This commit is contained in:
		
							parent
							
								
									26d4857221
								
							
						
					
					
						commit
						d371cf4a89
					
				@ -17,7 +17,7 @@ public class Card {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // ---------------- COLORS ---------------- //
 | 
					    // ---------------- COLORS ---------------- //
 | 
				
			||||||
    private static final Color WHITE = new Color(255, 255, 255);
 | 
					    private static final Color WHITE = new Color(255, 255, 255);
 | 
				
			||||||
    private static final Color GREEN = new Color(101, 142, 61);
 | 
					    private static final Color GREEN = new Color(101, 141, 27);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ---------------- FONTS ---------------- //
 | 
					    // ---------------- FONTS ---------------- //
 | 
				
			||||||
    private static final Font ARIAL65 = new Font("Arial", Font.PLAIN, 65);
 | 
					    private static final Font ARIAL65 = new Font("Arial", Font.PLAIN, 65);
 | 
				
			||||||
@ -30,11 +30,11 @@ public class Card {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // ---------------- LAYERS ---------------- //
 | 
					    // ---------------- LAYERS ---------------- //
 | 
				
			||||||
    private BufferedImage background;
 | 
					    private BufferedImage background;
 | 
				
			||||||
    private BufferedImage nameLayer = new BufferedImage(975, 90, BufferedImage.TYPE_INT_ARGB);
 | 
					    private BufferedImage nameLayer = new BufferedImage(1080, 602, BufferedImage.TYPE_INT_ARGB);
 | 
				
			||||||
    private BufferedImage titleLayer = new BufferedImage(975, 55, BufferedImage.TYPE_INT_ARGB);
 | 
					    private BufferedImage titleLayer = new BufferedImage(1080, 602, BufferedImage.TYPE_INT_ARGB);
 | 
				
			||||||
    private BufferedImage emailLayer = new BufferedImage(1000, 55, BufferedImage.TYPE_INT_ARGB);
 | 
					    private BufferedImage emailLayer = new BufferedImage(1080, 602, BufferedImage.TYPE_INT_ARGB);
 | 
				
			||||||
    private BufferedImage locationLayer = new BufferedImage(700, 134, BufferedImage.TYPE_INT_ARGB);
 | 
					    private BufferedImage locationLayer = new BufferedImage(1080, 602, BufferedImage.TYPE_INT_ARGB);
 | 
				
			||||||
    private BufferedImage phoneNumbersLayer = new BufferedImage(700, 90, BufferedImage.TYPE_INT_ARGB);
 | 
					    private BufferedImage phoneNumbersLayer = new BufferedImage(1080, 602, BufferedImage.TYPE_INT_ARGB);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ---------------- Working Images ---------------- //
 | 
					    // ---------------- Working Images ---------------- //
 | 
				
			||||||
    private Graphics2D graphics;
 | 
					    private Graphics2D graphics;
 | 
				
			||||||
@ -43,7 +43,7 @@ public class Card {
 | 
				
			|||||||
    private IIOImage finalImage;
 | 
					    private IIOImage finalImage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ---------------- DATA ---------------- //
 | 
					    // ---------------- DATA ---------------- //
 | 
				
			||||||
    public String id;
 | 
					    public final String id;
 | 
				
			||||||
    private String name;
 | 
					    private String name;
 | 
				
			||||||
    private String title;
 | 
					    private String title;
 | 
				
			||||||
    private String email;
 | 
					    private String email;
 | 
				
			||||||
@ -147,40 +147,37 @@ public class Card {
 | 
				
			|||||||
        return background;
 | 
					        return background;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private BufferedImage renderLayer(BufferedImage layer, String content, Color textColor, Font font) {
 | 
					 | 
				
			||||||
        return renderLayer(layer, content, textColor, font, 0, 0);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private BufferedImage renderLayer(BufferedImage layer, String content, Color textColor, Font font, int x, int y) {
 | 
					    private BufferedImage renderLayer(BufferedImage layer, String content, Color textColor, Font font, int x, int y) {
 | 
				
			||||||
        graphics = layer.createGraphics();
 | 
					        graphics = layer.createGraphics();
 | 
				
			||||||
        setAntiAlias(graphics);
 | 
					        setAntiAlias(graphics);
 | 
				
			||||||
        graphics.setColor(textColor);
 | 
					        graphics.setColor(textColor);
 | 
				
			||||||
 | 
					        graphics.setFont(font);
 | 
				
			||||||
        graphics.drawString(content, x, y);
 | 
					        graphics.drawString(content, x, y);
 | 
				
			||||||
        graphics.dispose();
 | 
					        graphics.dispose();
 | 
				
			||||||
        return layer;
 | 
					        return layer;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private BufferedImage renderResizableLayer(BufferedImage layer, String content, Color textColor, int maxLength, Font defaultFont, Font smallFont) {
 | 
					    private BufferedImage renderResizableLayer(BufferedImage layer, String content, Color textColor, int maxLength, Font defaultFont, Font smallFont, int x, int y) {
 | 
				
			||||||
        graphics = layer.createGraphics();
 | 
					        graphics = layer.createGraphics();
 | 
				
			||||||
        setAntiAlias(graphics);
 | 
					        setAntiAlias(graphics);
 | 
				
			||||||
        graphics.setColor(textColor);
 | 
					        graphics.setColor(textColor);
 | 
				
			||||||
        if (fitsDimensions(content, defaultFont, maxLength)) graphics.setFont(defaultFont);
 | 
					        if (fitsDimensions(content, defaultFont, maxLength)) graphics.setFont(defaultFont);
 | 
				
			||||||
        else graphics.setFont(smallFont);
 | 
					        else graphics.setFont(smallFont);
 | 
				
			||||||
        graphics.drawString(content, 0, 0);
 | 
					        graphics.drawString(content, x, y);
 | 
				
			||||||
        graphics.dispose();
 | 
					        graphics.dispose();
 | 
				
			||||||
        return layer;
 | 
					        return layer;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public BufferedImage renderNameLayer() {
 | 
					    public BufferedImage renderNameLayer() {
 | 
				
			||||||
        return renderResizableLayer(nameLayer, name, WHITE, 970, ARIAL65, ARIAL55);
 | 
					        return renderResizableLayer(nameLayer, name, WHITE, 970, ARIAL65, ARIAL55, 85, 112);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public BufferedImage renderTitleLayer() {
 | 
					    public BufferedImage renderTitleLayer() {
 | 
				
			||||||
        return renderResizableLayer(titleLayer, title, WHITE, 970, ARIAL45I, ARIAL40I);
 | 
					        return renderResizableLayer(titleLayer, title, WHITE, 970, ARIAL45I, ARIAL40I, 89, 176);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public BufferedImage renderEmailLayer() {
 | 
					    public BufferedImage renderEmailLayer() {
 | 
				
			||||||
        return renderLayer(emailLayer, email, WHITE, ARIAL45);
 | 
					        return renderLayer(emailLayer, email, WHITE, ARIAL45, 62, (380 - getOffsets(0)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public BufferedImage renderLocationLayer() {
 | 
					    public BufferedImage renderLocationLayer() {
 | 
				
			||||||
@ -205,71 +202,54 @@ public class Card {
 | 
				
			|||||||
            sb.insert(newLineIndex - 2, "\n");
 | 
					            sb.insert(newLineIndex - 2, "\n");
 | 
				
			||||||
            sb.deleteCharAt(sb.length() - 1);
 | 
					            sb.deleteCharAt(sb.length() - 1);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        renderLayer(locationLayer, location.getName(), GREEN, ARIAL44I);
 | 
					        renderLayer(locationLayer, location.getName(), GREEN, ARIAL44I, 59, (447 - getOffsets(0)));
 | 
				
			||||||
        return renderLayer(locationLayer, sb.toString(), GREEN, ARIAL38I, 0, 44);
 | 
					        return renderLayer(locationLayer, sb.toString(), GREEN, ARIAL38I, 59, (491 - getOffsets(0)));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public BufferedImage renderPhoneNumbersLayer() {
 | 
					    public BufferedImage renderPhoneNumbersLayer() {
 | 
				
			||||||
        return null;
 | 
					        if (hasDirectNumber) {
 | 
				
			||||||
 | 
					            renderLayer(phoneNumbersLayer, ("W: " + directNumber), GREEN, ARIAL38I, 59, (540 - getOffsets(1)));
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            renderLayer(phoneNumbersLayer, ("W: " + location.getNumber() + " x" + extension), GREEN, ARIAL38I, 59, (540 - getOffsets(1)));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (hasCellNumber) {
 | 
				
			||||||
 | 
					            renderLayer(phoneNumbersLayer, ("C: " + cellNumber), GREEN, ARIAL38I, 59, 540);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return phoneNumbersLayer;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void renderImage() {
 | 
					    public void renderImage() {
 | 
				
			||||||
        graphics = rawImage.createGraphics();
 | 
					        graphics = rawImage.createGraphics();
 | 
				
			||||||
        setAntiAlias(graphics);
 | 
					        setAntiAlias(graphics);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        graphics.drawImage(background, 0, 0, null);
 | 
					        graphics.drawImage(background, 0, 0, null);
 | 
				
			||||||
        graphics.drawImage(renderNameLayer(), 85, 112, null);
 | 
					        graphics.drawImage(renderNameLayer(), 0, 0, null);
 | 
				
			||||||
        graphics.drawImage(renderTitleLayer(), 89, 176, null);
 | 
					        graphics.drawImage(renderTitleLayer(), 0, 0, null);
 | 
				
			||||||
 | 
					        graphics.drawImage(renderEmailLayer(), 0, 0, null);
 | 
				
			||||||
        int doubleNumOffset = hasDirectNumber ? 40 : 0;
 | 
					        graphics.drawImage(renderLocationLayer(), 0, 0, null);
 | 
				
			||||||
        int longAddrOffset = fitsDimensions(location.getAddress(), ARIAL38I, 700) ? 0 : 40;
 | 
					        graphics.drawImage(renderPhoneNumbersLayer(), 0, 0, null);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        graphics.drawImage(renderEmailLayer(), 62, (380 - doubleNumOffset - longAddrOffset), null);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        graphics.setColor(GREEN);
 | 
					 | 
				
			||||||
        graphics.setFont(ARIAL44I);
 | 
					 | 
				
			||||||
        graphics.drawString(location.getName(), 59, 447 - doubleNumOffset - longAddrOffset);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (!fitsDimensions(location.getAddress(), ARIAL38I, 694)) {
 | 
					 | 
				
			||||||
            StringBuilder addrLineOne = new StringBuilder();
 | 
					 | 
				
			||||||
            StringBuilder addrLineTwo = new StringBuilder();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            String[] splitAddr = location.getAddress().split(",");
 | 
					 | 
				
			||||||
            int i = 0;
 | 
					 | 
				
			||||||
            for (int width = 0; width < 694; i++) {
 | 
					 | 
				
			||||||
                int splitSize = graphics.getFontMetrics().stringWidth(splitAddr[i]);
 | 
					 | 
				
			||||||
                if ((width + splitSize) < 694) {
 | 
					 | 
				
			||||||
                    width += splitSize;
 | 
					 | 
				
			||||||
                    addrLineOne.append(splitAddr[i]);
 | 
					 | 
				
			||||||
                    addrLineOne.append(",");
 | 
					 | 
				
			||||||
                } else {
 | 
					 | 
				
			||||||
                    addrLineOne.deleteCharAt(addrLineOne.length() - 1);
 | 
					 | 
				
			||||||
                    break;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            for (; i < splitAddr.length; i++) {
 | 
					 | 
				
			||||||
                addrLineTwo.append(splitAddr[i]);
 | 
					 | 
				
			||||||
                addrLineTwo.append(",");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            addrLineTwo.deleteCharAt(addrLineTwo.length() - 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            graphics.setFont(ARIAL38I);
 | 
					 | 
				
			||||||
            graphics.drawString(addrLineOne.toString().trim(), 59, 491 - doubleNumOffset - longAddrOffset);
 | 
					 | 
				
			||||||
            graphics.drawString(addrLineTwo.toString().trim(), 59, 491 - doubleNumOffset);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            graphics.drawString(location.getAddress(), 59, 491 - doubleNumOffset);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        String number;
 | 
					 | 
				
			||||||
        int numY = hasDirectNumber ? 496 : 540;
 | 
					 | 
				
			||||||
        if (!hasDirectNumber) number = "W: " + location.getNumber() + " x" + extension;
 | 
					 | 
				
			||||||
        else number = "W: " + directNumber;
 | 
					 | 
				
			||||||
        graphics.drawString(number, 59, numY);
 | 
					 | 
				
			||||||
        if (hasCellNumber) graphics.drawString("C: " + cellNumber, 59, 540);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        graphics.dispose();
 | 
					        graphics.dispose();
 | 
				
			||||||
        rawImage = workingImage;
 | 
					        resizeImage();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Gets offsets for necessary layers
 | 
				
			||||||
 | 
					     * @param type <br>0: Both double number and long address<br>1: Only double number
 | 
				
			||||||
 | 
					     * @return Negative integer value for pixel offset
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private int getOffsets(int type) {
 | 
				
			||||||
 | 
					        int totalOffset = 0;
 | 
				
			||||||
 | 
					        int doubleNumberOffset = hasDirectNumber ? 40 : 0;
 | 
				
			||||||
 | 
					        int longAddrOffset = fitsDimensions(location.getAddress(), ARIAL38I, 700) ? 0 : 40;
 | 
				
			||||||
 | 
					        switch (type) {
 | 
				
			||||||
 | 
					            case 0 -> {
 | 
				
			||||||
 | 
					                totalOffset -= doubleNumberOffset;
 | 
				
			||||||
 | 
					                totalOffset -= longAddrOffset;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            case 1 -> totalOffset -= doubleNumberOffset;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return totalOffset;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void resizeImage() {
 | 
					    public void resizeImage() {
 | 
				
			||||||
@ -305,12 +285,9 @@ public class Card {
 | 
				
			|||||||
        finalImage = reader.readAll(0, null);
 | 
					        finalImage = reader.readAll(0, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        IIOMetadataNode text = new IIOMetadataNode("tEXt");
 | 
					        IIOMetadataNode text = new IIOMetadataNode("tEXt");
 | 
				
			||||||
//        for (int i = 0; i < KEYS.length; i++) {
 | 
					        IIOMetadataNode textEntry = new IIOMetadataNode("tEXtEntry");
 | 
				
			||||||
//            IIOMetadataNode textEntry = new IIOMetadataNode("tEXtEntry");
 | 
					        textEntry.setAttribute("contents", toMetaString(this));
 | 
				
			||||||
//            textEntry.setAttribute("keyword", KEYS[i]);
 | 
					        text.appendChild(textEntry);
 | 
				
			||||||
//            textEntry.setAttribute("value", data[i]);
 | 
					 | 
				
			||||||
//            text.appendChild(textEntry);
 | 
					 | 
				
			||||||
//        }
 | 
					 | 
				
			||||||
        IIOMetadataNode root = new IIOMetadataNode("javax_imageio_png_1.0");
 | 
					        IIOMetadataNode root = new IIOMetadataNode("javax_imageio_png_1.0");
 | 
				
			||||||
        root.appendChild(text);
 | 
					        root.appendChild(text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -318,6 +295,7 @@ public class Card {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public byte[] toByteArray() throws IOException {
 | 
					    public byte[] toByteArray() throws IOException {
 | 
				
			||||||
 | 
					        addMetadata();
 | 
				
			||||||
        ImageWriter writer = ImageIO.getImageWritersByMIMEType("image/png").next();
 | 
					        ImageWriter writer = ImageIO.getImageWritersByMIMEType("image/png").next();
 | 
				
			||||||
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
 | 
					        ByteArrayOutputStream baos = new ByteArrayOutputStream();
 | 
				
			||||||
        ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
 | 
					        ImageOutputStream ios = ImageIO.createImageOutputStream(baos);
 | 
				
			||||||
@ -338,6 +316,16 @@ public class Card {
 | 
				
			|||||||
        return C.getFontMetrics(font).stringWidth(text);
 | 
					        return C.getFontMetrics(font).stringWidth(text);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String toMetaString(Card card) {
 | 
				
			||||||
 | 
					        return "name=" + card.name + ";" +
 | 
				
			||||||
 | 
					                "title=" + card.title + ";" +
 | 
				
			||||||
 | 
					                "email=" + card.email + ";" +
 | 
				
			||||||
 | 
					                "locationId=" + card.location.getId() + ";" +
 | 
				
			||||||
 | 
					                "extension=" + card.extension + ";" +
 | 
				
			||||||
 | 
					                "directNumber=" + card.directNumber + ";" +
 | 
				
			||||||
 | 
					                "cellNumber=" + card.cellNumber + ";";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static String getDataFromVCard(InputStream rawImage) throws IOException {
 | 
					    public static String getDataFromVCard(InputStream rawImage) throws IOException {
 | 
				
			||||||
        ImageReader reader = ImageIO.getImageReadersByMIMEType("image/png").next();
 | 
					        ImageReader reader = ImageIO.getImageReadersByMIMEType("image/png").next();
 | 
				
			||||||
        reader.setInput(ImageIO.createImageInputStream(rawImage));
 | 
					        reader.setInput(ImageIO.createImageInputStream(rawImage));
 | 
				
			||||||
@ -348,20 +336,13 @@ public class Card {
 | 
				
			|||||||
        if (text == null) {
 | 
					        if (text == null) {
 | 
				
			||||||
            return "$null";
 | 
					            return "$null";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        int numTextEntries = text.getLength();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Map<String, String> keyValueMap = new HashMap<>();
 | 
					        Map<String, String> keyValueMap = new HashMap<>();
 | 
				
			||||||
        for (int i = 0; i < numTextEntries; i++) {
 | 
					        String contents = ((IIOMetadataNode) text.item(0)).getAttribute("contents");
 | 
				
			||||||
            IIOMetadataNode textEntry = (IIOMetadataNode) text.item(i);
 | 
					        String[] contentSplit = contents.split(";");
 | 
				
			||||||
            String key = textEntry.getAttribute("keyword");
 | 
					        for (String entry : contentSplit) {
 | 
				
			||||||
            String value = textEntry.getAttribute("value");
 | 
					            String[] kvPair = entry.split("=");
 | 
				
			||||||
            if (key.equals("Address") || key.equals("SchoolNumber")) {
 | 
					            keyValueMap.put(kvPair[0], kvPair[1]);
 | 
				
			||||||
                continue;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (key.equals("Location")) {
 | 
					 | 
				
			||||||
                value = Location.getLocationId(value);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            keyValueMap.put(key, value);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return new Gson().toJson(keyValueMap);
 | 
					        return new Gson().toJson(keyValueMap);
 | 
				
			||||||
 | 
				
			|||||||
@ -20,13 +20,15 @@ public class GenerateRoute implements Route {
 | 
				
			|||||||
            res.status(422);
 | 
					            res.status(422);
 | 
				
			||||||
            return "Not valid json: " + e.getMessage();
 | 
					            return "Not valid json: " + e.getMessage();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        card = new Card(data);
 | 
				
			||||||
 | 
					        card.renderImage();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        res.type("image/png");
 | 
					        res.type("image/png");
 | 
				
			||||||
        res.header("Access-Control-Expose-Headers", "Id");
 | 
					        res.header("Access-Control-Expose-Headers", "Id");
 | 
				
			||||||
        card = new Card(data);
 | 
					        res.header("Id", card.id);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            res.status(200);
 | 
					            res.status(200);
 | 
				
			||||||
            return new Card(data).toByteArray();
 | 
					            return card.toByteArray();
 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException e) {
 | 
				
			||||||
            res.status(500);
 | 
					            res.status(500);
 | 
				
			||||||
            return "Error getting image stream: " + e.getMessage();
 | 
					            return "Error getting image stream: " + e.getMessage();
 | 
				
			||||||
 | 
				
			|||||||
@ -19,21 +19,33 @@ public class LiveGenWebSocket {
 | 
				
			|||||||
    public void connected(Session session) {}
 | 
					    public void connected(Session session) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @OnWebSocketClose
 | 
					    @OnWebSocketClose
 | 
				
			||||||
    public void closed(Session session, int statusCode, String reason) {}
 | 
					    public void closed(Session session, int statusCode, String reason) {
 | 
				
			||||||
 | 
					        card = null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @OnWebSocketError
 | 
				
			||||||
 | 
					    public void error(Session session, Throwable throwable) {
 | 
				
			||||||
 | 
					        throwable.printStackTrace();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @OnWebSocketMessage
 | 
					    @OnWebSocketMessage
 | 
				
			||||||
    public void message(Session session, String message) throws IOException {
 | 
					    public void message(Session session, String message) throws IOException {
 | 
				
			||||||
        String[] splitMsg = message.split(";");
 | 
					 | 
				
			||||||
        String messageType = splitMsg[0];
 | 
					 | 
				
			||||||
        String messageContent = splitMsg[1];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        RemoteEndpoint client = session.getRemote();
 | 
					        RemoteEndpoint client = session.getRemote();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (messageType) {
 | 
					        System.out.println(message);
 | 
				
			||||||
            case "start" -> {
 | 
					        String[] splitMsg = message.split(";");
 | 
				
			||||||
 | 
					        String messageType = splitMsg[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (splitMsg.length == 1) {
 | 
				
			||||||
 | 
					            if (messageType.equals("start")) {
 | 
				
			||||||
                card = new Card();
 | 
					                card = new Card();
 | 
				
			||||||
                client.sendString("success;Card successfully created.");
 | 
					                client.sendString("success;Card successfully created.");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        String messageContent = splitMsg[1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (messageType) {
 | 
				
			||||||
            case "continue" -> {
 | 
					            case "continue" -> {
 | 
				
			||||||
                card = Card.CARD_SESSIONS.get(messageContent);
 | 
					                card = Card.CARD_SESSIONS.get(messageContent);
 | 
				
			||||||
                if (card == null) {
 | 
					                if (card == null) {
 | 
				
			||||||
@ -43,32 +55,46 @@ public class LiveGenWebSocket {
 | 
				
			|||||||
                    client.sendString("success;Card loaded successfully.");
 | 
					                    client.sendString("success;Card loaded successfully.");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "location" -> {
 | 
					            case "background" -> {
 | 
				
			||||||
                card.setLocation(Location.getLocation(messageContent));
 | 
					 | 
				
			||||||
                client.sendString("background");
 | 
					                client.sendString("background");
 | 
				
			||||||
                client.sendBytes(byteBufferFromImage(card.getBackground()));
 | 
					                client.sendBytes(byteBufferFromImage(card.getBackground()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            case "location" -> {
 | 
				
			||||||
 | 
					                card.setLocation(Location.getLocation(messageContent));
 | 
				
			||||||
                client.sendString("location");
 | 
					                client.sendString("location");
 | 
				
			||||||
                client.sendBytes(byteBufferFromImage(card.renderLocationLayer()));
 | 
					                client.sendBytes(byteBufferFromImage(card.renderLocationLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "name" -> {
 | 
					            case "name" -> {
 | 
				
			||||||
 | 
					                card.setName(messageContent);
 | 
				
			||||||
 | 
					                client.sendString("name");
 | 
				
			||||||
 | 
					                client.sendBytes(byteBufferFromImage(card.renderNameLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "title" -> {
 | 
					            case "title" -> {
 | 
				
			||||||
 | 
					                card.setTitle(messageContent);
 | 
				
			||||||
 | 
					                client.sendString("title");
 | 
				
			||||||
 | 
					                client.sendBytes(byteBufferFromImage(card.renderTitleLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "email" -> {
 | 
					            case "email" -> {
 | 
				
			||||||
 | 
					                card.setEmail(messageContent);
 | 
				
			||||||
 | 
					                client.sendString("email");
 | 
				
			||||||
 | 
					                client.sendBytes(byteBufferFromImage(card.renderEmailLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "extension" -> {
 | 
					            case "extension" -> {
 | 
				
			||||||
 | 
					                card.setExtension(messageContent);
 | 
				
			||||||
 | 
					                client.sendString("extension");
 | 
				
			||||||
 | 
					                client.sendBytes(byteBufferFromImage(card.renderPhoneNumbersLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "directNumber" -> {
 | 
					            case "directNumber" -> {
 | 
				
			||||||
 | 
					                card.setDirectNumber(messageContent);
 | 
				
			||||||
 | 
					                client.sendString("directNumber");
 | 
				
			||||||
 | 
					                client.sendBytes(byteBufferFromImage(card.renderPhoneNumbersLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            case "cellNumber" -> {
 | 
					            case "cellNumber" -> {
 | 
				
			||||||
 | 
					                card.setCellNumber(messageContent);
 | 
				
			||||||
 | 
					                client.sendString("cellNumber");
 | 
				
			||||||
 | 
					                client.sendBytes(byteBufferFromImage(card.renderPhoneNumbersLayer()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            default -> session.getRemote().sendString("Unknown Message Type: " + messageType);
 | 
					            default -> client.sendString("Unknown Message Type: " + messageType);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -21,12 +21,12 @@ public class Location {
 | 
				
			|||||||
    private final String number;
 | 
					    private final String number;
 | 
				
			||||||
    private transient BufferedImage background;
 | 
					    private transient BufferedImage background;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Location(String id, String name, String address, String number) throws IOException {
 | 
					    public Location(String id, String name, String address, String number) {
 | 
				
			||||||
        this.id = id;
 | 
					        this.id = id;
 | 
				
			||||||
        this.name = name;
 | 
					        this.name = name;
 | 
				
			||||||
        this.address = address;
 | 
					        this.address = address;
 | 
				
			||||||
        this.number = number;
 | 
					        this.number = number;
 | 
				
			||||||
        background = ImageIO.read(this.getClass().getResourceAsStream("/backgrounds/" + id + ".png"));
 | 
					        loadBackground();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getId() {
 | 
					    public String getId() {
 | 
				
			||||||
@ -49,10 +49,14 @@ public class Location {
 | 
				
			|||||||
        return background;
 | 
					        return background;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void loadBackground() throws IOException {
 | 
					    public void loadBackground() {
 | 
				
			||||||
        URL backgroundURL = this.getClass().getResource("/backgrounds/" + id + ".png");
 | 
					        URL backgroundURL = this.getClass().getResource("/backgrounds/" + id + ".png");
 | 
				
			||||||
        if (backgroundURL == null) backgroundURL = this.getClass().getResource("/backgrounds/default.png");
 | 
					        if (backgroundURL == null) backgroundURL = this.getClass().getResource("/backgrounds/default.png");
 | 
				
			||||||
        background = ImageIO.read(backgroundURL);
 | 
					        try {
 | 
				
			||||||
 | 
					            background = ImageIO.read(backgroundURL);
 | 
				
			||||||
 | 
					        } catch (IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@ -74,13 +78,13 @@ public class Location {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static Location getLocation (String locationId){
 | 
					    public static Location getLocation (String locationId) {
 | 
				
			||||||
        for (Location loc : LOCATIONS) {
 | 
					        for (Location loc : LOCATIONS) {
 | 
				
			||||||
            if (loc.getId().equals(locationId)) {
 | 
					            if (loc.getId().equals(locationId)) {
 | 
				
			||||||
                return loc;
 | 
					                return loc;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					        return new Location("", "", "", "");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static String getLocationId(String name) {
 | 
					    public static String getLocationId(String name) {
 | 
				
			||||||
@ -91,6 +95,4 @@ public class Location {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user