Package net.ocheyedan.wrk.cmd.trello

Source Code of net.ocheyedan.wrk.cmd.trello.Create

package net.ocheyedan.wrk.cmd.trello;

import net.ocheyedan.wrk.Output;
import net.ocheyedan.wrk.RestTemplate;
import net.ocheyedan.wrk.cmd.Args;
import net.ocheyedan.wrk.cmd.Usage;
import net.ocheyedan.wrk.trello.Board;
import net.ocheyedan.wrk.trello.Card;
import net.ocheyedan.wrk.trello.Trello;
import org.codehaus.jackson.type.TypeReference;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
* User: blangel
* Date: 7/1/12
* Time: 1:18 PM
*/
public final class Create extends IdCommand {

    private static enum Type {
        Board, List, Card
    }

    private final String url;

    private final String description;

    private final Type type;

    public Create(Args args) {
        super(args);
        if (((args.args.size() == 4) || (args.args.size() == 5))
                && "board".equals(args.args.get(0)) && "in".equals(args.args.get(1))) {
            TrelloId orgId = parseWrkId(args.args.get(2), orgPrefix);
            String name = validate(encode(args.args.get(3)), "Board name", "board names");
            String desc = (args.args.size() == 5 ? "&desc=" + validate(encode(args.args.get(4)), "Board desc", "board descriptions") : "");
            url = Trello.url("https://trello.com/1/boards?name=%s&idOrganization=%s%s&key=%s&token=%s", name, orgId.id,
                             desc, Trello.APP_DEV_KEY, Trello.USR_TOKEN);
            description = String.format("Creating board in organization ^b^%s^r^:", orgId.id);
            type = Type.Board;
        } else if ((args.args.size() == 4) && "list".equals(args.args.get(0)) && "in".equals(args.args.get(1))) {
            TrelloId boardId = parseWrkId(args.args.get(2), boardsPrefix);
            String name = validate(encode(args.args.get(3)), "List name", "list names");
            url = Trello.url("https://trello.com/1/lists?name=%s&idBoard=%s&key=%s&token=%s", name, boardId.id,
                             Trello.APP_DEV_KEY, Trello.USR_TOKEN);
            description = String.format("Creating list in board ^b^%s^r^:", boardId.id);
            type = Type.List;
        } else if (((args.args.size() == 4) || (args.args.size() == 5))
                && "card".equals(args.args.get(0)) && "in".equals(args.args.get(1))) {
            TrelloId listId = parseWrkId(args.args.get(2), listsPrefix);
            String name = validate(encode(args.args.get(3)), "Card name", "card names");
            String desc = (args.args.size() == 5 ? "&desc=" + validate(encode(args.args.get(4)), "Card desc",
                    "card descriptions") : "");
            url = Trello.url("https://trello.com/1/cards?name=%s&idList=%s%s&key=%s&token=%s", name, listId.id,
                    desc, Trello.APP_DEV_KEY, Trello.USR_TOKEN);
            description = String.format("Creating card in list ^b^%s^r^:", listId.id);
            type = Type.Card;
        } else {
            url = description = null;
            type = null;
        }
    }

    @Override protected Map<String, String> _run() {
        Output.print(description);
        Map<String, String> wrkIds = new HashMap<String, String>(1, 1.0f);
        String wrkId = "wrk1";
        switch (type) {
            case Board:
                Board board = RestTemplate.post(url, new TypeReference<Board>() { });
                if (board == null) {
                    Output.print("^red^Invalid id or insufficient privileges.^r^");
                    break;
                }
                wrkIds.put(wrkId, String.format("b:%s", board.getId()));
                Output.print("  ^b^%s^r^ ^black^| %s^r^", board.getName(), wrkId);
                Output.print("    ^black^%s^r^", board.getUrl());
                return wrkIds;
            case List:
                net.ocheyedan.wrk.trello.List list = RestTemplate.post(url, new TypeReference<net.ocheyedan.wrk.trello.List>() { });
                if (list == null) {
                    Output.print("^red^Invalid id or insufficient privileges.^r^");
                    break;
                }
                wrkIds.put(wrkId, String.format("l:%s", list.getId()));
                Output.print("  ^b^%s^r^ ^black^| %s^r^", list.getName(), wrkId);
                return wrkIds;
            case Card:
                Card card = RestTemplate.post(url, new TypeReference<Card>() { });
                if (card == null) {
                    Output.print("^red^Invalid id or insufficient privileges.^r^");
                    break;
                }
                String labels = Cards.buildLabel(card.getLabels());
                wrkIds.put(wrkId, String.format("c:%s", card.getId()));
                Output.print("  ^b^%s^r^%s ^black^| %s^r^", card.getName(), labels, wrkId);
                Output.print("    ^black^%s^r^", Cards.getPrettyUrl(card));
                return wrkIds;
        }
        return Collections.emptyMap();
    }

    @Override protected boolean valid() {
        return (url != null);
    }

    @Override protected String getCommandName() {
        return "create";
    }
}
TOP

Related Classes of net.ocheyedan.wrk.cmd.trello.Create

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.