الأحد، 19 فبراير 2017

Generate QR Code In ADF Application


إن شاء الله في هذه المشاركة سنتعرف على كيفية    Generate QR Code In ADF Application 

سأعمل على تطبيق فكرة QR code  داخل ADF Application  مع شاشة Login  حيث إن صورة QR التي ستعرض على الشاشات الأخرى ستمثل معلومات المستخدم الذي قام بتسجيل دخول 
على سبيل المثال سنأخذ (الإسم الأول ، الإسم الثاني)





1.   نعمل على إنشاء تطبيق جديدApplication   ADF Fusion Web
2.   إنشاء ADF Business Component from table   (للجداول أو الجدول الذي سيتم التعامل معها)
3.   في البداية  نقوم على تضمين المكتبات المطلوبة للـQR   وهي 
qrgen-1.0
zxing-core-1.7
zxing-j2se-1.7

 من خلال right click  على إسم المشروع بعدها Project Properties بعدها نختار Labraries and Classpath وبالضغط على 

  ADD JAR/Labraries ويتم إضافة 

كما مبين في الصورة أدناه: 


تم رفع هذه المكتبات مع التطبيق 


5.   عمل شاشةLogin   تم التطرق لها على هذا الرابط

  http://ascensionmyblog.blogspot.com/2016/08/login-skin-adf.html

الآن لتكوين وإنشاء الـ QR  لمعلومات المستخدم الذي قام بتسجيل دخول إذن نقوم بإنشاء servlet  وليكن إسمها ServletQR 
ونعمل على نسخ الكود التالي:

import common.UserInfo;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import net.glxn.qrgen.QRCode;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.glxn.qrgen.image.ImageType;

@WebServlet(name = "ServletQR", urlPatterns = { "/servletqr" })
public class ServletQR extends HttpServlet {
 private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
 public void init(ServletConfig config) throws ServletException 
  {
     super.init(config);
    }
protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
{
 UserInfo qrInfo = (UserInfo) request.getSession().getAttribute("user");
 //ASIGNAR TEXTO A VARIABLE OUT DE TIPO BYTE
ByteArrayOutputStream out = QRCode.from(qrInfo.getFirstName()+"_"+qrInfo.getLastName()).to(ImageType.PNG).stream(); 
//ASIGNAR TIPO Y TAMAأ‘O DE CONTENIDO A RESPONSE
 response.setContentType("image/png");
 response.setContentLength(out.size());
 //ALMACENA EN VARIABLE OUTSTREAM LA CAPACIDAD DE ALMACENAR DATOS BINARIOS
 OutputStream outStream = response.getOutputStream();
//ALMACENA EN OUTPUTSTREAM EL VALOR DE OUT CONVERTIDO EN ARREGLO DE BYTES
 outStream.write(out.toByteArray());
//MUESTRA EL CUERPO DE OUTSTREAM
 outStream.flush();
 outStream.close();
    }
    @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException 
    {
        processRequest(request, response);
    }
}


لنأخذ لمحة تعريفية بسيطة  حول الكود
7. ما يهمني هنا هو أن أسترجع معلومات المستخدم الذي قام بتسجيل دخول من الـ session  إلىservlet   وهذا يتم من خلال كود السطر التالي حسب الكود أعلاه:
  
 UserInfo qrInfo = (UserInfo) request.getSession().getAttribute("user");


لاحظ طريقة إسترجاع المعلومات التي تم وضعها ب session بهيئة java class  إذن يتم إسترجاعها بمتغير من نوع java class ألا وهو qrInfo

8. الآن أريد تكوين الـ QR  من هذه المعلومات التي إسترجعتها (وهي معلومات المستخدم) وهذا يكون بكود السطر التالي :
ByteArrayOutputStream out = QRCode.from(qrInfo.getFirstName()+"_"+qrInfo.getLastName()).to(ImageType.PNG).stream(); 


9. الآن تكونت لي صورة QR  من الأسم الأول والإسم الثاني للمستخدم ويفصل بينهما ب _  وتم وضع الصورة المتكونة بتعريف متغير من نوع stream  ويمكن أيضاً تعريف متغير من نوع file 
                
أما بقية الكود في الـ servlet هو فقط لقراءة وكتابة الصورة وهو كود standard  متبع عند التعامل مع قراءة وكتابة الصور 
10. الآن نريد أن نعرض الصورة على الصفحة، نعمل على سحب وإفلات image component  ونحدد من الخصائص التابعة للـ Image  خاصية الـ source  لهذه الصورة سيكون هو:
 الـ servlet pattern  أي /servletqr 
كما في الصورة المبينة في أدناه 


لتحميل التطبيق إضغط هنا 

السبت، 24 ديسمبر 2016

الاثنين، 21 نوفمبر 2016

سلسلة دروس Obiee -مستوى مبتدئ


تم جمع المشاركات لسلسلة دروس Obiee -مستوى مبتدئ للمهندس شكري محمد 

بملف واحد، لتحميل الملف بصيغة ……. PDF إضغط هنا 



وبالتوفيق للجميع 

الثلاثاء، 8 نوفمبر 2016

الأحد، 6 نوفمبر 2016

رابط تحميل Oracle Database 10g من غير الموقع الرسمي لـ Oracle


رابط تحميل Oracle Database 10g  من غير الموقع الرسمي لـ Oracle 
رفعت هذه النسخة للدول التي لديها حظر بالدخول للموقع الرسمي 

الرابط التالي نسخة Oracle Database الإصدار 10g Release 2 (10.2) for Microsoft Windows (32-Bit)   


 للتحميل هذا الإصدار     إضغط هنا

بالتوفيق إن شاء الله لكل من سأل

السبت، 29 أكتوبر 2016

السلسلة الثانية من كتابي (إحترف جافا) (JDBC in Java)

  
  JDBC in Java    

هذه السلسة الثانية  من كتابي  إحترف جافا ... أعرض هنا موضوع (JDBC)، التعامل  مع قواعد البيانات من خلال تطبيقات الجافا إستخدمت بيئة (Jdeveloper) عند الشرح وتطبيق الأمثلة.

إن شاء الله... الكل يستفيد من هذا الكتاب..والتوفيق للجميع..وأعتذر عن  أي تقصير..

  
نسألكم الدعاء بالرحـمة لي و والداي
قال رسول الله صلى الله عليه وآله وصحبه وسلم

 (إذا مات إبن آدم إنقطع عمله إلا من ثلاثصدقة جارية، أو علم ينتـفـع به، أو ولد صالح يدعو له)

الكتاب متاح للجميع مجاني لذلك لا أجيز ولا أسمح بنسخه أو بيعه دون أي أذن مني 

لتحميل الكتاب إضغط هنا
الأثنين 10‏ ذي الحجة ‏ 1438   ،  الموافق   12 ‏ أيلول  2016

Connection Psotgresql Database in Jdeveloper IDE

السلام عليكم ورحمة الله وبركاته موضوع اليوم هو كيفية عمل Connection  لقاعدة البيانات  Psotgresql داخل  بيئة العمل  Jdeveloper بداي...