Sergio Morganti
Sergio Morganti

Reputation: 163

Adding Timestamp to a hashmap Post. How to?

So, I'm trying to add TIMESTAMP to a hashmap post. (Rules -publish_date and expiration_date) I'm posting data to the remote server using it's api coded in jSon.

Here's the exemple to the POST format

    content={
    "external_id": 1000,
    "template_type_id": 103,
    "channel_id": 226,
    "title": "Título do Conteúdo",
    "text": "Descrição do Conteúdo",
    "rules": {
        "publish_date": "2012-07-20T11:18:00-03:00",
        "expiration_date": "2012-08-25T11:18:00-03:00",
        "notify_publish": true,
        "notify_expiration": false,
        "highlighted": true
    },
    "interactions": {
        "allow_comment": true,
        "auto_download": false
    }
}

First off all I created a Class called ContentDTO and added it's code

package br.com.xxxx.xxxx;

public class ContentDTO {

    public ContentDTO(String external_id, Integer template_type_id, String channel_id, String title, String text, RulesDTO rules, InteractionsDTO interactions) {
        super();
        this.external_id = external_id;
        this.template_type_id = template_type_id;
        this.channel_id = channel_id;
        this.title = title;
        this.text = text;
        this.rules = rules;
        this.interactions = interactions;
    }

    public ContentDTO() {
        super();
    }

    private String external_id; 

    private Integer template_type_id;

    private String channel_id;

    private String title;

    private String text;

    private RulesDTO rules;

    private InteractionsDTO interactions;

    public String getExternal_id() {
        return external_id;
    }

    public void setExternal_id(String external_id) {
        this.external_id = external_id;
    }

    public Integer getTemplate_type_id() {
        return template_type_id;
    }

    public void setTemplate_type_id(Integer template_type_id) {
        this.template_type_id = template_type_id;
    }

    public String getChannel_id() {
        return channel_id;
    }

    public void setChannel_id(String channel_id) {
        this.channel_id = channel_id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public RulesDTO getRules() {
        return rules;
    }

    public void setRules(RulesDTO rules) {
        this.rules = rules;
    }

    public InteractionsDTO getInteractions() {
        return interactions;
    }

    public void setInteractions(InteractionsDTO interactions) {
        this.interactions = interactions;
    }

}

Than, I created both, InteractionsDTO and RulesDTO. Here is RulesDTO code.

package br.com.xxxx.xxxx;

import java.security.Timestamp;

public class RulesDTO {

    public RulesDTO(Timestamp publish_date, Timestamp expiration_date,
            Boolean notify_publish, Boolean notify_expiration,
            Boolean highlihted) {
        super();
        this.publish_date = publish_date;
        this.expiration_date = expiration_date;
        this.notify_publish = notify_publish;
        this.notify_expiration = notify_expiration;
        this.highlihted = highlihted;
    }

    public RulesDTO() {
        super();

    }

    public Timestamp publish_date;

    public Timestamp expiration_date;

    public Boolean notify_publish;

    public Boolean notify_expiration;

    public Boolean highlihted;

    public Timestamp getPublish_date() {
        return publish_date;
    }

    public void setPublish_date(Timestamp publish_date) {
        this.publish_date = publish_date;
    }

    public Timestamp getExpiration_date() {
        return expiration_date;
    }

    public void setExpiration_date(Timestamp expiration_date) {
        this.expiration_date = expiration_date;
    }

    public Boolean getNotify_publish() {
        return notify_publish;
    }

    public void setNotify_publish(Boolean notify_publish) {
        this.notify_publish = notify_publish;
    }

    public Boolean getNotify_expiration() {
        return notify_expiration;
    }

    public void setNotify_expiration(Boolean notify_expiration) {
        this.notify_expiration = notify_expiration;
    }

    public Boolean getHighlihted() {
        return highlihted;
    }

    public void setHighlihted(Boolean highlihted) {
        this.highlihted = highlihted;
    }



}

Then, the hashmap.

HashMap<String, ContentDTO> cnt = new HashMap<String, ContentDTO>();

    ContentDTO contentDTO = new ContentDTO();
    contentDTO.setExternal_id("CNT1");
    contentDTO.setTemplate_type_id(103);
    contentDTO.setChannel_id("CHN1");
    contentDTO.setTitle("Conteudo1");
    contentDTO.setText("Conteudo teste 1");
    RulesDTO rules = new RulesDTO();
    rules.setPublish_date("2012-012-28T11:18:00-03:00");
    rules.setExpiration_date("2013-08-25T11:18:00-03:00");
    rules.setNotify_publish(true);
    rules.setNotify_expiration(false);
    rules.setHighlihted(true);

    contentDTO.setRules(rules);

    InteractionsDTO interactions = new InteractionsDTO();
    interactions.setAllow_comment(true);
    interactions.setAuto_downloa(false);

    contentDTO.setInteractions(interactions);


    cnt.put("content",contentDTO);

But I get an error in publish_date and expiration_date. (The method setPublish_date(timestamp) in the RulesDTO is not applicable in the arguments (string))

What should I do?

Thank you in forward!

Upvotes: 0

Views: 2665

Answers (2)

Anders R. Bystrup
Anders R. Bystrup

Reputation: 16060

You have

public void setPublish_date(Timestamp publish_date) {

and

rules.setPublish_date("2012-012-28T11:18:00-03:00");

A Timestamp is not a String, You'll have to convert your "2012-012...." string to a Timestamp object, which SimpleDateFormat.parse(...) or Timestamp.valueOf(...) can help you with - but be aware that you might want to not encode december as "012", use "12" instead...

Cheers,

Upvotes: 1

Olaf Dietsche
Olaf Dietsche

Reputation: 74078

setPublish_date(Timestamp) expects a Timestamp not a String as argument. You can convert your string with Timestamp.valueOf

rules.setPublish_date(Timestamp.valueOf("2012-01-28 11:18:00"));

Upvotes: 1

Related Questions