tag:blogger.com,1999:blog-88933048932449317832024-03-13T07:38:05.580-07:00Mauricio Pelissari...Ao infinito e além...Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-8893304893244931783.post-75485368095439539922015-07-31T04:17:00.000-07:002015-07-31T04:17:32.392-07:00Pesquisa automatica ao fim da paginaCodigo para realizar a pesquisa automatica ao chegar ao final de uma pagina.<br />
<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><script><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <span class="Apple-tab-span" style="white-space: pre;"> </span>$(window).scroll(function() { <br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if(angular.element(document.getElementById('legend')).scope().cursor != null){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <span class="Apple-tab-span" style="white-space: pre;"> </span>angular.element(document.getElementById('legend')).scope().buscarObrigacao();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> <span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> }<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>});<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></script>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-17105055445036051872014-04-24T03:25:00.001-07:002014-04-30T02:14:16.982-07:00Testando EndpointsApós criado a classe do endpoint, para que ela seja acessível, deve ser mapeada no web.xml, conforme abaixo:<br />
<br />
<servlet><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><servlet-name>SystemServiceServlet</servlet-name><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><init-param><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><param-name>services</param-name><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><param-value><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>br.com.super2.endpoint.ProjectEndpoint,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>br.com.super2.endpoint.TaskEndpoint,<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>br.com.super2.endpoint.DiscussionEndpoint<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></param-value><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></init-param><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></servlet><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><servlet-mapping><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><servlet-name>SystemServiceServlet</servlet-name><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><url-pattern>/_ah/spi/*</url-pattern><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></servlet-mapping><br />
<br />
<br />
Ao executar o projeto, estar disponível a seguinte url: <a href="localhost:8888/_ah/api/explorer">localhost:8888/_ah/api/explorer</a><br />
Onde sera possível realizar os testes de todos os métodos do endpoint.Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-75285652945304527252014-04-24T03:16:00.002-07:002014-04-30T02:14:47.849-07:00Criar endpoints com Google Cloud EndpointsApós criado o projeto, criar a classe do endpoint com as anotações conforme abaixo. Onde:<br />
@Api(name = "exampleProject") é o nome da aplicação<br />
@ApiMethod(name = "customers.list",, httpMethod = HttpMethod.GET) - é o nome do serviço<br />
<br />
<br />
@Api(name = "exampleProject")<br />
public class CustomerEndpoint {<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>private static final String ENTIDADE = "Cliente";<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@ApiMethod(name = "customers.list",, httpMethod = HttpMethod.GET)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public CollectionResponse<Customer> listCustomer() throws Exception {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>List<Customer> list = Customer.getDao().list();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return CollectionResponse.<Customer> builder().setItems(list).build();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} catch (Exception e) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw new Exception(String.format(Message.ERRO_LIST, ENTIDADE));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@ApiMethod(name = "customers.get", httpMethod = HttpMethod.GET)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public Customer getCustomer(@Named("id") Long id) throws Exception {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return Customer.getDao().get(id);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} catch (Exception e) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw new Exception(String.format(Message.ERRO_GET, ENTIDADE));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@ApiMethod(name = "customers.insert", httpMethod = HttpMethod.POST)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public Customer insertCustomer(Customer model) throws Exception {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return Customer.getDao().insert(model);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} catch (Exception e) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw new Exception(String.format(Message.ERRO_INSERT, ENTIDADE));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@ApiMethod(name = "customers.update", httpMethod = HttpMethod.PUT)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public Customer updateCustomer(Customer model) throws Exception {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return Customer.getDao().update(model);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} catch (Exception e) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw new Exception(String.format(Message.ERRO_UPDATE, ENTIDADE));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>@ApiMethod(name = "customers.remove", httpMethod = HttpMethod.DELETE)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>public void removeCustomer(@Named("id") Long id) throws Exception {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>try {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Customer.getDao().delete(id);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} catch (Exception e) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>throw new Exception(String.format(Message.ERRO_REMOVE, ENTIDADE));<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-7207609153346959072014-04-24T03:00:00.001-07:002014-04-30T02:15:06.078-07:00Criar projeto Maven + Google Cloud EndpointsO projeto pode ser criado via archetypes, conforme o link: <a href="https://developers.google.com/appengine/docs/java/tools/maven#installing_maven">appengine + maven</a><br />
<br />
Após criado, as dependencias ficam como abaixo:<br />
<br />
<dependencies><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><!-- Compile/runtime dependencies --><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>com.google.appengine</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>appengine-api-1.0-sdk</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>${appengine.target.version}</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>javax.servlet</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>servlet-api</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>2.5</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><scope>provided</scope><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>jstl</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>jstl</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>1.2</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><!-- Test Dependencies --><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>com.google.appengine</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>appengine-api-stubs</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>${appengine.target.version}</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><scope>test</scope><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>com.googlecode.objectify</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>objectify</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>5.0.2</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>com.google.appengine</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>appengine-endpoints</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>${appengine.target.version}</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>javax.servlet</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>servlet-api</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>2.5</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><scope>provided</scope><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><groupId>javax.inject</groupId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><artifactId>javax.inject</artifactId><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><version>1</version><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span></dependency><br />
<span class="Apple-tab-span" style="white-space: pre;"></span></dependencies><br />
<pre dir="ltr"><dependencies> </dependencies>
</pre>
Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-35727294099032018552009-06-09T16:44:00.000-07:002009-06-09T16:48:51.360-07:00Obter valor de ManagedBean JSF 1.2Método para obter valor de um ManagedBean na versão 1.2 do JSF.<br /><pre><br /><code><br />public BaseViewBean accessBean(String beanName, Class viewClass) {<br /><br /> StringBuffer valueBinding = new StringBuffer();<br /> valueBinding.append(CERQUILHA);<br /> valueBinding.append(ABRE_CHAVES);<br /> valueBinding.append(beanName);<br /> valueBinding.append(FECHA_CHAVES);<br /><br /> ValueExpression exp = context.getApplication().getExpressionFactory()<br /> .createValueExpression(context.getELContext(),<br /> valueBinding.toString(), viewClass);<br /><br /> BaseViewBean bean = (BaseViewBean) exp.getValue(context.getELContext());<br /><br /> return bean;<br /> }<br /></code><br /></pre><br />Onde:<br />BaseViewBean - Classe ManagedBean padrão da qual todas extendem.Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-71190525994299854112009-04-02T17:56:00.000-07:002009-04-02T18:02:20.026-07:00Acesso a banco via HibernatePara buscar a sessão responsável por executar o acesso ao banco, foi criado uma classe da seguinte forma:<br /><br /><pre><code><br />import org.hibernate.SessionFactory;<br />import org.hibernate.cfg.AnnotationConfiguration;<br /><br />public class HibernateUtil {<br /><br /> private static final SessionFactory sessionFactory;<br /> static {<br /> try {<br /> // Create the SessionFactory from hibernate.cfg.xml<br /> sessionFactory = new AnnotationConfiguration().configure()<br /> .buildSessionFactory();<br /> } catch (Throwable ex) {<br /> // Make sure you log the exception, as it might be swallowed<br /> System.err.println("Initial SessionFactory creation failed." + ex);<br /> throw new ExceptionInInitializerError(ex);<br /> }<br /> }<br /><br /> public static SessionFactory getSessionFactory() {<br /> return sessionFactory;<br /> }<br />}<br /></code></pre><br /><br />E para realizar o acesso, basta chama-la da seguinte forma:<br /><br /><pre><code><br />public class UserDaoImpl implements UserDao {<br /><br /> private Session session;<br /><br /> public void salvar(User user) {<br /> session = HibernateUtil.getSessionFactory().openSession();<br /> session.beginTransaction();<br /> session.save(user);<br /> session.getTransaction().commit();<br /> }<br /><br /> public List<User> listar() {<br /> session = HibernateUtil.getSessionFactory().openSession();<br /> session.beginTransaction();<br /> List<User> userList = session.createQuery("from User").list();<br /> session.getTransaction().commit();<br /> return userList;<br /> }<br /></code></pre><br /><br /><br />E então resta apenas utilizar de forma simples:<br /><br /><pre><code><br /> User c1 = new User();<br /> c1.setNome("Raul Seixas"); <br /><br /> User c2 = new User();<br /> c2.setNome("Bruce Dickinson");<br /><br /> UserDao clienteDAO = new UserDaoImpl();<br /> clienteDAO.salvar(c1);<br /> clienteDAO.salvar(c2);<br /></code></pre>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-40113426075879993852009-04-02T17:05:00.000-07:002009-04-02T17:54:27.774-07:00Utilizando @SequenceGenerator do hibernate com o FirebirdPara utilizar Sequence do firebird, basta criar o generator no banco de dados:<br /><br /><code>"CREATE SEQUENCE GEN_USUARIO_ID;"</code><br /><br />E depois disso, utilizar este nome na entidade, mapeando da seguinte forma:<br /><br /><pre><code><br />import javax.persistence.Column;<br />import javax.persistence.Entity;<br />import javax.persistence.GeneratedValue;<br />import javax.persistence.GenerationType;<br />import javax.persistence.Id;<br />import javax.persistence.SequenceGenerator;<br />import javax.persistence.Table;<br /><br />@Entity<br />@SequenceGenerator(name = "INC_USUARIO", sequenceName = "GEN_USUARIO_ID")<br />@Table(name = "usuario")<br />public class User {<br /><br /> @Id<br /> @GeneratedValue(strategy = GenerationType.AUTO, generator = "INC_USUARIO")<br /> private Long id;<br /><br /> @Column<br /> private String nome;<br /></code></pre><br /><br />E o mapeamento do arquivo hibernate.cfg.xml fica normal.<br /><br /><pre><code><br /><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><br /><hibernate-configuration><br /> <session-factory name="Hibernate" ><br /> <!-- Database connection settings --><br /> <property name="connection.driver_class">org.firebirdsql.jdbc.FBDriver</property><br /> <property name="connection.url">jdbc:firebirdsql:localhost/3050:E:\Desenv\Base\base.fdb</property><br /> <property name="connection.username">sysdba</property><br /> <property name="connection.password">masterkey</property><br /> <!-- JDBC connection pool (use the built-in) --><br /> <property name="connection.pool_size">1</property><br /> <!-- SQL dialect --><br /> <property name="dialect">org.hibernate.dialect.FirebirdDialect</property><br /> <!-- Enable Hibernate's automatic session context management --><br /> <property name="current_session_context_class">thread</property><br /> <!-- Disable the second-level cache --><br /> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property><br /> <!-- Echo all executed SQL to stdout --><br /> <property name="show_sql">true</property><br /> <br /> <!-- property name="hibernate.hbm2ddl.auto">create</property> --><br /><br /> <mapping class="br.com.viartes.entities.User" /><br /> </session-factory><br /></hibernate-configuration><br /></code></pre>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com4tag:blogger.com,1999:blog-8893304893244931783.post-43046270151539858572007-09-28T09:27:00.000-07:002007-09-28T09:49:41.335-07:00Abrir paginas com AjaxNavegação em uma pagina JSF, onde um componente ira receber dentro dele a pagina de se deseja abrir:<br /><pre><br /><code><br /><af:commandLink actionListener="#{backing.funcao}"<br /> styleClass="textoSubMenu" <br /> id="LinkTeste" <br /> partialSubmit="true" <br /> onclick= "javascript:setaValor('../site/paginaTeste.jspx', <br /> 'descricao');"><br /> <h:outputText value="#{msg.subMenuControladoria}"/><br /></af:commandLink><br /></code><br /></pre><br />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). <br /><br />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.<br /><pre><br /><code><br /> function getXmlHttpRequestObject() {<br /> if (window.XMLHttpRequest) {<br /> return new XMLHttpRequest(); //Not IE<br /> } else if (window.ActiveXObject) {<br /> return new ActiveXObject("Microsoft.XMLHTTP"); //IE<br /> } else {<br /> alert("Seu navegador não suporta essa navegação. Por favor Atualize!");<br /> }<br /> }<br /> var receiveReq = getXmlHttpRequestObject();<br /> var idcomp;<br /> //Initiate the asyncronous request.<br /><br /> function setaValor(pagina , id ) {<br /> //Deixa visivel a imagem e esconde o componente até ser carregado <br /> document.getElementById(id).style.visibility = "hidden";<br /> document.getElementById("loading").style.visibility = "visible";<br /> if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {<br /> receiveReq.open("GET", pagina, true);<br /> idcomp = id;<br /> receiveReq.onreadystatechange = setar;<br /> receiveReq.send(null);<br /> }<br /> }<br /><br /> function setar() {<br /> if (receiveReq.readyState == 4) {<br /> //esconde a imagem <br /> document.getElementById("loading").style.visibility = "hidden"; <br /> //Joga a pagina requisitada para dentro do componente<br /> document.getElementById(idcomp).innerHTML = <br /> receiveReq.responseText;<br /> //Deixa visivel o componente carregado<br /> document.getElementById(idcomp).style.visibility = "visible";<br /> }<br /> }<br /></code><br /></pre><br />Esse javascript ainda altera a propriedade visibility de um componente de id = loading:<br /><pre><br /><code><br /> <h:graphicImage url="/Imagens/loading.gif" id="loading" styleClass="figLoading"/><br /></code><br /></pre><br />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).<br /><br />Depois de carregado e mostrado pelo JavaScript, este é o componente que recebe a pagina que foi carregada:<br /><pre><br /><code><br /> <h:form styleClass="formDescSMenu" id="descricao"></h:form> <br /></code><br /></pre>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com2tag:blogger.com,1999:blog-8893304893244931783.post-12695836201945461542007-09-28T09:22:00.000-07:002007-09-28T09:51:22.102-07:00Grupo de JSF oficial do Brasil!Um grupo internacional da língua portuguesa para discussão de conceitos e tecnologias Web como <a href="http://groups.google.com/group/javasf">JavaServer Faces</a>, RIA, patterns e ferramentas de desenvolvimento. <br /><br /><a href="http://groups.google.com/group/javasf">Grupo de JSF</a>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-64861264405949174152007-09-10T11:22:00.000-07:002007-09-10T11:38:55.243-07:00PartialRefresh e Partialtriggers para componentes ADFPara que serve?<br />Atualizar componentes sem que seja preciso atualizar a pagina.<br /><br />PartialRefresh<br />Atualizar um componente setando novas configurações ou opções a ele, dizendo apenas qual o componente a ser atualizado<br /><pre><code>/**<br />* Faz com que o componente passado por parâmentro seja<br />* atualizado na tela<br />* @param uic componente a ser atualizado<br />*/<br />private void doPartialRefresh(UIComponent uic) {<br />AdfFacesContext adfctx = AdfFacesContext.getCurrentInstance();<br />adfctx.addPartialTarget(uic);<br />}<br /></code></pre><br />Partialtriggers<br />Define que um componente será reatualizado quando algum outro por alterado<br /><pre><code><br />af:selectonechoice label="Teste"<br />required="true"<br />binding="#{backing_teste.oneChoice}"<br />partialtriggers="IdComponente"<br />id="selectOneChoice"<br />/af:selectonechoice<br /></code></pre><br /><br />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 trueAnonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-26824806420264909142007-08-29T11:06:00.001-07:002007-09-26T07:25:04.314-07:00Ranking Poker<iframe src="http://spreadsheets.google.com/pub?key=pBaZQ3kMJ4pIB6wzUrXqiEA&output=html&widget=true" frameborder="0" width="650" height="700"></iframe>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-25808614522127924682007-08-21T05:32:00.000-07:002007-08-21T06:15:21.367-07:00Mascara JavaScriptExistem 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.<br /><br />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.<br /><pre><br /><code><br />function aplicaMascara(campo,event, mascara) {<br /> if (event.keyCode >= 46||event.keyCode == 8){ <br /> position = campo.selectionStart;<br /> valor = campo.value;<br /> v = event.keyCode;<br /> m = mascara.charAt(position);<br /> c = campo.value.charAt(position); <br /> //Verifica se a mascara é para numero e se o valor inserido tb é <br /> if (((m == '9')||(m == '0'))&&((event.keyCode >= 48 && event.keyCode <= 57) <br /> ||(event.keyCode >= 96 && event.keyCode <= 105))) { <br /> if (c != '') {<br /> valor = atualizaValor(valor,position,'');<br /> document.getElementById(campo.id).value = valor;<br /> setCursorPosition(campo,position,position);<br /> } <br /> //Verifica se a mascara é para texto e se o valor inserido tb é <br /> } else if ((m == '#')&&(event.keyCode >= 65 && event.keyCode <= 90)) { <br /> if (c != '') {<br /> valor = atualizaValor(valor,position,'');<br /> document.getElementById(campo.id).value = valor;<br /> setCursorPosition(campo,position,position);<br /> } <br /> } else { <br /> if (m=='') {<br /> return false;<br /> //Trata o valor caso o usuario pressione DEL, para nao sair da estrutura<br /> } else if (event.keyCode == 46) {<br /> for (del = position ;del < campo.selectionEnd ; del ++) {<br /> valor = atualizaValor(valor,del,' ')<br /> }<br /> document.getElementById(campo.id).value = valor;<br /> setCursorPosition(campo,position,position);<br /> return false;<br /> //Trata o valor caso o usuario pressione Backspace, para nao sair da <br /> // estrutura<br /> } else if(event.keyCode == 8){<br /> valor = atualizaValor(valor,position-1,' ');<br /> document.getElementById(campo.id).value = valor;<br /> setCursorPosition(campo,position-1,position-1);<br /> return false;<br /> } else if ((m != '0')&&(m != '9')&&(m != '#')) {<br /> //insere o saparador ou digito especial no texto<br /> valor = atualizaValor(valor,position,m);<br /> //verifica se o proximo campo da mascara atende as caracteristicas <br /> // do valor inserido<br /> if (((mascara.charAt(position+1) == '9')<br /> ||(mascara.charAt(position+1) == '0'))<br /> &&((event.keyCode >= 48 && event.keyCode <= 57) <br /> ||(event.keyCode >= 96 && event.keyCode <= 105))) { <br /> if (c != '') {<br /> valor = atualizaValor(valor,position+1,'');<br /> document.getElementById(campo.id).value = valor;<br /> setCursorPosition(campo,position+1,position+1);<br /> } <br /> } else if ((mascara.charAt(position+1) == '#')<br /> &&(event.keyCode >= 65 && event.keyCode <= 90)) { <br /> if (c != '') {<br /> valor = atualizaValor(valor,position+1,'');<br /> document.getElementById(campo.id).value = valor;<br /> setCursorPosition(campo,position+1,position+1);<br /> } <br /> } else {<br /> return false;<br /> } <br /> } else {<br /> return false;<br /> }<br /> }<br /> document.getElementById(campo.id).value = valor; <br /> }<br />} <br /><br />//Recebe um texto e substitui o valor passado na posicao indicada<br />function atualizaValor(texto,posicao,valor){<br /> var novoTexto = "";<br /> for (i = 0; i <= texto.length; i++) {<br /> if (i == posicao) {<br /> novoTexto = novoTexto + valor; <br /> } else {<br /> v = texto.charAt(i);<br /> novoTexto = novoTexto + v; <br /> }<br /> }<br /> return novoTexto;<br />}<br /><br />//Seta o cursor para a posicao desejada no campo<br />function setCursorPosition(oInput,oStart,oEnd) {<br /> if( oInput.setSelectionRange ) {<br /> oInput.setSelectionRange(oStart,oEnd);<br /> } else if( oInput.createTextRange ) {<br /> var range = oInput.createTextRange();<br /> range.collapse(true);<br /> range.moveEnd('character',oEnd);<br /> range.moveStart('character',oStart);<br /> range.select();<br /> }<br />}<br /></code><br /></pre><br /><br />Para utilizar a mascara, basta chama-la desta forma:<br />onkeydown="return aplicaMascara(this,event,'99/99/9999 99:99');"<br /><br />Caso seja passado "9" ou "0", ela vai aceitar apenas numeros e se for "#" aceitara apenas letras.Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-67006684930280235842007-07-30T18:42:00.000-07:002009-06-09T17:09:50.644-07:00Skin de componentes ADFPara 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.<br /><br />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.<br /><br />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.<br /><br />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.<br />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.<br /><br />Nesse link pode ser obtido um skin padrao: <a href="http://www.oracle.com/technology/products/jdev/101/howtos/adfskins/adffaces-skin.war">Oracle Skin </a><br /><br />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:<br /><br /><pre><br /><code><br /><?xml version="1.0" encoding="ISO-8859-1"?><br /><br /><skins xmlns="http://xmlns.oracle.com/adf/view/faces/skin"><br /> <skin><br /> <id>silver.desktop</id><br /> <family>silver</family><br /> <render-kit-id>oracle.adf.desktop</render-kit-id><br /> <style-sheet-name>skins/silver/silver.css</style-sheet-name><br /> </skin><br /> <br /></skins><br /></code><br /></pre><br /><br />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<br /><br /><?xml version="1.0" encoding="windows-1252"?><br /><adf-faces-config xmlns="http://xmlns.oracle.com/adf/view/faces/config"><br /><br /> <skin-family>silver</skin-family><br /><br /></adf-faces-config><br /><br />E com isso a aplicação ja estara com um novo visual, e sendo possivel deixar essa opção selecionavel pelo usuario.<br /><br />Podem ser encontradas maiores explicaçoes em<a href="http://www.oracle.com/technology/products/jdev/101/howtos/adfskins/index.html">: Oracle ADF</a>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-1875503835819565762007-06-29T09:43:00.000-07:002007-06-29T09:47:40.342-07:00Além do Cidadão KaneAlé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.<br /><br />- 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.<br /><br />- Apoio a ditadura militar e censura a artistas, como Chico Buarque que por anos foi proibido de ter seu nome divulgado na emissora.<br /><br />- Criação de mitos culturalmente questionáveis, veiculação de notícias frívolas e alienação humana.<br /><br />- Depoimentos de Leonel Brizola, Chico Buarque, Washington Olivetto, entre outros jornalistas, historiadores e estudiosos da sociedade brasileira.<br /><br /><br /><br />"Todo brasileiro deveria ver Além do Cidadão Kane"<br /><br /><embed style="width:400px; height:326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=-570340003958234038&hl=en" flashvars=""></embed>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-43454477556034120982007-06-21T15:21:00.000-07:002007-06-29T09:52:25.405-07:00Google mapsSimplesmente demais isso... quem sabe um dia tenha essas opçoes para cidades brasileiras... he he<br /><br /><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/91wuBqlny50"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/91wuBqlny50" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></embed></object>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-61133906660372107082007-06-20T14:01:00.000-07:002007-06-21T15:25:29.130-07:00Valores de Sessao com DWRBuscando valores de objetos na sessão, via dwr, e jogando valores em um campo na tela diretamente do java:<br /><br /><pre><pre><br /><code><br />import org.directwebremoting.WebContext;<br />import org.directwebremoting.WebContextFactory;<br />import org.directwebremoting.proxy.dwr.Util;<br /><br /> /**<br /> * pega o WebContex - classe do DWR<br /> * objeto faz a ligacao com o servlet<br /> *<br /> * @return objeto WebContext<br /> */<br /> private WebContext getWebContext() {<br /> return WebContextFactory.get(); <br /> }<br /><br /> /**<br /> * Pega o objeto usuário que está na sessão ativa<br /> *<br /> * @return Usuário<br /> */<br /> private OBJETO getOBJETO() {<br /> return (OBJETO) this.getWebContext().getSession().getAttribute("OBJETO");<br /> }<br /><br /> /**<br /> * pega o objeto Útil - classe do DWR que permite<br /> * operacoes com os elementos HTML<br /> *<br /> * @return objeto Util<br /> */<br /> private Util getUtilThis() {<br /> return new Util(getWebContext().getScriptSession());<br /> }<br /><br /> //Aqui passa um valor e um campo da tela e via dwr<br /> // ele seta o valor para o campo na tela<br /> private void setarValor(String valor,String nomeCampo){<br />this.getUtilThis().setValue(nomeCampo, String.valueOf(valor));<br /> }<br /><br /></code><br /></pre><br /></pre>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.Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-51823784760085934132007-06-20T13:45:00.000-07:002007-06-21T05:05:10.567-07:00Acesso a banco Oracle, Firebird, SQL Server via JavaUm codigo simples e rapido para conectar em 3 bancos de dados:<br />Oracle, Firebird, SQL Server<br /><br />Estou usando os seguintes drivers<br />Oracle: ojdbc14.jar<br />SQL Server: jtds-1.2.jar<br />Firebird: jaybird-full-2.0.1.jar<br /><br />Todos esses podem ser facilmente encontrados em uma procura rapida no google (ou generico)<br /><br /><pre><br /><code><br />import java.sql.Connection;<br />import java.sql.DriverManager;<br />import java.sql.SQLException;<br /><br />public class OracleRM {<br /> public OracleRM() {<br /> }<br /><br /> private static final String url =<br /> //Oracle:<br /> // "jdbc:oracle:thin:@ENDERECO_DO_SEU_SERVIDOR:PORTA:BASE_DE_DADOS";<br /> //SQL Server 1433 é a porta padrao<br /> // "jdbc:jtds:sqlserver://</code><code>ENDERECO_DO_SEU_SERVIDOR</code><code>:1433/</code><code>BASE_DE_DADOS</code><code>";<br /> //Firebird:<br /> // "jdbc:firebirdsql://ENDERECO_DO_SEU_SERVIDOR/CAMINHO_BASE_DE_DADOS";<br /><br /> private static final String driver =<br /> //Oracle:<br /> // "oracle.jdbc.driver.OracleDriver";<br /> //SQL Server<br /> // "net.sourceforge.jtds.jdbc.Driver";<br /> //Firebird:<br /> // "org.firebirdsql.jdbc.FBDriver";<br /><br /> private static final String usuario = "usuario";<br /> private static final String senha = "senha";<br /> <br /> public Connection getConnection() throws SQLException {<br /> try {<br /> Class.forName(driver);<br /> return DriverManager.getConnection(url, usuario, senha);<br /> } catch (Exception e) {<br /> e.printStackTrace();<br /> return null;<br /> }<br /> }<br /><br />}<br /></code><br /></pre>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-49728473273019484702007-05-03T03:55:00.000-07:002007-05-03T05:13:46.805-07:00Ajax com DWREsse é um tutorial simples, de como usar e implementar o DWR para obter funcionalidades em Ajax.<br /><br />Documentaçao melhor pode ser encontrada no site: <a href="http://getahead.org/dwr">DWR</a><br /><br />Continuando...<br /><br />Primeiro é preciso baixar o dwr.jar na pagina acima, e adicionar a sua aplicaçao.<br /><br />Em seguida, no seu web.xml é necessario incluir estas linhas, para configuraçao do servlet do dwr:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Fh5edVSYHIQ/RjnNUBdjJ8I/AAAAAAAAABg/kjX4OuUh31c/s1600-h/web.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_Fh5edVSYHIQ/RjnNUBdjJ8I/AAAAAAAAABg/kjX4OuUh31c/s400/web.JPG" alt="" id="BLOGGER_PHOTO_ID_5060301400200914882" border="0" /></a>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.<br /><br />Segue basicamente este padrao:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Fh5edVSYHIQ/RjnFvBdjJ6I/AAAAAAAAABQ/vJzrMuSjn9k/s1600-h/configdwr.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_Fh5edVSYHIQ/RjnFvBdjJ6I/AAAAAAAAABQ/vJzrMuSjn9k/s400/configdwr.JPG" alt="" id="BLOGGER_PHOTO_ID_5060293067964360610" border="0" /></a>Na imagem:<br />create creator="new" javascript="Index"<br /> O tipo de contrutor e o apelido que sera usado no javascript<br />param name="class" value="ajax.backing.Index"<br /> Aqui é especificado o caminho onde se encontra a classe.<br /><br />Depois de configurado esses dois arquivos, rode sua aplicaçao e acesse o caminho:<br />aplicaçao/dwr<br /><br />Nesse caminho, será listado as classes que foram mapeadas:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Fh5edVSYHIQ/RjnNPhdjJ7I/AAAAAAAAABY/ErSaegi9yOw/s1600-h/dwr.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_Fh5edVSYHIQ/RjnNPhdjJ7I/AAAAAAAAABY/ErSaegi9yOw/s400/dwr.JPG" alt="" id="BLOGGER_PHOTO_ID_5060301322891503538" border="0" /></a>Clicando em uma delas:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_Fh5edVSYHIQ/RjnNxxdjJ9I/AAAAAAAAABo/rVcY29Ln7Xw/s1600-h/scripts.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_Fh5edVSYHIQ/RjnNxxdjJ9I/AAAAAAAAABo/rVcY29Ln7Xw/s400/scripts.JPG" alt="" id="BLOGGER_PHOTO_ID_5060301911302023122" border="0" /></a><br />É 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.<br /><br />Agora falta apenas copiar essas tags e incluir na sua pagina.<br /><br />Entao só é preciso usar as funcoes, e poder ser como esse exemplo simples:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Fh5edVSYHIQ/RjnPwRdjJ-I/AAAAAAAAABw/NO7ayOFM4G0/s1600-h/html.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_Fh5edVSYHIQ/RjnPwRdjJ-I/AAAAAAAAABw/NO7ayOFM4G0/s400/html.JPG" alt="" id="BLOGGER_PHOTO_ID_5060304084555474914" border="0" /></a>Que chama :<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_Fh5edVSYHIQ/RjnRhxdjKAI/AAAAAAAAACA/b3D7zH1saHI/s1600-h/funcoes.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_Fh5edVSYHIQ/RjnRhxdjKAI/AAAAAAAAACA/b3D7zH1saHI/s400/funcoes.JPG" alt="" id="BLOGGER_PHOTO_ID_5060306034470627330" border="0" /></a>E esta... chama a classe mapeada anteriormente:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Fh5edVSYHIQ/RjnRlRdjKBI/AAAAAAAAACI/5Fa8ikCvi2g/s1600-h/java.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_Fh5edVSYHIQ/RjnRlRdjKBI/AAAAAAAAACI/5Fa8ikCvi2g/s400/java.JPG" alt="" id="BLOGGER_PHOTO_ID_5060306094600169490" border="0" /></a><br />Feito isso, esta pronto uma implementação basica do DWR.Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com2tag:blogger.com,1999:blog-8893304893244931783.post-62618332862224482292007-05-02T16:29:00.000-07:002007-05-02T16:32:49.878-07:00Adobe Labs - Adobe Digital EditionsExelente ferramenta para visualizaçao de arquivos .pdf, mas disponivel ainda apenas versao beta.<br /><br /><a href="http://labs.adobe.com/technologies/digitaleditions/install/">Adobe Labs - Adobe Digital Editions Beta Download and Install</a>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-51003616360753488502007-04-27T11:26:00.000-07:002007-05-02T16:32:25.741-07:00Meta 2007 - SCJP<table border="0" cellpadding="0" cellspacing="1" width="100%"><tbody><tr><td><b>Descrição do Curso (CX-310-055)</b> <img src="https://tracking.mlsat02.de/sunedustore/action.php?act=prdetails&prcode=CX-310-055&prcode=CX-310-055&prdesc=Sun+Certified+Programmer+for+the+Java+2+Platform%2C+Standard+Edition+5.0+%28CX-310-055%29&store=pt_BR" border="0" height="1" width="1" /> </td> </tr> <tr> <td> <h3><b>Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055)</b></h3> </td> </tr> <tr> <td><br /></td> </tr> <tr> <td><br /> </td> </tr> </tbody></table> <table border="0" cellpadding="0" cellspacing="1" width="100%"> <tbody><tr> <td> <div>Programação</div> </td> </tr> <tr> <td> <div>As datas dos cursos dependem do número de participantes. </div> </td> </tr> </tbody></table> <a name="1123449fde0bcec7_1123446f84532e92_desc"> </a><script><!-- D(["mb","\n\t\n\n\t\n\n\t\n\t\t\u003ctbody\>\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cimg src\u003d\"https://www.suntrainingcatalogue.com/eduserv/im/a.gif\" alt\u003d\"\" height\u003d\"10\" width\u003d\"20\"\>\n\t\t\t\u003c/td\>\u003ctd\>\n\t\t\u003cbr\>\u003c/td\>\u003c/tr\>\n\t\t\u003ctr\>\n\t\t\t\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cb\>Overview\u003c/b\>\u003c/td\>\n\t\t\u003c/tr\>\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cp\>\nO 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 \n5.0.\n\u003c/p\>\n\n\u003cp\>\nEste simulado Sun ePractice é composto de 210 questões.\n\u003c/p\>\u003c/td\>\n\t\t\u003c/tr\>\n\t\n\n\t\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cimg src\u003d\"https://www.suntrainingcatalogue.com/eduserv/im/a.gif\" alt\u003d\"\" height\u003d\"10\" width\u003d\"20\"\>\n\t\t\t\u003c/td\>\u003ctd\>\n\t\t\u003cbr\>\u003c/td\>\u003c/tr\>\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\n\u003ctable border\u003d\"0\" cellpadding\u003d\"0\" cellspacing\u003d\"0\" width\u003d\"100%\"\>\n\u003ctbody\>\u003ctr\>\u003ctd\>\u003cspan\> \u003c/span\>\u003c/td\>\u003c/tr\>\n\u003c/tbody\>\u003c/table\>\n\u003cspan\> \u003c/span\>\u003cbr\>\n\n\u003cb\>Detalhes\u003c/b\>\u003cbr\> \u003cul\>\u003cli\>Delivered at: Authorized Worldwide Prometric Testing Centers\u003c/li\>\u003cli\>Prerequisites: None\u003c/li\>\u003cli\>Other exams/assignments required for this certification: Nenhum\u003c/li\>\u003cli\>Exam type: Múltipla escolha e método "arrastar e soltar"\n\u003c/li\>\u003cli\>Number of questions: 72\u003c/li\>\u003cli\>Pass score: 59% (43 de 72 questões)\u003c/li\>\u003cli\>Time limit: 175 minutos\u003c/li\>\u003c/ul\>\u003c/td\>\n\t\t\u003c/tr\>\n\t\n\n\t\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cimg src\u003d\"https://www.suntrainingcatalogue.com/eduserv/im/a.gif\" alt\u003d\"\" height\u003d\"10\" width\u003d\"20\"\>\n\t\t\t\u003c/td\>\u003ctd\>\n\t\t\u003cbr\>\u003c/td\>\u003c/tr\>\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\n\u003ctable border\u003d\"0\" cellpadding\u003d\"0\" cellspacing\u003d\"0\" width\u003d\"100%\"\>\n\u003ctbody\>\u003ctr\>\u003ctd\>\u003cspan\> \u003c/span\>\u003c/td\>\u003c/tr\>\n\u003c/tbody\>\u003c/table\>\n\u003cspan\> \u003c/span\>\u003cbr\>\n\n\u003cb\>Idiomas\u003c/b\>\u003cbr\> \u003cul\>\n\u003cli\>English\u003c/li\>\n\u003cli\>Japanese\u003c/li\>\n\u003cli\>Chinese (Traditional)\u003c/li\>\n\u003cli\>Chinese (Simplified)\u003c/li\>\n\u003cli\>German\u003c/li\>\n\u003cli\>Korean\u003c/li\>\n\u003cli\>Portuguese (Brazilian)\u003c/li\>\n\u003cli\>Spanish\u003c/li\>\n\u003c/ul\>",1] ); //--></script> <table border="0" cellpadding="0" cellspacing="1" width="100%"><tbody><tr> <td colspan="2"><img src="https://www.suntrainingcatalogue.com/eduserv/im/a.gif" alt="" height="10" width="20" /> </td><td> <br /></td></tr> <tr> <td colspan="2"><b>Overview</b></td> </tr> <tr> <td colspan="2"><p> 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. </p> <p> Este simulado Sun ePractice é composto de 210 questões. </p></td> </tr> <tr> <td colspan="2"><img src="https://www.suntrainingcatalogue.com/eduserv/im/a.gif" alt="" height="10" width="20" /> </td><td> <br /></td></tr> <tr> <td colspan="2"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr><td><span> </span><br /></td></tr> </tbody></table> <span> </span><br /><b>Detalhes</b><br /><ul><li>Delivered at: Authorized Worldwide Prometric Testing Centers</li><li>Prerequisites: None</li><li>Other exams/assignments required for this certification: Nenhum</li><li>Exam type: Múltipla escolha e método "arrastar e soltar" </li><li>Number of questions: 72</li><li>Pass score: 59% (43 de 72 questões)</li><li>Time limit: 175 minutos</li></ul></td> </tr> <tr> <td colspan="2"><img src="https://www.suntrainingcatalogue.com/eduserv/im/a.gif" alt="" height="10" width="20" /> </td><td> <br /></td></tr> <tr> <td colspan="2"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr><td><span> </span><br /></td></tr> </tbody></table> <span> </span><br /><b>Idiomas</b><br /><ul><li>English</li><li>Japanese</li><li>Chinese (Traditional)</li><li>Chinese (Simplified)</li><li>German</li><li>Korean</li><li>Portuguese (Brazilian)</li><li>Spanish</li></ul><script><!-- D(["mb","\u003c/td\>\n\t\t\u003c/tr\>\n\t\n\n\t\n\n\t\n\t\t\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cb\>Pré-requisitos\u003c/b\>\u003c/td\>\n\t\t\u003c/tr\>\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>None\u003c/td\>\n\t\t\u003c/tr\>\n\t\n\n\t\n\n\t\n\n\t\n\t\t\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cspan\> \u003c/span\>\u003cbr\>\n\n\u003ch5\>Objetivos do Exame\u003c/h5\>\n\u003cbr\>\n\u003cb\>Seção 1: Declarações, Inicialização e Definição de Escopo\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Desenvolver código que declare classes (inclusive classes abstratas e todas as formas de classes aninhadas), interfaces e enumerações e que inclua o uso apropriado de instruções de pacote e de importação (inclusive importações estáticas).\n\u003c/li\>\n\u003cli\>Desenvolver código que declare uma interface. Desenvolver código que implemente ou estenda uma ou mais interfaces. Desenvolver código que declare uma classe abstrata. Desenvolver código que estenda uma classe abstrata.\n\u003c/li\>\n\u003cli\>Desenvolver código que declare, inicialize e use primitivas, matrizes, enumerações e objetos como variáveis estáticas, locais e de instância. Além disso, usar identificadores legais para nomes de variáveis.\u003c/li\>\n\u003cli\>Desenvolver código que declare métodos estáticos e não estáticos e, se for o caso, usar nomes de métodos que sigam os padrões de nomenclatura do JavaBeans. Além disso, desenvolver código que declare e use uma lista de argumentos de comprimento variável.\n\u003c/li\>\n\u003cli\>Com base em um exemplo de código, determinar se um método está substituindo corretamente ou sobrecarregando outro método e identificar valores de retornos legais (inclusive retornos co-variantes) para o método.\u003c/li\>\n\u003cli\>Com base em um conjunto de classes e superclasses, desenvolver construtores para uma ou mais dessas classes. Com base em uma declaração de classe, determinar se um construtor padrão será criado e, caso afirmativo, determinar o comportamento desse construtor. Com base em uma listagem de classes aninhadas ou não aninhadas, escrever código para criar uma instância da classe.\n\u003c/li\>\n\u003c/ul\>\u003cbr\>\n\u003cb\>Seção 2: Controle de Fluxo\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Desenvolver código que implemente uma instrução if ou switch e identificar tipos de argumentos legais para essas instruções.\u003c/li\>\n\u003cli\>",1] ); //--></script></td> </tr> <tr> <td colspan="2"><b>Pré-requisitos</b></td> </tr> <tr> <td colspan="2">None</td> </tr> <tr> <td colspan="2"><span> </span><br /><h5>Objetivos do Exame</h5><br /><b>Seção 1: Declarações, Inicialização e Definição de Escopo</b><br /><ul><li>Desenvolver código que declare classes (inclusive classes abstratas e todas as formas de classes aninhadas), interfaces e enumerações e que inclua o uso apropriado de instruções de pacote e de importação (inclusive importações estáticas). </li><li>Desenvolver código que declare uma interface. Desenvolver código que implemente ou estenda uma ou mais interfaces. Desenvolver código que declare uma classe abstrata. Desenvolver código que estenda uma classe abstrata. </li><li>Desenvolver código que declare, inicialize e use primitivas, matrizes, enumerações e objetos como variáveis estáticas, locais e de instância. Além disso, usar identificadores legais para nomes de variáveis.</li><li>Desenvolver código que declare métodos estáticos e não estáticos e, se for o caso, usar nomes de métodos que sigam os padrões de nomenclatura do JavaBeans. Além disso, desenvolver código que declare e use uma lista de argumentos de comprimento variável. </li><li>Com base em um exemplo de código, determinar se um método está substituindo corretamente ou sobrecarregando outro método e identificar valores de retornos legais (inclusive retornos co-variantes) para o método.</li><li>Com base em um conjunto de classes e superclasses, desenvolver construtores para uma ou mais dessas classes. Com base em uma declaração de classe, determinar se um construtor padrão será criado e, caso afirmativo, determinar o comportamento desse construtor. Com base em uma listagem de classes aninhadas ou não aninhadas, escrever código para criar uma instância da classe. </li></ul><br /><b>Seção 2: Controle de Fluxo</b><br /><ul><li>Desenvolver código que implemente uma instrução if ou switch e identificar tipos de argumentos legais para essas instruções.</li><li><script><!-- D(["mb","Desenvolver código que implemente todas as formas de loops e iteradores, incluindo o uso de for, for loop aprimorado (for-each), do, while, labels, break e continue, e explicar os valores assumidos pelas variáveis de contador de loop durante e após a execução do loop.\n\u003c/li\>\n\u003cli\>Desenvolver código que faça uso de declarações e distinguir os usos de declarações apropriados dos usos inapropriados.\u003c/li\>\n\u003cli\>Desenvolver código que faça uso de exceções e de cláusulas de tratamento de exceções (try, catch, finally) e que declare métodos e métodos de substituição que gerem exceções.\u003c/li\>\n\u003cli\>Reconhecer o efeito de uma exceção que surge em um ponto específico de um fragmento de código. Nota: a exceção pode ser uma exceção de tempo de execução, uma exceção verificada ou um erro.\u003c/li\>\n\u003cli\>Reconhecer situações que resultarão na geração de um dos seguintes itens: ArrayIndexOutOfBoundsException, ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError ou NoClassDefFoundError. Compreender quais desses itens são gerados pela máquina virtual e reconhecer as situações nas quais outros itens devem ser gerados por programação.\n\u003c/li\>\n\u003c/ul\>\u003cbr\>\n\u003cb\>Seção 3: Conteúdo da API\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Desenvolver código que use as classes wrapper de primitivas (como Boolean, Character, Double, Integer etc.) e/ou autoboxing e unboxing. Analisar as diferenças entre as classes String, StringBuilder e StringBuffer.\u003c/li\>\n\n\n\u003cli\>Com base em um cenário de navegação em sistemas de arquivos, leitura de arquivos ou gravação em arquivos, desenvolver a solução correta usando as seguintes classes (às vezes, combinadas) no \u003ca href\u003d\"http://java.io\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>\njava.io\n\u003c/a\>: BufferedReader, BufferedWriter, File, FileReader, FileWriter e PrintWriter.\u003c/li\>\n\u003cli\>Desenvolver código que serialize e/ou desserialize objetos usando as seguintes interfaces de programação de aplicativos (API - Application Programming Interface) do pacote ",1] ); //--></script>Desenvolver código que implemente todas as formas de loops e iteradores, incluindo o uso de for, for loop aprimorado (for-each), do, while, labels, break e continue, e explicar os valores assumidos pelas variáveis de contador de loop durante e após a execução do loop. </li><li>Desenvolver código que faça uso de declarações e distinguir os usos de declarações apropriados dos usos inapropriados.</li><li>Desenvolver código que faça uso de exceções e de cláusulas de tratamento de exceções (try, catch, finally) e que declare métodos e métodos de substituição que gerem exceções.</li><li>Reconhecer o efeito de uma exceção que surge em um ponto específico de um fragmento de código. Nota: a exceção pode ser uma exceção de tempo de execução, uma exceção verificada ou um erro.</li><li>Reconhecer situações que resultarão na geração de um dos seguintes itens: ArrayIndexOutOfBoundsException, ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError ou NoClassDefFoundError. Compreender quais desses itens são gerados pela máquina virtual e reconhecer as situações nas quais outros itens devem ser gerados por programação. </li></ul><br /><b>Seção 3: Conteúdo da API</b><br /><ul><li>Desenvolver código que use as classes wrapper de primitivas (como Boolean, Character, Double, Integer etc.) e/ou autoboxing e unboxing. Analisar as diferenças entre as classes String, StringBuilder e StringBuffer.</li><li>Com base em um cenário de navegação em sistemas de arquivos, leitura de arquivos ou gravação em arquivos, desenvolver a solução correta usando as seguintes classes (às vezes, combinadas) no java.io: BufferedReader, BufferedWriter, File, FileReader, FileWriter e PrintWriter.</li><li>Desenvolver código que serialize e/ou desserialize objetos usando as seguintes interfaces de programação de aplicativos (API - Application Programming Interface) do pacote <script><!-- D(["mb","\u003ca href\u003d\"http://java.io\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>\njava.io\u003c/a\>: DataInputStream, DataOutputStream, FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream e Serializable.\n\u003c/li\>\n\u003cli\>Usar APIs J2SE padrão no pacote java.text para formatar ou analisar datas, números e valores monetários corretamente para uma localidade específica e, com base em um cenário, determinar os métodos apropriados se você desejar usar a localidade padrão ou uma localidade específica. Descrever o objetivo e o uso da classe \njava.util.Locale.\u003c/li\>\n\u003cli\>Escrever código que use APIs J2SE padrão nos pacotes java.util e java.util.regex para formatar ou analisar strings ou fluxos. Para strings, escrever código que use as classes Pattern e Matcher e o método String.split\n\n. Reconhecer e usar padrões de expressões regulares para correspondência (limitados a: . (ponto), * (asterisco), + (sinal de mais), ?, \\d, \\s, \\w, [], ()). O uso de *, + e ? será limitado aos quantificadores vorazes, e o operador de parênteses só será usado como mecanismo de agrupamento, e não para capturar conteúdo durante a correspondência. Para fluxos, escrever código usando as classes Formatter e Scanner e os métodos \nPrintWriter.format/printf. Reconhecer e usar parâmetros de formatação (limitados a %b, %c, %d, %f, %s) em strings de formato.\u003c/li\>\n\u003c/ul\>\u003cbr\>\n\u003cb\>Seção 4: Simultaneidade\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Escrever código para definir, criar instâncias e iniciar novos segmentos usando java.lang.Thread e java.lang.Runnable.\u003c/li\>\n\u003cli\>Reconhecer os estados possíveis de um segmento e identificar maneiras de fazer a transição de um segmento de um estado para outro.\u003c/li\>\n\u003cli\>Com base em um cenário, escrever código que faça uso apropriado do bloqueio de objetos, para proteger variáveis estáticas ou de instâncias contra problemas de acesso simultâneo.\u003c/li\>\n\u003cli\>Com base em um cenário, escrever código que faça uso apropriado de wait, notify notifyAll.\u003c/li\>\n\u003c/ul\>\u003cbr\>\n\u003cb\>Seção 5: Conceitos Orientados a Objetos\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Desenvolver código que implemente encapsulamento rígido, acoplamento flexível e alto nível de coesão nas classes, e descrever os benefícios.",1] ); //--></script>java.io: DataInputStream, DataOutputStream, FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream e Serializable. </li><li>Usar APIs J2SE padrão no pacote java.text para formatar ou analisar datas, números e valores monetários corretamente para uma localidade específica e, com base em um cenário, determinar os métodos apropriados se você desejar usar a localidade padrão ou uma localidade específica. Descrever o objetivo e o uso da classe java.util.Locale.</li><li>Escrever código que use APIs J2SE padrão nos pacotes java.util e java.util.regex para formatar ou analisar strings ou fluxos. Para strings, escrever código que use as classes Pattern e Matcher e o método String.split . Reconhecer e usar padrões de expressões regulares para correspondência (limitados a: . (ponto), * (asterisco), + (sinal de mais), ?, \d, \s, \w, [], ()). O uso de *, + e ? será limitado aos quantificadores vorazes, e o operador de parênteses só será usado como mecanismo de agrupamento, e não para capturar conteúdo durante a correspondência. Para fluxos, escrever código usando as classes Formatter e Scanner e os métodos PrintWriter.format/printf. Reconhecer e usar parâmetros de formatação (limitados a %b, %c, %d, %f, %s) em strings de formato.</li></ul><br /><b>Seção 4: Simultaneidade</b><br /><ul><li>Escrever código para definir, criar instâncias e iniciar novos segmentos usando java.lang.Thread e java.lang.Runnable.</li><li>Reconhecer os estados possíveis de um segmento e identificar maneiras de fazer a transição de um segmento de um estado para outro.</li><li>Com base em um cenário, escrever código que faça uso apropriado do bloqueio de objetos, para proteger variáveis estáticas ou de instâncias contra problemas de acesso simultâneo.</li><li>Com base em um cenário, escrever código que faça uso apropriado de wait, notify notifyAll.</li></ul><br /><b>Seção 5: Conceitos Orientados a Objetos</b><br /><ul><li>Desenvolver código que implemente encapsulamento rígido, acoplamento flexível e alto nível de coesão nas classes, e descrever os benefícios.<script><!-- D(["mb","\u003c/li\>\n\u003cli\>Com base em um cenário, desenvolver código que demonstre o uso do polimorfismo. Além disso, determinar quando a intercalação será necessária e diferenciar os erros de compilação dos erros de tempo de execução relacionados à intercalação de referências de objetos.\n\u003c/li\>\n\u003cli\>Explicar os efeitos dos modificadores na herança com relação a construtores, variáveis estáticas ou de instâncias e métodos estáticos ou de instâncias.\u003c/li\>\n\u003cli\>Com base em um cenário, desenvolver código que declare e/ou invoque métodos substituídos ou sobrecarregados e código que declare e/ou invoque construtores de superclasse, substituídos ou sobrecarregados.\u003c/li\>\n\u003cli\>Desenvolver código que implemente relacionamentos "é-um" e/ou "tem-um".\u003c/li\>\n\u003c/ul\>\u003cbr\>\n\u003cb\>Seção 6: Coleções/Versões Genéricas\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Com base em um cenário de projeto, determinar quais interfaces e/ou classes de coleções devem ser usadas para implementar esse projeto de forma correta, incluindo o uso da interface Comparable.\u003c/li\>\n\u003cli\>Distinguir substituições corretas e incorretas de métodos hashCode e equals correspondentes e explicar a diferença entre \u003d\u003d e o método equals.\u003c/li\>\n\u003cli\>Escrever código que use versões genéricas da API Collections, especialmente as interfaces Set, List e Map e as classes de implementação. Reconhecer as limitações da API Collections não-genérica e como refatorar o código para usar as versões genéricas.\n\u003c/li\>\n\u003cli\>Desenvolver código que faça uso adequado de parâmetros de tipos em variáveis de instâncias, argumentos de métodos, tipos de retornos e declarações de classe/interface, além de escrever métodos genéricos ou métodos que façam uso de tipos de curingas e compreender as semelhanças e as diferenças entre essas duas abordagens.\n\u003c/li\>\n\u003cli\>Usar recursos do pacote java.util para escrever código que manipule uma lista por classificação, executando uma pesquisa binária ou convertendo a lista em uma matriz. Usar recursos do pacote java.util para escrever código que manipule uma matriz por classificação, executando uma pesquisa binária ou convertendo a matriz em uma lista. Usar as interfaces \n",1] ); //--></script></li><li>Com base em um cenário, desenvolver código que demonstre o uso do polimorfismo. Além disso, determinar quando a intercalação será necessária e diferenciar os erros de compilação dos erros de tempo de execução relacionados à intercalação de referências de objetos. </li><li>Explicar os efeitos dos modificadores na herança com relação a construtores, variáveis estáticas ou de instâncias e métodos estáticos ou de instâncias.</li><li>Com base em um cenário, desenvolver código que declare e/ou invoque métodos substituídos ou sobrecarregados e código que declare e/ou invoque construtores de superclasse, substituídos ou sobrecarregados.</li><li>Desenvolver código que implemente relacionamentos "é-um" e/ou "tem-um".</li></ul><br /><b>Seção 6: Coleções/Versões Genéricas</b><br /><ul><li>Com base em um cenário de projeto, determinar quais interfaces e/ou classes de coleções devem ser usadas para implementar esse projeto de forma correta, incluindo o uso da interface Comparable.</li><li>Distinguir substituições corretas e incorretas de métodos hashCode e equals correspondentes e explicar a diferença entre == e o método equals.</li><li>Escrever código que use versões genéricas da API Collections, especialmente as interfaces Set, List e Map e as classes de implementação. Reconhecer as limitações da API Collections não-genérica e como refatorar o código para usar as versões genéricas. </li><li>Desenvolver código que faça uso adequado de parâmetros de tipos em variáveis de instâncias, argumentos de métodos, tipos de retornos e declarações de classe/interface, além de escrever métodos genéricos ou métodos que façam uso de tipos de curingas e compreender as semelhanças e as diferenças entre essas duas abordagens. </li><li>Usar recursos do pacote java.util para escrever código que manipule uma lista por classificação, executando uma pesquisa binária ou convertendo a lista em uma matriz. Usar recursos do pacote java.util para escrever código que manipule uma matriz por classificação, executando uma pesquisa binária ou convertendo a matriz em uma lista. Usar as interfaces <script><!-- D(["mb","java.util.Comparator e java.lang.Comparable para interferir na classificação de listas e matrizes. Além disso, reconhecer o efeito da "ordem natural" de classes wrapper de primitivas e java.lang.String na classificação.\n\u003c/li\>\n\u003c/ul\>\u003cbr\>\n\u003cb\>Seção 7: Princípios Básicos\u003c/b\>\u003cbr\>\n\u003cul\>\n\u003cli\>Com base em um exemplo de código e um cenário, escrever código que use modificadores de acesso, declarações de pacotes e instruções de importação adequados para interagir (através de acesso ou herança) com o código do exemplo.\n\u003c/li\>\n\u003cli\>Com base em um exemplo de classe e de linha de comando, determinar o comportamento em tempo de execução esperado.\u003c/li\>\n\u003cli\>Determinar o efeito sobre referências de objetos e valores de primitivas quando eles forem passados aos métodos que executam atribuições ou outras operações de modificação de parâmetros.\u003c/li\>\n\u003cli\>Com base em um exemplo de código, reconhecer em que ponto um objeto se qualifica para a coleta de lixo e determinar o que é garantido ou não pelo sistema de coleta de lixo. Reconhecer os comportamentos de System.gc e finalization.\n\u003c/li\>\n\u003cli\>Com base em um nome totalmente qualificado de uma classe implantada dentro e/ou fora de um arquivo JAR, construir a estrutura de diretórios adequada a essa classe. Com base em um exemplo de código e um caminho de classe, determinar se o caminho de classe permitirá uma compilação bem-sucedida do código.\n\u003c/li\>\n\u003cli\>Escrever código que aplique corretamente os operadores adequados, incluindo operadores de atribuição (limitados a \u003d, +\u003d, -\u003d), operadores aritméticos (limitados a +, -, *, /, %, ++, --), operadores relacionais (limitados a <, <\u003d, >, >\u003d, \u003d\u003d, !\u003d), o operador instanceof, operadores lógicos (limitados a &, |, ^, !, &&, ||) e o operador condicional ( ? : ), a fim de produzir o resultado desejado. Escrever código que determine a igualdade de dois objetos ou duas primitivas.\n\u003c/li\>\n\u003c/ul\>\u003c/td\>\n\t\t\u003c/tr\>\n\t\n\n\t\n\n\t\n\n\t\n\n\n\t\n\t\n\n\n\t\n\t\t\n\t\t\u003ctr\>\n\t\t\t\u003ctd colspan\u003d\"2\"\>\u003cbr\>\n\t\t\t\u003c/td\>\n\t\t\u003c/tr\>\n\t\t\n\t\n\u003c/tbody\>\u003c/table\>\n\n\n\n\n\n\n\n\n\n\n\n\u003c/td\>\n\u003ctd valign\u003d\"top\"\>",1] ); //--></script>java.util.Comparator e java.lang.Comparable para interferir na classificação de listas e matrizes. Além disso, reconhecer o efeito da "ordem natural" de classes wrapper de primitivas e java.lang.String na classificação. </li></ul><br /><b>Seção 7: Princípios Básicos</b><br /><ul><li>Com base em um exemplo de código e um cenário, escrever código que use modificadores de acesso, declarações de pacotes e instruções de importação adequados para interagir (através de acesso ou herança) com o código do exemplo. </li><li>Com base em um exemplo de classe e de linha de comando, determinar o comportamento em tempo de execução esperado.</li><li>Determinar o efeito sobre referências de objetos e valores de primitivas quando eles forem passados aos métodos que executam atribuições ou outras operações de modificação de parâmetros.</li><li>Com base em um exemplo de código, reconhecer em que ponto um objeto se qualifica para a coleta de lixo e determinar o que é garantido ou não pelo sistema de coleta de lixo. Reconhecer os comportamentos de System.gc e finalization. </li><li>Com base em um nome totalmente qualificado de uma classe implantada dentro e/ou fora de um arquivo JAR, construir a estrutura de diretórios adequada a essa classe. Com base em um exemplo de código e um caminho de classe, determinar se o caminho de classe permitirá uma compilação bem-sucedida do código. </li><li>Escrever código que aplique corretamente os operadores adequados, incluindo operadores de atribuição (limitados a =, +=, -=), operadores aritméticos (limitados a +, -, *, /, %, ++, --), operadores relacionais (limitados a <, <=, >, >=, ==, !=), o operador instanceof, operadores lógicos (limitados a &, |, ^, !, &amp;amp;&, ||) e o operador condicional ( ? : ), a fim de produzir o resultado desejado. Escrever código que determine a igualdade de dois objetos ou duas primitivas. </li></ul></td> </tr> <tr> <td colspan="2"><br /></td></tr></tbody></table>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-78353196877207946332007-04-25T16:30:00.000-07:002007-05-02T16:31:47.948-07:00Google Toolbar for Firefox. Precisa dizer mais?<a href="http://www.google.com/tools/firefox/toolbar/FT3/intl/en/index.html">Google Toolbar for Firefox</a>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-86746433319386538362007-04-18T11:56:00.000-07:002007-04-18T11:57:49.865-07:00Benchmarking<p><i><b>Benchmarking</b></i> é a busca das melhores práticas na indústria que conduzem ao desempenho superior.</p> <p>O benchmarking é visto como um processo positivo e pró-ativo por meio do qual uma empresa examina como outra realiza uma função específica a fim de melhorar como realizar a mesma ou uma função semelhante.</p> <p>É um processo gerencial permanente, que requer atualização constante a coleta e análise cuidadosa daquilo que há de melhor externamente em práticas e desempenho para as funções de tomada de decisões e de comunicações em todos os níveis da empresa. Ele obriga ao teste constante das ações internas em relação aos padrões externos das práticas da indústria.</p> <p>É um processo de descoberta e de uma experiência de aprendizado. Ele exige a identificação das melhores práticas e a projeção do desempenho futuro.</p> <p>A idéia por trás do benchmarking é de que ninguém é melhor em tudo. Então, “copiar” modelos de outras empresas significa “economizar” tempo e trabalho.</p> <p>Por definição, as “cópias” nunca serão iguais. Sempre haverá ajustes, adaptação e aprimoramentos, o que garante a “evolução” da idéia original.</p><br />Fonte: <a href="http://pt.wikipedia.org/wiki/Benchmarking">wikipedia</a>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-3773700677063563192007-04-17T04:13:00.000-07:002007-04-17T04:14:00.335-07:00Mentes<span class="fixed_width" style="font-family:Courier, Monospaced;">Grandes mentes discutem idéias.<br /><br />Mentes medíocres discutem eventos.<br /><br />Mentes pequenas discutem pessoas. </span>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-21515018542599726572007-04-17T04:11:00.000-07:002007-04-18T11:58:15.667-07:00Folksonomia<p>A <b>folksnomia</b> é uma maneira de indexar informações. Esta expressão foi cunhada por <a href="http://pt.wikipedia.org/w/index.php?title=Thomas_Vander_Wal&action=edit" class="new" title="Thomas Vander Wal">Thomas Vander Wal</a>. É uma analogia à <a href="http://pt.wikipedia.org/wiki/Taxonomia" title="Taxonomia">taxonomia</a>, mas inclui o préfixo <i>folks</i>, palavra da língua inglesa que significa pessoas.</p> <p>O ponto forte da folksonomia é sua construção a partir do linguajar natural da comunidade que a utiliza. Enquanto na taxonomia clássica primeiro são definidas as categorias do índice para depois encaixar as informações em uma delas (e em apenas uma), a folksonomia permite a cada usuário da informação a classificar com uma ou mais palavras-chaves, conhecidas como <i>tags</i>.</p> <p>Por meio das <i>tags</i>, o usuário pode então recuperar as informações e compartilhá-las. Pode visualizar as <i>tags</i> de outros usuários, assim como identificar o grau de popularidade de cada <i><a href="http://pt.wikipedia.org/wiki/Tag" title="Tag">tag</a></i> no sistema, e acessar as informações relacionadas.</p> <p>O primeiro site a usar folskonomia foi o <a href="http://pt.wikipedia.org/wiki/Del.icio.us" title="Del.icio.us">del.icio.us</a> e, em seguida, o <a href="http://pt.wikipedia.org/wiki/Flickr" title="Flickr">flickr</a> e o <a href="http://pt.wikipedia.org/wiki/YouTube" title="YouTube">youTube</a> - três sucessos da <a href="http://pt.wikipedia.org/wiki/Web_2.0" title="Web 2.0">Web 2.0</a>.</p> <p>O <a href="http://pt.wikipedia.org/wiki/Gmail" title="Gmail">Gmail</a> oferece, no lugar de pastas, o recurso de <i>tags</i> para organizar os emails. Entretanto, ele não é um exemplo clássico de folksonomia, pois não permite compartilhar as <i>tags</i> entre usuários do sistema.</p><br />Fonte: <a href="http://pt.wikipedia.org/wiki/Folksonomia">wikipedia</a>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0tag:blogger.com,1999:blog-8893304893244931783.post-83001778332708300212007-03-29T06:54:00.000-07:002007-04-17T04:15:02.167-07:00Design Factory II - Editando datasetEste metodo monta novos dataset para o relatório, de acordo com os parâmetros passados, aqui ele recebe parâmetros que atendiam as minhas necessidades, e que podem parecer um pouco confusos para entender.<br /><br />Futuramente quando tiver tempo para melhorar o código eu o farei e atualizarei o post aqui, mas por enquanto, isso já será de grande ajuda para quem estiver com o mesmo problema que eu tinha.<br /><br />Fica a cargo de cada um, implementar novas funcionalidades para este método, mas a estrutura original para incluir o novo dataset no relatório é basicamente esta.<br /><br /><code></code><pre><br /> /**<br /> * Controi o novo Data Set com a consulta<br /> * modificada pelo usuário<br /> * @param qry<br /> * @param designFactory<br /> * @param designHandle<br /> */<br /> void buildDataSet(Long codirela, String qry,<br /> ElementFactory designFactory,<br /> ReportDesignHandle designHandle) { <br /> try {<br /> OdaDataSetHandle dsHandle =<br /> designFactory.newOdaDataSet(<br /> "Data Set",<br /> "org.eclipse.birt.report.data.oda."+<br /> "jdbc.JdbcSelectDataSet");<br /><br /> dsHandle.setDataSource("Data Source");<br /> dsHandle.setName("Data Set");<br /> dsHandle.setQueryText(qry);<br /> designHandle.getDataSets().drop(0);<br /> designHandle.getDataSets().add(dsHandle);<br /> } catch (SemanticException e) {<br /> e.printStackTrace();<br /> } <br /> }<br /></pre>Anonymoushttp://www.blogger.com/profile/02367874665659269614noreply@blogger.com0