quarta-feira, 31 de julho de 2013

Criando Scheduled com spring

Anotar a Classe com
@Component
=========================================================
Anotar o método com
@Scheduled(cron = "* * 0 * * ?")
cron = segundos, minutos, hora, dia, mês

cron = "* * 0 * * ?" -> meia noite
cron = "*/5 * * * * ?" -> a cada 5 segundos
cron = "* 2/5 * * * ?" -> apartir do segundo minuto a cada 5 minutos
cron = "5 30 5 * * ?" -> 5:30:05 AM
=========================================================
Incluir no context do spring



<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-task-3.0.xsd"
>

<task:annotation-driven/>
...
</beans>
========================================================

Fonte: http://howtodoinjava.com/2013/04/23/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/

Import xml do excel em java com Xstream


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package teste.xml.excel;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.mapper.MapperWrapper;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.List;

/**
 *
 * @author smart
 */
public class Teste {

    public static void main(String[] args) throws IOException, Exception {

        Teste t = new Teste();
        XStream xstream = t.getXStream();
        xstream.setMode(XStream.NO_REFERENCES);

        xstream.alias("Workbook", Teste.Workbook.class);
        xstream.addImplicitArray(Teste.Workbook.class, "Worksheet", Teste.Worksheet.class);
        xstream.alias("Table", Teste.Table.class);
        xstream.addImplicitArray(Teste.Table.class, "Row", Teste.Row.class);
        xstream.addImplicitArray(Teste.Row.class, "Cell", Teste.Cell.class);
        xstream.alias("Cell", Teste.Cell.class);
        xstream.alias("Data", String.class);

        Teste.Workbook o = (Teste.Workbook) xstream.fromXML(new File("/home/smart/NetBeansProjects/Teste Rest/build/classes/teste/xml/excel/excel.xml"), new Teste.Workbook());
        System.out.println(o);
    }

    public XStream getXStream() {
        XStream xstream = new XStream() {

            @Override
            protected MapperWrapper wrapMapper(MapperWrapper next) {
                return new MapperWrapper(next) {

                    @Override
                    public boolean shouldSerializeMember(Class definedIn, String fieldName) {
                        if (definedIn == Object.class) {
                            return false;
                        }
                        return super.shouldSerializeMember(definedIn, fieldName);
                    }
                };
            }
        };

        return xstream;
    }
 
    private String getURIArquivo(String arquivo) throws Exception {
       URL is = this.getClass().getResource(arquivo);
       if (is == null) {
           is = this.getClass().getClassLoader().getResource(arquivo);
       }
       return URLDecoder.decode(is.toString(), "UTF-8");
   }

    static class Workbook {

        private List<Worksheet> Worksheet;

        public List getWorksheet() {
            return Worksheet;
        }

        public void setWorksheet(List Worksheet) {
            this.Worksheet = Worksheet;
        }
    }

    static class Worksheet {

        private Teste.Table Table;

        public Teste.Table getTable() {
            return Table;
        }

        public void setTable(Teste.Table Table) {
            this.Table = Table;
        }
    }

    static class Table {

        private List<Row> Row;

        public List getRow() {
            return Row;
        }

        public void setRow(List Row) {
            this.Row = Row;
        }
    }

    static class Row {

        private List<Cell> Cell;

        public List getCell() {
            return Cell;
        }

        public void setCell(List Cell) {
            this.Cell = Cell;
        }
    }

    static class Cell {

        private String Data;

        public String getData() {
            return Data;
        }

        public void setData(String Data) {
            this.Data = Data;
        }
    }
}

Gerador de configuração para balanceamento de carga






fonte: http://lbconfig.appspot.com/

segunda-feira, 29 de julho de 2013

Por que as letras do teclados não estão em ordem alfabética?


teclado


Q
WERTY
 é o layout de teclados atualmente mais utilizado em computadores e máquinas de escrever. O nome vem das primeiras 6 letras “QWERTY”.
A disposição das teclas foi patenteada por Christopher Sholes em 1868 e vendido à Remington em 1873, quando foi visto pela primeira vez em máquinas de escrever. Nota: Qwerty Uiop, seqüência de letras da primeira fileira, às vezes é confundido com o inventor, mas isso não passa de um mito.
datilografia
Nesse layout, os pares de letras utilizados com maior frequência na língua inglesa foram separados em metades opostas do teclado, numa tentativa de evitar o travamento do mecanismo das rudimentares máquinas do século XIX. Ao alternar o uso das teclas, o arranjo evitava o travamento de teclas nas antigas máquinas de escrever: enquanto uma mão acerta uma tecla, a outra localiza a tecla seguinte.
Outros padrões foram propostos, como o Dvorak (imagem a baixo), mas nunca atingiram a mesma popularidade do QWERTY.
800px-KB_United_States_Dvorak.svg
layout QWERTY é adotado com alterações em algumas línguas formando os teclados AZERTY e o QWERTZ, em que as letras Y e estão trocadas. Símbolos, diacríticos e caracteres acentuados estão em posições diferentes nas variações internacionais do QWERTY.
Curiosamente, a palavra “typewriter” (máquina de escrever, em inglês) pode ser escrita utilizando-se apenas as letras contidas na linha superior do teclado (QWERTYUIOP).

sexta-feira, 26 de julho de 2013

Limpar conteúdo de componentes jsf

/**
 * Limpa os dados dos componentes de edição e de seus filhos,
 * recursivamente. Checa se o componente é instância de 
 * EditableValueHolder e 'reinicia' suas propriedades.
 */
public void cleanSubmittedValues(UIComponent component) {
    if (component instanceof EditableValueHolder) {
        EditableValueHolder evh = (EditableValueHolder) component;
            evh.setSubmittedValue(null);
            evh.setValue(null);
            evh.setLocalValueSet(false);
            evh.setValid(true);
        }
        if(component.getChildCount()>0){
            for (UIComponent child : component.getChildren()) {
                cleanSubmittedValues(child);
            }
        }
    }
}

Fonte: https://github.com/rponte/jsf-loja-project/blob/master/src/br/com/triadworks/loja/util/FacesUtils.java#L58