Codigo para realizar a pesquisa automatica ao chegar ao final de uma pagina.
<script>
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
if(angular.element(document.getElementById('legend')).scope().cursor != null){
angular.element(document.getElementById('legend')).scope().buscarObrigacao();
}
}
});
</script>
sexta-feira, 31 de julho de 2015
quinta-feira, 24 de abril de 2014
Testando Endpoints
Após criado a classe do endpoint, para que ela seja acessível, deve ser mapeada no web.xml, conforme abaixo:
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>
br.com.super2.endpoint.ProjectEndpoint,
br.com.super2.endpoint.TaskEndpoint,
br.com.super2.endpoint.DiscussionEndpoint
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
Ao executar o projeto, estar disponível a seguinte url: localhost:8888/_ah/api/explorer
Onde sera possível realizar os testes de todos os métodos do endpoint.
<servlet>
<servlet-name>SystemServiceServlet</servlet-name>
<servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
<init-param>
<param-name>services</param-name>
<param-value>
br.com.super2.endpoint.ProjectEndpoint,
br.com.super2.endpoint.TaskEndpoint,
br.com.super2.endpoint.DiscussionEndpoint
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SystemServiceServlet</servlet-name>
<url-pattern>/_ah/spi/*</url-pattern>
</servlet-mapping>
Ao executar o projeto, estar disponível a seguinte url: localhost:8888/_ah/api/explorer
Onde sera possível realizar os testes de todos os métodos do endpoint.
Criar endpoints com Google Cloud Endpoints
Após criado o projeto, criar a classe do endpoint com as anotações conforme abaixo. Onde:
@Api(name = "exampleProject") é o nome da aplicação
@ApiMethod(name = "customers.list",, httpMethod = HttpMethod.GET) - é o nome do serviço
@Api(name = "exampleProject")
public class CustomerEndpoint {
private static final String ENTIDADE = "Cliente";
@ApiMethod(name = "customers.list",, httpMethod = HttpMethod.GET)
public CollectionResponse<Customer> listCustomer() throws Exception {
try {
List<Customer> list = Customer.getDao().list();
return CollectionResponse.<Customer> builder().setItems(list).build();
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_LIST, ENTIDADE));
}
}
@ApiMethod(name = "customers.get", httpMethod = HttpMethod.GET)
public Customer getCustomer(@Named("id") Long id) throws Exception {
try {
return Customer.getDao().get(id);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_GET, ENTIDADE));
}
}
@ApiMethod(name = "customers.insert", httpMethod = HttpMethod.POST)
public Customer insertCustomer(Customer model) throws Exception {
try {
return Customer.getDao().insert(model);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_INSERT, ENTIDADE));
}
}
@ApiMethod(name = "customers.update", httpMethod = HttpMethod.PUT)
public Customer updateCustomer(Customer model) throws Exception {
try {
return Customer.getDao().update(model);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_UPDATE, ENTIDADE));
}
}
@ApiMethod(name = "customers.remove", httpMethod = HttpMethod.DELETE)
public void removeCustomer(@Named("id") Long id) throws Exception {
try {
Customer.getDao().delete(id);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_REMOVE, ENTIDADE));
}
}
@Api(name = "exampleProject") é o nome da aplicação
@ApiMethod(name = "customers.list",, httpMethod = HttpMethod.GET) - é o nome do serviço
@Api(name = "exampleProject")
public class CustomerEndpoint {
private static final String ENTIDADE = "Cliente";
@ApiMethod(name = "customers.list",, httpMethod = HttpMethod.GET)
public CollectionResponse<Customer> listCustomer() throws Exception {
try {
List<Customer> list = Customer.getDao().list();
return CollectionResponse.<Customer> builder().setItems(list).build();
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_LIST, ENTIDADE));
}
}
@ApiMethod(name = "customers.get", httpMethod = HttpMethod.GET)
public Customer getCustomer(@Named("id") Long id) throws Exception {
try {
return Customer.getDao().get(id);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_GET, ENTIDADE));
}
}
@ApiMethod(name = "customers.insert", httpMethod = HttpMethod.POST)
public Customer insertCustomer(Customer model) throws Exception {
try {
return Customer.getDao().insert(model);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_INSERT, ENTIDADE));
}
}
@ApiMethod(name = "customers.update", httpMethod = HttpMethod.PUT)
public Customer updateCustomer(Customer model) throws Exception {
try {
return Customer.getDao().update(model);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_UPDATE, ENTIDADE));
}
}
@ApiMethod(name = "customers.remove", httpMethod = HttpMethod.DELETE)
public void removeCustomer(@Named("id") Long id) throws Exception {
try {
Customer.getDao().delete(id);
} catch (Exception e) {
throw new Exception(String.format(Message.ERRO_REMOVE, ENTIDADE));
}
}
Criar projeto Maven + Google Cloud Endpoints
O projeto pode ser criado via archetypes, conforme o link: appengine + maven
Após criado, as dependencias ficam como abaixo:
<dependencies>
<!-- Compile/runtime dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>${appengine.target.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-stubs</artifactId>
<version>${appengine.target.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-endpoints</artifactId>
<version>${appengine.target.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
Após criado, as dependencias ficam como abaixo:
<dependencies>
<!-- Compile/runtime dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-1.0-sdk</artifactId>
<version>${appengine.target.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Test Dependencies -->
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-api-stubs</artifactId>
<version>${appengine.target.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-endpoints</artifactId>
<version>${appengine.target.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
terça-feira, 9 de junho de 2009
Obter valor de ManagedBean JSF 1.2
Método para obter valor de um ManagedBean na versão 1.2 do JSF.
Onde:
BaseViewBean - Classe ManagedBean padrão da qual todas extendem.
public BaseViewBean accessBean(String beanName, Class viewClass) {
StringBuffer valueBinding = new StringBuffer();
valueBinding.append(CERQUILHA);
valueBinding.append(ABRE_CHAVES);
valueBinding.append(beanName);
valueBinding.append(FECHA_CHAVES);
ValueExpression exp = context.getApplication().getExpressionFactory()
.createValueExpression(context.getELContext(),
valueBinding.toString(), viewClass);
BaseViewBean bean = (BaseViewBean) exp.getValue(context.getELContext());
return bean;
}
Onde:
BaseViewBean - Classe ManagedBean padrão da qual todas extendem.
quinta-feira, 2 de abril de 2009
Acesso a banco via Hibernate
Para buscar a sessão responsável por executar o acesso ao banco, foi criado uma classe da seguinte forma:
E para realizar o acesso, basta chama-la da seguinte forma:
E então resta apenas utilizar de forma simples:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
E para realizar o acesso, basta chama-la da seguinte forma:
public class UserDaoImpl implements UserDao {
private Session session;
public void salvar(User user) {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
}
public List listar() {
session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
List userList = session.createQuery("from User").list();
session.getTransaction().commit();
return userList;
}
E então resta apenas utilizar de forma simples:
User c1 = new User();
c1.setNome("Raul Seixas");
User c2 = new User();
c2.setNome("Bruce Dickinson");
UserDao clienteDAO = new UserDaoImpl();
clienteDAO.salvar(c1);
clienteDAO.salvar(c2);
Utilizando @SequenceGenerator do hibernate com o Firebird
Para utilizar Sequence do firebird, basta criar o generator no banco de dados:
E depois disso, utilizar este nome na entidade, mapeando da seguinte forma:
E o mapeamento do arquivo hibernate.cfg.xml fica normal.
"CREATE SEQUENCE GEN_USUARIO_ID;"E depois disso, utilizar este nome na entidade, mapeando da seguinte forma:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@SequenceGenerator(name = "INC_USUARIO", sequenceName = "GEN_USUARIO_ID")
@Table(name = "usuario")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "INC_USUARIO")
private Long id;
@Column
private String nome;
E o mapeamento do arquivo hibernate.cfg.xml fica normal.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="Hibernate" >
<!-- Database connection settings -->
<property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property>
<property name="connection.url">jdbc:firebirdsql:localhost/3050:E:\Desenv\Base\base.fdb</property>
<property name="connection.username">sysdba</property>
<property name="connection.password">masterkey</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.FirebirdDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- property name="hibernate.hbm2ddl.auto">create</property> -->
<mapping class="br.com.viartes.entities.User" />
</session-factory>
</hibernate-configuration>
sexta-feira, 28 de setembro de 2007
Abrir paginas com Ajax
Navegação em uma pagina JSF, onde um componente ira receber dentro dele a pagina de se deseja abrir:
Nesse link(Componente do ADF), foi utilizado um actionListener para realizar umas funções na pagina, e a propriedade partialSubmit="true" , para evitar que toda a pagina fosse atualizada ao clicar (O funcionamento disso esta em um outro post).
Quando a ação de clique é disparada, então o javascript a seguir entra em ação para buscar a nova pagina e carrega-la dentro de um componente já definido.
Esse javascript ainda altera a propriedade visibility de um componente de id = loading:
Esse componente é apenas uma imagem do tipo gif, que usei para dar uma resposta ao usuário enquanto a pagina é carregada.(implementação bem simples).
Depois de carregado e mostrado pelo JavaScript, este é o componente que recebe a pagina que foi carregada:
<af:commandLink actionListener="#{backing.funcao}"
styleClass="textoSubMenu"
id="LinkTeste"
partialSubmit="true"
onclick= "javascript:setaValor('../site/paginaTeste.jspx',
'descricao');">
<h:outputText value="#{msg.subMenuControladoria}"/>
</af:commandLink>
Nesse link(Componente do ADF), foi utilizado um actionListener para realizar umas funções na pagina, e a propriedade partialSubmit="true" , para evitar que toda a pagina fosse atualizada ao clicar (O funcionamento disso esta em um outro post).
Quando a ação de clique é disparada, então o javascript a seguir entra em ação para buscar a nova pagina e carrega-la dentro de um componente já definido.
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest(); //Not IE
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP"); //IE
} else {
alert("Seu navegador não suporta essa navegação. Por favor Atualize!");
}
}
var receiveReq = getXmlHttpRequestObject();
var idcomp;
//Initiate the asyncronous request.
function setaValor(pagina , id ) {
//Deixa visivel a imagem e esconde o componente até ser carregado
document.getElementById(id).style.visibility = "hidden";
document.getElementById("loading").style.visibility = "visible";
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
receiveReq.open("GET", pagina, true);
idcomp = id;
receiveReq.onreadystatechange = setar;
receiveReq.send(null);
}
}
function setar() {
if (receiveReq.readyState == 4) {
//esconde a imagem
document.getElementById("loading").style.visibility = "hidden";
//Joga a pagina requisitada para dentro do componente
document.getElementById(idcomp).innerHTML =
receiveReq.responseText;
//Deixa visivel o componente carregado
document.getElementById(idcomp).style.visibility = "visible";
}
}
Esse javascript ainda altera a propriedade visibility de um componente de id = loading:
<h:graphicImage url="/Imagens/loading.gif" id="loading" styleClass="figLoading"/>
Esse componente é apenas uma imagem do tipo gif, que usei para dar uma resposta ao usuário enquanto a pagina é carregada.(implementação bem simples).
Depois de carregado e mostrado pelo JavaScript, este é o componente que recebe a pagina que foi carregada:
<h:form styleClass="formDescSMenu" id="descricao"></h:form>
Grupo de JSF oficial do Brasil!
Um grupo internacional da língua portuguesa para discussão de conceitos e tecnologias Web como JavaServer Faces, RIA, patterns e ferramentas de desenvolvimento.
Grupo de JSF
Grupo de JSF
segunda-feira, 10 de setembro de 2007
PartialRefresh e Partialtriggers para componentes ADF
Para que serve?
Atualizar componentes sem que seja preciso atualizar a pagina.
PartialRefresh
Atualizar um componente setando novas configurações ou opções a ele, dizendo apenas qual o componente a ser atualizado
Partialtriggers
Define que um componente será reatualizado quando algum outro por alterado
OBS: para que essa atualização ocorra normalmente o componente que ira disparar as alteraçoes deve estar com a propriedade autoSubmit ou partialSubmit setado para true
Atualizar componentes sem que seja preciso atualizar a pagina.
PartialRefresh
Atualizar um componente setando novas configurações ou opções a ele, dizendo apenas qual o componente a ser atualizado
/**
* Faz com que o componente passado por parâmentro seja
* atualizado na tela
* @param uic componente a ser atualizado
*/
private void doPartialRefresh(UIComponent uic) {
AdfFacesContext adfctx = AdfFacesContext.getCurrentInstance();
adfctx.addPartialTarget(uic);
}
Partialtriggers
Define que um componente será reatualizado quando algum outro por alterado
af:selectonechoice label="Teste"
required="true"
binding="#{backing_teste.oneChoice}"
partialtriggers="IdComponente"
id="selectOneChoice"
/af:selectonechoice
OBS: para que essa atualização ocorra normalmente o componente que ira disparar as alteraçoes deve estar com a propriedade autoSubmit ou partialSubmit setado para true
quarta-feira, 29 de agosto de 2007
terça-feira, 21 de agosto de 2007
Mascara JavaScript
Existem tantas mascaras prontas por ae, e cada uma com suas particularidades, mas nenhuma atendia as minhas necessidades e então decidi criar uma que serviria para data, cpf ou outras mascaras que fosse preciso.
Embora bem extensa, é bem simples, e embora eu não seja muito bom em JavaScript, ficou bem útil e fácil de entender e modificar, caso necessário.
Para utilizar a mascara, basta chama-la desta forma:
onkeydown="return aplicaMascara(this,event,'99/99/9999 99:99');"
Caso seja passado "9" ou "0", ela vai aceitar apenas numeros e se for "#" aceitara apenas letras.
Embora bem extensa, é bem simples, e embora eu não seja muito bom em JavaScript, ficou bem útil e fácil de entender e modificar, caso necessário.
function aplicaMascara(campo,event, mascara) {
if (event.keyCode >= 46||event.keyCode == 8){
position = campo.selectionStart;
valor = campo.value;
v = event.keyCode;
m = mascara.charAt(position);
c = campo.value.charAt(position);
//Verifica se a mascara é para numero e se o valor inserido tb é
if (((m == '9')||(m == '0'))&&((event.keyCode >= 48 && event.keyCode <= 57)
||(event.keyCode >= 96 && event.keyCode <= 105))) {
if (c != '') {
valor = atualizaValor(valor,position,'');
document.getElementById(campo.id).value = valor;
setCursorPosition(campo,position,position);
}
//Verifica se a mascara é para texto e se o valor inserido tb é
} else if ((m == '#')&&(event.keyCode >= 65 && event.keyCode <= 90)) {
if (c != '') {
valor = atualizaValor(valor,position,'');
document.getElementById(campo.id).value = valor;
setCursorPosition(campo,position,position);
}
} else {
if (m=='') {
return false;
//Trata o valor caso o usuario pressione DEL, para nao sair da estrutura
} else if (event.keyCode == 46) {
for (del = position ;del < campo.selectionEnd ; del ++) {
valor = atualizaValor(valor,del,' ')
}
document.getElementById(campo.id).value = valor;
setCursorPosition(campo,position,position);
return false;
//Trata o valor caso o usuario pressione Backspace, para nao sair da
// estrutura
} else if(event.keyCode == 8){
valor = atualizaValor(valor,position-1,' ');
document.getElementById(campo.id).value = valor;
setCursorPosition(campo,position-1,position-1);
return false;
} else if ((m != '0')&&(m != '9')&&(m != '#')) {
//insere o saparador ou digito especial no texto
valor = atualizaValor(valor,position,m);
//verifica se o proximo campo da mascara atende as caracteristicas
// do valor inserido
if (((mascara.charAt(position+1) == '9')
||(mascara.charAt(position+1) == '0'))
&&((event.keyCode >= 48 && event.keyCode <= 57)
||(event.keyCode >= 96 && event.keyCode <= 105))) {
if (c != '') {
valor = atualizaValor(valor,position+1,'');
document.getElementById(campo.id).value = valor;
setCursorPosition(campo,position+1,position+1);
}
} else if ((mascara.charAt(position+1) == '#')
&&(event.keyCode >= 65 && event.keyCode <= 90)) {
if (c != '') {
valor = atualizaValor(valor,position+1,'');
document.getElementById(campo.id).value = valor;
setCursorPosition(campo,position+1,position+1);
}
} else {
return false;
}
} else {
return false;
}
}
document.getElementById(campo.id).value = valor;
}
}
//Recebe um texto e substitui o valor passado na posicao indicada
function atualizaValor(texto,posicao,valor){
var novoTexto = "";
for (i = 0; i <= texto.length; i++) {
if (i == posicao) {
novoTexto = novoTexto + valor;
} else {
v = texto.charAt(i);
novoTexto = novoTexto + v;
}
}
return novoTexto;
}
//Seta o cursor para a posicao desejada no campo
function setCursorPosition(oInput,oStart,oEnd) {
if( oInput.setSelectionRange ) {
oInput.setSelectionRange(oStart,oEnd);
} else if( oInput.createTextRange ) {
var range = oInput.createTextRange();
range.collapse(true);
range.moveEnd('character',oEnd);
range.moveStart('character',oStart);
range.select();
}
}
Para utilizar a mascara, basta chama-la desta forma:
onkeydown="return aplicaMascara(this,event,'99/99/9999 99:99');"
Caso seja passado "9" ou "0", ela vai aceitar apenas numeros e se for "#" aceitara apenas letras.
segunda-feira, 30 de julho de 2007
Skin de componentes ADF
Para utilizar um skin diferente do tradicional para os componentes ADF, basta incluir no projeto alguns arquivos referente ao novo Skin (css, imagens), e configurar para que a aplicação os utilize.
Com o JDeveloper, na opção de updates é facil encontrar o item para skins adicionais e basta baixa-los para que eles fiquem na pasta da IDE, e seja possivel utilizar.
Ja com os novos Skin na maquina, resta apenas copiar esses arquivos para uma pasta do seu projeto, e mapea-los para que a aplicação os encontre.
Dentro dessa pasta, pode-se criar pastas para cada Skin que decidir utilizar, e dentro da pasta do Skin, ficara o arquivo de css e as imagens que ele utiliza.
Lembrando que as tags de css devem seguir um padrão de nome ja definido, então para alteraçoes nas cores e outras propriedades é de grande importancia prestar atenção a esses nomes para que funcionem corretamente.
Nesse link pode ser obtido um skin padrao: Oracle Skin
Depois de colocado os arquivos na pasta, é preciso mapea-lo para que seja encontrado pelo projeto, e para isso é necessario um arquivo xml chamado: adf-faces-skins.xml , e que ficara na pasta WEB-INF do projeto, e nele é definido a estrutura do skin dessa forma:
Essa estrutura faz com que o skin seja encontrado pelo projeto, e para utiliza-lo, é preciso apenas inserir o seu nome em outro arquivo xml que provavelmente ja estara na pasta web inf : adf-faces-config.xml
<?xml version="1.0" encoding="windows-1252"?>
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/view/faces/config">
<skin-family>silver</skin-family>
</adf-faces-config>
E com isso a aplicação ja estara com um novo visual, e sendo possivel deixar essa opção selecionavel pelo usuario.
Podem ser encontradas maiores explicaçoes em: Oracle ADF
Com o JDeveloper, na opção de updates é facil encontrar o item para skins adicionais e basta baixa-los para que eles fiquem na pasta da IDE, e seja possivel utilizar.
Ja com os novos Skin na maquina, resta apenas copiar esses arquivos para uma pasta do seu projeto, e mapea-los para que a aplicação os encontre.
Dentro dessa pasta, pode-se criar pastas para cada Skin que decidir utilizar, e dentro da pasta do Skin, ficara o arquivo de css e as imagens que ele utiliza.
Lembrando que as tags de css devem seguir um padrão de nome ja definido, então para alteraçoes nas cores e outras propriedades é de grande importancia prestar atenção a esses nomes para que funcionem corretamente.
Nesse link pode ser obtido um skin padrao: Oracle Skin
Depois de colocado os arquivos na pasta, é preciso mapea-lo para que seja encontrado pelo projeto, e para isso é necessario um arquivo xml chamado: adf-faces-skins.xml , e que ficara na pasta WEB-INF do projeto, e nele é definido a estrutura do skin dessa forma:
<?xml version="1.0" encoding="ISO-8859-1"?>
<skins xmlns="http://xmlns.oracle.com/adf/view/faces/skin">
<skin>
<id>silver.desktop</id>
<family>silver</family>
<render-kit-id>oracle.adf.desktop</render-kit-id>
<style-sheet-name>skins/silver/silver.css</style-sheet-name>
</skin>
</skins>
Essa estrutura faz com que o skin seja encontrado pelo projeto, e para utiliza-lo, é preciso apenas inserir o seu nome em outro arquivo xml que provavelmente ja estara na pasta web inf : adf-faces-config.xml
<?xml version="1.0" encoding="windows-1252"?>
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/view/faces/config">
<skin-family>silver</skin-family>
</adf-faces-config>
E com isso a aplicação ja estara com um novo visual, e sendo possivel deixar essa opção selecionavel pelo usuario.
Podem ser encontradas maiores explicaçoes em: Oracle ADF
sexta-feira, 29 de junho de 2007
Além do Cidadão Kane
Além do Cidadão Kane é um documentário produzido pela BBC de Londres - proibido no Brasil desde a estréia, em 1993, por decisão judicial - que trata das relações sombrias entre a Rede Globo de Televisão, na pessoa de Roberto Marinho, com o cenário político brasileiro.
- Os cortes e manipulações efetuados na edição do último debate entre Luiz Inácio da Silva e Fernando Collor de Mello, que influenciaram a eleição de 1989.
- Apoio a ditadura militar e censura a artistas, como Chico Buarque que por anos foi proibido de ter seu nome divulgado na emissora.
- Criação de mitos culturalmente questionáveis, veiculação de notícias frívolas e alienação humana.
- Depoimentos de Leonel Brizola, Chico Buarque, Washington Olivetto, entre outros jornalistas, historiadores e estudiosos da sociedade brasileira.
"Todo brasileiro deveria ver Além do Cidadão Kane"
- Os cortes e manipulações efetuados na edição do último debate entre Luiz Inácio da Silva e Fernando Collor de Mello, que influenciaram a eleição de 1989.
- Apoio a ditadura militar e censura a artistas, como Chico Buarque que por anos foi proibido de ter seu nome divulgado na emissora.
- Criação de mitos culturalmente questionáveis, veiculação de notícias frívolas e alienação humana.
- Depoimentos de Leonel Brizola, Chico Buarque, Washington Olivetto, entre outros jornalistas, historiadores e estudiosos da sociedade brasileira.
"Todo brasileiro deveria ver Além do Cidadão Kane"
quinta-feira, 21 de junho de 2007
Google maps
Simplesmente demais isso... quem sabe um dia tenha essas opçoes para cidades brasileiras... he he
quarta-feira, 20 de junho de 2007
Valores de Sessao com DWR
Buscando valores de objetos na sessão, via dwr, e jogando valores em um campo na tela diretamente do java:
E para que tudo isso funcione basta estar configurado corretamente o DWR, e para isso é só dar uma olhada no outro post sobre o assunto.
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
/**
* pega o WebContex - classe do DWR
* objeto faz a ligacao com o servlet
*
* @return objeto WebContext
*/
private WebContext getWebContext() {
return WebContextFactory.get();
}
/**
* Pega o objeto usuário que está na sessão ativa
*
* @return Usuário
*/
private OBJETO getOBJETO() {
return (OBJETO) this.getWebContext().getSession().getAttribute("OBJETO");
}
/**
* pega o objeto Útil - classe do DWR que permite
* operacoes com os elementos HTML
*
* @return objeto Util
*/
private Util getUtilThis() {
return new Util(getWebContext().getScriptSession());
}
//Aqui passa um valor e um campo da tela e via dwr
// ele seta o valor para o campo na tela
private void setarValor(String valor,String nomeCampo){
this.getUtilThis().setValue(nomeCampo, String.valueOf(valor));
}
Acesso a banco Oracle, Firebird, SQL Server via Java
Um codigo simples e rapido para conectar em 3 bancos de dados:
Oracle, Firebird, SQL Server
Estou usando os seguintes drivers
Oracle: ojdbc14.jar
SQL Server: jtds-1.2.jar
Firebird: jaybird-full-2.0.1.jar
Todos esses podem ser facilmente encontrados em uma procura rapida no google (ou generico)
Oracle, Firebird, SQL Server
Estou usando os seguintes drivers
Oracle: ojdbc14.jar
SQL Server: jtds-1.2.jar
Firebird: jaybird-full-2.0.1.jar
Todos esses podem ser facilmente encontrados em uma procura rapida no google (ou generico)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class OracleRM {
public OracleRM() {
}
private static final String url =
//Oracle:
// "jdbc:oracle:thin:@ENDERECO_DO_SEU_SERVIDOR:PORTA:BASE_DE_DADOS";
//SQL Server 1433 é a porta padrao
// "jdbc:jtds:sqlserver://ENDERECO_DO_SEU_SERVIDOR:1433/BASE_DE_DADOS";
//Firebird:
// "jdbc:firebirdsql://ENDERECO_DO_SEU_SERVIDOR/CAMINHO_BASE_DE_DADOS";
private static final String driver =
//Oracle:
// "oracle.jdbc.driver.OracleDriver";
//SQL Server
// "net.sourceforge.jtds.jdbc.Driver";
//Firebird:
// "org.firebirdsql.jdbc.FBDriver";
private static final String usuario = "usuario";
private static final String senha = "senha";
public Connection getConnection() throws SQLException {
try {
Class.forName(driver);
return DriverManager.getConnection(url, usuario, senha);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
quinta-feira, 3 de maio de 2007
Ajax com DWR
Esse é um tutorial simples, de como usar e implementar o DWR para obter funcionalidades em Ajax.
Documentaçao melhor pode ser encontrada no site: DWR
Continuando...
Primeiro é preciso baixar o dwr.jar na pagina acima, e adicionar a sua aplicaçao.
Em seguida, no seu web.xml é necessario incluir estas linhas, para configuraçao do servlet do dwr:
Após feito isso, tem que ser criado na mesma pasta do web.xml, um arquivo chamado dwr.xml, e nele será feito o mapeamento das classes chamadas via javascript.
Segue basicamente este padrao:
Na imagem:
create creator="new" javascript="Index"
O tipo de contrutor e o apelido que sera usado no javascript
param name="class" value="ajax.backing.Index"
Aqui é especificado o caminho onde se encontra a classe.
Depois de configurado esses dois arquivos, rode sua aplicaçao e acesse o caminho:
aplicaçao/dwr
Nesse caminho, será listado as classes que foram mapeadas:
Clicando em uma delas:

É entao mostrado uam breve descrição dos metodos que ela disponibiliza, e também, no topo da pagina, as tags necessarias para usar esta classe na sua pagina.
Agora falta apenas copiar essas tags e incluir na sua pagina.
Entao só é preciso usar as funcoes, e poder ser como esse exemplo simples:
Que chama :
E esta... chama a classe mapeada anteriormente:

Feito isso, esta pronto uma implementação basica do DWR.
Documentaçao melhor pode ser encontrada no site: DWR
Continuando...
Primeiro é preciso baixar o dwr.jar na pagina acima, e adicionar a sua aplicaçao.
Em seguida, no seu web.xml é necessario incluir estas linhas, para configuraçao do servlet do dwr:
Segue basicamente este padrao:
create creator="new" javascript="Index"
O tipo de contrutor e o apelido que sera usado no javascript
param name="class" value="ajax.backing.Index"
Aqui é especificado o caminho onde se encontra a classe.
Depois de configurado esses dois arquivos, rode sua aplicaçao e acesse o caminho:
aplicaçao/dwr
Nesse caminho, será listado as classes que foram mapeadas:
É entao mostrado uam breve descrição dos metodos que ela disponibiliza, e também, no topo da pagina, as tags necessarias para usar esta classe na sua pagina.
Agora falta apenas copiar essas tags e incluir na sua pagina.
Entao só é preciso usar as funcoes, e poder ser como esse exemplo simples:
Feito isso, esta pronto uma implementação basica do DWR.
quarta-feira, 2 de maio de 2007
Adobe Labs - Adobe Digital Editions
Exelente ferramenta para visualizaçao de arquivos .pdf, mas disponivel ainda apenas versao beta.
Adobe Labs - Adobe Digital Editions Beta Download and Install
Adobe Labs - Adobe Digital Editions Beta Download and Install
sexta-feira, 27 de abril de 2007
Meta 2007 - SCJP
| Descrição do Curso (CX-310-055) |
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055) |
| Programação |
| As datas dos cursos dependem do número de participantes. |
| | ||
| Overview | ||
O exame de certificação "Sun Certified Programmer for Java 2 Platform 5.0", destina-se a programadores com experiência no uso da linguagem de programação Java. A obtenção dessa certificação é evidência clara de que o programador conhece a sintaxe e a estrutura básicas da linguagem de programação Java e de que é capaz de desenvolver aplicativos com a tecnologia Java para serem executados em sistemas de servidor e de desktop usando o J2SE 5.0. Este simulado Sun ePractice é composto de 210 questões. | ||
| | ||
Detalhes
| ||
| | ||
Idiomas
| ||
| Pré-requisitos | ||
| None | ||
Objetivos do ExameSeção 1: Declarações, Inicialização e Definição de Escopo
Seção 2: Controle de Fluxo
Seção 3: Conteúdo da API
Seção 4: Simultaneidade
Seção 5: Conceitos Orientados a Objetos
Seção 6: Coleções/Versões Genéricas
Seção 7: Princípios Básicos
| ||
Assinar:
Postagens (Atom)