quarta-feira, 26 de setembro de 2012

Efetuando cálculos de porcentagem em Java

Efetuando cálculos de porcentagem em Java

Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em Java.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double valor = 178.00; // valor original
    double percentual = 15.0 / 100.0; // 15%
    double valor_final = valor + (percentual * valor);

    System.out.println("O valor final do produto é: " +
      valor_final);   

    // O resultado será 204,70

    System.exit(0);
  }
} 
Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double valor = 250.00; // valor original
    double percentual = 8.0 / 100.0; // 8%
    double valor_final = valor - (percentual * valor);

    System.out.println("O valor final do produto é: " +
      valor_final);   

    // O resultado será 230,00

    System.exit(0);
  }
} 

Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double perguntas = 90.0;
    double acertos = 72.0;

    System.out.println("Porcentagem de acertos: " +
      ((acertos / perguntas) * 100) + "%");

    System.out.println("Porcentagem de erros: " +
      (((perguntas - acertos) / perguntas) * 100) + "%");   

    // Os resultados serão 80% e 20%

    System.exit(0);
  }
}

Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 240,00. Qual foi a porcentagem de lucro na transação? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double v_ant = 300.0; // valor anterior
    double v_nov = 340.0; // valor novo
    double p_lucro = 0.0; // porcentagem de lucro

    while(v_ant + ((p_lucro / 100.0) * v_ant) < v_nov){
      p_lucro = p_lucro + 0.1;
    } 

    System.out.println("A porcentagem de lucro foi de: " +
      p_lucro + "%");   

    // O resultado será 13,39

    System.exit(0);
  }
} 

Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double valor = 70.0; // valor do produto
    double porcent = 5.0 / 100.0; // 5%  

    double comissao = porcent * valor;

    System.out.println("O valor repassado ao vendedor e: " +
      comissao); 

    // O resultado será 3,5

    System.exit(0);
  }
}

Fonte: http://www.arquivodecodigos.net/dicas/java-efetuando-calculos-de-porcentagem-em-java-1221.html

terça-feira, 25 de setembro de 2012

iReport/JasperReports 4.7.1 + Hibernate 4.7.1 java.lang.NoSuchFieldError: BOOLEAN


Solution (Testado)


Solution is very simple.
1) Download the whole (with source) jasper tar.gz file from JasperReports home site
2) Untar the file (let the location be called $JASPER_SOURCE)
3) vim $JASPER_SOURCE/src/net/sf/jasperreports/engine/query/JRHibernateQueryExecuter.java
4) Add the following line in the top import statements
import org.hibernate.type.StandardBasicTypes;
5) Now from line 71 onwards change all "Hibernate" to "StandardBasicTypes" (till the end of the static block, that is till 84th line)
6) Save and exit the editor
7) Copy the latest hibernate3.jar (3.6.x version) into "$JASPER_SOURCE/lib" location
8) Now do the following ant command from $JASPER_SOURCE location
ant jar
You will get the modified jar in lib/jasperreports-4.x.x.jar location. Use that jar for your project
--------------- OR ------------------- 
(Não testado)
Another solution is to use old hibernate3.jar file (version 3.0.x) with your project

segunda-feira, 17 de setembro de 2012

ORA-00918: coluna definida de maneira ambígua

Problema: nome da propriedade duplicado.


@DiscriminatorColumn(discriminatorType=DiscriminatorType.CHAR,length=1,name="TIPO_PROCESSO")
@SequenceGenerator(name="seq_abreprocesso", sequenceName="seq_abreprocesso", allocationSize=1)
public class AbreProcesso implements Serializable {

...

@Column(length=1,insertable=false,updatable=false)
protected String tipo_processo;

...
}

Solução: Deixar tudo em lowercase.


@DiscriminatorColumn(discriminatorType=DiscriminatorType.CHAR,length=1,name="tipo_processo")
@SequenceGenerator(name="seq_abreprocesso", sequenceName="seq_abreprocesso", allocationSize=1)
public class AbreProcesso implements Serializable {

...

@Column(length=1,insertable=false,updatable=false)
protected String tipo_processo;

...
}

segunda-feira, 3 de setembro de 2012

java.io.IOException: Acesso negado (Quartz)

Ao executar uma trigger agendada no Quartz, onde um arquivo TXT é criado e salvo na rede, ocorre o seguinte erro:


Informações: Illegal access: this web application instance has been stopped already.  Could not load org.quartz.core.JobRunShell.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1597)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at org.quartz.impl.StdJobRunShellFactory.borrowJobRunShell(StdJobRunShellFactory.java:91)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:332)

Exception in thread "DefaultQuartzScheduler_QuartzSchedulerThread" java.lang.NoClassDefFoundError: org/quartz/core/JobRunShell
at org.quartz.impl.StdJobRunShellFactory.borrowJobRunShell(StdJobRunShellFactory.java:91)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:332)
Caused by: java.lang.ClassNotFoundException: org.quartz.core.JobRunShell
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
... 2 more
java.io.IOException: Acesso negado
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at br.com.lpc.lpcsys.integracao.IntegracaoJbsCouro.GerarTxt(IntegracaoJbsCouro.java:46)
at br.com.lpc.lpcsys.quartz.JobIntegraBysoft.execute(JobIntegraBysoft.java:48)
at org.quartz.core.JobRunShell.run(JobRunShell.java:191)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:516)

Solucação:

Acesse a ferramenta (Configure TomCat) "C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7w.exe //ES//Tomcat7". Abra a guia (Log On) e informe uma conta com permissões suficientes no diretório onde o TXT será criado.

Ou no serviço: Painel de Controle > Ferramentas Administrativas > Serviços > Apache Tomcat.